@wayofmono/pi-todo
Session-scoped todo list with 4 statuses and 3 priorities for pi coding agent
Package details
Install @wayofmono/pi-todo from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@wayofmono/pi-todo- Package
@wayofmono/pi-todo- Version
0.1.1- Published
- Sep 4, 2026
- Downloads
- 256/mo · 19/wk
- Author
- zerwiz
- License
- MIT
- Types
- extension
- Size
- 22.7 KB
- Dependencies
- 0 dependencies · 3 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
@wayofmono/pi-todo
Session-scoped todo list with 4 statuses and 3 priorities for Pi Coding Agent.
Install
pi install npm:@wayofmono/pi-todo
Restart your Pi session.
Quick Start
Run /todos after restart to open the interactive todo panel. On a fresh session it shows:
No todos.
Then ask the agent to create todos: "Add a repository layer with tests, track it as todos". The model calls the todo tool and the panel appears above the editor.
Features
- 4 statuses:
pending,in_progress,completed,cancelled - 3 priorities:
high,medium,low - Survives
/reloadand compaction — state rebuilt from session branch - Interactive panel — press
Ctrl+CorEscapeto close - Single in-progress enforcement — model auto-resets previous in-progress
Commands
| Command | Description |
|---|---|
/todos |
Open interactive todo panel |
Tool: todo
| Action | Parameters | Description |
|---|---|---|
list |
— | List all todos |
add |
content, priority? |
Add new todo |
update |
index, status?, priority?, content? |
Update todo |
remove |
index |
Remove todo |
clear |
— | Clear all todos |
replace |
todos[] |
Replace entire list |
Status values
pending(○) — defaultin_progress(►) — auto-clears other in_progresscompleted(✓) — donecancelled(✗) — abandoned
Priority values
high(HIGH)medium(med) — defaultlow(low)
Example Usage
// Add a todo
await todo({ action: "add", content: "Write tests", priority: "high" })
// Mark in progress
await todo({ action: "update", index: 0, status: "in_progress" })
// Complete it
await todo({ action: "update", index: 0, status: "completed" })
How It Works
State is stored in session entries (tool results). On session_start and session_tree, the extension replays the branch and reconstructs the todo list from the latest todo tool result. No disk writes — survives /reload and compaction automatically.
License
MIT