The gstack repository turns coding agents into a sprint of role-based slash commands
garrytan/gstack packages Markdown skills that give Claude Code and other agents planning, review, QA, security and release roles, with a team mode that auto-updates every session.
What gstack is
garrytan/gstack is a set of slash commands, written as Markdown skills, that the README says turns Claude Code and other coding agents into a virtual engineering team. Each command plays a role: a CEO who rethinks the product, an eng manager who locks architecture, a designer who catches AI slop, a reviewer who finds production bugs, a QA lead who opens a real browser, a security officer who runs OWASP + STRIDE audits, and a release engineer who ships the PR. The repository description counts 23 opinionated tools.
The project is MIT licensed and written mainly in TypeScript. It was created on 2026-03-11 and last pushed on 2026-11-06. In the GitHub trending snapshot it had 140272 stars, 612 of them gained in the last day, and 20713 forks. The README presents it as the author’s own everyday setup, shared as open source.
How the commands fit together
The README frames gstack as a process rather than a collection of tools, with skills ordered the way a sprint runs: Think, Plan, Build, Review, Test, Ship, Reflect. Each step hands its output to the next. /office-hours asks forcing questions about the product and writes a design doc that /plan-ceo-review reads. /plan-eng-review writes a test plan that /qa picks up, and /ship verifies that the bugs /review caught are fixed.
The suggested first session is short: run /office-hours and describe what you are building, run /review on a branch with changes, and run /qa on a staging URL or on an isolated local API, CLI, job or webhook. /autoplan reviews a plan end to end, and /ship runs tests, review and the PR.
Other entries in the skills table include /plan-design-review, which rates each design dimension 0-10, /investigate, a root-cause debugger that stops after 3 failed fixes, and /test-audit, which reports tests that cost more than they protect and changes nothing unless a batch is approved.
Installing it
The README lists Claude Code, Git, Bun v1.4.2+ and Node.js on Windows as requirements. Setup refuses Bun older than 1.3.3, which the README says would let compiled tools read a project’s .env. The Claude Code install is a prompt pasted into the agent, built around this command:
git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && ./setup
The same prompt also tells Claude to add a “gstack” section to CLAUDE.md saying to use the /browse skill from gstack for all web browsing and never use the claude-in-chrome MCP tools. That is worth reading before pasting, since it changes standing agent instructions.
Other agents are selected with --host:
git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/gstack
cd ~/gstack && ./setup --host auto # or: ./setup --host codex
./setup --status # one row per install: host, tier, scope, version, path
Claude Code is the only host at the full tier, and the only one where safety skills are enforced by hooks. OpenAI Codex CLI, OpenCode, Cursor, Factory Droid, Kiro, GitHub Copilot CLI, Antigravity CLI and Gemini CLI are experimental, with safety skills advisory rather than blocked.
Team mode and updates
Team mode runs ./setup --team and gstack-team-init required, which bootstraps a repository so teammates get gstack automatically and commits the change. Every Claude Code session then starts with an auto-update check, throttled to once an hour. Team mode follows the stable channel: the twice-weekly tagged release (Monday and Thursday, at most once every 72 hours) plus verified security and regression fixes. gstack-config set update_channel main follows every merge instead. Swapping required for optional nudges teammates rather than blocking them, and the required hook needs Node.js on PATH.
A team that turns on required mode is accepting upstream updates on that schedule in every session, so the channel setting is the main control the README offers.
Source: garrytan/gstack on GitHub