harness-tools
Personal extensions and skills for Pi.
Included extensions
- effort-controls —
/effortreasoning-level selection and/fastpriority mode for eligible OpenAI models. - update —
/updateand--updatesupport for updating Pi and configured Pi packages.
Repository layout
docs/ Usage guides
extensions/ Pi extensions
profiles/nono/ Repo-managed nono profiles, symlinked into ~/.config/nono/profiles
skills/ Pi skills (one directory with a SKILL.md per skill)
The root package.json exposes the extensions and skills as a single Pi package.
Nono sandbox
Use pi-sbx to launch Pi with a nono profile selected from the current directory. Manage routes with pi-sbx-profile set <profile> [directory]; omitting the directory assigns the current working directory. See docs/nono.md for setup, profile settings, Internet tiers, multi-repository access, and the nono-profiles editing skill.
Install locally
pi install /absolute/path/to/harness-tools
For a one-off development run:
pi -e ./extensions/effort-controls
pi -e ./extensions/update
Development
Node.js 22.19 or newer is required by the current Pi development dependencies.
npm install
npm run typecheck
Extensions are TypeScript modules loaded directly by Pi; no build step is required.
Repository-managed global instructions, skills, and extension exposure are declared in config/pi-links.json and reconciled by one script:
./scripts/pi-links.mjs check
./scripts/pi-links.mjs sync --dry-run
./scripts/pi-links.mjs sync
./scripts/pi-links.mjs prune --dry-run
The repository-local manage-pi-links skill applies this workflow. Global instructions are linked to Pi and Codex as AGENTS.md; Claude receives a CLAUDE.md that imports the shared instructions. The manager preserves unrelated global resources and refuses unmanaged destination collisions. Run /reload after changing active Pi instruction, skill, or extension exposure.
License
MIT