Claude-prime prime-sync
Syncs Claude config between prime repo and target projects. Trigger on 'sync', 'prime-sync', 'push config', 'pull config', 'update prime', 'sync claude config'. Push mode deploys to targets; pull mode imports changes back.
git clone https://github.com/avibebuilder/claude-prime
T=$(mktemp -d) && git clone --depth=1 https://github.com/avibebuilder/claude-prime "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/prime-sync" ~/.claude/skills/avibebuilder-claude-prime-prime-sync && rm -rf "$T"
.claude/skills/prime-sync/SKILL.mdUltrathink.
Mode Detection
Detect operating mode before anything else:
file exists in CWD → push mode (CWD is the prime repo)VERSION
exists in CWD → pull mode (CWD is a target project).claude/.prime-version- Neither detected → ask user which mode and for the required path
Push Mode — Resolve Target
Source = CWD (prime repo). Target = resolved project path.
State file:
.claude/prime-projects.json
Tracks known target paths, last sync time, and version. Shape:
{ "projects": [{ "path": "/absolute/path", "lastSynced": "2025-12-30T10:30:00Z", "version": "1.4.2" }] }
Create as
{ "projects": [] } if missing.
Resolution flow:
- Argument provided → Use that path, then record it after a successful sync
- No argument, known projects exist → Ask the user which project(s) to sync, including an All projects option
- No argument, no known projects → Ask the user for a path
State file management:
- Create
only if you need to persist the state file.claude/ - Update the synced project's time/version only after a successful sync
- Keep one entry per absolute path
Pull Mode — Clone Prime
Source = cloned prime repo. Target = CWD.
Flow:
- Read current version from
in CWD.claude/.prime-version - Generate timestamp:
date +%Y%m%d%H%M%S - Clone prime repo:
git clone https://github.com/avibebuilder/claude-prime.git /tmp/claude-prime-sync-<timestamp>/ - Set source =
, target = CWD/tmp/claude-prime-sync-<timestamp>/ - Continue to shared process below
- Clean up
after sync completes (success or failure)/tmp/claude-prime-sync-<timestamp>/
No state file in pull mode — the target project is self-contained.
Process
1. Validate Target
- Check that the target path exists, is a directory, and is not the same location as the source repo
- Treat a valid target as a project root where writing
is appropriate.claude/ - Read versions from target (
) and prime (.claude/.prime-version
)VERSION
If the path fails those checks, abort and explain why.
2. Parallel Analysis
Change Detection:
- Detect relevant changes in prime's
based on the target's recorded version state.claude/ - If the target has no recorded version, or already matches the current prime version, sync only uncommitted prime changes
- If the target is on an older prime version, diff from that version tag to
and include uncommitted changes; warn if the tag is missingHEAD - Categorize changes into commands, agents, hooks, settings, skills, and starter-skills
Stack Detection (only if skills or starter-skills changed): check target for stack indicators relevant to each changed skill/starter.
File Comparison: compare each changed file with target. Detect: NEW, UPDATE, IDENTICAL, CONFLICT.
3. Build Sync Plan
Aggregate results and present:
CHANGED (will sync): ... IDENTICAL (skip): ... CONFLICTS (will ask): ... IRRELEVANT (skip, wrong stack): ...
GATE: User approves sync plan.
4. Handle Conflicts
For each conflict, show the relevant diff and ask the user how to proceed:
- Overwrite — Replace the target copy with the prime version
- Skip — Leave the target copy unchanged
- Merge — Surface the full diff and let the user choose which parts to keep before writing anything
5. Execute Sync
- Create
in target if needed.claude/ - Copy approved files (skills as entire folders)
- Sync approved starter-skills to
in target.claude/starter-skills/ - Update
with prime's VERSION.prime-version
6. Report
Sync complete! (prime vX.X.X) Updated: ... Skipped: ... Version: X.X.X → written to .prime-version
Push mode only: update state file (
lastSynced timestamp + version).
Pull mode only: clean up /tmp/claude-prime-sync-* clone directory.
Gotchas
stays in prime — do not copy this skill into target projects.prime-sync- Push and pull keep different state — state file is push-only; pull mode treats the target as self-contained.
- Version history can be incomplete — if the expected tag is missing, warn and continue with that uncertainty explicit.
Constraints
- NEVER modify the target project's source code
- NEVER sync without user approval at the plan gate
- In push mode, preserve one state entry per target path and update it only after success
- In pull mode, always clean up the temporary clone, even on failure
Target Path
<target-path>$ARGUMENTS</target-path>