taskplane 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -20
  3. package/bin/taskplane.mjs +706 -0
  4. package/dashboard/public/app.js +900 -0
  5. package/dashboard/public/index.html +92 -0
  6. package/dashboard/public/style.css +924 -0
  7. package/dashboard/server.cjs +531 -0
  8. package/extensions/task-orchestrator.ts +28 -0
  9. package/extensions/task-runner.ts +1923 -0
  10. package/extensions/taskplane/abort.ts +466 -0
  11. package/extensions/taskplane/config.ts +102 -0
  12. package/extensions/taskplane/discovery.ts +988 -0
  13. package/extensions/taskplane/engine.ts +758 -0
  14. package/extensions/taskplane/execution.ts +1752 -0
  15. package/extensions/taskplane/extension.ts +577 -0
  16. package/extensions/taskplane/formatting.ts +718 -0
  17. package/extensions/taskplane/git.ts +38 -0
  18. package/extensions/taskplane/index.ts +22 -0
  19. package/extensions/taskplane/merge.ts +795 -0
  20. package/extensions/taskplane/messages.ts +134 -0
  21. package/extensions/taskplane/persistence.ts +1121 -0
  22. package/extensions/taskplane/resume.ts +1092 -0
  23. package/extensions/taskplane/sessions.ts +92 -0
  24. package/extensions/taskplane/types.ts +1514 -0
  25. package/extensions/taskplane/waves.ts +900 -0
  26. package/extensions/taskplane/worktree.ts +1624 -0
  27. package/package.json +48 -3
  28. package/skills/create-taskplane-task/SKILL.md +326 -0
  29. package/skills/create-taskplane-task/references/context-template.md +78 -0
  30. package/skills/create-taskplane-task/references/prompt-template.md +246 -0
  31. package/templates/agents/task-merger.md +256 -0
  32. package/templates/agents/task-reviewer.md +81 -0
  33. package/templates/agents/task-worker.md +140 -0
  34. package/templates/config/task-orchestrator.yaml +89 -0
  35. package/templates/config/task-runner.yaml +99 -0
  36. package/templates/tasks/CONTEXT.md +31 -0
  37. package/templates/tasks/EXAMPLE-001-hello-world/PROMPT.md +90 -0
  38. package/templates/tasks/EXAMPLE-001-hello-world/STATUS.md +73 -0
package/package.json CHANGED
@@ -1,11 +1,56 @@
1
1
  {
2
2
  "name": "taskplane",
3
- "version": "0.0.1",
3
+ "version": "0.1.0",
4
4
  "description": "AI agent orchestration for pi — parallel task execution with checkpoint discipline",
5
- "keywords": ["pi-package", "ai", "agent", "orchestration", "task-runner", "parallel"],
5
+ "keywords": [
6
+ "pi-package",
7
+ "ai",
8
+ "agent",
9
+ "orchestration",
10
+ "task-runner",
11
+ "parallel"
12
+ ],
13
+ "bin": {
14
+ "taskplane": "./bin/taskplane.mjs"
15
+ },
16
+ "pi": {
17
+ "extensions": [
18
+ "./extensions"
19
+ ],
20
+ "skills": [
21
+ "./skills"
22
+ ]
23
+ },
24
+ "type": "module",
25
+ "engines": {
26
+ "node": ">=20.0.0"
27
+ },
28
+ "files": [
29
+ "bin/",
30
+ "dashboard/",
31
+ "extensions/task-runner.ts",
32
+ "extensions/task-orchestrator.ts",
33
+ "extensions/taskplane/",
34
+ "skills/",
35
+ "templates/"
36
+ ],
37
+ "peerDependencies": {
38
+ "@mariozechner/pi-coding-agent": "*",
39
+ "@mariozechner/pi-tui": "*",
40
+ "@mariozechner/pi-ai": "*",
41
+ "@sinclair/typebox": "*"
42
+ },
43
+ "dependencies": {
44
+ "yaml": "^2.4.0"
45
+ },
6
46
  "license": "MIT",
7
47
  "repository": {
8
48
  "type": "git",
9
49
  "url": "https://github.com/HenryLach/taskplane.git"
10
- }
50
+ },
51
+ "homepage": "https://github.com/HenryLach/taskplane#readme",
52
+ "bugs": {
53
+ "url": "https://github.com/HenryLach/taskplane/issues"
54
+ },
55
+ "author": "Henry Lach"
11
56
  }
@@ -0,0 +1,326 @@
1
+ ---
2
+ name: create-taskplane-task
3
+ description: Creates structured Taskplane task packets (PROMPT.md, STATUS.md) for autonomous agent execution via the task-runner and task-orchestrator extensions. Use when asked to "create a task", "create a taskplane task", "stage a task", "prepare a task for execution", "write a PROMPT.md", "set up work for the agent", "queue a task", or whenever the user wants to define work that will be executed autonomously by another agent instance.
4
+ ---
5
+
6
+ # Create Taskplane Task
7
+
8
+ Creates structured task packets (PROMPT.md + STATUS.md) for autonomous execution
9
+ via the **task-runner extension** and parallel batch execution via the
10
+ **task-orchestrator extension**. The extensions handle the execution loop,
11
+ fresh-context management, cross-model reviews, wave scheduling, and live
12
+ dashboard — so PROMPT.md stays focused on WHAT to do, not HOW to execute.
13
+
14
+ ## Architecture
15
+
16
+ ```
17
+ create-taskplane-task skill → Creates PROMPT.md + STATUS.md
18
+ task-runner extension → Executes the task autonomously
19
+ ├─ task-worker.md agent → Worker system prompt (checkpoint discipline, resume logic)
20
+ ├─ task-reviewer.md agent → Reviewer system prompt (review formats, criteria)
21
+ └─ task-runner.yaml config → Project-specific settings, paths, standards
22
+ ```
23
+
24
+ The skill only creates files. All execution behavior lives in the extension and agents.
25
+
26
+ ## Prerequisites
27
+
28
+ **If `.pi/task-runner.yaml` does not exist**, the project has not been initialized.
29
+ Tell the user to run `taskplane init` first — the skill cannot create tasks
30
+ without knowing where task areas live.
31
+
32
+ ## Configuration
33
+
34
+ **Read `.pi/task-runner.yaml` before creating any task.** It contains:
35
+ - `task_areas` — folder paths, prefixes, CONTEXT.md locations per area
36
+ - `reference_docs` — available Tier 3 docs for "Context to Read First"
37
+ - `standards` — project coding rules and standards docs
38
+ - `testing.commands` — how to run tests
39
+ - `self_doc_targets` — where agents log discoveries
40
+ - `protected_docs` — docs requiring user approval to modify
41
+ - `never_load` — docs to exclude from task execution context
42
+
43
+ ---
44
+
45
+ ## Task Creation Workflow
46
+
47
+ ### Step 1: Determine Location & Next ID
48
+
49
+ The user will rarely specify which area to use — **figure it out from context.**
50
+
51
+ **When there's only one area** (typical for new projects), use it directly.
52
+
53
+ **When there are multiple areas**, match the task to the right area:
54
+
55
+ 1. Read `.pi/task-runner.yaml` → `task_areas` to get all areas
56
+ 2. Read each area's `CONTEXT.md` — the "Current State" section describes what
57
+ that area owns (its domain, services, file scope)
58
+ 3. Match the task description to the area whose scope best fits:
59
+ - A task about PTO accrual → `time-off` area
60
+ - A task about the orchestrator itself → `task-system` area
61
+ - A task about login flows → `identity-access` area
62
+ 4. If ambiguous (task spans multiple areas), prefer the area that owns the
63
+ primary file being modified, or ask the user
64
+
65
+ **After selecting the area:**
66
+
67
+ 1. Read that area's `CONTEXT.md` and find the `Next Task ID` counter
68
+ 2. Use that ID for the new task
69
+ 3. **Increment the counter** in the same CONTEXT.md edit
70
+
71
+ **Note:** Task area structures evolve over time. A new project starts with a
72
+ single `taskplane-tasks/` folder and one area. As the project grows, users add
73
+ domains and platform areas in `task-runner.yaml`. The skill adapts — it always
74
+ reads the config to discover what areas exist rather than assuming a layout.
75
+
76
+ ### Step 2: Assess Complexity & Size
77
+
78
+ See [Complexity Assessment](#complexity-assessment) and [Task Sizing](#task-sizing).
79
+
80
+ ### Step 3: Create Task Folder
81
+
82
+ ```
83
+ {area.path}/{PREFIX-###-slug}/
84
+ ```
85
+
86
+ ### Step 4: Create PROMPT.md
87
+
88
+ Use the template in [references/prompt-template.md](references/prompt-template.md).
89
+
90
+ ### Step 5: Create STATUS.md
91
+
92
+ Use the STATUS.md template in [references/prompt-template.md](references/prompt-template.md).
93
+ (If omitted, the task-runner extension auto-generates it from PROMPT.md.)
94
+
95
+ ### Step 6: Update Tracking
96
+
97
+ - **CONTEXT.md** — Increment `Next Task ID` (done in Step 1)
98
+ - **PROGRESS.md** — Add row to "Active Tasks" table
99
+
100
+ ### Step 7: Report Launch Command
101
+
102
+ ```
103
+ /task {area.path}/{PREFIX-###-slug}/PROMPT.md
104
+ ```
105
+
106
+ ---
107
+
108
+ ## Complexity Assessment
109
+
110
+ Evaluate the task to determine cross-model review level.
111
+
112
+ ### Review Levels
113
+
114
+ | Level | Label | Reviewer Calls |
115
+ |-------|-------|----------------|
116
+ | 0 | None | Zero — doc updates, config, boilerplate |
117
+ | 1 | Plan Only | Plan review before implementation |
118
+ | 2 | Plan + Code | Plan review + code review after implementation |
119
+ | 3 | Full | Plan + code + test review |
120
+
121
+ ### Scoring (0-2 per dimension, sum for level)
122
+
123
+ | Dimension | 0 (Low) | 1 (Medium) | 2 (High) |
124
+ |-----------|---------|------------|----------|
125
+ | **Blast radius** | Single file | Single service | Multiple services |
126
+ | **Pattern novelty** | Existing patterns | Adapting patterns | New patterns |
127
+ | **Security** | No auth/data | Touches auth | Modifies auth/encryption |
128
+ | **Reversibility** | Easy revert | Needs migration | Data model change |
129
+
130
+ - Score 0-1 → Level 0 · Score 2-3 → Level 1 · Score 4-5 → Level 2 · Score 6-8 → Level 3
131
+
132
+ ### Per-Step Override
133
+
134
+ Individual steps can override the task-level review:
135
+
136
+ ```markdown
137
+ ### Step 3: Add RBAC middleware
138
+ > **Review override: code review** — This step touches authorization.
139
+ ```
140
+
141
+ ---
142
+
143
+ ## Task Sizing
144
+
145
+ | Size | Duration | Action |
146
+ |------|----------|--------|
147
+ | **S** | < 2 hours | Create as-is |
148
+ | **M** | 2-4 hours | Ideal size — create as-is |
149
+ | **L** | 4-8 hours | Split if possible |
150
+ | **XL** | 8+ hours | **Must split** into M/L tasks with dependencies |
151
+
152
+ **Rule of thumb:** More than ~3 major implementation steps → split it.
153
+
154
+ ---
155
+
156
+ ## Tiered Context Loading
157
+
158
+ PROMPT.md tells the worker what to load. Less is better.
159
+
160
+ | Tier | What | Loaded By |
161
+ |------|------|-----------|
162
+ | **1** | PROMPT.md + STATUS.md | Always (automatic) |
163
+ | **2** | Area CONTEXT.md | When referenced in "Context to Read First" |
164
+ | **3** | Specific reference docs | Only the docs this task needs |
165
+
166
+ Populate "Context to Read First" in PROMPT.md using docs from
167
+ `task-runner.yaml → reference_docs`. List only what the task actually needs.
168
+
169
+ Docs in `task-runner.yaml → never_load` must NOT appear in any task.
170
+
171
+ ---
172
+
173
+ ## STATUS.md Hydration
174
+
175
+ STATUS.md is the worker's ONLY memory between iterations. Granularity directly
176
+ determines how much progress survives when an iteration ends mid-step.
177
+
178
+ ### Task Creator Responsibilities
179
+
180
+ **Pre-hydrate STATUS.md to match PROMPT.md granularity.** Since the skill creates
181
+ both files at the same time, there is no reason for STATUS.md to be coarser than
182
+ PROMPT.md.
183
+
184
+ | PROMPT.md says | STATUS.md should have |
185
+ |----------------|-----------------------|
186
+ | "Implement Create, Update, Get, List, Publish, Clone" | One checkbox per method (6 checkboxes) |
187
+ | "Test happy path, validation, auth, tenant isolation" | One checkbox per test category (4 checkboxes) |
188
+ | "Create file X, file Y, file Z" | One checkbox per file (3 checkboxes) |
189
+
190
+ **Use `⚠️ Hydrate` markers** for steps that genuinely depend on runtime
191
+ discoveries — where the task creator cannot know the items upfront:
192
+
193
+ ```markdown
194
+ ### Step 3: Create Task Files
195
+ **Status:** ⬜ Not Started
196
+ > ⚠️ Hydrate: Expand with per-item checkboxes once Step 2 identifies the task list
197
+
198
+ - [ ] Read create-taskplane-task skill and prompt template
199
+ - [ ] Create task files (expand after Step 2)
200
+ ```
201
+
202
+ **When to use markers vs. pre-hydration:**
203
+
204
+ | Situation | Approach |
205
+ |-----------|----------|
206
+ | Items are known at creation time | Pre-hydrate (one checkbox per item) |
207
+ | Items depend on analysis/discovery in a prior step | `⚠️ Hydrate` marker |
208
+ | Items depend on what exists on disk (preflight) | `⚠️ Hydrate` marker |
209
+ | Reviewer feedback adds new items | Worker hydrates (handled by worker agent) |
210
+
211
+ The worker agent has full hydration rules (commit-before-implement,
212
+ REVISE-triggered hydration). Task creators just need to provide the right
213
+ starting granularity.
214
+
215
+ ### Constraint: No New Steps at Runtime
216
+
217
+ **Workers MUST NOT add, remove, or renumber steps during execution.** The
218
+ task-runner extension parses the step list from PROMPT.md once at `/task` launch
219
+ and iterates that fixed list. Steps added to STATUS.md at runtime will appear in
220
+ the dashboard but **silently never execute**.
221
+
222
+ Hydration expands checkboxes *within* existing steps only. If a worker discovers
223
+ work that doesn't fit any step, it should add sub-checkboxes to the closest
224
+ existing step and log the overflow in the STATUS.md Discoveries table.
225
+
226
+ **Task creators:** ensure PROMPT.md has all necessary steps upfront. If a task's
227
+ scope might expand during execution, prefer fewer broad steps (the worker will
228
+ hydrate them) over many narrow steps that might need restructuring.
229
+
230
+ ---
231
+
232
+ ## PROMPT.md Amendment Policy
233
+
234
+ The template includes an `## Amendments` placeholder at the bottom of PROMPT.md.
235
+ Original content above the `---` divider is immutable — workers use that section
236
+ only for issues like missing prerequisites or contradictory instructions, not
237
+ scope expansion or style preferences.
238
+
239
+ ---
240
+
241
+ ## Dependencies Format
242
+
243
+ The orchestrator **machine-parses** this section using regex — stick to the exact
244
+ patterns below. Non-standard formatting (e.g., missing bold markers, inline prose
245
+ without a task ID pattern) may cause silent dependency misses or `PARSE_MALFORMED`
246
+ errors at batch time.
247
+
248
+ ```markdown
249
+ ## Dependencies
250
+
251
+ - **Task:** TO-014 (PTO policy engine must exist)
252
+ - **Task:** employee-management/EM-003 (area-qualified when ID may be ambiguous)
253
+ - **External:** All backend services running (ports 8080-8085)
254
+ - **None**
255
+ ```
256
+
257
+ Notes:
258
+ - Use unqualified `TASK-ID` when globally unique
259
+ - Use `area-name/TASK-ID` for cross-area clarity or when orchestrator reports `DEP_AMBIGUOUS`
260
+
261
+ ---
262
+
263
+ ## Checklist (Definition of Ready)
264
+
265
+ Verify every task against this before reporting the launch command:
266
+
267
+ - [ ] `Next Task ID` read from CONTEXT.md and incremented
268
+ - [ ] Folder created at correct `task_areas` path with name `{PREFIX}-{###}-{slug}`
269
+ - [ ] Complexity assessed, review level assigned (0-3)
270
+ - [ ] Size assessed (S/M/L) — split if XL
271
+ - [ ] PROMPT.md created from template with all required sections:
272
+ - [ ] `## Mission` with what AND why
273
+ - [ ] `## Dependencies` section
274
+ - [ ] `## Context to Read First` lists only needed Tier 3 docs
275
+ - [ ] `## File Scope` lists files/dirs the task will touch
276
+ - [ ] Each step has checkboxes with verifiable outcomes
277
+ - [ ] Explicit testing step with commands
278
+ - [ ] `## Do NOT` guardrails
279
+ - [ ] "Must Update" and "Check If Affected" doc lists
280
+ - [ ] `## Git Commit Convention` section (from template)
281
+ - [ ] `## Amendments` placeholder at bottom
282
+ - [ ] STATUS.md created with matching step structure
283
+ - [ ] Checkboxes match PROMPT.md granularity (1:1 where items are known)
284
+ - [ ] `⚠️ Hydrate` markers for discovery-dependent steps
285
+ - [ ] PROGRESS.md updated (add to "Active Tasks")
286
+ - [ ] Launch command reported: `/task {path}/PROMPT.md`
287
+
288
+ ---
289
+
290
+ ## Git Commit Convention
291
+
292
+ The prompt template includes a `## Git Commit Convention` section with the full
293
+ format table (`feat(TASK-ID):`, `fix(TASK-ID):`, `checkpoint: TASK-ID`, etc.).
294
+ Always include it — without task ID prefixes, there's no way to trace commits
295
+ back to the task that produced them (`git log --grep="PM-004"` only works if
296
+ the prefix is there).
297
+
298
+ ---
299
+
300
+ ## Orchestrator Awareness
301
+
302
+ Tasks are often executed in parallel batches by the task-orchestrator extension,
303
+ not just individually via task-runner. Two fields in PROMPT.md become load-bearing
304
+ in batch mode:
305
+
306
+ - **`## Dependencies`** — determines wave ordering. Tasks with unmet deps are
307
+ deferred to later waves. Incorrect or missing deps cause parallel execution of
308
+ tasks that should be serial, leading to merge conflicts or stale reads.
309
+ - **`## File Scope`** — determines lane affinity. Tasks with overlapping file
310
+ scope are assigned to the same lane (serial) to avoid merge conflicts. Without
311
+ file scope, the orchestrator distributes tasks randomly across lanes.
312
+
313
+ When creating multiple tasks for a batch, think about which tasks touch the same
314
+ files and make sure their file scopes reflect that.
315
+
316
+ ---
317
+
318
+ ## Key Principles
319
+
320
+ - **Documentation in every task.** Without "Must Update" and "Check If Affected"
321
+ lists, docs drift from reality and future tasks work from stale context.
322
+ - **Testing step required.** Workers can't distinguish pre-existing failures from
323
+ regressions they caused — every task needs a clean test pass to stay unblocked.
324
+ - **Self-contained PROMPT.md.** The worker starts with a fresh context and no
325
+ memory of the conversation that created the task. Everything it needs to begin
326
+ must be in PROMPT.md and the referenced docs.
@@ -0,0 +1,78 @@
1
+ # CONTEXT.md Template (Slim)
2
+
3
+ This is the recommended format for domain/platform CONTEXT.md files.
4
+ Intentionally slim — this gets loaded into agent context for every task in this area.
5
+ Each area's CONTEXT.md path is registered in `.pi/task-runner.yaml → task_areas`.
6
+
7
+ **Design principles:**
8
+ - Current state only, not history (history is in `tasks/archive/`)
9
+ - No task lists (visible from folder structure: `tasks/` = active, `tasks/archive/` = done)
10
+ - Key files are paths only, not descriptions
11
+ - Tech debt is a living list that agents add to during execution
12
+
13
+ ---
14
+
15
+ ```markdown
16
+ # [Domain/Platform Name] — Context
17
+
18
+ **Last Updated:** YYYY-MM-DD
19
+ **Status:** Active | Stable | Complete
20
+ **Next Task ID:** [PREFIX]-001
21
+
22
+ ---
23
+
24
+ ## Current State
25
+
26
+ [What exists TODAY — 2-3 paragraphs max. Focus on current capabilities,
27
+ architectural decisions, and known constraints. Not history.]
28
+
29
+ ---
30
+
31
+ ## Key Files
32
+
33
+ | Category | Path |
34
+ |----------|------|
35
+ | Service | `services/{service}/` |
36
+ | API Spec | `docs/api/{service}-api.md` |
37
+ | Data Model | `docs/data-models/{service}-collections.md` |
38
+ | Tests | `services/{service}/tests/` |
39
+ | [Other] | [path] |
40
+
41
+ ---
42
+
43
+ ## Technical Debt / Future Work
44
+
45
+ Items identified during implementation but not yet converted to tasks.
46
+ Agents add to this list under self-documentation standing instructions.
47
+
48
+ - [ ] **[Item name]** — Description (discovered during [PREFIX-###])
49
+ - [ ] **[Item name]** — Description (discovered during [PREFIX-###])
50
+ ```
51
+
52
+ ---
53
+
54
+ ## Notes
55
+
56
+ ### Why No Task Lists?
57
+
58
+ Open tasks are visible in `tasks/` folder. Completed tasks are in `tasks/archive/`.
59
+ Duplicating this in CONTEXT.md creates sync overhead and stale data.
60
+
61
+ ### Next Task ID Counter
62
+
63
+ When creating a new task:
64
+ 1. Read `Next Task ID` (e.g., `TO-016`)
65
+ 2. Use that ID for the new task folder
66
+ 3. Increment the counter (e.g., `TO-017`) in the same edit
67
+
68
+ This avoids scanning folder structures for the next available number.
69
+
70
+ ### When to Update CONTEXT.md
71
+
72
+ | Trigger | What to Update |
73
+ |---------|---------------|
74
+ | Feature shipped | Current State section |
75
+ | Tech debt discovered | Technical Debt section |
76
+ | Architecture decision made | Current State section |
77
+ | Key file moved/renamed | Key Files section |
78
+ | Task created | Next Task ID counter |
@@ -0,0 +1,246 @@
1
+ # PROMPT.md Template
2
+
3
+ Copy this template when creating a new task. Replace all `[bracketed]` fields.
4
+
5
+ ---
6
+
7
+ ````markdown
8
+ # Task: [PREFIX-###] - [Name]
9
+
10
+ **Created:** [YYYY-MM-DD]
11
+ **Size:** [S | M | L]
12
+
13
+ ## Review Level: [0-3] ([None | Plan Only | Plan and Code | Full])
14
+
15
+ **Assessment:** [1-2 sentences explaining the score]
16
+ **Score:** [N]/8 — Blast radius: [N], Pattern novelty: [N], Security: [N], Reversibility: [N]
17
+
18
+ ## Canonical Task Folder
19
+
20
+ ```
21
+ [FULL_PATH_TO_TASK_FOLDER]/
22
+ ├── PROMPT.md ← This file (immutable above --- divider)
23
+ ├── STATUS.md ← Execution state (worker updates this)
24
+ ├── .reviews/ ← Reviewer output (task-runner creates this)
25
+ └── .DONE ← Created when complete
26
+ ```
27
+
28
+ ## Mission
29
+
30
+ [One paragraph: what you're building and why it matters]
31
+
32
+ ## Dependencies
33
+
34
+ [Choose one:]
35
+
36
+ - **None**
37
+
38
+ [OR:]
39
+
40
+ - **Task:** [PREFIX-###] ([what must be complete])
41
+ - **Task:** [area-name/PREFIX-###] ([use area-qualified form if cross-area ID may be ambiguous])
42
+ - **External:** [what must be true]
43
+
44
+ ## Context to Read First
45
+
46
+ > Only list docs the worker actually needs. Less is better.
47
+
48
+ **Tier 2 (area context):**
49
+ - `[path/to/CONTEXT.md]`
50
+
51
+ **Tier 3 (load only if needed):**
52
+ - `[path/to/specific-doc.md]` — [why needed]
53
+
54
+ ## Environment
55
+
56
+ - **Workspace:** [primary folder/service being modified]
57
+ - **Services required:** [list, or "None"]
58
+
59
+ ## File Scope
60
+
61
+ > The orchestrator uses this to avoid merge conflicts: tasks with overlapping
62
+ > file scope run on the same lane (serial), not in parallel. List the files and
63
+ > directories this task will create or modify. Use wildcards for directories.
64
+
65
+ - `[path/to/file.ext]`
66
+ - `[path/to/directory/*]`
67
+
68
+ ## Steps
69
+
70
+ > **Hydration:** STATUS.md checkboxes must match the granularity below. Steps that
71
+ > depend on runtime discoveries should be marked with `⚠️ Hydrate` in STATUS.md.
72
+ > See task-worker agent for full hydration rules.
73
+
74
+ ### Step 0: Preflight
75
+
76
+ - [ ] Required files and paths exist
77
+ - [ ] Dependencies satisfied
78
+
79
+ ### Step 1: [Name]
80
+
81
+ - [ ] [Specific, verifiable task]
82
+ - [ ] [Specific, verifiable task]
83
+ - [ ] [Specific, verifiable task]
84
+
85
+ **Artifacts:**
86
+ - `path/to/file` (new | modified)
87
+
88
+ ### Step [N-1]: Testing & Verification
89
+
90
+ > ZERO test failures allowed.
91
+
92
+ - [ ] Run unit tests: `[test command from task-runner.yaml]`
93
+ - [ ] Run integration tests (if applicable)
94
+ - [ ] Fix all failures
95
+ - [ ] Build passes: `[build command]`
96
+
97
+ ### Step [N]: Documentation & Delivery
98
+
99
+ - [ ] "Must Update" docs modified
100
+ - [ ] "Check If Affected" docs reviewed
101
+ - [ ] Discoveries logged in STATUS.md
102
+ - [ ] `.DONE` created in this folder
103
+ - [ ] Task archived (auto — handled by task-runner extension)
104
+
105
+ ## Documentation Requirements
106
+
107
+ **Must Update:**
108
+ - `[path/to/doc.md]` — [what to add/change]
109
+
110
+ **Check If Affected:**
111
+ - `[path/to/doc.md]` — [update if relevant]
112
+
113
+ ## Completion Criteria
114
+
115
+ - [ ] All steps complete
116
+ - [ ] All tests passing
117
+ - [ ] Documentation updated
118
+ - [ ] `.DONE` created
119
+
120
+ ## Git Commit Convention
121
+
122
+ All commits for this task MUST include the task ID for traceability:
123
+
124
+ - **Implementation:** `feat([PREFIX-###]): description`
125
+ - **Bug fixes:** `fix([PREFIX-###]): description`
126
+ - **Tests:** `test([PREFIX-###]): description`
127
+ - **Checkpoints:** `checkpoint: [PREFIX-###] description`
128
+
129
+ ## Do NOT
130
+
131
+ - Expand task scope — add tech debt to CONTEXT.md instead
132
+ - Skip tests
133
+ - Modify framework/standards docs without explicit user approval
134
+ - Load docs not listed in "Context to Read First"
135
+ - Commit without the task ID prefix in the commit message
136
+
137
+ ---
138
+
139
+ ## Amendments (Added During Execution)
140
+
141
+ <!-- Workers add amendments here if issues discovered during execution.
142
+ Format:
143
+ ### Amendment N — YYYY-MM-DD HH:MM
144
+ **Issue:** [what was wrong]
145
+ **Resolution:** [what was changed] -->
146
+ ````
147
+
148
+ ---
149
+
150
+ # STATUS.md Template
151
+
152
+ Create alongside PROMPT.md. If omitted, the task-runner extension auto-generates
153
+ this from PROMPT.md.
154
+
155
+ ````markdown
156
+ # [PREFIX-###]: [Name] — Status
157
+
158
+ **Current Step:** Not Started
159
+ **Status:** 🔵 Ready for Execution
160
+ **Last Updated:** [YYYY-MM-DD]
161
+ **Review Level:** [0-3]
162
+ **Review Counter:** 0
163
+ **Iteration:** 0
164
+ **Size:** [S | M | L]
165
+
166
+ > **Hydration:** Checkboxes below must be granular — one per unit of work.
167
+ > Steps marked `⚠️ Hydrate` will be expanded by the worker when discoveries
168
+ > from prior steps are available. See task-worker agent for rules.
169
+
170
+ ---
171
+
172
+ ### Step 0: Preflight
173
+ **Status:** ⬜ Not Started
174
+
175
+ - [ ] Required files and paths exist
176
+ - [ ] Dependencies satisfied
177
+
178
+ ---
179
+
180
+ ### Step 1: [Name]
181
+ **Status:** ⬜ Not Started
182
+
183
+ [If items are known at creation time, list each one:]
184
+ - [ ] [Specific item from PROMPT.md]
185
+ - [ ] [Specific item from PROMPT.md]
186
+
187
+ [If items depend on runtime discovery:]
188
+ > ⚠️ Hydrate: Expand checkboxes when entering this step based on [what]
189
+
190
+ - [ ] [High-level placeholder — worker will expand]
191
+
192
+ ---
193
+
194
+ ### Step [N-1]: Testing & Verification
195
+ **Status:** ⬜ Not Started
196
+
197
+ - [ ] Unit tests passing
198
+ - [ ] Integration tests (if applicable)
199
+ - [ ] All failures fixed
200
+ - [ ] Build passes
201
+
202
+ ---
203
+
204
+ ### Step [N]: Documentation & Delivery
205
+ **Status:** ⬜ Not Started
206
+
207
+ - [ ] "Must Update" docs modified
208
+ - [ ] "Check If Affected" docs reviewed
209
+ - [ ] Discoveries logged
210
+ - [ ] `.DONE` created
211
+ - [ ] Archive and push
212
+
213
+ ---
214
+
215
+ ## Reviews
216
+
217
+ | # | Type | Step | Verdict | File |
218
+ |---|------|------|---------|------|
219
+
220
+ ---
221
+
222
+ ## Discoveries
223
+
224
+ | Discovery | Disposition | Location |
225
+ |-----------|-------------|----------|
226
+
227
+ ---
228
+
229
+ ## Execution Log
230
+
231
+ | Timestamp | Action | Outcome |
232
+ |-----------|--------|---------|
233
+ | [YYYY-MM-DD] | Task staged | PROMPT.md and STATUS.md created |
234
+
235
+ ---
236
+
237
+ ## Blockers
238
+
239
+ *None*
240
+
241
+ ---
242
+
243
+ ## Notes
244
+
245
+ *Reserved for execution notes*
246
+ ````