The SpikeMe CLI analyzes your repo locally and generates spike documents from the terminal, where your code already lives. Analysis is free and never leaves your machine. Generation runs through the SpikeMe backend and is metered by your plan.
Install
The CLI needs Node.js 18 or newer. Run it once without installing:
npx spikeme
Or install it globally so spikeme is on your PATH:
npm install -g spikeme
spikeme
Commands
| Command | What it does |
|---|---|
spikeme | Analyze the current repo's stack. Free, local, nothing uploaded. |
spikeme gen "<topic>" | Generate a full spike document for a decision. |
spikeme implement "<library>" | Generate an implementation guide for a library you've chosen. |
spikeme login | Sign in via a device-flow browser login. |
spikeme --help | Show help. Aliases: -h, help. |
spikeme --version | Show the installed version. Alias: -v. |
spikeme
Run with no arguments to analyze the current repo. It parses your manifest, prints your stack and its categories, and lists the gaps that make good spike topics. This is free, runs locally, and uploads nothing.
Supported manifests are package.json (npm), pyproject.toml and
requirements.txt (Python), and go.mod (Go). In a polyglot repo, the CLI
detects more than one.
spikeme
spikeme gen "<topic>"
Generate a full spike document for a decision: options analyzed, a comparison
table, a recommendation, a proof-of-concept plan, and risks. This runs through
the SpikeMe backend, so it needs spikeme login and an active plan.
spikeme gen "state management for our React app"
See gen options for the flags that control depth, number of options, language, and output.
spikeme implement "<library>"
Once the spike has decided which library to adopt, implement generates an
actionable implementation guide for it: the version-pinned install command (from
live facts), a minimal working example in your project's stack, timeboxed
integration steps, a proof-of-concept checklist, and a rollback plan. SpikeMe
generates the plan; it does not execute anything — you, or your coding agent
under your confirmation, run the commands. Like gen, it runs through the
backend, so it needs spikeme login and an active plan.
spikeme implement "zustand"
Use --topic <text> to pass the context of the decision the library came from.
implement also takes the same --lang, -o, and --path flags as gen:
spikeme implement "zustand" --topic "state management for our React app" --lang en -o impl-zustand.md
spikeme login
Sign in from the terminal via a device-flow browser login. See
Login below for the full flow and the CI-friendly --token option.
spikeme login
gen options
| Flag | Values | Default | Description |
|---|---|---|---|
--depth | quick | full | full | quick produces a smaller, cheaper doc. |
--options | 2 | 3 | 4 | 3 | How many options to analyze. |
--lang | en | pt | en | Language of the generated document. |
-o, --out <file> | file path | stdout | Write the document to a file instead of stdout. |
--path <dir> | directory | current dir | Which repo directory to read the manifest from. |
spikeme gen "which ORM for our Node service" --depth quick --options 4 --lang en -o spike-orm.md
Login
spikeme login starts a device flow. The terminal shows a one-time code and
opens your browser to https://spikeme.io/cli-login. You type that code there
and approve it. You must be signed in to spikeme.io for this to work, and you
should only enter a code from a login you started yourself.
spikeme login
On success, the token is saved to ~/.spikeme/credentials.json (mode 0600)
and refreshes automatically, so you stay signed in.
For CI or headless environments where no browser is available, pass a token directly or set it in the environment:
spikeme login --token "<token>"
spikeme gen and spikeme implement require an active plan (Starter or Pro).
Free accounts generate on the web instead. See Plans and billing
for what each plan includes.
Environment variables
| Variable | Description |
|---|---|
SPIKEME_TOKEN | An auth token used instead of spikeme login. Useful in CI and headless setups. |
export SPIKEME_TOKEN="<token>"
spikeme gen "background jobs for our Python API"
Examples
Analyze the current repo and see suggested spike topics:
npx spikeme
Generate a quick, four-option spike and write it to a file:
spikeme gen "testing setup for our monorepo" --depth quick --options 4 -o spike-testing.md
Generate a spike in Portuguese from another directory:
spikeme gen "fila de mensagens" --lang pt --path ../api
Generate in CI with a token from the environment:
export SPIKEME_TOKEN="<token>"
spikeme gen "which HTTP client" -o spike-http.md