{
  "$type": "site.standard.document",
  "content": {
    "$type": "site.standard.content.markdown",
    "text": "I've written about [specializing Codex](/specializing-codex) and [Claude Code](/scrappy-data-cleaning) in the past. Here is how to do something similar for [Pi](https://pi.dev/)!\n\nI made a small [profile extension](https://github.com/davidgasquez/dotfiles/blob/main/agents/pi/extensions/profile.ts) so I can launch somewhat contained agents with `pi --profile <name>`.[^install]\n\nA Pi profile in this case is just a [small YAML file](https://github.com/davidgasquez/dotfiles/blob/main/agents/pi/profiles/sam.yaml) with some keys like model, thinking level, system prompt, and an allowlist of skills.\n\n```yaml\nmodel: openai-codex/gpt-5.4\nthinking: medium\nsystem: You are SAM, a pragmatic assistant. Concise and useful.\nskills:\n  - todoist-cli\n  - agent-browser\n```\n\nWhen Pi starts, the extension loads that profile, switches to the configured model, replaces the system prompt for the turn, limits which `/skill:*` commands are allowed, and keeps sessions isolated per profile.\n\nThat gives me tiny task-specific agents without having to fork Pi or maintain a bunch of wrappers. For loosely defined chores, having `sam` (an assistant with access to my task list, email, ...), `juror`, or other little personas has been surprisingly useful.\n\n[^install]: Install it by copying the extension file to `~/.pi/agent/extensions/` (or `.pi/extensions/` for a project-local setup) and then reloading Pi with `/reload`.",
    "version": "1.0"
  },
  "description": "I've written about specializing Codex and Claude Code in the past. Here is how to do something similar for Pi! I made a small profile extension so I can launch somewhat contained agents with pi --profile .install A Pi profile in this case is just a small YAML file with some ke...",
  "path": "/specializing-pi",
  "publishedAt": "2026-03-11T00:00:00.000Z",
  "site": "at://did:plc:4z5i7njrld66ew36htufcwry/site.standard.publication/3mo43d2tmt2ov",
  "textContent": "I've written about specializing Codex and Claude Code in the past. Here is how to do something similar for Pi!\n\nI made a small profile extension so I can launch somewhat contained agents with pi --profile .install\n\nA Pi profile in this case is just a small YAML file with some keys like model, thinking level, system prompt, and an allowlist of skills.\n\nWhen Pi starts, the extension loads that profile, switches to the configured model, replaces the system prompt for the turn, limits which /skill:* commands are allowed, and keeps sessions isolated per profile.\n\nThat gives me tiny task-specific agents without having to fork Pi or maintain a bunch of wrappers. For loosely defined chores, having sam (an assistant with access to my task list, email, ...), juror, or other little personas has been surprisingly useful.\n\ninstall: Install it by copying the extension file to ~/.pi/agent/extensions/ (or .pi/extensions/ for a project-local setup) and then reloading Pi with /reload.",
  "title": "Specializing Pi"
}