@gonrocca/zero-pi
zero-pi — an installable layer for pi (pi.dev): the zero spec-driven development workflow (explore → plan → build → veredicto) with per-phase model autotune and token-efficient batched builds. Adds capability to pi without modifying pi.
Package details
Install @gonrocca/zero-pi from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@gonrocca/zero-pi- Package
@gonrocca/zero-pi- Version
0.1.50- Published
- May 24, 2026
- Downloads
- 6,006/mo · 6,006/wk
- Author
- gonrocca
- License
- MIT
- Types
- extension, skill, theme, prompt
- Size
- 287.2 KB
- Dependencies
- 0 dependencies · 0 peers
Pi manifest JSON
{
"prompts": [
"./prompts"
],
"skills": [
"./skills"
],
"themes": [
"./themes"
],
"image": "https://raw.githubusercontent.com/gonzalonicolasr/zero-pi/main/assets/preview.png",
"extensions": [
"./extensions/zero-banner.ts",
"./extensions/zero-statusline.ts",
"./extensions/working-phrases.ts",
"./extensions/win-tree-kill.ts",
"./extensions/sdd-agents.ts",
"./extensions/conversation-resume.ts",
"./extensions/zero-models.ts",
"./extensions/autotune-extension.ts",
"./extensions/spec-merge-extension.ts",
"./extensions/zero-validate-extension.ts",
"./extensions/zero-status-extension.ts",
"./extensions/zero-pr-extension.ts",
"./extensions/zero-branch-extension.ts",
"./extensions/zero-git-validate-extension.ts",
"./extensions/zero-archive-extension.ts",
"./extensions/zero-issue-extension.ts",
"./extensions/zero-diff-extension.ts",
"./extensions/provider-guard-extension.ts",
"./extensions/scan-guard-extension.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
███████╗ ███████╗ ██████╗ ██████╗ ██████╗ ██╗
╚══███╔╝ ██╔════╝ ██╔══██╗ ██╔═══██╗ ██╔══██╗ ██║
███╔╝ █████╗ ██████╔╝ ██║ ██║ █████╗ ██████╔╝ ██║
███╔╝ ██╔══╝ ██╔══██╗ ██║ ██║ ╚════╝ ██╔═══╝ ██║
███████╗ ███████╗ ██║ ██║ ╚██████╔╝ ██║ ██║
╚══════╝ ╚══════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
@gonrocca/zero-pi
The zero spec-driven development workflow, packaged for pi.
💬 Join the community
Questions, ideas, or want to debate workflow design? Come hang out:
zero-pi is an installable pi package that adds a
disciplined spec-driven development pipeline — plus a handful of quality-of-life
extensions — without modifying pi. Same idea as gentle-pi: pi stays
untouched; zero-pi is a package it loads.
📦 Install
pi install npm:@gonrocca/zero-pi
pi install npm:pi-subagents # required — the pipeline delegates to sub-agents
Needs Node ≥ 20.6. Restart pi after an upgrade.
🛠 /forge — the SDD pipeline
The core of zero-pi. Run /forge <feature> and the orchestrator drives the
work through four phases, each delegated to its own sub-agent:
| Phase | Does |
|---|---|
| explore | Investigate the codebase read-only; produce findings. |
| plan | Write requirements, design, and an ordered task list. |
| build | Implement the plan. |
| veredicto | Review it adversarially and record a verdict. |
The verdict is pasa (done), corregir (re-run build), or replantear
(re-run plan). A hard iteration cap bounds the build↔veredicto loop — reached
without a pasa, the run stops and is reported as not verified.
/forge --continue [slug] resumes an interrupted run.
The run speaks Spanish, in a bounded, low-noise format — one short summary
per phase, naming the model that phase runs on, no raw tool output. Or just
describe the work and say "hacelo con sdd": the sdd-routing skill routes it
into /forge for you.
✨ What else it adds
| Feature | What it does |
|---|---|
/zero-models |
Pick the model + provider for each SDD phase — a boxed-window picker, or set one directly. |
| Autotune | Learns which model fits each phase from your run history and re-tunes itself. |
/zero-sync / /zero-archive |
Folds each run's spec delta into a canonical, project-wide spec store and archives approved runs. |
| Git / PR / Issues | /zero-branch, /zero-git-validate, /zero-pr, and /zero-issue keep branches and GitHub links audit-ready. |
| Run memory | Every run recalls and saves traces to Cortex, so runs learn from each other. |
| Provider guard | Warns when the anthropic provider runs on a metered API key instead of your subscription. |
| Startup banner | The violet ANSI-Shadow ZERO wordmark, drawn once at pi startup — ZERO_HEADER=off to disable. |
| Working-phrase ticker | Swaps pi's Working... for a context-aware Spanish phrase + spinner. |
| Conversation resume | Writes .pi/zero-resume.md on exit — the restore command + a conversation tail. |
| Windows tree-kill | Aborting a turn kills the whole process tree — no orphaned claude. |
| Skill auto-learning | Distills reusable skills from substantial tasks and surfaces them later. |
zero-sdd theme |
A dark, high-contrast pi theme tuned for SDD work. |
⌨️ Commands
| Command | Does |
|---|---|
/forge <feature> |
Run the SDD pipeline — --continue [slug] resumes. |
/zero-models [<phase>=[<provider>/]<model>] |
Show or set per-phase models — autotune=auto|ask|off. |
/zero-sync <slug> |
Fold a run's spec delta into the canonical spec store; a first all-## ADDED delta creates the store lazily. |
/zero-archive <slug> |
Merge an approved run into .sdd/specs/, move it to .sdd/archive/YYYY-MM-DD-<slug>/, and persist archivePath. |
/zero-validate <slug> |
Validate proposal/spec/design/tasks artifacts, including task schema and per-domain specs. |
/zero-status |
Show each .sdd/ run's artifact, sync, latest-verdict, and GitHub-link status. |
/zero-branch <slug> |
Create/reuse the configured SDD Git branch and persist branch/baseBranch. |
/zero-git-validate <slug> |
Check worktree, branch, remote, gh auth, and verdict gating before PR/archive. |
/zero-pr <slug> |
Create an audit-ready GitHub PR from a run that already has verdict pasa. |
/zero-issue <slug> |
Create or reuse a GitHub issue for a run and persist the link. |
/zero-diff <slug> |
Preview the logical spec-store merge without writing files. |
/zero-resume |
Write the session handoff note now. |
Git / PR / Issues
Recommended flow: /zero-branch <slug> → /zero-issue <slug> → /forge <slug> → /zero-git-validate <slug> --for=pr → /zero-pr <slug> → /zero-archive <slug>.
links.json is forward-compatible and may contain:
{
"issueNumber": 12,
"issueUrl": "https://github.com/org/repo/issues/12",
"branch": "sdd/my-feature",
"baseBranch": "main",
"prNumber": 34,
"prUrl": "https://github.com/org/repo/pull/34",
"archivePath": ".sdd/archive/2026-05-24-my-feature"
}
/zero-branch <slug> uses .sdd/config.json when present:
{ "git": { "branchPrefix": "sdd/", "numbering": false, "autoCommit": false, "commitStyle": "conventional", "baseBranch": "main" } }
/zero-pr <slug> builds a PR title/body from .sdd/<slug>/proposal.md,
spec.md, design.md, and tasks.md, then saves the returned prNumber and
prUrl into .sdd/<slug>/links.json. It only runs after the run's latest
recorded verdict is pasa; if an issue was already linked, the PR body includes
Closes #N.
/zero-issue <slug> searches open GitHub issues for the exact normalized title
before creating a new one, then saves issueNumber and issueUrl in the same
links.json. Both commands require the gh CLI to be installed and
authenticated (gh auth login). --type=<label> is optional: when the label
exists in the repository it is passed to gh, and when it does not exist the
command continues without it.
The implementation shells out through gh rather than GitHub-specific Node
SDKs, keeping zero-pi dependency-free and portable across Windows, macOS, and
Linux as long as GitHub CLI is on PATH.
Spec deltas
/zero-sync and /zero-diff understand four delta sections: ## ADDED, ## MODIFIED, ## REMOVED, and ## RENAMED. RENAMED keeps the requirement's store position while changing its stable name:
## RENAMED
### REQ: new-name
from: old-name
Updated requirement body.
Acceptance criteria:
- ...
🔧 Configuration
zero-pi keeps its state in ~/.pi/zero.json (per-phase models + autotune mode)
and ~/.pi/zero-runs.jsonl (the run-metrics log); per-project artifacts live
under .sdd/. Set ZERO_RESUME=off to disable the conversation-resume note.
Continuous integration
The .github/workflows/zero-pi-ci.yml workflow runs on every push to main and
on every pull request that touches packages/zero-pi/**. It enforces npm test
and npm run pack-check for the package.
🔗 Relationship to zero
zero-pi is the pi layer of the zero integrator. The zero CLI installs it
onto pi and writes the per-phase model config; you can also install zero-pi on
its own with the command above.
Development
Dependency-free, no build step — pi loads the TypeScript extensions directly.
Run the test suite with npm test.
License
MIT © Gonzalo Rocca · github.com/gonzalonicolasr/zero-pi
