Install any skill in seconds. Free to start, no credit card required.
Get Started Free →End-to-end test-fix workflow generate test sessions with progressive layers (L0-L3), then execute iterative fix cycles until pass rate >= 95%. Combines test-fix-gen and test-cycle-execute into a unified pipeline. Triggers on "workflow:test-fix-cycle".
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 255% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 310% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 348% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 563% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 181% | 0% |
End-to-end test-fix workflow pipeline: generate test sessions with progressive layers (L0-L3), AI code validation, and task generation (Phase 1), then execute iterative fix cycles with adaptive strategy engine until pass rate >= 95% (Phase 2).
┌────────────────────────────────────────────────────────────────────────────┐
│ Workflow Test-Fix Cycle Orchestrator (SKILL.md) │
│ → Full pipeline: Test generation + Iterative execution │
│ → Phase dispatch: Read phase docs, execute, pass context │
└───────────────┬────────────────────────────────────────────────────────────┘
│
┌────────────┴────────────────────────┐
↓ ↓
┌─────────────────────────┐ ┌─────────────────────────────┐
│ Phase 1: Test-Fix Gen │ │ Phase 2: Test-Cycle Execute │
│ phases/01-test-fix-gen │ │ phases/02-test-cycle-execute │
│ 5 sub-phases: │ │ 3 stages: │
│ ① Create Session │ │ ① Discovery │
│ ② Gather Context │ │ ② Main Loop (iterate) │
│ ③ Test Analysis (Gemini)│ │ ③ Completion │
│ ④ Generate Tasks │ │ │
│ ⑤ Summary │ │ Agents (via spawn_agent): │
│ │ │ @cli-planning-agent │
│ Agents (via spawn_agent)│ │ @test-fix-agent │
│ @test-context-search │ │ │
│ @context-search │ │ Strategy: conservative → │
│ @cli-execution │ │ aggressive → surgical │
│ @action-planning │ │ │
└────────┬────────────────┘ └────────────┬──────────────────┘
↓ ↓
IMPL-001..002.json Pass Rate >= 95%
TEST_ANALYSIS_RESULTS.md Auto-complete session
Task Pipeline:
┌──────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐
│ 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 10 iter │
│@code-developer│ │ @test-fix-agent │ │ @test-fix-agent │ │@test-fix-agent│
└──────────────┘ └─────────────────┘ └─────────────────┘ └──────────────┘
│
Fix Loop: │
┌──────────────────┘
↓
┌──────────┐
│ @cli-plan│───→ IMPL-fix-N.json
│ agent │
├──────────┤
│@test-fix │───→ Apply & re-test
│ agent │
└──────────┘Phase 1 generates test session and tasks. Phase 2 executes iterative fix cycles until pass rate >= 95% or max iterations reached. Between Phase 1 and Phase 2, you MUST stop and wait for user confirmation before proceeding to execution. Phase 2 runs autonomously once approved.
Create a new subagent with task assignment.
javascriptconst agentId = spawn_agent({ agent_type: "{agent_type}", message: ` ## TASK ASSIGNMENT ### MANDATORY FIRST STEPS (Agent Execute) 1. Run: `ccw spec load --category "planning execution"` ## TASK CONTEXT ${taskContext} ## DELIVERABLES ${deliverables} ` })
Get results from subagent (only way to retrieve results).
javascriptconst result = wait_agent({ timeout_ms: 1800000 // 30 minutes }) if (result.timed_out) { followup_task({ target: agentId, message: "STATUS_CHECK: Report current progress, findings so far, and estimated remaining work." }) const status = wait_agent({ timeout_ms: 180000 }) // 3 min if (status.timed_out) { followup_task({ target: agentId, message: "FINALIZE: Output all current findings immediately. Time limit reached.", interrupt: true }) const forced = wait_agent({ timeout_ms: 180000 }) // 3 min if (forced.timed_out) { close_agent({ target: agentId }) } } }
Assign new work to active subagent (for clarification or follow-up).
javascriptfollowup_task({ target: agentId, message: ` ## CLARIFICATION ANSWERS ${answers} ## NEXT STEP Continue with plan generation. ` })
Clean up subagent resources (irreversible).
javascriptclose_agent({ target: agentId })
workflow-test-fix-cycle <input> [options]
# Input (Phase 1 - Test Generation)
source-session-id WFS-* session ID (Session Mode - test validation for completed implementation)
feature description Text description of what to test (Prompt Mode)
/path/to/file.md Path to requirements file (Prompt Mode)
# Options (Phase 2 - Cycle Execution)
--max-iterations=N Custom iteration limit (default: 10)
# Examples
workflow-test-fix-cycle WFS-user-auth-v2 # Session Mode
workflow-test-fix-cycle "Test the user authentication API endpoints in src/auth/api.ts" # Prompt Mode - text
workflow-test-fix-cycle ./docs/api-requirements.md # Prompt Mode - file
workflow-test-fix-cycle "Test user registration" --max-iterations=15 # With custom iterations
# Resume (Phase 2 only - session already created)
workflow-test-fix-cycle --resume-session="WFS-test-user-auth" # Resume interrupted sessionQuality Gate: Test pass rate >= 95% (criticality-aware) or 100% Max Iterations: 10 (default, adjustable) CLI Tools: Gemini → Qwen → Codex (fallback chain)
Progressive Test Layers (L0-L3):
| Layer | Name | Focus | |-------|------|-------| | L0 | Static Analysis | Compilation, imports, types, AI code issues | | L1 | Unit Tests | Function/class behavior (happy/negative/edge cases) | | L2 | Integration Tests | Component interactions, API contracts, failure modes | | L3 | E2E Tests | User journeys, critical paths (optional) |
Key Features:
Detailed specifications: See the test-task-generate workflow tool for complete L0-L3 requirements and quality thresholds.
Input → Detect Mode (session | prompt | resume)
│
├─ resume mode → Skip to Phase 2
│
└─ session/prompt mode → Phase 1
│
Phase 1: Test-Fix Generation (phases/01-test-fix-gen.md)
├─ Sub-phase 1.1: Create Test Session → testSessionId
├─ Sub-phase 1.2: Gather Test Context (spawn_agent) → contextPath
├─ Sub-phase 1.3: Test Generation Analysis (spawn_agent → Gemini) → TEST_ANALYSIS_RESULTS.md
├─ Sub-phase 1.4: Generate Test Tasks (spawn_agent) → IMPL-*.json, IMPL_PLAN.md, TODO_LIST.md
└─ Sub-phase 1.5: Phase 1 Summary
│
⛔ MANDATORY CONFIRMATION GATE
│ Present plan summary → request_user_input → User approves/cancels
│ NEVER auto-proceed to Phase 2
│
Phase 2: Test-Cycle Execution (phases/02-test-cycle-execute.md)
├─ Discovery: Load session, tasks, iteration state
├─ Main Loop (for each task):
│ ├─ Execute → Test → Calculate pass_rate
│ ├─ 100% → SUCCESS: Next task
│ ├─ 95-99% + low criticality → PARTIAL SUCCESS: Approve
│ └─ <95% → Fix Loop:
│ ├─ Select strategy: conservative/aggressive/surgical
│ ├─ spawn_agent(@cli-planning-agent) → IMPL-fix-N.json
│ ├─ spawn_agent(@test-fix-agent) → Apply fix & re-test
│ └─ Re-test → Back to decision
└─ Completion: Final validation → Summary → Sync session state → Auto-complete sessionfunctions.update_plan initializationphases/01-*.md, phases/02-*.md)Read: phases/01-test-fix-gen.md
5 sub-phases that create a test session and generate task JSONs:
testSessionIdcontextPathTEST_ANALYSIS_RESULTS.mdIMPL-001.json, IMPL-001.3.json, IMPL-001.5.json, IMPL-002.json, IMPL_PLAN.md, TODO_LIST.mdAgents Used (via spawn_agent):
test_context_search_agent (agent_type: test_context_search_agent) - Context gathering (Session Mode)context_search_agent (agent_type: context_search_agent) - Context gathering (Prompt Mode)cli_execution_agent (agent_type: cli_execution_agent) - Test analysis with Geminiaction_planning_agent (agent_type: action_planning_agent) - Task JSON generationRead: phases/02-test-cycle-execute.md
3-stage iterative execution with adaptive strategy:
Agents Used (via spawn_agent):
cli_planning_agent (agent_type: cli_planning_agent) - Failure analysis, root cause extraction, fix task generationtest_fix_agent (agent_type: test_fix_agent) - Test execution, code fixes, criticality assignmentStrategy Engine: conservative (iteration 1-2) → aggressive (pass >80%) → surgical (regression)
{projectRoot}/.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 2)
├── .process/
│ ├── [test-]context-package.json # Context and coverage analysis
│ ├── TEST_ANALYSIS_RESULTS.md # Test requirements and strategy (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/javascript// Initialize progress tracking after input parsing functions.update_plan([ { id: "phase-1", title: "Phase 1: Test-Fix Generation", status: "in_progress" }, { id: "phase-2", title: "Phase 2: Test-Cycle Execution", status: "pending" } ])
javascript// After Phase 1 completes (before mandatory confirmation gate) functions.update_plan([ { id: "phase-1", status: "completed" }, { id: "phase-2", status: "in_progress" } ]) // After Phase 2 completes (pass rate >= 95% or max iterations) functions.update_plan([{ id: "phase-2", status: "completed" }])
javascript// When --resume-session skips Phase 1 functions.update_plan([ { id: "phase-1", title: "Phase 1: Test-Fix Generation", status: "completed" }, { id: "phase-2", title: "Phase 2: Test-Cycle Execution", status: "in_progress" } ])
| Phase | Scenario | Action | |-------|----------|--------| | 1.1 | Source session not found (session mode) | Return error with session ID | | 1.1 | No completed IMPL tasks (session mode) | Return error, source incomplete | | 1.2 | Context gathering failed | Return error, check source artifacts | | 1.2 | Agent timeout | Retry with extended timeout, close_agent, then return error | | 1.3 | Gemini analysis failed | Return error, check context package | | 1.4 | Task generation failed | Retry once, then return error | | 2 | Test execution error | Log, retry with error context | | 2 | CLI analysis failure | Fallback: Gemini → Qwen → Codex → manual | | 2 | Agent execution error | Save state, close_agent, retry with simplified context | | 2 | Max iterations reached | Generate failure report, mark blocked | | 2 | Regression detected | Rollback last fix, switch to surgical strategy | | 2 | Stuck tests detected | Continue with alternative strategy, document in failure report |
Lifecycle Error Handling:
javascripttry { const agentId = spawn_agent({ message: "..." }); const result = wait_agent({ timeout_ms: 1800000 }); // 30 minutes // ... process result ... close_agent({ target: agentId }); } catch (error) { if (agentId) close_agent({ target: agentId }); throw error; }
Phase 1 (Generation):
functions.update_plan with 2 top-level phasesphases/01-test-fix-gen.md for detailed sub-phase executionPhase 2 (Execution):
phases/02-test-cycle-execute.md for detailed execution logicfunctions.update_planResume Mode:
--resume-session provided, skip Phase 1Prerequisite Skills:
workflow-plan or workflow-execute - Complete implementation (Session Mode)Phase 1 Agents (used by phases/01-test-fix-gen.md via spawn_agent):
test_context_search_agent (agent_type: test_context_search_agent) - Test coverage analysis (Session Mode)context_search_agent (agent_type: context_search_agent) - Codebase analysis (Prompt Mode)cli_execution_agent (agent_type: cli_execution_agent) - Test requirements with Geminiaction_planning_agent (agent_type: action_planning_agent) - Task JSON generationPhase 2 Agents (used by phases/02-test-cycle-execute.md via spawn_agent):
cli_planning_agent (agent_type: cli_planning_agent) - CLI analysis, root cause extraction, task generationtest_fix_agent (agent_type: test_fix_agent) - Test execution, code fixes, criticality assignmentFollow-up:
$session-sync -y "Test-fix cycle complete: {pass_rate}% pass rate"Other measured skills in the registry, with their headline benchmark lift.