npx skills add ...
npx skills add brianlovin/agent-config --skill chrome-webstore-release-blueprint
Guide a user end-to-end through setting up Chrome Web Store API release automation in any repository. Use when asked to walk someone through OAuth/CWS credential setup, refresh token creation, local/CI secret setup, version-based publish automation, and submission status checks.
npx skills add brianlovin/agent-config --skill chrome-webstore-release-blueprint
Use this skill as a hands-on setup guide. The agent should lead the user step-by-step, ask for confirmations, and only automate the parts that can be done locally/in CI.
PUBLISHED, PENDING_REVIEW, etc.).gh is available, offer secret upload automation; if not, provide manual fallback.Collect these inputs:
main, tags, or manual dispatch).env, .env.local, etc.)Ask explicitly:
gh?"Tell user to open:
https://console.cloud.google.com/apis/library/chromewebstore.googleapis.comUser actions:
Enable for Chrome Web Store API.Agent prompt example:
Tell user to open one of:
https://console.cloud.google.com/apis/credentials/consentUser actions:
External user type (for non-Workspace internal apps).Agent guidance:
Tell user to open:
https://console.cloud.google.com/apis/credentialsUser actions:
Create Credentials -> OAuth client ID.Web application.https://developers.google.com/oauthplaygroundCapture values:
CWS_CLIENT_IDCWS_CLIENT_SECRETAgent prompt example:
CWS_CLIENT_ID and CWS_CLIENT_SECRET when ready (I will treat them as secrets)."Tell user to open:
https://developers.google.com/oauthplayground/User actions:
Use your own OAuth credentials.CWS_CLIENT_ID and CWS_CLIENT_SECRET.https://www.googleapis.com/auth/chromewebstoreAuthorize APIs.Exchange authorization code for tokens.Capture value:
CWS_REFRESH_TOKENAgent prompt example:
CWS_REFRESH_TOKEN now. I will only place it in local secret storage/CI secrets."Capture:
CWS_EXTENSION_ID (the extension item ID from store/developer listing URL)CWS_PUBLISHER_ID (developer/publisher ID from Chrome Web Store developer account context)Agent instruction:
Do not proceed until all five exist:
CWS_CLIENT_IDCWS_CLIENT_SECRETCWS_REFRESH_TOKENCWS_PUBLISHER_IDCWS_EXTENSION_IDCreate a local template file (no real values committed):
Ensure real secret file path is gitignored.
If using GitHub Actions, ask user if gh automation is desired.
If yes, verify:
If gh auth is missing, tell user to run:
gh auth loginThen implement a helper script that:
--dry-rungh secret set ... --repo ...If user declines gh, provide manual secret entry checklist for repository settings.
Design the CI workflow around this logic:
POST https://oauth2.googleapis.com/tokenGET https://chromewebstore.googleapis.com/v2/publishers/<publisherId>/items/<extensionId>:fetchStatuspublishedItemRevisionStatus.distributionChannels[0].crxVersionPOST https://chromewebstore.googleapis.com/upload/v2/publishers/<publisherId>/items/<extensionId>:uploadPOST https://chromewebstore.googleapis.com/v2/publishers/<publisherId>/items/<extensionId>:publishTreat these publish states as successful submission:
PENDING_REVIEWPUBLISHEDPUBLISHED_TO_TESTERSSTAGEDCreate a script dedicated to "what is the latest submission state?".
Required behavior:
--env-file)--manifest for local version comparison--jsonfetchStatusitemIdlocalVersionpublishedVersionpublishedStatesubmittedVersionsubmittedStateupToDatependingReviewHelpful checks to include:
--json is not usedRun this with the user:
PENDING_REVIEW first in many casesinvalid_grant:403 from CWS endpoint:https://developer.chrome.com/docs/webstore/using-apihttps://developer.chrome.com/docs/webstore/publishhttps://developers.google.com/oauthplayground/https://console.cloud.google.com/apis/library/chromewebstore.googleapis.comhttps://console.cloud.google.com/apis/credentials