skills/personafy/SKILL.md
Build a new opinionated advisor-persona skill — a reviewer "lens" like crusty-old-engineer — modeled on a real person or archetype and proven from real evidence. Mines the subject's authentic voice and discipline, defines its one distinct load-bearing question, drafts it to the family template, proves it steers in a live session, reduces it, and publishes it to a skills bundle. Use when creating or authoring a persona/advisor skill, adding a sibling to the crusty-old-engineer family, or turning a person's real direction style into a reusable reviewer skill. Also triggers on "personafy" / "personify".
npx skillsauth add microsoft/amplifier-bundle-skills personafyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Build a new advisor-persona skill — an opinionated reviewer "lens" that joins an
existing family of sibling personas (e.g., crusty-old-engineer). The persona is
modeled on a real person or archetype, grounded in mined evidence, and enforces ONE
distinct recurring question.
Success artifact: a complete, family-conformant SKILL.md that is (a) grounded in
verbatim evidence, (b) proven to steer an LLM in a live session, (c) reduced to the
smallest set that still steers, and (d) loading from its target bundle in a fresh session.
<subject>: (Optional) The person or archetype to model, plus pointers to evidence
(session corpora, transcripts, docs). If no corpus exists, derive the persona from a
written conceptual brief instead.<family>: (Optional) The sibling persona skills to fit alongside. Defaults to the
advisor-persona family in amplifier-bundle-skills (e.g., crusty-old-engineer).Read the existing sibling persona skills' SKILL.md in full. Extract: the shared section
template, the frontmatter/metadata shape, the tone-contract pattern (required / disallowed
/ style), and — critically — the single load-bearing question each sibling owns and how
they cross-reference each other.
Success criteria: You can state each sibling's distinct question in one line and reproduce the shared template and metadata shape.
Run one or more existing personas live against a shared, realistic scenario — plus a combined "consensus" run — to see how the written instructions translate into actual behavior and steering.
self with context_depth="none" (one isolated run per persona).Success criteria: You've seen how each sibling's instructions become behavior, not just read them — enough to know what makes the steering work.
Name the ONE distinct recurring question the new persona enforces. Build a contrast table against every sibling.
Success criteria: A one-line lens plus a contrast table showing it is genuinely distinct from each sibling. Rule: if the question collapses into a sibling's, it is not a new persona — stop.
The heart of the method. Gather the subject's authentic voice and decision-discipline from real data (use the conceptual fallback only if no corpus exists).
bash (jq/grep/sed; never cat a huge session file — a single line can
exceed your context window).model_role="research".model_role="reasoning".Conceptual fallback (no corpus): derive the same profile fields from a written brief about the archetype; mark everything as designed-not-mined.
Success criteria: A consolidated profile where every load-bearing trait is backed by a verbatim quote (or explicitly marked as designed), ranked by corroboration, with synthetic noise excluded. Rule: ground every claim in real evidence; an honest "N/A — not observed" beats a fabricated trait. Artifacts: the profile file path.
Write the skill mirroring the siblings exactly: identity (defined by negation — "not X, not Y"), When-to-Use framed as a cross-stage lens, not a stage-gate, the tone contract (required / disallowed / style), Core Behaviors each anchored in a verbatim quote from the profile, an Output Structure, one worked Example, Explicit Non-Goals, a Relationship-to-siblings section, and a Final Note. Match the family's frontmatter format.
Success criteria: A complete draft, structurally identical to the siblings, every
behavior grounded in the profile.
Rule: keep the verbatim quotes — they are the highest-signal tokens and the soul of the
persona.
Rule: do NOT include allowed-tools in the generated SKILL.md. Persona advisor skills are
inline (no context: fork), so the field is inert. If you must restrict tools for a fork-based
variant, use Amplifier module IDs (e.g. tool-filesystem, tool-bash, tool-delegate) —
never Claude Code tool names (Read, Grep, Bash, Agent).
Run the draft in a fresh CLI session against a real-ish scenario and confirm it adopts the voice and hits each behavior.
amplifier run --mode single --output-format text \
"Load the skill \"<name>\" and review the following as that persona: <realistic scenario>"
Success criteria: A transcript showing the persona behaving as designed (voice + each behavior firing). Rule: proof is demonstrated behavior — "the file exists" is NOT proof.
Apply context-reduction: cut redundancy to the smallest set that still steers (drop restated procedure, compress prose), but keep the verbatim quotes and the structural skeleton. Re-prove (Step 6) if the cut was heavy.
Check the frontmatter description: length, not just the body. The Agent Skills spec
recommends a 1024-character ceiling on description, and Amplifier's tool-skills module logs
a warning past it (soft — it does not block loading or truncate anything — but every visible
skill's full description is injected into the model's context on every turn, so an over-long
one is a small, permanently-recurring token cost, not a one-time nuisance). Measure it (e.g.
python3 -c "import yaml; print(len(yaml.safe_load(open('SKILL.md').read().split('---')[1])['description']))")
and if it's near or past 1024, compress — do not relocate the trimmed content into the body,
since the visibility hook only ever shows description, never the body. The single highest-value
cut is almost always the negation-identity clause (e.g. "Not a long-term ownership-cost reviewer —
a reviewer of whether THIS bet, sized as proposed, is a bet the team can actually win." compresses
to "Not a cost reviewer — a bet-sizing reviewer." with zero loss of routing signal, since the full
nuance already lives in the body's Identity section). Never cut the "Use when:" trigger list itself
— that's the part carrying the routing weight this step must preserve.
Success criteria: A leaner SKILL.md with the same steering power, verified, and a
description: field at or below ~700–800 characters (matching sibling norms like
crusty-old-engineer/cranky-old-sam) — comfortably under the 1024 ceiling, not just barely under it.
Pick a name in the family's convention. A shareable archetype name (a generic role) → a public bundle; a name that references a real person → a private/team bundle.
Success criteria: Name chosen and target bundle decided — public vs private matched to whether the name exposes a real person.
Place SKILL.md at <bundle>/skills/<name>/SKILL.md. Verify the bundle exposes skills via
the canonical directory-discovery registration — its tool-skills config points
config.skills at the whole skills/ directory (#subdirectory=skills), so a new skill
dir is auto-discovered. Do NOT rely on per-skill wrapper behaviors. Then run the git
lifecycle.
foundation:git-ops.Success criteria: PR merged into the target bundle.
Rule: a SKILL.md in skills/ is NOT exposed unless the bundle points tool-skills
at the skills/ directory — registration is directory-based, not per-file.
Run amplifier update, then load the skill in a FRESH session and confirm loaded_from is
the bundle cache — not a local ~/.amplifier/skills copy.
Success criteria: load_skill resolves the skill from the bundle cache path in a clean
session.
Rule: "merged on main" ≠ "loads for a user" — verify discoverability end-to-end, the
same gate the persona itself would demand.
tools
Plan a batch of independent work into isolated lanes, get your approval, then run each lane as its own autonomous /goal session — one git worktree, one branch, one tmux session each — and verify and merge the results yourself. Use when work decomposes into pieces that can run at the same time: "run these in parallel", "goal-batch", "launch lanes for these", "work these N tasks simultaneously", "batch these as goals". Nothing launches until you have seen the lane split and said go. This is NOT fire-and-forget: the orchestrating session re-runs the full test suite itself after every merge and never accepts a lane's own claim that it finished. NOT for bounded edits that each end in their own PR — use mass-change for that. Requires git, tmux, the amplifier CLI on PATH, and the goalify and monitor skills.
development
Momentum-driven engineering reviewer that holds one uncompromising gate — is it REAL, proven end-to-end as a user would — while driving work forward. Demands proof over claims, plumbing before polish, fail-loud over fallbacks, trust in the model over instructions, and protects the critical path so good-but-costly ideas don't stall the work. Warm, blunt, forward-driving — not a curmudgeon. A lens for any checkpoint — brainstorm, design, plan, implement, debug, or ship — not just the finish. Use when: pressure-testing whether an idea/design/plan is provable and on the critical path, whether you're building in the right order, whether a fix is real or a band-aid, or whether work is actually done/ready — any time the worry is "are we fooling ourselves about what's real?"
development
Convene the Product Development Council (six orthogonal product-delivery lenses, anchored by a mandatory problem-validation gate) on a target — cold independent fan-out, debate-to-consensus, synthesized verdict with recorded dissent and a roster manifest.
development
Convene the Product Development Council on the CURRENT conversation / work-in-progress — the plan, roadmap, or scope decision you've been building in this session. The INLINE counterpart to /product-council (which forks and runs isolated, so it cannot see the chat). Use when you want the council to critique what we're working on right now.