关于 release-guard
用于 Rust 项目的发布把关技能,在执行发布操作前核验分支、PR、CI、工作区和版本要求,并阻止不符合检查条件的发布。
主要功能
- 01要求从 main 发布
- 02核验 PR 已合并状态
- 03检查 CI 完成且成功
- 04核对 Cargo.toml 版本与标签
- 05执行语义化版本检查
适用场景
- 01打标签前核验发布条件
- 02阻止 CI 待处理或失败时发布
- 03检查发布分支和 PR 状态
- 04发布前确认版本一致
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ d-o-hub/ rust-self-learning-memory --skill release-guard安装后在 Claude Code 中输入/release-guard确认已加载。
附带文件ci-reference.md
详细介绍
发布守护技能
核心规则(绝不违反)
- 只能在 PR 合并后从 main 发布。
- 所有 CI 作业都必须完成且成功。不得有排队中的作业。
- 确认分支保护要求状态检查。
- 创建发布前,版本号必须与标签匹配(cargo-dist 要求)。
激活步骤
- PR 检查:如有需要,询问 PR 编号。运行
gh pr view $PR_NUM --json state,baseRefName。必须满足:state=CLOSED,baseRefName=main。 - 分支:运行
git branch --show-current和gh repo view --json default_branch。如果不在 main 分支,则失败。 - CI:运行
gh run list --branch main --limit 5 --json status,conclusion。所有作业都必须已完成且成功。记录日志/截图。 - 清理:运行
git status(工作目录必须干净)。 - 版本检查(关键):
grep '^version =' Cargo.toml必须与标签匹配(去掉前缀“v”)。
失败响应
🚫 BLOCKED: [Exact violation]
Fix:
- Merge PR to main
- Wait CI: gh run list --branch main
- git checkout main && git pull
- BUMP VERSION in Cargo.toml FIRST (must match tag)
Re-run task.
版本不匹配示例(v0.1.22 事件)
Tag: v0.1.22 pushed at commit 05c0481
Cargo.toml version: 0.1.21 (MISMATCH!)
Result: cargo-dist failed: "This workspace doesn't have anything for dist to Release!"
Fix: ALWAYS bump version BEFORE pushing tag.
Use: cargo release patch|minor|major (handles atomically)
通过:安全发布
- Semver 检查:
cargo semver-checks check-release --workspace(ADR-034) - 标签:vMAJOR.MINOR.PATCH(语义化版本)。
- 首选:
cargo release patch|minor|major(ADR-034) - 备选:
gh release create v1.2.3 --generate-notes --target main - 执行前确认。
示例
- 用户:“从 develop PR #199 创建发布”→ 阻止:分支错误。
- 用户:“PR #199 合并后打标签 v1.0.0”→ 检查 PR/CI/分支 → 通过后继续。
渐进式披露:如需了解 CI 详情,请参阅 ci-reference.md。
## Best Practices Applied
- **Description**: Keyword-rich for matching ("release", "tag").
- **allowed-tools**: Read + Bash wildcards (gh/git CLI). Install `gh`.[2]
- **Structure**: Essential in SKILL.md; link supports (add `ci-reference.md` for details).
- **Load/Test**: Restart Claude Code. Ask "What Skills available?". Test: "Create release PR #199".
评论
支持 Markdown