type: decision
status: active
timestamp: 2026-06-20
tags: [extensions, submodules, repos, structure]
status: active
timestamp: 2026-06-20
tags: [extensions, submodules, repos, structure]
Each Chrome extension is its own GitHub repo, added as a submodule
Each extension = own repo as git submodule
Each Chrome extension is its own GitHub repo, added as a submodule
Decision
Every extension is its own GitHub repository named
chirag127/oriz-<slug>-ext, added to the master chirag127/oriz
repo as a submodule under extensions/<slug>/. Extensions are not
folders inside a monorepo.
Why
Each extension has its own release lifecycle (manifest version,
store-review cadence, Chrome/Firefox/Edge submission timing) that
shouldn’t be coupled to the master repo’s pointer bumps. Submodules
preserve independent commit history and let each extension’s CI
publish to all 3 stores without master being involved. They also
mirror the existing pattern used for sites under sites/, so the
mental model stays consistent.
Implications
git submodule add https://github.com/chirag127/oriz-<slug>-ext.git extensions/<slug>to add a new extension.- Each extension repo has its own
.github/workflows/ci.yml(lint + typecheck + build) and a separate cross-store publish workflow. - Master pointer bumps via
git add extensions/<slug> && git commit -m "chore(submodule): bump <slug> to <sha>". - The extension’s website (per big-website-per-extension) lives inside the same submodule under
site/(or root) and deploys to<slug>.oriz.in. - The one-branch-only rule applies: every extension repo commits straight on
main. - AGENTS.md and CLAUDE.md per-repo files extend the family rules with extension-specific overrides if needed.