From a77e8ea578c40c405b24675ac401991bae0c6d19 Mon Sep 17 00:00:00 2001 From: Michael Chihlas Date: Fri, 24 Apr 2026 23:17:06 -0400 Subject: [PATCH] chore: bootstrap gstack team mode Per gstack team-mode install: adds a PreToolUse hook that blocks skill usage when gstack isn't installed globally, so contributors are prompted to install it. Un-ignores the two required files (.claude/settings.json, .claude/hooks/check-gstack.sh) while keeping settings.local.json and other Claude state ignored. Co-Authored-By: Claude Opus 4.7 --- .claude/hooks/check-gstack.sh | 20 ++++++++++++++++++++ .claude/settings.json | 15 +++++++++++++++ .gitignore | 6 +++++- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100755 .claude/hooks/check-gstack.sh create mode 100644 .claude/settings.json diff --git a/.claude/hooks/check-gstack.sh b/.claude/hooks/check-gstack.sh new file mode 100755 index 00000000..2ade7db9 --- /dev/null +++ b/.claude/hooks/check-gstack.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Block skill usage when gstack is not installed globally. + +if [ ! -d "$HOME/.claude/skills/gstack/bin" ]; then + cat >&2 <<'MSG' +BLOCKED: gstack is not installed globally. + +gstack is required for AI-assisted work in this repo. + +Install it: + git clone --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack + cd ~/.claude/skills/gstack && ./setup --team + +Then restart your AI coding tool. +MSG + echo '{"permissionDecision":"deny","message":"gstack is required but not installed. See stderr for install instructions."}' + exit 0 +fi + +echo '{}' diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 00000000..13181ed7 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,15 @@ +{ + "hooks": { + "PreToolUse": [ + { + "matcher": "Skill", + "hooks": [ + { + "type": "command", + "command": "\"$CLAUDE_PROJECT_DIR/.claude/hooks/check-gstack.sh\"" + } + ] + } + ] + } +} diff --git a/.gitignore b/.gitignore index e54fdc7a..63631b0e 100644 --- a/.gitignore +++ b/.gitignore @@ -207,7 +207,11 @@ marimo/_lsp/ __marimo__/ # Claude Code (local config, agents, settings) -.claude/ +.claude/* +!.claude/settings.json +!.claude/hooks/ +.claude/hooks/* +!.claude/hooks/check-gstack.sh .agents/ # Database dumps