pi-simple-tasks
A task list for the pi agent, pinned above the composer instead of repeated in the transcript.
Package details
Install pi-simple-tasks from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-simple-tasks- Package
pi-simple-tasks- Version
0.1.3- Published
- Aug 30, 2026
- Downloads
- 692/mo · 30/wk
- Author
- usamaasfar
- License
- MIT
- Types
- extension
- Size
- 14.9 KB
- Dependencies
- 0 dependencies · 4 peers
Pi manifest JSON
{
"extensions": [
"./extensions"
],
"image": "https://raw.githubusercontent.com/usamaasfar/pi-simple-tasks/main/media/demo.gif"
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-simple-tasks
A minimal pi extension that gives the agent a tasks tool: one call, the
complete list, pinned above your composer as a checklist that updates in place.

Schema (what the agent sends)
{ "tasks": [
{ "title": "Set up the project", "done": true, "subtasks": [
{ "title": "init", "done": true },
{ "title": "add deps", "done": true }
]},
{ "title": "Write the extension", "done": false },
{ "title": "Test it", "done": false }
]}
What it renders
Tasks (1/3 done)
[x] 1. Set up the project
[x] init
[x] add deps
[ ] 2. Write the extension
[ ] 3. Test it
Design
- Rebuild semantics. Every call replaces the whole list, so the agent just re-emits it with
updated
doneflags. No ids, no diffing, no partial-update actions to get wrong. - No external state. The list lives in the tool result's
details, which pi persists in the session. It survives/reload, compaction, and session branching — on a branch,session_treereplays the branch's tool results, so the list is automatically correct for that point in history. - It gets out of the way. The widget is pinned only while something is unfinished;
completing the last task takes it down, and
tasks_resetclears the list outright. - Two renderers.
renderCallshowstasks 3 item(s)while it runs;renderResultdraws the themed checklist./tasksopens the same list in an overlay for the user.
Install
pi install npm:pi-simple-tasks # once published to npm
pi install git:github.com/usamaasfar/pi-simple-tasks
pi install /path/to/pi-simple-tasks # local checkout
Add -l to install into project settings (.pi/settings.json) instead of your user
settings, so the whole team gets it. To try it for one run without installing:
pi -e npm:pi-simple-tasks
Usage
The agent calls tasks on its own once the tool is loaded. To see the current list yourself:
/tasks # overlay in the TUI, Esc to close
After editing tasks.ts, /reload picks up the change without restarting pi.
Development
The extension lives in extensions/tasks.ts. .pi/settings.json registers the repo root
as a local package ({"packages": [".."]} — relative paths resolve against the settings
file), so running pi here loads the working copy through the same manifest a published
install uses. /reload picks up edits.
npm run check # biome: format + lint + organize imports, writing fixes
npm run lint # lint only
npx tsc --noEmit # typecheck
Publishing
npm version patch # or minor/major
npm publish # requires npm login
git push --follow-tags
files limits the tarball to extensions/, and the pi runtimes (@earendil-works/*,
typebox) are peer dependencies with a * range — pi bundles them, so they must not be
shipped inside the package. Packages tagged with the pi-package keyword appear in the
gallery; add pi.image or pi.video to the manifest for a preview.