<< All versions

Skill v1.0.0

currentAutomated scan100/100
joymin5655/agent/persona-review
──Details
PublishedSeptember 28, 2026 at 01:24 AM
Content Hashsha256:2a74874035f6ab6c...
Git SHA
──Files
Files (1 file, 7.0 KB)
SKILL.md7.0 KBactive
SKILL.md · 147 lines · 7.0 KB

version: "1.0.0" name: persona-review description: Seat a panel of real-distribution-grounded Korean citizen personas in front of a piece of UX, copy, or content and report how ordinary users would react. Samples 5 personas from a catalog, dispatches each as an independent panelist, and synthesizes their reactions. NOT a code/security/performance review (those are code-reviewer / security-reviewer lanes) and NOT a substitute for real user testing — it is a fast, diverse first-read stand-in. when_to_use: You want a user/citizen perspective on something people will read or use — a landing page, onboarding, pricing copy, an email, an error message, a feature's wording — and ask "how would ordinary users react", "run a persona panel", "user-perspective review", or "/persona-review <target>". tools: Read, Grep, Glob, Agent


/persona-review

Goal

Answer one question with evidence from a diverse panel of ordinary users: how would real people react to this? You seat five synthetic-but-grounded Korean personas — sampled from Korean census distributions — in front of a target artifact and report their reactions, frictions, and what to change.

This is a citizen/user lens: comprehension, trust, tone, and clarity. It stands beside code-reviewer (correctness) and security-reviewer (vulnerabilities) and replaces neither. A panelist may voice a worry that is really a security or correctness concern ("is my data safe here?") — capture it as a user worry and route it to the right reviewer; do not adjudicate it here.

Leading word: panel. Five independent voices, then one synthesis — not one voice pretending to be five.

Inputs

  • Target — the artifact under review: a URL, a file path, pasted copy, a

screenshot description, or a component. Required.

  • Question (optional) — what to probe: first-read comprehension, trust,

tone, call-to-action clarity, pricing legibility. Default when unstated: first-time-visitor comprehension + trust.

  • Catalog — skills/persona-review/personas/catalog.json (shipped). If it

is missing or unparseable, stop and say so — do not invent personas.

Steps

1. Load the catalog

Read skills/persona-review/personas/catalog.json and confirm personas is a non-empty list. Each entry carries age, sex, province, occupation, education_level, a one-line summary, hobbies / skills, and a review_lens tag (1-2 of UX / 카피 / 접근성 / 신뢰 / 가격민감 — what kind of scrutiny this panelist is naturally suited to). Completion criterion: you can name the persona count and it is > 0.

2. Frame the target

State, in one line each: what the artifact is, and which question the panel answers. If the caller gave only "review this", use the default question. If the target is a URL or file you can open, open it first so panelists react to real content, not a guess.

3. Seat 5 panelists (spread, not convenience)

Pick five personas that spread across age bucket, region (province), and occupation — not five who cluster. A concrete rule that works: sort by a key that rotates each run (e.g. offset by how many times this target was reviewed), then walk the list skipping any persona whose (age_bucket, province) pair is already seated until you have five. If the question (step 2) maps to a review_lens — accessibility, pricing/trust, plain-language copy — prefer candidates whose lens matches when there's a tie, but never sacrifice the spread requirement to chase a lens match. Completion criterion: the five seated personas cover at least three distinct age buckets and four distinct provinces.

4. Dispatch the panel (parallel, independent)

Spawn five `general-purpose` agents in one message (five tool calls in a single turn, so they run concurrently). Give each ONE persona and the target. Panelist prompt template:

You are reacting to <target> only as this person — do not break character,
do not review code or design systems, do not be agreeable to please. You are:
<persona summary; age; sex; province; occupation; education; hobbies>.
React honestly as this person would on first encounter:
1. In one sentence, what do you think this is?
2. What, if anything, confuses you or makes you hesitate?
3. Would you trust it / act on it? Why or why not?
4. One thing that would make it clearer or more convincing for you.
Answer in Korean, in this person's voice and register. 6 sentences max.

Independence matters: do not let one panelist see another's answer. Do not answer on their behalf if a dispatch fails — re-dispatch or report the gap.

5. Synthesize

Collect the five reactions and write ONE report (schema below). Order it: reactions shared across panelists first (these are the strongest signals), then segment-specific friction (attributed to the persona segment that raised it), then prioritized recommendations. Route any user-voiced security/correctness worry to the owning reviewer under "Out of lane". Completion criterion: every finding traces to at least one seated panelist; no finding is invented to round out the report.

Output

markdown
## Persona panel review — <target>
**Panel** (5): <age·sex·region·occupation one-liners>
### Shared reactions
-<what most/all panelists felt> — <which segments>
### Segment-specific friction
-[<age·region·occupation>] <what tripped this persona> — <why it matters>
### Recommendations (prioritized)
1.<change> — addresses <friction>, for <segment>
### Out of lane (routed, not judged)
-<user-voiced security/correctness worry> → security-reviewer / code-reviewer
### Panel verdict
<one line: ships-for-users / needs-work / confusing — for whom>

Boundaries

  • Not code/security/performance review — route those concerns; don't judge them.
  • Not real user testing — a diverse, fast stand-in that surfaces likely

friction early; say so when the stakes call for real users.

  • Personas are synthetic — every persona is NVIDIA Nemotron synthetic data,

grounded in real distributions but describing no real individual (any Korean name in a summary is generated, not a real person's). Don't treat a persona as a real person or add fields to it.

  • No fabricated reactions — an unraised concern is not a finding.

Regenerating the catalog

The shipped catalog (119 personas) is a stratified subsample of the public nvidia/Nemotron-Personas-Korea dataset (CC BY 4.0): age_group × province hard-balanced across a 7×17 grid (one persona per cell — every province gets an even seat, not a population-proportional one, so a "spread panel" is always possible), with occupation_group × education_level soft-balanced on top. To rebuild it (e.g. a re-seeded sample), via DuckDB httpfs (no local dataset download):

uv run --with duckdb skills/persona-review/scripts/build_catalog.py --seed my-seed-2027

Attribution and modification notes live in the catalog's _meta block; keep them intact — CC BY 4.0 requires crediting the source and marking changes.

All versions