# chrome-webstore-release-blueprint

Walks you through OAuth setup and version-triggered publishing of a Chrome extension to the Web Store.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 2800 installs · ★ 379
- Author: brianlovin
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/brianlovin/agent-config/tree/HEAD/skills/chrome-webstore-release-blueprint/SKILL.md
- Updated: 2026-03-25
- HTML: https://affpapa.org/en/nevibecode/skills/chrome-webstore-release-blueprint

## What it does

The skill covers the whole chain: enabling the Chrome Web Store API in Google Cloud, the OAuth consent screen, creating a client, and getting a refresh token through the OAuth Playground. The agent hands you one step at a time and waits for confirmation, since the dashboard work is yours, not its.

Once you have five values — `CWS_CLIENT_ID`, `CWS_CLIENT_SECRET`, `CWS_REFRESH_TOKEN`, `CWS_PUBLISHER_ID`, `CWS_EXTENSION_ID` — it helps write a local secret template and push those into CI. With `gh` installed it offers automated upload via `gh secret set`; otherwise you get a manual checklist. Values are masked in logs and kept out of git.

Then comes the CI workflow: read the version from the manifest, exchange the refresh token for an access token, call `fetchStatus`, compare the local version against the published one. Publishing only fires when the version changed. `PENDING_REVIEW`, `PUBLISHED`, `PUBLISHED_TO_TESTERS` and `STAGED` all count as a successful submission. A separate status script supports `--json` and exits non-zero on auth or API errors. The skill does not touch the Google console for you — skip those steps and nothing runs.

## Requirements
- Works with: Chrome

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add brianlovin/agent-config --skill chrome-webstore-release-blueprint -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/chrome-webstore-release-blueprint/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/chrome-webstore-release-blueprint/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add brianlovin/agent-config --skill chrome-webstore-release-blueprint -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/chrome-webstore-release-blueprint/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add brianlovin/agent-config --skill chrome-webstore-release-blueprint -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/chrome-webstore-release-blueprint/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install brianlovin/agent-config chrome-webstore-release-blueprint
```

2. **Manually: put the files in place**
- File: `.github/skills/chrome-webstore-release-blueprint/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add brianlovin/agent-config --skill chrome-webstore-release-blueprint -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/brianlovin/agent-config --path skills/chrome-webstore-release-blueprint
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/chrome-webstore-release-blueprint/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add brianlovin/agent-config --skill chrome-webstore-release-blueprint -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/brianlovin/agent-config/tree/HEAD/skills/chrome-webstore-release-blueprint/SKILL.md

## When to use it
- set up an OAuth client and refresh token for the Chrome Web Store API
- build and upload an extension zip to the store from CI
- publish a new version only when the manifest version changes
- check what state the latest submission is in
- upload secrets to GitHub Actions with `gh`

## Example prompts
- Help me set up automated publishing for my Chrome extension
- Check the status of my latest store submission
- Write a workflow that publishes only when the version changes

## Similar
- [chrome-extensions](https://affpapa.org/en/nevibecode/skills/chrome-extensions.md) — skill · 10900 installs
- [clerk-chrome-extension-patterns](https://affpapa.org/en/nevibecode/skills/clerk-chrome-extension-patterns.md) — skill · 14400 installs
- [chrome-extension](https://affpapa.org/en/nevibecode/skills/chrome-extension.md) — skill · 4500 installs
- [chrome-extension-development](https://affpapa.org/en/nevibecode/skills/chrome-extension-development.md) — skill · 2800 installs
- [chrome-extension-ui](https://affpapa.org/en/nevibecode/skills/chrome-extension-ui.md) — skill · 719 installs
- [javascript-chrome-apis-cursorrules-prompt-file](https://affpapa.org/en/nevibecode/rules/javascript-chrome-apis-cursorrules-prompt-file.md) — rule · ★ 41011

From the same set: [brianlovin/agent-config](https://affpapa.org/en/nevibecode/by/brianlovin/agent-config.md) — 12 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
