library/specializations/product-management/skills/user-research-synthesis/SKILL.md
Specialized skill for synthesizing qualitative user research into actionable insights. Analyzes interview transcripts, extracts patterns and themes, identifies pain points, creates affinity diagrams, and generates persona attributes from research data.
npx skillsauth add a5c-ai/babysitter user-research-synthesisInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Synthesize qualitative user research data into actionable product insights with thematic analysis and evidence-based recommendations.
This skill provides comprehensive capabilities for transforming raw user research data into structured insights. It supports interview transcript analysis, survey response synthesis, support ticket mining, and cross-source research aggregation.
Supported formats:
- Interview transcripts (.txt, .md, .docx)
- Survey exports (.csv, .xlsx)
- Support ticket exports (.csv, .json)
- User feedback logs (.json, .csv)
## Analysis Framework
### Step 1: Initial Coding
For each transcript:
1. Read through completely for context
2. Highlight significant statements
3. Apply initial codes (open coding)
4. Note participant metadata
### Step 2: Pattern Recognition
Across transcripts:
1. Group similar codes
2. Identify recurring themes
3. Note frequency of mentions
4. Track contradicting evidence
### Step 3: Insight Generation
For each theme:
1. Define the insight clearly
2. List supporting evidence (3+ quotes)
3. Assess confidence level
4. Note actionable implications
{
"transcript_id": "INT-001",
"participant": {
"id": "P001",
"segment": "power_user",
"tenure": "2_years"
},
"findings": [
{
"code": "onboarding_friction",
"theme": "First-time experience",
"quote": "I had no idea where to start...",
"timestamp": "00:12:34",
"sentiment": "negative",
"intensity": "high"
}
],
"summary": {
"key_pain_points": [],
"unmet_needs": [],
"positive_experiences": [],
"feature_requests": []
}
}
## Affinity Diagram Process
### 1. Capture Observations
- One observation per note
- Include source attribution
- Maintain original language
### 2. Group Bottom-Up
- Cluster similar observations
- Name each cluster
- Create hierarchy of clusters
### 3. Output Format
# Theme: [Theme Name]
## Subtheme: [Subtheme Name]
- Observation 1 (P001, INT-001)
- Observation 2 (P003, INT-003)
- Observation 3 (P007, INT-007)
### Evidence Strength
- Strong: 5+ supporting observations
- Moderate: 3-4 supporting observations
- Emerging: 2 supporting observations
## Insight Template
### Insight ID: INS-001
**Statement**: [Clear, actionable insight statement]
**Theme**: [Parent theme]
**Confidence**: [High/Medium/Low]
**Evidence Count**: [Number of supporting data points]
### Supporting Evidence
| Source | Quote | Participant |
|--------|-------|-------------|
| INT-001 | "..." | P001 |
| INT-003 | "..." | P003 |
| SUR-045 | "..." | R045 |
### Implications
- Product: [Product implications]
- Design: [Design implications]
- Engineering: [Technical considerations]
### Recommendations
1. [Specific recommendation]
2. [Specific recommendation]
### Contradicting Evidence
- [Note any contradicting findings]
const researchSynthesisTask = defineTask({
name: 'research-synthesis',
description: 'Synthesize user research into actionable insights',
inputs: {
transcriptPaths: { type: 'array', required: true },
researchQuestion: { type: 'string', required: true },
outputFormat: { type: 'string', default: 'markdown' },
minEvidenceThreshold: { type: 'number', default: 3 }
},
outputs: {
themes: { type: 'array' },
insights: { type: 'array' },
personas: { type: 'array' },
recommendations: { type: 'array' }
},
async run(inputs, taskCtx) {
return {
kind: 'skill',
title: 'Synthesize user research findings',
skill: {
name: 'user-research-synthesis',
context: {
operation: 'full_synthesis',
transcriptPaths: inputs.transcriptPaths,
researchQuestion: inputs.researchQuestion,
outputFormat: inputs.outputFormat,
minEvidenceThreshold: inputs.minEvidenceThreshold
}
},
io: {
inputJsonPath: `tasks/${taskCtx.effectId}/input.json`,
outputJsonPath: `tasks/${taskCtx.effectId}/result.json`
}
};
}
});
## JTBD Statement Format
When [situation/context],
I want to [motivation/goal],
So I can [expected outcome].
### Extraction Process
1. Identify triggering situations in transcripts
2. Extract stated and unstated motivations
3. Map to desired outcomes
4. Categorize: Functional, Emotional, Social jobs
| Severity | Frequency | Impact | Priority | |----------|-----------|--------|----------| | Critical | 80%+ users | Blocks core task | P0 | | High | 50-80% users | Significant friction | P1 | | Medium | 25-50% users | Noticeable issue | P2 | | Low | <25% users | Minor annoyance | P3 |
# Research Synthesis Report
## Executive Summary
[2-3 sentence overview]
## Research Methodology
- **Method**: [Interviews/Surveys/etc.]
- **Participants**: [N participants]
- **Duration**: [Date range]
- **Research Questions**: [Key questions]
## Key Themes
### Theme 1: [Name]
[Description and evidence]
### Theme 2: [Name]
[Description and evidence]
## Top Insights
1. **Insight**: [Statement]
- Evidence: [Count]
- Confidence: [Level]
- Recommendation: [Action]
## Persona Implications
[How findings affect personas]
## Recommended Actions
1. [Action item]
2. [Action item]
## Appendix
- Full coding scheme
- Participant demographics
- Raw data references
development
Model documentation skill for generating model cards following Google's model card framework.
development
MLflow integration skill for experiment tracking, model registry, and artifact management. Enables LLMs to log experiments, compare runs, manage model lifecycle, and retrieve artifacts through the MLflow API.
data-ai
LIME-based local explanation skill for individual predictions across tabular, text, and image data.
devops
Kubeflow Pipelines skill for ML workflow orchestration, component management, and Kubernetes-native ML.