A terminal coding agent in the same shape as Claude Code: skills, slash commands, MCP, plan mode, worktrees. The difference is the entry price. The Go plan is one dollar a month and includes ten dollars of credits, roughly 15K requests on open-source models. This guide covers the CLI, the slash command catalogue, building your own skills, and how to make those credits go furthest.
Every tester has seen the "$1 AI agent" claims by now. Here is the version with receipts: what Command Code actually is, what a dollar actually buys, and how to reach your first session without guessing.
CommandCode
The one dollar terminal coding agent
One command line, grounded in your repo. Same shape as Claude Code: skills, slash commands, MCP, plan mode, managed worktrees. The difference is the entry price, and the fact that your QA playbooks live in the repo instead of in your head.
Go plan: $10 of credits, about 15K requests
Markdown files the whole team can commit
Read only thinking, no edit turns spent
-w isolates a risky refactor from your branch
How a Command Code session works
npm i -g command-code@latestBinary is cmd, or cmdc on native Windows.
cmd loginConfirm with cmd whoami.
cmd -tOr trust it when prompted on first run.
/initWrites AGENTS.md so it follows repo conventions.
.commandcode/Slash commands and SKILL.md playbooks, discovered at launch.
cmd -p "..."One shot, JSON out, capped with --max-turns.
Describe the job in plain language → the right command or skill resolves → you review the diff
What the agent can see
AGENTS.mdrules.commandcode/commands/3.commandcode/skills/4.agents/skills/1~/.commandcode/skills/6~/.agents/skills/2MCP servers2Permission mode
Session
session › plan mode › skill match › answer
test-plan skill on your description, no slash needed.tests/checkout/.flaky-triage skill.Resolved from
/plan1st.commandcode/commands/flaky.md3rd.commandcode/skills/test-plan/SKILL.md4th~/.commandcode/skills/flaky-triage/SKILL.md4thWhat ships in the box
cmdThe CLI, modes and flags
/slashEight groups of built-ins
SKILL.mdYour QA playbooks
MCPExternal tools and data
-wManaged git worktrees
--planRead only thinking
Key capabilities
/review and /pr-commentsQuickstart (local)
# 1. in your shell npm i -g command-code@latest cmd login cd your-test-repo # 2. start it (Windows: cmdc) cmd # 3. at the prompt /init # write AGENTS.md /test-plan checkout-v2 /usage # credits and plan # 4. in CI, back in the shell cmd -p "triage the failures" --output-format json --max-turns 10
Your test conventions, bug format and triage runbook stop living in one senior tester's head. They become files in the repo that every agent reads, on a plan a whole team can afford to try.
cmd binary: you start it inside a project, talk to it in plain language, and it does the coding work right there.cmdc, because cmd is already taken by the built-in Command Prompt.npm i -g command-code@latest.cmd login, then confirm the account with cmd whoami.cd into the project you test and run cmd (on native Windows, cmdc).-t, --trust to auto-trust a repo you already know.cmd "map the test suites in this repo and how to run them"./usage shows credits, plan and usage metrics. Check it before any big run.npm i -g command-code@latest
cmd login
cmd whoami
cd your-test-repo
cmd "map the test suites in this repo and how to run them"
# native Windows: same steps, the binary is cmdc
cmdc login
| Plan | Cost per month | Monthly credits | Approx requests | Models |
|---|---|---|---|---|
| Go | $1 | $10 | about 15K | open-source models only |
| Pro | $15 | $30 | about 25K | open-source plus premium |
| Provider | $15 | pay as you go | varies | all models |
| Max 10x | $100 | $150 | about 110K | open-source plus premium |
| Max 20x | $200 | $300 | about 200K | open-source plus premium |
That is the deal with no asterisks: $1 -> $10 of credits -> about 15K requests on open-source models, Team Pro at $40 per month with pooled credits (about 35K requests), and Enterprise from $5,000 plus. Next tab: the CLI that makes those credits count.
You already live in a terminal, and you already automate other people's tools. This tab treats cmd itself as the system under test: the flag groups you will reach for daily, the subcommands, and a CI-ready one-shot run at the end.
cmd starts an interactive session, cmd "message" starts with a first message, and cmd -p "query" prints an answer and exits. On native Windows the binary is cmdc.-c, --continue reopens the most recent session in this directory; -r, --resume [name] resumes by id or name, or lets you pick from history.-n, --name <name> names a run, --session <path|id> targets an exact one, --fork-session branches it for a what-if, and --no-session skips saving one entirely.--plan starts in read-only plan mode, --auto-accept starts in auto-accept mode, --yolo bypasses all permission prompts, and --permission-mode <default|plan|auto-accept|dont-ask> sets the dial explicitly.-m, --model <model> picks the engine, --list-models shows what your plan can run, --effort <low|medium|high> trades reasoning depth for cost, and --config <key=value> sets any setting headlessly.-t, --trust auto-trusts the project, --add-dir <directory> pulls another folder (say, your test-data repo) into scope, --mod <path> and --skill <path> load extras, and --no-skills skips skill discovery.-p, --print: the agent answers once and exits, exactly what a CI step wants.--output-format json so the next stage parses a verdict instead of scraping text.--max-turns 10 to cap agentic turns, so a stuck run fails fast instead of eating credits.--effort low for mechanical triage, and pick a cheap engine with --list-models plus -m (selected models are free).--no-session keeps hundreds of CI invocations from piling up in your resume history.--verbose to see everything; locally, --ide-setup connects your IDE to share the open file.# see what models your plan can run (Go = open-source only)
cmd --list-models
# CI step: one-shot flaky triage, machine-readable output
cmd -p "read playwright-report/results.json and list the top 3 suspect flaky specs" --output-format json --max-turns 10 --effort low --no-session > flaky-triage.json
# machine-readable health check for the pipeline
cmd status --json
| Subcommand | What it is for | Flags worth knowing |
|---|---|---|
cmd login / cmd logout | Sign in to your plan, sign out | - |
cmd whoami | Show which account is active | - |
cmd help | The built-in help output | also -h |
cmd info | Info about your install | --verbose, --text |
cmd status | Current status | --json |
cmd update | Update the CLI | --check-only |
cmd feedback "message" | Send feedback without leaving the terminal | - |
cmd taste | Command Code's taste learning layer | - |
cmd mcp | MCP servers | - |
cmd skills | Manage skills | add <owner/repo>, list, remove, --global |
cmd mods | Manage mods | - |
cmdc wherever this page writes cmd, and keep every command on one line: the backslash line continuation is a bash habit, and PowerShell will not read it. Redirecting with > works in both shells.--yolo bypasses all permission prompts, and --permission-mode dont-ask stops the asking too. Before reaching for either on a repo you care about, add -w, --worktree so the agent operates in an isolated managed git worktree instead of your live checkout.Interactive for exploration, -p for pipelines, --max-turns on anything unattended, and /usage as the referee: learn those once and cmd behaves like every other tool in your kit, scriptable and accountable.
Your working day is drive the session, guard the context, pick the model, watch the spend: slash commands are the cockpit switches for all of it, and Command Code groups them so a tester can find the right one mid-run.
/clear also answers to /new, /resume to /sessions, and /exit to /quit, so whichever name your fingers type first still works./context shows context window usage and its breakdown, and /compact compacts history so you stop paying to resend a bloated transcript: run both during long test-writing sessions./init writes AGENTS.md so the agent follows your repo conventions, while /review [pr-number] and /pr-comments put it on pull request duty.| Group | Built-in commands | Tester's pick |
|---|---|---|
| Sessions | /clear (/new), /resume (/sessions), /rename [name], /name, /fork [name], /clone, /tree, /rewind, /session, /session-file, /export [html|jsonl|md], /share, /unshare, /exit (/quit), /reload |
/export md turns the session into evidence you can attach to a bug ticket or PR. |
| Context | /compact, /compact-mode, /context, /memory, /init |
/context before you blame the model: see what is actually filling the window. |
| Modes and planning | /mode [default|auto-accept|plan], /mode:default, /mode:auto-accept, /mode:plan, /plan [task], /plans [name], /plan-review, /goal <objective>|clear|status, /todos, /review [pr-number], /pr-comments |
/mode:plan is read only, so you can think through a test approach without burning edit turns. |
| Models | /model [id], /effort [level], /provider, /login, /logout |
/effort [level]: higher effort buys more reasoning, so keep it low for mechanical checks. |
| Group | Built-in commands | Tester's pick |
|---|---|---|
| Extensibility | /skills, /agents, /mcp, /design [mode], /import [claude|codex|cursor|pi|opencode|gemini], /taste, /learn-taste, /ide, /terminal-setup |
/import claude brings an existing Claude Code setup across in one move. |
| Workspace | /add-dir <directory>, /worktree [name|list|remove <name>] |
/worktree isolates a risky refactor in a managed git worktree. |
| Billing | /usage, /upgrade, /extra |
/usage shows credits, plan, and usage metrics: check it before a big regression run. |
| Utilities | /help, /hotkeys, /config [query], /theme, /status, /changelog, /courses, /update, /feedback, /trace, /copy |
/help and /hotkeys on day one, /status when something feels off. |
.commandcode/commands/ and show as (project) in the menu; personal ones live in ~/.commandcode/commands/ and show as (user).commit.md answers to /commit, bug.md to /bug.$1 and $2 take positionals (counted from 1), ${1:-fix} adds a fallback, $@ or $ARGUMENTS takes everything, and ${@:2} takes everything from the second argument on./bug "Cart total wrong" high keeps the whole title in $1./commit once and read the prompt it produces, the same way you review a generated test before trusting it.File: .commandcode/commands/commit.md
Write a commit of type "${1:-fix}" with message: ${@:2}
Invoke: /commit feat add slash command reference
Expands to: Write a commit of type "feat" with message: add slash command reference
| Token | Expands to |
|---|---|
$ARGUMENTS or $@ | every argument the caller typed |
$1, $2 | positional arguments, counted from 1 |
${1} | braced positional, same value as $1 |
${N:-default} | argument N, or default when it is missing |
${@:-default} | all arguments, or default when none were given |
${@:N} | arguments from position N to the end |
${@:N:L} | L arguments starting at position N |
"quoted text" | splitting respects single and double quotes, so a quoted phrase stays one argument |
File: .commandcode/commands/bug.md
Write a bug report titled "${1:-untitled bug}" with severity "${2:-medium}".
Observed behavior: ${@:3}
Format it with: steps to reproduce, expected vs actual, environment,
and the evidence a reviewer should attach.
Invoke: /bug "Cart total wrong" high add items, apply coupon, total ignores discount
Expands to: Write a bug report titled "Cart total wrong" with severity "high".
Observed behavior: add items, apply coupon, total ignores discount
review.md (or Review.md) never runs: the built-in /review wins every time. Give your QA commands unclaimed names like /bug or /flaky.The catalogue drives the tool, and any prompt your team retypes weekly (commit style, bug format, flaky triage) belongs in .commandcode/commands/ as a file. When one prompt file needs templates and scripts around it, that is a skill: next tab.
A slash command carries one prompt; a skill carries a whole QA playbook: instructions, templates, and scripts in a folder that Command Code discovers cheaply and loads only when the task matches.
.commandcode/skills/ for this repo, user level ~/.commandcode/skills/ for all projects, plus .agents/skills/ at both levels, badged [.agents]..commandcode/skills/ -> project .agents/skills/ -> user ~/.commandcode/skills/ -> user ~/.agents/skills/, so the repo's version of a skill name wins.name field exactly, using lowercase letters, numbers, and hyphens only: code-review is good; CodeReview, code_review, -code-review, and code--review are all bad.name (max 64 chars) and description (max 1024 chars). Optional: license, compatibility, metadata, allowed-tools, argument-hint, when_to_use, disable-model-invocation, user-invocable, disallowed-tools, arguments, model, effort.| Priority | Location | Level | Badge |
|---|---|---|---|
| 1 | .commandcode/skills/ | project | - |
| 2 | .agents/skills/ | project | [.agents] |
| 3 | ~/.commandcode/skills/ | user, all projects | - |
| 4 | ~/.agents/skills/ | user | [.agents] |
.commandcode/skills/
├── code-review/
│ └── SKILL.md
└── my-skill/
├── SKILL.md
├── scripts/
├── references/
└── assets/
.commandcode/skills/test-plan/SKILL.md; for a personal one use ~/.commandcode/skills/. The directory name and the name field must match exactly.name: test-plan and a description that spells out when to use it: discovery only sees name and description, so the description is what requests get matched against. Optional fields like argument-hint and when_to_use can ride along.$ARGUMENTS pulls everything the caller typed, ${0} the first argument (skills count from 0), $name reads a declared named argument, and ${COMMANDCODE_SKILL_DIR} points at the skill's own folder for files under references/.!`git status --short` runs the command and drops its output into the prompt; a fenced block starting with ```! does the same for several commands. Kill switch: disableSkillShellExecution: true in settings.json./test-plan checkout-v2 guest flows, drop /test-plan inline anywhere in a sentence, or just describe the job and let Command Code suggest the matching skill.cmd skills add <owner/repo> pulls skills in (-s <skill-name> to pick one, --global), cmd skills list shows them (--debug), cmd skills remove <skill-name> uninstalls (--global --yes), and /skills browses from inside a session.File: .commandcode/skills/test-plan/SKILL.md
---
name: test-plan
description: Generate a risk-based test plan for a feature, story, or
pull request. Use when asked what to test, for coverage ideas, or
for a test plan before build, review, or release.
argument-hint: <feature> <extra context>
when_to_use: Coverage planning for features, PRs, and releases.
---
# Test plan generator
Repo state right now:
!`git status --short`
Write a risk-based test plan for: $ARGUMENTS
Feature under test: ${0}
1. Follow the house template in ${COMMANDCODE_SKILL_DIR}/references/template.md
2. Cover smoke, happy path, negative, edge, and regression risks.
3. Save the finished plan to ${COMMANDCODE_PROJECT_DIR}/docs/test-plans/${0}.md
Invoke: /test-plan checkout-v2 guest and logged-in flows
Here: ${0} is "checkout-v2", $ARGUMENTS is the whole argument line
| Placeholder | What it injects |
|---|---|
$ARGUMENTS | everything the caller passed to the skill |
$ARGUMENTS[N] or ${N} | argument N, counted from 0 |
$name | a declared named argument |
${COMMANDCODE_SKILL_DIR} | the skill's own folder: templates, scripts, references |
${COMMANDCODE_PROJECT_DIR} | the project directory you are working in |
${COMMANDCODE_SESSION_ID} | the current session id |
${COMMANDCODE_EFFORT} | the current effort level |
!`git status --short` | inline shell: the command runs and its output lands in the prompt |
```! fenced block | a whole block of shell commands, injected the same way |
| Task | Command or setting | Flags and knobs |
|---|---|---|
| Install skills from a repo | cmd skills add <owner/repo> | -s <skill-name> to pick one, --global |
| List installed skills | cmd skills list | --debug |
| Remove a skill | cmd skills remove <skill-name> | --global --yes |
| Browse inside a session | /skills | - |
| Load or skip at launch | cmd --skill <path> | --no-skills skips skill discovery entirely |
Tune in settings.json | skills array adds extra locations | disabledSkills turns off individual skills, disableSkillShellExecution: true blocks shell injection |
$1 is the first) but skills count from 0 (${0} is the first). Port a prompt from .commandcode/commands/ into a skill and every positional shifts: re-run the invocation and eyeball the expansion before the team adopts it.Skills are how a QA team stops re-teaching the agent every morning: the playbook lives in the repo, the priority order decides which copy wins, and the agent only reads the full instructions when a task actually matches.
Kill the myth first: no Command Code plan offers unlimited usage, so the real skill is spending a metered credit pool deliberately instead of hoping it never runs out.
cmd --list-models and match the model to the job, because mechanical work does not need your priciest option.cmd --list-models, pick a free or low-cost open-source model, and launch with cmd -m <model-id> --effort low. On Go you are on open-source models anyway, and selected models cost nothing./usage shows credits, plan, and usage metrics, so you know what a long triage session can afford before you start it, not after.cmd --plan or switch with /mode:plan. Plan mode is read only, so you settle the approach without burning edit turns on a direction you will throw away./context shows the window stuffed with old tool output, run /compact. Otherwise every new message pays to resend the whole bloated transcript.--max-turns 10 to anything unattended: it is the simplest guard against a confused agent looping through your pool.cmd -p "query": it prints the answer and exits, so nothing is left waiting for input that never comes.# --- in your shell ---
# pick the cheapest model that can do the job
cmd --list-models
cmd -m <free-model-id> --effort low --plan
# --- at the Command Code prompt, inside a session ---
/usage # credits, plan, usage metrics
/context # what is filling the window
/compact # stop resending the bloat
# --- back in your shell: guard-railed one-shot for CI ---
cmd -p "summarize the failing specs in the junit report" --max-turns 10
| Lever | Where | What it saves |
|---|---|---|
| Model choice | --list-models, -m, /model | The biggest lever: pricing spans free (selected models) to $10.00 per million input tokens |
| Reasoning effort | --effort low, /effort | Higher effort means more reasoning to pay for, so keep mechanical work on low |
| Compact context | /context, /compact | Stops paying to resend a bloated transcript with every single message |
| Plan mode | --plan, /mode:plan | Read-only thinking: no edit turns spent while the approach is still in doubt |
| Turn cap | --max-turns <number> | Kills a runaway agent loop before it drains the pool |
| One-shot mode | -p, --print | CI answers and exits instead of leaving an interactive session waiting |
| Usage check | /usage | Shows credits, plan, and usage metrics before you commit to a heavy run |
/extra are never throttled and never expire, but they are additional spend, not free headroom.A realistic month on the dollar plan: treat the $10 as about 15K requests on open-source models, default to a free model at --effort low, compact before long sessions, keep any single 5-hour push under 30 percent of the pool and any week under 60 percent, and bank an /extra top-up for release week, since it rolls over, never expires, and is never throttled.
One pass, end to end: a flaky login spec goes from triage to merged fix using the CLI, one custom slash command, one skill, an isolated worktree, and a CI one-shot.
/init writes AGENTS.md so the agent follows your repo conventions (test runner, folder layout, naming) before it touches a file. Commit it once and every session starts aligned./mode:plan, or launching with cmd --plan, is read only: you agree on the approach before a single edit lands..commandcode/commands/ becomes a project command, with ${1:-default} and ${@:2} argument templating baked in..commandcode/skills/ teaches the agent your triage or bug-report format once; progressive disclosure means only its name and description load until it is actually needed.cmd -w runs in a managed git worktree, so a refactor gone wrong never breaks your working checkout./review [pr-number] and /pr-comments handle the pull request, and cmd -p gives the pipeline a one-shot, non-interactive run.cmd, then /init: it writes AGENTS.md with your conventions. Commit that file so the agent, and every teammate's agent, plays by the same rules.cmd --plan "login.spec.ts is flaky: find the root cause and propose a fix". Read the plan, then switch to /mode:default only when you approve it..commandcode/commands/flaky.md with a triage prompt using ${1:-login.spec.ts} and ${@:2}; from then on /flaky checkout.spec.ts attach traces reruns the same triage on any spec..commandcode/skills/flaky-triage/SKILL.md (frontmatter needs name and description, and the directory name must match), or install a shared one with cmd skills add <owner/repo> -s flaky-triage. Invoke it with /flaky-triage.cmd -w login-fix: the agent works in an isolated managed worktree, and /worktree list shows what exists when you want to inspect or remove it./review 42 and sweep /pr-comments; in the pipeline call cmd -p with --max-turns so the job answers, exits, and never hangs.# --- at the Command Code prompt, once ---
# teach the repo its own rules
/init
# --- in your shell: scope the fix without spending edit turns ---
cmd --plan "login.spec.ts is flaky: find the root cause and propose a fix"
# reusable triage command: .commandcode/commands/flaky.md
# Rerun and triage flaky spec "${1:-login.spec.ts}", then draft a bug report: ${@:2}
/flaky checkout.spec.ts attach traces
# the QA playbook skill: .commandcode/skills/flaky-triage/SKILL.md
/flaky-triage login.spec.ts
# risky refactor in an isolated managed worktree
cmd -w login-fix
# close the loop: PR review, then a CI one-shot
/review 42
cmd -p "run the login suite and summarize failures" --max-turns 10
| Stage | Tool | Why it is there |
|---|---|---|
| Onboard | /init -> AGENTS.md | Repo conventions the agent follows in every session |
| Scope | --plan, /mode:plan | Read-only planning: no edits until you approve the approach |
| Repeat work | .commandcode/commands/flaky.md | One markdown file becomes /flaky with $1 arguments |
| Playbook | .commandcode/skills/flaky-triage/ | SKILL.md loads on match: name and description at startup, full body on activation |
| Risky change | cmd -w login-fix | Managed git worktree keeps your checkout clean |
| Ship | /review, /pr-comments, cmd -p | PR review in session, one-shot non-interactive runs in CI |
--max-turns on anything unattended. Every step in this loop spends credits from the same monthly pool, so the tab-five habits apply here too.That is the whole loop: conventions written once, a plan approved per task, the repetitive parts turned into a command and a skill, the scary parts isolated in a worktree, and cmd -p holding the line in CI.