Taskplane tasks are file-based packets.
Canonical folder:
<task-folder>/
├── PROMPT.md # task definition
├── STATUS.md # execution state / memory
├── .reviews/ # reviewer outputs (created by runner)
└── .DONE # completion marker
# Task: <ID> — <Name>
**Created:** YYYY-MM-DD
**Size:** S|M|L
## Review Level: 0|1|2|3
## Mission
...
## Dependencies
- **None**
# or dependency list
## Context to Read First
- `path/to/doc.md`
## File Scope
- `src/file.ts`
## Steps
### Step 0: Name
- [ ] checklist item
- [ ] checklist item
### Step 1: Name
- [ ] ...
## Completion Criteria
- [ ] ...
---
## Amendments (Added During Execution)- A parseable task ID (prefer heading format)
- At least one step in
### Step N: ...format - Checkbox items (
- [ ]) inside steps
## Review Level: N**Size:** S|M|L## Dependencies## Context to Read First## File Scope## Segment DAG(optional, for explicit multi-repo segment ordering)## Completion Criteria
If omitted, parsers apply defaults in some paths (for example size/review defaults).
Preferred heading:
# Task: AUTH-014 — Add role checksNotes:
- Orchestrator parser prefers
# Task: <ID> - <Name>style and falls back to folder name ID extraction. - Task-runner parser is more permissive and can also parse
# <ID> - <Name>. - For consistent behavior across
/taskand/orch, always use# Task: <ID> — <Name>.
Folder name convention:
AUTH-014-add-role-checks
Steps must use:
### Step <number>: <name>Checklist items must use markdown checkbox syntax:
- [ ] Do thing
- [x] Done thingTask-runner executes by scanning for the first unchecked checkbox in current scope.
When a task spans multiple repos, use level-4 headings within each step to assign checkboxes to specific repos:
### Step 1: Create utilities and API client
#### Segment: shared-libs
- [ ] Create string utility module
- [ ] Export from package index
#### Segment: web-client
- [ ] Add API client wrapper
- [ ] Wire into app initializationRules:
- Marker format:
#### Segment: <repoId>(case-sensitive, must match workspace config) - Single-repo tasks do not need segment markers (the engine applies a default)
- Every step in a multi-repo task should have explicit segment markers
- The final documentation/delivery step uses the packet repo (the repo containing PROMPT.md)
Use ## Dependencies section.
Accepted forms include:
## Dependencies
- **None**## Dependencies
- AUTH-003
- BIL-002## Dependencies
- auth/AUTH-003
- billing/BIL-002## Dependencies
**Requires:** AUTH-003
**Requires:** billing/BIL-002Recommendations:
- Use area-qualified IDs in larger multi-area projects.
- Keep dependency IDs canonical (
PREFIX-NNN).
Example:
## Context to Read First
- `README.md`
- `docs/architecture.md`Use backticked file paths. Keep list minimal and task-relevant.
Example:
## File Scope
- `extensions/taskplane/engine.ts`
- `.pi/task-orchestrator.yaml`Describe intended modification surface to improve planning/review quality.
Use when a task intentionally spans multiple repos and needs explicit intra-task ordering.
## Segment DAG
Repos:
- api
- web-client
Edges:
- api -> web-clientNotes:
- Optional section — omission keeps legacy behavior.
Repos:andEdges:keys may be markdown-decorated (e.g.**Repos:**).- Repo IDs are normalized to lowercase.
- Edge endpoints must appear in
Repos:. - Self-edges and cycles are invalid and fail discovery.
STATUS.md tracks runtime progress. It is updated continuously by task-runner.
Typical header fields:
**Current Step:** ...
**Status:** ...
**Last Updated:** ...
**Review Level:** ...
**Review Counter:** ...
**Iteration:** ...
**Size:** ...Per-step sections mirror PROMPT.md steps and track checkbox completion.
Task-runner can auto-generate STATUS.md from PROMPT.md if missing.
Use a divider before amendments:
---
## Amendments (Added During Execution)Treat content above divider as canonical task definition.
# Task: TP-001 — Add greeting endpoint
**Created:** 2026-03-14
**Size:** S
## Review Level: 1
## Mission
Add a small HTTP endpoint that returns a greeting.
## Dependencies
- **None**
## Steps
### Step 0: Implement
- [ ] Add endpoint handler
- [ ] Register route
### Step 1: Verify
- [ ] Run unit tests
## Completion Criteria
- [ ] Endpoint responds with 200 and expected payload
---
## Amendments (Added During Execution)