Pi extension authoring
Ground every answer in pi-mono/ files below.
Grounding
pi-mono/packages/coding-agent/docs/extensions.md— capabilities, lifecycle, patterns.pi-mono/packages/coding-agent/examples/extensions/README.md— runnable examples index.pi-mono/packages/coding-agent/src/core/resource-loader.ts—extendResources()appends paths viamergePathsafter existinglastSkillPaths(late paths lose name collisions to earlier ones unless names differ).pi-mono/packages/coding-agent/src/core/agent-session.ts— extension commands vs queued prompts; skill expansion hooks.pi-mono/packages/coding-agent/docs/tui.md— extension TUI component integration with@mariozechner/pi-tui:Componentrendering contract, overlay patterns, input handling in extension context.pi-mono/packages/coding-agent/docs/custom-provider.md—registerProvider()for proxies, OAuth/SSO, custom APIs, and custom model definitions.
Invariants
- Extensions can register tools, commands, themes, prompts, and extra skill paths; exact API surface is defined in docs and example modules — start from
docs/extensions.md, not memory. - Dynamic resource discovery patterns live under
pi-mono/packages/coding-agent/examples/extensions/(e.g.dynamic-resources/listing in examples README).
Workflows
- New extension: Read
docs/extensions.md, clone the closestexamples/extensions/template, then align with projectAGENTS.mdif working insidepi-mono. - Skills from extensions: Trace
extendResources+mergePathsinresource-loader.tsto explain ordering with user/project/package skills. - Extension TUI: Read
docs/tui.mdfor theComponentrendering contract in extension context; combine withpi-tuiskill for library-level APIs. - Custom providers via extension: See
pi-mono/packages/coding-agent/docs/custom-provider.mdforregisterProvider()OAuth flows and proxy patterns (grounded inpi-cli-workspace).
Anti-patterns
- Do not assert MCP support in core; optional via extension (see coding-agent README philosophy).