Skip to content
Development
Skill

/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.

From plugin
codearbiter
14562 skills19 agents42 commands
Install
$ npx -y skills add arbiterForge/codeArbiter --skill ca-spike --agent claude-code

How 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.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • 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.md
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 exploratory code and experiments stay on it; only the completed findings file may later cross back to the parent. 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), and commit only that findings file on `spike/<slug>`. Return to the parent branch and run `git restore --source spike/<slug> -- .codearbiter/spikes/<slug>.md` to transfer only the committed findings file, review it, and commit that one file through `$ca-commit`; do not merge the spike branch. Then delete the spike branch. If the answer warrants building, hand the findings to `$ca-feature` — the spike file seeds `brainstorming` ([routines/brainstorming/SKILL.md](../../routines/brainstorming/SKILL.md)); the spike code is reference material, never the implementation.

  • **Timebox expired, no answer** → record that in the findings file and use the same findings-only

transfer before deleting the spike branch.

Hard gate

MUST NOT merge or PR a `spike/*` branch — its only exits are a findings file and deletion. Do not transfer spike code: the parent may receive only the committed findings file. 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 because no spike commit is merged and the parent may copy only the committed findings file's contents, never spike code.

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
Ships withcodearbiter

When you can't trust yourself with your code base, trust Arbiter.

Get the whole plugin

Other skills on codearbiter.