| name | athena-issue |
| description | Bugfix 路径的结构化问题流程: report → analyze → fix-note 三件套档案, 落在 sprints/{slug}/.
把"偏轻"的 Bugfix 升级成可复现 / 可追溯 / 可复盘. 借 CodeStable issue 实体, 适配 agent-in-loop.
|
| effort | medium |
/athena-issue — 结构化问题流程 (v9.8.0 新)
为什么存在 (痛点)
原 Bugfix 路径 plan → impl → review → ship 偏轻: 无 design.md、无根因记录、修完即忘。
同一个坑反复踩, 因为没有可检索的 report / analysis / fix-note。delivery-gate 当前完全不拦 Bugfix (无 design 跳过所有门禁), ship 零问责。
本 skill 给 Bugfix 配三件套档案 (借 CodeStable issue 流程), 落在 sprints/{slug}/, 并补一道最小 ship 门禁。
三阶段 (report → analyze → fix-note)
| 阶段 | 产出 (sprints/{slug}/) | 干什么 |
|---|
| report | issue-report.md | 把脑子里的问题落成可复现: 现象 / 复现步骤 / 期望 vs 实际 / 环境 |
| analyze | issue-analysis.md (根因不显然才写) | 定位根因 / 评估修复风险 / 给方案。agent 自己查代码定位, 不猜 |
| fix-note | fix-note.md | 修复记录: 改了什么 / 为什么 / 验证命令 + 输出。delivery-gate 验它 |
与 PACE Bugfix 路径
Bugfix: report → (analyze) → impl(fix) → review → ship
- report 先行: 没有可复现的 report 不准动手 (省得改错地方 / 改了无法验证是否真修好)
- analyze 可选: 根因显然 (typo / 拼错字段) 跳过; 不显然 (竞态 / 状态污染 / 边界) 必写
- fix-note 必写: 修完写, 含验证证据 (改前复现 fail → 改后复跑 pass)
delivery-gate 联动 (v9.8.0 新增门禁)
Bugfix + stage=ship → 检查 sprints/{slug}/fix-note.md 存在。缺 → block。
这是 Bugfix 路径第一道 ship 门禁 —— 原本 Bugfix 完全不拦, 现在至少要求"修了什么、怎么验证的"落盘。
与 runtime-verify 的关系
Bugfix 默认跳过 runtime-verify (改动小, 单测够)。但若 bug 涉及接口 / 状态 / 并发, 在 fix-note 里附实跑验证, 借 runtime-verify 的"晒命令 + 输出"纪律 —— 只写"修好了"无效, 写"改前 curl.. → 500, 改后 → 200"才算数。
工作流
- 用户报 bug → 主 agent 起
issue-report.md (复现步骤是硬要求, 复现不了先复现)
- 根因不显然 → 写
issue-analysis.md (查代码定位, 列候选根因 + 证据)
- 定点修 (绿区主 agent 直做 / 黄区 generator subagent)
- 写
fix-note.md: 改动 + 根因 + 验证命令&输出
- review (Bugfix 仅跑 reviewer, 无 spec-compliance) → ship (delivery-gate 验 fix-note)
- 反复踩的坑 → 触发
/compound add learning 沉淀
不做
- ❌ 不给每个 typo 走三件套 (绿区小 bug: 直接修 + 一行 fix-note, analyze 跳过)
- ❌ analyze 不强制 (根因显然就跳, 别为流程而流程 —— 铁律[不过度工程])
- ❌ 不替代 compound (单次修复写 fix-note; 反复 / 有普适教训才进 compound/learning)
- ❌ report 不写猜测根因 (那是 analyze 的事; report 只记客观现象 + 复现)