Will it touch my global config?
No, unless you add --global. Default kit content installs inside this project.
Short answer: no, not by default. ClaudeKit installs into ./.claude/ for the current project, preserves existing project config, and selectively merges settings.json. The command to treat with care is ck init --fresh.
No, unless you add --global. Default kit content installs inside this project.
No on normal updates if it already exists. CLAUDE.md is treated as user config and skipped.
They survive a normal install. --fresh can remove CK-tracked or legacy kit folders.
Normal ck init scans project-local .claude/ files, protects custom files, and merges .claude/settings.json.
By default, ClaudeKit only installs into the project you are currently opening. It does not change the shared Claude Code settings on your machine.
$ ck init Lives in: ./.claude/ (this folder only)
./.claude/ for this project CLAUDE.md and user config files are preserved ./.claude/settings.json is selectively merged ~/.claude/ global setup stays untouched $ ck init --global Lives in: ~/.claude/ (your home)
~/.claude/ by default, or CLAUDE_CONFIG_DIR when set settings.json is selectively merged; existing CLAUDE.md is preserved When you run ck init in a project that already has Claude Code config, ClaudeKit does not make you choose what to do with every file one by one. It protects important project config files, merges settings.json, and only asks for confirmation if other files may be overwritten.
Existing .gitignore, .mcp.json, .ck.json, .ckignore, .repomixignore, and CLAUDE.md are preserved. Project-local .claude/ files that are not part of the kit are scanned and protected too.
Default behavior for normal ck init and updates.
settings.json merges hooks and MCP servers, deduplicates commands, and preserves user-only entries.
Skipped only when --force-overwrite-settings is active; --fresh enables that flag.
For other existing files, interactive mode lists conflicts and asks whether to continue.
--yes, CI, or non-interactive runs skip prompts; protected files and settings.json still follow their special rules, while other conflicts can be overwritten.
ClaudeKit records installed files in metadata.json and tracks installed hooks/MCP servers separately. That metadata powers selective updates, uninstall, and --fresh analysis.
ck init --fresh is a full reset. With current metadata.json, it removes ClaudeKit-owned and ClaudeKit-modified files while preserving tracked user-created files. Without usable metadata, it falls back to removing these kit folders: commands/, agents/, skills/, rules/, hooks/. There is no automatic backup.
Legacy or metadata-less installs can lose everything in these folders. Current tracked installs remove CK-owned/modified files from them.
-y flag does not make --fresh safer; treat it as destructive until you have a backup. --freshCopy your .claude/ folder to a timestamped backup. Takes 2 seconds.
$ cp -r ./.claude "./.claude.bak.$(date +%s)" --fresh awareYou now have a safety net, so any missing custom file can be restored manually.
$ ck init --fresh Copy your custom files back from the backup, one folder at a time.
$ cp -r ./.claude.bak.<timestamp>/skills/my-skill ./.claude/skills/ ck init --yes. Use ck update -y when you want to update the CLI package; after that, ClaudeKit may refresh kit content for detected local/global installs and will skip it when content is already latest.ck init preserves an existing CLAUDE.md because it is listed as user config. In global mode, a missing ~/.claude/CLAUDE.md can be copied; with --fresh, global CLAUDE.md can be replaced.ck init scans for custom .claude files and protects them. The exception is --fresh: it removes CK-owned/modified files, and legacy installs without metadata fall back to deleting the kit component directories.ck uninstall. It supports --local, --global, --all, --dry-run, --yes, and preserves user-created or modified files by default. Use --force-overwrite only when you really want full removal.ck init --yes only refreshes kit content; it does not update the CLI package. ck update -y updates the CLI package first, then may refresh kit content for local/global installs when content is not already latest. Avoid --fresh for routine updates.