Contextkit docs
17 skills. First Build course.
Every command. Full reference.
Install Contextkit, run the 7-module First Build course, understand all 17 skills, and use Claude Code or Codex as a development partner that asks first and ships clean.
01. Install and verify
Your lifetime license follows your email.
Use the exact email from your Dodo checkout. The CLI checks the payment record before writing anything into your project.
npx contextkit-cli@latest verify --email you@example.comnpx contextkit-cli@latestnpx contextkit-cli@latest --globalInstall asks a 4-question interview and writes the answers to .contextkit/seed.json. /start reads those answers so the agent never re-asks the basics.
--global installs into ~/.claude and ~/.codex so every project inherits the rules automatically.
After install: the 30-second version
- New project or feature: /start — asks 3-4 questions, writes CLAUDE.md and your roadmap.
- Every session after that: Opens with your position: project, progress bar, next step.
- New screen: /design-intake — decides the design on purpose, writes DESIGN.md.
- Building: /step → /check. Broke? /fix. Before you accept: /review.
- Too much code?: /lean. Looks AI-made? /design-check → /polish.
- Need web or docs?: /connect-mcp wires exa, context7, crawl4ai, or gemini.
- Going live: /secrets then /ship. Broke it? /recover. Confused? /explain.
02. Claude Code
Open Claude Code where you installed Contextkit.
claude/tourThe tour is your opening night. Doctor proves the engine is alive, optional MCP tools get wired, and the clarity lock fires live in front of you on a real prompt. After that, start any project with /start.
Three behaviors run automatically without you asking:
Two windows into what the engine is doing:
03. Codex
Same install. Open Codex.
codex$tourContextkit adds its rules and skills where Codex reads them. Start a project with $start, advance with $step. Every skill that has a Codex prefix uses $ instead of /.
strict mode, Codex gets a durable ask-first instruction plus a write warning — not a hard block. Claude Code keeps the physical locks. The written rules and planning flow are the guardrail in Codex.04. The 17 skills
A few skills, each deep.
Six clusters, one install. In Claude Code each skill is a /command. In Codex they're $command or plain words — whichever you type, the right skill picks it up.
The core
always on/startAsk first, build later$startAt the very start of any new app, feature, or change — before a single line of code.
Reads .contextkit/seed.json (the 4-question install interview) and any existing CLAUDE.md/AGENTS.md first. Asks clarifying questions in rounds of 3-4 multiple-choice options — never one at a time, never a wall of ten. Keeps going until the goal can be stated back with no gaps. Writes CLAUDE.md (human-readable source of truth), a Codex AGENTS.md summary, and journey.json (the machine-readable roadmap the session HUD reads). No code is touched until you approve the plan.
/tourOpening night — four live acts$tourYour very first session after installing. Run once.
Act 1: runs doctor with a cascade flag so engine checks light up one at a time — any red stops the tour and offers contextkit doctor --fix. Act 2: offers to wire the four starter MCP tools (exa, context7, gemini, crawl4ai) with one pick, proves each one works. Act 3: reads seed.json and confirms it in one line without re-asking. Act 4: fires the clarity lock on a real prompt live so you watch it work, then reveals the statusline cockpit and offers contextkit watch in a second pane.
Build cleanly
/stepOne step, then save your place$stepAfter /start produces an approved plan. Repeat after each working piece.
Reads CLAUDE.md and journey.json, marks the next step in-progress before building. Uses the laziest-first reuse ladder: skip speculative work, reuse existing code, use the standard library, use a native platform feature, reuse an existing dependency — only then write new code. Marks the step done, saves lastSession.note (shown at the next session's open), and hands off to /check. Never claims it works itself.
/checkProve it, don't promise it$checkAfter /step. Any time 'should work' appears.
Actually runs or opens the change and reports what it saw — the real user action (submit the form, click the button), real output. Checks edges beyond the happy path. Reports concrete evidence. If broken, hands to /fix rather than patching here.
/fixFind the real cause, don't whack moles$fixSomething is broken. An error message appeared.
Reproduces the bug on purpose first. Traces back to where it actually goes wrong, not where it first shows up. States the cause in one plain sentence, then makes one targeted change. 3-strikes rule: after three real attempts, stops and questions the approach instead of piling on more patches.
/reviewFresh eyes before you accept$reviewBefore accepting any diff. Before merging or committing a batch of work.
Reads the actual diff (not a summary) against the original goal in CLAUDE.md. Scans for secrets/keys in every changed file, half-done paths, sneaked scope, real bugs. Splits into must-fix and later. Never rubber-stamps.
/leanCut the code slop$leanCode looks over-built. Forty files for a two-line change. New dependency for a one-liner.
Works the reuse ladder in reverse: cuts speculative abstractions, one-use interfaces, dependencies doing what native features or a few lines would, fifty lines where one would do. Reads end-to-end first — the smallest change in the wrong place is a second bug. Re-checks it still works after cutting. Never cuts input validation, error handling, security, or accessibility.
Ship and survive
/shipGet it live$shipReady to deploy. First time going public.
Runs /secrets first — never skipped. Commits and pushes to GitHub. Connects to Vercel or Netlify, sets production env vars (the #1 reason deploys work locally but break live), deploys, then opens the live URL and tests it. Runs the celebrate script once the URL returns 200. Deploy and working are two different things — this confirms both.
/secretsSafe to ship?$secretsBefore anything goes public or gets deployed. Mandatory before /ship.
Greps source for key shapes: sk-, AKIA, AIza, ghp_, xox, -----BEGIN, password =, secret =. Checks git history, not just current files — a deleted key is still leaked. Verifies .env is gitignored and was never committed. Confirms no secrets in frontend/client code. Checks for unhashed passwords and wide-open routes. If a key was ever public: rotate it. Deletion is not enough.
/recoverGet back to when it worked$recoverSomething broke badly. Work seems lost. Git is scary.
Stops you making it worse first. Shows git status + log + reflog in plain English. Picks the gentlest fix: restore/stash before reset, revert before reset --hard, reflog before 'work is lost'. Explains exactly what any destructive operation will delete and gets an explicit yes. Lands on a working state then checkpoints it.
/explainUnderstand what you built$explainAfter the AI wrote something you can't read. Before a code review.
Reads the actual code (not the filename). Gives the shape in 2-3 sentences: what it does, how pieces fit, what calls what. Points at the few lines that do the real work and anything risky. Never narrates line-by-line. Uses one analogy if it makes it click. Checks it landed and invites the next question.
Don't look AI-made
37-tell detector/design-intakeDecide the look on purpose$design-intakeBefore building any UI. Before the first screen. If there's no DESIGN.md yet.
Asks 2-3 real questions per round — not confirmation questions. Round 1: what it is and who it's for, brand vs product surface. Round 2: three personality words, named references and anti-references (what it must NOT feel like — the most useful answer you can give). Round 3: color strategy, typeface direction (rejects Inter/Geist/Roboto by default), motion energy. Writes DESIGN.md: your design source of truth including a Creative North Star, named anti-references, and token rules. Never designs from the prompt alone.
/design-checkHonest second pair of eyes$design-checkAfter building any screen. Before calling design done.
Looks at the actual rendered screenshot, not the code, at three widths (390/768/1440). Pulls intent from DESIGN.md. Runs detect-slop.mjs for measurable tells (P1 exits 1), then does a holistic pass: squint test for hierarchy, contrast ≥4.5:1, spacing rhythm. Scores 0-40 honestly — most real UIs land 20-32. Tags each issue P0-P3. Lists the top 3 highest-impact fixes. Reports only. Editing is /polish.
/polishFix the slop, by the root$polishAfter /design-check finds issues. Any time output looks AI-made.
Reads DESIGN.md first — refuses to polish without a design system, runs /design-intake instead. Classifies each issue: missing token (add to DESIGN.md, then use it) / one-off deviation (snap to existing token) / conceptual misalignment (rework toward the North Star). Runs detect-slop.mjs and works the full list: swap reflex fonts, kill gradient text, drop violet decorative gradients, fix contrast, put spacing on a 4pt scale, cut em-dashes from copy. Re-runs until 0 P1 tells remain and rescores.
Reach further
/connect-mcpPlug real tools into your agent$connect-mcpThe agent is guessing from stale training data. You need live web search, current library docs, or a real browser.
Asks what you actually need before adding anything (Rule 0). The starter four: exa (web search + docs, needs a free EXA_API_KEY), context7 (current library docs piped into the agent, no key), gemini (vision — lets the agent check screenshots and designs, needs a Gemini key), crawl4ai (reads a specific site into clean text, no key). Adds the right JSON block to .mcp.json for Claude Code, Codex, or Antigravity. Proves each one works with a real call before moving on. Never adds servers 'just in case'.
/claude-tipsUnlock the 90% you're not usingSomething feels clunky. You're doing manually what Claude Code has a built-in for.
Matches one feature to your actual pain: re-explaining the project every session (CLAUDE.md), lost context (/clear, /compact), it ran off and built the wrong thing (Shift+Tab plan mode), repeating the same workflow (custom skill in .claude/skills/), visual bug (paste screenshot), same rule every time (hook in settings.json). Recommends the one that fixes your problem, not a product manual. Full list in reference/claude-code-cheatsheet.md.
/codex-tipsUnlock Codex built-ins you're missing$codex-tipsSomething in Codex feels clunky. You're repeating yourself across tasks.
Same philosophy as /claude-tips but Codex-specific: re-explaining rules (AGENTS.md in the repo or ~/.codex/AGENTS.md), wanting a plan before edits (Plan mode), repeating a workflow (SKILL.md in .agents/skills/), needing a check every time (.codex/hooks.json), needing current docs or a browser (MCP). Gives the five must-knows: AGENTS.md, Plan mode, skills, MCP, and hooks. Points to /help, /hooks, /mcp for exact interface since Codex updates often.
Voices
opt-inteachingTeaching voiceWhen you want the agent to explain what it does and why as it goes.
Switches output to a teaching tone. After each meaningful code change, a short card appears: WHAT IT DOES in your own words, WHY THIS WAY (the choice made and the road not taken). Teach-once aware — checks .contextkit/concepts.json and never cards the same concept twice. Holds a 10-minute cooldown and skips trivial edits. Toggle: contextkit cards on, or /config > Output style.
buddyBuddy voiceWhen you want a warmer, more conversational tone without losing directness.
A softer register that still leads with the point, recommends rather than lists options, and pushes back when needed. Direct stays the default. Switch via /config > Output style. Switching back to direct is always one command.
05. First Build course
From empty folder to your own live app — understood end to end.
Not a demo project. You bring the idea; the course brings the rails. 7 modules, hand-written, taught once at the moment they matter, and remembered in .contextkit/concepts.json so they never repeat.
contextkit learnWorks in Claude Code, Codex, and any agent that can read files. Resume from anywhere — the session greeting knows where you left off.
Your Idea Becomes a Plan
From 'I have an idea' to 'my app exists on my computer and I have a plan I understand.' No code yet — just the idea interrogated, structured, and written down. You leave with an approved plan and CLAUDE.md written.
Your First Page
The blank terminal disappears. Your first page goes from plan step to running in a browser. You see the code, understand what it does, and make your first real checkpoint commit.
Where Your Data Lives
The most important lesson in the course. You watch your own data travel from your browser form to the server to the database and back, animated inside your own running app in your own words. Data stops being abstract.
Make It Do More
Features added one step at a time: /step then /check then commit. You practice the loop until it feels natural. The clarity engine catches a vague request in front of you.
When It Breaks (And It Will)
The app breaks on purpose, twice. You fix it both times using /fix. Reading errors is the skill that separates people who ship from people who quit. You leave knowing you can handle it.
Ship It
/secrets then /ship. Your app goes live on a real URL, backed by a real database, code on GitHub. You open the URL yourself and confirm it works. The ship celebration runs.
Graduation
Defense Mode asks five questions from your own real code. You explain what you built in your own words. You leave with a shareable ship page and the tutor that stays with you in every future project.
Defense Mode
contextkit defendA 10-minute oral defense of your own code. 5 questions generated from YOUR real files — never a generic bank. No score, always stoppable. Works in any contextkit project, with or without the course. Updates your concept graph based on your answers.
App Map
say "map my app"Reads your real code and draws one page showing how your app fits together — in your own words, at a scale a beginner can hold in their head. Every node comes from code that actually exists. Works in any contextkit project. Trigger with: "map my app" or "how does my app fit together".
Knowledge graph
contextkit progressEvery lesson and course beat records concepts into .contextkit/concepts.json — with connections between concepts and a grasped/needs-revisit flag. See it any time with contextkit progress or contextkit progress --map for a visual browser view.
Claude Code power map
contextkit powers20 Claude Code powers mapped. Shows which you've been taught vs not yet — the tutor introduces each one at the moment you actually need it, once, then never repeats it. Most people use 3 of 20 by default.
06. CLI reference
Everything contextkit can do from your terminal.
Run these in your terminal, not inside Claude Code or Codex. They control engine state, toggles, and project tools.
contextkit verify --email you@example.comConfirm your lifetime license before installing.
contextkit statusCurrent engine toggles, project roadmap position, and next step.
contextkit doctorGreen/red self-check of the entire hook engine. Add --fix to repair node paths and re-wire hooks.
contextkit clarity strict|relaxed|offHow hard ask-first is enforced. strict blocks vague builds until the goal is confirmed. relaxed asks but never blocks.
contextkit tutor on|offIn-the-moment coaching on Claude Code power moves. Teaches each once at the right moment, then never repeats it.
contextkit cards on|offLearning cards after meaningful edits: WHAT IT DOES + WHY THIS WAY. Teach-once aware — never cards the same concept twice.
contextkit slop notify|strict|offSlop scan mode after edits. notify names open tells at wrap-up. strict blocks the agent from finishing while P1 tells are open.
contextkit statusline on|offWires the navigator into Claude Code's own status bar: project, progress bar, step N of M, asking-first light while a clarity round runs.
contextkit recap [on|off]Re-show the last session's receipts card. Toggle whether it appears at session end when earned.
contextkit watchLive HUD in a second terminal pane: roadmap, clarity/tutor status lights, agent activity feed, animated.
contextkit powersThe 20-power Claude Code map. Shows which powers you've been taught vs not yet. The tutor teaches each one at the moment you need it.
contextkit learnStart or resume First Build — the 7-module guided course from empty folder to your own live app.
contextkit progressYour knowledge graph: concepts grasped, worth a re-visit, course position. Add --map for a visual version in your browser.
contextkit defendDefense Mode: a 10-minute oral defense of your own code. 5 questions generated from YOUR real files. No score, always stoppable.
contextkit celebrate --url <url>The ship celebration with mascot + URL in a box. Runs automatically from /ship.
contextkit danceThe bot-2 breakdance. Runs until Ctrl+C. Also plays when a step ships via /ship.
contextkit remove [--global]Clean uninstall. Unwires hooks, removes skills and engine. Keeps CLAUDE.md, AGENTS.md, and .contextkit/ — those are yours.
07. Engine toggles
Turn any behavior on, off, or tuned.
Every toggle has a sensible default. Nothing needs changing to start — adjust only what doesn't fit your workflow.
contextkit clarity strict|relaxed|offstrict = hard lock in Claude Code; advisory in Codex
contextkit tutor on|offteaches each Claude Code power move once at the right moment
contextkit cards on|offWHAT + WHY card after meaningful edits, teach-once aware
contextkit slop notify|strict|offnotify = names tells at wrap-up; strict = blocks finish
contextkit statusline on|offClaude Code only; never replaces your own statusLine
contextkit recap on|offfires at session end only when it actually earned something
08. Daily workflow
The loop that ships real things.
/startQuestions first. Plan written. No code until you approve./step → /check → commitSmallest thing that works, proved, checkpointed./fixRoot cause only. 3 strikes, then rethink the approach./reviewDiff vs goal, secrets scan, must-fix vs later./leanCut what a few lines or a native feature would do./secrets → /shipKeys audit, then deploy with prod env vars verified./design-check → /polishHonest score, root-cause fixes, 0 P1 tells./recoverReflog first. Gentlest move. Explicit yes before discard./explainShape + key parts. One real path. Never line-by-line./claude-tipsMatch one built-in to your actual pain point.09. Troubleshooting
Common problems, direct fixes.
Verification says no purchase found
Check the email spelling — use the exact address from Dodo checkout. Wait a minute after payment for the webhook to record the completed payment. If it still fails, send your checkout email and payment ID to support@contextkit.dev.
The engine went quiet — clarity lock stopped firing
Hooks are wired to an absolute node path at install time. If node moved or was upgraded, run: contextkit doctor --fix to rewire them. Then run /tour to confirm all lights are green.
AGENTS.md already existed — contextkit didn't install
From v0.4+, the installer merges the core rule into your existing AGENTS.md as a marker-fenced section. It's idempotent (safe to reinstall) and cleanly removable. Run contextkit doctor to check the state.
Upgrading to a new version
Re-run npx contextkit-cli@latest in the project. Upgrades in place and never touches your CLAUDE.md, AGENTS.md, or .contextkit/ roadmap. Run contextkit doctor after to confirm the engine is green.
Removing contextkit
Run contextkit remove (or contextkit remove --global). It unwires hooks, removes skills and the engine, and strips the contextkit section from AGENTS.md. Your CLAUDE.md, personal AGENTS.md content, and .contextkit/ roadmap are left untouched — those are yours.
contextkit watch isn't showing anything
Run it in a second terminal pane inside the project folder where contextkit is installed. The HUD reads from .contextkit/journey.json — if no project has been started with /start yet, the roadmap section will be empty until you run /start.
The statusline cockpit isn't appearing
Run contextkit statusline on. If you already have your own statusLine in .claude/settings.json, contextkit will not overwrite it. Remove that entry first, then run contextkit statusline on. The cockpit appears in the next Claude Code session.
Still stuck?
Send your checkout email and a description of the problem to support@contextkit.dev. Include the output of contextkit doctor if you can.