@danielsuhett/pi-openspec-tracker
Read-only OpenSpec task tracker extension for Pi
Package details
Install @danielsuhett/pi-openspec-tracker from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@danielsuhett/pi-openspec-tracker- Package
@danielsuhett/pi-openspec-tracker- Version
0.2.0- Published
- Aug 19, 2026
- Downloads
- 366/mo · 12/wk
- Author
- danielsuhett
- License
- MIT
- Types
- extension
- Size
- 27.1 KB
- Dependencies
- 0 dependencies · 2 peers
Pi manifest JSON
{
"extensions": [
"./extensions"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
OpenSpec Tracker
A small footer that keeps your next OpenSpec task visible in Pi.
OpenSpec Tracker is a read-only Pi extension. It reads
openspec/changes/*/tasks.md, identifies the most relevant change, and shows
its progress and next open task in the footer — without editing the
specification or creating another task system.
Why use it?
- Immediate context: see task progress and the active task title in Pi's footer.
- Smart selection: uses the current branch, the last successful
openspec apply, or the most recently modifiedtasks.md. - Automatic updates: changes to task files appear while Pi is idle.
- Persistent state: the selected change and task survive session reloads.
- Safe by design: the extension only reads tasks and watches files; it never modifies OpenSpec.
Installation
After the package is published to npm:
pi install npm:@danielsuhett/pi-openspec-tracker
Or install it directly from this public repository:
pi install git:github.com/DanielSuhett/pi-openspec-tracker
To test a local checkout during development:
pi -e ./extensions/openspec-tracker.ts
Restart Pi or run /reload after installation.
Usage
In a project containing openspec/changes:
/openspec-track
The command opens a selector to enable or disable the tracker. It also accepts:
/openspec-track on
/openspec-track off
/openspec-track another-change#1.1
/openspec-track clear
The expected change layout is:
openspec/
└── changes/
└── my-change/
└── tasks.md
Tasks must use the standard OpenSpec format:
- [ ] 1.1 Implement the change
- [x] 1.2 Validate the result
Changes in openspec/changes/archive and openspec/changes/specs are ignored.
How is the change selected?
The extension resolves the scope in this order:
- Manually selected or session-persisted change;
- Current branch (
my-changeorspec/my-change); - Change from the last successful
openspec apply; - Most recently modified
tasks.md.
Manual selection always takes priority and can switch the current change without modifying any project files.
Development
Requirements: Node.js >=22.6.0, npm, and a compatible Pi version.
npm ci
npm run verify
Individual checks:
npm test
npm run typecheck
npm run pack:check
The extension does not need to be compiled: Pi loads TypeScript directly, and
the package manifest in package.json registers extensions/
as a Pi resource.
Project structure
extensions/openspec-tracker.ts Pi lifecycle and UI integration
src/core.ts task parser, selection, and progress summary
test/ unit tests and extension smoke tests
.github/workflows/ci.yml tests, typecheck, packaging, and installation
Contributing
Issues and pull requests are welcome. Please read
CONTRIBUTING.md and CODE_OF_CONDUCT.md
before contributing.
License
MIT © 2026 Suhett.