From dh
Captures backlog items via MCP server in guided, quick, or autonomous modes. Validates fields, detects duplicates, creates GitHub issues for P0/P1 priorities.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dh:create-backlog-itemThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<mode>$0</mode>
$0 <item_title>$1</item_title>
Capture a new backlog item via mcp__plugin_dh_backlog__backlog_add. The MCP server handles persistence and GitHub Issue creation.
See backlog lifecycle overview for the end-to-end flow.
NEVER include any of the following in a backlog item description:
WHY: Prescriptive fixes in backlog items bypass grooming, RT-ICA, and architecture review. They encode untested assumptions as requirements. This has caused hours of wasted work — a backlog item prescribed modifying project-level files that were out of scope, and agents followed those instructions.
A backlog item contains:
Solutions come from investigation during grooming and planning — not at creation time.
<mode/> selects the operating mode:
<mode/> value | Mode | Remaining args |
|---|---|---|
| (empty) | Guided intake via AskUserQuestion | — |
quick | Fast entry — skip title question | <item_title/>+ = title |
--auto | Fully autonomous — no interactive prompts | <item_title/>+ = title |
/create-backlog-item # guided intake
/create-backlog-item quick GitHub milestone skill # quick entry
/create-backlog-item --auto vercel skills npm package # autonomous (agent use)
If <mode/> is --auto:
Title = <item_title/> onward (all remaining words joined). Do not call AskUserQuestion. Instead:
research/ recursively for any file whose name or content matches the title (case-insensitive). Read the best match.mcp__plugin_dh_backlog__backlog_list() to search existing items for related titles and understand priority patterns.<item_title/> onwardcritical, required, must → P1; nice to have, optional → P2; default P2)
P1 requires either a matched urgency keyword or explicit --priority=P1 flag.
P0 is never assigned by auto-mode — P0 must be set manually.<item_title/> argument string, reproduced exactly — character for character, no trimming, no reformatting."Agent task — auto-derived from research/{filename}"install, integrate, add → Feature; default Feature)[AUTO] Title: {title} — from <item_title/> onward
[AUTO] Priority: P2 — inferred from description (no urgency keywords found, defaulting P2)
[AUTO] Description: derived from research/skill-generation-tools/vercel-labs-skills.md
[AUTO] Source: Agent task — auto-derived from research/skill-generation-tools/vercel-labs-skills.md
[AUTO] Type: Feature — inferred from "integrate" keyword
Proceed to Step 2 (validate).
If <mode/> is empty (guided intake):
Use AskUserQuestion with two questions:
Question 1: "What is the title of this backlog item?"
header: "Title"
options: (free text — no options; user will type)
Question 2: "What priority?"
header: "Priority"
options:
- label: "P0 — Must have"
- label: "P1 — Should have"
- label: "P2 — Nice to have"
- label: "Idea — Not yet sized"
Then ask:
Question 3: "Describe the item. Cover: (1) what the problem is and where it lives, (2) what success looks like when it's done, (3) how you'll know it's working. Do not describe the fix or implementation approach — those come later in planning."
header: "Description"
Capture the user's answer to Question 3 verbatim as the verbatim_user_report value before structuring it into a Description. The Description is your structured interpretation; the verbatim report is the user's exact words.
Then ask:
Question 4: "What is the source or trigger for this item? (e.g., code review, user request, session observation — or press Enter to skip)"
header: "Source"
options:
- label: "Code review"
- label: "User request"
- label: "Session observation"
- label: "Research finding"
- label: "Skip"
Then ask:
Question 5: "What type of work is this?"
header: "Type"
options:
- label: "Feature"
- label: "Bug"
- label: "Refactor"
- label: "Docs"
- label: "Chore"
Then ask:
Question 6: "Can you provide concrete reproduction steps? (specific commands, files, and exact error messages you observed — or press Enter to skip)"
header: "How to reproduce"
options:
- label: "Skip"
If the user provides steps, include them verbatim. If they press Enter or choose Skip, omit the field from the item block.
If <mode/> is quick:
Title = <item_title/> onward. Ask only:
verbatim_user_report = the full <item_title/> argument string, reproduced exactly. Source defaults to "Session observation". Type defaults to "Feature".
Required fields: title, priority, description.
title must be non-empty after trimming whitespace.description must be non-empty after trimming whitespace. If it contains implementation instructions (how to fix, what to change, which files to modify), remove them. Keep only: what is broken, where it was observed, what the impact is.Search syntax note: backlog_list(search=...) is a multi-keyword boolean substring search — NOT semantic and NOT fuzzy. Exact title strings miss semantically related items with different wording. Always search with OR-joined key concepts extracted from the title, not the full title string.
Extract 2–4 key concept words from the title and join with OR:
# Title: "Formalise IssueBackend Protocol and audit BacklogItem field portability"
# Key concepts: IssueBackend, backend protocol, backend abstraction, field portability
search = "IssueBackend OR backend protocol OR backend abstraction"
Call:
mcp__plugin_dh_backlog__backlog_list(search="{concept1} OR {concept2} OR {concept3}")
Also supports field:value syntax (title:auth, type:bug) and regex (/pattern/) for narrower checks.
If a match is found with overlapping concepts, report:
Possible duplicate: "{existing title}" already exists in {section}.
Proceed anyway? (y/n)
Use AskUserQuestion with Yes / No options. If No: stop.
In --auto mode: if a duplicate is found, log [AUTO] STOP — duplicate detected: "{existing title}" in {section} and stop without writing. Do not ask.
Format today's date as YYYY-MM-DD (use system date).
### {title}
**Source**: {source, or "Not specified" if skipped}
**Added**: {YYYY-MM-DD}
**Priority**: {P0|P1|P2|Idea}
**Type**: {type}
**Description**: {description}
**Verbatim user report**: {exact words from the user — argument string, Question 3 answer, or source text. Never paraphrased, never summarized, never reformatted.}
**How to reproduce**: {reproduction steps, or omit entirely if not provided}
"Verbatim user report" rules:
<item_title/> argument string, character for character.--auto mode: the full <item_title/> argument string, character for character."How to reproduce" rules:
If research questions were embedded in the description (lines starting with ? or Research:),
keep them in the description — the backlog_add MCP tool has no research_first parameter.
Prefix the questions with Research first: inside the description text so they remain visible.
Call the mcp__plugin_dh_backlog__backlog_add tool:
| Parameter | Value |
|---|---|
gate_token | "problems-not-solutions" |
title | "{title}" |
priority | "{priority}" |
description | "{description}" |
source | "{source}" |
type | "{type}" |
how_to_reproduce | "{reproduction steps}" if provided; omit parameter entirely if not |
verbatim_user_report | "{exact user words}" — always provide; never omit |
Check the returned dict for error key.
Note on research_first: The --research-first CLI flag has no MCP equivalent. The research_first parameter does not exist on backlog_add. Embed research questions directly in the description parameter instead.
The script outputs the confirmation. Report to user:
Backlog item created.
Title: {title}
Priority: {priority}
Section: {section heading}
Added: {date}
Next steps:
Groom: /dh:groom-backlog-item {title}
Work: /dh:work-backlog-item {title}
backlog_add MCP tool invoked successfully (no error key in response)NEXT: skill="groom-backlog-item" args="{item title}" condition="item created successfully AND metadata.status=needs-grooming"
npx claudepluginhub jamie-bitflight/claude_skills --plugin dhManages backlog items through grooming, planning, and closure using GitHub Issues, Projects, Milestones. Interactive browser, auto-mode, resolve/close with evidence, SAM integration.
Guides users through creating a structured work item (feature, bug, task, spike, or epic) with collaborative research and reasoning.
Creates and maintains product/project backlogs with prioritization, acceptance criteria, and estimates. Supports user stories, MoSCoW, grooming, and tracking.