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
STALE check: if date format is ambiguous, skip and note in skipped checks
ALL_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
1---2name: backlog-grooming-assistant3description: 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', 'подготовь повестку груминга', 'груминг-ассистент', 'проверь бэклог на проблемы'.4---56# Backlog Grooming Assistant78This 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.910**Input:**11- Backlog file contents: CSV (with column headers) or Markdown table — pasted directly or uploaded12- Minimum required columns: item ID and title; additional columns (owner, priority, estimate, status, last-updated) enable more flags1314**Output:**15- Markdown document with: Scorecard → Top Issues → Grooming Agenda → Skipped Checks1617---1819## Language Detection2021Detect the user's language from their message:22- If Russian (or contains Cyrillic): respond in Russian23- If English (or other Latin-script language): respond in English24- If ambiguous: respond in the language of the trigger phrase used2526The 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.2728---2930## Instructions3132### Step 1: Parse and Validate Input33341. Accept backlog content from the user (pasted text or file contents)35 - If content is empty: stop and return — "Backlog is empty — no items to analyze. Paste CSV or Markdown table content."36372. Detect format:38 - CSV: first line contains comma-separated headers39 - Markdown table: lines starting with `|` and separator row `|---|`40 - If neither format detected: stop — "Format not recognized. Supported: CSV with headers, Markdown table. Paste the file contents in chat."41423. Parse rows: extract all items as a list of key-value pairs43 - Identify available columns by name (case-insensitive matching)44 - Map common synonyms: "Task" → title, "Assignee" → owner, "SP"/"Points" → estimate, "Updated"/"Modified" → last-updated45 - If columns cannot be mapped automatically: ask user to specify column mapping for the ambiguous columns, then continue46474. Validate row count:48 - If 0 data rows (headers only): stop — "Backlog is empty — no items to analyze."49 - If all rows have status "Done" or "Closed": stop — "All items are completed — no active tasks for grooming."5051### Step 2: Apply Flag Checklist5253For each item, evaluate applicable flags (skip flags that require unavailable columns):5455| Flag | Condition | Required column(s) |56|------|-----------|-------------------|57| `NO_OWNER` | Owner/Assignee field is empty or missing | owner |58| `NO_ESTIMATE` | Estimate/story points field is empty or zero | estimate |59| `UNCLEAR_SCOPE` | Description/title is absent or fewer than 5 words | title, description |60| `STALE` | Last-updated date is more than 14 days ago | last-updated |61| `BLOCKED_NO_ETA` | Status contains "blocked" with no ETA/date mentioned | status, description |62| `ALL_HIGH_PRIORITY` | Signal: more than 50% of all items marked High/Critical | priority (applied to entire backlog, not per item) |63| `DUPLICATE_TITLE` | Title is ≥80% similar to another item in the backlog | title |6465Compile per-item flag list and a backlog-wide summary count for each flag type.6667**Edge Cases:**68- Column missing for a flag: skip that flag for all items; record the skipped check in output69- `STALE` check: if date format is ambiguous, skip and note in skipped checks70- `ALL_HIGH_PRIORITY`: apply once to the whole backlog; annotate in scorecard, not per-item7172### Step 3: Identify Top Issues73741. Sort flagged items by flag count (descending)752. Select top 10 items (or fewer if backlog is small)763. For each top item: collect ID, title, flags, and priority level7778### Step 4: Generate Grooming Agenda7980Group top issues by flag type into agenda topics:8182- **No Owner** → agenda item: "Assign owners to unowned tasks"83- **No Estimate** → "Estimate unscored items"84- **Unclear Scope** → "Clarify scope / rewrite descriptions"85- **Stale Items** → "Review or close items with no recent activity"86- **Blocked Items** → "Resolve blockers or set ETA"87- **Priority Inflation** → "Re-prioritize — too many High/Critical items"88- **Possible Duplicates** → "Review and merge duplicate candidates"8990For each agenda topic, list the affected item IDs and a recommended action.9192### Step 5: Produce Output9394Write the full output in the format specified in the Output Format section below.9596---9798## Negative Cases99100- **Empty input or headers-only file:** Stop. Return "Backlog is empty — no items to analyze."101- **Unrecognized format:** Stop. Return "Format not recognized. Supported: CSV with headers, Markdown table."102- **All items Done/Closed:** Stop. Return "All items are completed — no active tasks for grooming."103- **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).104105---106107## Output Format108109```markdown110# Grooming Report — [date]111112## Scorecard113- Total items: N114- Flagged items: N (X%)115- No owner: N116- No estimate: N117- Stale (>14 days): N118- Blocked without ETA: N119- Possible duplicates: N120- Priority inflation: YES / NO121122## Top Issues for Grooming123124| Item | Title | Flags | Priority |125|------|-------|-------|----------|126| [ID] | [Title] | NO_OWNER, NO_ESTIMATE | High |127| ... | ... | ... | ... |128129## Grooming Agenda130131### 1. [Topic]132**Items:** [ID1], [ID2]133**Problem:** [description]134**Recommended action:** [what to discuss / decide]135136### 2. ...137138## Skipped Checks139The following checks were not applied due to missing columns:140- [Flag name]: requires column "[column name]"141```142143**Field rules:**144- Scorecard numbers must be accurate counts from the parsed data145- Top Issues table: max 10 rows, sorted by flag count descending146- Agenda topics: include only those with at least one affected item147- Skipped Checks: list only checks that were actually skipped; omit section if none skipped