pi-todo.txt

Pi extension for tracking multi-step work as standard todo.txt entries

Packages

Package details

extension

Install pi-todo.txt from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-todo.txt
Package
pi-todo.txt
Version
0.2.2
Published
Sep 29, 2026
Downloads
261/mo · 13/wk
Author
jarkkojs
License
Apache-2.0
Types
extension
Size
50.8 KB
Dependencies
0 dependencies · 4 peers
Pi manifest JSON
{
  "extensions": [
    "./dist/index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-todo.txt

Pi extension for tracking multi-step work as standard todo.txt entries.

Install

pi install npm:pi-todo.txt

Or from the GitLab repository:

pi install git:gitlab.com/jarkkojs/pi-todo.txt

Tool

The model-facing todo tool stores the task list as todo.txt in the working directory. It supports create, update, complete, list, and delete. todo.txt is the source of truth. Every action processes the file first: it re-reads todo.txt, adopts entries added outside the session, drops tasks the file no longer lists, repairs broken lines (lowercase priority, x without a date, blank and comment lines), applies the action, and writes the list back atomically. The file is watched while the session runs, so an editor, !rm todo.txt, or another agent is mirrored into the list within a moment: deleting the file empties it. Tasks keep their id as long as a matching line survives. The file is never created in a project that does not already have one until the first task exists.

Snapshots are also stored in Pi session history, so branch navigation and reloads restore the corresponding list. After compaction, the extension restores the current state to agent context as hidden, explicitly structured task data so progress is not lost or mistaken for new instructions. The list stays off screen until you open it with /todo.txt.

Each entry is one line with optional priority (A)-(Z) at the start, optional creation date, +project tags, @context tags, and key:value metadata such as due:YYYY-MM-DD. Completed tasks are written as x YYYY-MM-DD ...; completion preserves priority as pri:A.

Command

/todo.txt slides a full-width pane up from the bottom of the terminal, showing tasks with priorities, +project tags, @context tags, and key:value metadata. Use the arrow keys to move the cursor and Space to select tasks (shown with a ✓ mark). Press a to add a free-form todo.txt line, or e to edit the entry under the cursor. Both prompts validate the line with the same rules as the tool before accepting it. Press Enter to open an implementation confirmation, then Enter again to implement the selected tasks (or the task under the cursor when none are selected). Press Ctrl+D to open the equivalent deletion confirmation. Press c to confirm removal of completed entries; tasks completed or added after the prompt remain.

The pane updates todo.txt on open and after every add, edit, and delete. External changes are picked up automatically while the session runs, including when a filesystem watch event is missed. Each write sorts open tasks by priority with completed tasks last, and completing a prioritized task uses the todo.txt pri:A metadata convention to preserve its former priority.

Development

npm install
npm run all

Scripts:

Script Purpose
build Bundle the extension entry to dist/
fmt Format sources with oxfmt
lint Lint with oxlint
check Typecheck with tsc --noEmit
test Build, then run vitest
all Format, lint, typecheck, and test

Release:

./scripts/release.sh <next-version>

License

Apache-2.0. See LICENSE.