Skip to content

Repository files navigation

Shitty Extensions

for shittycodingagent.ai.

pi-x

This repo currently contains the following extension(s):

name description dependencies
neo-bar Required shared dependency for other status-producing extensions in this repo. Install this first.
no-reflection Removes pi's built-in documentation reference block from the agent system prompt without dumping the prompt anywhere. Disable with PI_NO_REFLECTION=false, no, n, or 0.
switch-thinking Adds fast keyboard workflows for thinking modes: Ctrl+Alt+T opens a picker, and Ctrl+T cycles your saved favorites. neo-bar
review-level Adds /px:review with session-scoped auto, off, minimal, normal, and high review recommendations, injects explicit guidance into the agent prompt, and shows an eye icon in the editor border. neo-bar
safe-mode Intercepts tool calls and enforces approval policies with four modes: paranoid, reader, smart, and yolo. neo-bar, bash-parser
permissions-core Headless network permission provider: validates and classifies perm:net requests and owns the session network policy (Auto, explicit, PARANOID). hub
permissions-ui Adds the /px:net selector to configure the network policy through permissions-core. permissions-core
flutter Owns a flutter run --debug process with /px:flutter run, /px:flutter reload, /px:flutter restart, /px:flutter stop, plus Alt+R/Alt+Shift+R hot controls. neo-bar, flutter CLI
proc Runs and manages long-lived background processes with a proc tool, per-process log cursors, and a collapsible above-editor Processes widget. panels
http Adds an http tool backed by Node native fetch, with HTTPie-like structured request fields, curl-compatible args support, and optional web-to-Markdown (webToMd) conversion via pandoc. cheerio, pandoc for http_md
sqlite Adds a sqlite query tool for file-backed and in-memory databases, with read-only/mutating SQL classification for safe-mode integration. sqlite3 CLI
interactive-bash Runs selected user ! commands in a true interactive terminal (stdin works for prompts, sudo password entry, and interactive scripts).
git Adds a git tool and /px:git command with compact porcelain status output (git status --porcelain=v1 -b) plus filtered/range-limited log support. git CLI
gust TUI browser and per-thread worker orchestrator for Gust comment threads, backed by gust ctl comments (/px:gust, /px:gust list, /px:gust model, /px:gust process). gust CLI
pi-ui UI tweaks: compact synthwave startup header, configurable working indicator, input-expected bell, Ctrl+, action dialog with favorite model/effort presets (m), and transcript selection (Alt+PgDn/Alt+PgUp select and scroll, Alt+O toggles the selected entry). focus-mode optional (Focus mode row)
tunnel Phone-first, paired web UI and API for the active Pi session over a local server (use Tailscale Serve for remote access).
pi-nvim Unix-socket bridge for sending prompts into a running pi session from compatible Neovim clients. compatible Neovim plugin
attension-core Minimal attention bell: emits terminal BEL (\u0007) on agent_end, with a short cooldown and a /px:attension-core-test command.
save Adds a /save command to write the latest assistant response to Markdown (/save or /px file.md).
renew Adds /renew (aliases /newt, /newr, /nre, /nrew) for a fresh unnamed session that retains supported settings; -proc stops managed processes. +agents is refused. safe-mode, permissions-core, review-level optional; proc for -proc
prompt-stash Saves, clears, lists, and restores in-progress editor drafts with session-scoped persistence.
notes Global free-form notes: /px:notes composes one, /px:notes:list browses and copies them from a two-pane dialog.
hub Central signal hub: routes and arbitrates capability requests between extensions (perm:shell, perm:io, perm:net, perm:agent, perm:tool).
subagent Delegates single, parallel, and chained tasks to isolated RPC child agents. Async by default with automatic completion injection, plus explicit execution: "blocking". Includes permission inheritance, approval relay, model-callable action: "stop"/"steer" controls, /px:agents runtime controls, session-wide model/effort rewiring (including Inherit model/Inherit All at child start) via /px:agents:rewire, an above-editor active-subagents widget, and /px:agent:log. panels; safe-mode optional
panels Coordinates above-editor panels in a stable order. Both start collapsed; Alt+P cycles forward and Alt+Shift+P cycles backward.
focus-mode Keeps pi inside a reading column on wide monitors: /px:focus [on [N]|off|set N[/bias]|bias [N]|config|status], default 100 columns centered, bias -100 moves it flush left, no margin on a screen that already fits. -s applies for the session only. /px:focus config is a settings dialog that previews live and has presets.

Network permissions (perm:net)

permissions-core owns network policy for the built-in network tools (http, http_md, web_search). The tools ask the hub for perm:net with normalized request data; the hub routes it to permissions-core, which validates, classifies, and disposes under the effective policy. permissions-ui provides /px:net, and neo-bar renders the effective token after the safe mode.

http/http_md/web_search ──perm:net──▶ hub ──▶ permissions-core
                                                    │
                              state/changed ──▶ permissions-ui (/px:net)
                                            └──▶ neo-bar (NET / NET? / NET+)

Decision matrix (classification → disposition):

Policy Trusted (GET/HEAD/OPTIONS, web_search) Untrusted (other valid methods)
deny-all block block
ask-all ask ask
allow-trusted allow block
ask-untrusted allow ask
allow-all allow allow

New sessions start at auto, which derives from safe mode: paranoid/reader → ask-all, smart → ask-untrusted, yolo/yolo+ → allow-trusted. PARANOID always forces ask-all (gray NET?) while retaining the configured choice; leaving PARANOID restores it. /px:net selects Auto or an explicit policy for the current session. Malformed or invalid requests, missing providers, timeouts, and non-interactive confirmations all fail closed.

V1 covers only those three tools. Shell commands (curl, wget, ssh, package managers), Git remotes, subprocess/agent tools, MCP and custom tools, and direct network calls from extension code are not covered. See permissions-core for the full model and known gaps.

Themes

Theme files live in themes/. ./install syncs them into ~/.pi/agent/themes/ (override the destination with PI_THEMES_DIR). Select one via /settings or set "theme": "<name>" in settings.json.

name description
dark-purple Copy of the built-in dark theme with every thinking-level editor border fixed to one purple (#a78bfa), so the border no longer changes with thinking effort.
night-dark Near-black surfaces (#0d0d0d page, #1a1a1a cards, #303030 markdown borders) with dark-purple's chrome kept as-is: teal accent #8abeb7, blue #5f87ff / cyan #00d7ff borders, and the brand purple #8f7fb8 for the thinking border, list bullets/numbers and inline code. Semantic + syntax colors stay GitHub-dark (#3fb950, #d29922), with a custom red #e17872 for errors and removed diff lines.

also check the skills repo.

Incremental installation

./install compares extension contents with the installed copies and skips unchanged folders. It detects additions, edits, and deletions, even when file sizes and timestamps match. Timestamp-only changes do not trigger extension sync.

node_modules stays local to the destination. Dependencies are installed only when package.json or a source lockfile changes, node_modules is missing, or a previous dependency install failed. Destination-only lockfiles are preserved. Herdr's flat integration file is copied only when it differs.

Run installer regression tests with python3 scripts/test-install.py (requires rsync and util-linux script).

Install policy for pi agents

When installing extensions from this repository, pi agents should use the standard pi extension layout:

  1. Install from source directory (not bundled artifacts).
  2. Copy the full extension folder to one of:
    • Global: ~/.pi/agent/extensions/<name>/
    • Project-local: .pi/extensions/<name>/
  3. Ensure index.ts exists at the extension root (or <name>/index.ts).
  4. Run /reload after copying/updating the extension.

About

Extensions for pi.dev

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages