{"id":"38dcc205-0dd6-4f13-b00c-9541687b2277","shortId":"mFeF9Z","kind":"skill","title":"retro-pattern-analyzer","tagline":"Analyze sprint retrospective files and surface recurring pain points, unresolved action items, and positive patterns across sprints. Use when preparing quarterly reviews or identifying systemic issues. Triggers: 'analyze retro files', 'retro pattern analysis', 'find recurring iss","description":"# Retro Pattern Analyzer\n\nThis skill analyzes retrospective files from multiple sprints and produces a structured report identifying recurring pain points, unresolved action items, and stable positive patterns. It reads `.md` and `.txt` files, normalizes different retro formats, and outputs `retro-patterns-YYYY-MM-DD.md`.\n\n**Input:**\n- 2 or more retrospective files in `.md` or `.txt` format\n- Optional: folder path or list of file paths\n- Optional: focus area (e.g., \"technical issues only\", \"delivery problems\")\n\n**Output:**\n- `retro-patterns-YYYY-MM-DD.md` — structured report with three blocks: recurring pains, unresolved action items, positive patterns\n\n---\n\n## Language Detection\n\nDetect the user's language from their message:\n- If Russian (or contains Cyrillic): respond in Russian\n- If English (or other Latin-script language): respond in English\n- If ambiguous: respond in the language of the trigger phrase used\n\n---\n\n## Instructions\n\n### Step 1: Validate Input\n\n1. Check that at least 2 files are provided\n   - If only 1 file provided: stop. Report: \"Pattern analysis requires at least 2 retrospective files. Please provide a second file or folder path.\"\n   - If folder path given: list all `.md` and `.txt` files in the folder; if fewer than 2 found, stop with same message\n\n2. Check each file is readable\n   - If any file is unreadable or path does not exist: skip that file, report: \"File [name] not found or unreadable — excluded from analysis.\"\n   - Continue with remaining files if at least 2 remain\n\n3. If optional focus area provided: note it; use it to filter themes in Step 3\n\n### Step 2: Parse Retrospective Files\n\n1. For each file, identify structural sections using keyword detection:\n   - **What went wrong / Problems / Improvements / Minuses / Keep Stop Start** → `went-wrong` bucket\n   - **What went well / Strengths / Positives / Pluses** → `went-well` bucket\n   - **Action items / Next steps / TODOs / Agreements** → `actions` bucket\n   - **Russian equivalents:** Что мешало / Проблемы / Минусы → `went-wrong`; Что помогло / Плюсы → `went-well`; Договорённости / Задачи → `actions`\n\n2. Extract all bullet points or numbered items from each section\n   - One item per line/bullet\n   - Strip formatting markers (-, *, [ ], ✓)\n   - Preserve the source file name as sprint identifier (use filename or date found in file header)\n\n3. If file has no recognizable section headers:\n   - Process entire file as free-text\n   - Attempt keyword-based classification per line\n   - Prepend note in report: \"File [name] had no standard structure — classified by keywords\"\n\n4. Determine chronological order:\n   - Use date in filename (e.g., `retro-2026-03-15.md`) if present\n   - Else use date found in first line of file\n   - Else use file modification date\n   - Sort sprints chronologically from oldest to newest\n\n### Step 3: Identify Patterns\n\n1. **Normalize themes:** Group items that describe the same issue using semantic similarity\n   - Examples: \"deployment takes too long\" + \"slow deploys\" + \"release process slow\" → one theme: \"slow release / deployment\"\n   - Aim for 5–12 distinct themes across all files; merge closely related items\n\n2. **Count theme frequency:** For each theme, record which sprint files it appears in\n   - Threshold for \"recurring\": appears in ≥2 sprint files\n\n3. **Calculate trend** for each recurring theme:\n   - `↑ growing` — appears in 2+ consecutive recent sprints and not in early sprints\n   - `↓ resolving` — appeared in early sprints but not in the 2 most recent\n   - `→ stable` — appears consistently or non-consecutively without clear trend\n\n4. **Identify unresolved action items:**\n   - For each item in `actions` bucket of sprint N: check if the same or similar issue appears in `went-wrong` of sprint N+1 or later\n   - If yes → mark as unresolved; record which sprint it was raised and which sprint it reappeared\n\n5. **Identify positive patterns:**\n   - Themes appearing in `went-well` across ≥2 sprints → stable positive pattern\n   - Record frequency\n\n6. **Apply focus filter** if provided: keep only themes matching the focus area keyword\n\n**Edge Cases:**\n- File with 50+ items: process all items, but group into max 10 themes plus an \"Other\" bucket for less frequent items\n- Only 2 files (minimum set): process normally; add note in report: \"Analysis based on 2 sprints — patterns are preliminary\"\n- Mixed languages (EN + RU files): detect per-file, normalize to report language (majority-language file wins)\n- Multiple retro formats in one set: normalize to went-well/went-wrong/actions before pattern matching\n\n### Step 4: Generate Report\n\n1. Use the output template structure (see Output Format below)\n2. Fill three blocks:\n   - **Recurring Pains:** themes from `went-wrong` with frequency ≥2, sorted by frequency descending\n   - **Unresolved Action Items:** actions raised in one sprint that reappeared in a later sprint\n   - **Stable Positive Patterns:** themes from `went-well` with frequency ≥2\n3. If a block has no entries: write \"None identified in this set of sprints\"\n4. Add metadata header: list sprint files analyzed, total item count processed, generation date\n\n### Step 5: Save Output\n\n1. Write file as `retro-patterns-YYYY-MM-DD.md` (today's date)\n2. Save to the folder where the retro files are located, or to the working directory if mixed paths were provided\n3. Confirm: \"Report saved as retro-patterns-[date].md — [N] themes identified across [N] sprints.\"\n\n---\n\n## Output Format\n\n```markdown\n# Retro Pattern Analysis\n**Sprints analyzed:** [list of file names / date range]\n**Total items processed:** [N] across [N] files\n**Generated:** YYYY-MM-DD\n\n---\n\n## 🔴 Recurring Pains (went-wrong, ≥2 sprints)\n\n| Theme | Sprints | Frequency | Trend |\n|-------|---------|-----------|-------|\n| [theme 1] | S1, S2, S4 | 3/4 | ↑ growing |\n| [theme 2] | S2, S3 | 2/4 | → stable |\n\n## 🔁 Unresolved Action Items\n\n| Action Item | Raised in | Reappeared in | Status |\n|-------------|-----------|---------------|--------|\n| [action 1] | S2 | S3, S4 | unresolved |\n\n## ✅ Stable Positive Patterns (went-well, ≥2 sprints)\n\n| Theme | Sprints | Frequency |\n|-------|---------|-----------|\n| [theme] | S1, S3, S4 | 3/4 |\n\n---\n*Generated by retro-pattern-analyzer · [date]*\n```\n\n**Field rules:**\n- Theme names: concise, 3–7 words, plain language\n- Frequency format: `N/total` (e.g., 3/5 means appeared in 3 of 5 sprints)\n- Trend: one of `↑ growing`, `↓ resolving`, `→ stable`\n- Sprint identifiers: use filename or inferred date label\n\n---\n\n## Negative Cases\n\n- Only 1 file provided → stop, ask for a second file. Do not produce partial report.\n- File does not contain any recognizable retrospective content (no went-well/went-wrong/actions signals at all) → skip file, warn user, continue with remaining files.\n- All provided files are unreadable or non-existent → stop. Report each missing path.\n- Folder path does not exist → stop. Report the path and ask user to verify.","tags":["retro","pattern","analyzer","claude","skills","kit","kirkruglov","agent-skills","agentic-skills","ai-agents","ai-skills","awesome-list"],"capabilities":["skill","source-kirkruglov","skill-retro-pattern-analyzer","topic-agent-skills","topic-agentic-skills","topic-ai-agents","topic-ai-skills","topic-awesome-list","topic-claude","topic-claude-ai","topic-claude-ai-skills","topic-claude-code","topic-claude-cowork","topic-claude-memory","topic-claude-skills"],"categories":["claude-skills-kit"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/KirKruglov/claude-skills-kit/retro-pattern-analyzer","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add KirKruglov/claude-skills-kit","source_repo":"https://github.com/KirKruglov/claude-skills-kit","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (6,931 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-05-18T19:13:38.792Z","embedding":null,"createdAt":"2026-05-18T13:21:16.649Z","updatedAt":"2026-05-18T19:13:38.792Z","lastSeenAt":"2026-05-18T19:13:38.792Z","tsv":"'+1':579 '/went-wrong/actions':701,994 '1':165,168,179,281,446,709,795,878,901,968 '10':643 '12':477 '2':82,173,189,216,222,258,277,340,487,506,519,537,609,654,667,719,732,761,803,871,885,912 '2/4':888 '3':260,275,374,443,509,762,824,934,947 '3/4':882,921 '3/5':943 '4':409,550,706,777 '5':476,598,792,949 '50':634 '6':616 '7':935 'across':20,480,608,837,858 'action':15,62,119,314,320,339,553,559,738,740,891,893,900 'add':660,778 'agreement':319 'aim':474 'ambigu':153 'analysi':37,185,250,664,845 'analyz':4,5,32,43,46,784,847,927 'appear':499,504,517,529,541,571,603,945 'appli':617 'area':102,264,628 'ask':972,1030 'attempt':389 'base':392,665 'block':115,722,765 'bucket':303,313,321,560,648 'bullet':343 'calcul':510 'case':631,966 'check':169,223,564 'chronolog':411,437 'classif':393 'classifi':406 'clear':548 'close':484 'concis':933 'confirm':825 'consecut':520,546 'consist':542 'contain':136,985 'content':989 'continu':251,1002 'count':488,787 'cyril':137 'date':369,414,423,434,790,802,832,852,928,963 'dd':865 'deliveri':107 'deploy':460,465,473 'descend':736 'describ':452 'detect':124,125,290,677 'determin':410 'differ':75 'directori':818 'distinct':478 'e.g':103,417,942 'earli':526,531 'edg':630 'els':421,430 'en':674 'english':142,151 'entir':383 'entri':768 'equival':323 'exampl':459 'exclud':248 'exist':237,1014,1024 'extract':341 'fewer':214 'field':929 'file':8,34,48,73,86,98,174,180,191,196,209,225,230,240,242,254,280,284,361,372,376,384,400,429,432,482,497,508,632,655,676,680,688,783,797,811,850,860,969,976,982,999,1005,1008 'filenam':367,416,960 'fill':720 'filter':271,619 'find':38 'first':426 'focus':101,263,618,627 'folder':93,198,201,212,807,1020 'format':77,91,356,692,717,841,940 'found':217,245,370,424 'free':387 'free-text':386 'frequenc':490,615,731,735,760,875,916,939 'frequent':651 'generat':707,789,861,922 'given':203 'group':449,640 'grow':516,883,954 'header':373,381,780 'identifi':28,57,285,365,444,551,599,771,836,958 'improv':295 'infer':962 'input':81,167 'instruct':163 'iss':40 'issu':30,105,455,570 'item':16,63,120,315,347,352,450,486,554,557,635,638,652,739,786,855,892,894 'keep':297,622 'keyword':289,391,408,629 'keyword-bas':390 'label':964 'languag':123,129,148,157,673,684,687,938 'later':581,749 'latin':146 'latin-script':145 'least':172,188,257 'less':650 'line':395,427 'line/bullet':354 'list':96,204,781,848 'locat':813 'long':463 'major':686 'majority-languag':685 'mark':584 'markdown':842 'marker':357 'match':625,704 'max':642 'md':70,88,206,833 'mean':944 'merg':483 'messag':132,221 'metadata':779 'minimum':656 'minus':296 'miss':1018 'mix':672,820 'mm':864 'modif':433 'multipl':50,690 'n':563,578,834,838,857,859 'n/total':941 'name':243,362,401,851,932 'negat':965 'newest':441 'next':316 'non':545,1013 'non-consecut':544 'non-exist':1012 'none':770 'normal':74,447,659,681,696 'note':266,397,661 'number':346 'oldest':439 'one':351,469,694,743,952 'option':92,100,262 'order':412 'output':79,109,712,716,794,840 'pain':12,59,117,724,867 'pars':278 'partial':980 'path':94,99,199,202,234,821,1019,1021,1028 'pattern':3,19,36,42,67,122,184,445,601,613,669,703,753,831,844,908,926 'per':353,394,679 'per-fil':678 'phrase':161 'plain':937 'pleas':192 'plus':645 'pluse':309 'point':13,60,344 'posit':18,66,121,308,600,612,752,907 'preliminari':671 'prepar':24 'prepend':396 'present':420 'preserv':358 'problem':108,294 'process':382,467,636,658,788,856 'produc':53,979 'provid':176,181,193,265,621,823,970,1007 'quarter':25 'rais':592,741,895 'rang':853 'read':69 'readabl':227 'reappear':597,746,897 'recent':521,539 'recogniz':379,987 'record':494,587,614 'recur':11,39,58,116,503,514,723,866 'relat':485 'releas':466,472 'remain':253,259,1004 'report':56,112,183,241,399,663,683,708,826,981,1016,1026 'requir':186 'resolv':528,955 'respond':138,149,154 'retro':2,33,35,41,76,691,810,830,843,925 'retro-2026-03-15.md':418 'retro-pattern':829 'retro-pattern-analyz':1,924 'retro-patterns-yyyy-mm-dd.md':80,110,799 'retrospect':7,47,85,190,279,988 'review':26 'ru':675 'rule':930 'russian':134,140,322 's1':879,918 's2':880,886,902 's3':887,903,919 's4':881,904,920 'save':793,804,827 'script':147 'second':195,975 'section':287,350,380 'see':715 'semant':457 'set':657,695,774 'signal':995 'similar':458,569 'skill':45 'skill-retro-pattern-analyzer' 'skip':238,998 'slow':464,468,471 'sort':435,733 'sourc':360 'source-kirkruglov' 'sprint':6,21,51,364,436,496,507,522,527,532,562,577,589,595,610,668,744,750,776,782,839,846,872,874,913,915,950,957 'stabl':65,540,611,751,889,906,956 'standard':404 'start':299 'status':899 'step':164,274,276,317,442,705,791 'stop':182,218,298,971,1015,1025 'strength':307 'strip':355 'structur':55,111,286,405,714 'surfac':10 'system':29 'take':461 'technic':104 'templat':713 'text':388 'theme':272,448,470,479,489,493,515,602,624,644,725,754,835,873,877,884,914,917,931 'three':114,721 'threshold':501 'today':800 'todo':318 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agents' 'topic-ai-skills' 'topic-awesome-list' 'topic-claude' 'topic-claude-ai' 'topic-claude-ai-skills' 'topic-claude-code' 'topic-claude-cowork' 'topic-claude-memory' 'topic-claude-skills' 'total':785,854 'trend':511,549,876,951 'trigger':31,160 'txt':72,90,208 'unread':232,247,1010 'unresolv':14,61,118,552,586,737,890,905 'use':22,162,268,288,366,413,422,431,456,710,959 'user':127,1001,1031 'valid':166 'verifi':1033 'warn':1000 'well':306,312,336,607,700,758,911,993 'went':292,301,305,311,329,335,574,606,699,728,757,869,910,992 'went-wel':310,334,605,698,756,909,991 'went-wrong':300,328,573,727,868 'win':689 'without':547 'word':936 'work':817 'write':769,796 'wrong':293,302,330,575,729,870 'yes':583 'yyyi':863 'yyyy-mm-dd':862 'договорённости':337 'задачи':338 'мешало':325 'минусы':327 'плюсы':333 'помогло':332 'проблемы':326 'что':324,331","prices":[{"id":"e5e51a70-421f-4c4b-a8a3-7dcdba1ff03b","listingId":"38dcc205-0dd6-4f13-b00c-9541687b2277","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"KirKruglov","category":"claude-skills-kit","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:16.649Z"}],"sources":[{"listingId":"38dcc205-0dd6-4f13-b00c-9541687b2277","source":"github","sourceId":"KirKruglov/claude-skills-kit/retro-pattern-analyzer","sourceUrl":"https://github.com/KirKruglov/claude-skills-kit/tree/main/skills/retro-pattern-analyzer","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:16.649Z","lastSeenAt":"2026-05-18T19:13:38.792Z"}],"details":{"listingId":"38dcc205-0dd6-4f13-b00c-9541687b2277","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"KirKruglov","slug":"retro-pattern-analyzer","github":{"repo":"KirKruglov/claude-skills-kit","stars":7,"topics":["agent-skills","agentic-skills","ai","ai-agents","ai-skills","awesome-list","claude","claude-ai","claude-ai-skills","claude-code","claude-cowork","claude-memory","claude-skills","memory-management","productivity","productivity-tools","project-management"],"license":"mit","html_url":"https://github.com/KirKruglov/claude-skills-kit","pushed_at":"2026-05-18T04:27:46Z","description":"40+ curated agent skills for Claude Cowork and Claude.ai — ready-to-use tools for non-technical users: project management, productivity, and AI workflow automation","skill_md_sha":"391b43405b57d39a661b266a793844f08d46448d","skill_md_path":"skills/retro-pattern-analyzer/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/KirKruglov/claude-skills-kit/tree/main/skills/retro-pattern-analyzer"},"layout":"multi","source":"github","category":"claude-skills-kit","frontmatter":{"name":"retro-pattern-analyzer","description":"Analyze sprint retrospective files and surface recurring pain points, unresolved action items, and positive patterns across sprints. Use when preparing quarterly reviews or identifying systemic issues. Triggers: 'analyze retro files', 'retro pattern analysis', 'find recurring issues in retrospectives', 'проанализируй ретро', 'паттерны в ретроспективах'."},"skills_sh_url":"https://skills.sh/KirKruglov/claude-skills-kit/retro-pattern-analyzer"},"updatedAt":"2026-05-18T19:13:38.792Z"}}