taskplane 0.1.16 → 0.1.18

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.
@@ -1,326 +1,363 @@
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.
1
+ ---
2
+ name: create-taskplane-task
3
+ version: 1.1.0
4
+ 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.
5
+ ---
6
+
7
+ # Create Taskplane Task
8
+
9
+ Creates structured task packets (PROMPT.md + STATUS.md) for autonomous execution
10
+ via the **task-runner extension** and parallel batch execution via the
11
+ **task-orchestrator extension**. The extensions handle the execution loop,
12
+ fresh-context management, cross-model reviews, wave scheduling, and live
13
+ dashboard — so PROMPT.md stays focused on WHAT to do, not HOW to execute.
14
+
15
+ ## Architecture
16
+
17
+ ```
18
+ create-taskplane-task skill Creates PROMPT.md + STATUS.md
19
+ task-runner extension Executes the task autonomously
20
+ ├─ task-worker.md agent Worker system prompt (checkpoint discipline, resume logic)
21
+ ├─ task-reviewer.md agent Reviewer system prompt (review formats, criteria)
22
+ └─ task-runner.yaml config → Project-specific settings, paths, standards
23
+ ```
24
+
25
+ The skill only creates files. All execution behavior lives in the extension and agents.
26
+
27
+ ## Prerequisites
28
+
29
+ **If `.pi/task-runner.yaml` does not exist**, the project has not been initialized.
30
+ Tell the user to run `taskplane init` first — the skill cannot create tasks
31
+ without knowing where task areas live.
32
+
33
+ ## Configuration
34
+
35
+ **Read `.pi/task-runner.yaml` before creating any task.** It contains:
36
+ - `task_areas` — folder paths, prefixes, CONTEXT.md locations per area
37
+ - `reference_docs` — available Tier 3 docs for "Context to Read First"
38
+ - `standards` — project coding rules and standards docs
39
+ - `testing.commands` — how to run tests
40
+ - `self_doc_targets` — where agents log discoveries
41
+ - `protected_docs` — docs requiring user approval to modify
42
+ - `never_load` — docs to exclude from task execution context
43
+
44
+ ---
45
+
46
+ ## Task Creation Workflow
47
+
48
+ ### Step 1: Determine Location & Next ID
49
+
50
+ The user will rarely specify which area to use — **figure it out from context.**
51
+
52
+ **When there's only one area** (typical for new projects), use it directly.
53
+
54
+ **When there are multiple areas**, match the task to the right area:
55
+
56
+ 1. Read `.pi/task-runner.yaml` `task_areas` to get all areas
57
+ 2. Read each area's `CONTEXT.md` the "Current State" section describes what
58
+ that area owns (its domain, services, file scope)
59
+ 3. Match the task description to the area whose scope best fits:
60
+ - A task about PTO accrual → `time-off` area
61
+ - A task about the orchestrator itself → `task-system` area
62
+ - A task about login flows `identity-access` area
63
+ 4. If ambiguous (task spans multiple areas), prefer the area that owns the
64
+ primary file being modified, or ask the user
65
+
66
+ **After selecting the area:**
67
+
68
+ 1. Read that area's `CONTEXT.md` and find the `Next Task ID` counter
69
+ 2. Use that ID for the new task
70
+ 3. **Increment the counter** in the same CONTEXT.md edit
71
+
72
+ **Note:** Task area structures evolve over time. A new project starts with a
73
+ single `taskplane-tasks/` folder and one area. As the project grows, users add
74
+ domains and platform areas in `task-runner.yaml`. The skill adapts it always
75
+ reads the config to discover what areas exist rather than assuming a layout.
76
+
77
+ ### Step 2: Assess Complexity & Size
78
+
79
+ See [Complexity Assessment](#complexity-assessment) and [Task Sizing](#task-sizing).
80
+
81
+ ### Step 3: Create Task Folder
82
+
83
+ ```
84
+ {area.path}/{PREFIX-###-slug}/
85
+ ```
86
+
87
+ ### Step 4: Create PROMPT.md
88
+
89
+ Use the template in [references/prompt-template.md](references/prompt-template.md).
90
+
91
+ ### Step 5: Create STATUS.md
92
+
93
+ Use the STATUS.md template in [references/prompt-template.md](references/prompt-template.md).
94
+ (If omitted, the task-runner extension auto-generates it from PROMPT.md.)
95
+
96
+ ### Step 6: Update Tracking
97
+
98
+ - **CONTEXT.md** — Increment `Next Task ID` (done in Step 1)
99
+ - **PROGRESS.md** — Add row to "Active Tasks" table
100
+
101
+ ### Step 7: Report Launch Command
102
+
103
+ ```
104
+ /task {area.path}/{PREFIX-###-slug}/PROMPT.md
105
+ ```
106
+
107
+ ---
108
+
109
+ ## Complexity Assessment
110
+
111
+ Evaluate the task to determine cross-model review level.
112
+
113
+ ### Review Levels
114
+
115
+ | Level | Label | Reviewer Calls |
116
+ |-------|-------|----------------|
117
+ | 0 | None | Zero doc updates, config, boilerplate |
118
+ | 1 | Plan Only | Plan review before implementation |
119
+ | 2 | Plan + Code | Plan review + code review after implementation |
120
+ | 3 | Full | Plan + code + test review |
121
+
122
+ ### Scoring (0-2 per dimension, sum for level)
123
+
124
+ | Dimension | 0 (Low) | 1 (Medium) | 2 (High) |
125
+ |-----------|---------|------------|----------|
126
+ | **Blast radius** | Single file | Single service | Multiple services |
127
+ | **Pattern novelty** | Existing patterns | Adapting patterns | New patterns |
128
+ | **Security** | No auth/data | Touches auth | Modifies auth/encryption |
129
+ | **Reversibility** | Easy revert | Needs migration | Data model change |
130
+
131
+ - Score 0-1 → Level 0 · Score 2-3 → Level 1 · Score 4-5 → Level 2 · Score 6-8 → Level 3
132
+
133
+ ### Per-Step Override
134
+
135
+ Individual steps can override the task-level review:
136
+
137
+ ```markdown
138
+ ### Step 3: Add RBAC middleware
139
+ > **Review override: code review** — This step touches authorization.
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Task Sizing
145
+
146
+ | Size | Duration | Action |
147
+ |------|----------|--------|
148
+ | **S** | < 2 hours | Create as-is |
149
+ | **M** | 2-4 hours | Ideal size create as-is |
150
+ | **L** | 4-8 hours | Split if possible |
151
+ | **XL** | 8+ hours | **Must split** into M/L tasks with dependencies |
152
+
153
+ **Rule of thumb:** More than ~3 major implementation steps → split it.
154
+
155
+ ---
156
+
157
+ ## Tiered Context Loading
158
+
159
+ PROMPT.md tells the worker what to load. Less is better.
160
+
161
+ | Tier | What | Loaded By |
162
+ |------|------|-----------|
163
+ | **1** | PROMPT.md + STATUS.md | Always (automatic) |
164
+ | **2** | Area CONTEXT.md | When referenced in "Context to Read First" |
165
+ | **3** | Specific reference docs | Only the docs this task needs |
166
+
167
+ Populate "Context to Read First" in PROMPT.md using docs from
168
+ `task-runner.yaml → reference_docs`. List only what the task actually needs.
169
+
170
+ Docs in `task-runner.yaml → never_load` must NOT appear in any task.
171
+
172
+ ---
173
+
174
+ ## STATUS.md Hydration
175
+
176
+ STATUS.md is the worker's ONLY memory between iterations. It needs enough
177
+ structure so progress survives when an iteration ends mid-step — but not so much
178
+ structure that it becomes a rigid script the worker follows mechanically.
179
+
180
+ ### Philosophy: Adaptive Planning, Not Exhaustive Scripting
181
+
182
+ Hydration exists because workers discover things at runtime they couldn't know
183
+ upfront: the actual function signatures, the edge cases that emerge from reading
184
+ source, the reviewer feedback that reshapes approach. The goal is **adaptability
185
+ in the face of unknowns** — not granularity for its own sake.
186
+
187
+ **The right level of detail depends on predictability:**
188
+
189
+ | How predictable is the work? | Approach |
190
+ |------------------------------|----------|
191
+ | You know exactly what files/methods/tests are needed | List them as checkboxes |
192
+ | You know the general shape but details depend on source code | Write intent-level checkboxes; trust the worker to figure out implementation specifics |
193
+ | You genuinely don't know what's needed until a prior step runs | Use `⚠️ Hydrate` marker |
194
+
195
+ **Anti-pattern to avoid:** Creating 15+ micro-checkboxes that spell out every
196
+ function name, parameter, and assertion before the worker has even read the
197
+ source code. This wastes task-creation time, produces items that frequently need
198
+ revision anyway, and turns the worker into a checkbox-follower instead of a
199
+ problem-solver.
200
+
201
+ ### Task Creator Responsibilities
202
+
203
+ **Match STATUS.md to PROMPT.md granularity — no more, no less.** PROMPT.md steps
204
+ should express *outcomes* the worker needs to achieve, not dictate *how* to
205
+ achieve them.
206
+
207
+ Good granularity examples:
208
+
209
+ | PROMPT.md says | STATUS.md should have |
210
+ |----------------|-----------------------|
211
+ | "Implement CRUD operations for Projects" | `- [ ] Implement Create, Read, Update, Delete for Projects` (one checkbox — the worker can figure out 4 methods) |
212
+ | "Add repo-aware fields to persistence schema" | `- [ ] Add repo fields to schema and update serialization` |
213
+ | "Test merge failure scenarios" | `- [ ] Add tests for merge failure paths` |
214
+ | "Update merge flow to work per-repo" | `- [ ] Refactor merge to partition by repo` and `- [ ] Aggregate per-repo results` (two checkboxes — these are genuinely distinct outcomes) |
215
+
216
+ Over-hydrated examples (avoid):
217
+
218
+ | Too granular | Better |
219
+ |----------------|-----------|
220
+ | 10 checkboxes naming every function, parameter, and import to change | 2-3 checkboxes describing the behavioral changes |
221
+ | Separate checkboxes for "create file", "add imports", "add function", "export function" | One checkbox: "Create helper module with X capability" |
222
+ | One checkbox per test assertion | One checkbox per test scenario or category |
223
+
224
+ **Use `⚠️ Hydrate` markers** for steps that genuinely depend on runtime
225
+ discoveries — where the task creator cannot know the items upfront:
226
+
227
+ ```markdown
228
+ ### Step 2: Handle migration
229
+ **Status:** ⬜ Not Started
230
+ > ⚠️ Hydrate: Expand based on schema gaps identified in Step 1
231
+
232
+ - [ ] Implement v1→v2 compatibility (details depend on Step 1 findings)
233
+ ```
234
+
235
+ **When to use markers vs. pre-hydration:**
236
+
237
+ | Situation | Approach |
238
+ |-----------|----------|
239
+ | Outcomes are known at creation time | Pre-hydrate with outcome-level checkboxes |
240
+ | Details depend on analysis/discovery in a prior step | `⚠️ Hydrate` marker |
241
+ | Details depend on what exists on disk | `⚠️ Hydrate` marker |
242
+ | Reviewer feedback adds new items | Worker adds items (handled by worker agent) |
243
+
244
+ ### Worker Hydration at Runtime
245
+
246
+ Workers may expand checkboxes when entering a step — but should apply the same
247
+ principle: **add checkboxes for distinct outcomes discovered during exploration,
248
+ not for every individual code change.** The worker agent has hydration rules
249
+ (commit-before-implement, REVISE-triggered expansion). The goal is a useful
250
+ resumability checkpoint, not a line-by-line implementation journal.
251
+
252
+ ### Constraint: No New Steps at Runtime
253
+
254
+ **Workers MUST NOT add, remove, or renumber steps during execution.** The
255
+ task-runner extension parses the step list from PROMPT.md once at `/task` launch
256
+ and iterates that fixed list. Steps added to STATUS.md at runtime will appear in
257
+ the dashboard but **silently never execute**.
258
+
259
+ Hydration expands checkboxes *within* existing steps only. If a worker discovers
260
+ work that doesn't fit any step, it should add sub-checkboxes to the closest
261
+ existing step and log the overflow in the STATUS.md Discoveries table.
262
+
263
+ **Task creators:** ensure PROMPT.md has all necessary steps upfront. If a task's
264
+ scope might expand during execution, prefer fewer broad steps (the worker will
265
+ hydrate them) over many narrow steps that might need restructuring.
266
+
267
+ ---
268
+
269
+ ## PROMPT.md Amendment Policy
270
+
271
+ The template includes an `## Amendments` placeholder at the bottom of PROMPT.md.
272
+ Original content above the `---` divider is immutable — workers use that section
273
+ only for issues like missing prerequisites or contradictory instructions, not
274
+ scope expansion or style preferences.
275
+
276
+ ---
277
+
278
+ ## Dependencies Format
279
+
280
+ The orchestrator **machine-parses** this section using regex stick to the exact
281
+ patterns below. Non-standard formatting (e.g., missing bold markers, inline prose
282
+ without a task ID pattern) may cause silent dependency misses or `PARSE_MALFORMED`
283
+ errors at batch time.
284
+
285
+ ```markdown
286
+ ## Dependencies
287
+
288
+ - **Task:** TO-014 (PTO policy engine must exist)
289
+ - **Task:** employee-management/EM-003 (area-qualified when ID may be ambiguous)
290
+ - **External:** All backend services running (ports 8080-8085)
291
+ - **None**
292
+ ```
293
+
294
+ Notes:
295
+ - Use unqualified `TASK-ID` when globally unique
296
+ - Use `area-name/TASK-ID` for cross-area clarity or when orchestrator reports `DEP_AMBIGUOUS`
297
+
298
+ ---
299
+
300
+ ## Checklist (Definition of Ready)
301
+
302
+ Verify every task against this before reporting the launch command:
303
+
304
+ - [ ] `Next Task ID` read from CONTEXT.md and incremented
305
+ - [ ] Folder created at correct `task_areas` path with name `{PREFIX}-{###}-{slug}`
306
+ - [ ] Complexity assessed, review level assigned (0-3)
307
+ - [ ] Size assessed (S/M/L) split if XL
308
+ - [ ] PROMPT.md created from template with all required sections:
309
+ - [ ] `## Mission` with what AND why
310
+ - [ ] `## Dependencies` section
311
+ - [ ] `## Context to Read First` lists only needed Tier 3 docs
312
+ - [ ] `## File Scope` lists files/dirs the task will touch
313
+ - [ ] Each step has checkboxes with verifiable outcomes
314
+ - [ ] Explicit testing step with commands
315
+ - [ ] `## Do NOT` guardrails
316
+ - [ ] "Must Update" and "Check If Affected" doc lists
317
+ - [ ] `## Git Commit Convention` section (from template)
318
+ - [ ] `## Amendments` placeholder at bottom
319
+ - [ ] STATUS.md created with matching step structure
320
+ - [ ] Checkboxes match PROMPT.md granularity (1:1 where items are known)
321
+ - [ ] `⚠️ Hydrate` markers for discovery-dependent steps
322
+ - [ ] PROGRESS.md updated (add to "Active Tasks")
323
+ - [ ] Launch command reported: `/task {path}/PROMPT.md`
324
+
325
+ ---
326
+
327
+ ## Git Commit Convention
328
+
329
+ The prompt template includes a `## Git Commit Convention` section with the full
330
+ format table (`feat(TASK-ID):`, `fix(TASK-ID):`, `checkpoint: TASK-ID`, etc.).
331
+ Always include it — without task ID prefixes, there's no way to trace commits
332
+ back to the task that produced them (`git log --grep="PM-004"` only works if
333
+ the prefix is there).
334
+
335
+ ---
336
+
337
+ ## Orchestrator Awareness
338
+
339
+ Tasks are often executed in parallel batches by the task-orchestrator extension,
340
+ not just individually via task-runner. Two fields in PROMPT.md become load-bearing
341
+ in batch mode:
342
+
343
+ - **`## Dependencies`** — determines wave ordering. Tasks with unmet deps are
344
+ deferred to later waves. Incorrect or missing deps cause parallel execution of
345
+ tasks that should be serial, leading to merge conflicts or stale reads.
346
+ - **`## File Scope`** — determines lane affinity. Tasks with overlapping file
347
+ scope are assigned to the same lane (serial) to avoid merge conflicts. Without
348
+ file scope, the orchestrator distributes tasks randomly across lanes.
349
+
350
+ When creating multiple tasks for a batch, think about which tasks touch the same
351
+ files and make sure their file scopes reflect that.
352
+
353
+ ---
354
+
355
+ ## Key Principles
356
+
357
+ - **Documentation in every task.** Without "Must Update" and "Check If Affected"
358
+ lists, docs drift from reality and future tasks work from stale context.
359
+ - **Testing step required.** Workers can't distinguish pre-existing failures from
360
+ regressions they caused — every task needs a clean test pass to stay unblocked.
361
+ - **Self-contained PROMPT.md.** The worker starts with a fresh context and no
362
+ memory of the conversation that created the task. Everything it needs to begin
363
+ must be in PROMPT.md and the referenced docs.