npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@zle13/pi-todo

v0.2.0

Published

A visible todo list for Pi: session-scoped task tracking, /todos control surface, and a collapsible live overlay.

Readme

@zle13/pi-todo

Give the model a task list you can see. This package adds a todo tool, a /todos command, and a live collapsible panel above the editor to Pi Agent. The list is rebuilt from the session branch, so it survives /reload and compaction.

Adapted from @juicesharp/rpiv-todo (MIT; see LICENSE and NOTICE), rewritten with a command-driven control surface, session-scoped enablement, and an execution guard.

Install

Not yet published to npm. Until release, run it locally from this checkout:

pi -ne -e ./packages/todo          # one-off trial (--no-extensions avoids tool-name
                                   # conflicts with an already-installed todo package)
pi install -l ./packages/todo      # or install into this project's settings (-l = local)

Once published, it will be installable with pi install npm:@zle13/pi-todo. Restart your Pi session after installing.

Usage

/todos

| Invocation | Effect | | --- | --- | | /todos | Toggles tracking for the current session | | /todos status | Reports tracking state (on/off, collapsed/expanded) and the task list grouped by status | | /todos collapse | Collapses the panel to its one-line summary | | /todos expand | Expands the panel to full rows | | /todos view | Toggles between collapsed and expanded |

Anything else prints usage. Typing /todos offers prefix-filtered argument completions for status, collapse, expand, and view. A toggle never launches an agent turn.

Session-scoped enablement

Tracking starts off for every new session. A /todos toggle records an entry on the session branch, so enablement is remembered across resume and /reload, and inherited by forks. There is no global enablement switch. Each session lifecycle event (start, compaction, tree navigation — headless sessions included) reconciles the active tool set with the session's enablement, touching only the todo tool and never unrelated tools. Tracking does not auto-disable when tasks complete; the model is authorized to track complex work (3+ meaningful steps with meaningful, verifiable milestones) or explicit user requests while enabled.

The overlay

When tracking is on and tasks exist, a panel renders above the editor:

  • Collapsed (default): one width-safe line — ▸ Todos 1/3 · implementing controls — where the activity label comes from the in-progress task's activeForm. All completed: ▸ Todos 2/2 · all completed.
  • Expanded: a Todos (done/total) heading plus one row per task with status glyphs, #id prefixes when dependencies exist, blockedBy chains, and a +N more (2 completed, 1 pending) overflow summary past the row budget.

Task updates never expand the panel, a panel with no tasks disappears, and an all-completed summary stays visible until the list is cleared.

Tracking off

While a session's tracking is off:

  • the overlay is hidden;
  • the todo tool and its guidance are removed from model requests;
  • execute() is guarded even for indirect calls (e.g. via ctx.executeTool()).

Task state is preserved the whole time: /todos status still lists it, and /todos re-enables tracking where you left off.

The todo tool

Actions: create, update, list, get, delete (tombstone), and clear. Statuses: pending → in_progress → completed, plus deleted. Pass activeForm (a present-continuous label) when marking in_progress; it is shown in the panel and /todos output while the task runs.

Dependencies are expressed with blockedBy (create) or addBlockedBy / removeBlockedBy (update, additive merge). Dangling ids, deleted dependencies, self-blocks, and cycles are rejected before anything is written, and invalid mutations fail as tool errors. Every successful call — direct or indirect (nested ctx.executeTool() from another tool) — persists the full post-mutation snapshot as a session entry on the calling branch at execution time. Replay rebuilds the list from those snapshots in execution order; transcript tool results are not replayed (in a parallel batch they are recorded in call order after all executions, which can be stale).

Model guidance

While the tool is active, the model is guided to open a list for complex work with 3+ meaningful steps that have meaningful, verifiable milestones — or when the user explicitly asks for task tracking — not for artificial splitting and not merely because new instructions arrived, and to keep full completion discipline: mark work in progress before starting, complete immediately when done, never batch, and never complete with failing tests or partial work.

Preferences

The collapsed/expanded view is global and saved to ~/.config/pi-todo/config.json (or $XDG_CONFIG_HOME/pi-todo/config.json):

{
  "collapsed": true
}

Changes apply to the current process and future starts only — there is no live cross-process synchronization. A missing or malformed file falls back to the default (collapsed). Enablement is not stored here: it is per session, recorded on the session branch. The package only writes this file for view changes; nothing else reads or writes it.

Requirements

  • A Pi Agent host. No API key, no model selection, no native dependencies.
  • The panel renders in interactive sessions; /todos state changes also work headless (nothing is rendered).

Development

npm test --workspace @zle13/pi-todo      # vitest
npm run typecheck --workspace @zle13/pi-todo
npm run pack:check --workspace @zle13/pi-todo

License

MIT — see LICENSE. Derived from @juicesharp/rpiv-todo; attribution in NOTICE.