fix(kyberforge): target-neutral hook token and accurate hook reach docs
Switch the SessionStart hook to apm's target-neutral ${PLUGIN_ROOT} token.
Two scratch packages differing only in the token deploy byte-identical
SessionStart entries with apm 0.28.0, matching the committed
.claude/settings.json, so the deployed output does not change. The test
pin in tests/test-apm-current-hook.sh moves with it.
Correct the claim that Copilot loads no hooks from kyberforge. targets:
is package-wide, so apm also writes .github/hooks/kyberforge-hooks.json
(nested shape passed through, runtime unverified) and merges into
.codex/hooks.json when .codex/ exists. Recorded as accepted in an
ADR-0019 amendment dated 2026-09-28; README and docs/hooks.md updated.
Refs #94
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KkT7RSDwDbmrM9T34b6sTi
This commit is contained in:
@@ -297,12 +297,14 @@ echo "--- hooks.json wiring ---"
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# apm resolves script paths relative to the package root, and `apm pack` keeps
|
||||
# only *.json from .apm/hooks/ — so a ${CLAUDE_PLUGIN_ROOT}/hooks/... reference
|
||||
# points at a directory the script never reaches. It must be .apm/-relative.
|
||||
# only *.json from .apm/hooks/ — so a ${PLUGIN_ROOT}/hooks/... reference
|
||||
# points at a directory the script never reaches. It must be .apm/-relative, and
|
||||
# it uses apm's target-neutral token, which apm rewrites identically to
|
||||
# ${CLAUDE_PLUGIN_ROOT} for every target (ADR-0019, amendment 2026-09-28).
|
||||
referenced="$(python3 -c 'import json,sys; d=json.load(open(sys.argv[1])); print(d["hooks"]["SessionStart"][0]["hooks"][0]["command"])' "$HOOKS_JSON")"
|
||||
[[ "$referenced" == '${CLAUDE_PLUGIN_ROOT}/.apm/hooks/check-apm-current.sh' ]] \
|
||||
[[ "$referenced" == '${PLUGIN_ROOT}/.apm/hooks/check-apm-current.sh' ]] \
|
||||
&& pass "hooks.json references the script at its .apm/ path" \
|
||||
|| fail "hooks.json references '$referenced' — must be \${CLAUDE_PLUGIN_ROOT}/.apm/hooks/check-apm-current.sh"
|
||||
|| fail "hooks.json references '$referenced' — must be \${PLUGIN_ROOT}/.apm/hooks/check-apm-current.sh"
|
||||
|
||||
[[ -x "$HOOK" ]] && pass "hook script is executable" || fail "hook script must be executable"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user