Skip to main content
command

move — Claude Code command: what it does, how to install

Moves tasks across status folders while updating trackers and task metadata. Use it when a workflow needs explicit transitions between work and QA stages.

Install into Claude Code · claude-code-templates All methods and platforms ↓
npx claude-code-templates@latest --command orchestration/move
Open on GitHub

What move does

The /task-move slash command moves a task file among todos, in_progress, qa, completed, and on_hold. It also changes the entry in TASK-STATUS-TRACKER.yaml, the status field in the task file, and the execution tracker. Moves are atomic, and status history remains permanent.

Before changing a task, the command checks that the file exists, the transition is allowed, dependencies are satisfied, and the assigned agent has no conflicting work. It accepts reasons and supports dry runs, agent assignment, time estimates, bulk selection, filters, and patterns.

A task cannot move from completed back to todos because completed is terminal. The command also supports scheduled, conditional, and automatic progression, while the agent name comes from the current context.

What it helps with

  • move a task between status folders
  • validate transitions and dependency state
  • record why work is blocked or returned from QA
  • keep task metadata and progress trackers aligned
  • batch-move tasks with filters or patterns

Example prompts for the agent

  • Start work with /task-move TASK-001 in_progress
  • Send a task to QA with /task-move TASK-001 qa "Ready for testing"
  • Preview a completion move using /task-move TASK-001 completed --dry-run

How to install move

1claude-code-templates

npx claude-code-templates@latest --command orchestration/move

2Manually: put the files in place

.claude/commands/move.md

Call it with /move. For all projects use ~/.claude/commands/

Questions about move

How do I install move in Claude Code?

Run npx claude-code-templates@latest --command orchestration/move, then use .claude/commands/move.md.

What does the move command do?

It relocates task files between status folders, updates trackers and metadata, and validates the requested transition, dependencies, and task existence.

Can move handle several tasks at once?

Yes. Pass comma-separated task IDs, a filter, or a pattern, such as /task-move TASK-001,TASK-002,TASK-003 in_progress.

Source text

move.md · MIT
---
description: "Move tasks between status folders following the task management protocol."
---

# Task Move Command

Move tasks between status folders following the task management protocol.

## Usage

```
/task-move TASK-ID new-status [reason]
```

## Description

Updates task status by moving files between status folders and updating tracking information. Follows all protocol rules including validation and audit trails.

## Basic Commands

### Start Working on a Task
```
/task-move TASK-001 in_progress
```
Moves from todos → in_progress

### Complete Implementation
```
/task-move TASK-001 qa "Implementation complete, ready for testing"
```
Moves from in_progress → qa

### Task Passed QA
```
/task-move TASK-001 completed "All tests passed"
```
Moves from qa → completed

### Block a Task
```
/task-move TASK-004 on_hold "Waiting for TASK-001 API completion"
```
Moves to on_hold with reason

### Unblock a Task
```
/task-move TASK-004 todos "Dependencies resolved"
```
Moves from on_hold → todos

### Failed QA
```
/task-move TASK-001 in_progress "Failed integration test - fixing null pointer"
```
Moves from qa → in_progress

## Bulk Operations

### Move Multiple Tasks
```
/task-move TASK-001,TASK-002,TASK-003 in_progress
```

### Move by Filter
```
/task-move --filter "priority:high status:todos" in_progress
```

### Move with Pattern
```
/task-move TASK-00* qa "Batch testing ready"
```

## Validation Rules

The command enforces:
1. **Valid Transitions**: Only allowed status changes
2. **One Task Per Agent**: Warns if agent has task in_progress
3. **Dependency Check**: Warns if dependencies not met
4. **File Existence**: Verifies task exists before moving

## Status Transition Map

```
todos ──────→ in_progress ──────→ qa ──────→ completed
  ↓               ↓               ↓
  └───────────→ on_hold ←─────────┘
                  ↓
                todos/in_progress
```

## Options

### Force Move
```
/task-move TASK-001 completed --force
```
Bypasses validation (use with caution)

### Dry Run
```
/task-move TASK-001 qa --dry-run
```
Shows what would happen without executing

### With Assignment
```
/task-move TASK-001 in_progress --assign dev-frontend
```
Assigns task to specific agent

### With Time Estimate
```
/task-move TASK-001 in_progress --estimate 4h
```
Updates time estimate when starting

## Error Handling

### Task Not Found
```
Error: TASK-999 not found in any status folder
Suggestion: Use /task-status to see available tasks
```

### Invalid Transition
```
Error: Cannot move from 'completed' to 'todos'
Valid transitions from completed: None (terminal state)
```

### Agent Conflict
```
Warning: dev-frontend already has TASK-002 in progress
Continue? (y/n)
```

### Dependency Block
```
Warning: TASK-004 depends on TASK-001 (currently in_progress)
Moving to on_hold instead? (y/n)
```

## Automation

### Auto-move on Completion
```
/task-move TASK-001 --auto-progress
```
Automatically moves to next status when conditions met

### Scheduled Moves
```
/task-move TASK-005 in_progress --at "tomorrow 9am"
```

### Conditional Moves
```
/task-move TASK-007 qa --when "TASK-006 completed"
```

## Examples

### Example 1: Developer Workflow
```
# 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"
```

### Example 2: Handling Blocks
```
# 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"
```

### Example 3: QA Workflow
```
# 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"
```

## Status Update Details

Each move updates:
1. **File Location**: Physical file movement
2. **Status Tracker**: TASK-STATUS-TRACKER.yaml entry
3. **Task Metadata**: Status field in task file
4. **Execution Tracker**: Overall progress metrics

## Best Practices

1. **Always Provide Reasons**: Especially for blocks and failures
2. **Check Dependencies**: Before moving to in_progress
3. **Update Estimates**: When starting work
4. **Clear Block Reasons**: Help others understand delays

## Integration

- Use after `/task-status` to see available tasks
- Updates reflected in `/task-report`
- Triggers notifications if configured
- Logs all moves for audit trail

## Notes

- 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

© davila7 · MIT · davila7/claude-code-templates

Similar slash commands

All slash commands for Agent setup: memory, context, orchestration →

From the same set804

The whole set →

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor