persona-lab
Skill9 starsChanged 3 months agoMITView on GitHub
Use after QA passes to simulate end-user testing with diverse profiles. Triggered by Cortex for tasks that impact UI, user flows, or user-facing text. Do NOT use for backend-only or infrastructure tasks. Also triggers on "test with users", "user simulation", "persona test", or "UX validation".
In this repository6 other files it gives its agents.
- context-managerSkill
- cortexSkill
- design-firstSkill
- pipeline-loggerSkill
- project-scaffolderSkill
- synapseSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 3 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 12
Core principle: If a low-tech user can't complete the flow, the implementation isn't done.
- Distinctive: line 47
Read project context to generate relevant personas:
- Very specific: line 117
After testing, log to logs/pipeline/YYYY-MM-DD.md under the PERSONA-LAB section of the current task:
- Distinctive: line 121
Recurring pattern: If the same friction appears across personas, note it
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Persona-Lab — The Simulated Focus Group
Overview
Persona-Lab simulates diverse end-user profiles testing the implemented feature, catching UX problems that code review misses. It operates at code-level understanding — reading widget/component code, evaluating text labels, tracing navigation flows — not rendered pixels.
Core principle: If a low-tech user can't complete the flow, the implementation isn't done.
Important limitation: Persona-Lab cannot see rendered UI. It evaluates UX through code structure, text content, and flow logic. Visual issues (alignment, color contrast, spacing) belong to QA or manual review.
Context Budget (v3)
Persona subagents receive ≤5k tokens of injected context (same cap as the Cortex specialist): task description, the UI/flow under test, relevant excerpt of wiki/ux pages if present, persona profile. Never inject full wiki pages — excerpts only.
When to Run
| Task type | Run Persona-Lab? |
| UI feature (new screen, flow) | Yes — full 3-persona test |
| UI modification (copy, layout) | Yes — 2 personas (low-tech + high-tech) |
| Backend/API (no UI) | No |
| Infrastructure/devops | No |
| Bug fix (UX-related) | Yes — 1 persona matching bug reporter profile |
--skip-persona flag | No |
Inputs from Cortex
Persona-Lab receives this context:
| Input | Source | Purpose |
| Task description | /task command | What was implemented |
| Files changed (list) | Specialist output | Scope of change |
| Feature description | wiki/product/features.md excerpt (if present) | Feature context |
| UI flow context | wiki/ux/ui-decisions.md excerpt (if present) | Navigation patterns |
| Brand/tone rules | wiki/branding.md excerpt (if present) | Language expectations |
| Relevant widget code | Changed UI files | Actual implementation |
Profile Generation
Read project context to generate relevant personas:
wiki/overview.md— target user descriptionwiki/ux/ui-decisions.md(if present) — UX principleswiki/branding.md(if present) — tone and visual identitywiki/product/features.md(if present) — feature context
Generate 3 personas with varying attributes:
| Attribute | Variation range |
| Tech proficiency | Low → High |
| Age range | Young → Senior |
| Usage context | Casual → Power user |
| Accessibility needs | None → Screen reader, large fonts |
| Patience level | Impatient → Methodical |
Persona naming: Give each persona a first name and archetype label (e.g., "Marco, tech-savvy power user"). This makes feedback reports readable.
Testing Process
For each persona:
- Read changed widget/component code — understand the information hierarchy (what the user sees)
- Trace navigation flow — which screen leads where, what taps/clicks do
- Evaluate text — labels, buttons, error messages, empty states against the persona's profile
- Count steps — how many taps/actions to complete the flow
- Identify friction — points where THIS persona would be confused, blocked, or frustrated
- Check error recovery — what happens if the persona makes a mistake
Report Format
## Persona-Lab Report — [Task Name]
**Date:** YYYY-MM-DD | **Skill:** [skill-used] | **Verdict:** PASS/FAIL
### Persona 1: [Name] ([archetype])
- **Profile:** [age, tech level, context, needs]
- **Flow:** [steps taken]
- **Result:** ✅ Completes / ❌ Blocked at step N
- **Frictions:** (if any)
- [severity emoji] [description]
- **Suggestions:** [actionable improvements]
### Persona 2: ...
### Persona 3: ...
### Summary
- Blocking issues: N
- Frictions: N
- Verdict: PASS / FAIL
- Recurring pattern: [if any friction repeats across personas]Severity Classification
| Level | Symbol | Meaning | Action |
| Blocking | 🔴 | Persona cannot complete the flow | Task returns to specialist |
| Friction | ⚠️ | Completes but with difficulty or confusion | If 3+ frictions across all personas → returns |
| Suggestion | 💡 | Minor improvement, not blocking | Logged for future iteration |
| Pass | ✅ | No issues for this persona | Continue |
Majority vote rule: A single friction from 1 persona = suggestion only. Must be 2+ personas experiencing the same friction, or any blocking issue, to trigger rework.
Learning Feedback
Recurring friction patterns are passed to Synapse for propagation via the learning packet. Example: if the low-tech persona consistently struggles with English terminology, Synapse propagates to the brand-voice skill as reinforcement.
Logging
After testing, log to logs/pipeline/YYYY-MM-DD.md under the PERSONA-LAB section of the current task:
- Each persona: Name, archetype, result (PASS/BLOCKED/friction), step where blocked (if applicable)
- Verdict: PASS or FAIL with reasoning
- Recurring pattern: If the same friction appears across personas, note it
On FAIL (blocking issue or 3+ frictions): also log to logs/errors/YYYY-MM-DD-errors.md with the specific frictions that caused the failure and feedback sent to specialist.
See skills/pipeline-logger/SKILL.md for complete log format.
Anti-Patterns
| Don't | Do instead |
| Flag visual/pixel issues | Only evaluate code structure, text, and flow logic |
| Use the same 3 personas every time | Regenerate personas based on task context |
| Flag a friction from 1 persona as blocking | Use majority vote: 2+ personas or 🔴 blocking required |
| Write vague feedback ("UX is confusing") | Be specific: which step, which text, which persona, why |
| Test backend-only changes | Skip for non-UX tasks |
| Skip logging persona results | Always log every persona test for pattern analysis |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

