# Pi vs CC — Extension Playground ## Infrastructure Access **Always read `.claude/infra.md` at the start of every session** — it contains live credentials and connection details. To set up: copy `.claude/infra.md.example` → `.claude/infra.md` and fill in real values. **Team distribution**: share the real file via 1Password shared vault (or `age`-encrypted blob, never git). Pi Coding Agent extension examples and experiments. ## Tooling - **Package manager**: `bun` (not npm/yarn/pnpm) - **Task runner**: `just` (see justfile) - **Extensions run via**: `pi -e extensions/.ts` ## Project Structure - `extensions/` — Pi extension source files (.ts) - `specs/` — Feature specifications - `.pi/agents/` — Agent definitions for agent-team extension - `.pi/agent-sessions/` — Ephemeral session files (gitignored) ## Conventions - Extensions are standalone .ts files loaded by Pi's jiti runtime - Available imports: `@mariozechner/pi-coding-agent`, `@mariozechner/pi-tui`, `@mariozechner/pi-ai`, `@sinclair/typebox`, plus any deps in package.json - Register tools at the top level of the extension function (not inside event handlers) - Use `isToolCallEventType()` for type-safe tool_call event narrowing