STORE.md convention puts all of it in one tracked file at the project root, so a resubmission never reinvents it.
The file has a second job. Deployment tooling that supports the convention reads it at submission time and attaches the fields each store API accepts. Everything else stays a copy-paste reference for the store dashboards.
Structure
One## section per store, with shared material above the store sections. Store sections match by heading text, so ## Firefox Add-ons, ## firefox-amo, and ## AMO all work. The same applies to Chrome and Edge.
What each store reads
The Firefox and Edge submission APIs accept reviewer-facing notes, so tooling that supportsSTORE.md can send them for you:
The Chrome Web Store accepts no listing metadata over its API, so the whole Chrome section is a reference for the developer dashboard. Its shape mirrors the sections agent tooling expects from a
CHROMEWEBSTORE.md file, so an agent that looks for those sections finds them here.
Starter files in every template
Every Extension.js template ships a starterSTORE.md generated from its own manifest. The permission justifications already match the permissions the template requests, and the placeholder lines are marked TODO. Create a project from any template and the convention is in place from the first commit:
Keep it current
UpdateSTORE.md in the same change that makes it stale:
- Manifest changed (
permissions,host_permissions,content_scripts): revisit every justification. Each permission needs a specific, plain-English reason. “Needed for the extension to work” fails review on every store. - User-facing behavior changed: refresh the listing copy and bump the last-updated date.
- New release: add a version history entry and rewrite the release notes.
- Data handling changed: update the privacy section, the policy it links to, and the manifest’s Firefox
data_collection_permissionsdeclaration together. The three must agree. See Firefox store readiness for the mandatory manifest key. - Store rejection: record the reason and the fix in version history, so the next submission does not repeat it.
Hygiene
- Track the file in git. It is part of the project, not a scratch note.
- Keep it out of the extension zip. The production build packages only
dist/<browser>/, so a root-levelSTORE.mdnever ships to users. - Never put real user credentials in it. Reviewer test accounts are throwaway by construction.

