# harness-tools Personal extensions and skills for [Pi](https://github.com/earendil-works/pi-mono). ## Included extensions - **effort-controls** — `/effort` reasoning-level selection and `/fast` priority mode for eligible OpenAI models. - **update** — `/update` and `--update` support for updating Pi and configured Pi packages. ## Repository layout ```text 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 See [`docs/nono.md`](docs/nono.md) for `pi-local` usage, profile settings, Internet tiers, multi-repository access, and the `nono-profiles` editing skill. ## Install locally ```bash pi install /absolute/path/to/harness-tools ``` For a one-off development run: ```bash pi -e ./extensions/effort-controls pi -e ./extensions/update ``` ## Development Node.js 22.19 or newer is required by the current Pi development dependencies. ```bash 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`](config/pi-links.json) and reconciled by one script: ```bash ./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