agentsclimarketplace

Feedback synthesis

Skill shaan-ad/pm-os/skills/feedback-synthesis

Analyze customer feedback from any source. Categorize by theme, frequency, and severity. Output a synthesis with top themes, representative quotes, and recommended actions.From its SKILL.md

Install
npx -y skills add shaan-ad/pm-os --skill feedback-synthesis

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

5.4 KB, as published. Nobody here has run it

Feedback Synthesis

You analyze customer feedback and produce a structured synthesis report. Feedback can come from pasted text, files, or Slack channels (via MCP).

Before Running

  1. Check that knowledge/ exists. If not, tell the user: "No knowledge base found. Run /pm-setup first."
  2. Read knowledge/pm-context.md for product context, key metrics, and tone preferences.
  3. Read knowledge/okrs.md for current objectives (to connect feedback themes to goals).

Step 1: Collect Feedback

Ask the user: "How would you like to provide the feedback?"

Offer three options:

Option A: Paste directly

"Paste the feedback below. It can be messy: support tickets, NPS comments, survey responses, Slack messages, email threads. I'll parse it all."

Option B: Import from file

"Give me a file path (CSV, TXT, MD, or JSON). I'll read it and extract the feedback entries."

Read the file and parse it. Handle common formats:

  • CSV: Look for columns like "feedback", "comment", "message", "text", "description"
  • JSON: Look for arrays of objects with text fields
  • TXT/MD: Treat each paragraph or line as a separate piece of feedback

Option C: Pull from Slack (MCP)

Check if Slack MCP tools are available.

If available:

  • Ask: "Which Slack channel should I pull from? And how far back? (e.g., #product-feedback, last 7 days)"
  • Use Slack MCP to fetch messages from that channel and timeframe
  • Filter for actual feedback (skip status updates, casual chat, bot messages)

If NOT available:

  • Say: "Slack integration isn't set up. You can install the Slack MCP server for direct channel access. For now, paste the feedback or give me a file path."

Step 2: Parse and Categorize

Once you have the raw feedback, process it:

  1. Extract individual pieces of feedback. Each distinct complaint, suggestion, praise, or question is one entry.
  2. Categorize each entry by theme. Create themes from the data (don't use pre-built categories). Typical themes: usability issues, missing features, performance, pricing, onboarding, specific feature requests.
  3. Rate severity for each entry:
    • Critical: User is blocked, churning, or losing money
    • High: Significant friction, workaround required
    • Medium: Annoying but manageable
    • Low: Nice-to-have, minor polish
  4. Rate sentiment: Positive, Negative, Neutral, Mixed
  5. Count frequency: How many entries per theme

Step 3: Generate Synthesis

Produce the synthesis in this format:

# Feedback Synthesis: {date}

**Source**: {where the feedback came from}
**Entries analyzed**: {count}
**Date range**: {if known}

---

## Top Themes

### 1. {Theme Name} ({count} mentions, {severity})
**Summary**: {1-2 sentence description of what users are saying}

**Representative quotes**:
> "{actual quote from feedback}"
> "{actual quote from feedback}"

**Severity breakdown**: {X critical, Y high, Z medium}

### 2. {Theme Name} ({count} mentions, {severity})
{same structure}

### 3. {Theme Name} ({count} mentions, {severity})
{same structure}

{Continue for all themes with 2+ mentions. Single-mention items go in "Other Signals" below.}

---

## Sentiment Overview
- Positive: {count} ({percentage})
- Negative: {count} ({percentage})
- Neutral: {count} ({percentage})
- Mixed: {count} ({percentage})

---

## Other Signals
{Single-mention items that are notable}

---

## Recommended Actions

| Priority | Action | Theme | Rationale |
|----------|--------|-------|-----------|
| 1 | {specific action} | {theme} | {why this is the top priority} |
| 2 | {specific action} | {theme} | {rationale} |
| 3 | {specific action} | {theme} | {rationale} |

---

## Connection to OKRs
{Map the top themes to current OKRs if relevant. Call out themes that are NOT covered by any current objective.}

---

*Generated by PM-OS feedback-synthesis*

Step 4: Save the Report

Write the synthesis to knowledge/feedback/synthesis-{YYYY-MM-DD}.md.

Tell the user: "Synthesis saved to knowledge/feedback/synthesis-{date}.md. This will show up in your /pm-dashboard and /brief."

Step 5: Suggest Next Steps

Based on the findings, suggest specific PM-OS actions:

  • If a critical theme emerged: "Consider running /prd to spec a fix for {theme}."
  • If a competitor was mentioned: "Run /competitive-intel on {competitor} to understand their approach."
  • If it connects to OKRs: "This feedback supports OKR {X}. Consider adding it to your /prioritize backlog."
  • If a theme is new territory: "This theme isn't covered by current OKRs. Consider an /opportunity-assessment for {theme}."

Behavior Notes

  • Use actual quotes. Never fabricate or paraphrase quotes in the "representative quotes" sections. Use the exact words from the feedback.
  • Be specific in actions. "Fix the onboarding flow" is too vague. "Add a progress indicator to the 5-step onboarding wizard" is better.
  • Don't over-categorize. If there are only 10 pieces of feedback, 3-4 themes is plenty. Don't create a theme for every entry.
  • Flag data quality. If the feedback set is small (<10), skewed toward one channel, or all from the same time period, note the limitations.
  • Respect the product context. Reference the product stage and key metrics from pm-context.md when making recommendations.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.