/spike
Exploratory spike on a throwaway branch — answer a named question with disposable code. Never merges; exits to a findings note or {{CMD:feature}}.
$ npx -y skills add arbiterForge/codeArbiter --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/spike
Context preview
What this command does when you run it.
Exploratory spike on a throwaway branch — answer a named question with disposable code. Never merges; exits to a findings note or {{CMD:feature}}.
Command definition
spike.mddescription: Exploratory spike on a throwaway branch — answer a named question with disposable code. Never merges; exits to a findings note or {{CMD:feature}}.
argument-hint: "<question to answer> [timebox]"{{CMD:spike}} — exploratory spike
The sanctioned lane for "I need to write code to find out." Spike code is disposable by contract: it never merges, never PRs, and never becomes the implementation. What survives a spike is the *answer*, written down — the code is burned.
Flow
1. **Name the question** — a spike without a falsifiable question is just freelancing. Restate `$ARGUMENTS` as the question the spike answers and the timebox (default: one session). STOP for the user's confirmation. 2. **Branch** — create `spike/<slug>` from the current branch. All spike work stays on it. 3. **Explore** — no `tdd`, no plan, no review fleet. Two rules survive even here: no secret leaves the approved store, and no irreversible operation (prod data, destructive migration) runs from a spike. 4. **Exit — exactly one of:**
- **Answered** → write the findings to `{{PROJECT_DIR}}/.codearbiter/spikes/<slug>.md`
(the question, what was tried, the answer, what it implies), then delete the branch. If the answer warrants building, hand the findings to `{{CMD:feature}}` — the spike file seeds `brainstorming`; the spike code is reference material, never the implementation.
- **Timebox expired, no answer** → record that too (a dead end is a finding), delete the branch.
Hard gate
MUST NOT merge or PR a `spike/*` branch — its only exits are a findings file and deletion. MUST NOT copy spike code into an implementation branch wholesale; implementation re-enters through `{{CMD:feature}}` and `tdd`. Secret-handling and irreversibility rules hold even in a spike. Commits on a `spike/*` branch are exempt from `commit-gate` — the exemption is safe precisely because nothing on the branch can ever land.
When NOT to use
- You already know what to build → `{{CMD:feature}}`.
- Diagnosing a defect → `{{CMD:debug}}` (investigation with a structured exit).
- A question answerable by reading code or docs → `{{CMD:btw}}`.
Read more
description: Exploratory spike on a throwaway branch — answer a named question with disposable code. Never merges; exits to a findings note or {{CMD:feature}}.
argument-hint: "<question to answer> [timebox]"{{CMD:spike}} — exploratory spike
The sanctioned lane for "I need to write code to find out." Spike code is disposable by contract: it never merges, never PRs, and never becomes the implementation. What survives a spike is the *answer*, written down — the code is burned.
Flow
1. **Name the question** — a spike without a falsifiable question is just freelancing. Restate `$ARGUMENTS` as the question the spike answers and the timebox (default: one session). STOP for the user's confirmation. 2. **Branch** — create `spike/<slug>` from the current branch. All spike work stays on it. 3. **Explore** — no `tdd`, no plan, no review fleet. Two rules survive even here: no secret leaves the approved store, and no irreversible operation (prod data, destructive migration) runs from a spike. 4. **Exit — exactly one of:**
- **Answered** → write the findings to `{{PROJECT_DIR}}/.codearbiter/spikes/<slug>.md`
(the question, what was tried, the answer, what it implies), then delete the branch. If the answer warrants building, hand the findings to `{{CMD:feature}}` — the spike file seeds `brainstorming`; the spike code is reference material, never the implementation.
- **Timebox expired, no answer** → record that too (a dead end is a finding), delete the branch.
Hard gate
MUST NOT merge or PR a `spike/*` branch — its only exits are a findings file and deletion. MUST NOT copy spike code into an implementation branch wholesale; implementation re-enters through `{{CMD:feature}}` and `tdd`. Secret-handling and irreversibility rules hold even in a spike. Commits on a `spike/*` branch are exempt from `commit-gate` — the exemption is safe precisely because nothing on the branch can ever land.
When NOT to use
- You already know what to build → `{{CMD:feature}}`.
- Diagnosing a defect → `{{CMD:debug}}` (investigation with a structured exit).
- A question answerable by reading code or docs → `{{CMD:btw}}`.
When you can't trust yourself with your code base, trust Arbiter.
Repo: arbiterForge/codeArbiter
Other commands on codearbiter.
- /add-dep
Vet a new or changed third-party dependency for license, provenance, and supply-chain risk before any install runs.
Open command - /adr-status
Report the health of Architecture Decision Records — aged, unchallenged, supersession candidates, unresolved CONFIRM-NN. Read-only.
Open command - /adr
Author a numbered, dated, user-attributed Architecture Decision Record under .codearbiter/decisions/.
Open command - /arbiter
Exit maintainer dev mode — restore orchestration, remove the dev marker, log the exit.
Open command - /audit
Assemble the governance record for a range — commits, overrides, ADRs, sprint auto-decisions, open questions, checkpoint findings — into one dated audit packet. Read-only.
Open command - /btw
Lightweight Q&A about the project — answer from context and return, no routing, no state change.
Open command

