/ca-spike
Exploratory spike on a throwaway branch — answer a named question with disposable code. Never merges; exits to a findings note or $ca-feature.
$ npx -y skills add arbiterForge/codeArbiter --skill ca-spike --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/ca-spike
Context preview
The summary Claude sees to decide when to auto-load this skill.
Exploratory spike on a throwaway branch — answer a named question with disposable code. Never merges; exits to a findings note or $ca-feature.
SKILL.md
ca-spike.SKILL.mdname: ca-spike
description: Exploratory spike on a throwaway branch — answer a named question with disposable code. Never merges; exits to a findings note or $ca-feature.
argument-hint: "<question to answer> [timebox]"
$ca-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-root>/.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 `$ca-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 `$ca-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 → `$ca-feature`.
- Diagnosing a defect → `$ca-debug` (investigation with a structured exit).
- A question answerable by reading code or docs → `$ca-btw`.
Read more
name: ca-spike description: Exploratory spike on a throwaway branch — answer a named question with disposable code. Never merges; exits to a findings note or $ca-feature. argument-hint: "<question to answer> [timebox]"
$ca-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-root>/.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 `$ca-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 `$ca-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 → `$ca-feature`.
- Diagnosing a defect → `$ca-debug` (investigation with a structured exit).
- A question answerable by reading code or docs → `$ca-btw`.
When you can't trust yourself with your code base, trust Arbiter.
Repo: arbiterForge/codeArbiter
Other skills on codearbiter.
- /brainstorming
The Socratic spec-refinement front of /feature, and the planning front of /sprint. Routed to BEFORE any code — it takes a one-line idea and drives it to an approved, concrete spec with testable acceptance criteria. Four gated phases — frame, refine, write, approve. No
Open skill - /commit-gate
The only path to a commit. Routed to when the user invokes /commit or otherwise instructs codeArbiter to persist staged changes. Nine gated phases — permission, branch, classification, verification (test/lint/secrets), behavioral proof, diff review, selective stage, message,
Open skill - /context-check
Optional manual drift audit — report stale provenance-tracked docs (via _provenancelib drift detection across .codearbiter/.provenance/), then per stale doc offer re-scout / re-baseline / defer. Not the daily loop; commit-gate auto-heal owns routine maintenance.
Open skill - /context-creation
The brownfield back-fill. Routed to by /create-context, and by startup when .codearbiter/CONTEXT.md lacks the <!--INITIALIZED--> body marker but source code exists. Six gated phases — pre-flight, scout dispatch, synthesis, gap interview, write, lock. Reads the existing codebase
Open skill - /crypto-compliance
The banned-primitive gate. Routed to when changed code hashes, signs, encrypts, derives keys, generates security-relevant randomness, configures TLS, or imports a crypto library. Rejects broken primitives, disabled TLS verification, and home-rolled crypto; the approved-primitive
Open skill - /debug
Investigate-then-decide root-cause analysis for a defect whose cause is unknown (distinct from /fix, which assumes a known bug). Five gated phases: capture, hypothesize, gather, decide, hand off. Investigation only, no code changes; exits to /fix, /adr, or a no-action close.
Open skill

