Move tasks between status folders following the task management protocol.
/task-move TASK-ID new-status [reason]
Updates task status by moving files between status folders and updating tracking information. Follows all protocol rules including validation and audit trails.
/task-move TASK-001 in_progress
Moves from todos → in_progress
/task-move TASK-001 qa "Implementation complete, ready for testing"
Moves from in_progress → qa
/task-move TASK-001 completed "All tests passed"
Moves from qa → completed
/task-move TASK-004 on_hold "Waiting for TASK-001 API completion"
Moves to on_hold with reason
/task-move TASK-004 todos "Dependencies resolved"
Moves from on_hold → todos
/task-move TASK-001 in_progress "Failed integration test - fixing null pointer"
Moves from qa → in_progress
/task-move TASK-001,TASK-002,TASK-003 in_progress
/task-move --filter "priority:high status:todos" in_progress
/task-move TASK-00* qa "Batch testing ready"
The command enforces:
- Valid Transitions: Only allowed status changes
- One Task Per Agent: Warns if agent has task in_progress
- Dependency Check: Warns if dependencies not met
- File Existence: Verifies task exists before moving
todos ──────→ in_progress ──────→ qa ──────→ completed
↓ ↓ ↓
└───────────→ on_hold ←─────────┘
↓
todos/in_progress
/task-move TASK-001 completed --force
Bypasses validation (use with caution)
/task-move TASK-001 qa --dry-run
Shows what would happen without executing
/task-move TASK-001 in_progress --assign dev-frontend
Assigns task to specific agent
/task-move TASK-001 in_progress --estimate 4h
Updates time estimate when starting
Error: TASK-999 not found in any status folder
Suggestion: Use /task-status to see available tasks
Error: Cannot move from 'completed' to 'todos'
Valid transitions from completed: None (terminal state)
Warning: dev-frontend already has TASK-002 in progress
Continue? (y/n)
Warning: TASK-004 depends on TASK-001 (currently in_progress)
Moving to on_hold instead? (y/n)
/task-move TASK-001 --auto-progress
Automatically moves to next status when conditions met
/task-move TASK-005 in_progress --at "tomorrow 9am"
/task-move TASK-007 qa --when "TASK-006 completed"
# Start work
/task-move TASK-001 in_progress
# Complete and test
/task-move TASK-001 qa "Implementation done, tests passing"
# After review
/task-move TASK-001 completed "Code review approved"
# Block due to dependency
/task-move TASK-004 on_hold "Waiting for auth API from TASK-001"
# Unblock when ready
/task-move TASK-004 todos "TASK-001 now in QA, API available"
# QA picks up task
/task-move TASK-001 qa --assign qa-engineer
# Found issues
/task-move TASK-001 in_progress "Bug: handling empty responses"
# Fixed and retesting
/task-move TASK-001 qa "Bug fixed, ready for retest"
Each move updates:
- File Location: Physical file movement
- Status Tracker: TASK-STATUS-TRACKER.yaml entry
- Task Metadata: Status field in task file
- Execution Tracker: Overall progress metrics
- Always Provide Reasons: Especially for blocks and failures
- Check Dependencies: Before moving to in_progress
- Update Estimates: When starting work
- Clear Block Reasons: Help others understand delays
- Use after
/task-statusto see available tasks - Updates reflected in
/task-report - Triggers notifications if configured
- Logs all moves for audit trail
- Moves are atomic - either fully complete or rolled back
- Status history is permanent and cannot be edited
- Timestamp uses current time in ISO-8601 format
- Agent name is automatically detected from context