用途
publish-repo 用于把本仓库部署到 skills.sh 生态。该生态没有发布 API——部署等于一个公开、可安装的仓库,外加一次首次安装来为目录遥测播种。这个技能把这一序列变得有章可循,而不是临时拼凑。它只能通过斜杠命令调用:它会翻转仓库可见性,而这一操作在社会意义上难以撤销(任何曾被推送的内容都会变得可见)。
何时不要使用
- 编写或修复技能 → 使用 add-skill。
- 仓库的 skills/ 下没有任何技能 → 先构建;绝不要发布空目录。
- 对已公开仓库的日常推送 → 用普通 git。
工作流
预检(硬性门槛——任何失败即停止)
工作树必须干净且已由所有者推送——此技能从不运行 git commit 或 git push;如果有未提交的更改,停止并把列表交给所有者。
git status --porcelain # 必须为空
make check # 必须以 0 error(s) 结束
npx skills add . --list # skills/ 下的每个技能都被发现
gh skill publish --dry-run # 规范校验(gh >= 2.90;公开预览)
python3 -c "import json; json.load(open('skills.sh.json'))"
对每条 gh skill 警告进行分诊:补充缺失的 license: MIT frontmatter;.claude/skills/ 警告在此处是预期内的(捆绑的第一方开发技能,按设计提交——不是第三方内容)。同时验证:README 目录、CHANGELOG 为最新;每个技能描述都以收益为导向(它就是列表文案);最新提交上 CI 为绿色。
人工阻塞项——需要用户明确确认,绝不假设
- 已完成全历史密钥扫描(gitleaks/trufflehog);
- 已完成个人/私有文件审查(所有曾被提交的内容都会公开)。
如果 $ARGUMENTS 中带有 --dry-run,则在此停止并报告就绪状态。
分组
确保 skills.sh.json 把每个技能恰好列在一个分组中,并为每个分组配一句有吸引力的描述(见 docs/deploying.md)。
翻转可见性(在操作前立即与用户确认)
gh repo edit <owner>/<repo> --visibility public --accept-visibility-change-consequences
保护(公开仓库后即可启用)
gh api repos/<owner>/<repo>/private-vulnerability-reporting --method PUT
添加默认分支规则集。单人维护者默认:仅阻止强制推送和删除(require-PR 规则会阻塞所有者的直接推送工作流);当有外部贡献者加入时,升级为 require-PR + code-owner 审查 + validate 检查。同时为 v* 添加标签规则集(阻止更新 + 删除),使已发布的版本不可变。
发布——切一个与 .claude-plugin/plugin.json 匹配的带版本 GitHub release
gh skill publish --tag v<version>
它会重新校验、在缺失时添加 agent-skills 主题,并创建带自动生成说明的 release。同时添加 skills-sh 主题:
gh repo edit <owner>/<repo> --add-topic skills-sh
以消费者方式验证,并为目录播种
在本地运行,不要在 CI 中运行——CI 中遥测被禁用,而首次真实安装才是让仓库被列出的关键:
npx skills add <owner>/<repo> --list
mkdir -p /tmp/skills-verify && cd /tmp/skills-verify
npx skills add <owner>/<repo> --skill '*' -a claude-code -y
npx skills list -a claude-code
收尾
README 带有 skills.sh 徽章(——默认已脚手架化);设置主页(gh repo edit --homepage,例如设为 https://skills.sh/<owner>/<repo>);提醒设置社交预览图(手动 UI 步骤)。
报告
仓库 URL、skills.sh 页面 URL、安装命令、release 标签、已应用的保护、被跳过的内容(及解锁条件),以及说明:skills.sh 页面会在遥测处理播种安装后出现(页面有缓存)。
输出规范
公开仓库可通过 npx skills add <owner>/<repo> 安装(经实际安装验证),PVR 已启用,规则集已激活,skills.sh.json 有效且每个技能都已分组,播种安装已执行,并明确告知用户接下来会发生什么。
注意事项
- 可见性翻转是历史记录的不归点——这就是为什么第 2 步要求明确确认且从不自我认证。
- npx skills add . --list 失败并提示 "No skills found" 意味着 frontmatter 或布局有问题——通过 make check 输出修复,绝不要盲目重构。
- 排行榜/仓库页面会滞后于播种安装;几分钟后仍不存在是正常的,不是失败。
- 不要在单人仓库上启用 require-PR 规则集,如果其工作流直接推送到 main——它会阻塞所有者;使用第 5 步中的分阶段默认值。