You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
gstack-investigate: PreToolUse hook path breaks on standalone marketplace installs (/../freeze/bin/check-freeze.sh not found) #1647
This path assumes both gstack-investigate and gstack-freeze are installed under a shared parent directory (monorepo-style, e.g. ~/.claude/skills/gstack/investigate/ and ~/.claude/skills/gstack/freeze/). But when installed as standalone marketplace skills, they land at:
~/.claude/skills/gstack-investigate/
~/.claude/skills/gstack-freeze/
So ${CLAUDE_SKILL_DIR}/../freeze/ resolves to ~/.claude/skills/freeze/ — which doesn't exist.
Error Observed
PreToolUse:Edit hook error
Failed with non-blocking status code: bash: /../freeze/bin/check-freeze.sh: No such file or directory
This fires on every Edit and Write operation for the duration of the session.
Impact
~150–800ms wasted per Edit/Write operation (bash tries to exec a nonexistent path)
Noisy error shown in the UI on every file edit
The scope lock feature silently fails — gstack-investigate's "debug scope boundary" never actually enforces anything on standalone installs
Root Cause Detail
The YAML frontmatter hook is registered unconditionally at skill invocation time:
On standalone installs this always returns FREEZE_UNAVAILABLE, so the debug scope boundary silently never enforces anything — no error is shown, it just quietly skips writing freeze-dir.txt. The hook fires (and fails noisily), but the state file that controls what the hook actually blocks never gets written. The net result: scope lock is fully non-functional on standalone installs.
Two files need fixing, not one
There are two separate SKILL.md files for gstack-investigate:
Activity
ElliotDrel commentedon May 22, 2026
Additional Findings (from local fix)
Second broken site: scope lock check
The same bad path appears in the Scope Lock workflow section (not just the YAML hooks):
On standalone installs this always returns
FREEZE_UNAVAILABLE, so the debug scope boundary silently never enforces anything — no error is shown, it just quietly skips writingfreeze-dir.txt. The hook fires (and fails noisily), but the state file that controls what the hook actually blocks never gets written. The net result: scope lock is fully non-functional on standalone installs.Two files need fixing, not one
There are two separate SKILL.md files for
gstack-investigate:~/.claude/skills/gstack-investigate/SKILL.md(standalone marketplace install)~/.claude/skills/gstack/investigate/SKILL.md(bundled install)Plus the template:
~/.claude/skills/gstack/investigate/SKILL.md.tmplAll three have both broken spots.
Exact fix applied locally
Hook command (try bundled path first, fall back to standalone, exit cleanly if neither exists):
Scope lock check (handles both install conventions):
{ [ -x "${CLAUDE_SKILL_DIR}/../freeze/bin/check-freeze.sh" ] || [ -x "${CLAUDE_SKILL_DIR}/../gstack-freeze/bin/check-freeze.sh" ]; } && echo "FREEZE_AVAILABLE" || echo "FREEZE_UNAVAILABLE"v1.44.1.0 fix wave: post-windhoek paper-cut — 9 community PRs in one …