--- name: skill-creator description: > Create, review, and improve skills for Pi agents. A skill is a folder with a SKILL.md that teaches an agent specialized workflows, domain knowledge, or tool integrations. Use when asked to create a new skill, improve an existing skill, review a skill for quality, scaffold a skill from a workflow, or convert documentation into a skill. Also triggers on "make a skill for", "build a skill", "skill for [topic]", "teach the agent to", or "package this workflow as a skill". --- # Skill Creator Create effective, well-structured skills for Pi agents. This skill covers the full lifecycle: planning, scaffolding, writing, validating, and iterating. Pi implements the [Agent Skills standard](https://agentskills.io/specification). Skills work across Pi, Claude Code, and the Anthropic API. ## What Is a Skill? A skill is a folder that teaches an agent how to handle specific tasks: ``` skill-name/ ├── SKILL.md # Required — frontmatter + instructions ├── scripts/ # Optional — executable code (deterministic operations) ├── references/ # Optional — documentation loaded on-demand └── assets/ # Optional — templates, fonts, icons used in output ``` **Skills are NOT code.** They are structured instructions — like an onboarding guide for a new team member who happens to be an AI. ## Skill Creation Process ### Step 1: Understand the Use Case Before writing anything, answer these questions: 1. **What does the user want to accomplish?** (concrete outcome) 2. **What would they say to trigger it?** (natural language phrases) 3. **What steps are involved?** (the workflow) 4. **What does the agent need that it doesn't already know?** (domain knowledge, scripts, reference docs) 5. **What tools does the agent need?** (bash, web_fetch, extensions, MCP) Ask 2-3 clarifying questions if the use case isn't clear. Get concrete examples of how the skill would be used before proceeding. ### Step 2: Plan the Skill Contents For each step in the workflow, decide what belongs where: | Content type | Where it goes | When to use | |---|---|---| | Workflow steps, decisions, guidance | SKILL.md body | Core instructions the agent follows | | Executable code that's reused | `scripts/` | Deterministic operations, data processing, validation | | Detailed docs, API refs, schemas | `references/` | Loaded only when the agent needs them | | Templates, images, boilerplate | `assets/` | Files used in output, not loaded into context | **Key principle:** Only include what the agent doesn't already know. Claude is already smart — don't explain how to write Python or use git. Add the domain knowledge, specific workflows, and tribal knowledge that make this task unique. ### Step 3: Scaffold the Skill Run the init script to create the directory structure: ```bash bash scripts/init-skill.sh [target-directory] ``` Default target: current working directory. The script creates the folder with SKILL.md template and optional subdirectories. ### Step 4: Write the SKILL.md See [references/writing-guide.md](references/writing-guide.md) for the full writing guide. Key points: #### Frontmatter (Level 1 — always in context) ```yaml --- name: kebab-case-name description: > What it does + when to use it + specific trigger phrases. Max 1024 chars. This is the ONLY thing loaded by default. --- ``` The description is the most important part — it determines whether the skill activates. Include: - What the skill does (1 sentence) - When to use it (specific scenarios) - Trigger phrases users would actually say **Rules:** - `name`: kebab-case, lowercase, max 64 chars, must match folder name - `description`: required, max 1024 chars, no XML angle brackets - No `claude` or `anthropic` in the name (reserved) #### Body (Level 2 — loaded when skill activates) Keep SKILL.md body **under 500 lines / ~5000 words**. This goes into the agent's context window alongside conversation history, other skills, and system prompt. Structure options (pick the best fit): | Pattern | Best for | Example | |---|---|---| | **Workflow** | Sequential processes | Steps 1→2→3 with validation gates | | **Task-based** | Tool collections | "Merge PDFs" / "Split PDFs" / "Extract text" | | **Reference** | Standards, guidelines | Brand guide with colors / typography / voice | | **Capabilities** | Feature sets | Numbered list of related features | **Writing rules:** - Use imperative form ("Run the script", not "You should run the script") - Be specific and actionable (file paths, commands, parameters) - Include error handling for common failures - Provide concrete examples over abstract explanations - Reference bundled files with relative paths: `scripts/validate.sh`, `references/api.md` #### Bundled Resources (Level 3 — loaded on demand) ```markdown ## Advanced Configuration For database schema details, see [references/schema.md](references/schema.md). For deployment patterns by provider, see: - [references/aws.md](references/aws.md) - [references/gcp.md](references/gcp.md) ``` The agent reads these files only when it needs them. This is progressive disclosure — keep SKILL.md lean, push detail into reference files. **Guidelines:** - Keep references one level deep from SKILL.md (no deeply nested links) - For files over 100 lines, add a table of contents at the top - Scripts can be executed without reading into context (token efficient) - Assets are used in output, not loaded into context ### Step 5: Validate Run the validation script: ```bash python3 scripts/validate.py ``` Checks: frontmatter format, naming conventions, description quality, file structure, broken references, line count. ### Step 6: Iterate Skills are living documents. After real usage: 1. Note where the agent struggles or goes off-track 2. Tighten instructions for problem areas 3. Add error handling for new edge cases 4. Move content between SKILL.md and references as needed 5. Re-validate after changes ## Review Mode When asked to review an existing skill, evaluate against this checklist: ### Triggering - [ ] Description includes what + when + trigger phrases - [ ] Tested: would the agent load this for the right queries? - [ ] Tested: would it NOT load for unrelated queries? ### Structure - [ ] SKILL.md exists with valid frontmatter - [ ] Name is kebab-case, matches folder name - [ ] Body under 500 lines - [ ] Progressive disclosure used (references for detail) - [ ] No README.md or extraneous docs in the skill folder ### Content Quality - [ ] Only includes knowledge the agent doesn't already have - [ ] Instructions are specific and actionable - [ ] Error handling for common failures - [ ] Concrete examples provided - [ ] Scripts tested and working ### Pi-Specific - [ ] Relative paths use skill directory as root - [ ] Compatible with Pi's skill loading (`--skill` or discovery) - [ ] Works alongside other skills (composable) Report findings as: 🔴 Critical | 🟡 Important | 🔵 Minor | ✅ Good ## Common Mistakes | Mistake | Fix | |---|---| | Description too vague ("Helps with projects") | Add specific triggers and capabilities | | Everything in SKILL.md (2000+ lines) | Move detail to `references/`, keep body lean | | Explaining things the agent already knows | Remove — only add novel domain knowledge | | No trigger phrases in description | Add "Use when..." with natural language examples | | Inline scripts in SKILL.md | Move to `scripts/`, reference with relative path | | Magic values without explanation | Document all constants, paths, credentials | | Missing error handling | Add "If X fails..." for each critical step | | `README.md` in the skill folder | Delete — all docs go in SKILL.md or references | ## Pi Skill Locations Skills are discovered from these locations (first match wins on name collision): - **Global:** `~/.pi/agent/skills/`, `~/.agents/skills/` - **Project:** `.pi/skills/`, `.agents/skills/` (cwd + ancestors to git root) - **Settings:** `skills` array in settings.json - **CLI:** `--skill ` (always loads, even with `--no-skills`) - **Packages:** `skills/` dirs or `pi.skills` in package.json Skills register as `/skill:name` commands in interactive mode.