mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-14 02:42:04 +08:00
feat: Implement dynamic test-fix execution phase with adaptive task generation
- Added Phase 2: Test-Cycle Execution documentation outlining the process for dynamic test-fix execution, including agent roles, core responsibilities, intelligent strategy engine, and progressive testing. - Introduced new PowerShell scripts for analyzing TypeScript errors, focusing on error categorization and reporting. - Created end-to-end tests for the Help Page, ensuring content visibility, documentation navigation, internationalization support, and accessibility compliance.
This commit is contained in:
456
.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md
Normal file
456
.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md
Normal file
@@ -0,0 +1,456 @@
|
||||
# Phase 1: Test-Fix Generation
|
||||
|
||||
5 sub-phases that create a test workflow session, gather context, analyze test requirements, and generate task JSONs. All agent interactions use spawn_agent → wait → close_agent lifecycle.
|
||||
|
||||
## Execution Model
|
||||
|
||||
**Auto-Continue Workflow**: All sub-phases run autonomously once triggered. Sub-phase 1.2-1.4 delegate to specialized agents via spawn_agent.
|
||||
|
||||
1. **Sub-phase 1.1 executes** → Test session created → Auto-continues
|
||||
2. **Sub-phase 1.2 executes** → Context gathering (spawn_agent) → Auto-continues
|
||||
3. **Sub-phase 1.3 executes** → Test generation analysis (spawn_agent → Gemini) → Auto-continues
|
||||
4. **Sub-phase 1.4 executes** → Task generation (spawn_agent) → Auto-continues
|
||||
5. **Sub-phase 1.5 executes** → Phase 1 Summary → Transitions to Phase 2
|
||||
|
||||
**Task Attachment Model**:
|
||||
- Phase execution **expands workflow** by attaching sub-tasks to current progress tracking
|
||||
- When executing a phase, its internal tasks are attached to the orchestrator's tracking
|
||||
- Orchestrator **executes these attached tasks** sequentially
|
||||
- After completion, attached tasks are **collapsed** back to high-level phase summary
|
||||
- This is **task expansion**, not external delegation
|
||||
|
||||
**Auto-Continue Mechanism**:
|
||||
- Progress tracking monitors current sub-phase status and dynamically manages task attachment/collapse
|
||||
- When each sub-phase finishes executing, automatically execute next pending sub-phase
|
||||
- All sub-phases run autonomously without user interaction
|
||||
- **CONTINUOUS EXECUTION** - Do not stop until all sub-phases complete
|
||||
|
||||
## Sub-Phase 1.1: Create Test Session
|
||||
|
||||
**Step 1.0: Detect Input Mode**
|
||||
|
||||
```
|
||||
// Automatic mode detection based on input pattern
|
||||
if (input.startsWith("WFS-")) {
|
||||
MODE = "session"
|
||||
// Load source session to preserve original task description
|
||||
Read(".workflow/active/[sourceSessionId]/workflow-session.json")
|
||||
} else {
|
||||
MODE = "prompt"
|
||||
}
|
||||
```
|
||||
|
||||
**Step 1.1: Execute** - Create test workflow session
|
||||
|
||||
```javascript
|
||||
// Session Mode - preserve original task description
|
||||
// Read and execute: workflow-plan session start phase
|
||||
// with --type test --new "Test validation for [sourceSessionId]: [originalTaskDescription]"
|
||||
|
||||
// Prompt Mode - use user's description directly
|
||||
// Read and execute: workflow-plan session start phase
|
||||
// with --type test --new "Test generation for: [description]"
|
||||
```
|
||||
|
||||
**Parse Output**:
|
||||
- Extract: `SESSION_ID: WFS-test-[slug]` (store as `testSessionId`)
|
||||
|
||||
**Validation**:
|
||||
- Session Mode: Source session `.workflow/active/[sourceSessionId]/` exists with completed IMPL tasks
|
||||
- Both Modes: New test session directory created with metadata
|
||||
|
||||
**Progress Tracking**: Mark sub-phase 1.1 completed, sub-phase 1.2 in_progress
|
||||
|
||||
---
|
||||
|
||||
## Sub-Phase 1.2: Gather Test Context
|
||||
|
||||
**Step 2.1: Execute** - Gather context based on mode via spawn_agent
|
||||
|
||||
```javascript
|
||||
// Session Mode - gather from source session via test-context-search-agent
|
||||
const contextAgentId = spawn_agent({
|
||||
message: `
|
||||
## TASK ASSIGNMENT
|
||||
|
||||
### MANDATORY FIRST STEPS (Agent Execute)
|
||||
1. **Read role definition**: ~/.codex/agents/test-context-search-agent.md (MUST read first)
|
||||
2. Read: .workflow/project-tech.json
|
||||
3. Read: .workflow/project-guidelines.json
|
||||
|
||||
---
|
||||
|
||||
## Task Objective
|
||||
Gather test context for session [testSessionId]
|
||||
|
||||
## Session Paths
|
||||
- Session Dir: .workflow/active/[testSessionId]/
|
||||
- Output: .workflow/active/[testSessionId]/.process/test-context-package.json
|
||||
|
||||
## Expected Deliverables
|
||||
- test-context-package.json with coverage analysis and test framework detection
|
||||
`
|
||||
});
|
||||
|
||||
const contextResult = wait({ ids: [contextAgentId], timeout_ms: 600000 });
|
||||
close_agent({ id: contextAgentId });
|
||||
|
||||
// Prompt Mode - gather from codebase via context-search-agent
|
||||
const contextAgentId = spawn_agent({
|
||||
message: `
|
||||
## TASK ASSIGNMENT
|
||||
|
||||
### MANDATORY FIRST STEPS (Agent Execute)
|
||||
1. **Read role definition**: ~/.codex/agents/context-search-agent.md (MUST read first)
|
||||
2. Read: .workflow/project-tech.json
|
||||
3. Read: .workflow/project-guidelines.json
|
||||
|
||||
---
|
||||
|
||||
## Task Objective
|
||||
Gather project context for session [testSessionId]: [task_description]
|
||||
|
||||
## Session Paths
|
||||
- Session Dir: .workflow/active/[testSessionId]/
|
||||
- Output: .workflow/active/[testSessionId]/.process/context-package.json
|
||||
|
||||
## Expected Deliverables
|
||||
- context-package.json with codebase analysis
|
||||
`
|
||||
});
|
||||
|
||||
const contextResult = wait({ ids: [contextAgentId], timeout_ms: 600000 });
|
||||
close_agent({ id: contextAgentId });
|
||||
```
|
||||
|
||||
**Input**: `testSessionId` from Sub-Phase 1.1
|
||||
|
||||
**Parse Output**:
|
||||
- Extract: context package path (store as `contextPath`)
|
||||
- Pattern: `.workflow/active/[testSessionId]/.process/[test-]context-package.json`
|
||||
|
||||
**Validation**:
|
||||
- Context package file exists and is valid JSON
|
||||
- Contains coverage analysis (session mode) or codebase analysis (prompt mode)
|
||||
- Test framework detected
|
||||
|
||||
**Progress Tracking Update (tasks attached)**:
|
||||
```json
|
||||
[
|
||||
{"content": "Phase 1: Test-Fix Generation", "status": "in_progress"},
|
||||
{"content": " 1.1 Create Test Session", "status": "completed"},
|
||||
{"content": " 1.2 Gather Test Context", "status": "in_progress"},
|
||||
{"content": " → Load source/codebase context", "status": "in_progress"},
|
||||
{"content": " → Analyze test coverage", "status": "pending"},
|
||||
{"content": " → Generate context package", "status": "pending"},
|
||||
{"content": " 1.3 Test Generation Analysis", "status": "pending"},
|
||||
{"content": " 1.4 Generate Test Tasks", "status": "pending"},
|
||||
{"content": " 1.5 Phase Summary", "status": "pending"},
|
||||
{"content": "Phase 2: Test-Cycle Execution", "status": "pending"}
|
||||
]
|
||||
```
|
||||
|
||||
**Progress Tracking Update (tasks collapsed)**:
|
||||
```json
|
||||
[
|
||||
{"content": "Phase 1: Test-Fix Generation", "status": "in_progress"},
|
||||
{"content": " 1.1 Create Test Session", "status": "completed"},
|
||||
{"content": " 1.2 Gather Test Context", "status": "completed"},
|
||||
{"content": " 1.3 Test Generation Analysis", "status": "pending"},
|
||||
{"content": " 1.4 Generate Test Tasks", "status": "pending"},
|
||||
{"content": " 1.5 Phase Summary", "status": "pending"},
|
||||
{"content": "Phase 2: Test-Cycle Execution", "status": "pending"}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Sub-Phase 1.3: Test Generation Analysis
|
||||
|
||||
**Step 3.1: Execute** - Analyze test requirements with Gemini via cli-execution-agent
|
||||
|
||||
```javascript
|
||||
const analysisAgentId = spawn_agent({
|
||||
message: `
|
||||
## TASK ASSIGNMENT
|
||||
|
||||
### MANDATORY FIRST STEPS (Agent Execute)
|
||||
1. **Read role definition**: ~/.codex/agents/cli-execution-agent.md (MUST read first)
|
||||
2. Read: .workflow/project-tech.json
|
||||
3. Read: .workflow/project-guidelines.json
|
||||
|
||||
---
|
||||
|
||||
## Task Objective
|
||||
Analyze test requirements for session [testSessionId] using Gemini CLI
|
||||
|
||||
## Context
|
||||
- Session ID: [testSessionId]
|
||||
- Context Package: [contextPath]
|
||||
|
||||
## Expected Behavior
|
||||
- Use Gemini to analyze coverage gaps
|
||||
- Detect project type and apply appropriate test templates
|
||||
- Generate multi-layered test requirements (L0-L3)
|
||||
- Scan for AI code issues
|
||||
- Generate TEST_ANALYSIS_RESULTS.md
|
||||
|
||||
## Output Path
|
||||
.workflow/active/[testSessionId]/.process/TEST_ANALYSIS_RESULTS.md
|
||||
|
||||
## Expected Deliverables
|
||||
- TEST_ANALYSIS_RESULTS.md with L0-L3 requirements and AI issue scan
|
||||
`
|
||||
});
|
||||
|
||||
const analysisResult = wait({ ids: [analysisAgentId], timeout_ms: 1200000 });
|
||||
close_agent({ id: analysisAgentId });
|
||||
```
|
||||
|
||||
**Input**:
|
||||
- `testSessionId` from Sub-Phase 1.1
|
||||
- `contextPath` from Sub-Phase 1.2
|
||||
|
||||
**Expected Behavior**:
|
||||
- Use Gemini to analyze coverage gaps
|
||||
- Detect project type and apply appropriate test templates
|
||||
- Generate **multi-layered test requirements** (L0-L3)
|
||||
- Scan for AI code issues
|
||||
- Generate `TEST_ANALYSIS_RESULTS.md`
|
||||
|
||||
**Output**: `.workflow/[testSessionId]/.process/TEST_ANALYSIS_RESULTS.md`
|
||||
|
||||
**Validation** - TEST_ANALYSIS_RESULTS.md must include:
|
||||
- Project Type Detection (with confidence)
|
||||
- Coverage Assessment (current vs target)
|
||||
- Test Framework & Conventions
|
||||
- Multi-Layered Test Plan (L0-L3)
|
||||
- AI Issue Scan Results
|
||||
- Test Requirements by File (with layer annotations)
|
||||
- Quality Assurance Criteria
|
||||
- Success Criteria
|
||||
|
||||
**Note**: Detailed specifications for project types, L0-L3 layers, and AI issue detection are defined in the test-concept-enhanced workflow tool.
|
||||
|
||||
---
|
||||
|
||||
## Sub-Phase 1.4: Generate Test Tasks
|
||||
|
||||
**Step 4.1: Execute** - Generate test planning documents via action-planning-agent
|
||||
|
||||
```javascript
|
||||
const taskGenAgentId = spawn_agent({
|
||||
message: `
|
||||
## TASK ASSIGNMENT
|
||||
|
||||
### MANDATORY FIRST STEPS (Agent Execute)
|
||||
1. **Read role definition**: ~/.codex/agents/action-planning-agent.md (MUST read first)
|
||||
2. Read: .workflow/project-tech.json
|
||||
3. Read: .workflow/project-guidelines.json
|
||||
|
||||
---
|
||||
|
||||
## Task Objective
|
||||
Generate test-specific IMPL_PLAN.md and task JSONs for session [testSessionId]
|
||||
|
||||
## Context
|
||||
- Session ID: [testSessionId]
|
||||
- TEST_ANALYSIS_RESULTS.md: .workflow/active/[testSessionId]/.process/TEST_ANALYSIS_RESULTS.md
|
||||
|
||||
## Expected Output (minimum 4 tasks)
|
||||
- IMPL-001.json: Test understanding & generation (@code-developer)
|
||||
- IMPL-001.3-validation.json: Code validation gate (@test-fix-agent)
|
||||
- IMPL-001.5-review.json: Test quality gate (@test-fix-agent)
|
||||
- IMPL-002.json: Test execution & fix cycle (@test-fix-agent)
|
||||
- IMPL_PLAN.md: Test generation and execution strategy
|
||||
- TODO_LIST.md: Task checklist
|
||||
|
||||
## Output Paths
|
||||
- Tasks: .workflow/active/[testSessionId]/.task/
|
||||
- Plan: .workflow/active/[testSessionId]/IMPL_PLAN.md
|
||||
- Todo: .workflow/active/[testSessionId]/TODO_LIST.md
|
||||
`
|
||||
});
|
||||
|
||||
const taskGenResult = wait({ ids: [taskGenAgentId], timeout_ms: 600000 });
|
||||
close_agent({ id: taskGenAgentId });
|
||||
```
|
||||
|
||||
**Input**: `testSessionId` from Sub-Phase 1.1
|
||||
|
||||
**Note**: action-planning-agent generates test-specific IMPL_PLAN.md and task JSONs based on TEST_ANALYSIS_RESULTS.md.
|
||||
|
||||
**Expected Output** (minimum 4 tasks):
|
||||
|
||||
| Task | Type | Agent | Purpose |
|
||||
|------|------|-------|---------|
|
||||
| IMPL-001 | test-gen | @code-developer | Test understanding & generation (L1-L3) |
|
||||
| IMPL-001.3 | code-validation | @test-fix-agent | Code validation gate (L0 + AI issues) |
|
||||
| IMPL-001.5 | test-quality-review | @test-fix-agent | Test quality gate |
|
||||
| IMPL-002 | test-fix | @test-fix-agent | Test execution & fix cycle |
|
||||
|
||||
**Validation**:
|
||||
- `.workflow/active/[testSessionId]/.task/IMPL-001.json` exists
|
||||
- `.workflow/active/[testSessionId]/.task/IMPL-001.3-validation.json` exists
|
||||
- `.workflow/active/[testSessionId]/.task/IMPL-001.5-review.json` exists
|
||||
- `.workflow/active/[testSessionId]/.task/IMPL-002.json` exists
|
||||
- `.workflow/active/[testSessionId]/IMPL_PLAN.md` exists
|
||||
- `.workflow/active/[testSessionId]/TODO_LIST.md` exists
|
||||
|
||||
**Progress Tracking Update (agent task attached)**:
|
||||
```json
|
||||
[
|
||||
{"content": "Phase 1: Test-Fix Generation", "status": "in_progress"},
|
||||
{"content": " 1.1 Create Test Session", "status": "completed"},
|
||||
{"content": " 1.2 Gather Test Context", "status": "completed"},
|
||||
{"content": " 1.3 Test Generation Analysis", "status": "completed"},
|
||||
{"content": " 1.4 Generate Test Tasks", "status": "in_progress"},
|
||||
{"content": " 1.5 Phase Summary", "status": "pending"},
|
||||
{"content": "Phase 2: Test-Cycle Execution", "status": "pending"}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Sub-Phase 1.5: Phase 1 Summary
|
||||
|
||||
**Internal Summary** (transitions directly to Phase 2):
|
||||
```
|
||||
Phase 1 Complete - Test-Fix Generation
|
||||
|
||||
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
|
||||
|
||||
Artifacts:
|
||||
- Test plan: .workflow/[testSessionId]/IMPL_PLAN.md
|
||||
- Task list: .workflow/[testSessionId]/TODO_LIST.md
|
||||
- Analysis: .workflow/[testSessionId]/.process/TEST_ANALYSIS_RESULTS.md
|
||||
|
||||
→ Transitioning to Phase 2: Test-Cycle Execution
|
||||
```
|
||||
|
||||
**Progress Tracking**: Mark Phase 1 completed, Phase 2 in_progress. Immediately begin Phase 2.
|
||||
|
||||
## Data Flow
|
||||
|
||||
```
|
||||
User Input (session ID | description | file path)
|
||||
↓
|
||||
[Detect Mode: session | prompt]
|
||||
↓
|
||||
Sub-Phase 1.1: session:start --type test --new "description"
|
||||
↓ Output: testSessionId
|
||||
↓
|
||||
Sub-Phase 1.2: test-context-gather | context-gather (via spawn_agent)
|
||||
↓ Input: testSessionId
|
||||
↓ Output: contextPath (context-package.json)
|
||||
↓
|
||||
Sub-Phase 1.3: test-concept-enhanced (via spawn_agent → cli-execution-agent)
|
||||
↓ Input: testSessionId + contextPath
|
||||
↓ Output: TEST_ANALYSIS_RESULTS.md (L0-L3 requirements + AI issues)
|
||||
↓
|
||||
Sub-Phase 1.4: test-task-generate (via spawn_agent → action-planning-agent)
|
||||
↓ Input: testSessionId + TEST_ANALYSIS_RESULTS.md
|
||||
↓ Output: IMPL_PLAN.md, IMPL-*.json (4+), TODO_LIST.md
|
||||
↓
|
||||
Sub-Phase 1.5: Phase 1 Summary
|
||||
↓
|
||||
→ Phase 2: Test-Cycle Execution
|
||||
```
|
||||
|
||||
## Execution Flow Diagram
|
||||
|
||||
```
|
||||
Orchestrator triggers Phase 1
|
||||
↓
|
||||
[Input Detection] → MODE: session | prompt
|
||||
↓
|
||||
[Progress Init] Phase 1 sub-phases
|
||||
↓
|
||||
Sub-Phase 1.1: Create Test Session
|
||||
→ Read and execute session start phase
|
||||
→ testSessionId extracted (WFS-test-user-auth)
|
||||
↓
|
||||
Sub-Phase 1.2: Gather Test Context (spawn_agent executed)
|
||||
→ spawn_agent: context-search-agent
|
||||
→ wait → close_agent
|
||||
→ ATTACH 3 sub-tasks: ← ATTACHED
|
||||
- → Load codebase context
|
||||
- → Analyze test coverage
|
||||
- → Generate context package
|
||||
→ Execute sub-tasks sequentially
|
||||
→ COLLAPSE tasks ← COLLAPSED
|
||||
→ contextPath extracted
|
||||
↓
|
||||
Sub-Phase 1.3: Test Generation Analysis (spawn_agent executed)
|
||||
→ spawn_agent: cli-execution-agent (Gemini)
|
||||
→ wait → close_agent
|
||||
→ ATTACH 3 sub-tasks: ← ATTACHED
|
||||
- → Analyze coverage gaps with Gemini
|
||||
- → Detect AI code issues (L0.5)
|
||||
- → Generate L0-L3 test requirements
|
||||
→ Execute sub-tasks sequentially
|
||||
→ COLLAPSE tasks ← COLLAPSED
|
||||
→ TEST_ANALYSIS_RESULTS.md created
|
||||
↓
|
||||
Sub-Phase 1.4: Generate Test Tasks (spawn_agent executed)
|
||||
→ spawn_agent: action-planning-agent
|
||||
→ wait → close_agent
|
||||
→ Agent autonomously generates:
|
||||
- IMPL-001.json (test generation)
|
||||
- IMPL-001.3-validation.json (code validation)
|
||||
- IMPL-001.5-review.json (test quality)
|
||||
- IMPL-002.json (test execution)
|
||||
- IMPL_PLAN.md
|
||||
- TODO_LIST.md
|
||||
↓
|
||||
Sub-Phase 1.5: Phase 1 Summary
|
||||
→ Internal summary with artifacts
|
||||
→ Transition to Phase 2
|
||||
```
|
||||
|
||||
## Session Metadata
|
||||
|
||||
**File**: `workflow-session.json`
|
||||
|
||||
| Mode | Fields |
|
||||
|------|--------|
|
||||
| **Session** | `type: "test"`, `source_session_id: "[sourceId]"` |
|
||||
| **Prompt** | `type: "test"` (no source_session_id) |
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Sub-Phase | Error Condition | 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 |
|
||||
|
||||
**Lifecycle Error Handling**:
|
||||
```javascript
|
||||
try {
|
||||
const agentId = spawn_agent({ message: "..." });
|
||||
const result = wait({ ids: [agentId], timeout_ms: 600000 });
|
||||
// ... process result ...
|
||||
close_agent({ id: agentId });
|
||||
} catch (error) {
|
||||
if (agentId) close_agent({ id: agentId });
|
||||
throw error;
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user