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.
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.
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.
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) → completion → independent (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.
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.
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.