Claude-skills-kit retro-pattern-analyzer
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', 'проанализируй ретро', 'паттерны в ретроспективах'.
git clone https://github.com/KirKruglov/claude-skills-kit
T=$(mktemp -d) && git clone --depth=1 https://github.com/KirKruglov/claude-skills-kit "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/retro-pattern-analyzer" ~/.claude/skills/kirkruglov-claude-skills-kit-retro-pattern-analyzer && rm -rf "$T"
skills/retro-pattern-analyzer/SKILL.mdRetro Pattern Analyzer
This 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.
Input:
- 2 or more retrospective files in
or.md
format.txt - Optional: folder path or list of file paths
- Optional: focus area (e.g., "technical issues only", "delivery problems")
Output:
— structured report with three blocks: recurring pains, unresolved action items, positive patternsretro-patterns-YYYY-MM-DD.md
Language Detection
Detect the user's language from their message:
- If Russian (or contains Cyrillic): respond in Russian
- If English (or other Latin-script language): respond in English
- If ambiguous: respond in the language of the trigger phrase used
Instructions
Step 1: Validate Input
-
Check that at least 2 files are provided
- If only 1 file provided: stop. Report: "Pattern analysis requires at least 2 retrospective files. Please provide a second file or folder path."
- If folder path given: list all
and.md
files in the folder; if fewer than 2 found, stop with same message.txt
-
Check each file is readable
- If any file is unreadable or path does not exist: skip that file, report: "File [name] not found or unreadable — excluded from analysis."
- Continue with remaining files if at least 2 remain
-
If optional focus area provided: note it; use it to filter themes in Step 3
Step 2: Parse Retrospective Files
-
For each file, identify structural sections using keyword detection:
- What went wrong / Problems / Improvements / Minuses / Keep Stop Start →
bucketwent-wrong - What went well / Strengths / Positives / Pluses →
bucketwent-well - Action items / Next steps / TODOs / Agreements →
bucketactions - Russian equivalents: Что мешало / Проблемы / Минусы →
; Что помогло / Плюсы →went-wrong
; Договорённости / Задачи →went-wellactions
- What went wrong / Problems / Improvements / Minuses / Keep Stop Start →
-
Extract all bullet points or numbered items from each section
- One item per line/bullet
- Strip formatting markers (-, *, [ ], ✓)
- Preserve the source file name as sprint identifier (use filename or date found in file header)
-
If file has no recognizable section headers:
- Process entire file as free-text
- Attempt keyword-based classification per line
- Prepend note in report: "File [name] had no standard structure — classified by keywords"
-
Determine chronological order:
- Use date in filename (e.g.,
) if presentretro-2026-03-15.md - Else use date found in first line of file
- Else use file modification date
- Sort sprints chronologically from oldest to newest
- Use date in filename (e.g.,
Step 3: Identify Patterns
-
Normalize themes: Group items that describe the same issue using semantic similarity
- Examples: "deployment takes too long" + "slow deploys" + "release process slow" → one theme: "slow release / deployment"
- Aim for 5–12 distinct themes across all files; merge closely related items
-
Count theme frequency: For each theme, record which sprint files it appears in
- Threshold for "recurring": appears in ≥2 sprint files
-
Calculate trend for each recurring theme:
— appears in 2+ consecutive recent sprints and not in early sprints↑ growing
— appeared in early sprints but not in the 2 most recent↓ resolving
— appears consistently or non-consecutively without clear trend→ stable
-
Identify unresolved action items:
- For each item in
bucket of sprint N: check if the same or similar issue appears inactions
of sprint N+1 or laterwent-wrong - If yes → mark as unresolved; record which sprint it was raised and which sprint it reappeared
- For each item in
-
Identify positive patterns:
- Themes appearing in
across ≥2 sprints → stable positive patternwent-well - Record frequency
- Themes appearing in
-
Apply focus filter if provided: keep only themes matching the focus area keyword
Edge Cases:
- File with 50+ items: process all items, but group into max 10 themes plus an "Other" bucket for less frequent items
- Only 2 files (minimum set): process normally; add note in report: "Analysis based on 2 sprints — patterns are preliminary"
- Mixed languages (EN + RU files): detect per-file, normalize to report language (majority-language file wins)
- Multiple retro formats in one set: normalize to went-well/went-wrong/actions before pattern matching
Step 4: Generate Report
- Use the output template structure (see Output Format below)
- Fill three blocks:
- Recurring Pains: themes from
with frequency ≥2, sorted by frequency descendingwent-wrong - Unresolved Action Items: actions raised in one sprint that reappeared in a later sprint
- Stable Positive Patterns: themes from
with frequency ≥2went-well
- Recurring Pains: themes from
- If a block has no entries: write "None identified in this set of sprints"
- Add metadata header: list sprint files analyzed, total item count processed, generation date
Step 5: Save Output
- Write file as
(today's date)retro-patterns-YYYY-MM-DD.md - Save to the folder where the retro files are located, or to the working directory if mixed paths were provided
- Confirm: "Report saved as retro-patterns-[date].md — [N] themes identified across [N] sprints."
Output Format
# Retro Pattern Analysis **Sprints analyzed:** [list of file names / date range] **Total items processed:** [N] across [N] files **Generated:** YYYY-MM-DD --- ## 🔴 Recurring Pains (went-wrong, ≥2 sprints) | Theme | Sprints | Frequency | Trend | |-------|---------|-----------|-------| | [theme 1] | S1, S2, S4 | 3/4 | ↑ growing | | [theme 2] | S2, S3 | 2/4 | → stable | ## 🔁 Unresolved Action Items | Action Item | Raised in | Reappeared in | Status | |-------------|-----------|---------------|--------| | [action 1] | S2 | S3, S4 | unresolved | ## ✅ Stable Positive Patterns (went-well, ≥2 sprints) | Theme | Sprints | Frequency | |-------|---------|-----------| | [theme] | S1, S3, S4 | 3/4 | --- *Generated by retro-pattern-analyzer · [date]*
Field rules:
- Theme names: concise, 3–7 words, plain language
- Frequency format:
(e.g., 3/5 means appeared in 3 of 5 sprints)N/total - Trend: one of
,↑ growing
,↓ resolving→ stable - Sprint identifiers: use filename or inferred date label
Negative Cases
- Only 1 file provided → stop, ask for a second file. Do not produce partial report.
- 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.
- All provided files are unreadable or non-existent → stop. Report each missing path.
- Folder path does not exist → stop. Report the path and ask user to verify.