Persona author
Author 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 persona because none fits the task kind, or when folding a retrospective into an existing persona. Produces a schema-valid persona (Identity, Critical Rules, Default Requirement, Success Metrics, plus recommended frontmatter and Abilities/Anti-patterns/Playbook) that carries the judgment layer of strong agent design: earned-perspective identity, bold-lead rules, the qualification gate, read-before-you-assert, failure-mode-aware metrics, defended budgets, and per-flow stances. Seeds a first draft from the teacher library or a sample subagent when a near-fit source exists, instead of a blank page.From its SKILL.md
npx -y skills add pilotspace/ADD --skill persona-authorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 18 stars18 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 2 commands, including `python3 .add/tooling/add.py status` and 1 more.
SKILL.md
8.4 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it
Authoring an ADD persona
A persona is a lens, not a voice — a distilled slice of domain expertise the ADD engine loads onto a beat so a generic agent becomes the specialist. Author for that seam and nothing else: tone lives in SOUL.md, the six-dimension self-score lives in the agent (add-worker), and the deliverable's shape lives in the agent's Return contract. A persona that duplicates any of those is dead weight. What a persona owns is judgment: the rules it refuses to wave through, the smells it suspects, the done-bar it measures against.
Two references and one worked example back this workflow — read them as you go:
references/contract.md— the exact engine contract (required/recommended/optional sections, frontmatter field semantics, the flow values and task-kinds taxonomy, the quality WARNs). Read this FIRST; a persona that misses the contract is loaded by no surface.references/patterns.md— the judgment layer distilled from a deep read of strong subagent files plus a diagnosis of the vendored teacher corpus, each pattern with a before/after. This is what separates an expert lens from a keyword list.references/seeding.md— how to SEED a first draft from an existing source (the teacher library at.add/personas-teacher/, or a~/.claude/agents/*.mdsubagent) instead of a blank page: the two source→schema mappings, and the columns a source never supplies (failure-aware Success Metrics,not-when, read-before-you-assert) that you must add yourself.assets/example-persona.md(an I/O lens),assets/example-design-persona.md(a design lens), andassets/example-architect-persona.md(a direction lens) — three fully-worked personas to imitate, not copy. Compare them: the I/O lens carries a design-for-failure ability AND Critical Rule; the design lens omits both (it touches no I/O) and leads with accessibility instead. Proof the patterns are conditional — matched to the surface. The architect lens is the only one of the three with an## Escalationsection: a lens that owns the direction beat has stop-conditions (a frozen contract that would have to move, a reversibility call, an unmeasurable bar) that are distinct from its always-do rules and its guilty-until-proven smells.
Decide the move
Most requests are NOT "write a new persona". Pick the path first:
- A sibling already fits — its
use-when:matches the task'skind:and domain → select it, don't author. A roster of near-duplicates is worse than one sharp lens. - A sibling ALMOST fits and the gap is a lesson worth keeping → fold into it (bump its
folded:line), don't fork a near-twin. - No lens owns this seam → author a new one. Don't start blank: seed from the nearest
teacher persona (
.add/personas-teacher/) or a sample subagent (~/.claude/agents/*.md) perreferences/seeding.md, then run the Workflow below over the seeded draft.
When unsure, prefer (1) then (2). A new persona must earn its place by owning a seam no sibling does.
Workflow
-
ORIENT before drafting. Run
python3 .add/tooling/add.py status. Read the sibling personas in.add/personas/*.md(frontmatter alone is enough) and, if present, the teacher library at.add/personas-teacher/. You are placing ONE lens in a roster — know the neighbours so this persona has a distinct seam, not an overlap. If you'll author (no sibling fits), pick the nearest teacher persona or a sample subagent as a seed now and followreferences/seeding.md— a head-start on structure beats a blank page (the judgment layer is still yours to add). -
Fix the seam (frontmatter). Decide the apply-
flow:(design · build · advisor · verify — comma-separate if more than one; NO other value is loaded), thetask-kinds:it owns (from the closed taxonomy), and theuse-when:/not-when:boundary that routes THIS persona over its siblings. Seereferences/contract.mdfor exact semantics — these keys are the selection contract. Claiming more than one flow? Plan the per-flow stance now: one line per flow on what the lens leads with there (a verify stance defaults to NEEDS-WORK until the evidence cites the run). -
Write Identity with earned perspective. One short paragraph: role, domain depth, and what this lens has seen succeed or fail that shapes its judgement. Scars, not a résumé.
-
Write Critical Rules bold-lead. Each rule leads with a
**bold clause** — then the why. Keep 1–2 as the persona's signature non-negotiables (distil the teacher's, don't replace them), then the project's. Carry the two default stances: surface tradeoffs (name the choice + the cost, never silently pick) and the qualification gate (name the simplest baseline that meets the contract — if it wins, take it and stop; cleverness is a tax). Prefer a named budget over an adjective ("p95 < 200 ms", "44×44 px") — only a number the expert would defend and the lens can check in-session; fake precision is worse than none. Keep it to what it would refuse. -
List Abilities — concrete, anchored, checkable. Lead with the ORIENT commands the lens runs on load (
add.py status· the suite · the diff). State each ability as something doable now, anchored to a real file/tool/command — never an aspiration. A persona that owns I/O/network/infra carries a design-for-failure ability (timeout · retry · circuit-breaker · rollback for every external call; an unbounded await or silent half-write is a defect). -
Name Anti-patterns — guilty-until-proven. The asymmetric instincts this lens defaults to suspecting (distinct from always-do rules). The sharpest ones are the instincts the Identity's scars produced — attach the COST where you can ("PIL in prod → 3× slower than cv2"). Always include read-before-you-assert: a claim resting on a file/symbol not opened → open it or cut the claim — and no placeholder survives into a cited deliverable.
-
Set Default Requirement + Success Metrics. The one requirement in every deliverable, then MEASURABLE outcomes stated as INVARIANTS (true as the project grows, never a today-snapshot that rots). Sharpen each by the failure it guards against — a metric catches a specific way of being wrong — and keep every bar checkable in-session; an invented outcome statistic ("engagement +40%") is the signature rot of weak persona corpora.
-
(Optional) Playbook. Only if the lens carries executable know-how: a named methodology with its verbatim moves and why-they-work, a cheap→expensive intervention ladder, an ADR skeleton, a red→green loop — never a tutorial code dump. Tag each item
(teacher)or(ADD)so provenance is honest. -
VALIDATE. Save as
.add/personas/<slug>.md(never overwrite an existing persona; never use a_-prefixed name). Runpython3 .add/tooling/add.py check— it validates presence-based and surfaces quality WARNs (aflow:typo loaded by no surface; a bare<…>placeholder left unfilled). Sweep every<…>placeholder out; fix every WARN. Green check = the persona is roster-ready.
The one-line test
Before finishing, read the persona as its future self would: "Given only this lens and a task of my kind, would I make a sharper decision than a generic 15-year specialist?" If not, the judgment layer is too thin — deepen the Critical Rules, Anti-patterns, and failure-aware Metrics (that is where expertise lives), not the prose.
What ships with it: 6 files
37.2 KB alongside SKILL.md
assets/
- example-architect-persona.md7.4 KB
- example-design-persona.md3.0 KB
- example-persona.md3.4 KB
references/
- contract.md8.2 KB
- patterns.md9.1 KB
- seeding.md6.0 KB