mcpField
S
specsfy-release-cli

specsfy-release-cli

github.com/promovaweb云与 DevOps8759 次安装1 周前更新
代码仓库

关于 specsfy-release-cli

这项发布技能用于从官方代码检出目录发布 Specsfy,指导版本准备、校验、审查、打标签和发布;推送前要求确认发布说明并获得明确授权。

主要功能

  1. 01检查仓库与发布状态
  2. 02准备并同步版本文件
  3. 03构建 CLI 和电子书制品
  4. 04审查发布说明与变更
  5. 05推送标签并验证发布

适用场景

  1. 01准备新的 Specsfy 版本
  2. 02安全恢复未完成的发布
  3. 03发布前校验构建制品

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/promovaweb/specsfy --skill specsfy-release-cli

安装后在 Claude Code 中输入/specsfy-release-cli确认已加载。

附带文件agents/openai.yamlscripts/release_changelog.py

详细介绍

发布 Specsfy

在官方检出目录的根目录中执行。版本必须为 X.Y.Z,发布说明必须已确认,并且推送前必须获得明确授权。

根目录中的 VERSION 是唯一来源。Skills 和专家使用 monorepo 标签中的版本,不使用自己的版本文件。Hub 和网站不参与该版本号。

1. 分类当前状态

git remote get-url origin
git branch --show-current
gh auth status
npm whoami
git fetch origin main --tags
git status --porcelain
git rev-parse HEAD
git rev-parse origin/main
git rev-parse --verify refs/tags/vX.Y.Z
gh release view vX.Y.Z --repo promovaweb/specsfy \
  --json tagName,targetCommitish,body

要求远程仓库为 https://github.com/promovaweb/specsfy,分支为 main,有权访问同一仓库,工作树干净,HEAD 与 origin/main 一致,且新发布时标签和发行版均不存在。

如果处于部分完成状态,不要重新创建提交、标签或版本。比较标签、提交、构建产物和变更日志部分,仅继续缺失的步骤。

2. 准备版本

python3 -B \
  cli/.agents/skills/specsfy-release-cli/scripts/release_changelog.py prepare \
  --cli cli --version X.Y.Z --date YYYY-MM-DD \
  --notes-file /caminho/notas.md
cd cli
npm install --package-lock-only --ignore-scripts
npm ci
npm run build:executable
npm run typecheck
npm test
npm run build
node dist/main.js --help
./bin/specsfy --version
npm publish --dry-run
cd ..
make ebook
make verify-ebook
make verify-version
python3 -B \
  cli/.agents/skills/specsfy-release-cli/scripts/release_changelog.py extract \
  --changelog cli/CHANGELOG.md --version X.Y.Z \
  --output /caminho/release-notes.md

要求 VERSION、package.json、src/version.ts、package-lock.json、已安装的 CLI、二进制文件、bin/specsfy.build.json、电子书和 ebook/build.json 中均为 X.Y.Z。变更日志应将 ## [X.Y.Z] - YYYY-MM-DD 下的发布说明置顶。

3. 审核并进行版本控制

将以下内容纳入发布:

  • VERSION;
  • cli/CHANGELOG.md;
  • cli/package.json;
  • cli/package-lock.json;
  • cli/src/version.ts;
  • cli/bin/specsfy;
  • cli/bin/specsfy.build.json。
  • ebook/build.json 和当前版本的构建产物;
  • 本次发布修改的文档、Skills 和专家。

提供发布说明和 diff。确认后:

make verify-version
git add VERSION cli/CHANGELOG.md cli/package.json cli/package-lock.json \
  cli/src/version.ts \
  cli/bin/specsfy cli/bin/specsfy.build.json
git commit -m "chore(release): vX.Y.Z"
git tag -a vX.Y.Z -m "Specsfy CLI vX.Y.Z"
git rev-parse HEAD
git rev-list -n 1 vX.Y.Z

哈希值必须完全一致。标签属于 monorepo。

4. 发布并验证

git push --atomic origin main vX.Y.Z
gh run watch --repo promovaweb/specsfy \
  "$(gh run list --repo promovaweb/specsfy --branch vX.Y.Z \
    --workflow Specsfy --limit 1 --json databaseId --jq '.[0].databaseId')"
gh release create vX.Y.Z \
  --repo promovaweb/specsfy --verify-tag \
  --title "Specsfy CLI vX.Y.Z" \
  --notes-file /caminho/release-notes.md
gh release view vX.Y.Z --repo promovaweb/specsfy \
  --json url,tagName,targetCommitish,body
gh release view vX.Y.Z --repo promovaweb/specsfy \
  --json body > /caminho/release-publicado.json
python3 -B \
  cli/.agents/skills/specsfy-release-cli/scripts/release_changelog.py verify \
  --changelog cli/CHANGELOG.md --version X.Y.Z \
  --release-json /caminho/release-publicado.json
git ls-remote origin "refs/tags/vX.Y.Z^{}"
gh run list --repo promovaweb/specsfy --branch vX.Y.Z --workflow Specsfy

确认远程标签、CI 和发布说明完全一致。如有失败,保留当前状态并重新分类。标签任务会将 @promovaweb/specsfy 发布到 npm。仓库公开时会包含来源证明。绝不创建补偿标签。

评论

支持 Markdown