From darkroom
Updates local cc-settings repo (~/.claude/cc-settings) from origin/main: detects version drift, shows git log and CHANGELOG changes, checks for uncommitted edits and branch, pulls with safety, runs installer.
npx claudepluginhub darkroomengineering/cc-settingsThis skill uses the workspace's default tool permissions.
The cc-settings working tree is usually at `~/.claude/cc-settings/`. Some users (notably the original maintainers) keep it elsewhere — e.g. `~/Developer/...`. Find it:
Audits cc-settings repo against Claude Code changelog; identifies features to adopt and duplications to remove. Pauses for approval before edits. Triggers on 'sync with claude code', 'changelog sync', 'upstream sync'.
Safely pulls upstream ClaudeClaw updates into customized installs via git previews, merge/cherry-pick/rebase, conflict resolution, backups, validation, and low token usage.
Updates Claude Code settings JSON schema by extracting env vars, researching official docs/changelog via skills and WebFetch, merging data, with dry-run/diff/validate options.
Share bugs, ideas, or general feedback.
The cc-settings working tree is usually at ~/.claude/cc-settings/. Some users (notably the original maintainers) keep it elsewhere — e.g. ~/Developer/.... Find it:
# Try the documented default first
[ -d "$HOME/.claude/cc-settings/.git" ] && CC_REPO="$HOME/.claude/cc-settings"
# If not there, the version sentinel doesn't record the path — ask the user
[ -z "$CC_REPO" ] && echo "Where is your cc-settings working tree? (path)"
Verify the path is a clone of darkroomengineering/cc-settings:
git -C "$CC_REPO" remote -v | grep -q 'darkroomengineering/cc-settings' || {
echo "Not a cc-settings clone"; exit 1;
}
# Installed version
INSTALLED=$(jq -r .version "$HOME/.claude/.cc-settings-version" 2>/dev/null)
# Latest version on remote main (read from src/setup.ts in origin/main)
git -C "$CC_REPO" fetch --quiet origin main
LATEST=$(git -C "$CC_REPO" show origin/main:src/setup.ts | grep -E '^const VERSION' | sed -E 's/.*"([0-9.]+)".*/\1/')
echo "Installed: $INSTALLED"
echo "Latest: $LATEST"
If equal: report "already up to date" and stop. If installed > latest: surface the discrepancy (manual edit?) and ask.
Show commits and the relevant CHANGELOG entries:
# Commits between the installed version and origin/main
# (find the tag/commit that bumped to $INSTALLED, then log from there)
git -C "$CC_REPO" log --oneline "HEAD..origin/main" | head -20
# CHANGELOG entries above the installed version
awk -v v="$INSTALLED" '
/^## \[/ { found = ($0 ~ "\\[" v "\\]") ? 1 : 0; if (found) exit }
!found { print }
' "$CC_REPO/CHANGELOG.md"
Display this block to the user. Stop. Wait for confirmation before applying. Don't auto-pull — give them the chance to read and bail.
# Hard-stop if the user has uncommitted edits on their cc-settings checkout —
# `git pull` will either merge or fail, both worse than asking.
if ! git -C "$CC_REPO" diff --quiet || ! git -C "$CC_REPO" diff --cached --quiet; then
echo "Local uncommitted changes in $CC_REPO:"
git -C "$CC_REPO" status --short
echo "Stash, commit, or discard before updating. Aborting."
exit 1
fi
# Hard-stop if they're not on main — they probably forked / are working on a feature
BRANCH=$(git -C "$CC_REPO" branch --show-current)
[ "$BRANCH" != "main" ] && {
echo "On branch '$BRANCH', not main. Switch first or update manually."
exit 1
}
git -C "$CC_REPO" pull --ff-only origin main
bash "$CC_REPO/setup.sh"
If the user has hand-edits to ~/.claude/settings.json (custom permissions, hooks, env), the installer preserves them automatically. Pass --interactive if they want to review each merge:
bash "$CC_REPO/setup.sh" --interactive
NEW=$(jq -r .version "$HOME/.claude/.cc-settings-version")
[ "$NEW" = "$LATEST" ] && echo "✓ Updated to $LATEST" || echo "⚠ Sentinel still reports $NEW (expected $LATEST)"
Then tell the user:
Restart Claude Code to pick up the new agents/skills/hooks. New skills only auto-invoke after restart.
If the update introduced new MCP servers or env vars, mention those by name (read from the rendered CHANGELOG section in Phase 3).
cc-settings repo. Maintainer-facing sync work goes through /cc-sync.bun "$CC_REPO/src/setup.ts" --rollback to restore the most recent backup in ~/.claude/backups/.git -C "$CC_REPO" checkout <tag> first, then run bash setup.sh directly.