Quickstart
This guide takes you from “never used C3P” to a working profile swap with the drift gate protecting you. Five minutes, one project.
1. Install
Section titled “1. Install”npm install -g claude-code-config-profilesThe binary is c3p.
2. Bootstrap the project
Section titled “2. Bootstrap the project”From the project root that already has a .claude/ tree:
c3p initThis:
- Creates
.claude-profiles/with a starter profile seeded from your existing.claude/. - Installs the git pre-commit hook (
--no-hookto skip). - Adds the C3P managed-block markers to project-root
CLAUDE.md. - Updates
.gitignore.
Verify:
c3p listc3p status3. Scaffold a second profile
Section titled “3. Scaffold a second profile”Make a dev profile that extends the starter:
c3p new dev --description="local dev"Edit .claude-profiles/dev/profile.json:
{ "extends": "default", "description": "local dev"}Drop a couple of dev-only files under
.claude-profiles/dev/.claude/. Then check the resolver is happy:
c3p validate dev4. Swap
Section titled “4. Swap”c3p use devIf .claude/ had drift, you’ll get a discard / persist / abort prompt
(drift concept). On a fresh project, the swap
proceeds straight away.
Confirm:
c3p status# → active: dev (local dev)# drift: 0 files5. Wire shell completions (optional)
Section titled “5. Wire shell completions (optional)”# zsh — install oncec3p completions zsh > ~/.zfunc/_c3p
# bash — eval into your shelleval "$(c3p completions bash)"What next?
Section titled “What next?”- Read the Concepts for the full vocabulary.
- See CI usage for non-interactive swaps.
- If you’re managing a section of project-root
CLAUDE.md, read CLAUDE.md section ownership.