Files
msd-core/docs/how-to/spike-and-sketch.md
Tom Boucher 8f2ebbe9bf feat(#1928): remove sunset Gemini CLI runtime, redirect to Antigravity (#1996)
* feat(#1928): remove sunset gemini cli runtime, redirect to antigravity

Google sunset Gemini CLI on 2026-06-18; Antigravity CLI is its official successor (already a first-class GSD runtime). Remove the gemini runtime from the enum (16->15), aliases, labels, config-home fragment, install path, converters (convertClaudeToGemini{Markdown,Toml,Agent}, convertSlashCommandsToGeminiMentions), capability descriptor, gemini-extension.json, RULESET.GEMINI.*, and the interactive menu (renumbered, no gap).

--gemini now prints an explicit deprecation notice citing the 2026-06-18 sunset and redirects to --antigravity (no silent alias, per the issue's Hyrum's-Law rejection). Antigravity is preserved throughout: its GEMINI.md contextFileName, .gemini/antigravity config home, the shared convertGeminiToolName/claudeToGeminiTools tool vocabulary, and the 'gemini' hookEvents dialect it declares. GEMINI.md retargeted as Antigravity's context file.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* chore(#1928): backfill changeset PR number (#1996)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* chore(#1928): drop Gemini CLI from issue templates (review nit)

Removes the sunset Gemini CLI runtime from the two GitHub issue-template
runtime lists that the removal PR missed, per @davesienkowski's review nit:
- feature_request.yml: 'Applicable runtimes' checkbox (a user could otherwise
  request a feature for a runtime GSD no longer supports)
- bug_report.yml: 'Runtime' dropdown + the stale ~/.gemini/settings.json
  retrieval-help line

Leaves the post-removal templates fully consistent with the Antigravity redirect.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 13:32:51 -04:00

5.7 KiB
Raw Blame History

How to spike and sketch before committing

Goal: De-risk an implementation by running focused feasibility experiments (spikes) and exploring visual directions through throwaway HTML mockups (sketches) before committing a phase to any specific approach.

Prerequisites: None. /gsd-spike and /gsd-sketch create their own storage directories and do not require an initialised GSD project.


Decide: spike, sketch, or both

You want to answer… Use
"Will this technical approach actually work?" /gsd-spike
"Does this layout / interaction / visual treatment feel right?" /gsd-sketch
"What's the right technical approach, and what should it look like?" Both, in order: spike first, then sketch

Spikes answer binary feasibility questions with executable code and a VALIDATED / INVALIDATED / PARTIAL verdict. Sketches answer visual questions with 2–3 browser-comparable HTML variants. They are complementary — a spike proves the approach is buildable, a sketch proves the design is worth building.


Run a spike

Interactive intake (default)

/gsd-spike

GSD asks about the technical question, decomposes it into 2–5 independent experiments framed as Given / When / Then hypotheses, and asks for confirmation before building.

Provide the idea directly

/gsd-spike "can we stream LLM tokens through SSE"

Skip intake and run immediately

/gsd-spike --quick "websocket vs SSE latency"

--quick skips the decomposition conversation and treats the argument as a single spike question. Use this when the question is already specific enough to run without refinement.

What each experiment produces

Each spike in .planning/spikes/NNN-descriptive-name/ includes:

  • Working code (not pseudocode)
  • A Given / When / Then hypothesis written before any code
  • An investigation trail documenting edge cases, pivots, and surprises
  • A VALIDATED, INVALIDATED, or PARTIAL verdict with evidence
  • A README.md with frontmatter, how-to-run instructions, and results

All spikes are indexed in .planning/spikes/MANIFEST.md.

Package the findings

When you have signal, wrap the findings into a project-local skill so future sessions load them automatically:

/gsd-spike --wrap-up

This writes .claude/skills/spike-findings-[project]/. The skill is discovered automatically and loaded by subsequent /gsd-sketch, /gsd-ui-phase, and /gsd-plan-phase runs — you do not need to reference it explicitly.


Run a sketch

Mood intake (default)

/gsd-sketch

GSD opens a short conversation to explore feel, visual references, and the core user action before any code is written. It asks one question at a time and only starts building when you say go.

Provide a design direction directly

/gsd-sketch "dashboard layout"

Skip mood intake and run immediately

/gsd-sketch --quick "sidebar navigation"

--quick skips the intake conversation entirely and uses the argument as the design direction.

Non-Claude runtimes (Codex, Antigravity CLI, etc.)

/gsd-sketch --text "onboarding flow"

--text replaces interactive prompts with plain-text numbered lists. Use this when your runtime does not support AskUserQuestion.

What each sketch produces

Each sketch in .planning/sketches/NNN-descriptive-name/ includes:

  • index.html with 2–3 variants accessible via tab navigation — open directly in a browser, no build step
  • Functional interactive elements (hover, click, transitions)
  • Real-ish content using field names and data shapes from any prior spike findings
  • Shared CSS variables from .planning/sketches/themes/default.css
  • A README.md with the design question, variants, and what to look for

All sketches are indexed in .planning/sketches/MANIFEST.md.

Package the winning design decisions

After picking a variant, capture the visual decisions into a project-local skill:

/gsd-sketch --wrap-up

This writes .claude/skills/sketch-findings-[project]/. The skill is picked up automatically by /gsd-ui-phase — pre-validated decisions (layout, colour palette, typography, spacing) are treated as locked and are not re-asked.


Combined flow: spike → sketch → phase

This is the recommended sequence when you are uncertain about both technical feasibility and visual direction:

/gsd-spike "SSE vs WebSocket for real-time feed"
/gsd-spike --wrap-up

/gsd-sketch "real-time feed UI"
/gsd-sketch --wrap-up

/gsd-discuss-phase N
/gsd-plan-phase N

The spike findings inform the sketch (real data shapes, real interaction states, realistic constraints). Both wrap-ups persist decisions that the planner and UI researcher load automatically, so you do not need to re-explain choices during /gsd-discuss-phase or /gsd-ui-phase.


How a spike or sketch feeds into a phase

Spike and sketch artifacts do not need to be manually referenced. GSD reads them automatically at two points:

  1. /gsd-sketch — loads .claude/skills/spike-findings-*/ before building mockups, so variants reflect proven constraints (streaming states, real field names, etc.)
  2. /gsd-ui-phase N — loads .claude/skills/sketch-findings-*/ before generating the UI design contract; pre-validated design decisions are treated as locked

The planner also reads spike findings when a spike-findings-* skill is present, so validated technical choices (which library, which protocol, which data format) flow directly into task plans without repeated explanation.