$npx -y skills add softspark/ai-toolkit --skill agent-creatorCreates new specialized agents with frontmatter, tools, delegation. Triggers: new agent, create agent, agent scaffold, specialized agent.
| 1 | # Agent Creator |
| 2 | |
| 3 | $ARGUMENTS |
| 4 | |
| 5 | Create a new specialized agent following ai-toolkit conventions. |
| 6 | |
| 7 | ## Workflow |
| 8 | |
| 9 | 1. **Capture role** -- what problem space should the agent own? |
| 10 | 2. **Define triggers** -- which keywords or task types should route to this agent? |
| 11 | 3. **Choose tools** -- minimal tool set, least privilege first |
| 12 | 4. **Choose model** -- `opus` for deep reasoning, `sonnet` for lighter pattern work |
| 13 | 5. **Map supporting skills** -- which knowledge skills should the agent reference? |
| 14 | 6. **Write instructions** -- capabilities, constraints, escalation rules, deliverables |
| 15 | 7. **Validate** -- frontmatter, naming, skills references, tool whitelist |
| 16 | |
| 17 | ## Required Frontmatter |
| 18 | |
| 19 | ```yaml |
| 20 | --- |
| 21 | name: agent-name |
| 22 | description: "When to use this agent. Triggers: keyword1, keyword2." |
| 23 | tools: Read, Write, Edit |
| 24 | model: sonnet |
| 25 | skills: skill-one, skill-two |
| 26 | --- |
| 27 | ``` |
| 28 | |
| 29 | ## Authoring Rules |
| 30 | |
| 31 | - **MUST** match filename and `name:` using lowercase-hyphen format — drift breaks routing |
| 32 | - **MUST** include an explicit `Triggers:` list in the description so the router can dispatch deterministically |
| 33 | - **NEVER** reference skills that do not exist — either create the dependency first or drop the reference |
| 34 | - **NEVER** grant write access to `.claude/agents/` — that authority belongs to `meta-architect` alone |
| 35 | - **CRITICAL**: avoid tool bloat. Every extra tool widens blast radius; start from `Read` and justify additions one by one |
| 36 | - Give the agent a clear boundary: what it owns and what it must escalate |
| 37 | - Prefer specialized, narrow responsibility over generic "do everything" agents |
| 38 | |
| 39 | ## Agent Skeleton |
| 40 | |
| 41 | ```markdown |
| 42 | --- |
| 43 | name: {agent-name} |
| 44 | description: "When to use this agent. Triggers: keyword1, keyword2." |
| 45 | tools: Read, Edit |
| 46 | model: sonnet |
| 47 | skills: relevant-skill |
| 48 | --- |
| 49 | |
| 50 | You are a specialized agent for {domain}. |
| 51 | |
| 52 | ## Responsibilities |
| 53 | - Responsibility one |
| 54 | - Responsibility two |
| 55 | |
| 56 | ## Constraints |
| 57 | - Do not edit files outside owned scope unless required |
| 58 | - Escalate security, data-loss, or architecture risks |
| 59 | |
| 60 | ## Deliverables |
| 61 | - Clear findings |
| 62 | - Specific edits or recommendations |
| 63 | - Validation notes |
| 64 | ``` |
| 65 | |
| 66 | ## Validation Checklist |
| 67 | |
| 68 | - [ ] Filename matches `name:` in frontmatter |
| 69 | - [ ] Description includes trigger words and use cases |
| 70 | - [ ] Tools are from the approved Claude Code tool set |
| 71 | - [ ] Referenced skills exist |
| 72 | - [ ] Model choice matches expected complexity |
| 73 | - [ ] `scripts/validate.py` passes after adding the agent |
| 74 | |
| 75 | ## Gotchas |
| 76 | |
| 77 | - The `description` is the **only** content the model sees at routing time (progressive disclosure, tier 1). Adding triggers to the body without putting them in `description` means the agent is invisible to the router. |
| 78 | - `tools:` parser acceptance varies between Claude Code, ai-toolkit adapters, and downstream consumers — some accept comma-separated, some space-separated, some YAML lists. Stick to one style consistent with neighbouring agents in the repo and let `scripts/validate.py` catch drift. |
| 79 | - Agent `name` is capped at 64 chars; some consumers silently truncate longer names, which then **fail to match** the filename at load time. Keep names short and unambiguous. |
| 80 | - `skills:` can reference skills inside plugin packs; if the user has not enabled that pack, the agent fails on first invocation with an opaque "skill not found" error. Either reference only in-tree skills, or document the plugin prerequisite in the agent body. |
| 81 | |
| 82 | ## When NOT to Use |
| 83 | |
| 84 | - For a **skill** (slash command or knowledge doc) — use `/skill-creator` instead |
| 85 | - For a **slash command** that is *not* an agent delegate — use `/command-creator` |
| 86 | - For a **plugin pack** bundling multiple agents and skills — use `/plugin-creator` |
| 87 | - To *modify* an existing agent — delegate to the `meta-architect` agent; this skill is create-only |
| 88 | - When the task is really a workflow (orchestrator + N specialists) — reach for `/orchestrate` or `/workflow` before minting a new agent |