Personal pi-coding-agent extensions.
Global (all projects):
pi install git:github.com/lucaspimentel/pi-extensionsProject-local (writes to .pi/settings.json):
pi install -l git:github.com/lucaspimentel/pi-extensionsPin to a specific ref so pi update won't bump it:
pi install git:github.com/lucaspimentel/pi-extensions@v0.1.0Try without installing:
pi -e git:github.com/lucaspimentel/pi-extensions- colored-footer – custom footer styling
- herdr-ask-user-bridge – reports "waiting for user to answer question" to herdr while the
ask_user_questiontool is awaiting input, so herdr panes show blocked state with a reason (requires the@juicesharp/rpiv-ask-user-questionextension and herdr's pi integration) - herdr-tab-name – mirrors the pi session display name onto the herdr pane label (always) and the tab label (single-pane tabs only) via
herdr pane rename/herdr tab rename; unnamed sessions reset the labels (/new,/resume,/fork, and name clears: pane label cleared, single-pane tab set topi; plain launches exempt); no-op outside herdr, and subagent child sessions never touch either surface - llm-session-name – generates a short session title from the first user prompt with the session's active model and keeps it fresh every N turns (configurable via
<agentDir>/llm-session-name.json). A manual/namerename locks the session against regeneration;/name-autoforces one regeneration that bypasses the lock - idle-summary – generates a brief summary of the session when pi has been idle for a while;
/idle-summarytriggers one immediately,/idle-summary modelpicks the model used for summaries - plan –
/plan <task>disables thewriteandedittools (everything else stays active, including unrestricted bash and MCP tools) and asks the planner for a self-contained handoff prompt (imperative voice, zero assumed context: task, relevant files, constraints, numbered steps, verification criteria). When the planning turn settles, the plan is copied to the clipboard (platform-detected;PI_PLAN_CLIPBOARD=offdisables) and a menu asks what to do next: implement in this session, clear context via a fresh replacement session and implement from just the plan, decline with feedback so the planner retries (planning mode stays on), or stop. It does not switch the model or thinking effort — pick your planner model yourself before/planand switch back afterwards (/plan cancelrestores early; the old/plan-cancelstill works as a deprecated alias) - stash –
ctrl+alt+s/ctrl+alt+rstash & restore the editor draft on a disk-backed stack under~/.pi/agent/pi-stash.json;/stash listshows numbered entries (1 = newest),/stash pop [n],/stash drop <n>,/stash clear(the old flat names/pop,/stash-list,/stash-drop,/stash-clearstill work as deprecated aliases) - web – fetch & convert web pages (depends on
html-to-text) - wt-tab-status – updates the Windows Terminal tab title with the current session status
- pi-tool-permissions – Claude Code-style allow/deny/ask permissions
- external-editor-fix – fix Ctrl+G external editor on Windows / Git Bash by adding wait flags for GUI editors
- pwsh – PowerShell tool for Windows-native object pipelines (JSON via
ConvertFrom-Json, registry, WMI/CIM, .NET,Get-*cmdlets). Auto-detectspwsh(7+) →powershell(5.1). Mirrors the built-inbashtool's tail-truncation and temp-file dump for long output. - python – persistent, sandboxed Python interpreter tool (Linux + bubblewrap): variables/imports survive across calls, the project is mounted read-only at
/workspace, a private scratch directory is writable at/scratch, and network/sockets are blocked via seccomp. Timeouts, cancellation, or crashes kill the whole sandbox (includingsetsiddescendants) and are reported with partial output; never falls back to unsandboxed execution. See extensions/python/README.md for the threat model and limits. - node – persistent, sandboxed Node.js interpreter tool mirroring the python tool (Linux + bubblewrap + prlimit + a compiled seccomp launcher). Same mount/state/timeout contract, with node-specific deltas (no top-level await,
requirefor builtins and project modules). See extensions/node/README.md. - session-search – searches past pi sessions across all projects by keyword, exposed as the model-facing
session_searchtool and the interactive/session-searchcommand (lazily maintained index at~/.pi/agent/session-search-index.jsonl). See extensions/session-search/README.md. - update-jira – validated Jira read/update tools (
jira_read: get digest/raw payload and comment pages;jira_update: transition, comment, link_pr, edit) over the Atlassian remote MCP v2 server, plus a run-boundary pointer that tells the model which ticket the current git branch resolves to. See extensions/update-jira/README.md. - ollama-models – auto-discovers locally pulled Ollama models (
/api/tags) and registers them with pi as anollamaprovider, so they show up in/modelwithout maintainingmodels.json. ReadsOLLAMA_HOSTfor a non-default server; registers nothing when Ollama is not running. - slack-via-claude – read-only Slack tools (
slack_search,slack_read_channel,slack_read_thread) backed by the Slack MCP already configured in Claude Code. Spawnsclaude --printwith a read-only tool allowlist, so no separate Slack app registration is required. - subagent – delegate tasks to specialized subagents with isolated context windows (forked from pi's example extension): single/parallel (max 8, 4 concurrent)/chain modes with
{previous}chaining, live streaming, per-agent usage stats. Ships four agents:scout(recon) andplanner(implementation plans), both read-only via ffgrep/fffind with built-in grep/find fallback;reviewer(read-only code review with web/slack/memory/session context tools);worker(full tools for delegated edits). All inherit the session model; pin per-agent models in~/.pi/agent/subagent.json, and same-name files in~/.pi/agent/agents/override agents entirely. Includes the/scout-plan,/scout-plan-implement,/implement-review, and/scout-plan-implement-reviewworkflow prompts (names list each chain's stages). See extensions/subagent/README.md.
Skills shared between pi and Claude Code live in the separate agent-skills repository.
pi-extensions/
├── package.json # pi manifest
├── extensions/
│ ├── *.ts # single-file extensions
│ └── */ # multi-file extensions (web, pi-tool-permissions, idle-summary, ...)
└── tests/ # node-runnable test harnesses (*.test.mts)
Runtime npm deps live in the root package.json so a single npm install
(run by pi after git clone) covers all extensions.
pi update git:github.com/lucaspimentel/pi-extensions