Use when the user wants to capture a brainstormed idea, feature, or solution into a durable backlog/spec doc under docs/backlog — a human-facing reference that combines context, chosen solution, key decisions (ADR-lite), scope, acceptance criteria, and optional feature/integration/contract/use-case/handoff modules. Drafts the whole doc autonomously from the current conversation and persists docs/backlog/<slug>.md; asks the user only when blocked or a decision genuinely needs their input. NOT a low-level implementation plan (that is superpowers:writing-plans / x-do).
64
81%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
x-backlog turns a discussed idea into a durable, human-facing reference doc at
docs/backlog/<slug>.md. It sits between research/brainstorming and the low-level
implementation plan: it records the why and the what — context, chosen solution,
key decisions, scope, acceptance, and the relevant contracts/integrations/use-cases —
so you can return to it months later or hand it off cleanly.
x-backlog is not an implementation plan. It does not produce per-file, per-step,
"for an agent to execute" instructions. When the doc is ready, the next step is
superpowers:writing-plans or /x-do.
Before walking, load:
references/template.md — the canonical CORE + MODULES skeleton and the index format.gotchas.md — known failure patterns.No capability-loading / OMO / agy dispatch is needed. x-backlog is Claude-native: it drafts and writes a markdown file. It never delegates to sub-agents.
The one exception is the Memory Reflex (../x-shared/mcp-toolbox.md § Memory Reflex): its
recall (step 2) and persist (step 6) are gated on mcp.basic_memory being in the
bootstrap-active capability set — the [x-skills/capabilities] snapshot line, or its
~/.config/x-skills/capabilities.json fallback (per ../x-shared/capability-loading.md) when
the line isn't in context. Consult the pinned set for this gate only — no full
capability-loading walk, no sub-agent dispatch. When basic_memory is absent, both beats skip
silently and x-backlog behaves exactly as before.
If the request is closer to one of these, route there instead and stop:
| User intent | Route to |
|---|---|
| "Write the per-file/per-step plan to build this" | superpowers:writing-plans or x-do |
| "Just build it / implement this" | x-do |
| "Review this code / plan / PR / doc" | x-review |
| "Explain / walk me through this input" | x-guide |
| "Research / investigate how X works" | x-research |
| "Architect-review this AI-produced plan before I build" | x-mindful |
| "Still deciding what to build / haven't chosen a solution yet" | superpowers:brainstorming |
docs/backlog/<slug>.md (create docs/backlog/ if absent).references/template.md. Do not invent sections.created/updated.Run these six steps in order, autonomously. The user is not interviewed section by section; the only pause is the blocker checkpoint in step 3, and only when a blocker actually exists.
<slug> from the feature name (e.g. user-billing-portal).docs/backlog/<slug>.md already exists, this is an update: read it and merge new
conversation material into the existing content instead of drafting from scratch.Backlog doc: docs/backlog/<slug>.md (new | update).mcp.basic_memory pinned in the bootstrap-active set — see the Bootstrap note): one mcp__basic-memory__search_notes({ query: "<feature slug/name>", page_size: 5 }) call over prior decisions/<project-slug>/ notes BEFORE drafting — surface cross-session contradictions with earlier decisions as leads for the step-3 blocker checkpoint (blocker #1 Contradiction), not verdicts, per ../x-shared/mcp-toolbox.md § Memory Reflex. Skip silently when not pinned.Ask the user only when one of these blockers holds:
If any blocker exists, batch every question into ONE checkpoint (one message / AskUserQuestion) before writing — never a per-section drip. If none exists, say nothing and proceed. Default when unsure: record it under Handoff Notes / Open Questions and keep going.
docs/backlog/<slug>.md from references/template.md with the drafted content.
Include only the modules that passed triage.type in frontmatter from the nature of the work: fix for bug specs, refactor,
chore, etc. as appropriate, feat otherwise. Downstream skills consume it: x-worktree
derives the branch name <type>/<slug> and x-do picks the archival folder on completion.related with any research docs, PRs, plans, or tickets referenced in the
conversation (leave [] if none).status: ready only if the Acceptance criteria are grounded in real conversation
material — criteria you had to invent from thin context are not ready, so use backlog.docs/backlog/README.md — if the index is in its empty state, delete the
"no unshipped backlog items" line as you add the first row back (see references/template.md
§ "Index file" → Empty-state line). Then add this doc's row, or replace the existing
row matched by slug (never append a duplicate).Fresh-eyes pass on the written file: any leftover <placeholder>, contradiction between
sections (e.g. a scope bullet that fights a decision), or vague acceptance criterion?
Fix inline. No re-review loop — fix and move on.
Persist Key Decisions (only when mcp.basic_memory pinned in the bootstrap-active set — see the Bootstrap note): for each decision block drafted in step 4, one mcp__basic-memory__write_note({ title: "<slug>: <decision title>", directory: "decisions/<project-slug>", content: "<decision + rationale + rejected alternative>", tags: ["<project-slug>", "x-backlog", "<slug>"] }) call (project-slug per § Consumer rules). Persist the decision + rationale only — not the whole doc; if this run's recall already surfaced a note for the same decision, edit_note it rather than writing a duplicate — per the Update over duplicate shape in § Memory Reflex (the recall hit's permalink as identifier, operation: "append"; it cannot retag or move a note, so write fresh if the surfaced note is misfiled — and never append across kinds, e.g. onto a notes/ research note on the same topic: cite its permalink in content instead, per § Memory Reflex "Chained skills link, don't restate"). Placement + tagging per ../x-shared/mcp-toolbox.md § Memory Reflex / § Consumer rules. Skip silently when not pinned.
Report the path, status, a one-screen summary of what was drafted, and any Open Questions recorded — then invite edits and offer the downstream handoff:
Backlog doc written to
docs/backlog/<slug>.md(status: ). Tell me what to change and I'll update it in place. Next → [C] commit doc on current branch · [W] worktree + implement (/x-worktree <doc>) · [P] plan first (superpowers:writing-plans) · [D]/x-do <doc>here · [N] stop.
Handoff behavior per letter:
docs(backlog): add <slug> (or update <slug>
on a re-run). Then re-offer [W] / [D] / [N] once — capture-and-park is a valid end state.Skill: x-skills:x-worktree docs/backlog/<slug>.md. Two doc states carry
cleanly: an untracked new doc is migrated + committed inside the new worktree; a committed
clean doc is inherited via the base branch. The third state does not: an update run
(step 1 re-rendered an already-committed doc) leaves it tracked + modified, which x-worktree
step 2.5 hard-rejects — so on an update run, do [C] first to commit the change, then [W].
Note the difference in one line when offering: [C] then [W] keeps the doc on the current
branch too; [W] alone carries only the doc to the new branch until merge. The README.md
index row from step 5 is a separate modified file x-worktree does not migrate — prefer
[C] first so doc + index travel together; with bare [W] the row stays on the current branch
and the archival row-deletion on the worktree branch harmlessly no-ops. On a bare [W] with
an untracked doc, also revert the step-5 README row in the source checkout after the
migration (the doc no longer exists on this branch, so a committed row would dangle at a
moved-away file); the index re-syncs when the branch merges. On x-worktree's
success envelope, follow its /x-do handoff suggestion.superpowers:writing-plans on the doc. This path does not run x-do
Mode A, so nothing auto-flips status or archives the doc: flip status: in-progress by hand
when the build starts, and archive per references/template.md § "Archival on done" when it
ships — otherwise the doc silently rots in docs/backlog/ after implementation.Skill: x-skills:x-do docs/backlog/<slug>.md in the current dir
(x-do Mode A; it applies its Backlog Doc Lifecycle — status flip, archival on completion).references/template.md — canonical CORE + MODULES skeleton, index format, status lifecycle.See gotchas.md.
Task: {{ARGUMENTS}}
667abc8
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.