# Manage Lifecycle

> Manage plan lifecycle with status.toon and phase operations

- Skill: `majiayu000/manage-lifecycle` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/manage-lifecycle`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/manage-lifecycle/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/manage-lifecycle

---


# 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:

```toon
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.

```bash
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle read \
  --plan-id {plan_id}
```

**Output** (TOON):
```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.

```bash
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):
```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.

```bash
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle set-phase \
  --plan-id {plan_id} \
  --phase 4-execute
```

**Output** (TOON):
```toon
status: success
plan_id: my-feature
current_phase: 4-execute
previous_phase: 3-plan
```

### update-phase

Update a specific phase status.

```bash
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle update-phase \
  --plan-id {plan_id} \
  --phase 1-init \
  --status done
```

**Output** (TOON):
```toon
status: success
plan_id: my-feature
phase: 1-init
phase_status: done
```

### progress

Calculate plan progress.

```bash
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle progress \
  --plan-id {plan_id}
```

**Output** (TOON):
```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.

```bash
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):
```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.

```bash
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle transition \
  --plan-id {plan_id} \
  --completed 1-init
```

**Output** (TOON):
```toon
status: success
plan_id: my-feature
completed_phase: 1-init
next_phase: 2-outline
```

### archive

Archive a completed plan.

```bash
python3 .plan/execute-script.py pm-workflow:manage-lifecycle:manage-lifecycle archive \
  --plan-id {plan_id} \
  [--dry-run]
```

**Output** (TOON):
```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

```bash
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):
```toon
status: success
plan_id: my-feature
action: deleted
path: .plan/plans/my-feature
files_removed: 7
```

**Error Output**:
```toon
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.

```bash
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):
```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.

```bash
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):
```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

```toon
status: error
plan_id: my-feature
error: invalid_transition
message: Cannot transition from 'init' to 'execute' - must complete phases in order
```

