Repository navigation
Breaking Changes
- Removed merge/rebase/cherry-pick workflow. Claude now applies upstream changes by editing files directly.
upstream-diff.jsandupstream-status.jsoutput fieldmergeBaserenamed tobaseCommit..upstream-sync.jsonis now committed to git (previously gitignored).
New Features
- Direct file editing workflow — Instead of merging upstream commits, Claude extracts diffs, evaluates each change against local code, and applies them via Edit/Write tools. Full control over what gets applied and how.
upstream-diff.js— New script that extracts per-file diffs from upstream since last sync. Supports--file,--commit,--files-only,--contextfilters. Outputs diff content, upstream file content, and local file content for evaluation.sync-state.js— New script for managing sync state tracking (show,save,reset). Tracks which upstream commit was last synced so subsequent syncs only show new changes.- Sync state tracking —
.upstream-sync.jsonstores the last synced upstream commit hash. Committed to git so sync state persists across machines and clones. - Incremental syncs — First sync uses
git merge-baseas starting point. After saving state, subsequent syncs only show changes since the last sync point. - Sync report — Claude now presents a structured report after every sync: applied changes, new files, skipped changes, deleted files, and notes.
Improvements
upstream-status.js— Now uses sync state as baseline instead ofHEAD..remote/branch, enabling accurate incremental commit listing.git-utils.js— AddedloadSyncState(),saveSyncState(),getBaseCommit()functions with remote/branch validation to prevent cross-remote state mismatch.- Reference docs rewritten —
sync-workflow.md(7 phases),review-guide.md(evaluation methodology),conflict-resolution.md(manual application guide) all updated for the new approach. - README rewritten — Practical usage guide with Claude Code, real-world scenarios, comparison table vs
git merge.
Bug Fixes
- Fixed
getBaseCommitnot validating remote/branch match — multi-remote users would silently get wrong diffs. - Fixed
saveSyncStateunreachable dead code in fallback branch. - Fixed
sync-state.jshardcoding filename instead of usingSYNC_STATE_FILEconstant.
Tests
- 52 tests total (was 26), all passing.
- New: 16 tests for
upstream-diff.js, 6 tests forsync-state.js, 4 tests for sync state ingit-utils.js.
Files Changed
New files (4):
scripts/upstream-diff.js— Per-file diff extractionscripts/sync-state.js— Sync state managementscripts/__tests__/upstream-diff.test.js— Tests for upstream-diffscripts/__tests__/sync-state.test.js— Tests for sync-staterelease-note.md— This file
Modified files (10):
SKILL.md— New 6-step workflow with sync state and reportREADME.md— Complete rewritereferences/sync-workflow.md— 7-phase evaluate & edit workflowreferences/review-guide.md— Evaluation methodology for direct editingreferences/conflict-resolution.md— Manual change application guidescripts/git-utils.js— Sync state functions, getBaseCommitscripts/upstream-status.js— Uses sync state baselinescripts/__tests__/git-utils.test.js— Sync state testsscripts/package.json— New test files added