Files
msd-core/commands/gsd/spike.md
Tom Boucher 81f9534b5a feat(adr-0002): command contract validation module + prose @-ref cleanup + workflow extraction
ADR-0002: commands/gsd/*.md contract now enforced at two layers:

LINT (scripts/lint-command-contract.cjs — new CI step):
- name: present, starts with gsd: or gsd-
- description: non-empty
- allowed-tools: non-empty, all entries canonical
- execution_context @-refs: resolve on disk, no trailing prose on same line
- handles both @~/ and $HOME/ path prefixes

TEST (tests/command-contract.test.cjs — 361 assertions):
- Behavioral contract for all 65 command files
- Replaces scattered coverage in enh-2790 + bug-3135
- Per-command per-rule test — one failure names the exact file + rule

CI (.github/workflows/test.yml):
- 'Lint — command contract (ADR-0002)' step added to lint-tests job

PROSE @-REF CLEANUP (39 command files, ~900 tokens/invocation recovered):
- Removed redundant @~/.claude/get-shit-done/... paths from <process> prose
- execution_context block is now the single authoritative load declaration
- Routing commands (sketch, spike, update, pause-work, etc.) keep routing
  instructions; only the inert path token is stripped

WORKFLOW EXTRACTION (debug.md + thread.md, ~15,000 chars / ~3,750 tokens):
- get-shit-done/workflows/debug.md: full process extracted from commands/gsd/debug.md
- get-shit-done/workflows/thread.md: full process extracted from commands/gsd/thread.md
- Command files reduced to frontmatter + objective + execution_context + context
- debug.md: 9,603 → 1,703 chars; thread.md: 7,868 → 585 chars

RENAME:
- get-shit-done/workflows/extract_learnings.md → extract-learnings.md
  (aligns with hyphen convention of all other workflow files)

DOCS:
- docs/INVENTORY.md: count 85→87, new rows, rename row, fix add-todo --backlog attribution
- docs/INVENTORY-MANIFEST.json: +debug.md +thread.md +extract-learnings.md -extract_learnings.md

Closes ADR-0002 implementation.
2026-05-05 15:18:13 -04:00

2.1 KiB

name, description, argument-hint, allowed-tools
name description argument-hint allowed-tools
gsd:spike Spike an idea through experiential exploration, or propose what to spike next (frontier mode) [idea to validate] [--quick] [--text] [--wrap-up] or [frontier]
Read
Write
Edit
Bash
Grep
Glob
AskUserQuestion
WebSearch
WebFetch
mcp__context7__resolve-library-id
mcp__context7__query-docs
Spike an idea through experiential exploration — build focused experiments to feel the pieces of a future app, validate feasibility, and produce verified knowledge for the real build. Spikes live in `.planning/spikes/` and integrate with GSD commit patterns, state tracking, and handoff workflows.

Two modes:

  • Idea mode (default) — describe an idea to spike
  • Frontier mode (no argument or "frontier") — analyzes existing spike landscape and proposes integration and frontier spikes

Does not require /gsd-new-project — auto-creates .planning/spikes/ if needed.

<execution_context> @/.claude/get-shit-done/workflows/spike.md @/.claude/get-shit-done/workflows/spike-wrap-up.md @~/.claude/get-shit-done/references/ui-brand.md </execution_context>

<runtime_note> Copilot (VS Code): Use vscode_askquestions wherever this workflow calls AskUserQuestion. </runtime_note>

Idea: $ARGUMENTS

Available flags:

  • --quick — Skip decomposition/alignment, jump straight to building. Use when you already know what to spike.
  • --text — Use plain-text numbered lists instead of AskUserQuestion (for non-Claude runtimes).
  • --wrap-up — Package spike findings into a persistent project skill for future build conversations. Runs the spike-wrap-up workflow.
Parse the first token of $ARGUMENTS: - If it is `--wrap-up`: strip the flag, execute the spike-wrap-up workflow - Otherwise: pass all of $ARGUMENTS as the idea to the spike workflow end-to-end.

Preserve all workflow gates (prior spike check, decomposition, research, risk ordering, observability assessment, verification, MANIFEST updates, commit patterns).