$npx -y skills add pilotspace/ADD --skill persona-authorAuthor or improve an ADD-method persona file (a .add/personas/ slug.md) — the project-fit requirements LENS the ADD engine validates and the design/build/verify/advisor surfaces load. Use when adding a domain expert to the ADD roster, when the add-worker persona mode must DRAFT a
| 1 | # Authoring an ADD persona |
| 2 | |
| 3 | A persona is a **lens, not a voice** — a distilled slice of domain expertise the ADD engine |
| 4 | loads onto a beat so a generic agent becomes the specialist. Author for that seam and nothing |
| 5 | else: **tone lives in SOUL.md**, the **six-dimension self-score lives in the agent** (add-worker), |
| 6 | and the **deliverable's shape lives in the agent's Return contract**. A persona that duplicates |
| 7 | any of those is dead weight. What a persona owns is *judgment*: the rules it refuses to wave |
| 8 | through, the smells it suspects, the done-bar it measures against. |
| 9 | |
| 10 | Two references and one worked example back this workflow — read them as you go: |
| 11 | - **`references/contract.md`** — the exact engine contract (required/recommended/optional sections, |
| 12 | frontmatter field semantics, the flow values and task-kinds taxonomy, the quality WARNs). Read |
| 13 | this FIRST; a persona that misses the contract is loaded by no surface. |
| 14 | - **`references/patterns.md`** — the judgment layer distilled from a deep read of strong subagent |
| 15 | files plus a diagnosis of the vendored teacher corpus, each pattern with a before/after. This is |
| 16 | what separates an expert lens from a keyword list. |
| 17 | - **`references/seeding.md`** — how to SEED a first draft from an existing source (the teacher |
| 18 | library at `.add/personas-teacher/`, or a `~/.claude/agents/*.md` subagent) instead of a blank |
| 19 | page: the two source→schema mappings, and the columns a source never supplies (failure-aware |
| 20 | Success Metrics, `not-when`, read-before-you-assert) that you must add yourself. |
| 21 | - **`assets/example-persona.md`** (an I/O lens) and **`assets/example-design-persona.md`** (a |
| 22 | design lens) — two fully-worked personas to imitate, not copy. Compare them: the I/O lens carries |
| 23 | a design-for-failure ability AND Critical Rule; the design lens omits both (it touches no I/O) and |
| 24 | leads with accessibility instead. Proof the patterns are *conditional* — matched to the surface. |
| 25 | |
| 26 | ## Decide the move |
| 27 | |
| 28 | Most requests are NOT "write a new persona". Pick the path first: |
| 29 | |
| 30 | 1. **A sibling already fits** — its `use-when:` matches the task's `kind:` and domain → *select it, |
| 31 | don't author*. A roster of near-duplicates is worse than one sharp lens. |
| 32 | 2. **A sibling ALMOST fits** and the gap is a lesson worth keeping → *fold into it* (bump its |
| 33 | `folded:` line), don't fork a near-twin. |
| 34 | 3. **No lens owns this seam** → author a new one. Don't start blank: **seed** from the nearest |
| 35 | teacher persona (`.add/personas-teacher/`) or a sample subagent (`~/.claude/agents/*.md`) per |
| 36 | `references/seeding.md`, then run the Workflow below over the seeded draft. |
| 37 | |
| 38 | When unsure, prefer (1) then (2). A new persona must earn its place by owning a seam no sibling does. |
| 39 | |
| 40 | ## Workflow |
| 41 | |
| 42 | 1. **ORIENT before drafting.** Run `python3 .add/tooling/add.py status`. Read the sibling personas |
| 43 | in `.add/personas/*.md` (frontmatter alone is enough) and, if present, the teacher library at |
| 44 | `.add/personas-teacher/`. You are placing ONE lens in a roster — know the neighbours so this |
| 45 | persona has a distinct seam, not an overlap. If you'll author (no sibling fits), pick the |
| 46 | nearest teacher persona or a sample subagent as a seed now and follow `references/seeding.md` — |
| 47 | a head-start on structure beats a blank page (the judgment layer is still yours to add). |
| 48 | |
| 49 | 2. **Fix the seam (frontmatter).** Decide the apply-`flow:` (design · build · advisor · verify — |
| 50 | comma-separate if more than one; NO other value is loaded), the `task-kinds:` it owns (from the |
| 51 | closed taxonomy), and the `use-when:` / `not-when:` boundary that routes THIS persona over its |
| 52 | siblings. See `references/contract.md` for exact semantics — these keys are the selection contract. |
| 53 | Claiming more than one flow? Plan the **per-flow stance** now: one line per flow on what the |
| 54 | lens leads with there (a verify stance defaults to NEEDS-WORK until the evidence cites the run). |
| 55 | |
| 56 | 3. **Write Identity with earned perspective.** One short paragraph: role, domain depth, and *what |
| 57 | this lens has seen succeed or fail* that shapes its j |