Files
claudetools/.claude/commands/sync.md
Mike Swanson a18fa5f93a ClaudeTools cleanup: drop dead context-recall layer, unify /save + /sync
Deletions (~1,500 lines of dead docs):
- .claude/hooks/ — docs-only directory, no executables. Referenced scripts
  setup-context-recall.sh / test-context-recall.sh did not exist. Hooks
  would have POSTed to localhost:8000; the API actually ran at
  172.16.3.30:8001 and is no longer in use.
- .claude/AUTO_CONTEXT_SYSTEM.md — 347-line duplicate spec of CLAUDE.md's
  Automatic Context Loading section, referencing unimplemented hooks.
- .claude/URGENT-vault-path-bug.md — 217-line urgency note for a fix that
  already shipped weeks ago.
- .claude/context-recall-config.env.example — config template for the same
  dead system.

Refactors (~500 lines net removed):
- /save and /sync now wrap bash .claude/scripts/sync.sh as the single
  source of truth for git ops. /save adds a session-log-writing step in
  front; /sync invokes the script directly.
- Dropped /sync's manual git phases that contradicted sync.sh.
- Dropped the cp -r ~/ClaudeTools/.claude/commands/* ~/.claude/commands/
  step (clobbered per-user customization in the multi-user model).
- Dropped auto-invoke of /refresh-directives (command does not exist).
- Dropped references to directives.md (file does not exist).
- /save now documents the rm -f save_narrative_prompt.txt step, fixing
  the stale-prompt bug Howard documented in feedback_tmp_path_windows.md.

Fixes:
- CLAUDE.md SESSION_STATE.md reference replaced with the canonical
  PROJECT_STATE.md (per-project, with protocol at
  .claude/PROJECT_STATE_PROTOCOL.md). 16 client folders already use
  PROJECT_STATE.md; SESSION_STATE.md was only a stale reference.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 18:33:46 -07:00

1.8 KiB

Sync the ClaudeTools and vault repos with Gitea.

What this does

Invokes bash .claude/scripts/sync.sh, which:

  1. Stages tracked local changes by name (never git add -A — avoids picking up .env, generated files, etc.)
  2. Auto-commits any local changes with sync: auto-sync from <hostname> at <timestamp>
  3. Fetches from origin, rebases local commits onto remote
  4. Pushes to origin
  5. Repeats 1-4 for the vault repo (path read from .claude/identity.json vault_path field)
  6. Surfaces any ## Note for <user> / ## Message for <user> blocks from incoming session logs

The script is the single source of truth for git operations. Both /sync and /save invoke it.


Cross-user note handling (CRITICAL)

If sync surfaces a note from another user, display it prominently at the top of the response, before the sync summary, formatted as:

============================================================
MESSAGE FROM <author> (<date>)
============================================================
<full note content>
============================================================

Address each action item or question explicitly before moving on. Do not bury cross-user notes in the sync summary or skip them because other work is in progress.


Output format

Report:

  • Pulled commits — count + authors + one-line summaries
  • Pushed commits — count + your commits + outgoing SHAs
  • Vault sync status — pulled/pushed/clean
  • Cross-user notes addressed (if any)
  • Final HEAD + status

Companion: /save

/save writes a comprehensive session log first, then invokes the same sync.sh. Use /save after substantive work to capture context for future sessions. Use /sync for routine repo sync without writing a log (start of day, switching machines, mid-session check-in).