From a82e86ab6de834c833ae808cb6fb825ae994b6e4 Mon Sep 17 00:00:00 2001 From: Jarek Potiuk Date: Mon, 21 Sep 2026 17:38:12 +0200 Subject: [PATCH] fix(setup): teach the update skill's drift check about the dispatcher hook flavour MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- docs/mode-economics.md | 4 ++-- .../skills/isolated-setup-update/SKILL.md | 13 ++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/docs/mode-economics.md b/docs/mode-economics.md index c5528716..fe6c2bc3 100644 --- a/docs/mode-economics.md +++ b/docs/mode-economics.md @@ -92,7 +92,7 @@ special-token spellings counted as ordinary text. Coverage: **75 of 75 local `skills/*/SKILL.md` files**. External `source.md` redirects and harness symlinks are excluded. -Measurement manifest SHA-256: `1ae8680e2a68bddd8a2d9ce0a761b055cebac5ea74312ba2a05196b6f3ba3cd9`. +Measurement manifest SHA-256: `d4084d97d203d0df2895a57eea81b74334fcb357c4ca6db7a8b2918ab579a026`. | Skill file | Measured tokens | Source SHA-256 (first 16 characters) | |---|---:|---| @@ -161,7 +161,7 @@ Measurement manifest SHA-256: `1ae8680e2a68bddd8a2d9ce0a761b055cebac5ea74312ba2a | [setup](../skills/setup/SKILL.md) | 8,724 | `82788542bb240309` | | [setup-isolated-setup-doctor](../skills/setup-isolated-setup-doctor/SKILL.md) | 7,950 | `3fa5d728fa080ed0` | | [setup-isolated-setup-install](../skills/setup-isolated-setup-install/SKILL.md) | 11,278 | `418ea9794077c6e9` | -| [setup-isolated-setup-update](../skills/setup-isolated-setup-update/SKILL.md) | 5,111 | `96096e6ac10407d3` | +| [setup-isolated-setup-update](../skills/setup-isolated-setup-update/SKILL.md) | 5,214 | `97dabfc08b915b4a` | | [setup-isolated-setup-verify](../skills/setup-isolated-setup-verify/SKILL.md) | 8,502 | `6f0a2594801bdf27` | | [setup-override-upstream](../skills/setup-override-upstream/SKILL.md) | 4,012 | `fb583feb56b7f77c` | | [setup-privacy-llm](../skills/setup-privacy-llm/SKILL.md) | 2,145 | `0e27b542a1656846` | diff --git a/plugins/magpie-setup/skills/isolated-setup-update/SKILL.md b/plugins/magpie-setup/skills/isolated-setup-update/SKILL.md index efed1abe..ac68f560 100644 --- a/plugins/magpie-setup/skills/isolated-setup-update/SKILL.md +++ b/plugins/magpie-setup/skills/isolated-setup-update/SKILL.md @@ -209,9 +209,16 @@ Walk each: *only when whole-user scope is in effect, detected via `git config --global --get core.hooksPath` resolving to `~/.claude/git-hooks`* — - `~/.claude/git-hooks/post-checkout` for the universal - post-checkout hook), `diff` the user copy against the - framework's source-of-truth in `tools/agent-isolation/`. + the contents of `~/.claude/git-hooks/`, whose shape depends on + the flavour Step P.3 installed: the **simple** flavour puts a + copy of `git-global-post-checkout.sh` at `post-checkout`, while + the **dispatcher** flavour installs `git-hook-dispatcher.sh` + there and symlinks every hook name to it, superseding the + standalone post-checkout script — diff whichever script is + present against its own source, and read the hook-name symlinks + as the installed shape rather than as drift), `diff` the user + copy against the framework's source-of-truth in + `tools/agent-isolation/`. Report any drift as a unified diff; do not re-`cp`. The re-install path for each is [`setup-isolated-setup-install`](../isolated-setup-install/SKILL.md)