pi-customization
Pi Customization
Grounding
pi-mono/packages/coding-agent/docs/themes.md— theme JSON format (name, optionalvars, required 51colorstokens), locations (~/.pi/agent/themes/*.json,.pi/themes/*.json, packages, settings, CLI--theme), hot reload, color value formats.pi-mono/packages/coding-agent/docs/keybindings.md— customization via~/.pi/agent/keybindings.json, namespaced action IDs (tui.input.submit,tui.editor.cursorUp,app.interrupt, etc.), key format (modifier+key), full action tables.pi-mono/packages/coding-agent/docs/prompt-templates.md— Markdown snippets invoked via/name, locations (~/.pi/agent/prompts/*.md,.pi/prompts/*.md, packages), positional arguments ($1,$2,$@,${@:N}), YAML frontmatter with optionaldescription.pi-mono/packages/coding-agent/README.md— Context Files section for.pi/SYSTEM.md,~/.pi/agent/SYSTEM.md, andAPPEND_SYSTEM.md.pi-mono/packages/coding-agent/docs/settings.md— the overallsettings.jsonstructure for tying these together.
Invariants
- Theme Format: Themes define
name(required, unique), optionalvarsfor reusable color aliases, and all 51colorstokens. There is notype,ui,syntax, orborderstop-level key — everything is undercolors. Loaded from~/.pi/agent/themes/*.json(global) and.pi/themes/*.json(project). - Keybinding Config: Keybindings are configured in
~/.pi/agent/keybindings.json(notsettings.json). IDs are namespaced:tui.input.submit(submit),tui.editor.cursorUp,app.interrupt, etc. Run/reloadto apply changes without restarting. - Prompt Template Arguments: Templates use
$1,$2,$@,${@:N}positional syntax — not{variable}or<include>. The filename (minus.md) becomes the/namecommand. - System Prompt Override: Replace the default system prompt with
.pi/SYSTEM.md(project) or~/.pi/agent/SYSTEM.md(global). UseAPPEND_SYSTEM.mdto append instead of replace. Context files and skills are still appended after the override.
Workflows
More from romiluz13/pi-agent-skills
pi-extension-authoring
Authoring Pi TypeScript extensions — ExtensionAPI, custom tools, commands, UI hooks, resources_discover, `registerProvider()`, and how extendResources merges skill paths after base reload. Use when the user builds or debugs pi extensions, registers tools, adds /commands, hooks events, integrates TUI components, or ships extension examples. Use for "how do I extend pi", "extension API", "registerTool", "registerProvider", even if pi-mono is not mentioned.
29pi-package-authoring
Pi packages — npm/git distribution of extensions, skills, prompts, themes via keywords pi-package and package.json pi manifest; pi install paths and security expectations. Use when shipping or consuming pi-package, adding pi.skills entries, or explaining install vs project-local -l. Use for "publish pi skills on npm", "pi install", "pi-package.json", even without naming this skill.
25pi-cli-workspace
Pi terminal agent workspace — install, /commands, sessions, compaction, settings.json, AGENTS.md, skill discovery, precedence, session JSONL, /tree, providers/auth, models.json, credential resolution, platform setup, editor (@file, Tab, images, !bash), message queue (steering, follow-up), built-in tools (read/bash/edit/write/grep/find/ls, --tools, --no-tools), print mode (-p, piped stdin), SYSTEM.md/APPEND_SYSTEM.md, CLI flags (-c, -r, --session, --fork, --no-session), @files args, resource flags (--no-extensions, --no-skills), model shorthand (provider/id, name:thinking), all slash commands, env vars, philosophy (no MCP/sub-agents/plan-mode by design). Use for pi config, skills, sessions, compaction, providers, models, tmux, Termux, Windows, tools, modes, system prompt, message queue, or "does pi support X".
24pi-rpc-sdk
Pi headless RPC JSONL over stdin/stdout, strict LF framing, --mode json event streaming, and Node SDK alternatives (AgentSession). Use when integrating pi --mode rpc, pi --mode json, writing a client that speaks the protocol, reading JSON event streams, or choosing RPC vs in-process SDK. Use for "pi rpc client", "JSONL framing", "readline rpc", "--mode json", "json events", "embed pi without subprocess", "createAgentSession", "AgentSessionRuntime", "ModelRegistry", "embed pi", "SDK factory", even if the user only pasted JSON lines.
24