mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-12 02:37:45 +08:00
- Implement `test-cli-command-gen.js` to verify the logic of `buildCliCommand` function. - Create `test-e2e-model-alias.js` for end-to-end testing of model alias resolution in `ccw cli`. - Add `test-model-alias.js` to test model alias resolution for different models. - Introduce `test-model-alias.txt` for prompt testing with model alias. - Develop `test-update-claude-command.js` to test command generation for `update_module_claude`. - Create a test file in `test-update-claude/src` for future tests.
415 lines
15 KiB
Markdown
415 lines
15 KiB
Markdown
---
|
|
name: workflow-plan
|
|
description: 5-phase planning workflow with action-planning-agent task generation, outputs IMPL_PLAN.md and task JSONs. Triggers on "workflow:plan".
|
|
allowed-tools: spawn_agent, wait, send_input, close_agent, AskUserQuestion, Read, Write, Edit, Bash, Glob, Grep
|
|
---
|
|
|
|
# Workflow Plan
|
|
|
|
5-phase planning workflow that orchestrates session discovery, context gathering, conflict resolution, and task generation to produce implementation plans (IMPL_PLAN.md, task JSONs, TODO_LIST.md).
|
|
|
|
## Architecture Overview
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ Workflow Plan Orchestrator (SKILL.md) │
|
|
│ → Pure coordinator: Execute phases, parse outputs, pass context │
|
|
└───────────────┬─────────────────────────────────────────────────┘
|
|
│
|
|
┌───────────┼───────────┬───────────┬───────────┐
|
|
↓ ↓ ↓ ↓ ↓
|
|
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
|
|
│ Phase 1 │ │ Phase 2 │ │ Phase 3 │ │Phase 3.5│ │ Phase 4 │
|
|
│ Session │ │ Context │ │Conflict │ │ Gate │ │ Task │
|
|
│Discovery│ │ Gather │ │Resolve │ │(Optional)│ │Generate │
|
|
└─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘
|
|
↓ ↓ ↓ ↓
|
|
sessionId contextPath resolved IMPL_PLAN.md
|
|
conflict_risk artifacts task JSONs
|
|
TODO_LIST.md
|
|
```
|
|
|
|
## Key Design Principles
|
|
|
|
1. **Pure Orchestrator**: Execute phases in sequence, parse outputs, pass context between them
|
|
2. **Auto-Continue**: All phases run autonomously without user intervention between phases
|
|
3. **Subagent Lifecycle**: Explicit lifecycle management with spawn_agent → wait → close_agent
|
|
4. **Progressive Phase Loading**: Phase docs are read on-demand, not all at once
|
|
5. **Conditional Execution**: Phase 3 only executes when conflict_risk >= medium
|
|
6. **Role Path Loading**: Subagent roles loaded via path reference in MANDATORY FIRST STEPS
|
|
|
|
## Auto Mode
|
|
|
|
When `--yes` or `-y`: Auto-continue all phases (skip confirmations), use recommended conflict resolutions.
|
|
|
|
## Execution Flow
|
|
|
|
```
|
|
Input Parsing:
|
|
└─ Convert user input to structured format (GOAL/SCOPE/CONTEXT)
|
|
|
|
Phase 1: Session Discovery
|
|
└─ Ref: phases/01-session-discovery.md
|
|
└─ Output: sessionId (WFS-xxx)
|
|
|
|
Phase 2: Context Gathering
|
|
└─ Ref: phases/02-context-gathering.md
|
|
├─ Tasks attached: Analyze structure → Identify integration → Generate package
|
|
└─ Output: contextPath + conflict_risk
|
|
|
|
Phase 3: Conflict Resolution
|
|
└─ Decision (conflict_risk check):
|
|
├─ conflict_risk ≥ medium → Ref: phases/03-conflict-resolution.md
|
|
│ ├─ Tasks attached: Detect conflicts → Present to user → Apply strategies
|
|
│ └─ Output: Modified brainstorm artifacts
|
|
└─ conflict_risk < medium → Skip to Phase 4
|
|
|
|
Phase 4: Task Generation
|
|
└─ Ref: phases/04-task-generation.md
|
|
└─ Output: IMPL_PLAN.md, task JSONs, TODO_LIST.md
|
|
|
|
Return:
|
|
└─ Summary with recommended next steps
|
|
```
|
|
|
|
**Phase Reference Documents** (read on-demand when phase executes):
|
|
|
|
| Phase | Document | Purpose |
|
|
|-------|----------|---------|
|
|
| 1 | [phases/01-session-discovery.md](phases/01-session-discovery.md) | Session creation/discovery with intelligent session management |
|
|
| 2 | [phases/02-context-gathering.md](phases/02-context-gathering.md) | Project context collection via context-search-agent |
|
|
| 3 | [phases/03-conflict-resolution.md](phases/03-conflict-resolution.md) | Conflict detection and resolution with CLI analysis |
|
|
| 4 | [phases/04-task-generation.md](phases/04-task-generation.md) | Implementation plan and task JSON generation |
|
|
|
|
## Core Rules
|
|
|
|
1. **Start Immediately**: First action is TodoWrite initialization, second action is Phase 1 execution
|
|
2. **No Preliminary Analysis**: Do not read files, analyze structure, or gather context before Phase 1
|
|
3. **Parse Every Output**: Extract required data from each phase output for next phase
|
|
4. **Auto-Continue via TodoList**: Check TodoList status to execute next pending phase automatically
|
|
5. **Track Progress**: Update TodoWrite dynamically with task attachment/collapse pattern
|
|
6. **Progressive Phase Loading**: Read phase docs ONLY when that phase is about to execute
|
|
7. **DO NOT STOP**: Continuous multi-phase workflow. After completing each phase, immediately proceed to next
|
|
8. **Explicit Lifecycle**: Always close_agent after wait completes to free resources
|
|
|
|
## Subagent API Reference
|
|
|
|
### spawn_agent
|
|
Create a new subagent with task assignment.
|
|
|
|
```javascript
|
|
const agentId = spawn_agent({
|
|
message: `
|
|
## TASK ASSIGNMENT
|
|
|
|
### MANDATORY FIRST STEPS (Agent Execute)
|
|
1. **Read role definition**: ~/.codex/agents/{agent-type}.md (MUST read first)
|
|
2. Read: .workflow/project-tech.json
|
|
3. Read: .workflow/project-guidelines.json
|
|
|
|
## TASK CONTEXT
|
|
${taskContext}
|
|
|
|
## DELIVERABLES
|
|
${deliverables}
|
|
`
|
|
})
|
|
```
|
|
|
|
### wait
|
|
Get results from subagent (only way to retrieve results).
|
|
|
|
```javascript
|
|
const result = wait({
|
|
ids: [agentId],
|
|
timeout_ms: 600000 // 10 minutes
|
|
})
|
|
|
|
if (result.timed_out) {
|
|
// Handle timeout - can continue waiting or send_input to prompt completion
|
|
}
|
|
```
|
|
|
|
### send_input
|
|
Continue interaction with active subagent (for clarification or follow-up).
|
|
|
|
```javascript
|
|
send_input({
|
|
id: agentId,
|
|
message: `
|
|
## CLARIFICATION ANSWERS
|
|
${answers}
|
|
|
|
## NEXT STEP
|
|
Continue with plan generation.
|
|
`
|
|
})
|
|
```
|
|
|
|
### close_agent
|
|
Clean up subagent resources (irreversible).
|
|
|
|
```javascript
|
|
close_agent({ id: agentId })
|
|
```
|
|
|
|
## Input Processing
|
|
|
|
**Convert User Input to Structured Format**:
|
|
|
|
1. **Simple Text** → Structure it:
|
|
```
|
|
User: "Build authentication system"
|
|
|
|
Structured:
|
|
GOAL: Build authentication system
|
|
SCOPE: Core authentication features
|
|
CONTEXT: New implementation
|
|
```
|
|
|
|
2. **Detailed Text** → Extract components:
|
|
```
|
|
User: "Add JWT authentication with email/password login and token refresh"
|
|
|
|
Structured:
|
|
GOAL: Implement JWT-based authentication
|
|
SCOPE: Email/password login, token generation, token refresh endpoints
|
|
CONTEXT: JWT token-based security, refresh token rotation
|
|
```
|
|
|
|
3. **File Reference** (e.g., `requirements.md`) → Read and structure:
|
|
- Read file content
|
|
- Extract goal, scope, requirements
|
|
- Format into structured description
|
|
|
|
## Data Flow
|
|
|
|
```
|
|
User Input (task description)
|
|
↓
|
|
[Convert to Structured Format]
|
|
↓ Structured Description:
|
|
↓ GOAL: [objective]
|
|
↓ SCOPE: [boundaries]
|
|
↓ CONTEXT: [background]
|
|
↓
|
|
Phase 1: session:start --auto "structured-description"
|
|
↓ Output: sessionId
|
|
↓ Write: planning-notes.md (User Intent section)
|
|
↓
|
|
Phase 2: context-gather --session sessionId "structured-description"
|
|
↓ Input: sessionId + structured description
|
|
↓ Output: contextPath (context-package.json with prioritized_context) + conflict_risk
|
|
↓ Update: planning-notes.md (Context Findings + Consolidated Constraints)
|
|
↓
|
|
Phase 3: conflict-resolution [AUTO-TRIGGERED if conflict_risk ≥ medium]
|
|
↓ Input: sessionId + contextPath + conflict_risk
|
|
↓ Output: Modified brainstorm artifacts
|
|
↓ Update: planning-notes.md (Conflict Decisions + Consolidated Constraints)
|
|
↓ Skip if conflict_risk is none/low → proceed directly to Phase 4
|
|
↓
|
|
Phase 4: task-generate-agent --session sessionId
|
|
↓ Input: sessionId + planning-notes.md + context-package.json + brainstorm artifacts
|
|
↓ Output: IMPL_PLAN.md, task JSONs, TODO_LIST.md
|
|
↓
|
|
Return summary to user
|
|
```
|
|
|
|
**Session Memory Flow**: Each phase receives session ID, which provides access to:
|
|
- Previous task summaries
|
|
- Existing context and analysis
|
|
- Brainstorming artifacts (potentially modified by Phase 3)
|
|
- Session-specific configuration
|
|
|
|
## TodoWrite Pattern
|
|
|
|
**Core Concept**: Dynamic task attachment and collapse for real-time visibility into workflow execution.
|
|
|
|
### Key Principles
|
|
|
|
1. **Task Attachment** (when phase executed):
|
|
- Sub-command's internal tasks are **attached** to orchestrator's TodoWrite
|
|
- **Phase 2, 3**: Multiple sub-tasks attached (e.g., Phase 2.1, 2.2, 2.3)
|
|
- **Phase 4**: Single agent task attached
|
|
- First attached task marked as `in_progress`, others as `pending`
|
|
- Orchestrator **executes** these attached tasks sequentially
|
|
|
|
2. **Task Collapse** (after sub-tasks complete):
|
|
- **Applies to Phase 2, 3**: Remove detailed sub-tasks from TodoWrite
|
|
- **Collapse** to high-level phase summary
|
|
- **Phase 4**: No collapse needed (single task, just mark completed)
|
|
- Maintains clean orchestrator-level view
|
|
|
|
3. **Continuous Execution**:
|
|
- After completion, automatically proceed to next pending phase
|
|
- No user intervention required between phases
|
|
- TodoWrite dynamically reflects current execution state
|
|
|
|
**Lifecycle**: Initial pending tasks → Phase executed (tasks ATTACHED) → Sub-tasks executed sequentially → Phase completed (tasks COLLAPSED) → Next phase begins → Repeat until all phases complete.
|
|
|
|
## Phase-Specific TodoWrite Updates
|
|
|
|
### Phase 2 (Tasks Attached):
|
|
```json
|
|
[
|
|
{"content": "Phase 1: Session Discovery", "status": "completed"},
|
|
{"content": "Phase 2: Context Gathering", "status": "in_progress"},
|
|
{"content": " → Analyze codebase structure", "status": "in_progress"},
|
|
{"content": " → Identify integration points", "status": "pending"},
|
|
{"content": " → Generate context package", "status": "pending"},
|
|
{"content": "Phase 4: Task Generation", "status": "pending"}
|
|
]
|
|
```
|
|
|
|
### Phase 2 (Collapsed):
|
|
```json
|
|
[
|
|
{"content": "Phase 1: Session Discovery", "status": "completed"},
|
|
{"content": "Phase 2: Context Gathering", "status": "completed"},
|
|
{"content": "Phase 4: Task Generation", "status": "pending"}
|
|
]
|
|
```
|
|
|
|
### Phase 3 (Conditional, Tasks Attached):
|
|
```json
|
|
[
|
|
{"content": "Phase 1: Session Discovery", "status": "completed"},
|
|
{"content": "Phase 2: Context Gathering", "status": "completed"},
|
|
{"content": "Phase 3: Conflict Resolution", "status": "in_progress"},
|
|
{"content": " → Detect conflicts with CLI analysis", "status": "in_progress"},
|
|
{"content": " → Present conflicts to user", "status": "pending"},
|
|
{"content": " → Apply resolution strategies", "status": "pending"},
|
|
{"content": "Phase 4: Task Generation", "status": "pending"}
|
|
]
|
|
```
|
|
|
|
## Planning Notes Template
|
|
|
|
After Phase 1, create `planning-notes.md` with this structure:
|
|
|
|
```markdown
|
|
# Planning Notes
|
|
|
|
**Session**: ${sessionId}
|
|
**Created**: ${timestamp}
|
|
|
|
## User Intent (Phase 1)
|
|
|
|
- **GOAL**: ${userGoal}
|
|
- **KEY_CONSTRAINTS**: ${userConstraints}
|
|
|
|
---
|
|
|
|
## Context Findings (Phase 2)
|
|
(To be filled by context-gather)
|
|
|
|
## Conflict Decisions (Phase 3)
|
|
(To be filled if conflicts detected)
|
|
|
|
## Consolidated Constraints (Phase 4 Input)
|
|
1. ${userConstraints}
|
|
|
|
---
|
|
|
|
## Task Generation (Phase 4)
|
|
(To be filled by action-planning-agent)
|
|
|
|
## N+1 Context
|
|
### Decisions
|
|
| Decision | Rationale | Revisit? |
|
|
|----------|-----------|----------|
|
|
|
|
### Deferred
|
|
- [ ] (For N+1)
|
|
```
|
|
|
|
## Post-Phase Updates
|
|
|
|
### After Phase 2
|
|
|
|
Read context-package to extract key findings, update planning-notes.md:
|
|
- `Context Findings (Phase 2)`: CRITICAL_FILES, ARCHITECTURE, CONFLICT_RISK, CONSTRAINTS
|
|
- `Consolidated Constraints`: Append Phase 2 constraints
|
|
|
|
### After Phase 3
|
|
|
|
If executed, read conflict-resolution.json, update planning-notes.md:
|
|
- `Conflict Decisions (Phase 3)`: RESOLVED, MODIFIED_ARTIFACTS, CONSTRAINTS
|
|
- `Consolidated Constraints`: Append Phase 3 planning constraints
|
|
|
|
### Memory State Check
|
|
|
|
After Phase 3, evaluate context window usage. If memory usage is high (>120K tokens):
|
|
```javascript
|
|
// Codex: Use compact command if available
|
|
codex compact
|
|
```
|
|
|
|
## Phase 4 User Decision
|
|
|
|
After Phase 4 completes, present user with action choices:
|
|
|
|
```javascript
|
|
AskUserQuestion({
|
|
questions: [{
|
|
question: "Planning complete. What would you like to do next?",
|
|
header: "Next Action",
|
|
multiSelect: false,
|
|
options: [
|
|
{
|
|
label: "Verify Plan Quality (Recommended)",
|
|
description: "Run quality verification to catch issues before execution."
|
|
},
|
|
{
|
|
label: "Start Execution",
|
|
description: "Begin implementing tasks immediately."
|
|
},
|
|
{
|
|
label: "Review Status Only",
|
|
description: "View task breakdown and session status without taking further action."
|
|
}
|
|
]
|
|
}]
|
|
});
|
|
|
|
// Execute based on user choice
|
|
// "Verify Plan Quality" → workflow:plan-verify --session sessionId
|
|
// "Start Execution" → workflow:execute --session sessionId
|
|
// "Review Status Only" → workflow:status --session sessionId
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
- **Parsing Failure**: If output parsing fails, retry command once, then report error
|
|
- **Validation Failure**: If validation fails, report which file/data is missing
|
|
- **Command Failure**: Keep phase `in_progress`, report error to user, do not proceed to next phase
|
|
- **Subagent Timeout**: If wait times out, evaluate whether to continue waiting or send_input to prompt completion
|
|
|
|
## Coordinator Checklist
|
|
|
|
- **Pre-Phase**: Convert user input to structured format (GOAL/SCOPE/CONTEXT)
|
|
- Initialize TodoWrite before any command (Phase 3 added dynamically after Phase 2)
|
|
- Execute Phase 1 immediately with structured description
|
|
- Parse session ID from Phase 1 output, store in memory
|
|
- Pass session ID and structured description to Phase 2 command
|
|
- Parse context path from Phase 2 output, store in memory
|
|
- **Extract conflict_risk from context-package.json**: Determine Phase 3 execution
|
|
- **If conflict_risk >= medium**: Launch Phase 3 with sessionId and contextPath
|
|
- **If conflict_risk is none/low**: Skip Phase 3, proceed directly to Phase 4
|
|
- **Build Phase 4 command**: workflow:tools:task-generate-agent --session [sessionId]
|
|
- Verify all Phase 4 outputs
|
|
- Update TodoWrite after each phase
|
|
- After each phase, automatically continue to next phase based on TodoList status
|
|
- **Always close_agent after wait completes**
|
|
|
|
## Related Commands
|
|
|
|
**Prerequisite Commands**:
|
|
- `workflow:brainstorm:artifacts` - Optional: Generate role-based analyses before planning
|
|
- `workflow:brainstorm:synthesis` - Optional: Refine brainstorm analyses with clarifications
|
|
|
|
**Follow-up Commands**:
|
|
- `workflow:plan-verify` - Recommended: Verify plan quality before execution
|
|
- `workflow:status` - Review task breakdown and current progress
|
|
- `workflow:execute` - Begin implementation of generated tasks
|