---
task-id-prefix: 'EX'
projects:
- label: 'Example Project'
path: '.'
value: 'example-project'
task-statuses:
- label: 'Planning'
value: 'planning'
description: 'Define the goals and scope.'
- label: 'Triage'
value: 'triage'
description: 'Decide how to approach the work.'
- label: 'Research'
value: 'research'
description: 'Investigate before planning or execution.'
- label: 'Ready'
value: 'ready'
description: 'Ready to be worked on.'
- label: 'In Progress'
value: 'in_progress'
description: 'Work is underway.'
- label: 'Testing'
value: 'testing'
description: 'Awaiting human review or verification.'
- label: 'Blocked'
value: 'blocked'
description: 'Waiting on a dependency or decision.'
- label: 'Done'
value: 'done'
description: 'Completed and verified by a human.'
- label: 'Cancelled'
value: 'cancelled'
description: 'No longer applicable.'
task-types:
- value: 'task'
label: 'Task'
description: 'A project deliverable or activity.'
- value: 'chore'
label: 'Chore'
description: 'Routine maintenance or administrative work.'
- value: 'feature'
label: 'Feature'
description: 'A new capability, when relevant to the project.'
- value: 'bug'
label: 'Bug'
description: 'A defect to fix, when relevant to the project.'
---
# Project Task Tracker
## Working with Tasks
This tracker works for any project, including writing, research, and software.
`testing` means awaiting review or verification; it does not require automated
tests. This is a sample backlog. Customize the sample task for your project.
### Configuration
- `task-id-prefix` controls display IDs and anchors. This example uses `EX`.
- `TASK_ID_PREFIX` overrides frontmatter; the script default is `EX`.
- Prefixes start with a letter and contain letters, digits, underscores, or
hyphens. Display IDs are uppercase; anchors are lowercase.
- Numbers are globally monotonic with at least three digits. Use a number alone
with task commands to avoid dependence on the configured prefix.
- After changing the prefix, run `./scripts/update-tasks` to migrate IDs and
internal links without changing task numbers.
- `projects` defines labels, keys, and repository-relative paths. If renaming
a project key, update corresponding task anchor `data-project` attributes.
- All task commands accept `-f /path/to/tasks.md`; exported `TASKS_FILE` sets
the default tracker.
- Optional `epics` and `subprojects` can group work. Define their values and
labels in frontmatter before assigning them.
### Commands
The CLI tools require Python 3.9+ and Bash or Zsh. They are optional; you can
also maintain this Markdown tracker with your assistant.
```bash
source ./scripts/env.sh
./scripts/get-tasks --all
./scripts/get-tasks --accept "Status:Ready"
./scripts/get-task 1 --json
./scripts/add-task "Outline the next deliverable" --project example-project --type task --status triage
./scripts/update-task 1 --status in_progress
./scripts/update-task 1 --append-description "- [ ] Additional review criterion"
./scripts/update-task 1 --status testing --check-all
./scripts/update-tasks
```
Task anchor attributes in **Detailed Tasks** are the canonical metadata.
Do not manually edit generated summary or enum tables; regenerate them with
`update-tasks`. Working agents transition completed work to `testing`, not
`done`. A human confirms completion.
See the [script guide](../scripts/README.md) and
[getting started guide](../README.md) for details.
## Overall Progress
| ID | Title | Project | Status | Type |
|:-----|:-------------------------|:--------------|:-----|:--------------|
| EX-001 | Define the project's goals | Example Project | Ready | [Task](#ex-001) |
---
## Detailed Tasks
### Define the project's goals
**ID:** EX-001
**Project:** Example Project
**Status:** Ready
**Type:** Task
**Description:**
Replace this sample with the first meaningful activity for your project.
- [ ] Describe the intended outcome and audience.
- [ ] Identify the first deliverable.
- [ ] Agree on how the deliverable will be reviewed or verified.
---
## Notes
#### Projects (Rendered from frontmatter projects)
#### Task Statuses (Rendered from frontmatter task-statuses)
#### Task Types (Rendered from frontmatter task-types)