with one click
release-notes
基于 git 历史 + issue 引用生成符合 Keep-a-Changelog 规范的发版说明
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
基于 git 历史 + issue 引用生成符合 Keep-a-Changelog 规范的发版说明
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
端到端 pipeline —— 抓 X/知乎/Bilibili AI 相关热门 → 整理成 wiki → 推送飞书日报
Prax 风格的 Git 工作流,强调最小 diff、验证后提交和清晰状态。
Prax 风格的 TDD 工作流,强调 RED → GREEN → VERIFY。
在提交、交付或大型改动后运行 Prax 风格的验证闭环。
用 AutoCLI 二进制驱动用户已登录的 Chrome 抓取 Twitter/X、知乎、Bilibili、Reddit 等 55+ 站点
中文编程优化 — 注释、文档和错误信息使用中文
| name | release-notes |
| description | 基于 git 历史 + issue 引用生成符合 Keep-a-Changelog 规范的发版说明 |
| allowed-tools | ["Bash","Read","Write","Grep","Glob","Notify"] |
| triggers | ["release notes","发版说明","changelog","release","版本日志","打 tag","bump version"] |
| tags | ["release","changelog","git","devex"] |
| priority | 7 |
把从上一个 tag 到当前 HEAD(或指定 tag)之间的 git 历史整理成符合 Keep a Changelog 的发版说明。
v0.4.0)后要求写说明v*.*.* tag 推送后触发v0.4.0 或 0.4.0,自动带/去 v 前缀兼容)git describe --tags --abbrev=0 <target>^)两个文件都要写:
CHANGELOG.md:在 ## [Unreleased] 下方插入新条目(不覆盖旧版本)docs/releases/<version>.md:独立的发版公告(便于网站、邮件、微信直接引用)# 1.1 必须在 git 仓库里
git rev-parse --show-toplevel
# 1.2 工作区必须干净(有未提交改动时警告,不强制)
git status --porcelain
# 1.3 确认目标版本格式
# 接受 v0.4.0 / 0.4.0;内部统一成 v0.4.0
失败就停下来告诉用户,不要继续生成"碰运气"内容。
# 上一个 tag
PREV=$(git describe --tags --abbrev=0 <target>^ 2>/dev/null || echo "")
# 范围内的 commit 清单(排除 merge commits)
git log ${PREV:+$PREV..}<target> --oneline --no-merges
# 每个 commit 的完整 message(分类需要 body)
git log ${PREV:+$PREV..}<target> --format='%H%n%s%n%b%n---' --no-merges
没有 PREV(第一次发版)时,列全部历史,但限 50 条以内(多了就说"initial release")。
正则匹配 commit message 首行的前缀:
| 前缀 | CHANGELOG 段 | 优先级 |
|---|---|---|
feat(<scope>): 或 feat: | ### Added | 1 |
fix(...) | ### Fixed | 2 |
refactor(...) | ### Changed | 3 |
perf(...) | ### Changed | 3 |
docs(...) | ### Documentation | 4 |
chore(...) / test(...) / ci(...) | 跳过,除非是 breaking 或 chore: bump version | - |
BREAKING CHANGE: 出现在 body | ### Breaking(置顶) | 0 |
| 其他 | ### Other | 5 |
每条在段内按时间倒序排列。
对每条 commit 扫 body 里的 #(\d+)、(#\d+)、GH-\d+:
# 如果有 gh CLI 且 issue 开着,拿 title 补充上下文
gh issue view <N> --json title,labels -q '.title + " [" + (.labels | map(.name) | join(",")) + "]"'
没 gh CLI 或 issue 404 → 保留 #N 原样引用,不崩。
硬约束:每一个在 commit body 里出现的 #N 引用都必须保留在对应 bullet 末尾,格式 . Refs #N。不能偷懒抽象掉——审查人要靠它回追 issue。如果一条 commit 有多个 #N,全部列出:. Refs #12, #17。
模板(严格遵守):
## [0.4.0] - 2026-04-22
### Breaking
- **\<scope>**: description(参考 #123 [breaking-change])
### Added
- \<scope>: description. Refs #42.
- \<scope>: description.
### Changed
- \<scope>: description.
### Fixed
- \<scope>: description. Refs #17.
### Documentation
- \<scope>: description.
### Other
- Miscellaneous changes that don't fit elsewhere.
约束:
tools/ → "tools";core/middleware.py → "middleware")docs/releases/<version>.md工具选择(很关键):
docs/releases/<version>.md 通常不存在。新建文件必须用 Write 工具,不能用 HashlineEdit / Edit(后者只能改已存在文件,对新路径会报 File not found)。Write 工具会自动 mkdir -p 父目录,不需要先跑 shell 命令建目录。CHANGELOG.md 是已存在文件,用 Edit / HashlineEdit 改。模板:
# Prax \<version>
_Released 2026-04-22_
<1-2 句话总览:这次主要做了什么>
## Highlights
- \<1-3 条顶级亮点,每条一行>
## What's Changed
<把 CHANGELOG 的 Breaking/Added/Changed/Fixed 段照抄>
## Upgrading
<如果有 breaking,这里写迁移;没有就 "Drop-in replacement, no migration needed.">
## Credits
<用 git log --format='%aN' --no-merges <range> | sort -u 列贡献者>
---
Full diff: https://github.com/ChanningLua/prax-agent/compare/\<prev>...\<version>
关键:同一版本号重跑必须覆盖,不能追加。
执行前:
CHANGELOG.md,用 ## [<version>] - 正则找到该条目的起止行## [Unreleased] 下方插入docs/releases/<version>.md 直接 overwrite。
若 .prax/notify.yaml 有 release-announce channel,调 Notify:
Notify(
channel = "release-announce",
title = "Prax " + version + " released",
body = <docs/releases/<version>.md 的 Highlights 段>,
level = "info"
)
gh CLI 不可达时降级到"只用 git log + commit body",不报错。BREAKING CHANGE: 才放 Breaking 段。别自作聪明把 refactor(api) 当 breaking。docs-audit 发现"有代码改动但 docs 没跟上"时,生成的 issue 可以成为下一次 release notes 的候选输入ai-news-daily 负责抓外部内容,本 skill 专职 on-repo 产出,边界清晰用户:生成 v0.4.0 的 release notes
→ skill 跑 git describe 找到 PREV=v0.3.2
→ git log v0.3.2..HEAD 拿到 8 条 commit
→ 按 feat/fix/chore 分成四段
→ 识别 chore(polish) 不属于任何用户可见改动,放 Other
→ 抽取 #123 引用(如果有),gh issue view 补标题
→ 读 CHANGELOG.md 找 [0.4.0](本次第一次跑,没有)
→ 插入新条目到 [Unreleased] 下方
→ 写 docs/releases/v0.4.0.md
→ 报告用户:CHANGELOG 加了 X 行、docs/releases/v0.4.0.md 写好了
用户读完满意就打 tag + 发版,不满意就让 skill 改。