Clusters customer feedback into themes with frequency, severity, and representative quotes. Use when asked to "analyze this feedback", "synthesize customer feedback", "what are users saying", "cluster these support tickets", or "find patterns in this feedback".
Cluster and synthesize customer feedback into themes with frequency, severity, trend, and representative quotes. The skill's job is to turn a pile of feedback into product signal — not to summarize what customers said, but to identify what they need.
Any form of customer feedback:
The input does not need to be organized or pre-categorized. This skill produces the organization.
Absorb the full feedback corpus before producing any output. Understand the volume, the sources, the date range, and the general territory before clustering. Premature clustering misses connections.
Read these files:
references/user-feedback-analysis.md — Clustering standards, severity framework, signal vs. noise, quote selection, source channel weightingreferences/pm-smell-test.md — Check for smells 5 (false precision) and 15 (recency bias in analysis)references/agent-readable-output.md — Agent Block format and shared enum vocabularyIf company/facts/product.md exists and is substantive, read it for product areas and existing features. This helps map themes to product context and distinguish feedback about your product from feedback about adjacent systems.
If company/facts/customers.md exists and is substantive, read it for customer segments, buyer vs. user dynamics, pain points, and voice-of-customer channel context. This helps map themes to specific segments and weight feedback signals by ICP relevance.
If company/facts/competitors.md exists and is substantive, read it for competitive landscape. Customer feedback that mentions competitors or alternatives is a specific kind of signal worth calling out.
If company/interfaces/data-sources.md exists and is substantive, read it for feedback channel context — what channels exist, known biases, and volume expectations.
If any of these files exist but are still stub templates, treat them as unavailable and say so in the context note.
Before clustering, inventory what you have:
This catalog goes into the output. It frames the scope and limitations of the synthesis.
Group feedback by underlying need or problem, not by surface feature request. Apply the clustering standards from references/user-feedback-analysis.md:
Each theme must meet three criteria:
Name themes as the underlying problem, not the requested solution: "Payment history is not discoverable" not "Users want a receipt button."
For each theme, determine:
references/user-feedback-analysis.mdFor each theme, select 2-3 quotes that:
Per references/user-feedback-analysis.md — representative, not dramatic.
Explicitly flag items or themes that are likely noise:
Also flag: low-frequency but high-severity items that could be easy to dismiss but represent real risk (e.g., data loss, security concerns, billing errors).
If company/facts/product.md is available and substantive:
If product context isn't available, skip this step and note the limitation.
Check for:
Rank themes by impact: frequency × severity × trend. A growing, painful, widespread theme outranks a stable, annoying, isolated one.
For the top themes, recommend a next step:
## Feedback Synthesis: [Date Range or Description]
<!-- AGENT BLOCK -->
```yaml
agent_block:
skill: user-feedback
theme_count: [integer]
high_severity_theme_count: [integer — themes with severity Blocking or Painful]
recommended_action_count: [integer]
data_quality: [High / Medium / Low]
```
<!-- /AGENT BLOCK -->
### Summary
[Total items analyzed. Source channels. Number of themes identified. The 2-3 most significant themes in one sentence each. Biggest overall signal.]
---
### Themes
#### 1. [Theme Name] — Severity: [Blocking/Painful/Annoying/Cosmetic] | Frequency: [N mentions] | Scope: [Widespread/Moderate/Isolated] | Trend: [Growing/Stable/Declining/New/No baseline]
**What users are saying:** [1-2 sentence synthesis of the theme — the underlying need, not the surface request]
**Representative quotes:**
- "[Quote]" — [Channel, date if available]
- "[Quote]" — [Channel]
- "[Quote]" — [Channel]
**Source distribution:** [Support: N | NPS: N | Reviews: N | Interviews: N | Other: N]
**Product connection:** [Which product area. Existing backlog item? Active project? Known gap? Or "No current work addresses this."]
---
[Repeat for each theme, ordered by priority (frequency × severity × trend)]
---
### Signal vs. Noise
**Likely noise:**
- [Theme or items identified as edge cases, misattributed, or personal preference — with brief explanation of why]
**Low-frequency, high-severity (watch closely):**
- [Items that are rare but represent serious risk — data loss, billing errors, security concerns]
---
### Recommended Actions
1. **[Top priority theme]** — Action: [Investigate / Add to backlog / Escalate / Monitor]. Why: [frequency × severity × trend assessment].
2. **[Second priority]** — Action: [type]. Why: [assessment].
3. **[Third priority]** — Action: [type]. Why: [assessment].
---
### Data Quality Notes
- **Total items:** [N]
- **Source channels:** [list with counts per channel]
- **Date range:** [range, or "not specified"]
- **User segments represented:** [if identifiable, or "not identifiable from the data"]
- **Limitations:** [Small sample, single channel, no longitudinal baseline, channel bias, etc.]
---
### Smell Test
- **Smell 5 (False Precision):** [Finding — are confidence levels appropriate for the sample size?]
- **Smell 15 (Recency Bias):** [Finding — or "No prior synthesis available for comparison" / "Longitudinal balance checked"]
> **Context note:** [State which substantive company files were loaded, which were absent, and which were stub templates. Note what the synthesis might miss without product context or feedback channel context.]
After producing the artifact, write it to knowledge/user-feedback/ using the naming convention: YYYY-MM-DD-feedback-slug.md, where YYYY-MM-DD is today's date and feedback-slug is a lowercase hyphenated slug derived from the date range or description. Report the saved file path in the conversation.