← Projects

Claude Code Config

2026ProjectView on GitHub

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

BashJSONGitClaude CodeMCP

Links

The canonical source for this project is on GitHub.

View on GitHub

README · 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 under skills/. ~/.agents/skills symlinks into here, so there is one copy and it cannot drift.
  • checkpoint, mission, start, wrap are generated into ~/.agents/skills from commands/.codex/*.prompt by commands/.codex/sync.sh, which claude-sync runs.

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.