Backlog grooming assistant
Skill KirKruglov/claude-skills-kit/skills/project-management/backlog-grooming-assistant
70+ curated agent skills for Claude Cowork and Claude.ai — ready-to-use tools for non-technical users: project management, productivity, and AI workflow automation
npx -y skills add KirKruglov/claude-skills-kit --skill backlog-grooming-assistantAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Analyze backlog files (CSV or Markdown) to flag problematic items and generate a structured grooming agenda. No Jira API needed — works entirely with local exports. Use when preparing for sprint grooming, auditing accumulated tasks, or reviewing the backlog after a sprint. Triggers: 'groom my backlog', 'backlog grooming assistant', 'подготовь повестку груминга', 'груминг-ассистент', 'проверь бэклог на проблемы'.
SKILL.md
6.5 KB, as published. Nobody here has run it
Backlog Grooming Assistant
This skill reads a local backlog export (CSV or Markdown table), flags problematic items using a structured checklist, and produces a grooming session agenda with a scorecard. No external service connections required — works entirely from pasted or uploaded file contents.
Input:
- Backlog file contents: CSV (with column headers) or Markdown table — pasted directly or uploaded
- Minimum required columns: item ID and title; additional columns (owner, priority, estimate, status, last-updated) enable more flags
Output:
- Markdown document with: Scorecard → Top Issues → Grooming Agenda → Skipped Checks
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
The detected language applies to all output text: section headings, table column headers, field labels, agenda topic titles, error messages, and recommended actions. Translate every part of the output format template into the detected language — do not leave any section header or label in English when responding in Russian.
Instructions
Step 1: Parse and Validate Input
-
Accept backlog content from the user (pasted text or file contents)
- If content is empty: stop and return — "Backlog is empty — no items to analyze. Paste CSV or Markdown table content."
-
Detect format:
- CSV: first line contains comma-separated headers
- Markdown table: lines starting with
|and separator row|---| - If neither format detected: stop — "Format not recognized. Supported: CSV with headers, Markdown table. Paste the file contents in chat."
-
Parse rows: extract all items as a list of key-value pairs
- Identify available columns by name (case-insensitive matching)
- Map common synonyms: "Task" → title, "Assignee" → owner, "SP"/"Points" → estimate, "Updated"/"Modified" → last-updated
- If columns cannot be mapped automatically: ask user to specify column mapping for the ambiguous columns, then continue
-
Validate row count:
- If 0 data rows (headers only): stop — "Backlog is empty — no items to analyze."
- If all rows have status "Done" or "Closed": stop — "All items are completed — no active tasks for grooming."
Step 2: Apply Flag Checklist
For each item, evaluate applicable flags (skip flags that require unavailable columns):
| Flag | Condition | Required column(s) |
|---|---|---|
NO_OWNER | Owner/Assignee field is empty or missing | owner |
NO_ESTIMATE | Estimate/story points field is empty or zero | estimate |
UNCLEAR_SCOPE | Description/title is absent or fewer than 5 words | title, description |
STALE | Last-updated date is more than 14 days ago | last-updated |
BLOCKED_NO_ETA | Status contains "blocked" with no ETA/date mentioned | status, description |
ALL_HIGH_PRIORITY | Signal: more than 50% of all items marked High/Critical | priority (applied to entire backlog, not per item) |
DUPLICATE_TITLE | Title is ≥80% similar to another item in the backlog | title |
Compile per-item flag list and a backlog-wide summary count for each flag type.
Edge Cases:
- Column missing for a flag: skip that flag for all items; record the skipped check in output
STALEcheck: if date format is ambiguous, skip and note in skipped checksALL_HIGH_PRIORITY: apply once to the whole backlog; annotate in scorecard, not per-item
Step 3: Identify Top Issues
- Sort flagged items by flag count (descending)
- Select top 10 items (or fewer if backlog is small)
- For each top item: collect ID, title, flags, and priority level
Step 4: Generate Grooming Agenda
Group top issues by flag type into agenda topics:
- No Owner → agenda item: "Assign owners to unowned tasks"
- No Estimate → "Estimate unscored items"
- Unclear Scope → "Clarify scope / rewrite descriptions"
- Stale Items → "Review or close items with no recent activity"
- Blocked Items → "Resolve blockers or set ETA"
- Priority Inflation → "Re-prioritize — too many High/Critical items"
- Possible Duplicates → "Review and merge duplicate candidates"
For each agenda topic, list the affected item IDs and a recommended action.
Step 5: Produce Output
Write the full output in the format specified in the Output Format section below.
Negative Cases
- Empty input or headers-only file: Stop. Return "Backlog is empty — no items to analyze."
- Unrecognized format: Stop. Return "Format not recognized. Supported: CSV with headers, Markdown table."
- All items Done/Closed: Stop. Return "All items are completed — no active tasks for grooming."
- Plain text list without structure: Warn — "Insufficient structure for flag analysis. Try adding columns: status, owner, priority." Produce minimal output based on titles only (UNCLEAR_SCOPE check only).
Output Format
# Grooming Report — [date]
## Scorecard
- Total items: N
- Flagged items: N (X%)
- No owner: N
- No estimate: N
- Stale (>14 days): N
- Blocked without ETA: N
- Possible duplicates: N
- Priority inflation: YES / NO
## Top Issues for Grooming
| Item | Title | Flags | Priority |
|------|-------|-------|----------|
| [ID] | [Title] | NO_OWNER, NO_ESTIMATE | High |
| ... | ... | ... | ... |
## Grooming Agenda
### 1. [Topic]
**Items:** [ID1], [ID2]
**Problem:** [description]
**Recommended action:** [what to discuss / decide]
### 2. ...
## Skipped Checks
The following checks were not applied due to missing columns:
- [Flag name]: requires column "[column name]"
Field rules:
- Scorecard numbers must be accurate counts from the parsed data
- Top Issues table: max 10 rows, sorted by flag count descending
- Agenda topics: include only those with at least one affected item
- Skipped Checks: list only checks that were actually skipped; omit section if none skipped