关于 workflow-test-fix
workflow-test-fix 是将测试规划生成与迭代修复执行整合起来的 Agent 技能,适用于自动化测试准备和修复流程。它按 L0–L3 分层生成任务,并根据测试结果调整修复策略,直到达到质量门槛或迭代上限。
主要功能
- 01整合测试生成与执行流程
- 02按 L0–L3 分层规划测试
- 03生成测试任务和 IMPL_PLAN.md
- 04按迭代情境调整修复策略
- 05依据通过率或迭代上限结束
适用场景
- 01从任务描述创建测试会话并执行
- 02基于已有会话运行测试修复
- 03按静态、单元、集成和端到端层级验证
- 04在回归或相似失败时调整修复方式
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ catlog22/ claude-code-workflow --skill workflow-test-fix安装后在 Claude Code 中输入/workflow-test-fix确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
phases/01-session-start.md02-test-context-gather.md03-test-concept-enhanced.md04-test-task-generate.md05-test-cycle-execute.md详细介绍
1. 架构概览
┌───────────────────────────────────────────────────────────────────────────┐
│ Workflow Test Fix Orchestrator (SKILL.md) │
│ → Pure coordinator: Route entry point, track progress, pass context │
│ → Five phases: Session → Context → Analysis → TaskGen → Execution │
└──────────────────────────────────┬────────────────────────────────────────┘
│
┌────────────┬────────────┬──────┴──────┬────────────┬────────────┐
↓ ↓ ↓ ↓ ↓
┌──────────┐┌──────────┐┌──────────┐┌──────────┐ ┌──────────────┐
│ Phase 1 ││ Phase 2 ││ Phase 3 ││ Phase 4 │ │ Phase 5 │
│ Session ││ Context ││ Analysis ││ Task Gen │ │ Test Cycle │
│ Start ││ Gather ││ Enhanced ││ Generate │ │ Execute │
│ ││ ││ ││ │ │ │
│ Input ││ Coverage ││ Gemini ││ IMPL_PLAN│ │ 1. Discovery│
│ Detect + ││ or Code ││ L0-L3 ││ IMPL-* │ │ 2. Execute │
│ Session ││ Scan ││ AI Issue ││ TODO_LIST│ │ 3. Fix Loop │
│ Create ││ ││ ││ │ │ 4. Complete │
└────┬─────┘└────┬─────┘└────┬─────┘└────┬─────┘ └──────────────┘
│ │ │ │ ↑
│testSessionId │ │ │
└──→────────┘contextPath│ │ │
└──→───────┘AnalysisRes│ │
└──→──────┘ testSessionId │
└──→──(Summary)──→┘
Task Pipeline (generated in Phase 4, executed in Phase 5):
┌──────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐
│ IMPL-001 │──→│ IMPL-001.3 │──→│ IMPL-001.5 │──→│ IMPL-002 │
│ Test Gen │ │ Code Validate │ │ Quality Gate │ │ Test & Fix │
│ L1-L3 │ │ L0 + AI Issues │ │ Coverage 80%+ │ │ Max N iter │
│@code-developer│ │ @test-fix-agent │ │ @test-fix-agent │ │@test-fix-agent│
└──────────────┘ └─────────────────┘ └─────────────────┘ └──────────────┘
2. 关键设计原则
- 统一流水线:生成与执行构成一个连续工作流,无需手动交接
- 纯编排器:SKILL.md 仅负责协调,将所有执行细节委托给各阶段文件
- 自动继续:Phase 1→2→3→4→(Summary)→5 自动执行
- 任务附加/折叠:在阶段执行期间附加子任务,完成后折叠
- 渐进式阶段加载:仅在某阶段执行时读取其文档,不预先读取
- 自适应策略:修复循环根据迭代上下文自动选择策略(保守/激进/精准)
- 质量门槛:达到通过率 >= 95%(考虑关键程度)时终止修复循环
- 阶段文件规范:阶段文件通过
workflowPreferences.*引用偏好设置,不解析 CLI 标志
3. 用法
完整流水线和仅执行模式通过技能名称路由触发(参见 Mode Detection)。在分派到各阶段之前,通过 AskUserQuestion 以交互方式收集工作流偏好设置(自动模式)。
完整流水线(workflow-test-fix):将任务描述或会话 ID 作为参数 → 交互式收集偏好设置 → 生成并执行流水线 仅执行(workflow-test-fix):自动发现活动会话 → 交互式收集偏好设置 → 执行循环
4. 交互式偏好设置收集
在分派到阶段执行之前,通过 AskUserQuestion 收集工作流偏好设置:
// ★ 统一 auto mode 检测:-y/--yes 从 $ARGUMENTS 或 ccw 传播
const autoYes = /\b(-y|--yes)\b/.test($ARGUMENTS)
if (autoYes) {
// 自动模式:跳过所有询问,使用默认值
workflowPreferences = { autoYes: true }
} else {
const prefResponse = AskUserQuestion({
questions: [
{
question: "是否跳过所有确认步骤(自动模式)?",
header: "Auto Mode",
multiSelect: false,
options: [
{ label: "Interactive (Recommended)", description: "交互模式,包含确认步骤" },
{ label: "Auto", description: "跳过所有确认,自动执行" }
]
}
]
})
workflowPreferences = {
autoYes: prefResponse.autoMode === 'Auto'
}
}
workflowPreferences 作为上下文变量传递给阶段执行,并在各阶段中以 workflowPreferences.autoYes 引用。
5. 压缩恢复(阶段持久化)
多阶段测试修复流水线(Phase 1-5)会持续较长时间,尤其是 Phase 5 的修复循环。采用双重保险:通过 TodoWrite 跟踪活动阶段,保护其不被压缩;sentinel 则作为兜底。
⚠️ COMPACT DIRECTIVE:上下文压缩时必须检查 TodoWrite 阶段状态。 当前标记为
in_progress的阶段是活动执行阶段——必须保留其完整内容。 仅压缩标记为completed或pending的阶段。
6. 执行流程
Entry Point Detection:
├─ /workflow-test-fix → Full Pipeline (Phase 1→2→3→4→Summary→5)
└─ /workflow-test-fix → Execution Only (Phase 5)
Phase 1: Session Start (session-start)
└─ Read("phases/01-session-start.md")
├─ Step 1.0: Detect input mode (session | prompt)
├─ Step 1.1: Create test session → testSessionId
└─ Output: testSessionId, MODE
Phase 2: Test Context Gather (test-context-gather)
└─ Read("phases/02-test-context-gather.md")
├─ Step 1.2: Gather test context → contextPath
└─ Output: contextPath
Phase 3: Test Concept Enhanced (test-concept-enhanced)
└─ Read("phases/03-test-concept-enhanced.md")
├─ Step 1.3: Test analysis (Gemini) → TEST_ANALYSIS_RESULTS.md
└─ Output: TEST_ANALYSIS_RESULTS.md
Phase 4: Test Task Generate (test-task-generate)
└─ Read("phases/04-test-task-generate.md")
├─ Step 1.4: Generate test tasks → IMPL_PLAN.md, IMPL-*.json, TODO_LIST.md
└─ Output: testSessionId, 4+ task JSONs
Summary Output (inline after Phase 4):
└─ Display summary, auto-continue to Phase 5
Phase 5: Test Cycle Execution (test-cycle-execute)
└─ Read("phases/05-test-cycle-execute.md")
├─ Step 2.1: Discovery (load session, tasks, iteration state)
├─ Step 2.2: Execute initial tasks (IMPL-001 → 001.3 → 001.5 → 002)
├─ Step 2.3: Fix loop (if pass_rate < 95%)
│ ├─ Select strategy: conservative/aggressive/surgical
│ ├─ Generate fix task via @cli-planning-agent
│ ├─ Execute fix via @test-fix-agent
│ └─ Re-test → loop or exit
└─ Step 2.4: Completion (summary, session archive)
└─ Output: final pass_rate, summary
阶段参考文档(在阶段执行时按需读取):
| Phase | Document | Purpose | Compact |
|---|---|---|---|
| 1 | phases/01-session-start.md | 检测输入模式,创建测试会话 | TodoWrite 驱动 |
| 2 | phases/02-test-context-gather.md | 收集测试上下文(覆盖率/代码库) | TodoWrite 驱动 |
| 3 | phases/03-test-concept-enhanced.md | Gemini 分析,L0-L3 测试要求 | TodoWrite 驱动 |
| 4 | phases/04-test-task-generate.md | 生成任务 JSON 和 IMPL_PLAN.md | TodoWrite 驱动 |
| 5 | phases/05-test-cycle-execute.md | 执行任务、迭代修复循环、完成 | TodoWrite 驱动 + 🔄 sentinel |
压缩规则:
- TodoWrite
in_progress→ 保留完整内容,禁止压缩 - TodoWrite
completed→ 可压缩为摘要 - 🔄 sentinel 兜底 → Phase 5 包含压缩 sentinel;若压缩后仅剩 sentinel 而无完整 Step 协议,必须立即
Read("phases/05-test-cycle-execute.md")恢复
7. 核心规则
- 立即开始:第一个操作是初始化 TaskCreate,第二个操作是执行阶段 1(仅执行入口则执行阶段 5)
- 不做前期分析:开始阶段前,不要读取文件或收集上下文
- 解析每项输出:从每个步骤的输出中提取下一步骤所需的数据
- 自动继续:阶段 1→2→3→4→(摘要)→5 自动执行(适用于完整流程入口)
- 跟踪进度:根据任务附加/折叠模式动态更新 TaskCreate/TaskUpdate
- 任务附加模型:子任务在阶段执行期间附加,完成后折叠
- 不要停止:持续执行工作流,直到通过质量门槛或达到最大迭代次数
- 渐进式加载:仅在某阶段即将执行时读取该阶段的文档
- 入口路由:
workflow-test-fix技能 → 阶段 1-5;workflow-test-fix技能 → 仅阶段 5
8. 输入处理
test-fix-gen 入口(完整流程)
User input → Detect type:
├─ Starts with "WFS-" → MODE=session, sourceSessionId=input
├─ Ends with ".md" → MODE=prompt, description=Read(input)
└─ Otherwise → MODE=prompt, description=input
test-cycle-execute 入口(仅阶段 5)
Arguments → Parse flags:
├─ --resume-session="WFS-xxx" → sessionId=WFS-xxx
├─ --max-iterations=N → maxIterations=N (default: 10)
└─ (no args) → auto-discover active test session
9. 数据流
User Input (session ID | description | file path)
↓
[Detect Mode: session | prompt]
↓
Phase 1: Session Start ─────────────────────────────────────────
↓ 1.0+1.1: session:start → testSessionId, MODE
↓
Phase 2: Test Context Gather ────────────────────────────────────
↓ 1.2: test-context-gather/context-gather → contextPath
↓
Phase 3: Test Concept Enhanced ──────────────────────────────────
↓ 1.3: test-concept-enhanced → TEST_ANALYSIS_RESULTS.md
↓
Phase 4: Test Task Generate ─────────────────────────────────────
↓ 1.4: test-task-generate → IMPL_PLAN.md, IMPL-*.json, TODO_LIST.md
↓
Summary Output (inline) ─────────────────────────────────────────
↓ Display summary with next step
↓
Phase 5: Test Cycle Execution ───────────────────────────────────
↓ 2.1: Load session + tasks + iteration state
↓ 2.2: Execute IMPL-001 → 001.3 → 001.5 → 002
↓ 2.3: Fix loop (analyze → fix → retest) until pass_rate >= 95%
↓ 2.4: Completion → summary → session archive
10. 摘要输出(阶段 4 之后)
阶段 4 完成后,在自动继续到阶段 5 之前,显示以下摘要:
Test-fix workflow created successfully!
Input: [original input]
Mode: [Session|Prompt]
Test Session: [testSessionId]
Tasks Created:
- IMPL-001: Test Understanding & Generation (@code-developer)
- IMPL-001.3: Code Validation Gate - AI Error Detection (@test-fix-agent)
- IMPL-001.5: Test Quality Gate - Static Analysis & Coverage (@test-fix-agent)
- IMPL-002: Test Execution & Fix Cycle (@test-fix-agent)
Quality Thresholds:
- Code Validation: Zero CRITICAL issues, zero compilation errors
- Minimum Coverage: 80% line, 70% branch
- Static Analysis: Zero critical anti-patterns
- Max Fix Iterations: 5
Review artifacts:
- Test plan: .workflow/[testSessionId]/IMPL_PLAN.md
- Task list: .workflow/[testSessionId]/TODO_LIST.md
- Analysis: .workflow/[testSessionId]/.process/TEST_ANALYSIS_RESULTS.md
关键事项 — 下一步:自动继续到阶段 5:测试周期执行。
将 testSessionId 传递给阶段 5,以执行测试流程。不要等待用户确认——统一流程会自动继续。
11. 测试策略概述
渐进式测试层级(L0-L3):
| 层级 | 名称 | 重点 |
|---|---|---|
| L0 | 静态分析 | 编译、导入、类型、AI 代码问题 |
| L1 | 单元测试 | 函数/类行为(正常、负面和边界情况) |
| L2 | 集成测试 | 组件交互、API 契约、故障模式 |
| L3 | E2E 测试 | 用户旅程、关键路径(可选) |
质量阈值:
- 代码验证(IMPL-001.3):无 CRITICAL 问题,无编译错误
- 最低覆盖率:行覆盖率 80%,分支覆盖率 70%
- 静态分析(IMPL-001.5):无严重反模式
- 通过率门槛:>= 95%(考虑严重程度)或 100%
- 最大修复迭代次数:10(默认值,可调整)
12. 策略引擎(阶段 5)
| 策略 | 触发条件 | 行为 |
|---|---|---|
| 保守 | 第 1-2 次迭代(默认) | 单项定向修复,完整验证 |
| 激进 | 通过率 >80% 且存在类似故障 | 批量修复相关问题 |
| 精准 | 检测到回归(通过率下降 >10%) | 最小化更改,重点回滚 |
策略选择逻辑和 CLI 回退链(Gemini → Qwen → Codex)详见阶段 5。
13. Agent 角色
| Agent | 使用阶段 | 职责 |
|---|---|---|
| Orchestrator | 所有阶段 | 路由入口、跟踪进度、传递上下文 |
| @code-developer | 阶段 5(IMPL-001) | 生成测试(L1-L3) |
| @test-fix-agent | 阶段 5 | 执行测试、修复代码、分配严重程度 |
| @cli-planning-agent | 阶段 5(修复循环) | CLI 分析、提取根本原因、生成修复任务 |
14. TodoWrite 模式
核心概念:通过附加/折叠动态跟踪任务,实时显示进度。
实现说明:阶段文件使用
TodoWrite语法描述概念性跟踪模式。运行时,这些操作通过允许的工具列表中的TaskCreate/TaskUpdate/TaskList工具实现。映射TodoWrite示例的方法如下:
- 创建初始列表 → 为每个项目调用
TaskCreate- 更改状态 →
TaskUpdate({ taskId, status })- 附加子任务 →
TaskCreate+TaskUpdate({ addBlockedBy })- 折叠子任务 → 对折叠的子项目调用
TaskUpdate({ status: "completed" })+TaskUpdate({ status: "deleted" })
完整流程(阶段 1-5)
[
{"content": "Phase 1: Session Start", "status": "in_progress"},
{"content": "Phase 2: Test Context Gather", "status": "pending"},
{"content": "Phase 3: Test Analysis (Gemini)", "status": "pending"},
{"content": "Phase 4: Test Task Generate", "status": "pending"},
{"content": "Phase 5: Test Cycle Execution", "status": "pending"}
]
阶段 1-4 已折叠 → 阶段 5 活跃
[
{"content": "Phase 1: Session Start", "status": "completed"},
{"content": "Phase 2: Test Context Gather", "status": "completed"},
{"content": "Phase 3: Test Analysis (Gemini)", "status": "completed"},
{"content": "Phase 4: Test Task Generate", "status": "completed"},
{"content": "Phase 5: Test Cycle Execution", "status": "in_progress"},
{"content": " → Execute IMPL-001 [code-developer]", "status": "in_progress"},
{"content": " → Execute IMPL-001.3 [test-fix-agent]", "status": "pending"},
{"content": " → Execute IMPL-001.5 [test-fix-agent]", "status": "pending"},
{"content": " → Execute IMPL-002 [test-fix-agent]", "status": "pending"},
{"content": " → Fix Loop", "status": "pending"}
]
修复循环迭代
[
{"content": "Phase 1-4: Test Generation", "status": "completed"},
{"content": "Phase 5: Test Cycle Execution", "status": "in_progress"},
{"content": " → Initial tasks", "status": "completed"},
{"content": " → Iteration 1: Initial test (pass: 70%, conservative)", "status": "completed"},
{"content": " → Iteration 2: Fix validation (pass: 82%, conservative)", "status": "completed"},
{"content": " → Iteration 3: Batch fix (pass: 89%, aggressive)", "status": "in_progress"}
]
15. 会话文件结构
.workflow/active/WFS-test-{session}/
├── workflow-session.json # Session metadata
├── IMPL_PLAN.md # Test generation and execution strategy
├── TODO_LIST.md # Task checklist
├── .task/
│ ├── IMPL-001.json # Test understanding & generation
│ ├── IMPL-001.3-validation.json # Code validation gate
│ ├── IMPL-001.5-review.json # Test quality gate
│ ├── IMPL-002.json # Test execution & fix cycle
│ └── IMPL-fix-{N}.json # Generated fix tasks (Phase 5 fix loop)
├── .process/
│ ├── [test-]context-package.json # Context and coverage analysis
│ ├── TEST_ANALYSIS_RESULTS.md # Test requirements (L0-L3)
│ ├── iteration-state.json # Current iteration + strategy + stuck tests
│ ├── test-results.json # Latest results (pass_rate, criticality)
│ ├── test-output.log # Full test output
│ ├── fix-history.json # All fix attempts
│ ├── iteration-{N}-analysis.md # CLI analysis report
│ └── iteration-{N}-cli-output.txt
└── .summaries/
└── iteration-summaries/
16. 错误处理
阶段 1-4(生成)
| 阶段 | 错误条件 | 操作 |
|---|---|---|
| 1:会话启动 | 未找到源会话(会话模式) | 返回包含会话 ID 的错误 |
| 1:会话启动 | 没有已完成的 IMPL 任务(会话模式) | 返回错误,源会话未完成 |
| 2:收集上下文 | 收集上下文失败 | 返回错误,检查源工件 |
| 3:分析 | Gemini 分析失败 | 返回错误,检查上下文包 |
| 4:生成任务 | 任务生成失败 | 重试一次,然后返回错误 |
阶段 5(执行)
| 场景 | 操作 |
|---|---|
| 测试执行错误 | 记录日志,结合错误上下文重试 |
| CLI 分析失败 | 回退方案:Gemini → Qwen → Codex → 手动处理 |
| Agent 执行错误 | 保存状态,使用简化后的上下文重试 |
| 达到最大迭代次数 | 生成失败报告,标记为受阻 |
| 检测到回归 | 回滚上次修复,改用精细修复策略 |
| 检测到测试卡住 | 使用替代策略继续,并记录说明 |
17. 提交策略(阶段 5)
在关键检查点自动提交:
- 成功完成迭代后(通过率提高):
test-cycle: iteration N - strategy (pass: old% → new%) - 回滚前(检测到回归):
test-cycle: rollback iteration N - regression detected
18. 完成条件
| 条件 | 通过率 | 操作 |
|---|---|---|
| 完全成功 | 100% | 自动完成会话 |
| 部分成功 | >= 95%,且所有失败项的严重性较低 | 自动批准并附上审查备注 |
| 失败 | 达到最大迭代次数后仍 < 95% | 生成失败报告,标记为受阻 |
19. 完成后的扩展
自动同步:执行 /workflow:session:sync -y "{summary}",更新 specs/*.md + project-tech。
完成后,询问用户是否要将内容扩展为问题项(测试/增强/重构/文档)。所选项目调用 /issue:new "{summary} - {dimension}"。
20. 协调器检查清单
阶段 1(session-start)
- 检测输入类型(会话 ID / 描述 / 文件路径)
- 在执行任何操作前初始化 TaskCreate
- 读取("phases/01-session-start.md"),执行步骤 1.0 + 1.1
- 从步骤输出中解析 testSessionId,并存储在内存中
阶段 2(test-context-gather)
- 读取("phases/02-test-context-gather.md"),执行步骤 1.2
- 从步骤输出中解析 contextPath,并存储在内存中
阶段 3(test-concept-enhanced)
- 读取("phases/03-test-concept-enhanced.md"),执行步骤 1.3
- 确认已创建 TEST_ANALYSIS_RESULTS.md
阶段 4(test-task-generate)
- 读取("phases/04-test-task-generate.md"),执行步骤 1.4
- 确认阶段 1-4 的所有输出(4 个任务 JSON、IMPL_PLAN.md、TODO_LIST.md)
- 显示 Summary 输出(行内)
- 收起阶段 1-4 的任务,自动继续进入阶段 5
阶段 5(test-cycle-execute)
- 读取("phases/05-test-cycle-execute.md")
- 加载会话、任务和迭代状态
- 按顺序执行初始任务
- 根据 test-results.json 计算通过率
- 如果 pass_rate < 95%:进入修复循环
- 跟踪迭代次数、卡住的测试和回归情况
- 如果 pass_rate >= 95% 或达到最大迭代次数:完成
- 生成完成摘要
- 提供完成后的扩展选项
21. 相关技能
前置技能:
workflow-plan技能或workflow-execute技能 - 完成实现(Session Mode 源)- Prompt Mode 无需前置技能
后续技能:
- 内联显示会话状态 - 查看工作流状态
review-cycle技能 - 实现后的审查/issue:new- 创建后续问题
<auto_mode>
当在 $ARGUMENTS 中检测到 -y 或 --yes,或通过 ccw 传递这些参数时:
- 跳过所有 AskUserQuestion 确认
- 所有工作流首选项均使用默认值(
workflowPreferences = { autoYes: true }) - 自动继续所有阶段,无需用户交互
- 阶段 1→2→3→4→Summary→5 作为全自动流水线执行 </auto_mode>
<success_criteria>
- 正确检测输入类型(会话 ID / 描述 / 文件路径)
- 按顺序执行全部 5 个阶段(完整流水线)或仅执行阶段 5(仅执行模式)
- 仅在阶段执行时,通过 Read() 渐进式加载阶段文档
- 全程通过附件/折叠模式维护 TaskCreate/TaskUpdate 跟踪
- 解析所有阶段输出,并传递给后续阶段(testSessionId、contextPath 等)
- 阶段 4 后显示摘要,包含所有任务和阈值详情
- 阶段 5 的修复循环采用自适应策略迭代,直至通过率达到或超过 95%,或达到最大迭代次数
- 生成完成摘要,包含最终通过率,并归档会话
- 向用户提供完成后的扩展选项 </success_criteria>