Skill format
Every skill lives in its own directory underskills/ and consists of exactly two files:
skill.json defines the skill’s identity and behavior settings. SKILL.md contains the actual instructions — the text the model reads when the skill is active.
The SKILL.md file also carries a YAML frontmatter block so that Pi can load it directly. The name and description fields in the frontmatter must match skill.json.
How skills are delivered per backend
Each backend handles skills differently based on what it can do.Pi backend
Pi backend
Pi receives skills as real Pi skill files via the
--skill flag. The gateway passes each active skill’s SKILL.md directly to Pi when spawning or resuming a session. Pi reads the frontmatter and instructions natively.Registry skills from skills/, compatible fallback skills from .pi/skills/, and any extra paths from AGENT_SKILL_PATHS are all loaded and passed through.Codex backend
Codex backend
Codex receives a skills catalog embedded in the system prompt. The catalog lists every available skill with its name, description, triggers, scope, and file path. When a skill is relevant, Codex reads the corresponding
SKILL.md file on demand using its file tools.This lets Codex load detailed instructions only when needed, keeping the prompt lean for requests that do not trigger any skill.Local backend
Local backend
The local backend has no file tools, so it cannot read
SKILL.md files on demand. Instead, the gateway inlines the full contents of every active skill directly into the system prompt before each request.Only skills enabled for the local adapter are included. If a skill sets adapters.local.enabled to false, it is excluded.Skill scopes
Skills have two scopes that control how long they stay active.| Scope | Behavior |
|---|---|
one-shot | Active only for the message that triggered it. Does not persist across turns. |
sticky | Activated on trigger and then persists for the rest of the conversation. |
active-skills.json in the session directory). They survive gateway restarts and remain active until you explicitly remove them.
Managing skills with commands
You can list, activate, and deactivate skills from within any conversation using slash commands./skill and /skills are interchangeable, and use, add, on, and enable all activate a skill. Likewise, remove, off, and disable all deactivate one.
Loading extra skill directories
You can load skill files from outside the built-in registry by settingAGENT_SKILL_PATHS in your environment.
- An absolute path to a directory of skills
- A path starting with
~/(resolved from your home directory) - A path relative to the current working directory
Pi also loads any skills found in
.pi/skills/ at the project root as a compatibility fallback. These behave like any other skill but are sourced separately from the registry.Skills pages
Built-in skills
The five skills that ship with Nuggets: memory, reviewer, planner, debugger, and researcher.
Custom skills
How to create your own skill from scratch, including the full skill.json schema and SKILL.md format.