name: manage-lifecycle description: Manage plan lifecycle with status.toon and phase operations allowed-tools: Read, Glob, Bash
Manage Lifecycle Skill
Manage plan lifecycle with status.toon and phase operations. Replaces plan.md and absorbs phase-management skill functionality.
What This Skill Provides
- Status.toon CRUD operations
- Phase management (transitions, progress)
- Plan discovery (list all plans)
- Phase routing (skill mapping)
- Delete operations (via manage-files)
- Archive operations
When to Activate This Skill
Activate this skill when:
- Creating or updating plan status
- Transitioning between phases
- Discovering all plans
- Deleting plans (to replace or abandon)
- Archiving completed plans
Storage Location
Status is stored in the plan directory:
.plan/plans/{plan_id}/status.toon
Archived plans:
.plan/archived-plans/{yyyy-mm-dd}-{plan-name}/
File Format
TOON format with phases table:
title: Implement JWT Authentication
current_phase: 4-execute
phases[5]{name,status}:
1-init,done
2-outline,done
3-plan,done
4-execute,in_progress
5-finalize,pending
created: 2025-12-02T10:00:00Z
updated: 2025-12-02T14:30:00Z
Status Fields
| Field | Description |
|---|---|
title | Plan title |
current_phase | Current active phase |
phases | Table of phase names and statuses |
created | ISO timestamp when created |
updated | ISO timestamp of last update |
Note: Domain information is stored in config.toon (as a domains array), not in status.toon.
Phase Statuses
| Status | Meaning |
|---|---|
pending | Not started |
in_progress | Currently active |
done | Completed |
Status Operations
Script: pm-workflow:manage-lifecycle:manage-lifecycle
read
Read plan status.
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle read \
--plan-id {plan_id}
Output (TOON):
status: success
plan_id: my-feature
plan:
title: Implement JWT Authentication
current_phase: 4-execute
phases[5]{name,status}:
1-init,done
2-outline,done
3-plan,done
4-execute,in_progress
5-finalize,pending
create
Initialize status.toon for a new plan.
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle create \
--plan-id {plan_id} \
--title "Feature Title" \
--phases 1-init,2-outline,3-plan,4-execute,5-finalize \
[--force]
Parameters:
--plan-id(required): Plan identifier (kebab-case)--title(required): Plan title--phases(required): Comma-separated phase names--force: Overwrite existing status.toon
Output (TOON):
status: success
plan_id: my-feature
file: status.toon
created: true
plan:
title: Feature Title
current_phase: 1-init
set-phase
Set the current phase.
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle set-phase \
--plan-id {plan_id} \
--phase 4-execute
Output (TOON):
status: success
plan_id: my-feature
current_phase: 4-execute
previous_phase: 3-plan
update-phase
Update a specific phase status.
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle update-phase \
--plan-id {plan_id} \
--phase 1-init \
--status done
Output (TOON):
status: success
plan_id: my-feature
phase: 1-init
phase_status: done
progress
Calculate plan progress.
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle progress \
--plan-id {plan_id}
Output (TOON):
status: success
plan_id: my-feature
progress:
total_phases: 5
completed_phases: 3
current_phase: 4-execute
percent: 60
Phase Management Operations
list
Discover all plans.
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle list \
[--filter 1-init,4-execute]
Parameters:
--filter: Filter by phases (comma-separated)
Output (TOON):
status: success
total: 2
plans:
- id: my-feature
current_phase: 4-execute
status: in_progress
- id: bug-fix-123
current_phase: 1-init
status: in_progress
transition
Transition to next phase.
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle transition \
--plan-id {plan_id} \
--completed 1-init
Output (TOON):
status: success
plan_id: my-feature
completed_phase: 1-init
next_phase: 2-outline
archive
Archive a completed plan.
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle archive \
--plan-id {plan_id} \
[--dry-run]
Output (TOON):
status: success
plan_id: my-feature
archived_to: .plan/archived-plans/2025-12-02-my-feature/
Delete Operations
Delete operations use pm-workflow:manage-files:manage-files (not manage-lifecycle) because deletion involves removing plan directories, not just status management.
delete-plan
Delete an entire plan directory. Use when:
- Replacing an existing plan with a fresh one
- Abandoning a plan that's no longer needed
- Cleaning up failed or corrupted plans
python3 .plan/execute-script.py pm-workflow:manage-files:manage-files delete-plan \
--plan-id {plan_id}
Parameters:
--plan-id(required): Plan identifier to delete
Output (TOON):
status: success
plan_id: my-feature
action: deleted
path: .plan/plans/my-feature
files_removed: 7
Error Output:
status: error
plan_id: my-feature
error: plan_not_found
message: Plan directory does not exist
Safety Notes:
- Only deletes directories under
.plan/plans/ - Validates plan_id format (kebab-case)
- Does NOT prompt for confirmation (caller handles user confirmation)
- Cannot be undone - ensure user confirms before calling
Delete vs Archive
| Operation | Use Case | Recoverable |
|---|---|---|
delete-plan | Replace, abandon, cleanup | No |
archive | Completed plans for reference | Yes (moved to archived-plans) |
route
Get skill for a phase.
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle route \
--phase 4-execute
Parameters:
--phase(required): Phase name (e.g., 1-init, 2-outline, 3-plan, 4-execute, 5-finalize)
Output (TOON):
status: success
phase: 4-execute
skill: plan-execute
description: Execute implementation tasks
get-routing-context
Get combined routing context (phase, skill, and progress) in one call.
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle get-routing-context \
--plan-id {plan_id}
Parameters:
--plan-id(required): Plan identifier
Output (TOON):
status: success
plan_id: my-feature
title: Implement JWT Authentication
current_phase: 4-execute
skill: plan-execute
skill_description: Execute implementation tasks
total_phases: 5
completed_phases: 3
phases:
- name: 1-init
status: done
- name: 2-outline
status: done
- name: 3-plan
status: done
- name: 4-execute
status: in_progress
- name: 5-finalize
status: pending
Scripts
Script: pm-workflow:manage-lifecycle:manage-lifecycle
| Command | Parameters | Description |
|---|---|---|
read | --plan-id | Read plan status |
create | --plan-id --title --phases [--force] | Initialize status.toon |
set-phase | --plan-id --phase | Set current phase |
update-phase | --plan-id --phase --status | Update phase status |
progress | --plan-id | Calculate plan progress |
list | [--filter] | Discover all plans |
transition | --plan-id --completed | Transition to next phase |
archive | --plan-id [--dry-run] | Archive completed plan |
route | --phase | Get skill for phase |
get-routing-context | --plan-id | Get combined routing context |
Script: pm-workflow:manage-files:manage-files (delete operations)
| Command | Parameters | Description |
|---|---|---|
delete-plan | --plan-id | Delete entire plan directory |
Phase Routing
The route command returns skill names for each phase (from script PHASE_ROUTING):
| Phase | Skill | Description |
|---|---|---|
| init | plan-init | Initialize plan structure |
| outline | solution-outline | Create solution outline with deliverables |
| plan | task-plan | Create tasks from deliverables |
| execute | plan-execute | Execute implementation tasks |
| finalize | plan-finalize | Finalize with commit/PR |
Note: These are skill names, not full bundle:skill notation.
Note: Domain information is managed in config.toon (via domains array), not in status.toon. Domains are detected during the outline phase.
Error Handling
status: error
plan_id: my-feature
error: invalid_transition
message: Cannot transition from 'init' to 'execute' - must complete phases in order