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 - session-name-llm –
/name-llmregenerates the session title on demand with the session's active model, from the current title, the session's original prompts and recent turns. Nothing is titled automatically: the command is the only trigger and it replaces a manual/nametoo. A rename that lands while the model call is in flight wins over the generated title. - 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 – moved to the shared agent-skills repository as an explicitly invoked skill:
/skill:planin pi. It supersedes this repository's retired/planextension. - 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 - 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
- python – retired from the manifest (2026-10-21): superseded by guard's sandboxed
pythontool (extensions/guard/tools/python/, a ported fork); no longer registered inpackage.json, so the tool never loads. Kept as the pre-guard lineage and test target (extensions/python/README.md). - node – retired from the manifest (2026-10-21): superseded by guard's sandboxed
nodetool (extensions/guard/tools/node/, a ported fork); no longer registered inpackage.json, so the tool never loads. Kept as the pre-guard lineage and test target (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 five agents:scout(recon) andplanner(implementation plans), both read-only via ffgrep/fffind with built-in grep/find fallback;worker(full tools for delegated edits);reviewer(read-only code review) andresearcher(read-only evidence synthesis), both with web/slack/memory/session context tools. The discovered agents are listed to the model automatically in thesubagenttool description (scopeuser), andsubagent_listreturns them programmatically (source, model, tools) without spawning anything. 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. - guard – sandbox-first permission redesign (the successor to pi-tool-permissions, which stays loaded and enforcing until the step-6 switchover; its
bash/python/nodecopies are the registered tools, and the standalone sandboxed extensions were unregistered on 2026-10-21): registersbash,host_bash,python, andnodeon a kernel-enforced bubblewrap + seccomp sandbox and enforces decisions onwrite/edittoo; seven session profiles (default→unrestricted), HostBash/Pwsh allow/ask/deny rules, a tightened read-only host tier, secret masking, protected paths, read-root grants, workspace-lock auditing, and subagent profile inheritance./guardopens the profile picker; see extensions/guard/README.md and docs/guard-design.md. - update-extensions –
/update-extensionsrunspi update --extensionsand reloads the runtime in one step - timestamps – dim started/ran/ended timestamp lines on every tool call and result in the transcript and HTML exports
- git-read – model-facing
git_readtool: allowlisted read-only git subcommands (diff, log, show, status) as an argv-array child process, never through a shell. See docs/git-read-design.md. - gh-read – model-facing
gh_readtool: allowlisted read-only gh subcommands (pr view/diff/list/checks, issue view/list, auth status, run list/view) as an argv-array child process, never through a shell, plus nine scoped GitHub API reads with structured parameters and worktree-free operation:repo contents(decoded file text with line ranges, directory entries),repo tree(recursive or shallow),commit checks(check runs plus legacy statuses, bounded continuation),advisory view(exact CVE/GHSA lookup),check annotations(one check run's annotations, single 100-item page with an incompleteness notice at a full page),repo metadata(flat repository object: default branch, description, visibility, URLs, and related facts),pr comments(inline review comments and replies, unlike conversation comments frompr view --comments),pr reviews(review bodies and verdicts), andissue comments(conversation comments on an issue or PR from the issues endpoint, unlike inline review comments). The PR API operations requirerepo+ a positive safe-integerprnumber andissue commentsrequiresrepo+ a positive safe-integerissuenumber; all three return verbatim arrays with optional jq and independent bounded continuation paging; these mutable listings are not SHA-pinned snapshots and do not provide resolved/outdated thread state.run view --log/--log-failedfetch run or failed-step logs through a dual-window runner that keeps the first and last 50 KiB of stdout (the middle is omitted with an exact byte-count notice) under a 30 s timeout. External jq filtering is preflighted and sandboxed; API results are capped at 50 KiB with explicit incompleteness labeling. See docs/gh-read-design.md.
- git-rebase –
/git-rebase [base-branch]rebases the current branch onto its parent branch via the localgit-rebase-parentscript (parent resolution:--parentflag, open PR base branch, then repo default branch), keeping conflicts in progress for the agent to resolve. Defined inprompts/git-rebase.md. - git-clean-worktrees – moved to the shared agent-skills repository as an explicitly invoked skill:
/skill:git-clean-worktrees [repository-path]in pi,/git-clean-worktrees [repository-path]in Claude Code. The optional path defaults to the current directory. It inspects one repository, refreshes its actual default branch, proves every target is preserved, and then removes only the worktrees and branches in a plan you approve by digest. It no longer takes a substring filter, and the old prompt was deleted from this repo.
Skills shared between pi and Claude Code live in the separate agent-skills repository.
pi-extensions/
├── package.json # pi manifest
├── prompts/ # package-level prompt templates (prompts/*.md)
├── 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