specpi

Scope control and a human-selected harness improvement loop for Pi

Packages

Package details

extensionskill

Install specpi from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:specpi
Package
specpi
Version
0.27.0
Published
Sep 19, 2026
Downloads
2,156/mo · 1,055/wk
Author
tannermidd
License
MIT
Types
extension, skill
Size
593.9 KB
Dependencies
0 dependencies · 4 peers
Pi manifest JSON
{
  "skills": [
    "./skills"
  ],
  "extensions": [
    "./extensions"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README


SpecPi is a small starting point for the Pi coding agent. It is one opinionated setup for how the agent should work, not a marketplace of plugins.

At the center are two built-in extensions. Scope control keeps each task to the files it said it would touch. The improvement loop turns repeated friction into small, tested changes to the setup, instead of letting prompts and workarounds pile up. Around those are eight hand-picked packages, each locked to an exact version and checked before anything installs, plus SpecPi Chat, a VS Code panel for working alongside the agent.

It focuses on five things:

  • Control: clear scope, tool permissions, and lifecycle commands that ask before they change anything
  • Accuracy: exact version pins, checksums on state, rollback on failure, and proof over promises
  • Improvement: local notes become small, checked changes through /harness-improvement
  • Efficiency: delegation, persistent goals, and browser QA handled by the right tool for the job
  • Lean default: web access, browser QA, and delegation stay off until you need them. Turn them on for a session with /webaccess on, /browser on, and /delegate on — or let the agent ask when it hits the need, and answer the prompt

Everything it touches is written down, versioned, and easy to undo.

Measured context

This chart shows first-call context from a clean install: all seven pinned packages, the working agreement, and the skills Pi finds. It predates specpi-jev-guard, the eighth pin, and has not been re-measured since. "Enabled" means browser QA, delegation, and web access are switched on, with no goal, scope, or improvement selection active.

The solid rows are measured by us, from the request each setup actually sends through one local test provider. That includes OpenCode, the DeepSeek Harness, and Oh My Pi, all measured as installed. The faded Codex CLI and Claude Code rows come from HarnessTax's published numbers, measured under their own setup. Treat those as a rough reference, not a head-to-head test. These are character counts. They say nothing about tokens, cost, or how well each tool does the job. The research page breaks down the enabled setup by feature, so you can see what each switch costs on its own.

The gap between the two SpecPi bars comes from a few separate switches, so the enabled tools are also measured group by group. For example, the fourteen browser QA tools add up to less than the four web access tools:

Harness evaluations

The chart above counts characters. It says nothing about what a harness costs to actually use, or whether it finishes the job. That is what the eval suite is for: the same tasks, the same model and the same frozen price list, with only the harness changing.

259 attempts across 7 harnesses and 24 tasks, all on deepseek-v4.1-flash.

Harness Solved Cost/attempt Prompt tokens Sent before any work
Pi 34/37 $0.0038 112,681 5,522
SpecPi 35/37 $0.0042 134,859 13,799
OpenCode 31/37 $0.0043 143,830 38,097
SpecPi + Jev 35/37 $0.0046 153,077 13,799
Codex CLI 30/37 $0.0067 242,031 38,148
Oh My Pi 35/37 $0.0070 257,783 62,612
DeepSeek Harness 35/37 $0.0078 281,676 31,750

Cost is the harness's own model spend, priced from recorded usage against a dated price file. The last column is the tool schema plus system instructions riding every single request, which is the fixed toll a harness charges before the model does anything.

Read the method, the charts and the caveats on the evaluations page. The runner, the tasks and the recorded results are in evals/, and this table is regenerated from those reports by node scripts/eval-site.mjs, so it cannot drift from the published figures.

Install

Requires Node.js 22.19+, Git, npm, and an existing Pi installation on PATH.

npm install --global specpi@latest
specpi plan
specpi install
specpi doctor

plan shows what will change without modifying anything. Restart Pi after install.

Full setup options, package details, and requirements: website.

Where things live

Packages The eight pinned packages and what each provides
Scope control /scope commands and drift monitoring
Improvement loop Local wishlist, /harness-improvement, and retirement with evidence
SpecPi Chat VS Code frontend and VSIX install · Chat guide
Updating Update, uninstall, and migration notes

Development

npm install --ignore-scripts --omit=peer --no-package-lock
node --test tests/workflow-controls.test.mjs tests/workflow-controls-extension.test.mjs
npm run check

Installer tests use disposable Pi directories — never test against a live Pi installation. Publication follows the release procedure.

Security model · Third-party components · Release notes · MIT License