| name | release-note |
| description | 生成 Steam Workshop 中英文更新日志。支持手动、PR、Issue(含 checklist 进度)。 版本号:用户指定 > release PR 大版本 > Steam 递增补丁字母。 用户确认后可写回 open PR(UTF-8 无 BOM)。 **创建 PR 时必须调用本 skill 生成 Release Note 段,不要手写。** Use when creating a pull request to generate Steam Workshop release notes. |
Changelog
为 Windy10v10AI Steam Workshop 生成中英文更新日志。
使用方法
手动
/changelog 5.11 修正猴子棒击、新增火焰风暴、同步7.40c
从 GitHub PR
/changelog #1234
从 PR 读取标题、描述、commits,提取更新内容。
从 GitHub Issue
/changelog https://github.com/windy10v10ai/game/issues/1952
URL 含 /issues/ → Issue;拉取正文分两条路径:
A. 标准路径(正文含 ### 7.41 同步核对 与 - [x] / - [ ] 清单):
gh issue view <N> --repo windy10v10ai/game --json body
- 截取
### 7.41 同步核对 至首个 **说明** 之间的清单行。
- 统计已完成
- [x] 与未完成 - [ ];总数 = 二者之和。
- 已完成英雄名用于「多英雄并列」,末尾缀
(Issue #N 英雄核对进度 x/总数) / (Issue #N hero checklist: x/total)。
- 解析 JSON 时去掉 BOM(
\uFEFF)。
B. 回退路径(无 checklist):据 Issue 标题与描述写 2–5 条玩家向 bullet,不编造 x/总数。
版本号决策(优先级由上至下,命中即用)
版本号须为具体 v… 字符串,禁止占位符。格式:主版本 5.00/5.10,补丁 5.00a/5.00b。
1. 用户指定
参数中出现 v5.xxa / 5.xx 等,直接规范为 v… 采用。
2. 特殊口令 版本号+1
Steam 最新去掉字母后缀 +0.01 得下一主版本(如 v5.19b → v5.20)。若 open release PR 版本一致则直接采用;不一致则问用户。
3. Open release PR 大版本 > Steam
必须先 WebFetch Steam Workshop Changelog 取第 1 页首条版本作为当前 Steam 最新版——每次执行步骤 2 时都必须重新 fetch,不得使用会话早期的缓存结果。
gh pr list --repo windy10v10ai/game --state open --label release --json number,title,url
release PR 存在且大版本严格高于 Steam(如 Steam v5.19b,release PR v5.20)→ 采用 release PR 版本(v5.20)。
Steam 已发布与 release PR 同大版本(如 Steam v5.20,release PR v5.20)→ 不采用,进入步骤 4。多条 release PR 时问用户。
4. 默认:Steam 同大版本递增补丁字母
使用步骤 3 已 fetch 到的 Steam 最新版本,在同一大版本下递增字母(v5.19b → v5.19c;v5.20 → v5.20a)。无字母则下一档为 a。无法解析时问用户。
GAME_VERSION(GameConfig.ts)不含 a/b/c 后缀;只有 Workshop 文案可出现 v5.xxa。
输出格式
中文:
[b]游戏性更新 v5.20[/b]
- 更新内容
英文:
[b]Gameplay update v5.20[/b]
- Update content
交付时须为真实条目,不得保留占位。
多英雄并列
同一条 bullet 列出所有英雄;中文用 ,(全角逗号)分隔,禁止用顿号 、;英文用 **, ** 分隔。
英雄范围确定规则:
- PR:通过
gh pr diff <N> 提取实际改动的技能前缀(如 pudge_、silencer_ 等),只列本 PR 实际涉及的英雄,不得包含其他 PR 的英雄
- Issue checklist:只列已勾选
- [x] 的英雄
进度标注(Issue + checklist 时必须):
- 中文:
(x/总数) 紧跟在「技能更新」之后,冒号前
- 英文:
(x/total) 同位置
句式模板:
- 同步 Dota 2 7.41 英雄的技能更新(x/总数):英雄A,英雄B,英雄C
- Synced Dota 2 7.41 ability updates (x/total): Hero A, Hero B, Hero C
英雄名称必须从本地化文件查找,禁止从 abilities_schinese.txt / abilities_english.txt 猜测:
grep -i "npc_dota_hero_pugna" game/resource/addon_schinese.txt
grep "npc_dota_hero_pugna:n" docs/reference/7.41/abilities_schinese.txt
grep -i "npc_dota_hero_pugna" game/resource/addon_english.txt
grep "npc_dota_hero_pugna:n" docs/reference/7.41/abilities_english.txt
找不到时用 docs/reference/<version>/abilities_schinese.txt 中 npc_dota_hero_<id>:n 行的值。
撰写原则
- 简洁明了,每条尽量压成 1 句;同一目标的多个改动点用逗号串在这 1 句里,不为每个改动点新开一条
- 重要的写在前面
- 中文全角标点,英文半角标点
- 英文直接表述(
Fixed X not working.),避免冗余句式
- 物品/技能名及其内部效果/增益名(如"开关"技能的具体称呼)一律从本地化文件查找(中
addon_schinese.txt,英 addon_english.txt)核实后再用,禁止凭印象/常见 Dota 术语臆造——同一件物品在不同 mod 里效果命名可能不同,写错等于编造了一个不存在的机制
- 优先用玩家熟悉的简称与主动句式(如"魔免/魔抗"而非"魔法免疫、魔法抗性等效果";"不再触发X"而非"不再能被X选取"),避免被动语态和书面化长句
玩家向
- 禁止维护向用语:KV、override、对齐参考、注释、AbilityValues、文件路径
- 避免技术细节(具体倍率小数等),除非用户要求;玩家需要理解的具体数值(如积分倍率档位)可保留
- 优先玩家感知:加强/削弱/修正谁、哪类玩法变了
- Bot AI 行为改动(新增/修正 bot 对某物品或技能的使用逻辑)只需说明行为方向本身("Bot 现在会主动使用/开启 XX"、"Bot 不再误用 XX"),不需要连带描述该物品/技能效果是什么、数值多少——这些是物品/技能本身的固有效果,不是本次改动的内容,写出来反而喧宾夺主
- 多英雄技能跟进时用「多英雄并列」句式
- 同一目标的多处改动合并成一条:同一英雄/物品/系统的多个改动点(改名、加成、新机制等)用逗号串成一句,不要每个改动点单独开一条 bullet。真实案例:
- 「重做无限手套:更改配方和属性,新增主动技能「灭世响指」,有50%概率直接湮灭敌方英雄」(配方+属性+新技能三处合并一条)
- 「齐天大圣大招改为斗战胜佛,新增齐天大圣觉醒:如意金箍棒额外伤害与施法距离提升,并可在被控制状态下施放大招、获得技能免疫」(改名+多个觉醒效果合并一条)
- 不相关的小改动也可并列合并:多个独立的小修正各自很短时,允许逗号并列写进同一条,不必逐条展开。真实案例:「修正影魔,幻影刺客觉醒魔法免疫会顶替黑皇杖魔免的问题,狙击手暗杀觉醒附带额外物理伤害,基础A杖眩晕」(三处不相关修正合并一条)
- 改动琐碎且数量多时用概括性表述,不逐条列举:「修正一些 bug 和平衡性改动」
- 整体条数按改动量取舍,通常 1–6 条;优先靠合并压缩条数,不靠多开 bullet 塞下每个改动点
- 单条内部仍要压成一行一句、尽量短:去掉括号补充说明、引号内的技能强化名、spell amp/具体机制等次要限定,只留玩家可感知的核心变化。例:写「新增莉娜觉醒:每次释放神灭斩,对目标额外造成等同本次神灭斩伤害的纯粹伤害」,不再补「(受技能增强影响)」
从 PR 提取信息
- 优先从描述中的更新列表提取;无列表则从 commits 推断 3–5 条
- 注释同步、KV 对照、纯文档变更若无玩法影响不写入
- 多英雄技能同步归纳为一条玩家向 bullet
- 数值改动用定性表述,除非用户指定
常用术语对照
| 中文 | 英文 |
|---|
| 同步Dota更新 | Sync Dota update |
| 修正 | Fix/Fixed |
| 新增 | Add/Added |
| 调整 | Adjust/Adjusted |
| 技能抽选池 | Ability draft pool |
| 金钱/经验倍率 | Gold/XP multiplier |
| 中立物品 | Neutral items |
| 勇士积分 | Battle point |
GAME_VERSION 同步
文件:src/vscripts/modules/GameConfig.ts,不含 a/b/c 后缀(v5.20 而非 v5.20a)。
- Workshop 大版本(去掉 a/b/c)与
GAME_VERSION 不同时 → 必须自动修改 GameConfig.ts,不得遗漏
- 仅 a/b/c 小更、大版本未变 → 不改
更新 open PR 的 Release Note
生成文案后,用选项菜单让用户选择操作(写入 PR / 仅提交改动 / 全部执行 / 跳过),按所选执行。
gh pr list --repo windy10v10ai/game --head $(git branch --show-current) --state open --json number,url
恰好一条时默认指向;多条时先让用户选号;无 open PR 则只输出文案。
替换方式:保留 ## Release Note 之上的内容,替换该标题起至文末。
gh pr view <N> --repo windy10v10ai/game --json body -q .body
- 拼接:
## Release Note + 中文围栏块 + 英文围栏块
- 写入临时文件(UTF-8 无 BOM),
gh pr edit <N> --body-file <文件>
执行步骤
- 判断参数类型(Issue 与 PR 编号独立):
- URL 含
/issues/ → Issue(有 checklist → 路径 A;无 → 路径 B)
- URL 含
/pull/,或 #N / 纯数字 → PR
- 其他 → 手动
- 确定版本:按「版本号决策」1→2→3→4 优先级执行。
- 生成更新日志:Issue+checklist 列已完成英雄并附
x/总数;PR 列全部英雄;手动按用户列点。
- GAME_VERSION 同步:大版本变化时必须立即修改
GameConfig.ts,不得等用户提醒。
- 输出中英文两版,标题含具体版本号。
- 写入 PR:用选项菜单让用户选择操作后执行。
交付前自检
- 版本号为具体字符串,中英文一致
- Issue checklist
x/total 统计正确;无 checklist 不编造
- 多英雄列表与实际范围一致
- 无维护向技术用语
- 同一目标/同一改动主题没有拆成多条 bullet;能合并的都已用逗号并入一条
- 提到的物品/技能效果名词均已 grep 本地化文件核实存在,没有凭印象臆造的名词
- Bot AI 行为类改动只写了行为方向,没有顺带描述物品/技能本身的效果或数值