--- created: 2026-05-16 modified: 2026-05-16 type: note tags: - ai - dev-ops aliases: [] --- # Pi Agent Extensions & Skills ## Source Repositories | Source | Location | |---|---| | Gitea (package) | `git:https://gitea.lab.audasmedia.com.au/sam/pi-config` | | Local filesystem | `~/.agents/` | | Project settings | `sys_config/.pi/settings.json`, `ai_setup/.pi/settings.json` | --- ## Extensions | Extension | Source | Purpose | |---|---|---| | **pi-config** | `~/.agents` | `/config-add`, `/config-remove`, `/config-show`, `/config-setup` — manage which extensions/skills are active in a project | | **tavily-search** | Gitea | `tavily_search` — web search via Tavily API (AI-optimized) | | **web-fetch** | `~/.agents` | `web_fetch` — fetch any URL and return clean markdown (HTML, PDF, JS-rendered with Jina fallback) | | **ask-user-question** | `~/.agents` | `ask_user_question` — LLM presents structured multiple-choice / text questions with keyboard UI | | **video-extract** | `~/.agents` | `video_extract` — extract frames from YouTube/local video + full Gemini analysis (requires ffmpeg + yt-dlp + GEMINI_API_KEY) | | **filechanges** | `~/.agents` | `/filechanges`, `/filechanges-accept`, `/filechanges-decline` — tracks every file LLM edits/writes, diff review, revert | | **pi-subagents** (tintinweb v0.7.1) | `~/.agents` | Spawn child Pi agents for delegated tasks (scout, researcher, worker) | | **pi-prompt-template-model** | npm (global) | Model-switching prompt templates with frontmatter. See [[#Prompt Templates]] section below | | **pi-graphify** | `~/.agents` | Knowledge graph tools: build, query, path tracing, explain, watch, add, update | | **plannotator** | `~/.agents` | Interactive plan review with browser UI, annotations, code review | | **caveman** | `~/.agents` | Ultra-compressed communication mode | --- ## Skills | Skill | Purpose | |---|---| | **nixos-workflow** | STRICT workflow for managing Pi assets via Gitea on NixOS | | **system-architect** | Multi-machine NixOS infrastructure (Snapcast, MQTT, Docker, Nvim) | | **obsidian-cli** | Interact with Obsidian vault (notes, search, plugin dev, theme dev) | | **graphify** | Full-pipeline knowledge graph orchestration | | **caveman** | Caveman communication mode | | **openspec-propose** | Propose new changes with design docs, specs, tasks | | **openspec-apply-change** | Implement tasks from an OpenSpec change | | **openspec-archive-change** | Archive completed changes | | **openspec-explore** | Explore ideas and clarify requirements | --- ## Prompt Templates Prompt templates are `.md` files in `~/.pi/agent/prompts/` with YAML frontmatter. Each defines a slash command that auto-switches model, thinking level, and injects skills — then restores your previous model when done. ### Installed Templates | Command | Model | Thinking | Use | |---|---|---|---| | `/quick` | deepseek-v4-flash | — | Fast, cheap tasks | | `/deep` | kimi-k2.5 | high | Deep analysis, architecture | | `/review` | kimi-k2.5 | medium | Code review | | `/nix-check` | qwen-2.5 | low | Run checks + analyze | | `/research` | deepseek-v4-flash | — | Web research, synthesize | ### How to use ``` /quick what's the weather? /deep design the architecture for this feature /review review the changes in this file /nix-check analyze the nix flake check output /research find alternatives to this approach ``` ### Template format ```yaml --- description: Quick task — fast model, minimal thinking model: openrouter/deepseek-v4-flash restore: true --- $@ ``` Key frontmatter fields: - **`model`** — provider/model-id or comma-separated fallback list - **`thinking`** — off, minimal, low, medium, high, xhigh - **`restore`** — (default true) restore previous model when done - **`skill`** — auto-inject a skill - **`deterministic`** — run a command/script before the LLM turn (e.g. `nix eval .#checks`) ### Adding new templates Create a new `.md` file in `~/.pi/agent/prompts/` with frontmatter. The filename becomes the command name. Restart Pi or run any extension command to pick them up. --- ## Configuration Files ### Global (`~/.pi/agent/settings.json`) - Nix store symlink — managed via `/etc/nixos/home/sam/home.nix` - Contains: providers (opencode-go, openrouter, google), packages (pi-memctx, pi-prompt-template-model, Gitea) - **Read-only** — cannot be modified by `pi install` or `/config-add` ### Project (`/.pi/settings.json`) - Overrides global settings (arrays replace, not merge) - Contains: `~/.agents` package (extensions + skills), Gitea package (tavily-search) - Modified via `/config-add` / `/config-remove` commands ### Per-folder Memory (via pi-memctx) - Memory stored in `/.pi/memory-vault/packs/` - Workspace map at `~/.pi/agent/memory-vault/00-system/workspace-map.json` - Each chat folder has isolated memory (prevents sibling directory contamination) --- ## Useful Commands | Command | What it does | |---|---| | `/quick ` | Fast model for quick tasks | | `/deep ` | Powerful model with extended thinking | | `/review ` | Thorough code review | | `/nix-check ` | Nix-specific analysis | | `/research ` | Web research and synthesis | | `/config-setup` | One-shot: creates `.pi/`, `settings.json`, memory vault in current folder | | `/config-add ext ` | Activate an extension from `~/.agents` | | `/config-add skill ` | Activate a skill from `~/.agents` | | `/config-show` | Show active extensions and skills | | `/memctx-init` | Scan folder, build initial memory pack | | `/memctx-status` | Show memory status | | `/memctx-refresh` | Re-scan and enrich memory | | `/filechanges` | Review changed files, diffs, accept/decline | | `/filechanges-accept` | Accept all changes | | `/filechanges-decline` | Revert all changes | --- ## Skipped / Bookmarked | Extension/Skill | Reason | |---|---| | **web-search** (amosblomqvist) | ❌ Redundant — Tavily does this | | **subagents** (amosblomqvist) | ❌ Redundant — pi-subagents already installed | | **bash-guard** (amosblomqvist) | ❌ Too aggressive — would interrupt flow | | **google-image-search** (amosblomqvist) | ❌ Would need Google Search API + CSE setup | | **pdf-reader** (amosblomqvist) | ⏳ Bookmarked — Python + pymupdf setup needed | | **notify** (mitsuhiko) | ⏳ Minor QoL — desktop notifications on task complete | --- ## Tasks - [ ] Rebuild NixOS to activate Google provider + ffmpeg/yt-dlp + pi-prompt-template-model - [ ] Run `/reload` in Pi to activate filechanges and new templates - [ ] Add more prompt templates to `~/.pi/agent/prompts/` as needed - [ ] Verify video-extract works with Gemini - [ ] Clean up workspace-map.json entries for any stale memory packs