When to Use
Use this skill immediately after the user approves a plan for code changes. It creates the task folder, scaffolds files, records the plan and context, and updates the backlog.
Do not use for brainstorming or unapproved ideas.
Task Structure (authoritative)
Each task lives at:
.meridian/tasks/TASK-###/
Files inside (exact names):
TASK-###.yaml — Task brief (objective, scope, constraints, acceptance criteria, deliverables, risks, out of scope, links)
TASK-###-plan.md — Exact plan approved by the user (freeze this; changes require re‑approval)
TASK-###-context.md — Relevant context (Why decisions were made), key files, timestamped progress notes (log decisions, blockers, links, PRs)
IDs: 3‑digit, zero‑padded, uppercase folder prefix: TASK-001, TASK-002, …
Preconditions
- The user has explicitly approved the plan (or you have an approved summary of the plan).
- You know the short, action‑oriented title (≤80 chars).
- No secrets or PII are copied into task files.
Creating a Task
Step 1 — Create the folder and files
Run the helper script:
python3 $CLAUDE_PROJECT_DIR/.claude/skills/task-manager/scripts/create-task.py
- It will automatically create a new folder for a task with 3 files:
$CLAUDE_PROJECT_DIR/.meridian/tasks/TASK-###/TASK-###.yaml
$CLAUDE_PROJECT_DIR/.meridian/tasks/TASK-###/TASK-###-plan.md
$CLAUDE_PROJECT_DIR/.meridian/tasks/TASK-###/TASK-###-context.md
Step 2 — Populate files
- Read each file before writing (System limitation)
- Fill
TASK-###.yaml using the Task Brief YAML Template.
- Paste the approved plan into
TASK-###-plan.md
- Add an initial entry to
TASK-###-context.md
Step 3 — Update the backlog
Append/update an entry in .meridian/task-backlog.yaml with:
id, title, status: todo, priority, and the relative path to the task folder.
task-backlog.yaml — quick guide
Purpose: Single source of truth for all tasks (status, priority, location).
Structure: Top‑level key tasks:, each item is one task entry.
When to add: Immediately after creating TASK-###; set status: todo.
When to update: On start (in_progress), when blocked (blocked + reason in the task’s context file), and on completion (done).
What to edit: status, priority
Never: Rename id, delete finished tasks (mark done instead).
Allowed values:
status: todo | in_progress | blocked | done
priority: P0 | P1 | P2 | P3 (P0 = highest)
Consistency: id must match the folder name and the files inside it.
Example entry (recommended)
tasks:
- id: TASK-037
title: "Add cursor-based pagination to /api/orders"
priority: P1
status: in_progress
path: ".meridian/tasks/TASK-037/"
During Execution
Status transitions
todo → in_progress when you start coding.
- Optional:
blocked when waiting on dependency/decision; record reason in context.
in_progress → done when the Definition of Done is met.
What to update
TASK-###-context.md: Add timestamped notes for:
- Decisions, tradeoffs, key files, and blocked reasons.
- Links to PR(s), commit SHAs, builds, or dashboards.
- “Memory candidates” (facts worth persisting) — flag with
MEMORY:; then use memory-curator (never write memory.jsonl manually).
$CLAUDE_PROJECT_DIR/.meridian/task-backlog.yaml:
TASK-###.yaml:
Finishing a Task (Definition of Done)
Mark done only when all are true:
- Code compiles; typecheck/lint/test/build pass.
- Tests added/updated for new behavior; critical flows covered.
- Docs updated where relevant (README/snippets/endpoint contracts).
- No secrets/PII in code, commits, or logs. UI/API changes meet accessibility/security checks.
- If schema/data changed: migration applied and rollback plan documented in the plan or context.
TASK-###-context.md has a final note with the merged PR link(s).
- Run
memory-curator to add any durable architectural decisions (don’t edit memory manually).
- Update
.meridian/task-backlog.yaml to done.
Editing Scope or Plan
- Any material change to goals, acceptance criteria, or approach requires re‑approval.
- Update
TASK-###-plan.md with a short “Amendment ” section describing the change.
- Log the reason and reference in
TASK-###-context.md.
Splitting / Merging / Cancelling Tasks
- Split: Create new tasks, move relevant sections, and update backlog. In originals, add: “Superseded by: …”.
- Merge: Keep one task as primary; close the others as
done with “Merged into: …” notes.
- Cancel: Set status to
done with resolution: canceled; explain in context; keep history.
1---2name: task-manager-23description: Create and manage development tasks after the user approves a plan. Initializes folders/files, updates the backlog, and keeps progress notes synchronized.4---5<task_manager>
6# Task Manager Skill
7
8## When to Use
9Use this skill **immediately after the user approves a plan** for code changes. It creates the task folder, scaffolds files, records the plan and context, and updates the backlog.
10
11> Do **not** use for brainstorming or unapproved ideas.
12
13---
14
15## Task Structure (authoritative)
16Each task lives at:
17`.meridian/tasks/TASK-###/`
18
19**Files inside (exact names):**
20- `TASK-###.yaml` — Task brief (objective, scope, constraints, acceptance criteria, deliverables, risks, out of scope, links)
21- `TASK-###-plan.md` — **Exact plan approved by the user** (freeze this; changes require re‑approval)
22- `TASK-###-context.md` — Relevant context (Why decisions were made), key files, timestamped progress notes (log decisions, blockers, links, PRs)
23
24> **IDs**: 3‑digit, zero‑padded, uppercase folder prefix: `TASK-001`, `TASK-002`, …
25
26---
27
28## Preconditions
291) The user has explicitly approved the plan (or you have an approved summary of the plan).
302) You know the short, action‑oriented title (≤80 chars).
313) No secrets or PII are copied into task files.
32
33---
34
35## Creating a Task
36
37### Step 1 — Create the folder and files
38Run the helper script:
39- `python3 $CLAUDE_PROJECT_DIR/.claude/skills/task-manager/scripts/create-task.py`
40 - It will automatically create a new folder for a task with 3 files:
41 - `$CLAUDE_PROJECT_DIR/.meridian/tasks/TASK-###/TASK-###.yaml`
42 - `$CLAUDE_PROJECT_DIR/.meridian/tasks/TASK-###/TASK-###-plan.md`
43 - `$CLAUDE_PROJECT_DIR/.meridian/tasks/TASK-###/TASK-###-context.md`
44
45### Step 2 — Populate files
46- Read each file before writing (System limitation)
47- Fill `TASK-###.yaml` using the **Task Brief YAML Template**.
48- Paste the approved plan into `TASK-###-plan.md`
49- Add an initial entry to `TASK-###-context.md`
50
51### Step 3 — Update the backlog
52Append/update an entry in `.meridian/task-backlog.yaml` with:
53- `id`, `title`, `status: todo`, `priority`, and the relative path to the task folder.
54
55---
56
57### `task-backlog.yaml` — quick guide
58
59* **Purpose:** Single source of truth for all tasks (status, priority, location).
60* **Structure:** Top‑level key `tasks:`, each item is one task entry.
61* **When to add:** Immediately after creating `TASK-###`; set `status: todo`.
62* **When to update:** On start (`in_progress`), when blocked (`blocked` + reason in the task’s context file), and on completion (`done`).
63* **What to edit:** `status`, `priority`
64* **Never:** Rename `id`, delete finished tasks (mark `done` instead).
65* **Allowed values:**
66
67 * `status`: `todo` | `in_progress` | `blocked` | `done`
68 * `priority`: `P0` | `P1` | `P2` | `P3` (P0 = highest)
69* **Consistency:** `id` must match the folder name and the files inside it.
70
71#### Example entry (recommended)
72
73```yaml
74tasks:
75 - id: TASK-037
76 title: "Add cursor-based pagination to /api/orders"
77 priority: P1
78 status: in_progress
79 path: ".meridian/tasks/TASK-037/"
80```
81
82---
83
84## During Execution
85
86**Status transitions**
87- `todo` → `in_progress` when you start coding.
88- Optional: `blocked` when waiting on dependency/decision; record reason in context.
89- `in_progress` → `done` when the Definition of Done is met.
90
91**What to update**
921) `TASK-###-context.md`: Add timestamped notes for:
93 - Decisions, tradeoffs, key files, and blocked reasons.
94 - Links to PR(s), commit SHAs, builds, or dashboards.
95 - “Memory candidates” (facts worth persisting) — flag with `MEMORY:`; **then use `memory-curator`** (never write memory.jsonl manually).
962) `$CLAUDE_PROJECT_DIR/.meridian/task-backlog.yaml`:
97 - Update `status`.
983) `TASK-###.yaml`:
99
100---
101
102## Finishing a Task (Definition of Done)
103Mark `done` only when **all** are true:
104- Code compiles; typecheck/lint/test/build pass.
105- Tests added/updated for new behavior; critical flows covered.
106- Docs updated where relevant (README/snippets/endpoint contracts).
107- No secrets/PII in code, commits, or logs. UI/API changes meet accessibility/security checks.
108- If schema/data changed: migration applied and rollback plan documented in the plan or context.
109- `TASK-###-context.md` has a final note with the merged PR link(s).
110- Run `memory-curator` to add any durable architectural decisions (don’t edit memory manually).
111- Update `.meridian/task-backlog.yaml` to `done`.
112
113---
114
115## Editing Scope or Plan
116- **Any material change** to goals, acceptance criteria, or approach requires re‑approval.
117- Update `TASK-###-plan.md` with a short “Amendment <date>” section describing the change.
118- Log the reason and reference in `TASK-###-context.md`.
119
120---
121
122## Splitting / Merging / Cancelling Tasks
123- **Split**: Create new tasks, move relevant sections, and update backlog. In originals, add: “Superseded by: …”.
124- **Merge**: Keep one task as primary; close the others as `done` with “Merged into: …” notes.
125- **Cancel**: Set status to `done` with `resolution: canceled`; explain in context; keep history.
126</task_manager>