SKILL.md
extension-publishing
Workflow
prepare → package → submit → review → publish
- Prepare: assets, privacy policy, permission justifications, manifest
- Package:
zipsource (exclude dev files), validate manifest - Submit: Chrome Web Store Developer Dashboard
- Review: 1–3 days typical; up to 7 days for new publishers
- Publish: auto or manual rollout
Pre-Submission Checklist (Quick)
- Manifest v3 only (MV2 deprecated)
-
name,version,descriptionset in manifest - Icons: 16×16, 48×48, 128×128 PNG
- Screenshots: min 1, 1280×800 or 640×400
- Single purpose clearly defined
- Only permissions actually used
- Privacy policy URL (required if collecting data)
- Permission justification field filled for sensitive perms
- No remote code execution (
eval, remote scripts) - All features functional in review build
Full checklist: [references/submission-checklist.md](references/submission-checklist.md)
Top 10 Rejection Reasons
- Single purpose violation — does too many unrelated things
- Excessive/unnecessary permissions
- Missing privacy policy (required when user data collected)
- Missing permission justification in submission form
- Description doesn't match functionality
- Keyword spam in title/description
- Remote code execution (
eval, external scripts) - Improper user data handling or disclosure
- Extension non-functional or crashes
- Broken features / inaccessible links
Full details + fixes: [references/common-rejections.md](references/common-rejections.md)
Listing Optimization Essentials
- Title:
<Action verb> + <Benefit>, max 45 chars, no keyword stuffing - Description first 150 chars: shown in search — make them count
- Structure: problem → solution → key benefits → CTA
- Screenshots: annotate features, show real UI, 1280×800
- Category: choose most specific fit
Full guide: [references/store-listing-optimization.md](references/store-listing-optimization.md)
CI/CD with chrome-webstore-upload
Install
npm install -g chrome-webstore-upload-cli
Upload & Publish
# Upload new version
chrome-webstore-upload upload \
--source extension.zip \
--extension-id $EXT_ID \
--client-id $CLIENT_ID \
--client-secret $CLIENT_SECRET \
--refresh-token $REFRESH_TOKEN
# Publish
chrome-webstore-upload publish \
--extension-id $EXT_ID \
--client-id $CLIENT_ID \
--client-secret $CLIENT_SECRET \
--refresh-token $REFRESH_TOKEN
Required Env Vars
| Var | Source |
|---|---|
EXT_ID |
Dashboard URL |
CLIENT_ID |
GCP OAuth client |
CLIENT_SECRET |
GCP OAuth client |
REFRESH_TOKEN |
Run OAuth flow once |
Full GitHub Actions pipeline: [references/ci-cd-automation.md](references/ci-cd-automation.md)
Plasmo Built-in Publishing
Plasmo has integrated browser store submission (https://docs.plasmo.com/):
plasmo build # Build for production
plasmo package # Create store-ready zip
Reference Files
| File | Content |
|---|---|
| [submission-checklist.md](references/submission-checklist.md) | Complete pre-submission checklist with assets, manifest, privacy |
| [store-listing-optimization.md](references/store-listing-optimization.md) | Title, description, screenshots, keywords, localization |
| [common-rejections.md](references/common-rejections.md) | Top rejections with fixes, appeal process |
| [ci-cd-automation.md](references/ci-cd-automation.md) | GitHub Actions, versioning, build pipeline |