You are executing the /session:plan-update command to modify an existing plan. **NOTE:** Plans are now global and independent of sessions. **CRITICAL - Command Format:** All session plugin commands use the `/session:` prefix. DO NOT suggest commands without this prefix. - ✅ Correct: `/session:plan-execute`, `/session:plan-status`, `/session:plan-finalize`, `/session:plan-list`, `/session:plan-update` - ❌ Wrong: `/plan-execute`, `/plan-status`, `/plan-show`, `/plan-list`, `/plan-update` Use ONLY the exact command formats specified in this template. ## Arguments Parsed from user input: - `plan_name`: {name} (required - the plan to update) - `update_request`: {request} (optional - natural language description of changes) ARGUMENTS: {name} {request} ## Workflow ### Step 1: Validate Plan Exists ```bash node ${CLAUDE_PLUGIN_ROOT}/cli/session-cli.js plan-exists {plan_name} ``` If the plan doesn't exist, show error and STOP: ``` ❌ Error: Plan '{plan_name}' not found Use /session:plan-list to see available plans. Use /session:plan-save {name} to create a new plan. ``` ### Step 2: Load Current Plan State Get the current plan state for preview generation: ```bash node ${CLAUDE_PLUGIN_ROOT}/cli/session-cli.js plan-status {plan_name} ``` This returns JSON with plan metadata, phases, tasks, and execution state. ### Step 3: Parse Update Request If `update_request` is provided, parse it into structured operations. **Common Update Patterns:** | Natural Language | Operation | |-----------------|-----------| | "add a new task to phase X" | `{ type: 'add', target: 'task', data: {...} }` | | "remove task-2-3" | `{ type: 'delete', target: 'task', data: { id: 'task-2-3' } }` | | "rename phase 1 to 'Setup'" | `{ type: 'update', target: 'phase', data: { id: 'phase-1', name: 'Setup' } }` | | "mark task-1-1 as completed" | `{ type: 'update', target: 'task', data: { id: 'task-1-1', status: 'completed' } }` | | "add a new phase called Testing" | `{ type: 'add', target: 'phase', data: { name: 'Testing' } }` | If no `update_request` is provided, prompt the user: ``` What changes would you like to make to plan '{plan_name}'? Examples: - "add a new task 'Write unit tests' to phase 2" - "remove the documentation phase" - "rename task-3-1 to 'API integration'" - "mark phase 1 as completed" Enter your update request: ``` ### Step 4: Check Execution State Determine if the plan is being executed: ```bash node ${CLAUDE_PLUGIN_ROOT}/cli/session-cli.js get-execution-state {plan_name} ``` **If plan has started execution:** Show mode selection: ``` ⚠️ Plan '{plan_name}' is currently being executed. Progress: {completed}/{total} tasks ({percentage}%) Completed phases: {completed_phases} Current phase: {current_phase} How would you like to proceed? 1. [selective] Apply changes to pending tasks only (recommended) - Completed work is preserved - Only pending tasks/phases can be modified - May need --force for some operations 2. [rollback] Reset and replan (full update) - All progress will be reset to pending - Execution history is preserved in logs - Start fresh with updated plan 3. [cancel] Cancel update Choice [1/2/3]: ``` ### Step 5: Generate Preview Show what changes will be made: ``` ╔══════════════════════╗ ║ Plan Update Preview ║ ╚══════════════════════╝ Plan: {plan_name} Mode: {selective|rollback} ─── Summary ──────────────────────────────────────────── Operations: {count} + Additions: {add_count} ~ Updates: {update_count} - Deletions: {delete_count} ─── Operations ───────────────────────────────────────── + [1] ADD task: "Write unit tests" Phase: phase-2-implementation Description: Create comprehensive test suite ~ [2] UPDATE task: task-3-1 description: "API endpoints" → "API integration" - [3] DELETE phase: phase-4-documentation ⚠ Contains 3 tasks that will also be deleted ─── Warnings ─────────────────────────────────────────── ⚠ Deleting phase with completed tasks - use --force ⚠ Some operations affect completed work ─── Safety Notices ───────────────────────────────────── ⚠ DESTRUCTIVE: This update includes 1 deletion(s) ``` ### Step 6: Confirm with User ``` Apply these changes? [+1 ~1 -1] [y] Yes, apply changes [n] No, cancel [e] Edit operations [?] Show help Choice: ``` **If user chooses 'e' (edit):** ``` --- Edit Mode --- Operations: [1] ADD task: "Write unit tests" [2] UPDATE task: task-3-1 [3] DELETE phase: phase-4-documentation Commands: remove - Remove operation #n done - Finish editing and confirm cancel - Cancel all changes Edit> ``` ### Step 7: Execute Update Based on mode selection: **For selective mode:** ```bash node ${CLAUDE_PLUGIN_ROOT}/cli/session-cli.js plan-update-selective {plan_name} --operations '{operations_json}' ``` **For rollback mode:** ```bash node ${CLAUDE_PLUGIN_ROOT}/cli/session-cli.js plan-update-rollback {plan_name} --operations '{operations_json}' ``` ### Step 8: Report Results **Success:** ``` ✅ Plan Updated Successfully Plan: {plan_name} Mode: {mode} Changes Applied: + Added 1 task ~ Updated 1 task - Deleted 1 phase (3 tasks removed) Updated Progress: {new_completed}/{new_total} tasks Next Steps: /session:plan-status {plan_name} - View updated plan /session:plan-execute {plan_name} - Continue execution ``` **Partial Success (selective mode):** ``` ⚠️ Plan Partially Updated Applied: 2 operations Skipped: 1 operation (affects completed work) Skipped Operations: - DELETE phase: phase-1-setup (completed, requires --force) To apply skipped operations, use: /session:plan-update {plan_name} --force ``` **Failure:** ``` ❌ Update Failed Error: {error_message} Details: - Operation 3 failed: {reason} - Validation error: {details} Recovery: - Backup created at: .claude/plans/{plan_name}/.backups/backup-{timestamp} - To restore: /session:plan-restore {plan_name} {backup_name} ``` --- ## Quick Update Examples ### Add a Task ``` /session:plan-update my-plan add a new task "Implement caching" to phase-2 ``` ### Remove a Task ``` /session:plan-update my-plan remove task-3-2 ``` ### Rename a Phase ``` /session:plan-update my-plan rename phase-1 to "Infrastructure Setup" ``` ### Mark Task Complete ``` /session:plan-update my-plan mark task-2-1 as completed ``` ### Add a New Phase ``` /session:plan-update my-plan add a new phase called "Performance Testing" after phase-3 ``` ### Force Update (completed items) ``` /session:plan-update my-plan remove task-1-1 --force ``` --- ## Command Options | Option | Description | |--------|-------------| | `--force` | Allow modifications to completed items | | `--yes` | Skip confirmation prompt | | `--dry-run` | Preview changes without applying | | `--mode selective` | Only update pending items (default for executing plans) | | `--mode rollback` | Reset progress and apply all changes | | `--json` | Output results as JSON | --- ## Error Handling ### Plan Not Found ``` ❌ Error: Plan 'unknown-plan' not found Available plans: - my-feature (in-progress, 45%) - refactor-api (pending, 0%) Use /session:plan-list for full details. ``` ### Invalid Operation ``` ❌ Error: Could not parse update request Input: "do something to the plan" Could not determine: - Operation type (add, remove, update?) - Target (phase, task?) Try being more specific: - "add a task called 'X' to phase Y" - "remove task-1-2" - "rename phase-1 to 'New Name'" ``` ### Blocked by Execution State ``` ❌ Error: Cannot modify in-progress task Task 'task-2-3' is currently in progress. Wait for completion or use rollback mode. Options: 1. Wait for task to complete 2. Use /session:plan-update {plan} --mode rollback ``` ### Validation Error ``` ❌ Error: Invalid operation Cannot add task with duplicate ID 'task-1-1' A task with this ID already exists in phase-1. Suggestion: Let the system generate a unique ID automatically. ``` --- ## Related Commands - `/session:plan-status {name}` - View current plan status - `/session:plan-execute {name}` - Execute plan tasks - `/session:plan-list` - List all plans - `/session:plan-save {name}` - Create new plan - `/session:plan-finalize {name}` - Finalize conceptual plan