Files
settled-reach/.claude/skills/worktree-update/SKILL.md
T
jpmschweitzerandClaude Opus 4.6 066f8031fd feat(simulation): sprint 12 server — tier system, sound events, KG access, line previewer
Implements 4 completed tickets + partial progress on 2 more:

- #93 Tier marker components (ActiveSim, BackgroundSim, StateSaved + TierPlugin)
- #138 Information tag schema (ObserverAccess enum in knowledge/types.rs)
- #124 Sound event system (SoundEventEmitter, SoundEventQueue, bridge wiring)
- #193 Line previewer CLI (line_preview binary with filter/explain/sequence modes)
- #94 Active tier simulation (in progress — With<ActiveSim> filters)
- #139 Component-level access control (in progress — filter_by_access)

Updates snapshot fixtures and test golden files for new sound_events field.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 13:33:23 +01:00

3.4 KiB

name, description, user-invocable, allowed-tools
name description user-invocable allowed-tools
worktree-update Sync worktree branches with main. Use when the user says "update worktrees", "sync branches", "merge main", "worktree update", or invokes /worktree-update. When on main: shows which worktree branches are ahead and lets the user pick which to merge into main (flags branches with open PRs). When on a non-main branch: merges main into the current branch. All operations are non-destructive. true Bash, Read, AskUserQuestion

Worktree Update Skill

Sync worktree branches safely. Direction depends on the current branch.

Safety Rules (NON-NEGOTIABLE)

  • Never force-push, reset --hard, rebase, or delete branches.
  • Never use --no-verify or skip hooks.
  • Always use --no-edit on merges to avoid interactive editor prompts.
  • Stop on merge conflicts — report them and let the user decide. Never auto-resolve or abort a conflicted merge without asking.
  • Fetch before comparing — always git fetch --all first so commit comparisons are accurate.
  • Dry-run first on main — show the user exactly what will happen before merging anything into main.

Workflow

1. Detect current branch

git branch --show-current

Branch determines the mode: main → outbound sync, anything else → inbound sync.

2a. On main — merge worktree branches into main

Fetch and compare

git fetch --all

Discover all worktree branches (excluding main itself):

git worktree list | grep -v '\[main\]' | sed 's/.*\[//;s/\]//'

For each worktree branch, check if it has commits ahead of main:

git rev-list --count main..origin/<branch>

Skip branches with 0 commits ahead. For branches that ARE ahead, collect:

  • Branch name
  • Number of commits ahead
  • One-line log of those commits: git log --oneline main..<branch>

Check for open PRs

tea pr list --login schweitz --repo jpmschweitzer/settled-reach --state open --output simple

Cross-reference open PR head branches with the ahead-of-main branches.

Present results

Show a summary table of branches ahead of main. For each branch, indicate:

  • [PR] if it has an open pull request — warn that it should go through normal review channels (use /pr-review instead)
  • Commit count and summary

Use AskUserQuestion to let the user pick which branches to merge. Exclude PR-flagged branches from the default options (but allow the user to override via "Other").

Merge selected branches

For each selected branch, one at a time:

git merge <branch> --no-edit

If a merge conflicts, stop immediately. Report the conflict and do NOT continue to the next branch. The user must resolve before proceeding.

After all merges, show the final state with git log --oneline -N (where N covers the new commits).

Backup the shared database

After successful merges on main, snapshot the database for git tracking:

make db-backup

This copies the shared settledreach.db (in the parent directory) to docs/backups/settledreach.db.backup. Stage and commit it with the merge if the file changed.

2b. Not on main — merge main into current branch

git fetch --all
git merge origin/main --no-edit

If clean, report the result (fast-forward or merge commit, files changed). If conflicts, report them and stop.

3. Push

After a successful merge, push the branch:

git push origin <current-branch>