Skip to content

Tasks Board

The Tasks board reads the .ptah/specs/ folder in your workspace and renders it as a Kanban board. Every card is a real folder on disk. Every status change writes back to a file you can read, diff, and commit.

Open it from Tasks in the navigation rail.

A task is a folder under .ptah/specs/. The folder name is the task id.

<workspace>/.ptah/specs/
├── TASK_2026_104/
│ ├── task.md ← the carrier (required)
│ ├── context.md ← user intent and narrative
│ ├── implementation-plan.md
│ └── code-review.md
└── TASK_2026_105/
└── task.md

task.md is the carrier. A folder without it is invisible to the board. The carrier holds YAML frontmatter plus a short body:

---
status: in_progress
type: FEATURE
title: Add Telegram voice replies
estimate: M
---
Wire the gateway's voice path to the outbound reply channel.

The folder name always wins. If the frontmatter carries an id: that disagrees with the folder name, the board shows a warning and uses the folder name.

StatusMeaning
backlogNot started.
in_progressBeing worked on now.
in_reviewWork is done, review is not.
blockedWaiting on something outside the task.
doneFinished.
cancelledDropped. Kept for the record.

Drag a card between columns to change its status. Ptah patches the status: line in task.md and re-reads the board. Nothing moves on the board until the write succeeds, so what you see is always what is on disk.

Each task carries a type and an optional estimate.

Types: FEATURE, BUGFIX, REFACTORING, DOCUMENTATION, RESEARCH, DEVOPS, SAAS_INIT, CREATIVE. These are the same eight types the orchestration workflow recognizes.

Estimates: XS, S, M, L, XL. These are relative t-shirt sizes and nothing more. Ptah deliberately assigns them no numeric value and never sums a column — a rough signal must not be read as a commitment.

Two layouts show the same data.

  • Kanban — six columns, drag between them.
  • List — one row per task, with the id, title, description, and metadata.

Switch layouts from the view control. Your choice is remembered per machine, not per project, because it is a personal preference rather than a project setting.

Click a card to open its detail panel. The panel shows:

  • The frontmatter facts — status, type, estimate, title.
  • depends_on — which tasks this one waits for.
  • Validation warnings, if the carrier has any.
  • The task.md body, rendered as markdown.
  • The workflow documents present in the folder.

A task folder can hold documents from each stage of work — the context, the task description, the implementation plan, the batch breakdown, review reports, and a research report. Each present document gets two controls:

ControlWhat it does
Read hereRenders the document inside the detail panel.
Open in editorOpens the file in the editor for editing.

These are different intents. Use Read here to check what a stage produced. Use Open in editor when you want to change it.

Cards and rows carry a Start control. It hands the task to the orchestration workflow, which reads the carrier and the plan and begins work.

You can start a task in an isolated git worktree so its edits do not touch your working tree. See Worktrees.

Click New Task in the board header. Ptah allocates the next id for the current year, creates the folder, and writes a valid carrier.

Ids are allocated by scanning the folders on disk, not by reading an index. A stale index can never cause a collision.

A folder under .ptah/specs/ that Ptah cannot read as a task is excluded, and the board lists it by name in the exclusions drawer with the reason.

Ptah never reports a count alone. A count tells you that folders vanished without telling you which or why, and that silent drop is exactly what the drawer exists to prevent. The most common cause is unparseable frontmatter.

Registry generates a summary document of every task. Reindex rescans .ptah/specs/ from scratch. Reindex is the fix when you have edited carriers outside Ptah and want the board to catch up immediately.

The board also refreshes on its own. An agent writing spec folders pushes a change notification, and the board re-reads when it is on screen.

The same task tree is readable and writable from the headless CLI:

Terminal window
ptah spec list --status backlog,in_progress
ptah spec show TASK_2026_104
ptah spec status TASK_2026_104 --to in_review
ptah spec new --title "Add voice replies" --type FEATURE
ptah spec doctor
ptah execute-spec --id TASK_2026_104

See Ptah CLI commands.