Claude Code Config
Version-controlled `~/.claude` configuration repo — my Claude Code setup as code. Whitelist-style .gitignore that tracks the hand-authored config (settings, hooks, rules, slash commands, skills, plugin manifests) while never committing secrets, transcripts, or downloaded plugin code. Cross-machine sync via a push/pull/status/setup helper, a find-skills hook that nudges skill discovery once on the third turn of each session, auto-format-on-edit hooks, and a context-mode MCP allowlist to cut permission-prompt friction. Released as v1.0.1.
Highlights
- Whitelist .gitignore — tracks config, never commits secrets/transcripts/plugin code
- find-skills UserPromptSubmit hook fires exactly once at the 3rd turn, per session, with stale-counter pruning
- context-mode MCP tools allowlisted to reduce permission prompts on the most-used tools
- sync.sh push/pull/status/setup for reproducible setup across machines (no force-push)
- Keep a Changelog + SemVer release discipline — tagged GitHub releases
Tech
Links
The canonical source for this project is on GitHub.
View on GitHubREADME · github.com/ArkashJ/Claude_code_config
Claude Code config
Portable half of ~/.claude. Runtime state (transcripts, caches, session locks, plugin
install trees) is ignored — see .gitignore. This repo is the whole config surface.
| Path | What |
| ------------------------ | ------------------------------------------------------------------------ |
| CLAUDE.md | Global instructions applied to every project |
| settings.example.json | Permissions, hooks, model, enabled plugins, auto-mode policy — a copy of |
| | settings.json with the AWS account id redacted. Regenerated by |
| | claude-sync; the live settings.json is untracked (this repo is |
| | public, and auto-mode is only honored from ~/.claude/settings.json) |
| commands/*.md | Slash commands (/start, /wrap, /mission, …) |
| commands/bin/ | claude-sync, sync-skills.sh, repo-hygiene.sh, resolve-plan.sh |
| commands/hooks/ | session-preflight.sh, block-wasteful-shell.sh (wired in settings) |
| commands/.codex/ | Codex-adapted variants + their own sync.sh |
| rules/ | Topic rules pulled into context |
| skills/ | Skills. Locally-authored ones are real dirs here; 9 third-party ones are |
| | symlinks into ~/.agents/skills and dangle until reinstalled |
| agents-skill-lock.json | Copy of ~/.agents/.skill-lock.json — source URL for each such skill |
| plugins/*.json | Installed-plugin + marketplace manifests |
settings.local.json and anything matching *.local.json are machine-local and never sync.
Sync
claude-sync # commit + push this machine's config, and publish
# commands/*.md to arkashj.com/skills
claude-sync pull # fast-forward this machine from the remote
claude-sync adopt # one-time: point an existing ~/.claude at this remote
New machine
Empty ~/.claude, or one already full of local config — same command either way:
curl -fsSL https://raw.githubusercontent.com/ArkashJ/Claude_code_config/main/commands/bin/claude-sync | sh -s adopt
adopt inits the repo in place rather than cloning, so nothing has to be moved out of
the way first. Runtime state (projects/, caches, settings.json, settings.local.json)
is gitignored and survives untouched; the tracked files it would overwrite are copied to
~/claude-config-backup-<timestamp>/ first. It refuses to run if ~/.claude is already a
git repo — that case is claude-sync pull.
The default remote is SSH. On a machine with no key loaded yet, prefix the command with
REMOTE=https://github.com/ArkashJ/Claude_code_config.git (read-only; git -C ~/.claude remote set-url origin git@github.com:ArkashJ/Claude_code_config.git once the key is in
place). The same variable adopts a different fork.
Two things it cannot restore: plugins/ ships manifests only (reinstall the plugins), and
the third-party skills are symlinks into ~/.agents/skills that dangle until reinstalled
from the URLs in agents-skill-lock.json.
Then reinstall the 9 third-party skills listed in agents-skill-lock.json to resolve
the dangling symlinks under skills/. Everything else is already in this repo:
- Locally-authored skills (
harvest,benmore-cli,design-director,qa_skill,auditable-agentic-extraction) are real directories underskills/.~/.agents/skillssymlinks into here, so there is one copy and it cannot drift. checkpoint,mission,start,wrapare generated into~/.agents/skillsfromcommands/.codex/*.promptbycommands/.codex/sync.sh, whichclaude-syncruns.
History
archive/2026-06 holds the previous contents of this repo (a hand-copied snapshot,
last pushed 2026-06-22). main was rewritten on 2026-08-14 to track ~/.claude
directly, inheriting the git history of the former ~/.claude/commands repo.