agentsclimarketplace

Forge bugfix

Skill yike-gunshi/forge-skills/skills/forge-bugfix

Forge — 文档驱动的 AI 辅助开发框架 | Document-driven AI development framework with 14 Skills covering brainstorm → PRD → design → engineering → QA → review → ship → retrospective

Install
npx -y skills add yike-gunshi/forge-skills --skill forge-bugfix

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 11 stars11 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

系统性 Bug 修复流水线(P0-P8):一次修一个,强制根因分析、独立 worktree、TDD、双层验收报告、forge-qa 回归;多会话经 .forge/active.md 防撞车。 铁律:不做根因分析不写代码;新发现禁止顺手修;没有用户最终结论不合并。 触发方式:用户说"bugfix"、"反馈个问题"、"修这个 bug"、"这里有问题"、"为什么不对"、"排查一下"、"investigate"、"forge-bugfix",或报告错误、异常行为、功能失效时。

SKILL.md

12.2 KB, as published. Nobody here has run it

文档落地路径:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见 ~/.claude/skills/forge-doc-policy/doc-paths.md当前文档加载顺序:先读项目 CLAUDE.mddocs/README.mddocs/INDEX.mddocs/QA.md / docs/ENGINEERING.md 相关当前真相源,再读活跃 BF 报告和 backlog。 历史 BF 报告在 docs/archive/raw/bugfix-reviews/,只作追溯证据。 详细规则见 ~/.claude/skills/_shared/current-doc-loading.md

/forge-bugfix:一次一 bug + Bug 修复验收报告

设计哲学

短会话、单 bug 隔离、结构化证据、可追溯、可丢弃。

核心机制:

  • Bug 修复验收报告:每个 bug 从登记/领取开始就创建活跃报告 docs/bugfix/reviews/BF-XX.mdstatus: draft
    • 发现时:记录来源、现象、初始截图/日志、关联 Feature Spec
    • 修复时:记录 worktree、TDD 红绿证据、根因、commit、涉及文件
    • QA 时:forge-qa 回填前后端地址、环境身份校验、逐步截图、深度断言
    • 人工验收时:用户只看"人工验收指南"和同一组验收地址,填最终结论
    • 结案后:移动到 docs/archive/raw/bugfix-reviews/status: archive),backlog 保留链接
  • 两种验收节奏
    • 单 bug 模式:QA 全过后立即进入 P6.5,等用户验收该 bug
    • QA 自动闭环 / 批量模式:单 bug QA 通过后标记 qa-pass-pending-final-review,最后由批次汇总统一交给用户验收
  • 新发现必须分流(禁止顺手修):
    • 原 bug 未 Pass 前:只记录为“待确认新发现”,不进入当前修复
    • 原 bug 已 Pass 后:先明确告知用户“本次 bug 修复已完成”,再询问是否写入文档
    • 用户确认后,独立 bug → docs/bugfix/backlog.md 的待修区,分配 BF-XX 编号
    • 用户确认后,新需求 → docs/bugfix/backlog.md 的新需求区,建议 /forge-prd 立项
    • 用户确认后,模糊反馈 → docs/bugfix/backlog.md 的待澄清区
    • 同根(并入当前修复)→ AI 必须举证(同文件/同函数/同数据流的具体证据),举证不通过默认独立 bug
  • Pass 边界接力
    • 只要原 bug 已 Pass,不论新问题来自用户验收、QA 发现,还是 AI 在修复中发现的衍生问题,都不得继续修
    • AI 必须先说清楚:原 bug 已收敛、证据是什么、当前修复到此关闭
    • 再问用户:是否把新问题更新到 docs/bugfix/backlog.md / 报告中
    • 用户确认后,AI 完成 P7.5 分流,并给一段简短接力 prompt,让用户开另一个会话继续
  • 下一个 bug 默认建议新会话或 /clear、/compact
    • 上下文干净 + 边界清晰 + 避免长会话的 scope 蔓延
    • 除非用户明确要共因地一起修

演进历史和设计决策背景见 forge-cookbook/docs/forge-bugfix-changelog.md

铁律

  1. 不做根因分析,就不写修复代码。 直觉再强也要先验证。
  2. 每次只修 1 bug,或 1-2 个经 P4.5 确认共因的 bug。其余进 docs/bugfix/backlog.md
  3. 每个 bug 独立 worktree + 独立 TDD + 独立 commit + 独立 QA 回归。批量只做编排,不合并工程单元。
  4. 修完不自动合并,必须等用户填完单 bug 或批次最终验收结论。
  5. 没有活跃 Bug 修复验收报告不算完。每个 BF 编号必须先有 docs/bugfix/reviews/BF-XX.md,经 forge-qa 和用户/批次两层验收后才进 P7;P8 结案时归档到 docs/archive/raw/bugfix-reviews/
  6. 新发现的 bug / 新需求 / 模糊反馈 → 原 bug Pass 后询问是否写入 docs/bugfix/backlog.md,绝不在当前修复内夹带。
  7. 同根判定必须举证。AI 声称"这条新发现是当前 bug 同根"时,必须列出具体证据(同文件、同函数、同数据流),证据不足默认为独立 bug。
  8. 并行协调必须登记(v6.0)。P2 确认范围 + P3 创建 worktree 之后,必须在项目根 .forge/active.md 追加一行会话登记;P2 推荐前必须读 .forge/active.md 做功能域判重;P7 合并前必须跑 git merge --no-commit --no-ff 预演。清理 active 的责任在 forge-fupan 或 /forge-status,不在 forge-bugfix 自己。
  9. 自动闭环有上限。同一 bug 连续回修失败 3 次,或遇到需求/设计/环境身份不确定,必须标记 blocked-human 并让用户判断,禁止无限循环。
  10. 生产写面先取授权(账本复发 5 次后固化,2026-07-17)。P2 范围确认时同步枚举本次修复预计触碰的仓库外写面(DB 写 / 部署 / 第三方账号写 / self-merge;判断标准:动作对象不在本仓库工作区内),一次性列清单向用户取点名授权,需要时请用户亲手在 .claude/settings.local.json 预置 allow 规则(AI 代改会被反自授权拦截);禁止逐次撞权限门后原样重试。

流程总览

═══════════ 会话级(每会话一次,多次修复复用)═══════════
P0  环境探测(前置脚本,自动执行)
P1  问题理解 + 强制读 PRD/ENGINEERING/Bugfix 历史/Memory

═══════════ 每次修复(一次一 bug,可循环)═══════════
P2   范围推荐
     ├─ AI 从 docs/bugfix/backlog.md 捞候选 + 列出本会话新报告的 bug
     ├─ AI 接收 forge-qa 发现的结构化 bug(若来自 QA 自动闭环)
     ├─ 推荐"本次修 X"(1 个 / 或 1-2 共因),其余 → backlog
     └─ 用户确认范围
P2.5 创建/更新 Bug 修复验收报告 docs/bugfix/reviews/BF-XX.md
     ├─ 写入来源、现象、初始证据、Feature Spec 场景、功能域、当前状态
     └─ 同步 backlog.md 的报告链接
P3   创建 worktree(端口预检)+ 复现
P4   根因追踪 + 假设验证 + 5 Whys + 修复方案确认
P5   worktree 内独立 TDD 驱动修复 + 原子提交
P5.3 ⭐ 更新 Bug 修复验收报告为待 QA 状态
     ├─ 写入 TDD 红绿证据、根因、修复摘要、commit、涉及文件
     └─ 写入人工验收指南草案,QA 区域留给 forge-qa
P6   ⭐ 调用 forge-qa 自动验收
     ├─ forge-qa 针对每个验证项跑自动化测试
     ├─ 强校验 Frontend/Backend 地址、PID、cwd、commit 一致性
     ├─ 把每个前端交互关键步骤截图嵌入报告
     ├─ QA 全过 → 单 bug 模式进 P6.5;批量模式标记 qa-pass-pending-final-review
     └─ QA 有挂 → 有界回 P5;达到上限或有疑问则 blocked-human
P6.5 ⭐ 用户人工验收 / 批次最终验收
     ├─ AI 输出"请人工验收 @ docs/bugfix/reviews/BF-XX.md"
     ├─ 用户打开文档填"你的验收"列 + 最终结论(Pass / Fail / Pass + 新发现)
     └─ 用户说"验收了" → AI 读报告 → 判定
P7   ⭐ 按最终结论分流
     ├─ Pass → worktree 合并决策(合并 / 暂存 / 推迟)
     ├─ Fail → 回 P5(只修原 bug,不接新问题)
     └─ Pass + 新发现 → 先完成当前修复的合并/暂存决策 → 进 P7.4
P7.4 ⭐ Pass 边界确认 + 文档更新询问
     ├─ 告知用户:本次 bug 已完成,当前修复到此关闭
     ├─ 列出新问题来源:用户反馈 / QA 发现 / AI 发现的衍生问题
     ├─ 询问是否写入 docs/bugfix/backlog.md / 报告索引
     ├─ 用户确认 → 进 P7.5 分流,并输出简短接力 prompt
     └─ 用户不确认 → 不写 backlog,不继续修新问题,结束本次 bugfix
P7.5 ⭐ 新发现分流到 backlog
     ├─ 逐条分析,AI 做分类判断(同根 / 独立 bug / 新需求 / 模糊反馈)
     ├─ 同根(声称时必须举证)→ 新 bug 建议在新会话修
     ├─ 独立 bug → backlog.md 的 🐛 待修区,分配 BF-XX
     ├─ 新需求 → backlog.md 的 💡 新需求区,建议 /forge-prd 立项
     └─ 模糊反馈 → backlog.md 的 🌀 待澄清区
P8   沉淀:归档 backlog 对应条目 + BF 报告移动到 archive/raw

═══════════ 出口 ═══════════
- 用户想继续修下一个 bug → 默认建议新会话或 /clear、/compact
  (除非明确共因才本会话继续,由用户主动选择)
- 全部完成 → 建议 /forge-review、/forge-ship 或 /forge-fupan

红线

  1. 写任何修复代码前必须完成 P2-P4(含范围确认和 5 Whys 根因确认)
  2. 每个 BF 编号必须先有 Bug 修复验收报告(P2.5),修复后必须更新报告(P5.3)才能进入 QA
  3. 报告没有用户最终结论或批次最终结论前,不进 P7——即使 QA 全过
  4. 同根判定声称必须举证,证据不足默认独立 bug → 原 bug Pass 后问用户是否写入 backlog,再走新会话

阶段手册(按需加载,进入对应阶段前必读)

本文件只保留哲学、铁律、流程总览和 P8 收尾。执行各阶段前必须先读对应手册

阶段必读文件内容
P0-P1(会话级准备)references/p0-p1-session-setup.md环境探测脚本、active.md 判重、PRD/ENG/历史阅读
P2/P2.5(定范围建报告)references/p2-scoping.mdbacklog 捞候选、范围确认、BF 报告创建
P3-P5.3(修复循环)references/p3-p5-fix-loop.mdworktree/复现、根因/5 Whys、TDD 修复、报告更新
P6-P7.5(验收与分流)references/p6-p7-acceptance.mdforge-qa 调用、人工验收、分流、边界确认

规矩:骨架没写的操作细节一律以对应手册为准;手册与骨架冲突时,以骨架的铁律和红线为准。 Mode B 调用 forge-qa 的参数契约以 ~/.claude/skills/forge-qa/SKILL.md「调用模式」节为唯一出处,本 skill 不再复制该表。


P8 沉淀与出口

docs/bugfix/reviews/{BUG_ID}.md 是处理中的案卷;结案后进入 archive/raw,成为历史证据。P8 只做这些硬动作:

  1. 如果 bug 来自 backlog,将待修条目移动到“已处理”区,并把链接改到 docs/archive/raw/bugfix-reviews/{BUG_ID}.md;已处理区永久保留。
  2. 将活跃 BF 报告从 docs/bugfix/reviews/{BUG_ID}.md 移动到 docs/archive/raw/bugfix-reviews/{BUG_ID}.md,frontmatter status 改为 archive,并确认截图链接仍可打开。
  3. 批量修复时维护 docs/bugfix/batches/BATCH-YYYY-MM-DD.md,用于最终人工验收汇总;每个 bug 的技术证据仍回到各自 BF 报告。
  4. Memory 默认不写,除非能说明这条经验下次会触发什么具体行为。
  5. 同类模式扫描不在 bugfix 内做,交给 /forge-review
  6. 出口默认建议新会话或 /clear/compact 后继续下一个 bug;全部完成则建议 /forge-review/forge-ship/forge-fupan/forge-status

补充速查(铁律与红线见上,此处只列正文未覆盖的执行细节)

  • 无法复现不修;3 次假设验证失败就停下来质疑架构(与铁律 9 的"回修失败 3 次 blocked-human"是两道不同的闸)。
  • P6 的 QA 截图、环境一致性和报告完整性不满足时,不得交给用户验收;用户结论只有 Pass / Fail / Pass + 新发现。
  • worktree 创建后如需启动应用,必须走项目统一 dev entrypoint;APP_URL 必须可追溯到正确 cwd/PID/commit。
  • 功能域标签从 active.md 声明区选,不自造。
  • 新发现只进 docs/bugfix/backlog.md,不进 TODO;顺手重构想法只写代码注释。

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.