Superseded runtime guide: use SSOT omptask. The live model tool is backlog, not OMP’s reserved task; runtime imports are @oh-my-pi/*.

Native Oh My Pi task tracking. One .ts extension + one YAML file. No MCP, no DB, no CLI.

Runtime location

The live wrapper is ~/.omp/agent/extensions/taskmaster.ts, which re-exports src/taskmaster.ts; keep both files together. Canonical runtime details: SSOT omptask.

Current API surface

  • pi.on("before_agent_start", (e,ctx) => ({ systemPrompt: [...e.systemPrompt, "<active task>"] })) — auto-inject focus.
  • pi.registerTool({ name:"backlog", parameters /*pi.zod*/, execute }) — actions: init | list | next | add | update | expand | parse_prd.
  • pi.registerCommand("tm", { handler }) — human summary.
  • State: .taskmaster/tasks.yml{ id, title, status, priority, deps[], description?, details?, subtasks?[] }.
  • next = pending tasks whose deps are done/cancelled, ranked by priority → dep-count → id.

NOT this (the old draft was fiction)

omp.registerHook / ctx.systemPrompt += / 3-arg registerTool / extension.yml manifests / js-yaml do not exist in OMP.