fix(setup): teach the update skill's drift check about the dispatcher hook flavour - #1322
Merged
Merged
Conversation
… hook flavour Check 3 of `setup-isolated-setup-update` knows only one shape for the whole-user git hooks: `~/.claude/git-hooks/post-checkout` as a copy of `git-global-post-checkout.sh`. Step P.3 of the install skill offers two flavours, and the dispatcher one installs `git-hook-dispatcher.sh` and symlinks every hook name to it — explicitly superseding the standalone post-checkout script. On a dispatcher install the check therefore diffs a symlink against a script it was never a copy of, and reports drift that is not there. Name both flavours, say which source each diffs against, and say that the hook-name symlinks are the installed shape rather than drift. Generated-by: Claude Opus 5
potiuk
force-pushed
the
fix/update-skill-dispatcher-hooks
branch
from
September 21, 2026 15:51
95f21a4 to
a82e86a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
setup-isolated-setup-updatecheck 3 knows only one shape for the whole-user git hooks:~/.claude/git-hooks/post-checkoutas a copy ofgit-global-post-checkout.sh. Step P.3 of the install skill offers two flavours, and the dispatcher one installsgit-hook-dispatcher.shand symlinks every hook name to it — explicitly superseding the standalone post-checkout script.Type of change
.claude/skills/<name>/) — see test plan for why no eval fixturetools/<system>/*.md)tools/*/withpyproject.toml)docs/,README.md,CONTRIBUTING.md)projects/_template/)prek, workflows, validators)How it works
The whole-user-scope clause of check 3 splits by flavour, matching what Step P.3 / P.3b of
setup-isolated-setup-installactually install: simple → a copy ofgit-global-post-checkout.shatpost-checkout; dispatcher →git-hook-dispatcher.shplus a symlink per hook name. The instruction is now "diff whichever script is present against its own source", and the symlinks are stated to be the installed shape, so the false positive cannot be reported as drift.docs/mode-economics.mdmoves because theskill-token-counthook remeasures the skill.Test plan
prek run --all-filespasses (32 hooks, exit 0).core.hooksPath=~/.claude/git-hooks, all 11 hook names symlinked togit-hook-dispatcher.sh, which is byte-identical totools/agent-isolation/git-hook-dispatcher.sh. Under the old text that install reads as drift; under the new text it reads as clean.RFC-AI-0004 compliance
Linked issues
None.
Notes for reviewers (optional)
post-checkoutcopy beside the dispatcher) is not described — I left that out rather than guess, since the install skill says the dispatcher supersedes the copy.🤖 Generated with Claude Code