Track progress in multi-phase workflows with Tasks system. Use when orchestrating 5+ phase commands, managing iteration loops, tracking parallel tasks, or providing real-time progress visibility...
Version: 2.0.0 Purpose: Patterns for using Tasks system in complex multi-phase workflows Status: Production Ready
Task orchestration is the practice of using the Tasks system (TaskCreate, TaskUpdate, TaskList, TaskGet) to provide real-time progress visibility in complex multi-phase workflows. It transforms opaque "black box" workflows into transparent, trackable processes where users can see:
This skill provides battle-tested patterns for:
Task orchestration is especially valuable for workflows with >5 phases or >10 minutes duration, where users need progress feedback.
The Tasks system provides 4 tools:
TaskCreate: Create a new task
TaskCreate:
subject: "PHASE 1: Gather requirements"
description: "Ask user for feature requirements"
activeForm: "Gathering requirements"
status: "pending"
blockedBy: ["prerequisite-task-id"] // Optional
owner: "agent-name" // Optional
TaskUpdate: Update task status or fields
TaskUpdate: taskId="task-123", status="in_progress"
TaskUpdate: taskId="task-123", status="completed"
TaskUpdate: taskId="task-123", description="Updated description"
TaskList: View all tasks
TaskList // Shows all tasks with statuses
TaskGet: Get specific task details
TaskGet: taskId="task-123"
Create Tasks BEFORE Starting:
Initialize Tasks as step 0 of your workflow, before any actual work begins:
ā
CORRECT - Initialize First:
Step 0: Initialize Tasks
TaskCreate:
subject: "PHASE 1: Gather user inputs"
activeForm: "Gathering inputs"
TaskCreate:
subject: "PHASE 1: Validate inputs"
activeForm: "Validating inputs"
blockedBy: ["phase-1-gather-id"]
TaskCreate:
subject: "PHASE 2: Select AI models"
activeForm: "Selecting models"
TaskCreate:
subject: "PHASE 2: Estimate costs"
activeForm: "Estimating costs"
TaskCreate:
subject: "PHASE 3: Launch parallel reviews"
activeForm: "Launching reviews"
blockedBy: ["phase-2-approve-id"]
TaskCreate:
subject: "PHASE 4: Consolidate reviews"
activeForm: "Consolidating"
TaskCreate:
subject: "PHASE 5: Present results"
activeForm: "Presenting"
Step 1: Start actual work (PHASE 1)
TaskUpdate: taskId="phase-1-gather-id", status="in_progress"
... do work ...
TaskUpdate: taskId="phase-1-gather-id", status="completed"
TaskUpdate: taskId="phase-1-validate-id", status="in_progress"
... do work ...
ā WRONG - Create During Workflow:
Step 1: Do some work
... work happens ...
TaskCreate: subject="Did some work", status="completed"
Step 2: Do more work
... work happens ...
TaskCreate: subject="Did more work", status="completed"
Problem: User has no visibility into upcoming phases
List All Phases Upfront:
When initializing, create all tasks in the workflow, not just the current phase:
ā
CORRECT - Complete Visibility:
TaskCreate: subject="PHASE 1: Gather user inputs"
TaskCreate: subject="PHASE 1: Validate inputs"
TaskCreate: subject="PHASE 2: Architecture planning"
TaskCreate: subject="PHASE 3: Implementation"
TaskCreate: subject="PHASE 3: Run quality checks"
TaskCreate: subject="PHASE 4: Code review"
TaskCreate: subject="PHASE 5: User acceptance"
TaskCreate: subject="PHASE 6: Generate report"
User sees: "8 tasks total, 0 complete, Phase 1 starting"
ā WRONG - Incremental Discovery:
TaskCreate: subject="PHASE 1: Gather user inputs"
TaskCreate: subject="PHASE 1: Validate inputs"
(User thinks workflow is 2 tasks, then surprised by 6 more phases)
Why Initialize First:
One Task Per Significant Operation:
Each task should represent a significant operation (1-5 minutes of work):
ā
CORRECT - Significant Operations:
TaskCreate: subject="PHASE 1: Ask user for inputs", activeForm="Asking user"
TaskCreate: subject="PHASE 2: Generate architecture plan", activeForm="Generating plan"
TaskCreate: subject="PHASE 3: Implement feature", activeForm="Implementing"
TaskCreate: subject="PHASE 4: Run tests", activeForm="Running tests"
TaskCreate: subject="PHASE 5: Code review", activeForm="Reviewing"
Each task = meaningful unit of work
ā WRONG - Too Granular:
TaskCreate: subject="PHASE 1: Ask user question 1"
TaskCreate: subject="PHASE 1: Ask user question 2"
TaskCreate: subject="PHASE 1: Ask user question 3"
TaskCreate: subject="PHASE 2: Read file A"
TaskCreate: subject="PHASE 2: Read file B"
... (50 micro-tasks)
Problem: Too many updates, clutters user interface
Multi-Step Phases: Break Into 2-3 Sub-Tasks:
For complex phases (>5 minutes), break into 2-3 sub-tasks:
ā
CORRECT - Sub-Task Breakdown:
PHASE 3: Implementation (15 min total)
ā Sub-tasks:
TaskCreate: subject="PHASE 3: Implement core logic", activeForm="Implementing core"
TaskCreate: subject="PHASE 3: Add error handling", activeForm="Adding error handling"
TaskCreate: subject="PHASE 3: Write tests", activeForm="Writing tests"
User sees progress within phase: "PHASE 3: 2/3 complete"
ā WRONG - Single Monolithic Task:
TaskCreate: subject="PHASE 3: Implementation"
Problem: User sees "in_progress" for 15 min with no updates
Avoid Too Many Tasks:
Limit to max 15-20 tasks for readability:
ā
CORRECT - 12 Tasks (readable):
10-phase workflow:
TaskCreate: subject="PHASE 1: Ask user"
TaskCreate: subject="PHASE 2: Plan architecture"
TaskCreate: subject="PHASE 2: Review plan"
TaskCreate: subject="PHASE 3: Implement core"
TaskCreate: subject="PHASE 3: Add error handling"
TaskCreate: subject="PHASE 3: Write tests"
TaskCreate: subject="PHASE 4: Test"
TaskCreate: subject="PHASE 5: Review code"
TaskCreate: subject="PHASE 5: Fix issues"
TaskCreate: subject="PHASE 6: Re-review"
TaskCreate: subject="PHASE 7: Accept"
TaskCreate: subject="PHASE 8: Document"
Total: 12 tasks (clean, trackable)
ā WRONG - 50 Tasks (overwhelming):
Every single action as separate task:
TaskCreate: subject="Read file 1"
TaskCreate: subject="Read file 2"
TaskCreate: subject="Write file 3"
... (50 tasks)
Problem: User overwhelmed, can't see forest for trees
Guideline by Workflow Duration:
Workflow Duration ā Task Count:
< 5 minutes: 3-5 tasks
5-15 minutes: 8-12 tasks
15-30 minutes: 12-18 tasks
> 30 minutes: 15-20 tasks (if more, group into phases)
Example:
5-minute workflow (3 phases):
TaskCreate: subject="PHASE 1: Prepare"
TaskCreate: subject="PHASE 2: Execute"
TaskCreate: subject="PHASE 3: Present"
Total: 3 tasks ā
20-minute workflow (6 phases):
TaskCreate: subject="PHASE 1: Ask user"
TaskCreate: subject="PHASE 2: Plan architecture"
TaskCreate: subject="PHASE 2: Review plan"
TaskCreate: subject="PHASE 3: Implement core"
TaskCreate: subject="PHASE 3: Add error handling"
TaskCreate: subject="PHASE 3: Write tests"
TaskCreate: subject="PHASE 4: Test"
TaskCreate: subject="PHASE 5: Review code"
TaskCreate: subject="PHASE 5: Fix issues"
TaskCreate: subject="PHASE 6: Re-review"
TaskCreate: subject="PHASE 7: Accept"
Total: 11 tasks ā
Exactly ONE Task In Progress at a Time:
Maintain the invariant: exactly one task in_progress at any moment:
ā
CORRECT - One In-Progress:
State at time T1:
[ā] PHASE 1: Ask user (completed)
[ā] PHASE 2: Plan (completed)
[ā] PHASE 3: Implement (in_progress) ā Only one
[ ] PHASE 4: Test (pending)
[ ] PHASE 5: Review (pending)
State at time T2 (after PHASE 3 completes):
[ā] PHASE 1: Ask user (completed)
[ā] PHASE 2: Plan (completed)
[ā] PHASE 3: Implement (completed)
[ā] PHASE 4: Test (in_progress) ā Only one
[ ] PHASE 5: Review (pending)
ā WRONG - Multiple In-Progress:
State:
[ā] PHASE 1: Ask user (completed)
[ā] PHASE 2: Plan (in_progress) ā Two in-progress?
[ā] PHASE 3: Implement (in_progress) ā Confusing!
[ ] PHASE 4: Test (pending)
Problem: User confused about current phase
Status Transition Sequence:
Lifecycle of a Task:
1. Created: pending
TaskCreate: subject="PHASE 1: Gather inputs", status="pending"
2. Started: pending ā in_progress
TaskUpdate: taskId="phase-1-id", status="in_progress"
3. Completed: in_progress ā completed
TaskUpdate: taskId="phase-1-id", status="completed"
4. Next task: Mark next task as in_progress
TaskUpdate: taskId="phase-2-id", status="in_progress"
Example Timeline:
T=0s: TaskUpdate: taskId="task-1-id", status="in_progress"
[ā] Task 1 (in_progress), [ ] Task 2 (pending)
T=30s: TaskUpdate: taskId="task-1-id", status="completed"
TaskUpdate: taskId="task-2-id", status="in_progress"
[ā] Task 1 (completed), [ā] Task 2 (in_progress)
T=60s: TaskUpdate: taskId="task-2-id", status="completed"
[ā] Task 1 (completed), [ā] Task 2 (completed)
NEVER Batch Completions:
Mark tasks completed immediately after finishing, not at end of phase:
ā
CORRECT - Immediate Updates:
TaskUpdate: taskId="phase-1-ask-id", status="in_progress"
... do work (30s) ...
TaskUpdate: taskId="phase-1-ask-id", status="completed" ā Immediate
TaskUpdate: taskId="phase-1-validate-id", status="in_progress"
... do work (20s) ...
TaskUpdate: taskId="phase-1-validate-id", status="completed" ā Immediate
User sees real-time progress
ā WRONG - Batched Updates:
TaskUpdate: taskId="phase-1-ask-id", status="in_progress"
... do work (30s) ...
TaskUpdate: taskId="phase-1-validate-id", status="in_progress"
... do work (20s) ...
(At end of PHASE 1, batch update both to completed)
Problem: User doesn't see progress for 50s, thinks workflow is stuck
TaskUpdate As Work Progresses:
Tasks should reflect current state, not past state:
ā
CORRECT - Real-Time Updates:
T=0s: Initialize Tasks (8 tasks, all pending)
T=5s: TaskUpdate: taskId="phase-1-id", status="in_progress"
T=35s: TaskUpdate: taskId="phase-1-id", status="completed"
TaskUpdate: taskId="phase-2-id", status="in_progress"
T=90s: TaskUpdate: taskId="phase-2-id", status="completed"
TaskUpdate: taskId="phase-3-id", status="in_progress"
...
User always sees accurate current state
ā WRONG - Delayed Updates:
T=0s: Initialize Tasks
T=300s: Workflow completes
T=301s: Update all tasks to completed
Problem: No progress visibility for 5 minutes
Add New Tasks If Discovered During Execution:
If you discover additional work during execution, create new tasks:
Scenario: During implementation, realize refactoring needed
Initial Tasks:
[ā] PHASE 1: Plan (completed)
[ā] PHASE 2: Implement (in_progress)
[ ] PHASE 3: Test (pending)
[ ] PHASE 4: Review (pending)
During PHASE 2, discover:
"Implementation requires refactoring legacy code"
TaskUpdate: taskId="phase-2-id", status="completed"
TaskCreate: subject="PHASE 2: Refactor legacy code", activeForm="Refactoring"
TaskUpdate: taskId="new-refactor-id", status="in_progress"
Updated Tasks:
[ā] PHASE 1: Plan
[ā] PHASE 2: Implement core logic
[ā] PHASE 2: Refactor legacy code (in_progress) ā New task
[ ] PHASE 3: Test
[ ] PHASE 4: Review
User sees: "Additional work discovered: refactoring. Total now 5 tasks."
User Can See Current Progress at Any Time:
With real-time updates, user can check progress:
User checks at T=120s:
TaskList shows:
[ā] PHASE 1: Ask user
[ā] PHASE 2: Plan architecture
[ā] PHASE 3: Implement core logic (in_progress)
[ ] PHASE 3: Add error handling
[ ] PHASE 3: Write tests
[ ] PHASE 4: Code review
[ ] PHASE 5: Accept
User sees: "3/7 tasks complete (42.8%), currently implementing core logic"
Create Task Per Iteration:
For iteration loops, create a task for each iteration:
ā
CORRECT - Iteration Tasks:
Design Validation Loop (max 10 iterations):
Initial Tasks:
TaskCreate: subject="Iteration 1/10: Designer validation"
TaskCreate: subject="Iteration 2/10: Designer validation"
TaskCreate: subject="Iteration 3/10: Designer validation"
... (create all 10 upfront)
Progress:
[ā] Iteration 1/10: Designer validation (NEEDS IMPROVEMENT)
[ā] Iteration 2/10: Designer validation (NEEDS IMPROVEMENT)
[ā] Iteration 3/10: Designer validation (in_progress)
[ ] Iteration 4/10: Designer validation
...
User sees: "Iteration 3/10 in progress, 2 complete"
ā WRONG - Single Loop Task:
TaskCreate: subject="Design validation loop"
Problem: User sees "in_progress" for 10 minutes, no iteration visibility
Mark Iteration Complete When Done:
Iteration Lifecycle:
Iteration 1:
TaskUpdate: taskId="iter-1-id", status="in_progress"
Run designer validation
If NEEDS IMPROVEMENT: Run developer fixes
TaskUpdate: taskId="iter-1-id", status="completed"
Iteration 2:
TaskUpdate: taskId="iter-2-id", status="in_progress"
Run designer validation
If PASS: Exit loop early
TaskUpdate: taskId="iter-2-id", status="completed"
Result: Loop exited after 2 iterations
[ā] Iteration 1/10 (completed)
[ā] Iteration 2/10 (completed)
[ ] Iteration 3/10 (not needed, loop exited)
...
User sees: "Loop completed in 2/10 iterations"
Track Total Iterations vs Max Limit:
Iteration Progress:
Max: 10 iterations
Current: 5
TaskList shows:
[ā] Iteration 1/10
[ā] Iteration 2/10
[ā] Iteration 3/10
[ā] Iteration 4/10
[ā] Iteration 5/10
[ ] Iteration 6/10
...
User sees: "Iteration 5/10 (50% through max)"
Warning at Iteration 8:
"Iteration 8/10 - approaching max, may escalate to user if not PASS"
Multiple Agents Executing Simultaneously:
When running agents in parallel, track each separately:
ā
CORRECT - Separate Tasks for Parallel Agents:
Multi-Model Review (3 models in parallel):
TaskCreate: subject="PHASE 1: Prepare review context"
TaskCreate: subject="PHASE 2: Claude review", owner="claude-agent"
TaskCreate: subject="PHASE 2: Grok review", owner="grok-agent"
TaskCreate: subject="PHASE 2: Gemini review", owner="gemini-agent"
TaskCreate: subject="PHASE 3: Consolidate reviews"
Launch parallel reviews:
TaskUpdate: taskId="claude-review-id", status="in_progress"
TaskUpdate: taskId="grok-review-id", status="in_progress"
TaskUpdate: taskId="gemini-review-id", status="in_progress"
State:
[ā] PHASE 1: Prepare review context
[ā] PHASE 2: Claude review (in_progress)
[ā] PHASE 2: Grok review (in_progress)
[ā] PHASE 2: Gemini review (in_progress)
[ ] PHASE 3: Consolidate reviews
Note: 3 tasks "in_progress" is OK for parallel execution
(Exception to "one in_progress" rule)
As models complete:
[ā] PHASE 1: Prepare review context
[ā] PHASE 2: Claude review (completed) ā First to finish
[ā] PHASE 2: Grok review (in_progress)
[ā] PHASE 2: Gemini review (in_progress)
[ ] PHASE 3: Consolidate reviews
User sees: "1/3 reviews complete, 2 in progress"
ā WRONG - Single Task for Parallel Work:
TaskCreate: subject="PHASE 2: Run 3 reviews"
Problem: No visibility into which reviews are complete
Update As Each Agent Completes:
Parallel Execution Timeline:
T=0s: Launch 3 reviews in parallel
TaskUpdate: taskId="claude-id", status="in_progress"
TaskUpdate: taskId="grok-id", status="in_progress"
TaskUpdate: taskId="gemini-id", status="in_progress"
[ā] Claude review (in_progress)
[ā] Grok review (in_progress)
[ā] Gemini review (in_progress)
T=60s: Claude completes first
TaskUpdate: taskId="claude-id", status="completed"
[ā] Claude review (completed)
[ā] Grok review (in_progress)
[ā] Gemini review (in_progress)
T=120s: Gemini completes
TaskUpdate: taskId="gemini-id", status="completed"
[ā] Claude review (completed)
[ā] Grok review (in_progress)
[ā] Gemini review (completed)
T=180s: Grok completes
TaskUpdate: taskId="grok-id", status="completed"
[ā] Claude review (completed)
[ā] Grok review (completed)
[ā] Gemini review (completed)
User sees real-time completion updates
Use blockedBy for Phase Dependencies:
Track which tasks must complete before others can start:
ā
CORRECT - Dependency Tracking:
TaskCreate:
subject: "PHASE 1: Gather requirements"
activeForm: "Gathering requirements"
// Returns taskId: "phase-1-id"
TaskCreate:
subject: "PHASE 2: Design architecture"
activeForm: "Designing"
blockedBy: ["phase-1-id"] ā Blocks until PHASE 1 complete
TaskCreate:
subject: "PHASE 3: Implementation"
activeForm: "Implementing"
blockedBy: ["phase-2-id"] ā Blocks until PHASE 2 complete
When PHASE 1 completes:
TaskUpdate: taskId="phase-1-id", status="completed"
ā PHASE 2 automatically unblocked
Benefits:
- System prevents starting PHASE 2 before PHASE 1 complete
- User sees dependency chain
- Automatic unblocking when prerequisites complete
Parallel Tasks with Shared Blocker:
Multiple tasks can depend on same prerequisite:
TaskCreate:
subject: "PHASE 1: Prepare context"
// Returns: "context-id"
TaskCreate:
subject: "PHASE 2: Claude review"
owner: "claude-agent"
blockedBy: ["context-id"]
TaskCreate:
subject: "PHASE 2: Grok review"
owner: "grok-agent"
blockedBy: ["context-id"]
TaskCreate:
subject: "PHASE 2: Gemini review"
owner: "gemini-agent"
blockedBy: ["context-id"]
When context preparation completes:
TaskUpdate: taskId="context-id", status="completed"
ā All 3 reviews automatically unblocked and can start in parallel
Complex Dependency Chains:
Sequential with parallel phases:
TaskCreate: subject="PHASE 1: Requirements"
ā phase-1-id
TaskCreate: subject="PHASE 2: Design"
blockedBy: ["phase-1-id"]
ā phase-2-id
TaskCreate: subject="PHASE 3: Implement Backend"
owner: "backend-developer"
blockedBy: ["phase-2-id"]
ā backend-id
TaskCreate: subject="PHASE 3: Implement Frontend"
owner: "frontend-developer"
blockedBy: ["phase-2-id"]
ā frontend-id
TaskCreate: subject="PHASE 4: Integration Tests"
blockedBy: ["backend-id", "frontend-id"] ā Waits for both
ā integration-id
Execution:
1. PHASE 1 completes ā Unblocks PHASE 2
2. PHASE 2 completes ā Unblocks Backend + Frontend (parallel)
3. Both Backend + Frontend complete ā Unblocks Integration Tests
Resume Work Across Sessions:
Tasks persist across Claude Code sessions when using CLAUDE_CODE_TASK_LIST_ID:
Session 1 (Initial Implementation):
# Set task list ID for this feature
export CLAUDE_CODE_TASK_LIST_ID=feature-auth
claude
# Create tasks
TaskCreate: subject="PHASE 1: Design auth flow"
TaskCreate: subject="PHASE 2: Implement backend"
TaskCreate: subject="PHASE 3: Implement frontend"
TaskCreate: subject="PHASE 4: Testing"
# Complete PHASE 1
TaskUpdate: taskId="phase-1-id", status="in_progress"
... work ...
TaskUpdate: taskId="phase-1-id", status="completed"
# Start PHASE 2 (not finished)
TaskUpdate: taskId="phase-2-id", status="in_progress"
... partial work ...
exit
---
Session 2 (Resume Later):
# Same task list ID
export CLAUDE_CODE_TASK_LIST_ID=feature-auth
claude
# Tasks still visible!
TaskList shows:
[ā] PHASE 1: Design auth flow (completed)
[ā] PHASE 2: Implement backend (in_progress) ā Resume here
[ ] PHASE 3: Implement frontend
[ ] PHASE 4: Testing
# Continue where left off
... complete PHASE 2 ...
TaskUpdate: taskId="phase-2-id", status="completed"
# Start PHASE 3
TaskUpdate: taskId="phase-3-id", status="in_progress"
Benefits:
Best Practices:
ā
Use meaningful task list IDs:
export CLAUDE_CODE_TASK_LIST_ID=feature-auth
export CLAUDE_CODE_TASK_LIST_ID=bug-payment-failure
export CLAUDE_CODE_TASK_LIST_ID=refactor-api
ā Avoid generic IDs:
export CLAUDE_CODE_TASK_LIST_ID=work
export CLAUDE_CODE_TASK_LIST_ID=tasks
task-orchestration + multi-agent-coordination:
Use Case: Multi-phase implementation workflow
Step 1: Initialize Tasks (task-orchestration)
TaskCreate: subject="PHASE 1: Requirements"
TaskCreate: subject="PHASE 2: Architecture"
TaskCreate: subject="PHASE 3: Backend Implementation"
TaskCreate: subject="PHASE 4: Frontend Implementation"
TaskCreate: subject="PHASE 5: Testing"
... (8 total phases)
Step 2: Sequential Agent Delegation (multi-agent-coordination)
Phase 1: api-architect
TaskUpdate: taskId="phase-1-id", status="in_progress"
Delegate to api-architect
TaskUpdate: taskId="phase-1-id", status="completed"
Phase 2: backend-developer
TaskUpdate: taskId="phase-2-id", status="in_progress"
Delegate to backend-developer
TaskUpdate: taskId="phase-2-id", status="completed"
... continue for all phases
task-orchestration + multi-model-validation:
Use Case: Multi-model review with progress tracking
Step 1: Initialize Tasks (task-orchestration)
TaskCreate: subject="PHASE 1: Prepare context"
TaskCreate: subject="PHASE 2: Claude review", owner="claude"
TaskCreate: subject="PHASE 2: Grok review", owner="grok"
TaskCreate: subject="PHASE 2: Gemini review", owner="gemini"
TaskCreate: subject="PHASE 2: GPT-5 review", owner="gpt"
TaskCreate: subject="PHASE 2: DeepSeek review", owner="deepseek"
TaskCreate: subject="PHASE 3: Consolidate results"
Step 2: Parallel Execution (multi-model-validation)
TaskUpdate: taskId="phase-1-id", status="in_progress"
... prepare context ...
TaskUpdate: taskId="phase-1-id", status="completed"
Launch all 5 models simultaneously
TaskUpdate: taskId="claude-id", status="in_progress"
TaskUpdate: taskId="grok-id", status="in_progress"
... (all 5 in_progress)
As each completes: TaskUpdate with status="completed"
Step 3: Real-Time Visibility (task-orchestration)
User sees: "PHASE 2: 3/5 reviews complete..."
task-orchestration + quality-gates:
Use Case: Iteration loop with Tasks tracking
Step 1: Initialize Tasks (task-orchestration)
TaskCreate: subject="Iteration 1/10: Designer validation"
TaskCreate: subject="Iteration 2/10: Designer validation"
TaskCreate: subject="Iteration 3/10: Designer validation"
... (10 iterations)
Step 2: Iteration Loop (quality-gates)
For i = 1 to 10:
TaskUpdate: taskId="iter-i-id", status="in_progress"
Run designer validation
If PASS: Exit loop
TaskUpdate: taskId="iter-i-id", status="completed"
Step 3: Progress Visibility
User sees: "Iteration 5/10 complete, 5 remaining"
Do:
Don't:
Performance:
Scenario: Full-cycle implementation with Tasks tracking
Execution:
Step 0: Initialize Tasks
TaskCreate:
subject: "PHASE 1: Ask user for requirements"
activeForm: "Asking user"
// Returns: "phase-1-id"
TaskCreate:
subject: "PHASE 2: Generate architecture plan"
activeForm: "Generating plan"
blockedBy: ["phase-1-id"]
// Returns: "phase-2-id"
TaskCreate:
subject: "PHASE 3: Implement core logic"
activeForm: "Implementing core"
blockedBy: ["phase-2-id"]
// Returns: "phase-3a-id"
TaskCreate:
subject: "PHASE 3: Add error handling"
activeForm: "Adding error handling"
blockedBy: ["phase-3a-id"]
// Returns: "phase-3b-id"
TaskCreate:
subject: "PHASE 3: Write tests"
activeForm: "Writing tests"
blockedBy: ["phase-3b-id"]
// Returns: "phase-3c-id"
TaskCreate:
subject: "PHASE 4: Run test suite"
activeForm: "Running tests"
blockedBy: ["phase-3c-id"]
// Returns: "phase-4-id"
TaskCreate:
subject: "PHASE 5: Code review"
activeForm: "Reviewing"
blockedBy: ["phase-4-id"]
// Returns: "phase-5-id"
TaskCreate:
subject: "PHASE 6: Fix review issues"
activeForm: "Fixing issues"
blockedBy: ["phase-5-id"]
// Returns: "phase-6-id"
TaskCreate:
subject: "PHASE 7: User acceptance"
activeForm: "User validating"
blockedBy: ["phase-6-id"]
// Returns: "phase-7-id"
TaskCreate:
subject: "PHASE 8: Generate report"
activeForm: "Generating report"
blockedBy: ["phase-7-id"]
// Returns: "phase-8-id"
User sees: "10 tasks, 0 complete, Phase 1 starting..."
---
Step 1: PHASE 1
TaskUpdate: taskId="phase-1-id", status="in_progress"
... gather requirements (30s) ...
TaskUpdate: taskId="phase-1-id", status="completed"
ā Automatically unblocks PHASE 2
User sees: "1/10 tasks complete (10%)"
---
Step 2: PHASE 2
TaskUpdate: taskId="phase-2-id", status="in_progress"
... generate plan (2 min) ...
TaskUpdate: taskId="phase-2-id", status="completed"
ā Automatically unblocks PHASE 3
User sees: "2/10 tasks complete (20%)"
---
Step 3: PHASE 3 (3 sub-tasks)
TaskUpdate: taskId="phase-3a-id", status="in_progress"
... implement core (3 min) ...
TaskUpdate: taskId="phase-3a-id", status="completed"
ā Automatically unblocks "Add error handling"
User sees: "3/10 tasks complete (30%)"
TaskUpdate: taskId="phase-3b-id", status="in_progress"
... add error handling (2 min) ...
TaskUpdate: taskId="phase-3b-id", status="completed"
ā Automatically unblocks "Write tests"
User sees: "4/10 tasks complete (40%)"
TaskUpdate: taskId="phase-3c-id", status="in_progress"
... write tests (3 min) ...
TaskUpdate: taskId="phase-3c-id", status="completed"
ā Automatically unblocks PHASE 4
User sees: "5/10 tasks complete (50%)"
---
... continue through all phases ...
---
Final State:
TaskList shows:
[ā] PHASE 1: Ask user for requirements
[ā] PHASE 2: Generate architecture plan
[ā] PHASE 3: Implement core logic
[ā] PHASE 3: Add error handling
[ā] PHASE 3: Write tests
[ā] PHASE 4: Run test suite
[ā] PHASE 5: Code review
[ā] PHASE 6: Fix review issues
[ā] PHASE 7: User acceptance
[ā] PHASE 8: Generate report
User sees: "10/10 tasks complete (100%). Workflow finished!"
Total Duration: ~15 minutes
User Experience: Continuous progress updates every 1-3 minutes
Scenario: Design validation with 10 max iterations
Execution:
Step 0: Initialize Tasks
TaskCreate:
subject: "PHASE 1: Gather design reference"
activeForm: "Gathering design"
// Returns: "phase-1-id"
TaskCreate:
subject: "Iteration 1/10: Designer validation"
activeForm: "Designer validating (iter 1)"
blockedBy: ["phase-1-id"]
// Returns: "iter-1-id"
TaskCreate:
subject: "Iteration 2/10: Designer validation"
activeForm: "Designer validating (iter 2)"
// Returns: "iter-2-id"
TaskCreate:
subject: "Iteration 3/10: Designer validation"
activeForm: "Designer validating (iter 3)"
// Returns: "iter-3-id"
... (create all 10 iterations) ...
TaskCreate:
subject: "PHASE 3: User validation gate"
activeForm: "User validating"
// Returns: "phase-3-id"
---
Step 1: PHASE 1
TaskUpdate: taskId="phase-1-id", status="in_progress"
... gather design (20s) ...
TaskUpdate: taskId="phase-1-id", status="completed"
ā Unblocks Iteration 1
---
Step 2: Iteration Loop
Iteration 1:
TaskUpdate: taskId="iter-1-id", status="in_progress"
Designer: "NEEDS IMPROVEMENT - 5 issues"
Developer: Fix 5 issues
TaskUpdate: taskId="iter-1-id", status="completed"
User sees: "Iteration 1/10 complete, 5 issues fixed"
Iteration 2:
TaskUpdate: taskId="iter-2-id", status="in_progress"
Designer: "NEEDS IMPROVEMENT - 3 issues"
Developer: Fix 3 issues
TaskUpdate: taskId="iter-2-id", status="completed"
User sees: "Iteration 2/10 complete, 3 issues fixed"
Iteration 3:
TaskUpdate: taskId="iter-3-id", status="in_progress"
Designer: "NEEDS IMPROVEMENT - 1 issue"
Developer: Fix 1 issue
TaskUpdate: taskId="iter-3-id", status="completed"
User sees: "Iteration 3/10 complete, 1 issue fixed"
Iteration 4:
TaskUpdate: taskId="iter-4-id", status="in_progress"
Designer: "PASS ā"
TaskUpdate: taskId="iter-4-id", status="completed"
Exit loop (early exit)
User sees: "Loop completed in 4/10 iterations"
---
Step 3: PHASE 3
TaskUpdate: taskId="phase-3-id", status="in_progress"
... user validates ...
TaskUpdate: taskId="phase-3-id", status="completed"
---
Final State:
TaskList shows:
[ā] PHASE 1: Gather design
[ā] Iteration 1/10 (5 issues fixed)
[ā] Iteration 2/10 (3 issues fixed)
[ā] Iteration 3/10 (1 issue fixed)
[ā] Iteration 4/10 (PASS)
[ ] Iteration 5/10 (not needed)
[ ] Iteration 6/10 (not needed)
... (iterations 5-10 skipped)
[ā] PHASE 3: User validation
User Experience: Clear iteration progress, early exit visible
Scenario: 5 AI models reviewing code in parallel
Execution:
Step 0: Initialize Tasks
TaskCreate:
subject: "PHASE 1: Prepare review context"
activeForm: "Preparing context"
// Returns: "phase-1-id"
TaskCreate:
subject: "PHASE 2: Claude review"
owner: "claude-agent"
activeForm: "Claude reviewing"
blockedBy: ["phase-1-id"]
// Returns: "claude-id"
TaskCreate:
subject: "PHASE 2: Grok review"
owner: "grok-agent"
activeForm: "Grok reviewing"
blockedBy: ["phase-1-id"]
// Returns: "grok-id"
TaskCreate:
subject: "PHASE 2: Gemini review"
owner: "gemini-agent"
activeForm: "Gemini reviewing"
blockedBy: ["phase-1-id"]
// Returns: "gemini-id"
TaskCreate:
subject: "PHASE 2: GPT-5 review"
owner: "gpt-agent"
activeForm: "GPT-5 reviewing"
blockedBy: ["phase-1-id"]
// Returns: "gpt-id"
TaskCreate:
subject: "PHASE 2: DeepSeek review"
owner: "deepseek-agent"
activeForm: "DeepSeek reviewing"
blockedBy: ["phase-1-id"]
// Returns: "deepseek-id"
TaskCreate:
subject: "PHASE 3: Consolidate reviews"
activeForm: "Consolidating"
blockedBy: ["claude-id", "grok-id", "gemini-id", "gpt-id", "deepseek-id"]
// Returns: "phase-3-id"
TaskCreate:
subject: "PHASE 4: Present results"
activeForm: "Presenting"
blockedBy: ["phase-3-id"]
// Returns: "phase-4-id"
---
Step 1: PHASE 1
TaskUpdate: taskId="phase-1-id", status="in_progress"
... prepare context (30s) ...
TaskUpdate: taskId="phase-1-id", status="completed"
ā Unblocks all 5 review tasks
---
Step 2: PHASE 2 (Parallel Execution)
Launch all 5 in parallel:
TaskUpdate: taskId="claude-id", status="in_progress"
TaskUpdate: taskId="grok-id", status="in_progress"
TaskUpdate: taskId="gemini-id", status="in_progress"
TaskUpdate: taskId="gpt-id", status="in_progress"
TaskUpdate: taskId="deepseek-id", status="in_progress"
TaskList shows:
[ā] PHASE 1: Prepare context
[ā] PHASE 2: Claude review (in_progress)
[ā] PHASE 2: Grok review (in_progress)
[ā] PHASE 2: Gemini review (in_progress)
[ā] PHASE 2: GPT-5 review (in_progress)
[ā] PHASE 2: DeepSeek review (in_progress)
[ ] PHASE 3: Consolidate reviews (blocked)
[ ] PHASE 4: Present results (blocked)
Launch all 5 models (4-Message Pattern for parallel execution)
As each completes:
T=60s: Claude completes first
TaskUpdate: taskId="claude-id", status="completed"
User sees: "1/5 reviews complete"
T=90s: Gemini completes
TaskUpdate: taskId="gemini-id", status="completed"
User sees: "2/5 reviews complete"
T=120s: GPT-5 completes
TaskUpdate: taskId="gpt-id", status="completed"
User sees: "3/5 reviews complete"
T=150s: Grok completes
TaskUpdate: taskId="grok-id", status="completed"
User sees: "4/5 reviews complete"
T=180s: DeepSeek completes
TaskUpdate: taskId="deepseek-id", status="completed"
User sees: "5/5 reviews complete!"
ā Automatically unblocks PHASE 3
---
Step 3: PHASE 3
TaskUpdate: taskId="phase-3-id", status="in_progress"
... consolidate reviews (30s) ...
TaskUpdate: taskId="phase-3-id", status="completed"
ā Automatically unblocks PHASE 4
---
Step 4: PHASE 4
TaskUpdate: taskId="phase-4-id", status="in_progress"
... present results (10s) ...
TaskUpdate: taskId="phase-4-id", status="completed"
---
Final State:
TaskList shows:
[ā] PHASE 1: Prepare review context
[ā] PHASE 2: Claude review
[ā] PHASE 2: Grok review
[ā] PHASE 2: Gemini review
[ā] PHASE 2: GPT-5 review
[ā] PHASE 2: DeepSeek review
[ā] PHASE 3: Consolidate reviews
[ā] PHASE 4: Present results
User sees: "Multi-model review complete in 3 minutes"
User Experience:
- Real-time progress as each model completes
- Clear visibility: "3/5 reviews complete"
- Automatic phase progression when all reviews done
- Reduces perceived wait time (user knows progress)
Problem: User thinks workflow is stuck
Cause: No task updates for >1 minute
Solution: TaskUpdate more frequently, or add sub-tasks
ā Wrong:
[ā] PHASE 3: Implementation (in_progress for 10 minutes)
ā
Correct:
[ā] PHASE 3: Implement core logic (2 min)
[ā] PHASE 3: Add error handling (3 min)
[ā] PHASE 3: Write tests (in_progress, 2 min so far)
User sees progress every 2-3 minutes
Problem: Too many tasks (>20), overwhelming
Cause: Too granular task breakdown
Solution: Group micro-tasks into larger operations
ā Wrong (25 tasks):
TaskCreate: subject="Read file 1"
TaskCreate: subject="Read file 2"
TaskCreate: subject="Write file 3"
... (25 micro-tasks)
ā
Correct (8 tasks):
TaskCreate: subject="PHASE 1: Gather inputs" (includes reading files)
TaskCreate: subject="PHASE 2: Process data"
... (8 significant operations)
Problem: Multiple tasks "in_progress" (not parallel execution)
Cause: Forgot to mark previous task as completed
Solution: Always TaskUpdate to completed before starting next
ā Wrong:
[ā] PHASE 1: Ask user (in_progress)
[ā] PHASE 2: Plan (in_progress) ā Both in_progress?
ā
Correct:
TaskUpdate: taskId="phase-1-id", status="completed"
TaskUpdate: taskId="phase-2-id", status="in_progress"
[ā] PHASE 1: Ask user (completed)
[ā] PHASE 2: Plan (in_progress) ā Only one
Task orchestration provides real-time progress visibility through:
Master these patterns and users will always know:
This transforms "black box" workflows into transparent, trackable processes.
Extracted From:
/review command (10-task initialization, phase-based tracking)/implement command (8-phase workflow with sub-tasks)/validate-ui command (iteration tracking, user feedback rounds)