@ibrahim-mohammed-47/clkit
v1.4.0
Published
A CLI wizard to help teams share the same claude code powers by scaffolding project scope configuration
Downloads
138
Maintainers
Readme
clkit
██████╗██╗ ██╗ ██╗██╗████████╗
██╔════╝██║ ██║ ██╔╝██║╚══██╔══╝
██║ ██║ █████╔╝ ██║ ██║
██║ ██║ ██╔═██╗ ██║ ██║
╚██████╗███████╗██║ ██╗██║ ██║
╚═════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ A CLI wizard that scaffolds Claude Code configuration into a project so the whole team shares the same setup.
Not affiliated with Anthropic. This is an independent community tool. Claude and Claude Code are products of Anthropic.
The core idea
Claude Code reads project-level configuration from a .claude/ directory at the root of your repository. When that directory is committed to source control, every developer who clones the repo gets the same Claude behavior automatically — the same skills, the same hooks, the same plugin state, the same MCP server configuration.
The problem is that building this configuration manually is tedious and error-prone. clkit is a menu-driven wizard that does it for you: it reads your existing machine-level Claude setup, lets you select what belongs at the project level, and writes everything to .claude/ in a format Claude Code understands.
The bundled presets — hook groups, predefined MCP servers, and Misc enhancements — reflect my own opinions about tools and setups I've found genuinely useful. They are opinionated by design.
Installation
npm install -g @ibrahim-mohammed-47/clkitOr run without installing:
npx @ibrahim-mohammed-47/clkitUsage
Run from the root of the project you want to configure:
clkitOn first run it initializes the .claude/ directory structure and adds permission deny rules to prevent Claude from reading .env files.
After setup, the main menu loops until you exit, letting you configure each feature independently.
Commit .claude/ to your repository when done.
Features
Skills
Skills are reusable instruction sets that extend what Claude Code knows how to do.
The Skills wizard presents two tabs, navigable with ◄ / ►:
Enable / Disable tab — lists every skill Claude currently has access to: skills from your user-level ~/.claude/skills/ and skills already copied into the project's .claude/skills/. Toggle any on or off. Disabled skills are written to .claude/settings.local.json under skillOverrides as "off". This file is personal and should not be committed — it lets each developer control their own skill visibility without affecting teammates.
Copy to Project tab — lists user-level skills that are not yet in the project. Selecting one copies the skill folder into .claude/skills/ as a real directory (symlinks are dereferenced). Commit .claude/skills/ so teammates get the skill automatically, even if they have never installed it globally themselves.
The wizard does not suggest, recommend, or bundle any skills. It only surfaces what already exists on your machine or in the project.
Plugins
Claude Code supports plugins that extend its capabilities at the user or project scope. Project-scope plugin state is recorded in .claude/settings.json under enabledPlugins.
The Plugins wizard calls the claude CLI to list every plugin installed on your machine and shows their current enabled/disabled state. You select which ones should be active for this project. The wizard then calls claude plugins enable or claude plugins disable for each change and writes the result to .claude/settings.json.
The wizard does not suggest or bundle any plugins. It only shows what the
claudeCLI reports as installed on your machine. If a teammate opens the project and a plugin declared insettings.jsonis not installed on their machine, the wizard warns them clearly rather than silently failing.
MCP Servers
MCP (Model Context Protocol) servers extend Claude Code with external tool integrations.
The MCP wizard presents two tabs, navigable with ◄ / ►:
Installed tab — lists every MCP server configured on your machine via claude mcp add. Toggle which ones should be active for this project. Disabled server names are written to disabledMcpjsonServers in .claude/settings.json.
Predefined tab — lists a curated set of MCP servers bundled with clkit. Selecting one adds its full configuration to .claude/.mcp.json so teammates get it automatically without running claude mcp add themselves.
| Server | What it does |
| --------- | ------------------------------------------------ |
| shadcn | Browse and install shadcn/ui components via MCP |
Both tabs confirm on a single Enter press. Changes to installed servers and predefined servers are applied together.
Add more entries to
src/data/mcps.jsonundermcpServersto extend the predefined list.
Hook Groups
Claude Code hooks are shell commands that run automatically at lifecycle events: after a file edit, after Claude stops, when Claude needs input, and others. They are defined in .claude/settings.json under hooks.
The Hook Groups wizard presents a curated set of predefined hook groups bundled with clkit. These groups come from the tool itself, not from your machine — they reflect my own opinions about hooks worth having on most projects. Current built-in groups:
| Group | What it does |
| ----------------------- | ------------------------------------------------------------------------------------------ |
| tsc-on-edit | Runs tsc --noEmit after any TypeScript file is edited or written |
| npm-lint-on-edit | Runs npm run lint after any file is edited or written |
| eslint-on-edit | Runs eslint --fix on the affected JS/TS file after each edit |
| prettier-on-edit | Runs prettier --write on the affected file after each edit |
| desktop-notifications | Sends a desktop notification when Claude finishes working or needs input (macOS and Linux) |
Selecting a group writes its hook entries into .claude/settings.json. The wizard is careful to preserve any hooks you or your team have added manually. Deselecting a group removes only the entries that group owns.
For groups that require external tools (e.g. npx, npm), the wizard checks whether those tools are available on your machine and warns you if they are not — but still applies the hooks, since teammates who do have the tools will benefit.
Misc
The Misc wizard is a collection of project enhancements. Each option shows its current applied state; selecting toggles it on, deselecting removes it.
Current options:
| Option | What it does |
| --------------------- | ------------------------------------------------------------------------------------------------------------------- |
| karpathy-guidelines | Appends Andrej Karpathy's LLM coding guidelines to AGENTS.md. Creates the file if it doesn't exist. |
Unlike the other wizards, Misc writes directly to
AGENTS.mdin the project root rather than to.claude/. IfCLAUDE.mdexists, it becomes a bridge (@AGENTS.md) to keep agent tools unified. CommitAGENTS.mdto share the result with your team.
What gets committed
After running the wizard, commit these paths:
.claude/
settings.json # plugins, hooks, env vars, permission rules, disabled MCP servers
settings.local.json # per-developer skill overrides (do not commit)
.mcp.json # MCP server configs (if applicable)
skills/ # copied skill folders (commit these)
AGENTS.md # project instructions (if Misc enhancements were applied)
CLAUDE.md # bridge to AGENTS.md for Claude Code (@AGENTS.md)Teammates pull the repo and Claude Code picks up the configuration automatically. Each developer runs clkit themselves to adjust personal settings (e.g. disable skills they don't want, copy additional skills from their machine) — personal state lands in settings.local.json and stays off git.
How it works
clkit is a Node.js ESM CLI with no build step. It uses @inquirer/prompts for interactive menus and shells out to the claude CLI for plugin and MCP introspection. All writes go to the current working directory — it never modifies your global Claude configuration.
bin/clkit.js entry point
src/index.js banner, first-time setup, main menu loop
src/features/ one wizard per feature (skills, plugins, mcp, hook-groups, misc)
src/utils/ stateless helpers (fs, settings, claude-cli, mcp, hooks)
src/data/ bundled presets: hook group definitions, predefined MCP serversRequirements
- Node.js 18+
claudeCLI installed and authenticated (Claude Code)
License
MIT
