修复工作流程编排器Skill fix

这是一个元技能工作流程编排器,用于自动化bug调查和解决过程。它根据问题类型(如bug、hook、依赖错误、PR评论)协调多个子技能,包括调试、实施、测试和提交,提升软件开发效率和质量。关键词:bug修复、自动化工作流程、DevOps、测试驱动开发、代码提交、软件维护、智能编排。

DevOps 0 次安装 0 次浏览 更新于 3/14/2026

name: fix description: 用于bug调查和解决的元技能工作流程编排器。根据范围路由到调试、实施、测试和提交。 allowed-tools: [Bash, Read, Grep, Write, Edit, Task]

Fix

用于bug调查和解决的工作流程编排器。基于问题范围链式调用专业技能。

用法

/fix <范围> [选项] [描述]

问题流程(无参数)

如果用户只输入/fix没有或部分参数,通过此问题流程引导他们。为每个阶段使用AskUserQuestion。

阶段0:工作流程选择

question: "您想修复什么?"
header: "修复类型"
options:
  - label: "帮我选择(推荐)"
    description: "我会提问以选择正确的修复工作流程"
  - label: "Bug - 某些功能损坏"
    description: "链式:调查 → 诊断 → 实施 → 测试 → 提交"
  - label: "Hook - Claude Code hook问题"
    description: "链式:debug-hooks → hook-developer → 实施 → 测试"
  - label: "依赖项 - 导入/包错误"
    description: "链式:preflight → 研究 → 计划 → 实施 → qlty-check"
  - label: "PR评论 - 处理审阅者反馈"
    description: "链式:github-search → 研究 → 计划 → 实施 → 提交"

映射:

  • “帮我选择” → 继续到阶段1-4问题
  • “Bug” → 设置scope=bug,跳到阶段2(问题详情)
  • “Hook” → 设置scope=hook,跳到阶段2(问题详情)
  • “依赖项” → 设置scope=deps,跳到阶段2(问题详情)
  • “PR评论” → 设置scope=pr-comments,跳到阶段2(问题详情)

如果答案不明确(通过"其他"):

question: "我想了解您需要哪种修复。您指的是..."
header: "澄清"
options:
  - label: "帮我选择"
    description: "不确定 - 引导我通过问题"
  - label: "Bug - 某些功能损坏"
    description: "代码未按预期工作"
  - label: "Hook - Claude Code hook问题"
    description: "Hooks未触发或输出错误"
  - label: "都不是 - 让我以不同方式解释"
    description: "我将描述我的问题"

阶段1:问题类型

question: "您在处理哪种问题?"
header: "问题类型"
options:
  - label: "某些功能损坏/不工作"
    description: "代码中的bug"
  - label: "Claude Code hook未触发"
    description: "Hook特定调试"
  - label: "导入/依赖项错误"
    description: "包或模块问题"
  - label: "需要处理PR反馈"
    description: "审阅者评论修复"

映射:

  • “某些功能损坏” → bug范围
  • “Hook未触发” → hook范围
  • “导入错误” → deps范围
  • “PR反馈” → pr-comments范围

阶段2:问题详情

question: "您能描述问题吗?"
header: "详情"
options: []  # 自由文本 - 用户描述问题

捕获错误消息、意外行为或PR链接。

阶段3:调查深度

question: "我应该如何调查?"
header: "调查"
options:
  - label: "诊断并修复"
    description: "找到问题并实施修复"
  - label: "仅诊断(干运行)"
    description: "只告诉我问题,不修改代码"
  - label: "快速修复"
    description: "我知道问题,快速修复"

映射:

  • “仅诊断” → --dry-run
  • “快速修复” → 跳过调查,直接转到spark代理

阶段4:测试与提交

question: "修复后,我应该..."
header: "修复后"
multiSelect: true
options:
  - label: "编写回归测试"
    description: "防止此bug复发"
  - label: "提交修复"
    description: "创建git提交"
  - label: "仅修复,无其他"
    description: "我将处理测试和git"

映射:

  • 无"回归测试" → --no-test
  • 无"提交" → --no-commit

执行前总结

根据您的回答,我将运行:

**范围:** bug
**问题:** "登录按钮在Safari上无响应"
**链式:** sleuth(调查)→ spark(修复)→ arbiter(测试)→ commit
**选项:** (无)

继续? [是 / 调整设置]

范围

范围 链式 描述
bug debug -> implement_task -> test-driven-development -> commit 通用bug修复工作流程
hook debug-hooks -> hook-developer -> implement_task -> test hook Hook特定调试
deps dependency-preflight -> oracle -> plan-agent -> implement_plan -> qlty-check 依赖项问题
pr-comments github-search -> research-codebase -> plan-agent -> implement_plan -> commit 处理PR反馈

选项

选项 效果
--no-test 跳过回归测试创建
--dry-run 仅诊断,不实施修复
--no-commit 不自动提交修复

工作流程

阶段1:解析参数

# 解析范围和选项
SCOPE="${1:-bug}"
NO_TEST=false
DRY_RUN=false
NO_COMMIT=false

for arg in "$@"; do
  case $arg in
    --no-test) NO_TEST=true ;;
    --dry-run) DRY_RUN=true ;;
    --no-commit) NO_COMMIT=true ;;
  esac
done

阶段2:调查(并行)

生成sleuth代理进行并行调查:

Task(
  subagent_type="sleuth",
  prompt="""
  并行调查此问题:

  1. **日志:** 检查最近日志中的错误
     - 应用日志
     - 系统日志(如果相关)
     - 构建/测试输出

  2. **数据库状态**(如果适用):
     - 检查卡住/无效记录
     - 验证模式匹配预期

  3. **Git状态:**
     - 可能相关的最近提交
     - 未提交的更改
     - 当前分支上下文

  4. **运行时状态:**
     - 运行进程
     - 端口冲突
     - 环境变量

  问题描述:{user_description}

  返回结构化发现与证据。
  """
)

阶段3:诊断报告

向用户展示发现:

## 诊断报告

### 范围:{scope}

### 发现的证据

**日志:**
- [带有时间戳/行引用的发现]

**数据库:**
- [带有表/查询引用的发现]

**Git状态:**
- [最近相关提交]
- [未提交的更改]

**运行时:**
- [进程/端口发现]

### 根本原因分析

**主要假设:** [基于证据的最可能原因]

**支持证据:**
1. [证据1]
2. [证据2]

**替代假设:**
- [替代1]: [为何可能性较低]

### 建议的修复

**方法:** [如何修复]

**要修改的文件:**
- `path/to/file.ts:123` - [更改描述]

**风险评估:** [低/中/高] - [原因]

---

**继续修复?** (是/否/修改方法)

阶段4:人工检查点(诊断)

必需: 等待用户确认后再实施。

AskUserQuestion(
  question="继续建议的修复?",
  options=["是", "否", "修改"]
)

如果用户说"修改",收集新需求并更新方法。 如果用户说"否",创建诊断交接并退出。 如果--dry-run,在此创建诊断交接并退出。

阶段4.5:风险评估(事前分析)

诊断批准后,实施前:

对建议的修复进行快速事前分析以捕捉风险:

/premortem quick

事前分析上下文:

premortem:
  mode: quick
  context: "Bug修复用于{diagnosis.root_cause}"

  check_for:
    - 此修复是否会破坏其他功能?
    - 如果修复导致问题,是否可以回滚?
    - 是否有未覆盖的相关边缘情况?
    - 修复是否符合代码库模式?
    - 是否影响任何外部依赖项?

风险决策:

  • 无高风险: 继续到实施
  • 发现高风险: 向用户展示选项:
    • 接受风险并继续
    • 修改方法以处理风险
    • 先研究缓解策略
AskUserQuestion(
  question="事前分析发现建议修复中有{n}个风险。继续?",
  options=[
    "接受风险并实施",
    "修改修复方法",
    "先研究缓解策略"
  ]
)

如果"先研究缓解策略",为每个风险并行生成scout + oracle,然后重新展示选项。

阶段5:实施

基于范围路由到适当的实施技能:

bug范围:

Task(
  subagent_type="kraken",
  prompt="""
  使用TDD方法实施修复。

  根本原因:{diagnosis.root_cause}
  文件:{diagnosis.files_to_modify}
  方法:{diagnosis.approach}

  遵循implement_task工作流程:
  1. 编写重现bug的失败测试
  2. 实施最小修复以通过测试
  3. 如果需要,重构
  4. 运行完整测试套件
  """
)

hook范围:

Task(
  subagent_type="kraken",
  prompt="""
  修复hook问题。

  根本原因:{diagnosis.root_cause}

  遵循hook-developer模式:
  1. 检查settings.json中的hook注册
  2. 验证shell包装器存在且可执行
  3. 使用模拟输入手动测试hook
  4. 如果修改了TypeScript源代码,重新构建
  5. 验证hook正确触发
  """
)

deps范围:

Task(
  subagent_type="kraken",
  prompt="""
  修复依赖项问题。

  根本原因:{diagnosis.root_cause}

  遵循plan-agent工作流程:
  1. 研究正确的依赖项版本
  2. 创建实施计划
  3. 更新锁文件
  4. 运行dependency-preflight
  5. 运行qlty-check
  """
)

pr-comments范围:

Task(
  subagent_type="kraken",
  prompt="""
  处理PR反馈。

  评论:{diagnosis.pr_comments}

  遵循plan-agent工作流程:
  1. 研究代码库以获取上下文
  2. 为每个评论创建实施计划
  3. 实施更改
  4. 提交并引用评论
  """
)

阶段6:回归测试(除非–no-test)

Task(
  subagent_type="kraken",
  prompt="""
  为修复创建回归测试。

  Bug:{original_issue}
  修复:{implementation_summary}

  遵循test-driven-development:
  1. 编写能捕获此bug的测试
  2. 验证测试针对修复前代码失败(在思想上)
  3. 验证测试针对修复后代码通过
  4. 测试应最小化且集中
  """
)

阶段7:人工检查点(验证)

AskUserQuestion(
  question="修复已实施。请验证并确认。",
  options=["看起来好", "需要调整", "回滚"]
)

如果"需要调整",收集反馈并返回到阶段5。 如果"回滚",运行回滚命令并退出。

阶段8:提交(除非–no-commit)

Task(
  subagent_type="general-purpose",
  prompt="""
  遵循提交技能:

  1. 使用git diff审阅更改
  2. 创建描述性提交消息
  3. 引用问题/工单(如果适用)
  4. 展示计划并等待确认
  5. 执行提交
  """
)

按范围的链式详情

bug

sleuth(调查)
  |
  v
[人工检查点:诊断]
  |
  v
[事前分析:快速风险检查]
  |
  v
kraken(implement_task + TDD)
  |
  v
kraken(回归测试)
  |
  v
[人工检查点:验证]
  |
  v
commit

hook

debug-hooks(结构化调查)
  |
  v
[人工检查点:诊断]
  |
  v
[事前分析:快速风险检查]
  |
  v
kraken(implement_task + hook-developer模式)
  |
  v
test hook手动
  |
  v
[人工检查点:验证]
  |
  v
commit

deps

dependency-preflight(检查当前状态)
  |
  v
oracle(查找正确版本/替代方案)
  |
  v
plan-agent(创建修复计划)
  |
  v
[人工检查点:诊断 + 计划审阅]
  |
  v
[事前分析:快速风险检查]
  |
  v
kraken(implement_plan)
  |
  v
qlty-check
  |
  v
[人工检查点:验证]
  |
  v
commit

pr-comments

github-search(获取PR上下文)
  |
  v
research-codebase(理解上下文)
  |
  v
plan-agent(为每个评论计划)
  |
  v
[人工检查点:计划审阅]
  |
  v
[事前分析:快速风险检查]
  |
  v
kraken(implement_plan)
  |
  v
[人工检查点:验证]
  |
  v
commit(引用PR评论)

交接创建

始终创建交接,即使使用--dry-run

---
session: fix-{scope}-{short-description}
ts: {ISO时间戳}
commit: {git提交哈希}
branch: {git分支}
status: {complete|partial|blocked|diagnosis-only}
---

scope: {bug|hook|deps|pr-comments}
options: {使用的标志}

issue:
  description: {原始用户描述}
  evidence: {调查中的关键发现}

diagnosis:
  root_cause: {识别的原因}
  hypothesis: {为何我们认为此}
  files: [{受影响文件}]

fix:
  approach: {做了什么}
  files_modified: [{更改的文件}]
  test_added: {如果创建了测试文件}

verification:
  test_command: {验证命令}
  human_confirmed: {true|false}

next:
  - {任何后续需要}

位置: thoughts/shared/handoffs/fix/{scope}/{timestamp}_{description}.yaml

示例

基本Bug修复

/fix bug
# -> 调查、诊断、实施、测试、提交

仅诊断

/fix bug --dry-run
# -> 调查、创建诊断交接、停止

修复无自动提交

/fix hook --no-commit
# -> 完整修复工作流程但在提交前停止

快速修复(无回归测试)

/fix bug --no-test
# -> 实施修复、提交、无回归测试

处理PR评论

/fix pr-comments
# -> 获取PR、创建计划、实施、提交

错误处理

错误 动作
调查未发现任何内容 询问用户更多上下文
用户拒绝诊断 使用用户输入优化假设
修复破坏其他测试 回滚、优化方法
用户拒绝验证 提供回滚或调整
提交失败 展示错误、提供重试

与其他技能的集成

此技能编排:

  • debug / debug-hooks:初始调查
  • sleuth:并行调查代理
  • kraken:TDD实施代理
  • implement_task:单任务实施
  • test-driven-development:测试创建
  • plan-agent:复杂修复计划
  • dependency-preflight:依赖项检查
  • oracle / research-codebase:上下文收集
  • github-search:PR上下文获取
  • qlty-check:质量验证
  • premortem:实施前风险评估
  • commit:Git提交工作流程
  • create_handoff:会话交接

检查点总结

检查点 目的 跳过条件
诊断后 确认根本原因 从不跳过
事前分析后 接受或缓解风险 无高风险
修复后 验证解决方案 从不跳过
提交前 审阅更改 --no-commit

人工检查点至关重要,因为:

  1. 防止实施错误的修复
  2. 确保用户理解更改内容
  3. 捕获只有人类能注意到的边缘情况