Repository navigation
v1.0.0
First stable release of Custom Claude Code Settings: a way to define the Claude Code settings you want, and a watchdog that keeps Claude Code from silently dropping them.
Highlights
- Customizations framework — each customization lives in its own directory under
customizations/with acustomization.jsonsettings fragment, optionalbin/executables andresources/. Fragments are deep-merged (directory-name order, later wins) into a singlesettings.enforced.jsonat install time. - Enforcement watchdog —
enforce-custom-claude-code-settings.pydeep-merges the enforced settings back into~/.claude/settings.jsonwhenever it drifts, touching only the enforced keys and leaving everything else untouched. Writes are atomic, and an unparseablesettings.jsonis backed up before being rebuilt.- macOS: a
launchdagent, triggered on file changes plus a 5-minute safety net. - Linux:
systemd --userpath + timer units with the same triggers; in environments without a running user manager (e.g. containers), the installer still applies customizations once and degrades gracefully instead of failing.
- macOS: a
- Built-in customizations:
statusline— a compact status line showing model, current directory, git branch, context-window tokens and session cost.no-attribution— disables "Generated by Claude Code" attribution in commits and PRs.clear-context-on-plan-accept— offers to clear context when a plan is accepted, so implementation starts from a clean context window.
- Day-to-day tooling —
install-or-update.sh,status.sh,enforce-now.sh,logs.sh,uninstall.sh(with--keep-filesand per-customization targeting) for managing the whole lifecycle from the command line. - Cross-platform support — shared logic in
scripts/lib/common.shwith platform backends (platform-darwin.sh,platform-linux.sh) selected automatically byuname -s; a Docker-based Linux smoke test (test-linux.sh) covers both the systemd and no-systemd cases.