Loading...
Loading...
Builds a panel of personas from real material, interviews them under decision pressure (never stated preference), and walks a flow through their eyes — on a brief, a spec, a prototype, or the running app. Fresh panels, repeated runs, believe only what repeats; saturation and a parity check against real interviews when they exist. Three stances. Output is hypotheses tagged synthetic, never evidence. Use for "synthetic users", "walk this as the persona".
npx skill4agent add open-mercato/skills om-synthetic-users[SYNTHETIC]SDLC.md{subject}product-brief.md.html--appom-prepare-test-env--flow "<name>"[a-z0-9-]+--stance validate|simulate|adversaryexistingvalidateclientsimulateownadversary--panel <n>35--runs <n>231--hold-out <files>--open--research <dir>${SPECS_DIR}/research| Stance | The persona | Use when | What the output is |
|---|---|---|---|
| walks the running product or prototype and reports friction against what the brief promises | an existing product or a built prototype exists | friction on real screens that repeated across runs, still |
| answers interviews and walks the flow as the material describes them, every answer tagged "to confirm" | a client's users are not yet reachable | an interview plan: which persona, which question, who to book |
| looks for reasons not to buy, not to switch, not to trust; a run that agrees with the team is discarded as uninformative | our own idea, where confirmation is the risk | the objections that repeated and the brief assumption each one attacks |
.ai/skills/om-synthetic-users/SKILL.mdreferences/agentic-setup.md.ai/agentic.config.jsonSPECS_DIRproduct-brief.md${research}/personas.md--hold-out[ASSUMPTION]references/panels-and-repeats.md[ASSUMPTION]references/session-artifacts.mdreferences/persona-template.md${research}/personas.mdP01references/interview-script.mdadversary--openreferences/walkthrough.mdom-prepare-test-env--runsreferences/panels-and-repeats.mdadversaryreferences/parity-check.md${research}/calibration.mdsimulateadversaryA0nreferences/quality-gate.md${session}/report.mdreferences/report-templates.md${session}/transcripts/run-{n}-P{nn}.md${session}/screenshots/references/session-artifacts.mdpersonas.mdcalibration.mdNext:om-discover --refreshom-spec-writingnoneom-discover --refreshom-spec-writingom-ux-review-prpersonas.mdPersonas: <repo-relative path>
Walkthrough: <repo-relative path>
Runs: <n> runs × <m> personas; <k> findings survived every run; saturation <reached | not reached>
Parity: <overlap with held-out real interviews, or "skipped: <why>", or "no real interviews to compare">
Hypotheses: <n> to confirm with real users
Next: om-discover --refresh | om-spec-writing "<goal>" | none<k>Hypotheses:^Personas: (\S+)$^Walkthrough: (\S+)$^Next: (none|om-[a-z-]+.*)$[SYNTHETIC]om-auto-*adversarysimulatevalidatecalibration.mdpersonas.mdcalibration.mdreferences/research-basis.mdreferences/rules.mdPersonas:Walkthrough:Runs:Parity:Hypotheses:Next:.env