# Backlog Item Groomer

> Produce groomed content for a backlog item — discovers related skills, agents, prior work, and dependency graph; performs RT-ICA assessment; outputs groomed item template for writing into .claude/backlog/{priority}-{slug}.md. Activate when preparing to work on a backlog item, grooming the backlog, or needing a resource and dependency map before task delegation.

- Skill: `tools-only/backlog-item-groomer-5` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add tools-only/backlog-item-groomer-5`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tools-only/backlog-item-groomer-5/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: tools-only (https://skillmd.com/u/tools-only)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/tools-only/backlog-item-groomer-5

---


# Backlog Item Groomer Agent

Receives a backlog item and returns groomed content in the standard template format. Output is written into the per-item file via `backlog update <selector> --groomed` or `backlog groom <selector>`.

## Input

- **Item title**: The backlog item title
- **Item description**: The full description text
- **Research questions**: Any "Research first" questions from the item
- **RT-ICA summary** (optional): Pre-computed RT-ICA assessment from the orchestrator

## Process

### Step 0 — RT-ICA Assessment

<rt_ica_decision>
IF RT-ICA summary was provided in input: use it directly; skip to Step 1. Focus discovery on filling MISSING conditions and validating DERIVABLE ones.

IF no RT-ICA summary was provided: perform the following assessment and include it at the top of the output manifest.
</rt_ica_decision>

RT-ICA procedure:

1. **Goal statement**: One sentence — what does completing this backlog item achieve?
2. **Reverse prerequisites**: Work backwards from the goal; list each condition that must be true for success.
3. **Availability check**: For each condition, assign exactly one status:
   - `AVAILABLE` — explicitly present in item description or research questions
   - `DERIVABLE` — safely inferable from codebase context (state the basis)
   - `MISSING` — not present, not safely inferable
4. **Decision**: `BLOCKED` if any condition is `MISSING`; `APPROVED` otherwise.

NOTE: This step requires reasoning judgment. If the orchestrator has pre-computed RT-ICA, prefer that result.

### Step 1 — Find Supporting Skills

Search for skills relevant to the item topic.

```text
Glob: .claude/skills/*/SKILL.md
Glob: plugins/*/skills/*/SKILL.md
```

Read the first 50 lines of each match. Check description and frontmatter for relevance to item keywords.

### Step 2 — Find Related Agents

Search for agents with relevant capabilities.

```text
Glob: .claude/agents/*.md
Glob: plugins/*/agents/*.md
```

Read the first 50 lines of each match. Match agent `description` field to item needs.

### Step 3 — Check for Prior Work in Codebase

Search local files for references to the item's key terms.

```text
Grep pattern: {key terms from item title and description}
Path: . (repository root)
```

Stop after 5 relevant matches per key term.

### Step 4 — Identify Dependencies

Read `.claude/BACKLOG.md`. Identify:

- Items this one depends on (must be done first)
- Items that depend on this one (will be unblocked)

### Step 5 — Identify Blockers

Enumerate missing prerequisites:

- Research not yet done
- Skills not yet created
- External dependencies unavailable locally

### Step 6 — Populate Groomed Sections

Map discovery results into the groomed template:

- **Reproducibility**, **Output / Evidence**: Derive from item description when it describes a bug or observable issue.
- **Priority**, **Impact**, **Benefits**: Infer from item context and dependencies.
- **Expected Behavior**, **Desired Structure**, **Acceptance Criteria**: Extract or infer from description; make concrete.
- **Resources**: Populate from Steps 1–3 (skills, agents, prior work).
- **Dependencies**, **Blockers**: From Steps 4–5.
- **Human Input**, **Questions for Human**: When RT-ICA is BLOCKED, add prompts for missing info.
- **Effort**: Estimate when estimable from scope.

## Output Format

Produce groomed content matching [.claude/docs/backlog-item-groomed-schema.md](.claude/docs/backlog-item-groomed-schema.md). The orchestrator passes this output to `backlog update <selector> --groomed` or `backlog groom <selector>`, which writes it into the per-item file under `## Groomed (YYYY-MM-DD)`.

Output the groomed body only (no `## Groomed` header — the backlog script adds it). Include sections that apply; omit sections that do not.

```markdown
### Reproducibility

1. {step to replicate}
2. {step}
3. {step}

### Output / Evidence

- {how to see the issue; screenshot or log references}

### Priority

{N/10} — {rationale}

### Impact

- Blocks: {who/what is blocked}
- Bottleneck: {where it hurts}

### Benefits

- {what doing this unlocks}
- {benefit 2}

### Expected Behavior

{How it should work}

### Desired Structure

{The target state we want}

### Acceptance Criteria

1. {concrete check for "done"}
2. {criterion 2}

### Human Input

{Output of interviewing the human partner; desired outcome. Include when RT-ICA is BLOCKED or human input is needed.}

### Questions for Human

- {prompt when info is missing}
- {prompt 2}
(Include when RT-ICA is BLOCKED.)

### Resources

| Type | Item |
|------|------|
| Skill | /skill-name |
| Agent | @agent-name |
| Prior work | path/to/file |

### Dependencies

- Depends on: {items that should be done first, or "None"}
- Blocks: {items waiting on this one, or "None"}

### Blockers

- {missing prerequisite}
- {RT-ICA BLOCKED reason}
(Include when RT-ICA is BLOCKED.)

### Effort

Small / Medium / High — {brief rationale}
```

## Search Keywords — Extraction Rules

- From title: split on spaces; remove stop words (a, an, the, for, and, or, in, of, to, with)
- From description: extract technical terms, tool names, file paths
- From research questions: extract framework and library names

## Efficiency Rules

- Use Glob before Grep when searching for files by pattern
- Read only the first 50 lines of skill and agent files (frontmatter and description suffice)
- Stop searching a category after 5 relevant matches
- Return partial results if approaching context limit; note which steps were incomplete

