{"id":"effd324d-3b90-455c-b79f-3259d8954dfa","shortId":"cf9fZU","kind":"skill","title":"analyzing-user-feedback","tagline":"Analyze user/customer feedback into a Feedback Analysis Pack (taxonomy, themes, recommendations). See also: conducting-user-interviews (collect new), designing-surveys (quantitative).","description":"# Analyzing User Feedback\n\n## Scope\n\n**Covers**\n- Aggregating and normalizing feedback from multiple channels (support, sales, research, reviews, surveys, usage signals)\n- Turning raw feedback into **themes with evidence** and **actionable recommendations**\n- Identifying **friction / reasons users won’t use the product** (not just validation)\n- Producing a repeatable **feedback loop** (cadence, owners, and handoffs)\n\n**When to use**\n- “Synthesize our user feedback into themes and actions.”\n- “Analyze support tickets / feature requests for the top issues.”\n- “Create a voice-of-customer report for <area> in the last <time window>.”\n- “Summarize churn reasons / cancellation feedback.”\n- “Cluster survey open-ends into insights and recommendations.”\n\n**When NOT to use**\n- You need to **collect new feedback** via interviews (use `conducting-user-interviews`) or surveys (use `designing-surveys`); this skill analyzes data you already have\n- You need **task-based usability evaluation** of a specific flow or prototype (use `usability-testing`)\n- You need backlog prioritization as the primary output (use `prioritizing-roadmap`)\n- You need a PRD/spec for a chosen solution (use `writing-prds` / `writing-specs-designs`)\n- You need **retention/engagement metric analysis** (quantitative cohort/funnel work) rather than qualitative feedback synthesis (use `retention-engagement`)\n- You only need to respond to individual tickets (support workflow, not synthesis)\n\n## Inputs\n\n**Minimum required**\n- Product area / workflow to analyze (or “all product”)\n- Time window + volume expectations (e.g., “last 90 days”, “~2k tickets”)\n- Feedback sources available (tickets, interviews, sales notes, reviews, surveys, community, logs)\n- The decision this analysis should inform (roadmap theme, launch readiness, onboarding fixes, messaging, quality)\n- Any segmentation that matters (ICP, persona, plan tier, lifecycle stage)\n- Constraints: privacy/PII rules, internal-only vs shareable, deadline/time box\n\n**Missing-info strategy**\n- Ask up to 5 questions from [references/INTAKE.md](references/INTAKE.md).\n- If data access is limited, proceed using a **small representative sample** and label confidence/limitations.\n- Do not request secrets. If feedback contains PII, ask for **redacted excerpts** or aggregated fields only.\n\n## Outputs (deliverables)\n\nProduce a **User Feedback Analysis Pack** in Markdown (in-chat; or as files if requested):\n\n1) **Context snapshot** (scope, decision, time window, segments, constraints)\n2) **Source inventory + sampling plan** (what’s included/excluded; why)\n3) **Taxonomy + codebook** (tags, definitions, and coding rules)\n4) **Normalized feedback table** (tagged items; links/IDs if available; no PII)\n5) **Themes & evidence report** (top themes, representative quotes, frequency/severity, confidence)\n6) **Recommendations** (actions, owners/time horizon if known, expected impact, open research questions)\n7) **Feedback loop plan** (cadence, stakeholders, how engineering participates, how insights are stored)\n8) **Risks / Open questions / Next steps** (always included)\n\nTemplates: [references/TEMPLATES.md](references/TEMPLATES.md)\n\n## Workflow (8 steps)\n\n### 1) Intake + decision framing\n- **Inputs:** User context; [references/INTAKE.md](references/INTAKE.md).\n- **Actions:** Confirm the decision, scope, time window, audience, and constraints. Define what “good” looks like.\n- **Outputs:** Context snapshot.\n- **Checks:** A stakeholder can answer: “What decision will this analysis change?”\n\n### 2) Inventory sources + define the sampling plan\n- **Inputs:** List of sources + access constraints.\n- **Actions:** Create a source inventory, decide inclusions/exclusions, and pick a sample strategy (random, stratified, top-volume buckets).\n- **Outputs:** Source inventory + sampling plan.\n- **Checks:** Sampling plan covers the highest-volume and highest-risk segments (or explicitly explains why not).\n\n### 3) First-pass read-through (open coding)\n- **Inputs:** Sampled feedback items.\n- **Actions:** Read/annotate items manually to surface what’s “wrong” and why users struggle or churn. Write raw notes before building categories.\n- **Outputs:** Initial codes/notes + candidate themes list.\n- **Checks:** Notes capture **rejection reasons** and **friction**, not just feature ideas.\n\n### 4) Build the taxonomy + codebook\n- **Inputs:** Initial codes; product context.\n- **Actions:** Define a tagging schema (topic, lifecycle stage, severity, user segment, root cause, sentiment). Write clear tag definitions and rules.\n- **Outputs:** Taxonomy + codebook.\n- **Checks:** Two people could tag the same item similarly using the codebook.\n\n### 5) Normalize and tag the feedback table\n- **Inputs:** Raw items; taxonomy/codebook.\n- **Actions:** Create a normalized table, tag each item, and capture evidence fields (source, date, segment, verbatim excerpt, link/ID).\n- **Outputs:** Normalized feedback table (tagged).\n- **Checks:** No PII; every row has at least 1 primary theme tag + a severity/impact signal.\n\n### 6) Synthesize themes + quantify carefully\n- **Inputs:** Tagged table.\n- **Actions:** Summarize top themes, quantify frequency by segment/source, identify severity and “why it happens”, and call out unknowns/bias.\n- **Outputs:** Themes & evidence report with confidence levels.\n- **Checks:** Each theme includes representative evidence (quotes/examples) and is not purely speculative.\n\n### 7) Translate into actions + learning plan\n- **Inputs:** Themes report; constraints.\n- **Actions:** Convert themes into actions (bugs, UX fixes, comms, product bets) and open questions (what to research next). Tie each action to evidence and expected impact.\n- **Outputs:** Recommendations + learning plan.\n- **Checks:** Recommendations are concrete enough to execute next sprint/quarter (clear owner/time horizon if known).\n\n### 8) Share out + establish the feedback loop + quality gate\n- **Inputs:** Draft pack.\n- **Actions:** Propose the share-out format (doc + review). Define cadence, owners, and storage (where insights live). Run [references/CHECKLISTS.md](references/CHECKLISTS.md) and score with [references/RUBRIC.md](references/RUBRIC.md). Add Risks/Open questions/Next steps.\n- **Outputs:** Final User Feedback Analysis Pack.\n- **Checks:** Pack is shareable as-is; limitations are explicit; follow-up actions are scheduled.\n\n## Quality gate (required)\n- Use [references/CHECKLISTS.md](references/CHECKLISTS.md) and [references/RUBRIC.md](references/RUBRIC.md).\n- Always include: **Risks**, **Open questions**, **Next steps**.\n\n## Anti-patterns (common failure modes)\n\n1. **Theme inflation** — Creating dozens of micro-themes that obscure the signal. Limit top-level themes to 5-10 and nest sub-themes underneath; if you have 20+ themes, you haven't synthesized yet.\n2. **Source bias blindness** — Treating support tickets and NPS comments as equivalent without accounting for who writes each (complainers vs promoters, power users vs new users). Always note source bias in confidence levels.\n3. **Counting without context** — Reporting “42% of tickets mention onboarding” without severity, segment, or lifecycle context. Frequency alone is misleading; pair counts with severity/impact and segment breakdowns.\n4. **Copy-paste taxonomy** — Reusing a generic tag set (bug/feature/UX/other) instead of building a codebook grounded in the product's actual problem space. The taxonomy should reflect how the team makes decisions.\n5. **One-and-done report** — Delivering a synthesis with no feedback loop plan. Without cadence, owners, and storage, the analysis becomes shelfware within a sprint.\n\n## Examples\n\n**Example 1 (support tickets):** “Analyze the last 60 days of onboarding-related tickets. Output a User Feedback Analysis Pack and top 10 recommended fixes.”\nExpected: source inventory + sampling, taxonomy, tagged table, themes with quotes, and ranked actions.\n\n**Example 2 (survey + reviews):** “Synthesize survey open-ends and app store reviews for our new pricing change. What are the biggest friction points and why?”\nExpected: themes split by source/segment, severity signals, and recommendations (incl. messaging/UX changes).\n\n**Boundary example (redirect to conducting-user-interviews):** “We have no feedback data yet but want to understand why users churn.”\nResponse: redirect to `conducting-user-interviews` to collect first-person stories first; return here once you have data to analyze.\n\n**Boundary example (redirect to designing-surveys):** “We want to collect structured feedback from our user base about the new pricing.”\nResponse: redirect to `designing-surveys` to design and launch the instrument; return here to analyze the results.\n\n**Boundary example (scope guard):** “Read all our feedback and tell us what to build next.”\nResponse: ask for scope/time window/decision + a sample dataset; otherwise produce a sampling plan + a minimal first-pass synthesis with explicit limitations.","tags":["analyzing","user","feedback","lenny","skills","plus","liqiongyu","agent-skills","ai-agents","automation","claude","codex"],"capabilities":["skill","source-liqiongyu","skill-analyzing-user-feedback","topic-agent-skills","topic-ai-agents","topic-automation","topic-claude","topic-codex","topic-prompt-engineering","topic-refoundai","topic-skillpack"],"categories":["lenny_skills_plus"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/liqiongyu/lenny_skills_plus/analyzing-user-feedback","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add liqiongyu/lenny_skills_plus","source_repo":"https://github.com/liqiongyu/lenny_skills_plus","install_from":"skills.sh"}},"qualityScore":"0.474","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 49 github stars · SKILL.md body (8,957 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T06:56:18.713Z","embedding":null,"createdAt":"2026-04-18T22:16:13.751Z","updatedAt":"2026-04-22T06:56:18.713Z","lastSeenAt":"2026-04-22T06:56:18.713Z","tsv":"'-10':880 '1':353,439,669,860,1018 '10':1039 '2':362,477,897,1056 '20':890 '2k':246 '3':371,531,930 '4':379,582,957 '42':935 '5':300,390,627,879,990 '6':400,676 '60':1024 '7':412,721 '8':425,437,775 '90':244 'access':307,488 'account':910 'action':55,88,402,448,490,544,592,638,684,724,731,735,751,787,835,1054 'actual':978 'add':812 'aggreg':33,332 'alon':947 'alreadi':151 'also':17 'alway':431,847,923 'analysi':11,202,262,341,475,820,1010,1035 'analyz':2,5,28,89,148,234,1021,1135,1172 'analyzing-user-feedback':1 'answer':470 'anti':855 'anti-pattern':854 'app':1065 'area':231 'as-i':826 'ask':297,327,1191 'audienc':455 'avail':250,387 'backlog':172 'base':157,1152 'becom':1011 'bet':741 'bias':899,926 'biggest':1076 'blind':900 'boundari':1093,1136,1175 'box':292 'breakdown':956 'bucket':507 'bug':736 'bug/feature/ux/other':967 'build':563,583,970,1188 'cadenc':74,416,797,1005 'call':699 'cancel':112 'candid':568 'captur':573,647 'care':680 'categori':564 'caus':604 'chang':476,1072,1092 'channel':39 'chat':347 'check':466,513,571,615,661,709,761,822 'chosen':188 'churn':110,558,1113 'clear':607,770 'cluster':114 'code':377,539,589 'codebook':373,586,614,626,972 'codes/notes':567 'cohort/funnel':204 'collect':22,130,1122,1146 'comm':739 'comment':906 'common':857 'communiti':257 'complain':915 'concret':764 'conduct':19,137,1098,1118 'conducting-user-interview':18,136,1097,1117 'confid':399,707,928 'confidence/limitations':318 'confirm':449 'constraint':283,361,457,489,730 'contain':325 'context':354,445,464,591,933,945 'convert':732 'copi':959 'copy-past':958 'could':618 'count':931,951 'cover':32,516 'creat':98,491,639,863 'custom':103 'data':149,306,1105,1133 'dataset':1197 'date':651 'day':245,1025 'deadline/time':291 'decid':495 'decis':260,357,441,451,472,989 'defin':458,480,593,796 'definit':375,609 'deliv':996 'deliver':336 'design':25,144,197,1141,1161,1164 'designing-survey':24,143,1140,1160 'doc':794 'done':994 'dozen':864 'draft':785 'e.g':242 'end':118,1063 'engag':214 'engin':419 'enough':765 'equival':908 'establish':778 'evalu':159 'everi':664 'evid':53,392,648,704,714,753 'exampl':1016,1017,1055,1094,1137,1176 'excerpt':330,654 'execut':767 'expect':241,407,755,1042,1081 'explain':528 'explicit':527,831,1210 'failur':858 'featur':92,580 'feedback':4,7,10,30,36,49,72,84,113,132,209,248,324,340,381,413,542,632,658,780,819,1001,1034,1104,1148,1182 'field':333,649 'file':350 'final':817 'first':533,1124,1127,1206 'first-pass':532,1205 'first-person':1123 'fix':270,738,1041 'flow':163 'follow':833 'follow-up':832 'format':793 'frame':442 'frequenc':689,946 'frequency/severity':398 'friction':58,577,1077 'gate':783,839 'generic':964 'good':460 'ground':973 'guard':1178 'handoff':77 'happen':697 'haven':893 'highest':519,523 'highest-risk':522 'highest-volum':518 'horizon':404,772 'icp':277 'idea':581 'identifi':57,692 'impact':408,756 'in-chat':345 'incl':1090 'includ':432,712,848 'included/excluded':369 'inclusions/exclusions':496 'individu':221 'inflat':862 'info':295 'inform':264 'initi':566,588 'input':227,443,484,540,587,634,681,727,784 'insight':120,422,802 'instead':968 'instrument':1168 'intak':440 'intern':287 'internal-on':286 'interview':21,134,139,252,1100,1120 'inventori':364,478,494,510,1044 'issu':97 'item':384,543,546,622,636,645 'known':406,774 'label':317 'last':108,243,1023 'launch':267,1166 'learn':725,759 'least':668 'level':708,876,929 'lifecycl':281,598,944 'like':462 'limit':309,829,873,1211 'link/id':655 'links/ids':385 'list':485,570 'live':803 'log':258 'look':461 'loop':73,414,781,1002 'make':988 'manual':547 'markdown':344 'matter':276 'mention':938 'messag':271 'messaging/ux':1091 'metric':201 'micro':867 'micro-them':866 'minim':1204 'minimum':228 'mislead':949 'miss':294 'missing-info':293 'mode':859 'multipl':38 'need':128,154,171,183,199,217 'nest':882 'new':23,131,921,1070,1155 'next':429,748,768,852,1189 'normal':35,380,628,641,657 'note':254,561,572,924 'nps':905 'obscur':870 'onboard':269,939,1028 'onboarding-rel':1027 'one':992 'one-and-don':991 'open':117,409,427,538,743,850,1062 'open-end':116,1061 'otherwis':1198 'output':177,335,463,508,565,612,656,702,757,816,1031 'owner':75,798,1006 'owner/time':771 'owners/time':403 'pack':12,342,786,821,823,1036 'pair':950 'particip':420 'pass':534,1207 'past':960 'pattern':856 'peopl':617 'person':1125 'persona':278 'pick':498 'pii':326,389,663 'plan':279,366,415,483,512,515,726,760,1003,1202 'point':1078 'power':918 'prd/spec':185 'prds':193 'price':1071,1156 'primari':176,670 'priorit':173,180 'prioritizing-roadmap':179 'privacy/pii':284 'problem':979 'proceed':310 'produc':69,337,1199 'product':65,230,237,590,740,976 'promot':917 'propos':788 'prototyp':165 'pure':719 'qualit':208 'qualiti':272,782,838 'quantifi':679,688 'quantit':27,203 'question':301,411,428,744,851 'questions/next':814 'quot':397,1051 'quotes/examples':715 'random':502 'rank':1053 'rather':206 'raw':48,560,635 'read':536,1179 'read-through':535 'read/annotate':545 'readi':268 'reason':59,111,575 'recommend':15,56,122,401,758,762,1040,1089 'redact':329 'redirect':1095,1115,1138,1158 'references/checklists.md':805,806,842,843 'references/intake.md':303,304,446,447 'references/rubric.md':810,811,845,846 'references/templates.md':434,435 'reflect':984 'reject':574 'relat':1029 'repeat':71 'report':104,393,705,729,934,995 'repres':314,396,713 'request':93,321,352 'requir':229,840 'research':42,410,747 'respond':219 'respons':1114,1157,1190 'result':1174 'retent':213 'retention-engag':212 'retention/engagement':200 'return':1128,1169 'reus':962 'review':43,255,795,1058,1067 'risk':426,524,849 'risks/open':813 'roadmap':181,265 'root':603 'row':665 'rule':285,378,611 'run':804 'sale':41,253 'sampl':315,365,482,500,511,514,541,1045,1196,1201 'schedul':837 'schema':596 'scope':31,356,452,1177 'scope/time':1193 'score':808 'secret':322 'see':16 'segment':274,360,525,602,652,942,955 'segment/source':691 'sentiment':605 'set':966 'sever':600,693,941,1086 'severity/impact':674,953 'share':776,791 'share-out':790 'shareabl':290,825 'shelfwar':1012 'signal':46,675,872,1087 'similar':623 'skill':147 'skill-analyzing-user-feedback' 'small':313 'snapshot':355,465 'solut':189 'sourc':249,363,479,487,493,509,650,898,925,1043 'source-liqiongyu' 'source/segment':1085 'space':980 'spec':196 'specif':162 'specul':720 'split':1083 'sprint':1015 'sprint/quarter':769 'stage':282,599 'stakehold':417,468 'step':430,438,815,853 'storag':800,1008 'store':424,1066 'stori':1126 'strategi':296,501 'stratifi':503 'structur':1147 'struggl':556 'sub':884 'sub-them':883 'summar':109,685 'support':40,90,223,902,1019 'surfac':549 'survey':26,44,115,141,145,256,1057,1060,1142,1162 'synthes':81,677,895,1059 'synthesi':210,226,998,1208 'tabl':382,633,642,659,683,1048 'tag':374,383,595,608,619,630,643,660,672,682,965,1047 'task':156 'task-bas':155 'taxonomi':13,372,585,613,961,982,1046 'taxonomy/codebook':637 'team':987 'tell':1184 'templat':433 'test':169 'theme':14,51,86,266,391,395,569,671,678,687,703,711,728,733,861,868,877,885,891,1049,1082 'ticket':91,222,247,251,903,937,1020,1030 'tie':749 'tier':280 'time':238,358,453 'top':96,394,505,686,875,1038 'top-level':874 'top-volum':504 'topic':597 'topic-agent-skills' 'topic-ai-agents' 'topic-automation' 'topic-claude' 'topic-codex' 'topic-prompt-engineering' 'topic-refoundai' 'topic-skillpack' 'translat':722 'treat':901 'turn':47 'two':616 'underneath':886 'understand':1110 'unknowns/bias':701 'us':1185 'usability-test':167 'usabl':158,168 'usag':45 'use':63,80,126,135,142,166,178,190,211,311,624,841 'user':3,20,29,60,83,138,339,444,555,601,818,919,922,1033,1099,1112,1119,1151 'user/customer':6 'ux':737 'valid':68 'verbatim':653 'via':133 'voic':101 'voice-of-custom':100 'volum':240,506,520 'vs':289,916,920 'want':1108,1144 'window':239,359,454 'window/decision':1194 'within':1013 'without':909,932,940,1004 'won':61 'work':205 'workflow':224,232,436 'write':192,195,559,606,913 'writing-prd':191 'writing-specs-design':194 'wrong':552 'yet':896,1106","prices":[{"id":"b668c163-acbb-4b25-87e7-5984b32d3584","listingId":"effd324d-3b90-455c-b79f-3259d8954dfa","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"liqiongyu","category":"lenny_skills_plus","install_from":"skills.sh"},"createdAt":"2026-04-18T22:16:13.751Z"}],"sources":[{"listingId":"effd324d-3b90-455c-b79f-3259d8954dfa","source":"github","sourceId":"liqiongyu/lenny_skills_plus/analyzing-user-feedback","sourceUrl":"https://github.com/liqiongyu/lenny_skills_plus/tree/main/skills/analyzing-user-feedback","isPrimary":false,"firstSeenAt":"2026-04-18T22:16:13.751Z","lastSeenAt":"2026-04-22T06:56:18.713Z"}],"details":{"listingId":"effd324d-3b90-455c-b79f-3259d8954dfa","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"liqiongyu","slug":"analyzing-user-feedback","github":{"repo":"liqiongyu/lenny_skills_plus","stars":49,"topics":["agent-skills","ai-agents","automation","claude","codex","prompt-engineering","refoundai","skillpack"],"license":"apache-2.0","html_url":"https://github.com/liqiongyu/lenny_skills_plus","pushed_at":"2026-04-04T06:30:11Z","description":"86 agent-executable skill packs converted from RefoundAI’s Lenny skills (unofficial). Works with Codex + Claude Code.","skill_md_sha":"bd80915a337ddd9af0078effb918d14716f91f9e","skill_md_path":"skills/analyzing-user-feedback/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/liqiongyu/lenny_skills_plus/tree/main/skills/analyzing-user-feedback"},"layout":"multi","source":"github","category":"lenny_skills_plus","frontmatter":{"name":"analyzing-user-feedback","description":"Analyze user/customer feedback into a Feedback Analysis Pack (taxonomy, themes, recommendations). See also: conducting-user-interviews (collect new), designing-surveys (quantitative)."},"skills_sh_url":"https://skills.sh/liqiongyu/lenny_skills_plus/analyzing-user-feedback"},"updatedAt":"2026-04-22T06:56:18.713Z"}}