"Capture a candidate initiative into the ideation backlog -- one index row plus a stub dossier under docs/product/backlog/, both at state `idea`. Accepts a typed title or --from-issue <url>, the intake path for ideas submitted by people outside a kit-configured project. The frictionless pre-intake entry point that records an idea so it is never lost. Use before any INIT- is minted; deliberately low-ceremony with no interrogation, no readiness assessment, and no orchestrator-repo write."
Install
npx skillscat add specfuse/authoring/ideation-capture Install via the SkillsCat registry.
Specs agent — ideation-capture skill (v0.1)
Model B (docs/naming-convention.md). Captures a candidate initiative into
the ideation backlog — the pre-intake fuzzy front end. This skill is upstream ofinitiative-intake: it records an idea so it is never lost; intake later mints
theINIT-id when the idea isready. Frictionless by design.
When this file and the specs agent role config disagree, the role config
wins and this file is wrong. Raise an escalation rather than reconciling silently.
Purpose
Capture a candidate initiative in two writes: one row at state idea in the
backlog index (docs/product/INITIATIVE_BACKLOG.md) and a stub dossier atdocs/product/backlog/IDEA-NNN-<slug>.md. The index row is the scannable pointer;
the dossier is the shaping workspace ideation-shape fills later. The whole point
is low ceremony — capture must be faster than the urge to skip it. This skill does
not interrogate the idea.
Scope
In scope:
- Creating the index file from
.specfuse/authoring/templates/initiative-backlog.template.md
and thedocs/product/backlog/folder if they do not yet exist. - Allocating the next sequential
IDEA-NNNand a kebab<slug>from the title. - Appending one
idea-state index row (title, state, repos-if-known, dossier link). - Creating the stub dossier from
.specfuse/authoring/templates/initiative-idea-dossier.template.md,
filling only what the human volunteered; the rest stays template placeholders.
Out of scope:
- Shaping, interrogating, or assessing readiness — the
ideation-shapeskill. - Minting an
INIT-id or creating a registry — theinitiative-intakeskill;
capture never touches the orchestrator repo. - Triage / reprioritization — the
ideation-groomskill.
Inputs
- A title (required) and any free-form blurb the human offers — or
--from-issue <url>, below. docs/product/INITIATIVE_BACKLOG.md— to read the maxIDEA-NNNand append.docs/product/backlog/— the dossier folder (created if absent).
--from-issue <url> — capture an idea somebody filed on GitHub
The intake path for people outside a kit-configured project: anyone in the company opens an ordinary issue, someone labels it, and it lands in the backlog.
The artifacts are identical to a typed capture — one idea-state row, one stub dossier from the same template, the same IDEA-NNN allocation. The only difference is where the text came from, which is why this is a source parameter on this skill rather than a skill of its own.
- Read the issue's title and body. The title seeds the row and the dossier heading; the body goes in Context & motivation verbatim, attributed, and is not paraphrased — capture does not interrogate, and it does not editorialise someone else's words either.
- Require the label from
github.ideas.label(defaultspecfuse:idea). An unlabelled issue is not a submitted idea, and capturing one is how an unrelated bug report becomes a backlog row nobody can explain. - Record the issue URL in the dossier's
issue:field, and comment the allocatedIDEA-NNNback on the issue so the submitter can follow it. - Idempotent. If any dossier already carries this
issue:URL, say so and stop. Re-running must not mint a secondIDEA-NNNfor one submission.
Reads github.ideas.repo and github.ideas.label viapython3 scripts/specfuse/authoring-config.py github.ideas.repo --required.
Unset means GitHub intake is off, and the reader says so naming the key — it is not a 404 and not a silent no-op.
Bulk import is deliberately not here. Ingesting a pre-existing issue backlog needs a pick-list, dedup against existing dossiers, and idempotency across a whole sweep. That is a batch operation, not frictionless capture, and it is not needed for a new project. If it is ever built it is
ideation-import— neveradopt-idea, which would mean the opposite of what it does (adopt-featureis pick one and grind it; this is receive, and promise nothing).
Outputs
- One new index row + one stub dossier, both state
idea. No orchestrator write,
no event.
Procedure
1. Ensure the index + folder exist
If INITIATIVE_BACKLOG.md is absent, create it from the index template (header,
table, Notes; no example rows). If docs/product/backlog/ is absent, create it.
State intent: "Capturing a new idea into the backlog."
2. Allocate ID + slug
Scan existing IDEA-NNN rows, take max + 1 (or 001), zero-pad to three digits.
Derive a kebab <slug> from the title. IDs are transient and sequential; never
reuse a retired ID.
3. Write the index row
Add the row: State: idea, INIT: —, repos if the human named them else blank,Dossier linking backlog/IDEA-NNN-<slug>.md. Keep the ## IDEA-NNN index
section to a one-line summary + dossier link (the rich content goes in the
dossier, not here).
4. Write the stub dossier
Create docs/product/backlog/IDEA-NNN-<slug>.md from the dossier template. Set
frontmatter idea_id, slug, state: idea. Fill any section the human
volunteered; leave the rest as placeholders. Do not ask follow-up questions —
an empty-but-captured idea is the success state.
5. Result
Emit the RESULT block per the shared result contract. status: complete = index
row + stub dossier written. Point the human at /ideation-shape IDEA-NNN for when
they want to flesh it out.
Version
v0.1. Deliberately minimal — one row, no interrogation. The friction budget for
capture is near zero; resist adding prompts here.