{"slug": "gstack", "title": "Gstack", "summary": "Y Combinator CEO Garry Tan released gstack, an open-source tool that turns Claude Code into a virtual engineering team, enabling him to ship 40+ features in 60 days while running YC full-time. Tan claims his 2026 coding pace is 810 times his 2013 rate, attributing the productivity gain entirely to AI-powered tooling.", "body_md": "\"I don't think I've typed like a line of code probably since December, basically, which is an extremely large change.\" —\n\n[Andrej Karpathy], No Priors podcast, March 2026\n\nWhen I heard Karpathy say this, I wanted to find out how. How does one person ship like a team of twenty? Peter Steinberger built [OpenClaw](https://github.com/openclaw/openclaw) — 247K GitHub stars — essentially solo with AI agents. The revolution is here. A single builder with the right tooling can move faster than a traditional team.\n\nI'm [Garry Tan](https://x.com/garrytan), President & CEO of [Y Combinator](https://www.ycombinator.com/). I've worked with thousands of startups — Coinbase, Instacart, Rippling — when they were one or two people in a garage. Before YC, I was one of the first eng/PM/designers at Palantir, cofounded Posterous (sold to Twitter), and built Bookface, YC's internal social network.\n\n**gstack is my answer.** I've been building products for twenty years, and right now I'm shipping more products than I ever have. In the last 60 days: 3 production services, 40+ shipped features, part-time, while running YC full-time. On logical code change — not raw LOC, which AI inflates — my 2026 run rate is **~810× my 2013 pace** (11,417 vs 14 logical lines/day). Year-to-date (through April 18), 2026 has already produced **240× the entire 2013 year**. Measured across 40 public + private `garrytan/*`\n\nrepos including Bookface, after excluding one demo repo. AI wrote most of it. The point isn't who typed it, it's what shipped.\n\nThe LOC critics aren't wrong that raw line counts inflate with AI. They are wrong that normalized-for-inflation, I'm less productive. I'm more productive, by a lot. Full methodology, caveats, and reproduction script:\n\n.[On the LOC Controversy]\n\n**2026 — 1,237 contributions and counting:**\n\n**2013 — when I built Bookface at YC (772 contributions):**\n\nSame person. Different era. The difference is the tooling.\n\n**gstack is how I do it.** It turns Claude Code into a virtual engineering team — 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. Twenty-three specialists and eight power tools, all slash commands, all Markdown, all free, MIT license.\n\nThis is my open source software factory. I use it every day. I'm sharing it because these tools should be available to everyone.\n\nFork it. Improve it. Make it yours. And if you want to hate on free open source software — you're welcome to, but I'd rather you just try it first.\n\n**Who this is for:**\n\n**Founders and CEOs**— especially technical ones who still want to ship** First-time Claude Code users**— structured roles instead of a blank prompt** Tech leads and staff engineers**— rigorous review, QA, and release automation on every PR\n\n- Install gstack (30 seconds — see below)\n- Run\n`/office-hours`\n\n— describe what you're building - Run\n`/plan-ceo-review`\n\non any feature idea - Run\n`/review`\n\non any branch with changes - Run\n`/qa`\n\non your staging URL - Stop there. You'll know if this is for you.\n\n**Requirements:** [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Git](https://git-scm.com/), [Bun](https://bun.sh/) v1.0+, [Node.js](https://nodejs.org/) (Windows only)\n\nOpen Claude Code and paste this. Claude does the rest.\n\nInstall gstack: run\n\nthen 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, /setup-gbrain, /retro, /investigate, /document-release, /document-generate, /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.`git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && ./setup`\n\nFrom inside your repo, paste this. Switches you to team mode, bootstraps the repo so teammates get gstack automatically, and commits the change:\n\n```\n(cd ~/.claude/skills/gstack && ./setup --team) && ~/.claude/skills/gstack/bin/gstack-team-init required && git add .claude/ CLAUDE.md && git commit -m \"require gstack for AI-assisted work\"\n```\n\nNo 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).\n\nSwap `required`\n\nfor `optional`\n\nif you'd rather nudge teammates than block them.\n\nOpenClaw spawns Claude Code sessions via ACP, so every gstack skill just works when Claude Code has gstack installed. Paste this to your OpenClaw agent:\n\nInstall gstack: run\n\n`git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && ./setup`\n\nto install gstack for Claude Code. Then add a \"Coding Tasks\" section to AGENTS.md that says: when spawning Claude Code sessions for coding work, tell the session to use gstack skills. Include these examples — security audit: \"Load gstack. Run /cso\", code review: \"Load gstack. Run /review\", QA test a URL: \"Load gstack. Run /qa https://...\", build a feature end-to-end: \"Load gstack. Run /autoplan, implement the plan, then run /ship\", plan before building: \"Load gstack. Run /office-hours then /autoplan. Save the plan, don't implement.\"\n\n**After setup, just talk to your OpenClaw agent naturally:**\n\n| You say | What happens |\n|---|---|\n| \"Fix the typo in README\" | Simple — Claude Code session, no gstack needed |\n| \"Run a security audit on this repo\" | Spawns Claude Code with `Run /cso` |\n| \"Build me a notifications feature\" | Spawns Claude Code with /autoplan → implement → /ship |\n| \"Help me plan the v2 API redesign\" | Spawns Claude Code with /office-hours → /autoplan, saves plan |\n\nSee [docs/OPENCLAW.md](/garrytan/gstack/blob/main/docs/OPENCLAW.md) for advanced dispatch routing and\nthe gstack-lite/gstack-full prompt templates.\n\nFour methodology skills that work directly in your OpenClaw agent, no Claude Code session needed. Install from ClawHub:\n\n```\nclawhub install gstack-openclaw-office-hours gstack-openclaw-ceo-review gstack-openclaw-investigate gstack-openclaw-retro\n```\n\n| Skill | What it does |\n|---|---|\n`gstack-openclaw-office-hours` |\nProduct interrogation with 6 forcing questions |\n`gstack-openclaw-ceo-review` |\nStrategic challenge with 4 scope modes |\n`gstack-openclaw-investigate` |\nRoot cause debugging methodology |\n`gstack-openclaw-retro` |\nWeekly engineering retrospective |\n\nThese are conversational skills. Your OpenClaw agent runs them directly via chat.\n\ngstack works on 10 AI coding agents, not just Claude. Setup auto-detects which agents you have installed:\n\n```\ngit clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/gstack\ncd ~/gstack && ./setup\n```\n\nOr target a specific agent with `./setup --host <name>`\n\n:\n\n| Agent | Flag | Skills install to |\n|---|---|---|\n| OpenAI Codex CLI | `--host codex` |\n`~/.codex/skills/gstack-*/` |\n| OpenCode | `--host opencode` |\n`~/.config/opencode/skills/gstack-*/` |\n| Cursor | `--host cursor` |\n`~/.cursor/skills/gstack-*/` |\n| Factory Droid | `--host factory` |\n`~/.factory/skills/gstack-*/` |\n| Slate | `--host slate` |\n`~/.slate/skills/gstack-*/` |\n| Kiro | `--host kiro` |\n`~/.kiro/skills/gstack-*/` |\n| Hermes | `--host hermes` |\n`~/.hermes/skills/gstack-*/` |\n| GBrain (mod) | `--host gbrain` |\n`~/.gbrain/skills/gstack-*/` |\n\n**Want to add support for another agent?** See [docs/ADDING_A_HOST.md](/garrytan/gstack/blob/main/docs/ADDING_A_HOST.md).\nIt's one TypeScript config file, zero code changes.\n\n```\nYou:    I want to build a daily briefing app for my calendar.\nYou:    /office-hours\nClaude: [asks about the pain — specific examples, not hypotheticals]\n\nYou:    Multiple Google calendars, events with stale info, wrong locations.\n        Prep takes forever and the results aren't good enough...\n\nClaude: I'm going to push back on the framing. You said \"daily briefing\n        app.\" But what you actually described is a personal chief of\n        staff AI.\n        [extracts 5 capabilities you didn't realize you were describing]\n        [challenges 4 premises — you agree, disagree, or adjust]\n        [generates 3 implementation approaches with effort estimates]\n        RECOMMENDATION: Ship the narrowest wedge tomorrow, learn from\n        real usage. The full vision is a 3-month project — start with\n        the daily briefing that actually works.\n        [writes design doc → feeds into downstream skills automatically]\n\nYou:    /plan-ceo-review\n        [reads the design doc, challenges scope, runs 10-section review]\n\nYou:    /plan-eng-review\n        [ASCII diagrams for data flow, state machines, error paths]\n        [test matrix, failure modes, security concerns]\n\nYou:    Approve plan. Exit plan mode.\n        [writes 2,400 lines across 11 files. ~8 minutes.]\n\nYou:    /review\n        [AUTO-FIXED] 2 issues. [ASK] Race condition → you approve fix.\n\nYou:    /qa https://staging.myapp.com\n        [opens real browser, clicks through flows, finds and fixes a bug]\n\nYou:    /ship\n        Tests: 42 → 51 (+9 new). PR: github.com/you/app/pull/42\n```\n\nYou said \"daily briefing app.\" The agent said \"you're building a chief of staff AI\" — because it listened to your pain, not your feature request. Eight commands, end to end. That is not a copilot. That is a team.\n\ngstack is a process, not a collection of tools. The skills run in the order a sprint runs:\n\n**Think → Plan → Build → Review → Test → Ship → Reflect**\n\nEach skill feeds into the next. `/office-hours`\n\nwrites a design doc that `/plan-ceo-review`\n\nreads. `/plan-eng-review`\n\nwrites a test plan that `/qa`\n\npicks up. `/review`\n\ncatches bugs that `/ship`\n\nverifies are fixed. Nothing falls through the cracks because every step knows what came before it.\n\n| Skill | Your specialist | What they do |\n|---|---|---|\n`/office-hours` |\nYC Office Hours |\nStart here. Six forcing questions that reframe your product before you write code. Pushes back on your framing, challenges premises, generates implementation alternatives. Design doc feeds into every downstream skill. |\n`/plan-ceo-review` |\nCEO / Founder |\nRethink the problem. Find the 10-star product hiding inside the request. Four modes: Expansion, Selective Expansion, Hold Scope, Reduction. |\n`/plan-eng-review` |\nEng Manager |\nLock in architecture, data flow, diagrams, edge cases, and tests. Forces hidden assumptions into the open. |\n`/plan-design-review` |\nSenior Designer |\nRates each design dimension 0-10, explains what a 10 looks like, then edits the plan to get there. AI Slop detection. Interactive — one AskUserQuestion per design choice. |\n`/plan-devex-review` |\nDeveloper Experience Lead |\nInteractive DX review: explores developer personas, benchmarks against competitors' TTHW, designs your magical moment, traces friction points step by step. Three modes: DX EXPANSION, DX POLISH, DX TRIAGE. 20-45 forcing questions. |\n`/design-consultation` |\nDesign Partner |\nBuild a complete design system from scratch. Researches the landscape, proposes creative risks, generates realistic product mockups. |\n`/review` |\nStaff Engineer |\nFind the bugs that pass CI but blow up in production. Auto-fixes the obvious ones. Flags completeness gaps. |\n`/investigate` |\nDebugger |\nSystematic root-cause debugging. Iron Law: no fixes without investigation. Traces data flow, tests hypotheses, stops after 3 failed fixes. |\n`/design-review` |\nDesigner Who Codes |\nSame audit as /plan-design-review, then fixes what it finds. Atomic commits, before/after screenshots. |\n`/devex-review` |\nDX Tester |\nLive developer experience audit. Actually tests your onboarding: navigates docs, tries the getting started flow, times TTHW, screenshots errors. Compares against `/plan-devex-review` scores — the boomerang that shows if your plan matched reality. |\n`/design-shotgun` |\nDesign Explorer |\n\"Show me options.\" Generates 4-6 AI mockup variants, opens a comparison board in your browser, collects your feedback, and iterates. Taste memory learns what you like. Repeat until you love something, then hand it to `/design-html` . |\n`/design-html` |\nDesign Engineer |\nTurn a mockup into production HTML that actually works. Pretext computed layout: text reflows, heights adjust, layouts are dynamic. 30KB, zero deps. Detects React/Svelte/Vue. Smart API routing per design type (landing page vs dashboard vs form). The output is shippable, not a demo. |\n`/qa` |\nQA Lead |\nTest your app, find bugs, fix them with atomic commits, re-verify. Auto-generates regression tests for every fix. |\n`/qa-only` |\nQA Reporter |\nSame methodology as /qa but report only. Pure bug report without code changes. |\n`/pair-agent` |\nMulti-Agent Coordinator |\nShare your browser with any AI agent. One command, one paste, connected. Works with OpenClaw, Hermes, Codex, Cursor, or anything that can curl. Each agent gets its own tab. Auto-launches headed mode so you watch everything. Auto-starts ngrok tunnel for remote agents. Scoped tokens, tab isolation, rate limiting, activity attribution. |\n`/cso` |\nChief Security Officer |\nOWASP Top 10 + STRIDE threat model. Zero-noise: 17 false positive exclusions, 8/10+ confidence gate, independent finding verification. Each finding includes a concrete exploit scenario. |\n`/ship` |\nRelease Engineer |\nSync main, run tests, audit coverage, push, open PR. Bootstraps test frameworks if you don't have one. |\n`/land-and-deploy` |\nRelease Engineer |\nMerge the PR, wait for CI and deploy, verify production health. One command from \"approved\" to \"verified in production.\" |\n`/canary` |\nSRE |\nPost-deploy monitoring loop. Watches for console errors, performance regressions, and page failures. |\n`/benchmark` |\nPerformance Engineer |\nBaseline page load times, Core Web Vitals, and resource sizes. Compare before/after on every PR. |\n`/document-release` |\nTechnical Writer |\nUpdate all project docs to match what you just shipped. Catches stale READMEs automatically. Builds a Diataxis coverage map (reference / how-to / tutorial / explanation) so gaps are visible in the PR body. |\n`/document-generate` |\nDocumentation Author |\nGenerate missing docs from scratch using the Diataxis framework. Researches the codebase first, then writes reference / how-to / tutorial / explanation docs that actually match the code. Invokable standalone or chained from `/document-release` when the coverage map finds gaps. Learn more:\n|\n`/retro` |\nEng Manager |\nTeam-aware weekly retro. Per-person breakdowns, shipping streaks, test health trends, growth opportunities. `/retro global` runs across all your projects and AI tools (Claude Code, Codex, Gemini). |\n`/browse` |\nQA Engineer |\nGive the agent eyes. Real Chromium browser, real clicks, real screenshots. ~100ms per command. `/open-gstack-browser` launches GStack Browser with sidebar, anti-bot stealth, and auto model routing. |\n`/setup-browser-cookies` |\nSession Manager |\nImport cookies from your real browser (Chrome, Arc, Brave, Edge) into the headless session. Test authenticated pages. |\n`/autoplan` |\nReview Pipeline |\nOne command, fully reviewed plan. Runs CEO → design → eng review automatically with encoded decision principles. Surfaces only taste decisions for your approval. |\n`/spec` |\nSpec Author |\nTurn vague intent into a precise, executable spec in five phases (why, scope, technical with mandatory code-reading, draft, file). Codex quality gate before file (blocks below 7/10), fail-closed secret redaction, dedupe against existing issues, archive to `$GSTACK_STATE_ROOT/projects/$SLUG/specs/` for team-corpus recall. `--execute` spawns `claude -p` in a fresh worktree; `/ship` auto-closes the source issue on merge. Plan-mode aware. |\n`/learn` |\nMemory |\nManage what gstack learned across sessions. Review, search, prune, and export project-specific patterns, pitfalls, and preferences. Learnings compound across sessions so gstack gets smarter on your codebase over time. |\n`/make-pdf` |\nPublisher |\nMarkdown in, publication-quality document out. Mermaid and excalidraw fences render as vector diagrams, fully offline. Images scale to the page and never truncate; wide diagrams get their own landscape page. `--to html` emits one self-contained file, `--to docx` a Word doc. |\n`/diagram` |\nDiagram Maker |\nEnglish in, editable diagram out. Emits a triplet: mermaid source, `.excalidraw` you can open and edit on excalidraw.com (hand-drawn style), and rendered SVG/PNG. Zero network. Embed the source in markdown and `/make-pdf` renders it. |\n\n| Building for... | Plan stage (before code) | Live audit (after shipping) |\n|---|---|---|\nEnd users (UI, web app, mobile) |\n`/plan-design-review` |\n`/design-review` |\nDevelopers (API, CLI, SDK, docs) |\n`/plan-devex-review` |\n`/devex-review` |\nArchitecture (data flow, perf, tests) |\n`/plan-eng-review` |\n`/review` |\nAll of the above |\n`/autoplan` (runs CEO → design → eng → DX, auto-detects which apply) |\n— |\n\n| Skill | What it does |\n|---|---|\n`/codex` |\nSecond Opinion — independent code review from OpenAI Codex CLI. Three modes: review (pass/fail gate), adversarial challenge, and open consultation. Cross-model analysis when both `/review` and `/codex` have run. |\n`/careful` |\nSafety Guardrails — warns before destructive commands (rm -rf, DROP TABLE, force-push). Say \"be careful\" to activate. Override any warning. |\n`/freeze` |\nEdit Lock — restrict file edits to one directory. Prevents accidental changes outside scope while debugging. |\n`/guard` |\nFull Safety — `/careful` + `/freeze` in one command. Maximum safety for prod work. |\n`/unfreeze` |\nUnlock — remove the `/freeze` boundary. |\n`/open-gstack-browser` |\nGStack Browser — launch GStack Browser with sidebar, anti-bot stealth, auto model routing (Sonnet for actions, Opus for analysis), one-click cookie import, and Claude Code integration. Clean up pages, take smart screenshots, edit CSS, and pass info back to your terminal. |\n`/setup-deploy` |\nDeploy Configurator — one-time setup for `/land-and-deploy` . Detects your platform, production URL, and deploy commands. |\n`/setup-gbrain` |\nGBrain Onboarding — from zero to running gbrain in under 5 minutes. PGLite local, Supabase existing URL, or auto-provision a new Supabase project via Management API. MCP registration for Claude Code + per-repo trust triad (read-write/read-only/deny).\n|\n`/sync-gbrain` |\nKeep Brain Current — re-index this repo's code into gbrain via `gbrain sources add` + `gbrain sync --strategy code` , refresh the `## GBrain Search Guidance` block in CLAUDE.md, and auto-remove guidance when the capability check fails. `--incremental` (default), `--full` , `--dry-run` . Idempotent; safe to re-run. |\n`/gstack-upgrade` |\nSelf-Updater — upgrade gstack to latest. Detects global vs vendored install, syncs both, shows what changed. |\n`/ios-qa` |\niOS Live-Device QA (v1.43.0.0+) — drive a real iPhone over USB CoreDevice via an embedded `StateServer` in the app. Read Swift source, codegen typed `@Observable` accessors, run the agent loop. Optional `--tailnet` flag exposes the device to OpenClaw or any HTTP-capable agent on your Tailscale tailnet so remote agents can run iOS QA without ever touching the hardware. Capability-tier allowlist (observe/interact/mutate/restore), per-device session lock, audit log. |\n`/ios-fix` , `/ios-design-review` , `/ios-clean` , `/ios-sync` |\niOS bug-fix loop, designer's-eye HIG audit, debug-bridge cleanup, and accessor resync. See `docs/skills.md` . End-to-end walkthrough:\n|\n\nBeyond the slash-command skills, gstack ships standalone CLIs for workflows that don't belong inside a session:\n\n| Command | What it does |\n|---|---|\n`gstack-model-benchmark` |\nCross-model benchmark — run the same prompt through Claude, GPT (via Codex CLI), and Gemini; compare latency, tokens, cost, and (optionally) LLM-judge quality score. Auth detected per provider, unavailable providers skip cleanly. Output as table, JSON, or markdown. `--dry-run` validates flags + auth without spending API calls. |\n`gstack-taste-update` |\nDesign taste learning — writes approvals and rejections from `/design-shotgun` into a persistent per-project taste profile. Decays 5%/week. Feeds back into future variant generation so the system learns what you actually pick. |\n`gstack-ios-qa-daemon` |\niOS QA daemon — Mac-side broker between an agent and a connected iPhone over USB CoreDevice. Loopback by default; `--tailnet` opens a Tailscale-facing listener with identity-gated capability tiers. Single-instance via flock on `~/.gstack/ios-qa-daemon.pid` . See\n|\n`gstack-ios-qa-mint` |\niOS allowlist manager — owner-grant CLI for the tailnet allowlist. `grant` /`revoke` /`list` against `~/.gstack/ios-qa-allowlist.json` (mode 0600). Remote agents never auto-allowlist; this is the explicit-intent path. |\n\nSet `gstack-config set checkpoint_mode continuous`\n\nand skills auto-commit your work as you go with a `WIP:`\n\nprefix plus a structured `[gstack-context]`\n\nbody (decisions, remaining work, failed approaches). Survives crashes and context switches. `/context-restore`\n\nreads those commits to reconstruct session state. `/ship`\n\nfilter-squashes WIP commits before the PR (preserving non-WIP commits) so bisect stays clean. Push is opt-in via `checkpoint_push=true`\n\n— default is local-only so you don't trigger CI on every WIP commit.\n\nTwo new browser primitives compound the gstack agent over time:\n\n— agent saves a per-site note (e.g., \"LinkedIn's Apply button lives in an iframe\") that fires automatically next time it visits that hostname. Quarantined → active after 3 successful uses → optional cross-project promotion via`$B domain-skill save`\n\n`$B domain-skill promote-to-global`\n\n. Storage lives alongside`/learn`\n\n's per-project learnings file. Full reference:.[docs/domain-skills.md](/garrytan/gstack/blob/main/docs/domain-skills.md)— raw Chrome DevTools Protocol escape hatch for the rare case curated commands miss. Deny-default: methods must be explicitly added to`$B cdp <Domain.method>`\n\n`browse/src/cdp-allowlist.ts`\n\nwith a one-line justification. Two-tier mutex serializes browser-scoped CDP calls against per-tab work. Output for data-exfil methods is wrapped in the UNTRUSTED envelope.\n\nWant raw CDP with no rails, no allowlist, no daemon — just thin transport from agent to Chrome?\n\n[browser-use/browser-harness-js]is a different philosophy (agent-authored helpers vs gstack's curated commands) and a good fit if you don't want gstack's security stack. The two can coexist: gstack's`$B cdp`\n\nand harness can both attach to the same Chrome via Playwright's`newCDPSession`\n\n.\n\n[Deep dives with examples and philosophy for every skill →](/garrytan/gstack/blob/main/docs/skills.md)\n\nAndrej Karpathy's [AI coding rules](https://github.com/forrestchang/andrej-karpathy-skills) (17K stars) nail four failure modes: wrong assumptions, overcomplexity, orthogonal edits, imperative over declarative. gstack's workflow skills enforce all four. `/office-hours`\n\nforces assumptions into the open before code is written. The Confusion Protocol stops Claude from guessing on architectural decisions. `/review`\n\ncatches unnecessary complexity and drive-by edits. `/ship`\n\ntransforms tasks into verifiable goals with test-first execution. If you already use Karpathy-style CLAUDE.md rules, gstack is the workflow enforcement layer that makes them stick across entire sprints, not just single prompts.\n\ngstack works well with one sprint. It gets interesting with ten running at once.\n\n**Design is at the heart.** `/design-consultation`\n\nbuilds your design system from scratch, researches what's out there, proposes creative risks, and writes `DESIGN.md`\n\n. But the real magic is the shotgun-to-HTML pipeline.\n\n** /design-shotgun is how you explore.** You describe what you want. It generates 4-6 AI mockup variants using GPT Image. Then it opens a comparison board in your browser with all variants side by side. You pick favorites, leave feedback (\"more whitespace\", \"bolder headline\", \"lose the gradient\"), and it generates a new round. Repeat until you love something. Taste memory kicks in after a few rounds so it starts biasing toward what you actually like. No more describing your vision in words and hoping the AI gets it. You see options, pick the good ones, and iterate visually.\n\n** /design-html makes it real.** Take that approved mockup (from\n\n`/design-shotgun`\n\n, a CEO plan, a design review, or just a description) and turn it into production-quality HTML/CSS. Not the kind of AI HTML that looks fine at one viewport width and breaks everywhere else. This uses Pretext for computed text layout: text actually reflows on resize, heights adjust to content, layouts are dynamic. 30KB overhead, zero dependencies. It detects your framework (React, Svelte, Vue) and outputs the right format. Smart API routing picks different Pretext patterns depending on whether it's a landing page, dashboard, form, or card layout. The output is something you'd actually ship, not a demo.** /qa was a massive unlock.** It let me go from 6 to 12 parallel workers. Claude Code saying\n\n*\"I SEE THE ISSUE\"*and then actually fixing it, generating a regression test, and verifying the fix — that changed how I work. The agent has eyes now.\n\n**Smart review routing.** Just like at a well-run startup: CEO doesn't have to look at infra bug fixes, design review isn't needed for backend changes. gstack tracks what reviews are run, figures out what's appropriate, and just does the smart thing. The Review Readiness Dashboard tells you where you stand before you ship.\n\n**Test everything.** `/ship`\n\nbootstraps test frameworks from scratch if your project doesn't have one. Every `/ship`\n\nrun produces a coverage audit. Every `/qa`\n\nbug fix generates a regression test. 100% test coverage is the goal — tests make vibe coding safe instead of yolo coding.\n\n** /document-release is the engineer you never had.** It reads every doc file in your project, cross-references the diff, and updates everything that drifted. README, ARCHITECTURE, CONTRIBUTING, CLAUDE.md, TODOS — all kept current automatically. And now\n\n`/ship`\n\nauto-invokes it — docs stay current without an extra command.**Real browser mode.** `/open-gstack-browser`\n\nlaunches GStack Browser, an AI-controlled Chromium with anti-bot stealth, custom branding, and the sidebar extension baked in. Sites like Google and NYTimes work without captchas. The menu bar says \"GStack Browser\" instead of \"Chrome for Testing.\" Your regular Chrome stays untouched. All existing browse commands work unchanged. `$B disconnect`\n\nreturns to headless. The browser stays alive as long as the window is open... no idle timeout killing it while you're working.\n\n**Sidebar agent — your AI browser assistant.** Type natural language in the Chrome side panel and a child Claude instance executes it. \"Navigate to the settings page and screenshot it.\" \"Fill out this form with test data.\" \"Go through every item in this list and extract the prices.\" The sidebar auto-routes to the right model: Sonnet for fast actions (click, navigate, screenshot) and Opus for reading and analysis. Each task gets up to 5 minutes. The sidebar agent runs in an isolated session, so it won't interfere with your main Claude Code window. One-click cookie import right from the sidebar footer.\n\n**Personal automation.** The sidebar agent isn't just for dev workflows. Example: \"Browse my kid's school parent portal and add all the other parents' names, phone numbers, and photos to my Google Contacts.\" Two ways to get authenticated: (1) log in once in the headed browser, your session persists, or (2) click the \"cookies\" button in the sidebar footer to import cookies from your real Chrome. Once authenticated, Claude navigates the directory, extracts the data, and creates the contacts.\n\n**Prompt injection defense.** Hostile web pages try to hijack your sidebar agent. gstack ships a layered defense: a 22MB ML classifier bundled with the browser scans every page and tool output locally, a Claude Haiku transcript check votes on the full conversation shape, a random canary token in the system prompt catches session exfil attempts across text, tool args, URLs, and file writes, and a verdict combiner requires two classifiers to agree before blocking (prevents single-model false positives on Stack Overflow-style instruction pages). A shield icon in the sidebar header shows status (green/amber/red). Opt in to a 721MB DeBERTa-v3 ensemble via `GSTACK_SECURITY_ENSEMBLE=deberta`\n\nfor 2-of-3 agreement. Emergency kill switch: `GSTACK_SECURITY_OFF=1`\n\n. See [ARCHITECTURE.md](/garrytan/gstack/blob/main/ARCHITECTURE.md#prompt-injection-defense-sidebar-agent) for the full stack.\n\n**Browser handoff when the AI gets stuck.** Hit a CAPTCHA, auth wall, or MFA prompt? `$B handoff`\n\nopens a visible Chrome at the exact same page with all your cookies and tabs intact. Solve the problem, tell Claude you're done, `$B resume`\n\npicks up right where it left off. The agent even suggests it automatically after 3 consecutive failures.\n\n** /pair-agent is cross-agent coordination.** You're in Claude Code. You also have OpenClaw running. Or Hermes. Or Codex. You want them both looking at the same website. Type\n\n`/pair-agent`\n\n, pick your agent, and a GStack Browser window opens so you can watch. The skill prints a block of instructions. Paste that block into the other agent's chat. It exchanges a one-time setup key for a session token, creates its own tab, and starts browsing. You see both agents working in the same browser, each in their own tab, neither able to interfere with the other. If ngrok is installed, the tunnel starts automatically so the other agent can be on a completely different machine. Same-machine agents get a zero-friction shortcut that writes credentials directly. This is the first time AI agents from different vendors can coordinate through a shared browser with real security: scoped tokens, tab isolation, rate limiting, domain restrictions, and activity attribution.**Multi-AI second opinion.** `/codex`\n\ngets an independent review from OpenAI's Codex CLI — a completely different AI looking at the same diff. Three modes: code review with a pass/fail gate, adversarial challenge that actively tries to break your code, and open consultation with session continuity. When both `/review`\n\n(Claude) and `/codex`\n\n(OpenAI) have reviewed the same branch, you get a cross-model analysis showing which findings overlap and which are unique to each.\n\n**Safety guardrails on demand.** Say \"be careful\" and `/careful`\n\nwarns before any destructive command — rm -rf, DROP TABLE, force-push, git reset --hard. `/freeze`\n\nlocks edits to one directory while debugging so Claude can't accidentally \"fix\" unrelated code. `/guard`\n\nactivates both. `/investigate`\n\nauto-freezes to the module being investigated.\n\n**Proactive skill suggestions.** gstack notices what stage you're in — brainstorming, reviewing, debugging, testing — and suggests the right skill. Don't like it? Say \"stop suggesting\" and it remembers across sessions.\n\ngstack is powerful with one sprint. It is transformative with ten running at once.\n\n[Conductor](https://conductor.build) runs multiple Claude Code sessions in parallel — each in its own isolated workspace. One session running `/office-hours`\n\non a new idea, another doing `/review`\n\non a PR, a third implementing a feature, a fourth running `/qa`\n\non staging, and six more on other branches. All at the same time. I regularly run 10-15 parallel sprints — that's the practical max right now.\n\nThe sprint structure is what makes parallelism work. Without a process, ten agents is ten sources of chaos. With a process — think, plan, build, review, test, ship — each agent knows exactly what to do and when to stop. You manage them the way a CEO manages a team: check in on the decisions that matter, let the rest run.\n\ngstack skills have voice-friendly trigger phrases. Say what you want naturally — \"run a security check\", \"test the website\", \"do an engineering review\" — and the right skill activates. You don't need to remember slash command names or acronyms.\n\nIf gstack is installed on your machine:\n\n```\n~/.claude/skills/gstack/bin/gstack-uninstall\n```\n\nThis handles skills, symlinks, global state (`~/.gstack/`\n\n), project-local state, browse daemons, and temp files. Use `--keep-state`\n\nto preserve config and analytics. Use `--force`\n\nto skip confirmation.\n\nIf you don't have the repo cloned (e.g. you installed via a Claude Code paste and later deleted the clone):\n\n```\n# 1. Stop browse daemons\npkill -f \"gstack.*browse\" 2>/dev/null || true\n\n# 2. Remove per-skill directories whose SKILL.md points into gstack/\nfind ~/.claude/skills -mindepth 1 -maxdepth 1 -type d ! -name gstack 2>/dev/null |\nwhile IFS= read -r dir; do\n  link=\"$dir/SKILL.md\"\n  [ -L \"$link\" ] || continue\n  target=$(readlink \"$link\" 2>/dev/null) || continue\n  case \"$target\" in\n    gstack/*|*/gstack/*)\n      rm -f \"$link\"\n      rmdir \"$dir\" 2>/dev/null || true\n      ;;\n  esac\ndone\n\n# 3. Remove gstack\nrm -rf ~/.claude/skills/gstack\n\n# 4. Remove global state\nrm -rf ~/.gstack\n\n# 5. Remove integrations (skip any you never installed)\nrm -rf ~/.codex/skills/gstack* 2>/dev/null\nrm -rf ~/.factory/skills/gstack* 2>/dev/null\nrm -rf ~/.kiro/skills/gstack* 2>/dev/null\nrm -rf ~/.openclaw/skills/gstack* 2>/dev/null\n\n# 6. Remove temp files\nrm -f /tmp/gstack-* 2>/dev/null\n\n# 7. Per-project cleanup (run from each project root)\nrm -rf .gstack .gstack-worktrees .claude/skills/gstack 2>/dev/null\nrm -rf .agents/skills/gstack* .factory/skills/gstack* 2>/dev/null\n```\n\nThe uninstall script does not edit CLAUDE.md. In each project where gstack was added, remove the `## gstack`\n\nand `## Skill routing`\n\nsections.\n\n`~/Library/Caches/ms-playwright/`\n\n(macOS) is left in place because other tools may share it. Remove it if nothing else needs it.\n\nFree, MIT licensed, open source. No premium tier, no waitlist.\n\nI open sourced how I build software. You can fork it and make it your own.\n\nWe're hiring.Want to ship real products at AI-coding speed and help harden gstack? Come work at YC —[ycombinator.com/software]Extremely competitive salary and equity. San Francisco, Dogpatch District.\n\n[GBrain](https://github.com/garrytan/gbrain) is a persistent knowledge base for AI agents — think of it as the memory your agent actually keeps between sessions. GStack gives you a one-command path from zero to \"it's running, my agent can call it.\"\n\n```\n/setup-gbrain\n```\n\nFour paths, pick one:\n\n**Supabase, existing URL**— your cloud agent already provisioned a brain; paste the Session Pooler URL, now this laptop uses the same data.** Supabase, auto-provision**— paste a Supabase Personal Access Token; the skill creates a new project, polls to healthy, fetches the pooler URL, hands it to`gbrain init`\n\n. ~90 seconds end-to-end.**PGLite local**— zero accounts, zero network, ~30 seconds. Isolated brain on this Mac only. Great for try-first; migrate to Supabase later with`/setup-gbrain --switch`\n\n.**Remote gbrain MCP**— your brain runs on another machine (Tailscale, ngrok, internal LAN) or a teammate's server; paste an MCP URL and bearer token. Optionally pair with a local PGLite for symbol-aware code search in split-engine mode. Best for cross-machine memory without standing up a local DB.\n\nAfter init, the skill offers to register gbrain as an MCP server for Claude Code (`claude mcp add gbrain -- gbrain serve`\n\n) so `gbrain search`\n\n, `gbrain put`\n\n, etc. show up as first-class typed tools — not bash shell-outs.\n\n**Keeping the brain current.** Run `/sync-gbrain`\n\nfrom any repo to re-index its code into gbrain (incremental by default, `--full`\n\nfor a full reindex, `--dry-run`\n\nto preview). The skill registers the cwd as a federated source via `gbrain sources add`\n\n, runs `gbrain sync --strategy code`\n\n, and writes a `## GBrain Search Guidance`\n\nblock to your project's CLAUDE.md so the agent prefers `gbrain search`\n\n/`code-def`\n\n/`code-refs`\n\nover Grep. The block is removed automatically if the capability check fails — no stale guidance pointing at tools that aren't installed.\n\n**Per-remote trust policy.** Each repo on your machine gets one of three tiers:\n\n`read-write`\n\n— agent can search the brain AND write new pages back from this repo`read-only`\n\n— agent can search but never writes (best for multi-client consultants: search the shared brain, don't contaminate it with Client A's work while in Client B's repo)`deny`\n\n— no gbrain interaction at all\n\nThe skill asks once per repo. The decision is sticky across worktrees and branches of the same remote.\n\n**GStack memory sync (different feature, same private-repo infra).** Optionally pushes your gstack state (learnings, CEO plans, design docs, retros, developer profile) to a private git repo so your memory follows you across machines, with a one-time privacy prompt (everything allowlisted / artifacts only / off) and a defense-in-depth secret scanner that blocks AWS keys, tokens, PEM blocks, and JWTs before they leave your machine.\n\n```\ngstack-brain-init\n```\n\n**Running gstack in Conductor?** Conductor explicitly strips `ANTHROPIC_API_KEY`\n\nand `OPENAI_API_KEY`\n\nfrom every workspace's process env, so paid evals and gbrain embeddings won't work out of the box. Set `GSTACK_ANTHROPIC_API_KEY`\n\nand `GSTACK_OPENAI_API_KEY`\n\nin Conductor's workspace env config instead — gstack's TS entry points promote them to canonical names at runtime. Full details and the contributor checklist for adding the import to new entry points: [Conductor + GSTACK_* env vars](/garrytan/gstack/blob/main/USING_GBRAIN_WITH_GSTACK.md#conductor--gstack_-env-vars).\n\n**Full monty — every scenario, every flag, every bin helper, every troubleshooting step:** [USING_GBRAIN_WITH_GSTACK.md](/garrytan/gstack/blob/main/USING_GBRAIN_WITH_GSTACK.md)\n\nOther references: [docs/gbrain-sync.md](/garrytan/gstack/blob/main/docs/gbrain-sync.md) (sync-specific guide) • [docs/gbrain-sync-errors.md](/garrytan/gstack/blob/main/docs/gbrain-sync-errors.md) (error index)\n\n| Doc | What it covers |\n|---|---|\n|\n\n[Diagrams & Document Formats](/garrytan/gstack/blob/main/docs/howto-diagrams-and-formats.md)`--to html|docx`\n\n, `/diagram`\n\ntriplets[Builder Ethos](/garrytan/gstack/blob/main/ETHOS.md)[Using GBrain with GStack](/garrytan/gstack/blob/main/USING_GBRAIN_WITH_GSTACK.md)`/setup-gbrain`\n\n[GBrain Sync](/garrytan/gstack/blob/main/docs/gbrain-sync.md)[Architecture](/garrytan/gstack/blob/main/ARCHITECTURE.md)[Browser Reference](/garrytan/gstack/blob/main/BROWSER.md)`/browse`\n\n[Contributing](/garrytan/gstack/blob/main/CONTRIBUTING.md)[Changelog](/garrytan/gstack/blob/main/CHANGELOG.md)gstack includes **opt-in** usage telemetry to help improve the project. Here's exactly what happens:\n\n**Default is off.** Nothing is sent anywhere unless you explicitly say yes.**On first run,** gstack asks if you want to share anonymous usage data. You can say no.**What's sent (if you opt in):** skill name, duration, success/fail, gstack version, OS. That's it.**What's never sent:** code, file paths, repo names, branch names, prompts, or any user-generated content.**Change anytime:**`gstack-config set telemetry off`\n\ndisables everything instantly.\n\nData is stored in [Supabase](https://supabase.com) (open source Firebase alternative). The schema is in [ supabase/migrations/](/garrytan/gstack/blob/main/supabase/migrations) — you can verify exactly what's collected. The Supabase publishable key in the repo is a public key (like a Firebase API key) — row-level security policies deny all direct access. Telemetry flows through validated edge functions that enforce schema checks, event type allowlists, and field length limits.\n\n**Local analytics are always available.** Run `gstack-analytics`\n\nto see your personal usage dashboard from the local JSONL file — no remote data needed.\n\n**Skill not showing up?** `cd ~/.claude/skills/gstack && ./setup`\n\n`/browse`\n\nfails?`cd ~/.claude/skills/gstack && bun install && bun run build`\n\n**Stale install?** Run `/gstack-upgrade`\n\n— or set `auto_upgrade: true`\n\nin `~/.gstack/config.yaml`\n\n**Want shorter commands?** `cd ~/.claude/skills/gstack && ./setup --no-prefix`\n\n— switches from `/gstack-qa`\n\nto `/qa`\n\n. Your choice is remembered for future upgrades.\n\n**Want namespaced commands?** `cd ~/.claude/skills/gstack && ./setup --prefix`\n\n— switches from `/qa`\n\nto `/gstack-qa`\n\n. Useful if you run other skill packs alongside gstack.\n\n**Codex says \"Skipped loading skill(s) due to invalid SKILL.md\"?** Your Codex skill descriptions are stale. Fix: `cd ~/.codex/skills/gstack && git pull && ./setup --host codex`\n\n— or for repo-local installs: `cd \"$(readlink -f .agents/skills/gstack)\" && git pull && ./setup --host codex`\n\n**Windows users:** gstack works on Windows 11 via Git Bash or WSL. Node.js is required in addition to Bun — Bun has a known bug with Playwright's pipe transport on Windows ([bun#4253](https://github.com/oven-sh/bun/issues/4253)). The browse server automatically falls back to Node.js. Make sure both `bun`\n\nand `node`\n\nare on your PATH.\n\nOn Windows without Developer Mode (MSYS2 / Git Bash), `setup`\n\nfalls back to file copies instead of symlinks because `ln -snf`\n\nproduces frozen copies that don't refresh on `git pull`\n\n. **Re-run cd ~/.claude/skills/gstack && ./setup after every git pull** so your skill files match the repo.\n\n`setup`\n\nprints a one-line note reminding you. Unix and WSL keep symlinks and don't need the re-run.**Claude says it can't see the skills?** Make sure your project's `CLAUDE.md`\n\nhas a gstack section. Add this:\n\n```\n## gstack\nUse /browse from gstack for all web browsing. Never use mcp__claude-in-chrome__* tools.\nAvailable skills: /office-hours, /plan-ceo-review, /plan-eng-review, /plan-design-review,\n/design-consultation, /design-shotgun, /design-html, /review, /ship, /land-and-deploy,\n/canary, /benchmark, /browse, /open-gstack-browser, /qa, /qa-only, /design-review,\n/setup-browser-cookies, /setup-deploy, /setup-gbrain, /sync-gbrain, /retro, /investigate,\n/document-release, /document-generate, /codex, /cso, /autoplan, /pair-agent, /careful, /freeze,\n/guard, /unfreeze, /gstack-upgrade, /learn.\n```\n\nMIT. Free forever. Go build something.", "url": "https://wpnews.pro/news/gstack", "canonical_source": "https://github.com/garrytan/gstack", "published_at": "2026-06-27 07:30:33+00:00", "updated_at": "2026-06-27 07:34:59.196711+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "large-language-models", "generative-ai", "ai-agents"], "entities": ["Garry Tan", "Y Combinator", "Andrej Karpathy", "Claude Code", "OpenClaw", "Peter Steinberger", "Coinbase", "Instacart"], "alternates": {"html": "https://wpnews.pro/news/gstack", "markdown": "https://wpnews.pro/news/gstack.md", "text": "https://wpnews.pro/news/gstack.txt", "jsonld": "https://wpnews.pro/news/gstack.jsonld"}}