Reading the repo
Opening the box…
Reading the repo
Opening the box…
How to install on Windows
Use Garry Tan's exact Claude Code setup: 23 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA
Saved setup from 16 min ago
Will it work on Windows?
macOS and Linux get full support. Windows and Gemini models get minimal support: install and the core skills work, and nothing more is promised. See support tiers.
macOS: everything runs. With the Aside browser (macOS 15+) open and signed in, the browser skills, /make-pdf and /diagram use it and your real sessions; otherwise they use the bundled browser ./setup builds. gstack never installs Aside.
Linux: everything runs on the bundled browser; Aside is macOS-only, so the readiness probe says NEEDS_ASIDE: Linux once and the skills use gstack's own Chromium. If Chromium installs but cannot launch because the host blocks unprivileged user namespaces (Ubuntu 24.04+ AppArmor default), set GSTACK_CHROMIUM_NO_SANDBOX=1.
Windows users: gstack works on Windows 11 via Git Bash or WSL. Aside is macOS-only, so on Windows (and Linux) the browser skills, /make-pdf, and /diagram always use gstack's bundled browser. Node.js is required in addition to Bun — Bun has a known bug with Playwright's pipe transport on Windows (bun#4253). The browse server automatically falls back to Node.js. Make sure both bun and node are on your PATH. Native /cso additionally requires PowerShell (PowerShell 7 pwsh is preferred; Windows PowerShell 5.1 is the fallback) and Visual Studio 2022 Build Tools with the Desktop development with C++ workload; setup leaves that skill explicitly unavailable when they are absent. /cso is optional: if its native helper fails to build or publish, setup still finishes, says which step failed with the log path and retry command, and keeps an earlier helper when it has one (GSTACK_STRICT_BUILD=1 makes that failure fatal, as CI does).
Known issue: Windows Smart App Control (#2595). gstack's compiled binaries (browse, find-browse, design, pdf, gstack-global-discover) are built on your machine and unsigned, so Windows 11 with Smart App Control on refuses to start them; Git Bash shows Permission denied. setup detects this, names the blocked binaries and the skills that need them, and gstack-doctor reports them as blocked. Today's workarounds are running gstack inside WSL, or turning Smart App Control off. Details: troubleshooting. The sidebar terminal uses Consolas on Windows, so its text no longer renders spaced out.
From PowerShell, .\setup.ps1 (same arguments as ./setup) checks that Git for Windows, Bun and Node.js are on PATH, prints the winget command for any that are missing, and otherwise runs ./setup in Git Bash.
On Windows without Developer Mode (MSYS2 / Git Bash), setup falls back to file copies instead of symlinks because ln -snf produces frozen copies that don't refresh on git pull. Re-run cd ~/.claude/skills/gstack && ./setup after every git pull so your skill files match the repo. setup prints a one-line note reminding you. Unix and WSL keep symlinks and don't need the re-run.
Heads-upBuilding it yourself? It also needs 1 setting in .env (1 secret).
The maintainers included setup.ps1. Run it from the cloned folder after reading it.
powershell -ExecutionPolicy Bypass -File .\setup.ps1
Also: setup, scripts/setup-scc.sh
docs/install.mdThe README covers the two-step install. This page holds the details: what setup needs and how long it takes, the team-mode hook, the hooks setup registers in Claude Code, agent harness registration, and how to remove gstack.
./setup took 31 seconds after the clone on a 4-vCPU Linux cloud machine (v1.91.13.0, clean HOME, including the binary build and the Chromium download). Slower networks and laptops take longer.
Requirements: Claude Code, Git, Bun v1.4.2+ (the tested version; setup refuses Bun older than 1.3.3, which would let compiled tools read a project's .env, and warns in between), Node.js (Windows only). Recommended on macOS: the Aside browser (macOS 15+) — browser skills, /make-pdf, and /diagram drive it first, with your real logged-in sessions. Without it, ./setup builds gstack's own bundled browser and the same skills use that. /cso additionally needs a Bun release with all four --no-compile-autoload-* build flags plus a native toolchain: a static-capable C compiler on Linux, Xcode command-line tools on macOS, or Visual Studio 2022 Build Tools with Desktop development with C++ on Windows. If those are absent, setup installs everything else, removes stale CSO helpers, and /cso reports not assessed with the prerequisite.
When qualified CSO runtime images are published, setup gives each automatic preload a 30-second window plus a bounded setup allowance for the declared catalog. For slower registries, set an integer such as GSTACK_CSO_IMAGE_PULL_TIMEOUT_SECONDS=120 (accepted range: 5–300 seconds). One image timing out does not consume the remaining images' windows; setup reports partial progress and a later run resumes from exact digests already present in local Docker. The complete preload is capped at one hour.
From inside your repo, (cd ~/.claude/skills/gstack && ./setup --team) && ~/.claude/skills/gstack/bin/gstack-team-init required switches you to team mode and bootstraps the repo so teammates get gstack automatically (the README has the full paste, which also commits the change).
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). Team mode follows the stable channel, as every new install does: the tagged release cut Monday and Thursday mornings, never more than once every 72 hours except for an important change (within about a day) or a security or regression fix, and never more than a week stale, not every merge to main. gstack-config set update_channel main follows every merge instead; see releases.md.
Swap required for optional if you'd rather nudge teammates than block them.
required blocks skills with a hook that runs on Node.js, so every teammate needs Node.js on PATH, on every OS. With Claude Code 2.1.295 or later the hook also blocks when it can't run (no Node.js, or a missing .claude/hooks/check-gstack.cjs); older Claude Code lets skills through in that case.
./setup registers./setup registers up to three hook families in ~/.claude/settings.json, every one pointing at the canonical install. In team mode it registers the SessionStart auto-update hook (gstack-session-update; ./setup --no-team skips it). It asks before registering the AskUserQuestion PreToolUse (preference enforcement) and PostToolUse (deterministic answer capture) hooks that /plan-tune uses at runtime; ./setup never writes them silently. docs/uninstall.md lists the same families when telling you what to remove by hand.
./setup also registers one default-on Stop hook:
gstack-timeline-stop (closes dangling session-timeline entries when a session
is interrupted; fail-open — 2s internal budget, always exits 0, can never block
a session). Opt out persistently with ./setup --no-timeline-stop-hook — the
choice lands in the timeline_stop_hook config key, survives upgrades, and an
explicit "no" removes a live registration. GSTACK_TIMELINE_STOP_HOOK=no and
gstack-config set timeline_stop_hook no work too (flag > env > config).
./setup --no-team skips it for that run, gstack-settings-hook remove-source --source gstack-timeline-stop removes it by hand, and gstack-uninstall
removes it too.
Hook registration is canonical-only: every hook command points at the stable
~/.claude/skills/gstack install, never the tree setup ran from, so deleting
a worktree or Conductor workspace can't leave dead hooks erroring in your
sessions. Every ./setup run also heals first: gstack-settings-hook prune-stale --repoint removes dead gstack hook entries, re-points stale ones
at the stable install, and collapses duplicates, printing one line (and
writing a backup beside the file) only when it changed something.
Run inside OpenClaw, Hermes or a Dot, ./setup also registers gstack's skills
with that harness, in the harness's own skills folder, and prints every path
it wrote. It never does this when --host names another host or with
--local. Turn it off with ./setup --no-harness-auto or
GSTACK_HARNESS_AUTO=0. Per-harness details, any other harness, and why QM is not available yet: hosts.md.
See uninstall.md.
Then run powershell -ExecutionPolicy Bypass -File .\setup.ps1. It stops at the first error and is safe to run again. Servers and tests aren't started; it lists them at the end. Read it first.
Compare yours with the README's “Platform notes” list above before installing anything.
Needs Git: winget install Git.Git
git clone https://github.com/garrytan/gstack.git cd gstack
Node.js 24.18.0, Bun
winget install CoreyButler.NVMforWindows nvm install 24 nvm use 24 powershell -c "irm bun.sh/install.ps1 | iex"
Fill in secrets: ANTHROPIC_API_KEY
Copy-Item .env.example .env
bun install
bun run dev
bun run test
/office-hours and describe what you're building. It pushes back on your framing and writes a design doc the other skills read./review on any branch with changes. It finds the bugs that pass CI but break in production, and fixes the obvious ones./qa on your staging URL, or on an isolated local API, CLI, job or webhook. It opens a real browser, reproduces bugs and fixes them.Stop there. You'll know if this is for you. When you want the whole sprint, /autoplan reviews a plan end to end and /ship runs tests, review and the PR.
No reports for Windows yet.
GitManual AI Agent reads the 10 key files and writes a step-by-step guide for Windows. Once written, it's saved for everyone.