mcpField
R
release-guard

release-guard

github.com/d-o-hub云与 DevOps1336 次安装今天更新
代码仓库

关于 release-guard

用于 Rust 项目的发布把关技能,在执行发布操作前核验分支、PR、CI、工作区和版本要求,并阻止不符合检查条件的发布。

主要功能

  1. 01要求从 main 发布
  2. 02核验 PR 已合并状态
  3. 03检查 CI 完成且成功
  4. 04核对 Cargo.toml 版本与标签
  5. 05执行语义化版本检查

适用场景

  1. 01打标签前核验发布条件
  2. 02阻止 CI 待处理或失败时发布
  3. 03检查发布分支和 PR 状态
  4. 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 要求)。

激活步骤

  1. PR 检查:如有需要,询问 PR 编号。运行 gh pr view $PR_NUM --json state,baseRefName。必须满足:state=CLOSED,baseRefName=main。
  2. 分支:运行 git branch --show-current 和 gh repo view --json default_branch。如果不在 main 分支,则失败。
  3. CI:运行 gh run list --branch main --limit 5 --json status,conclusion。所有作业都必须已完成且成功。记录日志/截图。
  4. 清理:运行 git status(工作目录必须干净)。
  5. 版本检查(关键):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