@inobit/pi-todo
Minimal-intrusion task list extension for the Pi coding agent: a `todo` tool, a `/todos` command, and a live panel above the editor. State is replayed from the session branch, so it survives /reload and compaction.
Package details
Install @inobit/pi-todo from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@inobit/pi-todo- Package
@inobit/pi-todo- Version
0.2.1- Published
- Sep 24, 2026
- Downloads
- 441/mo · 371/wk
- Author
- inobit
- License
- MIT
- Types
- extension
- Size
- 58 KB
- Dependencies
- 0 dependencies · 4 peers
Pi manifest JSON
{
"extensions": [
"./src/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@inobit/pi-todo
English | 中文
Minimal-intrusion task list extension for Pi coding agent: todo tool + /todos command + persistent panel above the editor.
- Low prompt intrusion: 3
promptGuidelines, decision-tree styledescription, only 6 core schema params — ~1.1 KB prompt overhead per turn - State on the session branch: each tool call writes a slim snapshot (
id/subject/status/activeForm) into the tool resultdetails; automatically restored after/reload, context compaction, and branch switches — zero disk writes - Session isolation: state is partitioned by session id, child/parallel sessions never pollute each other
Installation
pi install npm:@inobit/pi-todo
Restart the Pi session to take effect. For local development, symlink to ~/.pi/agent/extensions/pi-todo (Pi auto-loads the entry declared in pi.extensions); run /reload after code changes.
Usage
- Describe a multi-step task and the agent will call the
todotool to plan and track it, with live panel updates:todo create <subject> [description]— create a tasktodo update <id> <status> [activeForm]— advance status (in_progress/completed, optional running label like "writing tests")todo list [status]/todo get <id>/todo delete <id>/todo clear
/todos: fullscreen grouped list (Pending / In Progress / Completed),Escapeto close- Panel collapse:
alt+t(ctrl+shift+talso works as an alias), or left-click the header row (hosts with mouse dispatch); collapsed panel is a single line with status counts - Panel budget: at most
maxLineslines (default 7), unfinished tasks always kept; completed tasks auto-trim totargetLines(default 5) 3s after completion, oldest first
Task states pending → in_progress → completed; completed is only set explicitly by the model. Deletes use a tombstone to prevent id reuse.
Configuration
Optional config.json (global ~/.pi/agent/extensions/pi-todo/config.json, or project <cwd>/.pi/extensions/pi-todo/config.json when trusted):
{ "maxLines": 7, "targetLines": 5 }
Requires 2 <= targetLines <= maxLines; invalid entries fall back to defaults, and targetLines above maxLines clamps to maxLines.
Development
pnpm --filter @inobit/pi-todo check # tsc --noEmit
pnpm --filter @inobit/pi-todo test # vitest
pnpm --filter @inobit/pi-todo pack:check
pi -ne -e ./packages/pi-todo
License
MIT