@nilskluewer/pi-simple-todo
Minimal Claude Code / opencode style todo-list tracking for the Pi coding agent: one tool, one active task at a time.
Package details
Install @nilskluewer/pi-simple-todo from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@nilskluewer/pi-simple-todo- Package
@nilskluewer/pi-simple-todo- Version
0.1.0- Published
- Jul 2, 2026
- Downloads
- 77/mo · 10/wk
- Author
- nilskluewer
- License
- MIT
- Types
- extension
- Size
- 13.6 KB
- Dependencies
- 0 dependencies · 5 peers
Pi manifest JSON
{
"extensions": [
"./extensions/simple-todo.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-simple-todo
Minimal, Claude Code / opencode style todo-list tracking for the Pi coding agent. One tool, one active task at a time — nothing more.
Why
Pi already ships an example todo extension, and there are richer community options (dependency graphs, subagent orchestration, file-backed multi-session stores). This package intentionally does none of that. It exists for the common case: keep the agent honest about a plan during a single, longer task.
What it does
- Registers a single tool,
todo_write, which replaces the entire todo list on every call ({ content, status }[], status ispending/in_progress/completed). - Hard-enforces at most one
in_progressitem at a time — the strongest single lever against goal drift in agentic loops. - Shows the current list live: a footer status (
☑ 1/3) and a widget above the editor with✓/▶/○markers. - Adds an ephemeral, Claude-Code-style
<system-reminder>when the list has stalled (pending items exist but nothing isin_progress). The reminder is injected only into the outgoing model request, never written to the session file. - Reconstructs state from the session branch (same pattern as Pi's bundled
examples/extensions/todo.ts), so/forkand/treenavigation keep the right todo state for that point in history automatically. /todoscommand opens an interactive read-only overlay of the current list.
What it deliberately does not do
- No
todo_readtool — the live widget/status already show current state. - No per-id CRUD, no dependency graph (
blockedBy/blocks), no cycle detection. - No file-backed store, no cross-session/multi-agent locking.
- No subagent execution or task orchestration.
If you need any of that, see @tintinweb/pi-tasks or @juicesharp/rpiv-todo.
Install
pi install npm:@nilskluewer/pi-simple-todo
Project-local instead of global:
pi install npm:@nilskluewer/pi-simple-todo -l
Try without installing:
pi -e npm:@nilskluewer/pi-simple-todo
Usage
Nothing to configure. Once active, the agent calls todo_write on its own
for multi-step tasks. You can also check progress any time with:
/todos
License
MIT