@rol1n/pi-kit0.1.3
A selectable collection of Pi extensions, prompt templates, and skills.
Untested on omp
This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.
Reports 0
No reports yet.
Readme
pi-kit
One package of modular extensions, prompt templates, and skills for the Pi Coding Agent. Install
@rol1n/pi-kit, then choose what loads through Pi settings.
English • 中文说明
Install
pi install npm:@rol1n/pi-kit
The package includes 15 extension entrypoints, 7 prompt templates, and the worktree-studio skill. Extensions and prompt commands load by default; skill instructions are read on demand. No separate extension packages are needed. See Resource Selection to disable extensions or use an allowlist. Individual features may still require credentials, platform support, or activation (/mem-log on for background memory).
Install from GitHub or a local checkout during development:
pi install https://github.com/RolinShmily/pi-kit
pi install /absolute/path/to/pi-kit
Update installed packages:
pi update npm:@rol1n/pi-kit
pi update --extensions
Extensions
Each top-level extension directory has an index.ts entrypoint and an English README covering its commands, parameters, and configuration. All entries below are declared in package.json:
| Extension | Description | Entry path for settings |
|---|---|---|
| ask-u-questions | Interactive single-choice, multi-choice, and text dialogs | ask-u-questions/index.ts |
| continue-signal | Resume an idle agent via /continue or Alt+C |
continue-signal/index.ts |
| custom-providers | Additional model providers and gateway registration | custom-providers/index.ts |
| image-generate | Image generation tool and /image-generate model selector |
image-generate/index.ts |
| memory-log | Tiered observational memory, source recall, and safe compaction | memory-log/index.ts |
| model-vision | Image understanding and OCR (model_vision) |
model-vision/index.ts |
| multi-harness | Delegate across pi, codex, claude, and opencode |
multi-harness/index.ts |
| oai-subquota | OpenAI Codex subscription quota monitor | oai-subquota/index.ts |
| prompt-snipaste | Generic selector for enabled Pi prompts (/snipaste, Alt+S) |
prompt-snipaste/index.ts |
| screenshot | Insert the latest Windows/WSL screenshot path | screenshot/index.ts |
| srp-theme | Last-prompt preview and streaming TPS meter | srp-theme/index.ts |
| subagent | Parallel Pi workers in tmux/Zellij or background processes | subagent/index.ts |
| tui-asr | DashScope voice dictation (/asr, Alt+M) |
tui-asr/index.ts |
| web-reach | Keyless Exa MCP search and multi-tier page extraction | web-reach/index.ts |
| windows-wheel-fix | Windows ConPTY / Zellij wheel fix; no-op elsewhere | windows-wheel-fix/index.ts |
Skills
The root skills/ directory is declared through pi.skills and distributed in the same npm package. Skills are instructions, not extension code: Pi advertises their metadata and reads the full document when needed.
| Skill | Purpose |
|---|---|
| worktree-studio | Plan isolated Git-worktree alternatives, delegate implementation, collect real diffs and verification, and compare results without automatically integrating or deleting them |
Invoke it explicitly with /skill:worktree-studio Compare the viable approaches for this change. Git and a suitable delegation runtime are needed for experiments; multi_harness and subagent are available options. The skill requires confirmation before creating worktrees or launching paid workers. It never treats exploration approval as permission to merge, commit, or discard results.
To load only this skill, without any kit extensions or prompt templates:
{
"packages": [
{
"source": "npm:@rol1n/pi-kit",
"extensions": [],
"prompts": [],
"skills": ["skills/worktree-studio/SKILL.md"]
}
]
}
Remove older local copies from configured skill locations to avoid duplicate skill names. Setting "skills": [] on this package disables its skills independently of extensions and prompts.
Prompt Templates
The root prompts/ directory is an independent, standard Pi resource, declared as "pi": { "prompts": ["./prompts"] } in package.json. It does not belong to or require the prompt-snipaste extension.
Templates become normal Pi slash commands: /ask-questions, /delegate-exploration, /diagnose-report, /frontend-tech-preset, /orchestrator-mode, /session-kickoff, and /verify-not-assume. They remain available when prompt-snipaste is disabled, or even with "extensions": [].
To use only the directory from a local checkout, reference it through the top-level prompts setting; no extension needs to be loaded:
{
"prompts": ["/absolute/path/to/pi-kit/prompts"]
}
Existing filters using prompt-snipaste/prompts/... must be changed to prompts/... after updating.
Conversely, prompt-snipaste is a generic composer for any enabled Pi prompt templates from personal, trusted project, or package sources. It has no required template names or bundled fallback library.
Resource Selection
Edit ~/.pi/agent/settings.json (personal) or .pi/settings.json (project). Replace the existing "npm:@rol1n/pi-kit" string inside packages with an object; keep your other packages. source belongs inside packages[], not at the top level. Paths are relative to the installed package root, not the startup listing's @rol1n/pi-kit:... labels.
Disable selected extensions
This loads everything except voice dictation, web search/extraction, and the Windows wheel fix. Omitting prompts and skills keeps all 7 templates and the bundled skill available:
{
"packages": [
{
"source": "npm:@rol1n/pi-kit",
"extensions": [
"!tui-asr/**",
"!web-reach/**",
"!windows-wheel-fix/**"
]
}
]
}
Load only selected extensions
This loads only memory and Pi subagents, with no bundled prompt commands or skills:
{
"packages": [
{
"source": "npm:@rol1n/pi-kit",
"extensions": ["memory-log/index.ts", "subagent/index.ts"],
"prompts": [],
"skills": []
}
]
}
Filter rules
| Setting | Effect |
|---|---|
| Property omitted | Load all resources of that type declared by the package |
"extensions": [] |
Disable all extension entrypoints, without disabling prompts or skills |
"extensions": ["!tui-asr/**"] |
Load all entrypoints except matches |
"extensions": ["memory-log/index.ts"] |
Load only matching entrypoints |
"extensions": ["-tui-asr/index.ts"] |
Exclude one exact entry path |
"prompts": ["prompts/diagnose-report.md"] |
Load only that prompt template |
"prompts": [] |
Disable all bundled prompt templates |
"skills": [] |
Disable all bundled skills |
"skills": ["skills/worktree-studio/SKILL.md"] |
Load only that skill |
Run /reload or restart Pi after editing. Alternatively, run pi config in a terminal to toggle discovered resources interactively. Use an allowlist if newly added extensions should remain disabled after future kit updates.
Dependencies and overlapping tools
Filtering controls entrypoint loading, not installation or imports. image-generate and tui-asr initialize the shared custom-providers module themselves; exclude all three entries if you do not want those providers registered. multi-harness uses shared helpers from subagent/mux.ts without requiring the subagent tool entry to load. These files ship in the same package; there are no sibling npm packages to install.
Disable overlapping entries when another package already provides the same tool, especially web-reach (web_search, web_fetch) and image-generate (image_generate). Extensions and the root prompts/ resource are independent. Disabling prompt-snipaste/index.ts leaves template commands available; filtering out all kit prompts leaves the selector free to use enabled prompts from other sources.
Migrating from standalone packages
This repository now releases only @rol1n/pi-kit. Previously published standalone versions remain on npm but receive no further releases from this workflow. Remove old standalone declarations before enabling the same extensions through the kit to avoid duplicate registration; use the filters above instead.
Development & Publishing
package.json is the single source of package metadata, the release version, published files, and Pi resources. Edit it directly; no manifest generation or standalone staging is needed. When adding an extension, list its directory in files and its entrypoint in pi.extensions so it is included by default. Add skills as skills/<name>/SKILL.md and prompt templates as prompts/<name>.md; the declared root resource directories already cover them.
npm run check # Validate the manifest and extension coverage
npm test # Run offline memory-log and prompt selector tests
npm pack --dry-run --ignore-scripts # Inspect the npm package contents
Releases
- Make your changes and bump
versiondirectly inpackage.json. - Push to
main, or manually run Publish to npm in GitHub Actions. - The workflow validates the package, runs tests, and publishes only the root
@rol1n/pi-kitpackage with npm provenance. Existing versions are skipped; registry/network errors fail the job rather than being treated as an unpublished version.
Automatic runs watch package.json, the validation script, and the workflow itself. Code-only pushes do not publish; bump the version when ready to release. Runs are serialized without cancelling an active publish. CI uses the configured npm Trusted Publisher, or NPM_TOKEN if provided, and never rewrites the manifest or bumps versions.
For an authorized local release, use the normal npm command: npm publish --access public.
Acknowledgements
- elpapi42/pi-observational-memory — Observational memory architecture and inspiration for
memory-log. - earendil-works/pi — The Pi coding agent harness and SDK.
License
MIT © RoL1n_SrP