关于 jackin-release-check
用于检查 jackin 项目是否具备发布条件的技能。它运行仓库的 CI、格式检查、静态分析、测试、文档链接、TODO、安全例外和提交审计,并报告通过、阻断、警告或跳过状态。
主要功能
- 01检查变更路径对应的 CI 工作流
- 02运行格式与静态分析检查
- 03运行测试套件
- 04验证文档内部链接
- 05检查 TODO 时效性和安全例外
- 06审计提交与已合并拉取请求
适用场景
- 01发布前检查项目就绪情况
- 02定位阻断发布的 CI、静态分析或测试失败
- 03检查文档链接和过期 TODO
- 04发布前确认安全例外
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jackin-project/ jackin-dev --skill jackin-release-check安装后在 Claude Code 中输入/jackin-release-check确认已加载。
附带文件agents/openai.yaml
详细介绍
jackin-release-check
运行发布就绪关卡。每个关卡只有两种结果——绿色表示通过,红色表示阻止发布。只有所有关卡都为绿色时,发布才算就绪(警告会显示,但不会阻止发布)。这些命令来自仓库自身(CONTRIBUTING.md 中的合并就绪检查和 .github/workflows/ci.yml),绝不能用精简替代命令。
适用场景
- 发布前,或操作人员询问项目是否已准备好发布时。
不适用场景
- 实际执行发布 →
jackin-release(它会将此技能作为第一个关卡运行)。
流程
按顺序运行每个关卡;将绿色、红色或跳过的结果汇总为每个关卡一行的报告。
-
CI 关卡。
gh run list --workflow=ci.yml --branch=main --limit=1 --json conclusion --jq '.[0].conclusion'—— 只有结果为success才算绿色。如果自上一个标签以来docker/construct/**或docs/**有变更(git diff --name-only <last-tag>..HEAD -- <path>),还要求construct.yml/docs.yml在 main 上为绿色。完成条件:每个拥有已变更路径的 CI 工作流都为绿色。
-
静态检查关卡。
cargo fmt --check;cargo clippy --all-targets --all-features -- -D warnings。出现任何违规即为红色。完成条件:两条命令的退出码均为 0。
-
测试关卡。
cargo nextest run --all-features;cargo nextest run -p jackin --features e2e --profile docker-e2e。出现任何失败即为红色。完成条件:两套测试均通过。
-
文档链接关卡。 遍历
docs/content/docs/下的内部链接(相对路径和href);验证每个目标文件都存在。只有指向已发布页面的链接损坏时才标记为红色;无法访问的外部 URL 标记为警告。完成条件:每个内部链接都能解析。
-
TODO 时效性。 阅读
TODO.md和todo/;标记引用已完成工作或近期没有活动的条目。此项只发出警告,不阻止发布。完成条件:每个 TODO 条目都仍然有效或已标记为过时。
-
安全例外。 阅读
SECURITY_EXCEPTIONS.md;询问操作人员每条记录是否仍然有效。在得到确认,或更新文件并重新读取之前,此项保持待审核状态(阻止发布)。完成条件:操作人员确认目录内容。
-
直接提交审计。
git log <last-tag>..HEAD --oneline --no-merges;对于每个提交,运行gh pr list --state merged --search "<sha>"。没有对应 PR 的提交标记为警告,不阻止发布。完成条件:自上一个标签以来,每个非合并提交都已匹配到 PR 或列为未归组提交。
报告
每个关卡一行:✓ 表示绿色,✗ 表示红色(阻止发布),⚠ 表示警告,- 表示跳过。红色关卡会停止发布;警告会显示,由操作人员决定接受或修复。
常见错误
- 运行
cargo test --locked或cargo clippy -- -D warnings(精简参数)——这些不是仓库的关卡;实际命令包含--all-targets --all-features,并使用nextest。 - 将警告当作阻止条件,或将红色关卡当作警告。
- 自上一个标签以来
docker/或docs/有变更时,跳过对应路径的 CI 工作流。 - 凭空设计文档链接检查,而不是遍历实际的
docs/content/docs/目录树。