Skip to content

v1.0.0

Choose a tag to compare

@Neurone Neurone released this 10 Sep 01:01
· 4 commits to main since this release
6e013c3

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 a customization.json settings fragment, optional bin/ executables and resources/. Fragments are deep-merged (directory-name order, later wins) into a single settings.enforced.json at install time.
  • Enforcement watchdog — enforce-custom-claude-code-settings.py deep-merges the enforced settings back into ~/.claude/settings.json whenever it drifts, touching only the enforced keys and leaving everything else untouched. Writes are atomic, and an unparseable settings.json is backed up before being rebuilt.
    • macOS: a launchd agent, triggered on file changes plus a 5-minute safety net.
    • Linux: systemd --user path + 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.
  • 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-files and per-customization targeting) for managing the whole lifecycle from the command line.
  • Cross-platform support — shared logic in scripts/lib/common.sh with platform backends (platform-darwin.sh, platform-linux.sh) selected automatically by uname -s; a Docker-based Linux smoke test (test-linux.sh) covers both the systemd and no-systemd cases.