You're in

The complete kitstarter reference.

kitstarter is a kit of Claude Code skills that makes your AI agent ask before it builds, build the smallest thing that works, prove it runs, and stop looking AI-made. Install is one command. Below is every skill, hook, and voice in depth. It works in Claude Code, and the core rule travels to Codex and Antigravity too.

New here? Install the kit, then open Claude Code and run /tour. It onboards you by asking questions, which is the whole point of the tool. After that, /start any new project.

Install

One command, in any project. You need Node 18+ and Claude Code.

# the core: the ask-first, direct agent
npx kitstarter-cli

# everything: the design tools, the slop detector, all the skills, hooks, and voices
npx kitstarter-cli --full

# globally, into ~/.claude, for every project at once
npx kitstarter-cli -g --full

The installer asks for the email you bought with to confirm your purchase, then installs. A network hiccup or a non-interactive shell never blocks the install. After it finishes, open Claude Code and run /tour.

Used a different email? Re-run and enter the email on your Stripe receipt. Prefer a reusable command? Install the CLI once with npm install -g kitstarter-cli, then run kitstarter init -g (global) or kitstarter init (this project only). Re-running is idempotent, so it is always safe.

What you installed

kitstarter comes in two layers: a small core that is always on, and an add-on pack you get with --full.

The core is the product in one rule. It writes a single rule to AGENTS.md at your project root that makes the agent ask before it acts and be direct, on every task, without being asked. It also installs /start, /tour, and a session greeting that prints the rules when a session begins. Because the rule lives in AGENTS.md, it works in any agent that reads that file, not just Claude Code.

  • The ask-first, direct rule in AGENTS.md.
  • /start and /tour.
  • The session-start greeting hook.

The add-on pack (--full) adds the rest of the skills, the extra hooks, and the voices:

  • Build cleanly: /step, /check, /fix, /review, /lean.
  • Loop engineering: /ks-loop, /ks-iterate.
  • Ship & survive: /ship, /secrets, /recover, /explain.
  • Don't look AI-made: /design-intake, /design-check, /polish, plus the slop detector (bin/detect-slop.mjs) and the 37-tell anti-slop catalog.
  • Reach further: /connect-mcp, /claude-tips.
  • Three extra hooks: the auto anti-slop scan, the destructive-command warning, and the done-means-proven nudge.
  • Two voices: teaching and buddy (opt in via /config; the default stays direct).

That is 18 skills in total: 2 in the core, 16 in the add-on pack. The loop skills are named /ks-loop and /ks-iterate (prefixed) because /loop is a built-in Claude Code command.

Core (always on)

The two skills that ship with the core. Both run on the same principle: ask first, so the agent never builds the wrong thing fast.

/start

Ask-first kickoff. No code until there is an approved plan and a CLAUDE.md.

What it does

Used at the very start of any new app, feature, or change, before a single line of code. It interrogates you with clarifying questions until the goal is genuinely clear, then writes a short plan and a CLAUDE.md source-of-truth and gets your approval. The hard rule: no code in this skill. It ends with an approved plan and a written CLAUDE.md, nothing built.

When to use it

Beginning anything new, or any time you catch yourself about to just start coding. Triggers include /start, "brainstorm", "help me think through this", "plan this", "new project", "let's build", and "I want to make".

How it works
  • Looks before it asks: reads any existing CLAUDE.md, glances at the project, and says what it sees in one sentence.
  • Interrogates one question at a time, each with a recommended default, covering: what it is, who it is for and what they do with it, what done looks like, what is in and out of scope, the stack and where it runs, and the tricky or sensitive parts. It pushes past vague answers.
  • Reflects the goal back in plain English and waits for a yes.
  • Writes the plan as small, individually checkable steps and gets an explicit go.
  • Writes CLAUDE.md from the kit template: what, who, done, stack, scope, and the kitstarter rules.
  • Hands off: build one step at a time, prove each one, review the diff.
Example

You say "I want to build a tip-splitting app." Instead of scaffolding a guess, it asks one question at a time until the goal is concrete, then plans it.

What it produces

An approved step-by-step plan and a written CLAUDE.md in the project root, the file every future session reads first.

/tour

The first-run setup wizard. It onboards you by asking, not by lecturing.

What it does

Run it right after installing, or anytime, to get set up. It welcomes you in one line, then asks six questions one at a time, each with a recommended default, to understand your project. There is no feature tour and no list of skills: the asking is the demo, so you feel how the whole tool works.

When to use it

Right after install, or whenever you want to get oriented. Triggers include /tour, "getting started", "set me up", "how do I start", and "onboard me".

How it works
  • One line of welcome, then questions one at a time, each with a default.
  • Asks: what you are building, who it is for, how much you already know (which sets how much it explains versus assumes), what the first useful version looks like, what is tripping you up most, and how much time a day you have.
  • Lets each answer steer the next question, and pushes past a vague answer once.
  • Closes the loop: reflects your project back in plain English, fixes anything you correct, then offers the next move: "Want me to run /start?"
Example

Fresh from install, you run /tour. It asks "What are you building?" and proceeds one question at a time until it could restate your project with no gaps.

What it produces

A shared, gap-free understanding of your project and a natural handoff into /start. It does not write a file.

Build cleanly

The build loop that keeps a project from turning into spaghetti: one step, prove it, save it, and cut the slop as you go.

/step

Build one step of the plan, prove it, checkpoint it, then stop.

What it does

After /start has produced an approved plan and a CLAUDE.md, this builds exactly one step at a time, the laziest way that works. It stays safe around destructive commands, hands off to /check for proof, then commits the working step as your undo button. One step, prove it, save it, repeat.

When to use it

After /start, to actually build. Triggers include /step, "next step", "build the next part", "let's do the next one", and "keep going".

How it works
  • Reads CLAUDE.md first. If there is no plan, it stops and tells you to run /start. Then it finds the next single step.
  • Names the step and what done looks like for that step only.
  • Builds just that step using the reuse ladder, stopping at the first rung that holds: does it need to exist, is it already in the project, does the language or standard library do it, is there a native platform feature, does an existing dependency solve it, can it be one line. Only then writes minimal code.
  • Stays safe: never runs a destructive command without asking and explaining it in plain English.
  • Hands off to /check for proof instead of claiming done itself.
  • Once confirmed working, commits with a clear message ("add login form", not "update"). Never commits on top of broken code.
Example

You say "next step." It builds just the login form, the minimal version, then tells you to run /check before saving.

What it produces

One small, working, committed change: a checkpoint you can always roll back to.

/check

Prove a change works with real evidence. "Should work" is banned.

What it does

It actually runs, opens, or clicks the thing and reports what it saw, with its own eyes or the browser's, not what the code should do. It tests the real user action, not just that the code compiles, and it checks the edges too.

When to use it

After /step, or whenever you want proof a change is real. Triggers include /check, "does it work", "verify this", "is it done", and "test it".

How it works
  • Picks the real test: the actual thing the change does for the user. A page gets opened and clicked; a script gets run with real input; a data change gets queried back.
  • Shows the evidence concretely: what it did and what it saw, not "it should handle that now".
  • Checks the edges, not just the happy path: empty input, the wrong password, a slow network, a long name.
  • If it is a screen, it also runs /design-check so it does not just work but does not look AI-made either.
  • If it is broken, it hands to /fix rather than patching here.
  • If it passes, it says so plainly and clears you to checkpoint.
Example

"Opened the page, typed an email, hit submit, saw the success message and the new row in the database. Empty email shows the validation error."

What it produces

A plain pass or fail report backed by the evidence of what was actually observed, with a clear next move.

/fix

Find the real cause before changing anything. No whacking moles.

What it does

It breaks the patch-on-patch cycle. No change until it can say, in one sentence, why it is breaking. One change per hypothesis, then it proves the fix. A pile of "let me try this" is exactly what turns a small bug into a tangle.

When to use it

Anything broken or behaving wrong. Triggers include /fix, "it's broken", "this isn't working", "there's a bug", "error", or pasting an error message.

How it works
  • Reproduces the bug on purpose and notes the exact steps. If it cannot reproduce it, it cannot know it fixed it.
  • Finds the real cause: reads the whole error, traces back to where it actually goes wrong, and states the cause in plain English.
  • Makes one change for one hypothesis, not five things at once.
  • Proves the fix through /check: reproduces the original steps, confirms it is gone, and confirms nothing nearby broke.
  • The 3-strikes rule: after three real failed attempts, it stops and questions the approach itself rather than patching again.
  • Saves it: checkpoints once fixed and checked.
Example

A page errors on load. Instead of a try-this loop, it traces to "the data has not loaded yet when it tries to render," changes that one thing, and re-checks.

What it produces

A one-line root cause, a single clean change, and a verified, committed fix.

/review

Fresh eyes on the actual diff, against the actual goal, before you accept it.

What it does

The AI wrote it, so the AI is the worst judge of it. This is the second pair of eyes you do not have. It reads what actually changed, the real diff and not a summary, holds it against the goal in CLAUDE.md, and catches what is risky, half-done, or off-scope before it lands.

When to use it

Before you accept, merge, or commit a batch of work. Triggers include /review, "is this good", "should I accept this", and "look this over".

How it works
  • Gets the diff, the real edits, because summaries hide bugs and diffs do not.
  • Holds it against the goal: opens CLAUDE.md and the step's goal, and asks whether the change does that, all of it, and only it.
  • Runs the checklist: does it do the job; anything risky (secrets or keys in code, plain-text passwords, deletable data, anything a stranger could abuse) flagged first and loudest; anything half-done (an erroring path, a left-in TODO, a silent failure); did it sneak in scope.
  • Sorts findings into must-fix (bugs, risks, half-done) and later (style, polish). Fixes the must-fixes now and surfaces judgment calls instead of deciding silently.
  • Hands the decision back: you recommend, the user accepts. It never rubber-stamps.
Example

It catches "this stores the password in plain text, line 14, that has to change" before you merge, rather than saying "looks great!"

What it produces

A prioritized review, must-fix versus later, with must-fixes fixed and any judgment calls surfaced for your decision.

/lean

Cut AI code slop: the over-building, boilerplate, and 50 lines where 1 would do. Deletion over addition.

What it does

The code-side twin of /polish. AI does not just make UIs look generated, it makes code read generated: it wraps a native input in a component, writes an interface for one implementation, adds a dependency for a one-liner. This finds that over-building and cuts it by the root cause, after it understands the flow.

When to use it

When code feels over-built. Triggers include /lean, "this is over-built", "too much code", "simplify this", "did the AI over-engineer this", and "yagni".

How it works
  • Understands first: reads the code end to end before removing anything. Lazy about the solution, never about understanding.
  • Cuts down the reuse ladder in reverse: speculative work gets deleted; a one-use abstraction gets inlined; "for later" scaffolding gets dropped; a dependency doing a few lines' work gets removed; fifty lines become one; clever becomes boring.
  • Lists each over-build with the leaner version beside it, and cuts by the root cause: one guard in the shared function beats a guard in every caller.
  • Never simplifies away input validation at trust boundaries, error handling that prevents data loss, security, accessibility basics, or anything you explicitly asked for.
  • Proves it still works with /check. Less code that is broken is not lean, it is broken.
Example

"This 40-line cache class becomes one line of lru_cache."

What it produces

A smaller diff that does the same thing, re-checked to confirm it still works, with a line or two on what was cut and when to add it back.

Loop engineering

Tight build, run, fix loops that converge on working code instead of one giant guess. Named /ks-loop and /ks-iterate (prefixed) because /loop is a built-in Claude Code command.

/ks-loop

Grind a stubborn build-run-fix cycle to working code. Smallest change, run it for real, read the actual output, fix, repeat.

What it does

The number one way AI wrecks a project is the one giant guess: a big change, an assumption that it works, and a "done." This runs the opposite. A tight loop of smallest change, run it for real, read what actually happened, fix the real cause, and checkpoint the moment it is green, repeated until the thing genuinely works.

When to use it

A feature that needs several passes, a stubborn bug, or getting a broken thing or failing tests to pass. Triggers include /ks-loop, "loop on this", "keep going until it works", "get this passing", and "grind this out".

How it works
  • Smallest next change that moves toward working, not a rewrite.
  • Runs it for real and captures the actual output or error. Never assumes it passed.
  • Reads what actually happened and diagnoses the real cause, not a guessed one.
  • Makes the smallest fix for that cause.
  • Checkpoints the moment a step works, so the next loop has an undo button.
  • The stop rule: after about three failed attempts at the same thing, it stops, re-reads the goal, and forms a different hypothesis instead of thrashing.
Example

Tests are red. It changes one thing, runs the suite, reads the real failure, fixes the actual cause, re-runs, and commits the moment they go green.

What it produces

Working code you have watched work, committed, with one line per meaningful loop instead of a wall of every attempt.

/ks-iterate

Improve something that already works, in small reversible passes, without breaking it.

What it does

Something already works and you want it better: cleaner, more robust, nicer. The trap is the big rewrite that breaks the thing that worked. This improves in small, reversible passes instead, each one keeping it working.

When to use it

Refining a design, handling edge cases, tightening code, or polishing something that already runs. Triggers include /ks-iterate, "make this better", "next iteration", "harden it", and "another pass".

How it works
  • Names the goal of this pass in one sentence: what is better after it.
  • Breaks the improvement into small moves it can verify one at a time.
  • Makes one change, then confirms it still works and is actually better, before the next.
  • Checkpoints each good pass, so the next is safe to try.
  • Prefers deleting and simplifying over adding, and reverts a pass that makes it worse.
Example

A working form. One pass adds empty-state handling, verified and committed; the next tightens the spacing, verified and committed.

What it produces

A still-working, measurably better version, committed pass by pass.

Ship & survive

Getting it live, keeping it safe, getting back when it breaks, and finally understanding what you built.

/ship

Get the project live on the internet, set production env vars, and prove the URL actually works.

What it does

Putting their thing on the internet is the moment a vibe coder waits for, and the one they most often cannot do alone. This deploys the project, sets production environment variables on the host, and hands back a working URL. It runs /secrets first as a safety gate, and it proves the live site works rather than trusting "deployed".

When to use it

When you are ready to go live. Triggers include /ship, "deploy", "put it online", "make it live", "go live", and "host it".

How it works
  • Asks first: where it should live (default Vercel for React or Next, Netlify for a static site), whether it is in git and pushed to GitHub, and what it needs to run in production (keys, database URLs, any .env values).
  • Safety gate: runs /secrets first, so it never ships a leaked key or a committed .env.
  • Commits and pushes the working state to GitHub, since deploys come from there.
  • Connects the repo to the host and lets it auto-detect the framework.
  • Sets the production env vars on the host, the number one reason a deploy works locally but breaks live.
  • Deploys, gets the URL, then proves it is live: opens the URL and does the real action. A blank page or a 500 is almost always a missing env var or a build error, so it reads the deploy log.
Example

You say "deploy this." It runs /secrets, pushes to GitHub, imports the repo to Vercel, sets the env vars, then opens the live URL and confirms the form submits.

What it produces

A live, verified URL: "It's live at X. I opened it and Y works."

/secrets

The pre-public safety check for leaked keys, exposed .env files, and the obvious security holes.

What it does

The fastest way a vibe coder gets burned is a real API key in a public repo, a committed .env, or a secret key shipped in the frontend. Public is forever, so this runs before anything goes public, and before /ship. It scans the code and the git history, reports worst-first, and gives the fix for each.

When to use it

Before going public or deploying. Triggers include /secrets, "is this safe to ship", "did I leak a key", "security check", and right before /ship.

How it works
  • Asks first: is this about to go public or deploy, and what does it handle (logins, payments, user data all raise the bar).
  • Scans for leaked secrets in code, grepping the usual shapes (sk-, AKIA, AIza, ghp_, xox, -----BEGIN, password =, secret =).
  • Checks git history too, not just current files: a key you deleted still lives in old commits.
  • Checks .env exposure (is it gitignored, was it ever committed, is .env.example clean), secrets in frontend or client code that ship to every visitor, plain-text passwords, and wide-open routes (no auth, raw input into SQL or shell, CORS set to * on something private).
  • Ranks the findings with a one-line fix each. If a key was ever public or committed, it tells you to rotate it, since deletion does not un-leak it.
  • Green-lights only when the real risks are handled, then hands to /ship.
Example

It finds a service key in client-side React and tells you to move it server-side and rotate it before going live.

What it produces

A ranked risk report with fixes, and a clear green light (or not) before /ship.

/recover

Calmly get back to a working state when git is scary, with the least destructive move that works.

What it does

The worst moment: it was working, now it is not, and you are scared to touch git in case you make it worse. This stays calm, finds the last good state, and gets there with the gentlest move. It reassures first and acts carefully, because panic-deleting is what actually loses work.

When to use it

After something broke badly, work seems lost, or a merge went wrong. Triggers include /recover, "I broke everything", "I lost my work", "undo this", "git is broken", "merge conflict", and "get me back to when it worked".

How it works
  • Asks one or two quick questions: what happened, and when it last worked.
  • Stops making it worse, then looks at where things stand with git status, git log --oneline -10, and git reflog (the safety net that remembers even "lost" states), explained in plain English.
  • Picks the gentlest fix: git restore or git stash for messy uncommitted changes; git revert over git reset --hard for a bad commit; git reflog to recover a vanished commit; a file-by-file walkthrough or git merge --abort for a conflict.
  • Confirms before anything destructive, explaining exactly what would be lost.
  • Lands on a working state, then checkpoints it so this exact moment is safe.
Example

"I lost my last commit." It checks git reflog, finds the state, and gets you back to it, no work thrown away.

What it produces

A restored working state, committed so the recovered moment is locked in.

/explain

A plain-English readout of what the AI actually built: the shape and the parts that matter, never line-by-line.

What it does

A vibe coder ships code they cannot read, then freezes in a review or cannot debug it. This makes you understand it, not by reading every line, but by seeing the shape and the parts that matter, the needle and not the haystack, with jargon defined inline.

When to use it

When you do not understand the code. Triggers include /explain, "what does this do", "walk me through this", "I don't get this code", and "explain what the AI just wrote".

How it works
  • Asks first: what to explain (this file, this feature, the whole project, this error) and your level, so it pitches it right.
  • Reads the actual code instead of guessing from the filename.
  • Gives the shape first: in two or three sentences, what it does and how the pieces fit, what calls what. The map before the streets.
  • Speaks plain English and defines jargon inline the first time (a "prop" is just a value you hand a component).
  • Points at the parts that matter, the few lines doing the real work and anything risky or surprising, and skips the boilerplate.
  • Never narrates line-by-line for anything big; it traces one real path end to end, adds a small analogy if it helps, and checks it landed.
Example

"Explain the auth flow." You get the map (login, then a token, then the protected route) and the two or three lines that actually matter, not a wall of text.

What it produces

A plain-English mental model of the code and where it could bite, so you could say in your own words what it does.

Don't look AI-made

The anti-slop trio. Decide the look on purpose, get an honest review of it, then fix the tells by the root. Backed by the 37-tell catalog and the slop detector.

/design-intake

Decide the look on purpose and write DESIGN.md, before designing anything.

What it does

The reason vibe-coded apps look AI-made is that nobody decided how they should look, so the AI reached for its defaults (Inter, a violet gradient, a grid of cards). This is the design twin of /start: it interviews you, then writes a DESIGN.md source-of-truth so every screen after it has a spine.

When to use it

Before you build UI without a DESIGN.md. Triggers include /design-intake, "set up the design", "what should it look like", and "design system".

How it works
  • Interviews rather than confirms: 2 to 3 real questions per round, waiting for real answers, never generating a design from the original prompt alone.
  • Round 1, what this is: a brand surface (where the design is the pitch) or a product surface (where it gets out of the way), who uses it and to do what, and what they should feel.
  • Round 2, the taste: three personality words, named references and anti-references ("not generic SaaS" is the most useful answer), and accessibility or brand constraints.
  • Round 3, the tokens, each with a recommendation: a color strategy and anchor hue, a type direction that rejects the reflex picks (Inter, Geist, Roboto), and motion energy (default subtle).
  • Writes DESIGN.md from the template: the tokens, the Creative North Star (a one-line metaphor for the feel), the anti-references verbatim, and the Named Rules. Scan mode reads existing colors and fonts first; seed mode marks guesses with <!-- SEED -->. It never overwrites an existing DESIGN.md without asking.
Example

It asks "is this a brand page or a product app?" and pushes for named anti-references, so the result has a deliberate look instead of the default one.

What it produces

A DESIGN.md you could hand to anyone and get a consistent, non-generic result.

/design-check

An honest, independent design review. Does it look intentional, or AI-made? It reports, it does not edit.

What it does

The design reviewer a solo builder does not have. It looks at a real screenshot, pulls intent from DESIGN.md, runs the slop detector plus a holistic look, scores the screen, tags every issue, and names the top fixes. Independence is the whole value, so it reports only; editing is /polish.

When to use it

After building any screen. Triggers include /design-check, "does this look good", "does it look AI-made", "review the design", and "check the UI".

How it works
  • Gets a real screenshot, captured at three widths (390 phone, 768 tablet, 1440 desktop) if it can drive a browser, otherwise asks you to paste one. It reviews pixels, not code.
  • Pulls the intent and anti-references from DESIGN.md. If there is none, it says so and suggests /design-intake.
  • Runs two passes: the slop scan (node bin/detect-slop.mjs <path>, which flags the measurable tells with file:line and exits 1 on any P1) plus the catalog tells a script cannot catch; and the holistic look (the squint test, body contrast at least 4.5:1, rhythmic spacing), optionally sharpened through gemini-vision.
  • Scores it honestly out of 40 across hierarchy, type, color, spacing, restraint, and polish. Most real UIs land 20 to 32, and it does not inflate.
  • Tags each issue P0 to P3 and lists the top 3 highest-impact fixes, concrete.
  • Respects intent: a deliberate, DESIGN.md-confirmed choice is skipped, with a reason.
Example

"The body text is gray on cream, that is 3.1:1, it fails and it reads as AI-default, here is the fix."

What it produces

An honest 0 to 40 score, P0 to P3 tagged issues, and the top 3 fixes, ending with "Want me to fix these? Run /polish."

/polish

Fix the things that make a screen look AI-made, from DESIGN.md and the detector, by the root cause not by decoration.

What it does

/design-check found what is wrong; this fixes it the right way. The trap is decorating a screen that is actually just missing a design system, so it fixes causes, not symptoms, and reaches the result by subtraction more than addition.

When to use it

After /design-check finds issues. Triggers include /polish, "make it look better", "fix the design", and "make it not look AI-made".

How it works
  • Before touching a pixel: reads DESIGN.md (and runs /design-intake first if there is none), and does not polish a feature that does not work yet (/check it first).
  • Classifies each issue as a missing token (add it to DESIGN.md, then use it), a one-off deviation (snap it back to the token), or a conceptual misalignment (rework it toward the North Star). Fixing the root is what stops the slop coming back on the next screen.
  • Runs node bin/detect-slop.mjs <path> and works the list: the reflex font, gradient text, the side-stripe border, the violet gradient, contrast (at least 4.5:1, in OKLCH), a 4pt spacing scale, buzzwords, and em-dashes. Then the catalog tells a script cannot see.
  • Checks every interactive element has all its states: default, hover, focus (visible), active, disabled, loading, error.
  • Stays restrained: one accent used rarely, no unrequested motion or glow, prefers-reduced-motion respected. The fix for "looks AI-made" is usually less, not more.
  • Proves it: re-runs the detector to 0 P1, re-screenshots, and re-runs /design-check, expecting the score to go up.
Example

It swaps Inter for a real display face, kills the gradient text, replaces the border-left stripe, fixes the contrast, and re-runs the detector until it reports 0 P1.

What it produces

A screen you cannot tell was AI-assisted, with the detector at 0 P1 and a higher /design-check score.

Reach further

Give the agent real outside tools, and unlock the parts of Claude Code you are not using yet.

/connect-mcp

Plug real outside tools into your agent via MCP: web crawling, web search, live docs, a browser. Portable across Claude Code, Codex, and Antigravity.

What it does

MCP (Model Context Protocol) is a standard plug that lets your agent use outside tools: crawl a website, search the web, read a library's current docs, or drive a browser, instead of guessing from training data months old. The same servers work across Claude Code, Codex, and Antigravity, so this is portable, not Claude-only.

When to use it

When the agent needs live web, docs, or a browser. Triggers include /connect-mcp, "add an MCP", "connect crawl4ai / exa / context7", "give the agent web access", and "it's using outdated docs".

How it works
  • Rule 0 first: it asks what you actually need the agent to do that it cannot now, and adds only those servers. Each one is more setup, more context, and more attack surface.
  • Picks from opinionated defaults: crawl a known site, use crawl4ai; search the web or find documentation, use exa (npx -y exa-mcp-server, needs EXA_API_KEY); optional playwright or github only if needed.
  • Adds the same block in three places: Claude Code (claude mcp add ... or the project .mcp.json, checked with claude mcp list), Codex (under [mcp_servers] or codex mcp add), and Antigravity (its MCP settings). It confirms the exact package on each server's own repo, since names move.
  • Verifies it works by actually using it once and showing the real result, never assuming it connected.
  • Keeps keys in env vars, never hardcoded, and treats everything crawled or searched as data, not commands, because of prompt-injection risk.
Example

"Give the agent live docs." It adds context7 and exa, then asks the agent to pull a library's current docs to prove the connection works.

What it produces

A working, verified MCP connection with keys kept in env vars, not source.

/claude-tips

Surface the Claude Code built-ins you are not using but should, matched to your actual pain.

What it does

Most people install Claude Code and use a sliver of it. This points you at the one built-in that solves whatever you are doing the hard way, in plain English. It is Claude Code specific; the full list lives in reference/claude-code-cheatsheet.md.

When to use it

When you suspect there is a better built-in way. Triggers include /claude-tips, "what can claude code do", "is there a better way to do this", and "I didn't know it could do that".

How it works
  • Asks first what is clunky or what you are trying to do. If you just want the tour, it gives the 5 must-knows rather than the whole list.
  • Matches the pain to one feature: re-explaining the project points to a CLAUDE.md; it forgot or got slow points to /clear or /compact; it built the wrong thing points to plan mode (Shift+Tab); a repeated workflow points to a custom skill; needing web, docs, or a database points to MCP (/connect-mcp); research bloat points to a subagent; a rule enforced every time points to a hook; a lost session points to claude --continue or --resume; a visual bug points to pasting a screenshot; a friendlier or terser voice points to /output-style.
  • Stays accurate: Claude Code updates often, so it recommends the feature but tells you to run /help for the exact command on your version, and never dumps all 40 features.
Example

You keep re-explaining your stack every session, so it points you at a CLAUDE.md that loads automatically.

What it produces

One high-leverage feature recommendation, tuned to your actual problem.

The hooks (run automatically)

Hooks are scripts Claude Code runs at lifecycle moments, no LLM judgment, every time. kitstarter ships four. All four fail open: any error and they stay silent, and none of them ever block your work. The session greeting is core; the other three come with --full.

session-start

Fires on SessionStart, when a session begins.

Prints a small mascot and a one-line reminder of the kitstarter rules, plus the quick pointers (new thing goes to /start, new screen to /design-intake, how it works to /tour). If the mascot art is missing it just prints the text line. It is the one hook in the core.

slop-check

Fires on PostToolUse (matcher Edit or Write), after the agent edits a UI file.

When the agent edits or writes a UI file (.css, .scss, .sass, .less, .html, .htm, .tsx, .jsx, .vue, .svelte, .astro), it runs the slop detector on just that file and, if it finds tells, surfaces a concise "[anti-slop] possible AI-slop tells, run /polish to fix" note as context for the agent. On a clean file or any error it stays quiet, and it never blocks the edit. This is what makes the design get checked automatically, not only on demand.

safety-guard

Fires on PreToolUse (matcher Bash), before a destructive command runs.

It matches the command against destructive patterns: a recursive delete of a root or home path, a recursive delete with a wildcard, a force-push, git reset --hard, git clean -f, dropping or truncating a database object, and disk-level operations like mkfs or dd. If it matches, it prints a plain-English warning and a reminder to commit a checkpoint first. It warns, it never blocks: a kit that hard-blocks your commands gets uninstalled. The point is "did you mean this, and did you checkpoint first?"

stop-reminder

Fires on Stop, when the agent wraps up.

A single light line so "done" means proven, not promised: did you /check it actually runs, and /review the diff against the goal? One line, no noise.

Voices

The --full pack adds two output styles that change how the agent talks, while keeping the ask-first habit exactly the same. The default voice stays direct. Switch with /output-style in Claude Code, or /config then Output style, and pick one.

Teaching

A warm mentor who explains as it goes and checks you understand. Still asks first.

It explains in plain English, defines a technical term the first time it uses it (a "cookie" is a little note the browser keeps so the site remembers you), says in a sentence or two what it is about to do and why before a non-trivial change, and ends with a quick "make sense?" It teaches the why, not just the code, in small clear beats rather than essays. It stays straight about real problems.

Buddy

A relaxed, friendly peer who codes with you. Casual tone, still asks first.

It talks like a teammate leaning over your shoulder: contractions, plain words, the occasional bit of humor. It calls small wins ("nice, that works") and is honest when something is off ("yeah that'll break, here's why"), with no fake-cheery or flattering filler, and it keeps it short.

Using a voice outside Claude Code? Both voice files note that you can paste their instruction block into your AGENTS.md or CLAUDE.md and get the same tone in Codex, Antigravity, and others.

Everyday use

You do not have to memorize commands. The core habit runs on its own: the agent asks before it acts, builds the smallest thing that works, and proves it runs before calling it done. When you want to reach for a skill:

  • New thing to build → /start (it asks the right questions, then plans and writes CLAUDE.md).
  • New screen or a fresh look → /design-intake, then build, then /design-check/polish.
  • While building → /step then /check. Broke? /fix. Before you accept? /review. Too much code? /lean.
  • Going live → /secrets then /ship. Broke it or lost work? /recover. Confused by the code? /explain.
  • Not sure what the kit does → /tour. Underusing Claude Code? /claude-tips.

Updating

Your purchase includes lifetime updates. To get the latest, run the installer again with @latest. Re-running is safe and idempotent, so nothing breaks, and dropping --full cleanly removes the add-on hooks.

npx kitstarter-cli@latest -g --full

Works with

  • Claude Code gets everything: the rule, all 18 skills, the hooks, and the voices.
  • Codex & Antigravity: the ask-first, direct rule travels through AGENTS.md, so the core habit works there today. The voices port by pasting their block into AGENTS.md. Skills and hooks are Claude Code for now; per-tool plugins are on the roadmap.

Troubleshooting

  • "No purchase found for that email." Enter the exact email on your Stripe receipt. Still stuck? Reply to the receipt and we'll sort it out.
  • Need Node. The installer runs on Node 18+. Check with node --version. If Node is not on your PATH, the skills still work; only the auto anti-slop scan stays quiet until you add it.
  • Already have an AGENTS.md? The installer will not overwrite it; merge in the one rule from the kit's AGENTS.md.
  • Hooks not firing? Re-run npx kitstarter-cli --full, then restart Claude Code so it reloads settings.json.
  • Want the design tools and extra skills? If you installed the core only, re-run with --full.
  • Start over. Re-running the installer is safe and idempotent.

Need a hand?

Stuck, or want someone in your corner? The kit + coaching tier includes a 1:1 session and premium support. Reply to your receipt or grab it from the pricing section.