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>
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-verifyor skip hooks. - Always use
--no-editon 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 --allfirst 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-reviewinstead)- 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>