ワンクリックで
team-debug
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - merge, PR, or cleanup
Use when task needs full spec→impl→test→review pipeline with CONFIRM_GOAL-HUMAN_ACCEPT human checkpoints and directed-graph rollback
Use when code + tests exist and you need structured review + asset update
Use when starting a new feature, need SDD spec, or requirements are ambiguous
Use when requirements are fuzzy, need to discuss and form a plan before writing code
Use when receiving code review feedback, before implementing suggestions - requires technical verification, not performative agreement
SOC 職業分類に基づく
| name | team-debug |
| description | Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes |
CRITICAL: DO NOT use EnterPlanMode. This skill defines its own investigation workflow (Phase 1→Phase 5). EnterPlanMode bypasses systematic root cause analysis, causing fix-before-investigation (violates IRON_LAW). Follow STEPS below directly, starting from Phase 1.
角色:调试专家——找到根因再修复,症状修复是失败
核心原则:跟着证据走,每条假设必须有物证支撑
每次修复必须能解释"为什么之前坏了"。"应该能修好"是无效声明
_team-rules/first-principles.md: First Principle #4。95% 的"找不到根因"是调查不充分。
推理框架:
对抗自检:
NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
| 质量维度 | 产出文件 |
|---|---|
| 根因调查记录 | 调试日志(对话中);编排模式另写 debug-report.md |
| 假设验证记录 | 调试日志(对话中) |
| 修复验证 | 测试通过确认 |
| 来源 | 必需 | 说明 |
|---|---|---|
| 错误描述 / 复现步骤 | required | 完整错误信息、stack trace、复现命令 |
| 相关源码文件 | required | 出错位置的代码上下文 |
06-tdd-log.md | 可选 | 如在 TDD 流程中出现 bug,提供历史上下文 |
05-risk.md | 可选 | 验证命令和已知风险点 |
收集所有症状的完整描述,不遗漏任何错误细节。"差不多记住了"不算收集。
TRAP:不要使用 EnterPlanMode 来"先分析一下 bug"——本 SKILL.md 的 Phase 1→Phase 5 就是完整的调试流程。EnterPlanMode 会跳过系统性根因调查,导致基于初步印象直接写修复(违反 IRON_LAW)。
TRAP:你会倾向于读完错误信息第一行就跳到修复方案("我觉得我知道问题在哪")。强制自己读完完整 stack trace 和错误上下文。第一行是症状,最后几行才是根因。
bug 成功复现(测试失败 / 异常症状重现)→ 记录复现命令和输出,继续bug 无法复现 → 调整触发条件(输入值、并发、环境变量)后重试;3 次仍无法复现 → WRITE(对话中)已尝试的条件 → ASK_HUMANgit diff + 最近 commits + 依赖变更 — 检查最近变更找到工作代码和失败代码之间的每个差异。"那个差异可能不重要"是最危险的假设。
TRAP:你会倾向于忽略"看起来无关"的差异(环境变量、依赖版本、导入顺序)。80% 的隐蔽 bug 藏在你认为"不重要"的差异里。
READ 代码库中相似的工作示例(完整阅读,不 skim)
WRITE(对话中)工作与失败之间的每个差异:
| # | 差异位置 | 工作版本 | 失败版本 | 可能相关? | 排除理由(如不相关) |
|---|---------|---------|---------|-----------|-------------------|
| 1 | {位置} | {值} | {值} | 是/否 | {理由或留空} |
ASSERT 未解释差异数 == 0(不可假设"那个差异不重要")
用最小实验证明或证伪一个假设。一次只变一个变量——同时改两个东西时,你永远不知道哪个起了作用。
TRAP:你会倾向于在验证前就开始写修复代码("我觉得我知道问题在哪")。这不是验证假设,这是跳过验证。
{X},因为 {Y}"GOOD:
根因是 UserService.getById 未处理 null 返回值,因为 stack trace 第 42 行 TypeError: Cannot read property 'name' of null,且数据库查询确认 id=999 的记录不存在。BAD:根因可能是 UserService 有问题,看起来像是空指针。
exit_code != 0 → 记录执行失败详情REPEAT MAX=5(假设验证轮次):
verify_result:
修复根因而非症状,且修复后整个测试套件无回归。"修好了当前 bug 但引入新 bug"等于没修。
TRAP:你会倾向于在一个测试通过后就声明"修好了"。单个测试通过不代表修复正确——回归测试全通过才算。
REPEAT MAX=3(修复尝试):
exit_code == 0 — 修复应用成功;失败 → 检查语法/编译错误exit_code != 0 → 修复引入新的测试失败 → 回到步骤 2 定位新问题SIGNAL:修复通过但不同测试失败 → 修复停留在症状层面,根因仍在。回到 Phase 1 重新调查。
06-tdd-log.md + 决策到 08-ai-decisions.md + 调试报告到 debug-report.md(按 OUTPUT_TEMPLATE 骨架填充)REPEAT,进入自检门禁确认调查已真正充分后才可声明"找不到根因"。过早放弃比找不到更危险——它让 bug 带着错误的"已调查"标签留在系统中。
GATE "找不到根因"的最低门槛(全部满足才可声明):
stack_trace 已完整 READ独立复现次数 >= 3(非 Phase 1 的首次复现)最近提交检查数 >= 10正常实现对比数 >= 1诊断日志/断言数 >= 595% 的"找不到根因"是调查不充分。门槛未全部满足时,GOTO Phase 1。
MATCH gate_result:
| 用户说 | 意味着 | 你应该 |
|---|---|---|
| "那个不是发生了吗?" | 你假设了但没有验证 | GOTO Phase 1,用证据验证假设 |
| "它能给我们展示...吗?" | 你应该收集了证据但没有 | 添加诊断埋点或日志 |
| "别猜了" | 你在没理解根因的情况下提修复方案 | GOTO Phase 1,先找根因 |
| "想想根本原因" | 你在修症状不是根因 | 质疑你的假设,回到根因分析 |
| "我们卡住了?"(沮丧) | 你的方法不对 | 暂停,重新评估策略 |
SIGNAL:
"Works on my machine"→ 环境差异,优先检查 env vars、依赖版本、OS 差异、文件路径分隔符。 SIGNAL:错误仅在 CI 中出现→ 时序/并发问题,检查 race condition、资源竞争、超时配置。 SIGNAL:"Flaky test"→ 通常是真实的竞态条件,不是随机性。先找共享可变状态,再查时序依赖。 SIGNAL:修复通过但其他测试失败→ 修复停留在症状层面。根因仍在,换了个地方表现。回到 Phase 1。
ASK_HUMANWRITE docs/tasks/{slug}/debug-report.md:
## §一 症状描述
{可复现的失败现象}
## §二 根因分析
- 根因:{具体根因}
- 证据:{支持根因的证据链}
- 排除的假设:{已排除的其他可能原因}
## §三 修复记录
| 变量 | 修改前 | 修改后 | 验证结果 |
|------|--------|--------|---------|
| {file}:{line} | {old} | {new} | ✅/❌ |
## §四 回归测试
- 失败测试:{test_desc}(RED)
- 修复后:{test_desc}(GREEN)
- 全量测试:{pass_count}/{total_count} 通过
REF _team-rules/constitutional-rules.md — 10 条 Constitutional Rules
REF _team-rules/first-principles.md — 4 条第一性原理(First Principle #1 ~ #4)
REF _team-rules/verification-protocol.md — 5 步验证协议
REF _team-rules/spec-driven-workflow.md — TDD 修复循环与有向图回退规则
调试阶段尤其注意:
_team-rules/first-principles.md: First Principle #2_team-rules/verification-protocol.md: 验证执行步骤 _team-rules/first-principles.md: First Principle #4ASK_HUMAN;Skill 内部修复重试 ≤ 3 次后 BLOCKED _team-rules/first-principles.md: First Principle #1ROLLBACK team-spec _team-rules/first-principles.md: First Principle #4GATE 产出前自检(全部通过才放行):
根因描述 NOT_EMPTY(不是"可能是 X"而是"根因是 {X}")失败测试 EXISTS — 修复前已 WRITE 失败测试exit_code == 0 — 修复后 EXEC 验证通过修复失败次数 < 3 || ASK_HUMAN 已触发同时修改变量数 <= 1无占位符残留({N}、{slug} 等已被实际值替换)IRON_LAW 遵守 — 根因已确定后才修复,未跳过调查、未使用 EnterPlanMode 替代调查流程REF _team-rules/four-state-protocol.md — 四态完成状态
MATCH result:
被谁调用:
team-finish(独立模式测试失败时推荐)配对使用:
team-verify — 推荐:修复后验证确认team-test — 确认无回归team-verify 确认修复有效且无回归team-test 补充测试覆盖