← knowledge.oriz.in

Add a new Chrome / Firefox / Edge extension

runbook runbookextensionsubmodulechromefirefoxedge

Add a new extension

Run from the master chirag127/oriz repo root (/c/D/oriz). Most steps the agent can run unattended; steps marked [user] need human action (developer-account approvals, store-publish credentials).

Prerequisites

Steps

1. Create the GitHub repo

gh repo create chirag127/<extension-name> \
  --public \
  --description "<one-line description>" \
  --add-readme=false

2. Add as submodule under extensions/

cd /c/D/oriz
git submodule add https://github.com/chirag127/<extension-name>.git extensions/<extension-name>

3. Scaffold the extension

cd extensions/<extension-name>
pnpm create vite . --template vanilla-ts
pnpm install
# add manifest.json (MV3), background.ts / content.ts / popup.html as needed
# add icons in the four MV3 sizes (16/32/48/128)

Wire @chirag127/auth-ui if the extension needs Firebase auth via chrome.identity.launchWebAuthFlow() bouncing through auth.oriz.in (per AGENTS.md Chrome extensions section).

4. Add the cross-store publish workflow

Create .github/workflows/publish.yml with three jobs:

Trigger: on: push: tags: ['v*'].

5. [user] Submit initial review to each store

Initial review submission CANNOT be automated — each store wants a human-clicked submission with the listing screenshots, description, permissions justification, and category selection.

For each store:

  1. Build the extension once (pnpm build && pnpm zip).
  2. Upload via the dashboard UI manually.
  3. Fill the listing fields. Category, screenshots, privacy policy URL (https://extensions.oriz.in/<slug>/privacy), description.
  4. Submit for review. Wait 1–7 days.
  5. Once approved, copy the IDs back into envpact:
    envpact set CHROME_EXTENSION_ID_<SLUG> <id>
    envpact set FIREFOX_ADDON_GUID_<SLUG> <guid>
    envpact set EDGE_PRODUCT_ID_<SLUG> <product-id>
    

6. Add the landing page on extensions.oriz.in

Inside sites/oriz-extensions/ (or, until that site exists, on oriz.in/extensions/):

cd /c/D/oriz/sites/oriz-extensions   # or oriz-home for the cross-promo
# add a new route at /<slug>/index.astro
# pull metadata from the extension's package.json or manifest.json at build time
# render install CTAs to all three stores

The landing page uses the same @chirag127/oriz-kit shared primitives as everything else.

Per ../policy/monetisation.md: NO ads on extension landing pages.

7. Register in the family list

Update @chirag127/oriz-family:

Update AGENTS.md if the extension count line is maintained.

8. Bump the master pointer

cd /c/D/oriz
git add extensions/<extension-name> .gitmodules
git add packages/oriz-family
git commit -m "feat(family): add <extension-name> extension"
# DO NOT push without user say-so

9. Tag the first release inside the submodule

cd extensions/<extension-name>
git tag v0.1.0
# DO NOT push the tag without user say-so
# When pushed, the publish workflow runs all three store-uploads

Cross-links