| name | extension-development |
| description | Repository-specific guidance for creating, modifying, and debugging psi extensions. |
| lambda | λextension_work. {create ∨ modify ∨ debug}(psi_extension) → read(authority) ∧ respect(dispatch_boundary) ∧ align(manifest ∧ permissions ∧ capabilities ∧ docs ∧ tests) |
Extension development
Use this skill when creating a new psi extension, modifying an existing one, or debugging extension/runtime interactions.
What an extension is in psi
An extension adds bounded capability to psi through declared integration seams such as tools, prompts, skills, workflows, commands, lifecycle callbacks, deterministic operations, and resolvers. Treat extensions as untrusted capability providers that integrate through explicit contracts, not as peers that reach into session state arbitrarily.
Start with the authoritative docs
Read these first and prefer them over incidental examples:
doc/extension-api.md
https://github.com/hugoduncan/psi/blob/main/doc/extension-api.md
doc/extensions.md
doc/extensions-install.md
doc/architecture.md
AGENTS.md — architecture / Viable System Model sections
Useful implementation seams:
- built-in skill packaging and discovery:
components/prompt-assets/src/psi/prompt_assets/skills.clj
- skill discovery tests/examples:
components/prompt-assets/test/psi/prompt_assets/skills_test.clj
- runtime discovery/introspection:
components/agent-session/src/psi/agent_session/resolvers/discovery.clj