pi-simple-tasks

A task list for the pi agent, pinned above the composer instead of repeated in the transcript.

Packages

Package details

extension

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.

The task list updating above the composer while the agent works

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 done flags. 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_tree replays 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_reset clears the list outright.
  • Two renderers. renderCall shows tasks 3 item(s) while it runs; renderResult draws the themed checklist. /tasks opens 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.