自动判断版本升级类型,整理变更日志并创建发布预备 PR。
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "cut-release" 技能: 1. 下载 https://raw.githubusercontent.com/microsoft/apm/main/.apm/skills/cut-release/SKILL.md 2. 保存为 ~/.claude/skills/cut-release/SKILL.md 3. 装好后重载技能,告诉我可以用了
请基于当前工作区切一个 APM 发布:判断自上个 tag 以来应该升 patch 还是 minor,整理 [Unreleased] 的 CHANGELOG,更新 pyproject.toml 和 uv.lock,跑 lint/CI 检查,并打开发布 PR;不要打 tag。
给出建议版本类型,整理后的变更日志,完成版本文件更新与校验,并生成一个待审阅的发布 PR。
看看自上个 tag 以来的已合并变更,按 semver 判断这次应该发 patch 还是 minor,并说明依据;如果需要 major,请先停下来等我确认。
输出清晰的版本升级建议和依据;如涉及 major 升级则明确拒绝继续自动推进。
帮我做 release prep:把 [Unreleased] 改成带日期的版本区块,每个已合并 PR 保留一条面向用户的简洁说明,去掉内部杂项和重复项,然后更新版本文件并打开 release PR。
得到精简且可发布的变更说明、同步后的版本文件,以及一个已创建的发布 PR。
This skill drives the release-cut workflow end-to-end on the current worktree. It STOPS at "PR open"; tagging is the human-gated trigger that fires the release workflow.
Trigger this skill on any of these intents:
Do NOT trigger on:
The skill DEPENDS on these existing primitives in the same source tree. Do not duplicate their content; reference them.
.apm/skills/apm-strategy/SKILL.md -- versioning judgement and
breaking-change lens. Auto-loads via its own trigger on
CHANGELOG.md and release-pipeline edits. Treat it as the
authoritative lens for "is this BREAKING" and "does this
positioning change warrant a migration note"..apm/instructions/linting.instructions.md -- canonical
CI-mirror lint chain. Reference; do not re-derive ruff / pylint
command lists in this skill..github/instructions/changelog.instructions.md -- Keep-a-
Changelog format contract. Reference; do not redefine the
format.Per .github/instructions/encoding.instructions.md, source files in
this bundle (SKILL.md, assets, scripts) MUST stay in printable ASCII.
The PR body and changelog entries this skill produces are also
written to repo files (CHANGELOG.md, PR body), so they MUST stay
ASCII too. Use -- for em dashes, [!] / [+] / [x] for status
markers, and so on.
Run these phases in order. Reload plan.md (the session memento)
at the start of each phase and after every tool return.
git rev-parse --abbrev-ref HEAD.
The skill assumes you are on a release-prep branch (or are
willing to create one). If you are on main, STOP and ask the
operator to put you on a branch.git describe --tags --abbrev=0.<last-tag>..HEAD.Run scripts/list-changes-since-tag.sh (no arguments). It emits
JSON on stdout: one object per merged PR with fields pr, title,
labels, author, paths_summary, is_user_facing_guess.
The script's heuristic for is_user_facing_guess is
intentionally conservative -- it flags as INTERNAL only when the
diff is fully contained in .apm/, .github/instructions/,
tests/, docs/, or matches chore(repo). Treat the field as a
HINT, not a verdict; the LLM makes the final call per
assets/entry-sanitizer.md.
DO NOT rely on training-recalled PR titles. Truth #5: pretraining is frozen. Every PR title in the changelog must come from the script's stdout.
Load assets/semver-rubric.md. Walk every PR from Phase 1
against the rubric. The rubric outputs PATCH, MINOR, or
ESCALATE-TO-MAJOR.
Show the operator:
If the rubric outputs ESCALATE-TO-MAJOR (>= 1.0.0), STOP and
surface the escalation per assets/semver-rubric.md "Major bump"
section. Do not bump to 1.0.0 without explicit operator
confirmation.
Wait for the operator's confirm before continuing.
…