synthetic-userstudies

Run synthetic user research sessions natively — no backend required. The agent plays an AI-generated persona and simulates a user interview based on the 4 Ps framework (Persona, Problem, Promise, Product). Use when a user wants to run a user research session, interview a synthetic persona, validate product ideas, generate user personas, or simulate customer conversations. Triggers on "user research", "synthetic persona", "simulate a user", "userstudies", "interview a persona", "validate my idea", or "talk to a user".

9 stars

Best use case

synthetic-userstudies is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Run synthetic user research sessions natively — no backend required. The agent plays an AI-generated persona and simulates a user interview based on the 4 Ps framework (Persona, Problem, Promise, Product). Use when a user wants to run a user research session, interview a synthetic persona, validate product ideas, generate user personas, or simulate customer conversations. Triggers on "user research", "synthetic persona", "simulate a user", "userstudies", "interview a persona", "validate my idea", or "talk to a user".

Teams using synthetic-userstudies should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/synthetic-userstudies/SKILL.md --create-dirs "https://raw.githubusercontent.com/exiao/skills/main/thinking/synthetic-userstudies/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/synthetic-userstudies/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How synthetic-userstudies Compares

Feature / Agentsynthetic-userstudiesStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Run synthetic user research sessions natively — no backend required. The agent plays an AI-generated persona and simulates a user interview based on the 4 Ps framework (Persona, Problem, Promise, Product). Use when a user wants to run a user research session, interview a synthetic persona, validate product ideas, generate user personas, or simulate customer conversations. Triggers on "user research", "synthetic persona", "simulate a user", "userstudies", "interview a persona", "validate my idea", or "talk to a user".

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Synthetic UX Research

Run user research sessions natively. No backend calls. The agent plays the persona, generates characters, and runs interviews using the same prompts as userstudies.ai.

## Session Flow

### 1. Setup Phase
Collect the 4 Ps. Ask for any that are missing:

| Field | Description |
|---|---|
| **Persona** | Short description of target user (e.g. "Primary care doctor, US, recently graduated") |
| **Problem** | What they're struggling with — in their words |
| **Promise** | Value prop in <7 words (e.g. "Single-serve coffee") |
| **Product** | Key features / what you're building |

If any field is blank or weak, offer to autofill it. See **Autofill** section below.

Once all 4 Ps are set, confirm them and note the research phase (default: **Right Problems** — problem discovery). Load [principles.md](references/principles.md) for the phase framework. Then move to character generation.

### 2. Character Generation
Generate a `Character` from the Persona description. Follow the schema in [schema.md](references/schema.md). Output the character as a JSON block so it can be referenced later.

Example prompt to yourself: *"Create the most realistic character possible for: [persona]"*

### 3. Interview Mode
Once the character is generated, enter interview mode. You are now the character.

**Load [prompts.md](references/prompts.md) and follow `USER_RESEARCH_PARTICIPANT_PROMPT` exactly.**

Rules while in character:
- Respond as the character would via SMS: casual, personal, specific
- Use contractions, abbreviations, light emotion — vary length (few words to ~100)
- Share specific stories with sequencing, feelings, and decisions — what they did, not what they think
- If the topic isn't relevant to the character, say so in character
- Never break character unless the researcher explicitly steps out (see below)

**After every response**, append a `---` separator and list 3 suggested follow-up questions the researcher could ask. Use the `suggested_questions` format from [schema.md](references/schema.md).

**Question guidance:** Load [questions.md](references/questions.md) to seed the interview. Follow the interview structure in [principles.md](references/principles.md): open → get specifics → current behavior → pain → patterns. Suggested questions must be behavioral ("walk me through..."), never hypothetical or leading.

### 4. Auto-Interview Mode
If the researcher says "conduct interview" or "run the interview", run up to 6 turns autonomously:
- Follow the interview structure from [principles.md](references/principles.md): setup → specifics → current behavior → pain → patterns
- Pick the next best question from [questions.md](references/questions.md) or the current `suggestedQuestions`
- Ask it, respond in character, generate next suggested questions
- Stay in problem space — don't drift into solution validation
- Continue until 6 turns or the researcher interrupts
- Then deliver a concise findings summary: behavior patterns first, supporting quotes second

### 5. Stepping Out of Character
The researcher can say things like:
- "Autofill [field]" → run autofill, stay out of character until done
- "Change the persona" → restart setup
- "Show me the character" → print the Character JSON
- "Let's wrap up" → summarize key insights from the interview

After handling an out-of-character request, ask: *"Ready to continue the interview?"* before re-entering character.

## Autofill

When asked to autofill a field, load [prompts.md](references/prompts.md) and follow the corresponding `AUTOFILL_*_PROMPT`. Format the current conversation as:
```
user: [message]
persona: [response]
user: [message]
...
```

Return 1–3 suggestions for the field. Let the researcher pick or edit before locking it in.

Autofill is available at any point — during setup or mid-interview.

## State to Maintain

Track these across the session:
- **Character JSON** (generated in step 2, may evolve mid-interview if clarified)
- **4 Ps** (may be updated via autofill)
- **Conversation history** (researcher + persona turns only, not meta discussion)

Related Skills

writer

9
from exiao/skills

Write content in Eric's voice — articles, blog posts, tweets, social media posts, marketing copy, newsletter drafts. Loads WRITING-STYLE.md and enforces kill phrases.

positioning-angles

9
from exiao/skills

Use when defining product positioning, choosing strategic angles, crafting value propositions, competitive positioning, product messaging, differentiation strategy, or go-to-market angles. Also use for 'how should I position my app', 'what angle should I use', 'painkiller vs vitamin', or 'market positioning'.

outline-generator

9
from exiao/skills

Use when generating outlines, article structures, content outlines, blog outlines, planning article sections, structuring posts, breaking down topics into sections, or organizing ideas for long-form content. Also use for 'outline this', 'structure this article', or 'plan the sections'.

last30days-open

9
from exiao/skills

Use only when the user explicitly asks for the open variant of last30days, including watchlists, briefings, and history queries. Sources: Reddit, X, YouTube, web.

last30days

9
from exiao/skills

Use when researching what happened in the last 30 days on a topic. Also triggered by 'last30'. Sources: Reddit, X, YouTube, web. Produces expert-level summary with copy-paste-ready prompts.

hooks

9
from exiao/skills

Use when generating hooks, headlines, titles, and scroll-stopping openers for content. Also use when analyzing viral posts, Reels, TikToks, YouTube Shorts, or successful social examples to extract reusable hook patterns and improve hook guidance.

evaluate-content

9
from exiao/skills

Use when judging content quality OR editing/improving existing copy: shareability, readability, voice, cuttability, angle, copy sweeps.

editor-in-chief

9
from exiao/skills

Use when a first draft is complete and all Phase 1 gates are done: topic selected (seo-research), title approved (hooks), outline approved (outline-generator), draft written (writer). Runs autonomous diagnosis-prescribe-rewrite loop before Substack.

copywriting

9
from exiao/skills

Write or improve marketing copy for any surface: pages, ads, app stores, landing pages, TikTok/Meta scripts, push notifications, UGC. Combines page copy frameworks with direct response principles.

content-strategy

9
from exiao/skills

Use when building content strategy: hooks, angles, and ideas from what's trending now. Covers organic and paid creative across TikTok, X, YouTube, Meta, LinkedIn.

content-pipeline

9
from exiao/skills

Orchestrator for the 3-article content pipeline — runs research phase, spawns parallel article sub-agents, creates Typefully drafts. Use when running the full content pipeline (usually via cron at 3am).

yt-dlp

9
from exiao/skills

Download audio/video from YouTube and other sites using yt-dlp. Use when the user asks to download music, songs, albums, podcasts, or video from YouTube or similar platforms. Triggers on 'download song', 'get mp3', 'yt-dlp', 'youtube download', 'rip audio'.