
Ux Researcher Designer
Turn interview notes and usage data into research-backed persona archetypes (power user, casual user, etc.) before you design flows or write positioning.
Overview
UX Researcher Designer is an agent skill most often used in Idea (also Validate, Build) that generates research-backed user personas from interviews and usage data using a Python PersonaGenerator and archetype templates.
Install
npx skills add https://github.com/davila7/claude-code-templates --skill ux-researcher-designerWhat is this skill?
- Python PersonaGenerator with structured components: demographics, psychographics, behaviors, needs
- Archetype templates including power_user and casual_user with goals, frustrations, and quote stubs
- Aggregates user research signals via Counter/defaultdict-style grouping from interview or behavioral data
- Outputs JSON-friendly persona artifacts for downstream UX and product decisions
- Research-backed framing rather than generic fictional characters
- Four persona component groups: demographics, psychographics, behaviors, needs
- Built-in archetype templates include power_user and casual_user with goals, frustrations, and quotes
Adoption & trust: 963 installs on skills.sh; 27.8k GitHub stars.
What problem does it solve?
You have scattered interview notes and usage patterns but no crisp personas to align features, copy, and UX priorities.
Who is it for?
Solo founders validating an audience segment who can supply interview transcripts, survey fields, or behavioral aggregates and want repeatable persona JSON.
Skip if: Teams that need live usability testing, production analytics pipelines, or brand design systems without any raw research inputs.
When should I use this skill?
You have user interviews, survey fields, or behavioral data and need research-backed personas before design or positioning work.
What do I get? / Deliverables
You get structured persona profiles—with demographics, goals, frustrations, and archetype quotes—ready to inform scope, prototype flows, and design decisions.
- Persona objects with demographics, psychographics, behaviors, and needs
- Archetype-labeled profiles with representative quotes for UX and PM docs
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Canonical shelf is Idea because personas anchor who you are building for before scope and prototype commitments. Audience subphase fits data-driven persona synthesis—demographics, psychographics, behaviors, and needs from research inputs.
Where it fits
Cluster interview themes into power_user versus casual_user personas before picking a niche.
Cut v1 features that only serve a low-priority persona frustration.
Align onboarding steps to the casual_user minimal learning curve goal.
How it compares
Structured persona synthesis from your data—not a Figma kit and not a generic brainstorming chat.
Common Questions / FAQ
Who is ux-researcher-designer for?
Indie builders and small teams doing their own UX research who need personas grounded in interviews or usage data before designing screens or writing marketing copy.
When should I use ux-researcher-designer?
In Idea/Audience when defining who you serve; in Validate/Scope when prioritizing features per persona; in Build/frontend when aligning UI flows to power versus casual archetypes.
Is ux-researcher-designer safe to install?
It is primarily local Python logic over data you provide; check the Security Audits panel on this page before running scripts on sensitive customer PII.
SKILL.md
READMESKILL.md - Ux Researcher Designer
#!/usr/bin/env python3 """ Data-Driven Persona Generator Creates research-backed user personas from user data and interviews """ import json from typing import Dict, List, Tuple from collections import Counter, defaultdict import random class PersonaGenerator: """Generate data-driven personas from user research""" def __init__(self): self.persona_components = { 'demographics': ['age', 'location', 'occupation', 'education', 'income'], 'psychographics': ['goals', 'frustrations', 'motivations', 'values'], 'behaviors': ['tech_savviness', 'usage_frequency', 'preferred_devices', 'key_activities'], 'needs': ['functional', 'emotional', 'social'] } self.archetype_templates = { 'power_user': { 'characteristics': ['tech-savvy', 'frequent user', 'early adopter', 'efficiency-focused'], 'goals': ['maximize productivity', 'automate workflows', 'access advanced features'], 'frustrations': ['slow performance', 'limited customization', 'lack of shortcuts'], 'quote': "I need tools that can keep up with my workflow" }, 'casual_user': { 'characteristics': ['occasional user', 'basic needs', 'prefers simplicity'], 'goals': ['accomplish specific tasks', 'easy to use', 'minimal learning curve'], 'frustrations': ['complexity', 'too many options', 'unclear navigation'], 'quote': "I just want it to work without having to think about it" }, 'business_user': { 'characteristics': ['professional context', 'ROI-focused', 'team collaboration'], 'goals': ['improve team efficiency', 'track metrics', 'integrate with tools'], 'frustrations': ['lack of reporting', 'poor collaboration features', 'no enterprise features'], 'quote': "I need to show clear value to my stakeholders" }, 'mobile_first': { 'characteristics': ['primarily mobile', 'on-the-go usage', 'quick interactions'], 'goals': ['access anywhere', 'quick actions', 'offline capability'], 'frustrations': ['poor mobile experience', 'desktop-only features', 'slow loading'], 'quote': "My phone is my primary computing device" } } def generate_persona_from_data(self, user_data: List[Dict], interview_insights: List[Dict] = None) -> Dict: """Generate persona from user data and optional interview insights""" # Analyze user data for patterns patterns = self._analyze_user_patterns(user_data) # Identify persona archetype archetype = self._identify_archetype(patterns) # Generate persona persona = { 'name': self._generate_name(archetype), 'archetype': archetype, 'tagline': self._generate_tagline(patterns), 'demographics': self._aggregate_demographics(user_data), 'psychographics': self._extract_psychographics(patterns, interview_insights), 'behaviors': self._analyze_behaviors(user_data), 'needs_and_goals': self._identify_needs(patterns, interview_insights), 'frustrations': self._extract_frustrations(patterns, interview_insights), 'scenarios': self._generate_scenarios(archetype, patterns), 'quote': self._select_quote(interview_insights, archetype), 'data_points': self._calculate_data_points(user_data), 'design_implications': self._derive_design_implications(patterns) } return persona def _analyze_user_patterns(self, user_data: List[Dict]) -> Dict: """Analyze patterns in user data""" patterns = { 'usage_frequency': defaultdict(int),