diff --git a/CLAUDE.md b/CLAUDE.md index 9480e572..b6aad004 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -186,10 +186,10 @@ failure modes. The sidebar spans 5 files across 2 codebases (extension + server) with non-obvious ordering dependencies. The doc exists to prevent the kind of silent failures that come from not understanding the cross-component flow. -## Vendored symlink awareness +## Dev symlink awareness When developing gstack, `.claude/skills/gstack` may be a symlink back to this -working directory (gitignored). This means skill changes are **live immediately** — +working directory (gitignored). This means skill changes are **live immediately**, great for rapid iteration, risky during big refactors where half-written skills could break other Claude Code sessions using gstack concurrently. @@ -204,9 +204,11 @@ symlink or a real copy. If it's a symlink to your working directory, be aware th with a SKILL.md symlink inside (e.g., `qa/SKILL.md -> gstack/qa/SKILL.md`). This ensures Claude discovers them as top-level skills, not nested under `gstack/`. Names are either short (`qa`) or namespaced (`gstack-qa`), controlled by -`skill_prefix` in `~/.gstack/config.yaml`. When vendoring into a project, run -`./setup` after symlinking to create the per-skill directories. Pass `--no-prefix` -or `--prefix` to skip the interactive prompt. +`skill_prefix` in `~/.gstack/config.yaml`. Pass `--no-prefix` or `--prefix` to +skip the interactive prompt. + +**Note:** Vendoring gstack into a project's repo is deprecated. Use global install ++ `./setup --team` instead. See README.md for team mode instructions. **For plan reviews:** When reviewing plans that modify skill templates or the gen-skill-docs pipeline, consider whether the changes should be tested in isolation diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 55cdccd0..15378e21 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -367,7 +367,7 @@ to `gstack/...`, so they'll resolve to the global install automatically. ### Switching prefix mode -If you vendored gstack with one prefix setting and want to switch: +If you installed gstack with one prefix setting and want to switch: ```bash cd .claude/skills/gstack && ./setup --no-prefix # switch to /qa, /ship diff --git a/README.md b/README.md index 69b73024..12a74ba5 100644 --- a/README.md +++ b/README.md @@ -48,11 +48,23 @@ Open Claude Code and paste this. Claude does the rest. > Install gstack: run **`git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && ./setup`** then add a "gstack" section to CLAUDE.md that says to use the /browse skill from gstack for all web browsing, never use mcp\_\_claude-in-chrome\_\_\* tools, and lists the available skills: /office-hours, /plan-ceo-review, /plan-eng-review, /plan-design-review, /design-consultation, /design-shotgun, /design-html, /review, /ship, /land-and-deploy, /canary, /benchmark, /browse, /connect-chrome, /qa, /qa-only, /design-review, /setup-browser-cookies, /setup-deploy, /retro, /investigate, /document-release, /codex, /cso, /autoplan, /plan-devex-review, /devex-review, /careful, /freeze, /guard, /unfreeze, /gstack-upgrade, /learn. Then ask the user if they also want to add gstack to the current project so teammates get it. -### Step 2: Add to your repo so teammates get it (optional) +### Step 2: Team mode — auto-update for shared repos (recommended) -> Add gstack to this project: run **`cp -Rf ~/.claude/skills/gstack .claude/skills/gstack && rm -rf .claude/skills/gstack/.git && cd .claude/skills/gstack && ./setup`** then add a "gstack" section to this project's CLAUDE.md that says to use the /browse skill from gstack for all web browsing, never use mcp\_\_claude-in-chrome\_\_\* tools, lists the available skills: /office-hours, /plan-ceo-review, /plan-eng-review, /plan-design-review, /design-consultation, /design-shotgun, /design-html, /review, /ship, /land-and-deploy, /canary, /benchmark, /browse, /connect-chrome, /qa, /qa-only, /design-review, /setup-browser-cookies, /setup-deploy, /retro, /investigate, /document-release, /codex, /cso, /autoplan, /plan-devex-review, /devex-review, /careful, /freeze, /guard, /unfreeze, /gstack-upgrade, /learn, and tells Claude that if gstack skills aren't working, run `cd .claude/skills/gstack && ./setup` to build the binary and register skills. +Every developer installs globally, updates happen automatically: -Real files get committed to your repo (not a submodule), so `git clone` just works. Everything lives inside `.claude/`. Nothing touches your PATH or runs in the background. +```bash +cd ~/.claude/skills/gstack && ./setup --team +``` + +Then bootstrap your repo so teammates get it: + +```bash +cd +~/.claude/skills/gstack/bin/gstack-team-init required # or: optional +git add .claude/ CLAUDE.md && git commit -m "require gstack for AI-assisted work" +``` + +No vendored files in your repo, no version drift, no manual upgrades. Every Claude Code session starts with a fast auto-update check (throttled to once/hour, network-failure-safe, completely silent). > **Contributing or need full history?** The commands above use `--depth 1` for a fast install. If you plan to contribute or need full git history, do a full clone instead: > ```bash diff --git a/bin/gstack-uninstall b/bin/gstack-uninstall index 2cf3d528..4f7b0fc1 100755 --- a/bin/gstack-uninstall +++ b/bin/gstack-uninstall @@ -227,6 +227,13 @@ if [ -n "$_GIT_ROOT" ]; then fi fi +# ─── Remove SessionStart hook from Claude Code settings ───── +SETTINGS_HOOK="$(dirname "$0")/gstack-settings-hook" +SESSION_UPDATE="$(dirname "$0")/gstack-session-update" +if [ -x "$SETTINGS_HOOK" ]; then + "$SETTINGS_HOOK" remove "$SESSION_UPDATE" 2>/dev/null && REMOVED+=("SessionStart hook") || true +fi + # ─── Remove global state ──────────────────────────────────── if [ "$KEEP_STATE" -eq 0 ] && [ -d "$STATE_DIR" ]; then rm -rf "$STATE_DIR"