Skip to content

fix(setup): teach the update skill's drift check about the dispatcher hook flavour - #1322

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:fix/update-skill-dispatcher-hooks
Sep 21, 2026
Merged

potiuk merged 1 commit into
apache:mainfrom
potiuk:fix/update-skill-dispatcher-hooks

Conversation

@potiuk

@potiuk potiuk commented Sep 21, 2026

Copy link
Copy Markdown
Member

Summary

  • setup-isolated-setup-update check 3 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. Hit while running the skill against an install of that flavour.
  • Both flavours are now named, with the source each diffs against, and the hook-name symlinks are called out as the installed shape rather than drift.

Type of change

  • Skill change (.claude/skills/<name>/) — see test plan for why no eval fixture
  • Tool / bridge contract (tools/<system>/*.md)
  • Python package (tools/*/ with pyproject.toml)
  • Groovy reference impl
  • Cross-cutting (RFC, AGENTS.md, sandbox, privacy-LLM)
  • Documentation (docs/, README.md, CONTRIBUTING.md)
  • Project template (projects/_template/)
  • CI / dev loop (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-install actually install: simple → a copy of git-global-post-checkout.sh at post-checkout; dispatchergit-hook-dispatcher.sh plus 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.md moves because the skill-token-count hook remeasures the skill.

Test plan

  • prek run --all-files passes (32 hooks, exit 0).
  • Checked against a real dispatcher-flavour install: global core.hooksPath = ~/.claude/git-hooks, all 11 hook names symlinked to git-hook-dispatcher.sh, which is byte-identical to tools/agent-isolation/git-hook-dispatcher.sh. Under the old text that install reads as drift; under the new text it reads as clean.
  • No eval fixture added. This is a read-and-report instruction, not a classification boundary, and none of the skill's four eval suites extracts check 3. The change is prose-only.

RFC-AI-0004 compliance

  • Conversational + correctable — the skill stays read-only and proposal-only; only the reported verdict changes.

Linked issues

None.

Notes for reviewers (optional)

  • The same clause still assumes the operator installed one of the two flavours. A host that somehow has both (a leftover post-checkout copy 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

@potiuk potiuk added family:setup setup-* skills capability:platform Framework / agent substrate skills (install, verify, doctor, override, status, setup bootstrap) labels Sep 21, 2026
… 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
potiuk force-pushed the fix/update-skill-dispatcher-hooks branch from 95f21a4 to a82e86a Compare September 21, 2026 15:51
@potiuk
potiuk merged commit 43902b0 into apache:main Sep 21, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

capability:platform Framework / agent substrate skills (install, verify, doctor, override, status, setup bootstrap) family:setup setup-* skills

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant