Skip to main content

What's in a profile

A claude-profile.json is a deterministic, schema-valid snapshot of a Claude Code setup. Two snapshots of the same setup produce byte-identical files, so they diff cleanly and are safe to commit.

Sections

SectionWhat it holds
name, version, descriptionProfile identity — you own these; refresh preserves them
profileScope, includesGlobalWhether this is a project or global profile, and if it carries global context
sourcesThe locations cprof scanned, kept separate by scope
settingsmodel, permissions, and env from settings.json
memory, rulesCLAUDE.md memory and rule files
skills, commands, agentsYour skills, slash commands, and subagents
mcpServersMCP servers — local (command) and remote (url: http/sse/ws)
hooks, pluginsRecorded as inventory only — never executed or re-fetched
secretsThe ${env:NAME} placeholders a consumer must provide (required / optional)

Asset files — skills, commands, agents, memory, and rules — are referenced by source and carried alongside the JSON. Their contents are hashed (sha256:…) so changes are detectable.

Scopes

cprof captures one of two scopes, and never silently mixes them:

  • Project (cprof init, the default) — the Claude Code config in the current project directory.
  • Global (cprof init --global) — your user-level setup in ~/.claude.
  • Project + global (cprof init --include-global) — a project profile that also records global context, kept in separate sources entries so you always know where each piece came from.

See Commands for the full flag reference.