/idea — capture a fix/feature/research idea into a tracked issue + planning doc
Turns "I just thought of something" into a GitHub Issue (backlog substrate) plus a linked planning doc at docs/ideas/<date>-<slug>.md. Files into the current repo (whatever gh resolves); tags a milestone only if the repo uses them.
Lean fast: 2-tap capture, not a Q&A. Infer aggressively, show one proposal block, accept with "y" or correct a field. Only ask what you truly can't infer — a thin idea filed beats a rich idea lost.
Steps
- One-liner — use it if given (
/idea <text>); if bare, ask once: "What's the idea? (one line — fix / feature / research)". - Infer & propose, one compact block, then "Accept all (y), or tell me what to change.":
- title — clean imperative (e.g. "Cache geocode lookups across requests")
- slug — kebab-case, ≤5 words, no date (e.g.
cache-geocode-lookups) - type —
fix/feature/research, from verbs (fix/broken/regression → fix; add/build/support → feature; investigate/compare/spike → research) - priority —
now/next/someday, defaultnext(urgency → now, "someday"/"nice to have" → someday) - milestone — only if it obviously maps to one the repo uses (e.g.
docs/roadmap/MILESTONES.md); elsenone
title: Cache geocode lookups across requests slug: cache-geocode-lookups type: feature priority: next milestone: none - Confirm-or-edit — apply corrections; if no problem detail was given, ask one skippable question: "One line on the problem / motivation?" Capture rough approach only if volunteered.
- Write the planning doc to
docs/ideas/<date>-<slug>.md(template below),issue:left blank. - File the issue — write the body to a temp file, then:
Prints.claude/skills/idea/file-idea.sh \ --title "<title>" --type <type> --priority <priority> \ [--milestone M3] --body-file /tmp/idea-body.mdISSUE_NUMBER=<n>/ISSUE_URL=<url>;--dry-runpreviews only. Body (doc is source of truth, issue is the board entry):<2-3 line summary in your words> **Planning doc:** docs/ideas/<date>-<slug>.md **Milestone:** M3 (or "none") _Captured via /idea._ - Backlink & commit — fill
issue:with the URL, stage by name (notgit add -A):git add docs/ideas/<date>-<slug>.md && git commit -m "idea: <title> (#<n>)" - Report one line: issue number + URL + doc path.
Planning doc template (docs/ideas/<date>-<slug>.md)
---
title: <title>
slug: <slug>
type: fix | feature | research
priority: now | next | someday
milestone: M3 | none
issue: <url — filled after the issue is created>
status: open
created: <YYYY-MM-DD>
---
## Problem / motivation
<the itch, in the user's words>
## Rough approach
<optional — or "TBD">
## Open questions
-
## Notes
<append as the idea evolves; doc is the durable home, issue is the pointer>
Notes
file-idea.shcreates labels (idea+ type +p:<priority>+ optionalarea:M<n>) and the issue; idempotent, supports--dry-run.- Sets a real GitHub milestone
M<n>if one exists, else anarea:M<n>label. - Out of scope: worktree creation (
/branch//pickupto start work), triage automation. - Resume later:
gh issue list(or/pm) → read the doc →/branch <slug>.