关于 chrome-webstore-release-blueprint
Chrome Web Store Release Blueprint 是用于配置 Chrome Web Store 发布自动化的引导技能。它逐步说明控制台与 OAuth 设置,并规划仓库脚本、CI 工作流和提交状态检查,同时要求用户确认凭据操作。
主要功能
- 01引导配置 Chrome Web Store 与 OAuth
- 02规划仓库发布脚本和 CI 工作流
- 03支持通过 gh 设置 GitHub 密钥
- 04检查提交与发布状态
- 05包含版本检查和发布状态处理
适用场景
- 01配置 Chrome Web Store 发布自动化
- 02设置 CI 密钥且不提交凭据
- 03版本未变化时跳过发布
- 04检查提交是否正在等待审核
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ brianlovin/ agent-config --skill chrome-webstore-release-blueprint安装后在 Claude Code 中输入/chrome-webstore-release-blueprint确认已加载。
详细介绍
Chrome Web Store 发布指南
将此技能用作实操设置指南。Agent 应逐步引导用户、征求确认,并且只自动执行可在本地或 CI 中完成的部分。
此技能的用途
- 帮助用户从头开始设置 Chrome Web Store 发布自动化。
- 为 Google/CWS 信息中心操作提供清晰的手动说明。
- 用户提供凭据后,实现仓库端脚本和工作流。
- 验证提交状态(
PUBLISHED、PENDING_REVIEW等)。
Agent 行为规则
- 将信息中心和 OAuth 相关任务视为由用户操作;不要暗示这些操作已由你完成。
- 每次只给出一个明确步骤,并等待用户确认后再继续。
- 仅在需要时询问具体值,并告知用户每个值的获取位置。
- 在日志中屏蔽机密,绝不将机密值提交到 git。
- 如果有
gh,可提供自动上传密钥的选项;如果没有,则提供手动备用方案。
步骤 1:项目检查(处理任何凭据之前)
收集以下信息:
- 包含扩展程序版本的 manifest 路径
- 构建命令
- zip/打包命令及输出文件名/路径
- CI 平台(默认为 GitHub Actions)
- 发布分支策略(
main、标签或手动触发) - 本地机密文件约定(
.env、.env.local等)
明确询问:
- “你希望 CI 仅在版本变更时发布吗?”
- “你希望我通过
gh配置 GitHub 密钥上传吗?”
步骤 2:详细凭据配置指南(用户 + Agent)
2.1 在 Google Cloud 中启用 API
告知用户打开:
https://console.cloud.google.com/apis/library/chromewebstore.googleapis.com
用户操作:
- 选择要使用的 Google Cloud 项目。
- 点击 Chrome Web Store API 对应的
Enable。
Agent 提示示例:
- “Chrome Web Store API 显示为 Enabled 后,请告诉我,我会继续 OAuth 设置。”
2.2 配置 OAuth 同意屏幕
告知用户打开以下任一页面:
https://console.cloud.google.com/apis/credentials/consent- 如果界面发生重定向,请继续在 Google Auth Platform 的同意屏幕页面中操作。
用户操作:
- 选择
External用户类型(适用于非 Workspace 内部应用)。 - 填写应用名称、支持邮箱和开发者联系邮箱。
- 保存,并继续完成各个范围步骤,除非需要自定义范围。
- 如果应用处于 Testing 模式,将自己的 Google 账号添加为测试用户。
- 保存。
Agent 指引:
- 如果用户希望刷新令牌长期稳定可用,建议在准备就绪后将同意屏幕切换到 Production。
2.3 创建 OAuth 客户端
告知用户打开:
https://console.cloud.google.com/apis/credentials
用户操作:
- 点击
Create Credentials->OAuth client ID。 - 选择应用类型
Web application。 - 添加以下完全一致的已获授权重定向 URI:
https://developers.google.com/oauthplayground
- 创建客户端。
记录以下值:
CWS_CLIENT_IDCWS_CLIENT_SECRET
Agent 提示示例:
- “准备好后,请粘贴
CWS_CLIENT_ID和CWS_CLIENT_SECRET(我会将它们视为机密)。”
2.4 生成刷新令牌(OAuth Playground)
告知用户打开:
https://developers.google.com/oauthplayground/
用户操作:
- 点击设置齿轮图标。
- 启用
Use your own OAuth credentials。 - 粘贴
CWS_CLIENT_ID和CWS_CLIENT_SECRET。 - 在 Step 1 中输入范围:
https://www.googleapis.com/auth/chromewebstore
- 点击
Authorize APIs。 - 使用拥有/发布该扩展程序的同一个 Google 账号登录。
- 点击
Exchange authorization code for tokens。 - 复制刷新令牌。
记录以下值:
CWS_REFRESH_TOKEN
Agent 提示示例:
- “现在请粘贴
CWS_REFRESH_TOKEN。我只会将它放入本地机密存储或 CI 密钥中。”
2.5 获取商店 ID
记录以下值:
CWS_EXTENSION_ID(商店/开发者列表 URL 中的扩展程序条目 ID)CWS_PUBLISHER_ID(Chrome Web Store 开发者账号上下文中的开发者/发布者 ID)
Agent 指引:
- 如果用户不确定,请让他们打开 Chrome Web Store Developer Dashboard,并从条目/账号 URL 或账号详情中复制 ID。
2.6 凭据检查清单
在以下五项全部存在之前,请勿继续:
CWS_CLIENT_IDCWS_CLIENT_SECRETCWS_REFRESH_TOKENCWS_PUBLISHER_IDCWS_EXTENSION_ID
第 3 步:本地密钥文件和 CI 密钥设置
创建本地模板文件(不要提交真实值):
CWS_CLIENT_ID=
CWS_CLIENT_SECRET=
CWS_REFRESH_TOKEN=
CWS_PUBLISHER_ID=
CWS_EXTENSION_ID=
确保真实密钥文件路径已加入 gitignore。
如果使用 GitHub Actions,请询问用户是否需要 gh 自动化。
如果需要,请验证:
gh --version
gh auth status
如果缺少 gh 身份验证,请告知用户运行:
gh auth login
然后实现一个辅助脚本,该脚本:
- 从本地环境文件读取密钥值
- 验证所有必需的键是否齐全
- 支持
--dry-run - 在试运行输出中隐藏密钥值
- 使用
gh secret set ... --repo ...上传 - 在缺少密钥或身份验证时立即失败
如果用户不使用 gh,请提供仓库设置中的手动密钥填写清单。
第 4 步:发布工作流蓝图(由版本触发)
围绕以下逻辑设计 CI 工作流:
- 读取本地清单文件中的版本。
- 可选地与辅助版本文件进行比较,并在不匹配时失败。
- 使用刷新令牌换取访问令牌:
POST https://oauth2.googleapis.com/token
- 获取 CWS 状态:
GET https://chromewebstore.googleapis.com/v2/publishers/<publisherId>/items/<extensionId>:fetchStatus
- 从以下字段提取当前已发布版本:
publishedItemRevisionStatus.distributionChannels[0].crxVersion
- 如果本地版本 == 已发布版本,则跳过发布。
- 如果版本已更改:
- 构建软件包 zip
- 上传 zip:
POST https://chromewebstore.googleapis.com/upload/v2/publishers/<publisherId>/items/<extensionId>:upload - 在需要时通过轮询处理异步上传状态
- 发布:
POST https://chromewebstore.googleapis.com/v2/publishers/<publisherId>/items/<extensionId>:publish
将以下发布状态视为已成功提交:
PENDING_REVIEWPUBLISHEDPUBLISHED_TO_TESTERSSTAGED
第 5 步:提交状态检查器蓝图
创建一个专门用于查询“最新提交状态”的脚本。
必需行为:
- 接受环境变量(并可选接受
--env-file) - 可选接受
--manifest,用于比较本地版本 - 支持
--json - 调用令牌端点和
fetchStatus - 输出规范化字段:
itemIdlocalVersionpublishedVersionpublishedStatesubmittedVersionsubmittedStateupToDatependingReview
- 在身份验证、API 或输入错误时以非零状态退出
建议加入的检查:
- 标记清单文件与软件包元数据中的版本不匹配
- 显示已上传版本是否正在等待审核但尚未发布
- 未使用
--json时,输出简洁易读的摘要
第 6 步:引导式验证流程
与用户一起执行以下步骤:
- 确认状态检查器在发布前可成功运行。
- 在所有版本来源中递增扩展程序版本(补丁版本)。
- 推送分支并触发工作流。
- 确认工作流会:
- 跳过(如果版本未更改),或
- 上传并提交发布。
- 重新运行状态检查器:
- 许多情况下,首先会显示
PENDING_REVIEW - 之后应看到已发布渠道与本地版本一致
故障排除脚本(Agent 应如何说明)
invalid_grant:- 刷新令牌可能错误或已过期、OAuth 客户端可能错误,或账号可能不匹配
- CWS 端点返回
403: - 账号缺少该扩展程序的发布者权限
- 工作流无操作:
- 按设计,本地版本与已发布版本相同
- 上传失败:
- 检查 API 响应、打包后的 zip 结构和清单有效性
- 版本不匹配保护检查失败:
- 发布前统一所有声明的版本文件
实用链接(引导期间分享)
- Chrome Web Store API 概览:
https://developer.chrome.com/docs/webstore/using-api - 发布端点:
https://developer.chrome.com/docs/webstore/publish - OAuth Playground:
https://developers.google.com/oauthplayground/ - API 启用页面:
https://console.cloud.google.com/apis/library/chromewebstore.googleapis.com - 凭据页面:
https://console.cloud.google.com/apis/credentials
防护措施
- 切勿提交凭据。
- 切勿在工作流 YAML 中硬编码机密。
- 未比较版本前,切勿在每次推送时自动发布。
- 明确说明设置步骤,并在每个手动步骤中由用户确认。
- 优先使用可重复执行的辅助脚本,而非临时的一次性命令。
评论
支持 Markdown