claudekits
v0.1.4
Published
ClaudeKit CLI — install AI teams for Claude Code. Every token accounted for.
Maintainers
Readme
claudekit (ck)
Install AI teams for Claude Code. Every token accounted for.
The ClaudeKit CLI downloads your entitled kits (agents + skills + slash commands) into
Claude Code's .claude/ directory and shows the context token cost of every skill —
the thing no other tool measures.
npm i -g claudekits
ck auth <license-key>
ck install seokit
ck tokensclaudekit and ck are the same binary. Requires Node.js >= 18 (built-in fetch). No
runtime config files needed; state lives under ~/.claudekit/.
Install
npm i -g claudekit
pnpm add -g claudekit
yarn global add claudekitThen authenticate with the license key from your dashboard (https://claudekit.dev/dashboard/licenses):
ck auth ks_live_xxxxxxxxxxxxCommands
Global flags work in either position (ck --json doctor or ck doctor --json):
| Flag | Effect |
| ------------ | ----------------------------------------------------------------- |
| --json | machine-readable JSON output (for scripting / CI) |
| --no-color | disable ANSI colors (also auto-disabled when NO_COLOR is set) |
| -v, --version | print the CLI version |
| -h, --help | help for the CLI or a subcommand |
ck auth <license-key>
Validates the key against ${CLAUDEKIT_API}/api/license/validate with activation
(x-ck-activate: 1), then saves credentials to ~/.claudekit/config.json (mode 0600).
Prints your masked email, entitled kits + versions, and activation usage.
ck auth ks_live_xxxxxxxxxxxx- Invalid key → exit 1.
- Activation limit reached → exit 2 (deactivate an old machine in the dashboard).
- Network / API unreachable → exit 3.
ck whoami
Offline. Prints the signed-in account (masked email, key last-4), last-validated time,
activation count, and entitled kits from the saved config. Suggests ck auth if you
aren't signed in.
ck list (alias ck ls)
Joins your entitled kits with local install receipts: slug, entitled version, installed
version + target (or —), and an update-available marker. --json supported.
ck install <kit> [-g] [--force] (alias ck add)
Re-validates your license (no activation consumed), downloads the signed release zip to a
temp file, and extracts it into the target's .claude/ directory, preserving
agents/, skills/<slug>/SKILL.md, and commands/ paths. Writes an install receipt to
~/.claudekit/installs.json and prints the per-skill token ledger (tokens, kind,
% of the 200k context window, total, and the always-loaded note), plus a next-step hint
like /seo audit.
| Flag | Effect |
| -------------- | ---------------------------------------------------------------- |
| -g, --global | install into ~/.claude instead of the current directory |
| -f, --force | reinstall even if the same version is already present |
- Reinstalling the same version requires
--force. - Unknown kit → lists what you do own, exit 1.
- Zip entries with absolute paths or
..are rejected (zip-slip guard).
ck tokens [kit] [--live]
THE EDGE. Reads each installed kit's bundled manifest.json and prints a token table
grouped by kit — skill files sorted high → low, a kind column, total, % of 200k, and the
always-loaded subtotal. With --live it recounts every file from disk (≈ 4 chars/token)
and shows the drift vs the shipped manifest. --json supported. No installs → a
friendly hint. Counts are labeled ~estimated, 4 chars/token.
ck update [kit] [--force] (alias ck upgrade)
Re-validates your license, compares each install receipt against the entitled version, and
reinstalls those that are newer (no arg = all installed kits). --force reinstalls even
when not newer. Reports per kit; prints the token ledger for anything it upgrades.
ck uninstall <kit> [-g] (alias ck remove)
Removes only the files recorded in that kit's receipt, prunes now-empty directories
under .claude/, and drops the receipt. Files you added or edited yourself are left
untouched. Use -g to target the global (~/.claude) install when a kit is installed in
multiple places.
ck doctor
Diagnoses your setup; each check prints ✓ / ! / ✗ with a fix hint:
- Node.js >= 18
- Claude Code CLI on
PATH(missing = warning, not failure) ~/.claudeexists + writable (and./.claudewhen present)- credentials readable + key present
- API reachable (3s timeout; offline = warning)
- installed-kit integrity (every tracked file exists)
- total always-loaded token budget across installs (warns above 25,000)
- orphaned claudekit files under
.claudenot tracked by any receipt
Exits 0 unless a hard failure (e.g. unwritable .claude, missing tracked files, a
server-rejected key) is found. --json supported.
Exit codes
| Code | Meaning |
| ---- | ----------------------------------------------------------------------- |
| 0 | success (and doctor with only warnings) |
| 1 | generic failure — invalid input, unknown/unowned kit, invalid license, doctor hard failure |
| 2 | activation limit reached (manage activations in the dashboard) |
| 3 | network / API unreachable |
Every command prints a red error line plus an actionable hint on failure. Stack traces are
shown only when DEBUG=1.
Environment variables
| Variable | Purpose |
| -------------- | ------------------------------------------------------------------------- |
| CLAUDEKIT_API | Override the API base URL (default https://claudekit.dev). For local dev. |
| NO_COLOR | Disable colored output (standard NO_COLOR convention; same as --no-color). |
| DEBUG | Set to 1 to print stack traces on errors. |
Files on disk
| Path | Contents |
| -------------------------------------- | --------------------------------------------------- |
| ~/.claudekit/config.json | license key + entitlements (mode 0600) |
| ~/.claudekit/installs.json | install receipts (kit, version, target, files) |
| <target>/.claude/{agents,skills,commands}/ | installed kit content |
| <target>/.claude/.claudekit/<kit>/manifest.json | bundled manifest used by ck tokens |
<target> is the current directory by default, or your home directory with -g/--global.
Known bin conflicts
The claudekit bin name is also used by the unrelated claudekit npm package, and ck by ClaudeKit.cc's claudekit-cli. Installing this package alongside either will fail with EEXIST on the conflicting bin — uninstall the other package or use npm i -g claudekits --force and invoke whichever bin survives.
