spectastic Extended
Docs Examples GitHub
Extended commands

The ex- family

Opt-in verbs that sit beside the eight core commands, not inside them. explain is read-only — it teaches an existing artifact and authors nothing. explore runs upstream of a spec — deliberately throwaway until it graduates. A third, expense, is on the way.

Overview

Two extended verbs ship today. They're enabled opt-in and stand apart from the core eight-verb lifecycle — one teaches, one learns.

/spectastic.explain
Teach a real spec, decision, or file — grounded, on demand
in-chat, no artifact
/spectastic.explore
Scaffold a quarantined spike upstream of a spec
explore.html + quarantine.json

explain — the grounded coach

/spectastic.explain <target> gives an ephemeral, in-chat, just-in-time explanation of a real spec, decision, or file — grounded in source, never invented, pulled on demand. In its bare form it writes nothing: the explanation is the chat, and your working tree stays byte-identical.

# explain a spec, a requirement, a decision, a file
/spectastic.explain 015-ai-stub-injection
/spectastic.explain FR-003
/spectastic.explain D-010
/spectastic.explain packages/cli/src/commands/init/bundle.ts
# dial the scaffolding down as you learn
/spectastic.explain 015-ai-stub-injection --proficiency=independent
# a target that isn't real → refuse-and-report, never fabricated
/spectastic.explain 099-does-not-exist

A target is anything anchored in the repo — a spec ID (015-ai-stub-injection), a requirement, decision, or success-criterion ID (FR-003, D-010, SC-001), or a file or directory path.

How it behaves
grounded, never invented

Every target is resolved against real source first. It cites only references it has confirmed exist — zero hallucinated links. Miss the target and it refuses-and-reports rather than fabricating.

--proficiency

Bands fade the scaffolding: wheels (fullest) → completionindependent (terse). Invalid bands are rejected, not silently defaulted.

bare mode writes nothing

The coach drives the agent's own read tools — no files touched. The explanation lives in the chat and evaporates; your working tree is untouched.

--course [--keep]

Turn one target into a short course: ≤7 grounded objectives, each blind-checked, written to a git-ignored .spectastic/courses/….

explore — vibe to learn, spec to keep

explore <intent> scaffolds a quarantined exploration you build loosely — the SDD ceremony off, a thin principles floor on — that the lifecycle refuses to ship until it graduates. It's the extended verb upstream of spec: somewhere to vibe your way to an answer without pretending it's production yet.

# start a quarantined exploration
spectastic explore "can we stream partial specs to the validator?"
# when it earns its keep — graduate or delete, nothing in between
spectastic explore --graduate 022-stream-specs --classify tracer-bullet
# scaffold the tasks to bring it into compliance
/spectastic.tasks 022-stream-specs --restore
Two artifacts
explorations/<id>/explore.html

A rich, git-ignored ledger — intent, what you built / tried / worked / didn't, and a run block. The thin floor keeps only single-file and semantic-tag principles; no requirement IDs, no INVEST.

explorations/<id>/quarantine.json

A small, tracked marker — { id, intent, status, created }. This is the anti-ship guard, committed so the whole lifecycle can see it.

The anti-ship guard
validate stays red

spectastic validate errors while any tracked quarantine.json is quarantined — CI stays red by design: graduate or delete to clear.

state-gate refuses

The verb state-gate won't advance a quarantined id through the core verbs — plan, tasks, propose, apply — until it graduates.

There is no un-graduated path to production — only two exits. Graduate classifies the work as a spike (keep the learning, rebuild clean) or a tracer-bullet (keep the code, back-fill the spec, harden in place), extracts a Draft spec.html + plan.html, lifts the quarantine, and archives the exploration. Or you delete it. Nothing ships by accident.

← Back to docs Home