跳到正文
原文
web-github-trending ·· 8 天前精选AI 评分78

YC 总裁 Garry Tan 开源 gstack:把 Claude Code 变成虚拟工程团队

garrytan / gstack

AI 导读

Y Combinator 总裁兼 CEO Garry Tan 开源 gstack,一套把 Claude Code 变成虚拟工程团队的技能集,包含 23 个专家角色和 8 个工具,全部以 slash command 和 Markdown 实现,MIT 许可免费使用。

推荐理由

YC 总裁开源的 Claude Code 技能集,把编码流程拆成 23 个专家角色和 8 个工具,MIT 许可可直接安装。

正文 · AI 翻译

译文尚不完整,完整内容请切换到原文。

"我想我大概从去年12月以来就没打过一行代码,基本上是这样,这是一个极其巨大的变化。" —— Andrej Karpathy,No Priors 播客,2026年3月

当我听到 Karpathy 这么说时,我想弄清楚是怎么做到的。一个人怎么能像二十人的团队一样交付?Peter Steinberger 构建了 OpenClaw —— 247K GitHub 星标 —— 基本上靠 AI 智能体单枪匹马完成。革命已经到来。一个拥有合适工具的独立构建者可以比传统团队行动得更快。

我是 Garry Tan,Y Combinator 的总裁兼 CEO。我与成千上万家初创公司合作过 —— Coinbase、Instacart、Rippling —— 那时它们还只是车库里的一两个人。在 YC 之前,我是 Palantir 最早的工程师/产品经理/设计师之一,联合创立了 Posterous(被 Twitter 收购),并构建了 Bookface,YC 的内部社交网络。

gstack 就是我的答案。 我已经做了二十年产品,而现在我交付的产品比以往任何时候都多。在过去 60 天里:3 个生产服务,40+ 已交付功能,兼职完成,同时全职运营 YC。按逻辑代码变更计算 —— 不是 AI 会虚增的原始代码行数 —— 我 2026 年的速率是 2013 年节奏的约 810 倍(11,417 对 14 逻辑行/天)。年初至今(截至 4 月 18 日),2026 年已经产出了 2013 年全年的 240 倍。在包括 Bookface 在内的 40 个公开 + 私有 garrytan/* 仓库中测量,排除一个演示仓库后。AI 写了其中大部分。重点不是谁打的字,而是交付了什么。

代码行数批评者说得没错,原始行数会因 AI 而虚增。但他们错了的是,按通胀归一化后,我的生产力更低。我的生产力更高,而且高得多。完整方法论、注意事项和复现脚本:关于代码行数争议。

2026 年 —— 1,237 次贡献且仍在增加:

GitHub contributions 2026 — 1,237 contributions, massive acceleration in Jan-Mar

2013 年 —— 我在 YC 构建 Bookface 时(772 次贡献):

GitHub contributions 2013 — 772 contributions building Bookface at YC

同一个人。不同的时代。区别在于工具。

gstack 就是我做到这一点的方式。 它把 Claude Code 变成一个虚拟工程团队 —— 一个重新思考产品的 CEO,一个锁定架构的工程经理,一个捕捉 AI 垃圾的设计师,一个发现生产 bug 的审查者,一个打开真实浏览器的 QA 负责人,一个运行 OWASP + STRIDE 审计的安全官,以及一个交付 PR 的发布工程师。二十三个专家和八个强大工具,全是斜杠命令,全是 Markdown,全部免费,MIT 许可证。

这是我的开源软件工厂。我每天都用它。我分享它是因为这些工具应该对所有人可用。

Fork 它。改进它。让它成为你的。如果你想吐槽免费开源软件 —— 欢迎,但我更希望你先试试。

这是给谁的:

  • 创始人和 CEO —— 尤其是仍然想交付的技术型创始人
  • 首次使用 Claude Code 的用户 —— 结构化的角色,而不是空白提示
  • 技术负责人和资深工程师 —— 每个 PR 上都有严格的审查、QA 和发布自动化

快速开始

  1. 安装 gstack(大约 30 秒的设置 —— 见下文)
  2. 运行 /office-hours —— 描述你正在构建的内容
  3. 对任何功能想法运行 /plan-ceo-review
  4. 对任何有变更的分支运行 /review
  5. 在你的 staging URL 或隔离的本地 API、CLI、任务或 webhook 上运行 /qa
  6. 到此为止。你会知道这是否适合你。

安装 —— 大约 30 秒

./setup 在 4 核 vCPU 的 Linux 云主机上克隆后耗时 31 秒(v1.91.13.0,干净的 HOME,包括二进制构建和 Chromium 下载)。网络较慢和笔记本电脑上耗时更长。

要求: Claude Code、Git、Bun v1.0+、Node.js(仅 Windows)。macOS 上推荐: Aside 浏览器(macOS 15+)——浏览器技能、/make-pdf 和 /diagram 会优先驱动它,并使用你真实登录的会话。没有它时,./setup 会构建 gstack 自带的浏览器,同样的技能会使用那个。/cso 还需要一个带有全部四个 --no-compile-autoload-* 构建标志的 Bun 版本以及原生工具链:Linux 上支持静态编译的 C 编译器,macOS 上的 Xcode 命令行工具,或 Windows 上带有使用 C++ 的桌面开发的 Visual Studio 2022 Build Tools。如果这些不存在,安装程序会安装其他所有内容,移除过时的 CSO 辅助程序,并且 /cso 会报告 not assessed 以及该先决条件。

当合格的 CSO 运行时镜像发布后,安装程序会为每个自动预加载提供 30 秒窗口,外加针对所声明目录的有界安装配额。对于较慢的注册表,请设置一个整数,例如 GSTACK_CSO_IMAGE_PULL_TIMEOUT_SECONDS=120(可接受范围:5–300 秒)。一个镜像超时不会消耗其余镜像的窗口;安装程序会报告部分进度,后续运行会从本地 Docker 中已存在的精确摘要继续。完整预加载上限为一小时。

第 1 步:在你的机器上安装

打开 Claude Code 并粘贴此内容。Claude 会完成其余工作。

安装 gstack:运行 git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && ./setup,然后在 CLAUDE.md 中添加一个“gstack”部分,说明所有网页浏览都使用 gstack 的 /browse 技能,绝不使用 mcp__claude-in-chrome__* 工具,并列出可用技能:/office-hours、/plan-ceo-review、/plan-eng-review、/plan-design-review、/design-consultation、/design-shotgun、/design-html、/review、/deslop-shared-libs、/test-audit、/ship、/land-and-deploy、/canary、/benchmark、/browse、/connect-chrome、/qa、/qa-only、/design-review、/scrape、/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。然后询问用户是否也想将 gstack 添加到当前项目,以便队友也能获得它。

第 2 步:团队模式——共享仓库的自动更新(推荐)

在你的仓库内粘贴此内容。它会将你切换到团队模式,引导仓库以便队友自动获得 gstack,并提交更改:

(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"

你的仓库中没有 vendored 文件,没有版本漂移,无需手动升级。每个 Claude Code 会话开始时都会进行快速的自动更新检查(限制为每小时一次,网络故障安全,完全静默)。

如果你更倾向于提醒队友而不是阻止他们,请将 required 替换为 optional。

OpenClaw

OpenClaw 通过 ACP 生成 Claude Code 会话,因此当 Claude Code 安装了 gstack 时,每个 gstack 技能都能直接使用。将此内容粘贴到你的 OpenClaw 代理:

安装 gstack:运行 git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && ./setup 为 Claude Code 安装 gstack。然后在 AGENTS.md 中添加一个“Coding Tasks”部分,内容为:当为编码工作启动 Claude Code 会话时,告诉该会话使用 gstack 技能。包含以下示例——安全审计:“Load gstack. Run /cso”,代码审查:“Load gstack. Run /review”,对 URL 进行 QA 测试:“Load gstack. Run /qa https://...”,端到端构建功能:“Load gstack. Run /autoplan, implement the plan, then run /ship”,先规划再构建:“Load gstack. Run /office-hours then /autoplan. Save the plan, don't implement.”

设置完成后,只需自然地与你的 OpenClaw agent 对话:

你说 会发生什么
“Fix the typo in README” 简单——Claude Code 会话,无需 gstack
“Run a security audit on this repo” 使用 Run /cso 启动 Claude Code
“Build me a notifications feature” 使用 /autoplan → implement → /ship 启动 Claude Code
“Help me plan the v2 API redesign” 使用 /office-hours → /autoplan 启动 Claude Code,并保存计划

有关高级调度路由以及 gstack-lite/gstack-full 提示模板,请参阅 docs/OPENCLAW.md。

原生 OpenClaw 技能(通过 ClawHub)

四个方法论技能,可直接在你的 OpenClaw agent 中运行,无需 Claude Code 会话。从 ClawHub 安装:

clawhub install gstack-openclaw-office-hours gstack-openclaw-ceo-review gstack-openclaw-investigate gstack-openclaw-retro
技能 功能
gstack-openclaw-office-hours 通过 6 个强制性问题进行产品拷问
gstack-openclaw-ceo-review 通过 4 种范围模式进行战略挑战
gstack-openclaw-investigate 根因调试方法论
gstack-openclaw-retro 每周工程回顾

这些是对话式技能。你的 OpenClaw agent 会直接通过聊天运行它们。

其他 AI Agents

gstack 可在比 Claude 更多的 agent 上运行。裸 ./setup 安装仅适用于 Claude Code。使用 --host <name> 选择另一个 agent,或使用 --host auto 为这台机器上检测到的每个 agent 安装:

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

显式 --host X 仅为 X 安装,且绝不会更改另一个 agent 的安装。/gstack-upgrade 会刷新它注册的每个安装,每个主机一行,并说明哪些失败了。

层级:full 已通过真实工作流运行认证(参见 Certify your host);experimental 可安装并通过一致性测试,但尚无认证运行;instruction-only 不安装任何内容:设置会打印需要复制的内容。

Agent 层级 安装 首次调用 安全技能 外部审查需求 修复
Claude Code full --host claude(默认) /office-hours 强制执行(hooks 阻止) Codex CLI,已登录 ./setup --host claude
OpenAI Codex CLI experimental --host codex → ${CODEX_HOME:-~/.codex}/skills/gstack-*/ 请求 gstack-office-hours 建议性,不阻止 Claude Code CLI,已登录 ./setup --host codex
OpenCode experimental --host opencode → ~/.config/opencode/skills/gstack-*/ + /gstack-* 命令 /gstack-office-hours 建议性,不阻止 Codex CLI,已登录 ./setup --host opencode
Cursor experimental --host cursor → ~/.cursor/skills/gstack-*/ 请求 gstack-office-hours 建议性,不阻止 Codex CLI,已登录 ./setup --host cursor
Factory Droid experimental --host factory → ~/.factory/skills/gstack-*/ 请求 gstack-office-hours 建议性,不阻止 Codex CLI,已登录 ./setup --host factory
Kiro experimental --host kiro → ~/.kiro/skills/gstack-*/ 请求 gstack-office-hours 建议性,不阻止 Codex CLI,已登录 ./setup --host kiro
GitHub Copilot CLI experimental --host copilot → ~/.copilot/skills/gstack-*/ /gstack-office-hours 建议性,不阻止 Codex CLI,已登录 ./setup --host copilot
Slate instruction-only --host slate(指向 Claude 安装;Slate 读取 .claude/skills) 通过 Claude 安装调用 /office-hours 建议性,不阻止 — ./setup --host claude
OpenClaw instruction-only --host openclaw(打印摘要路径;ACP 启动 Claude Code——docs/OPENCLAW.md) “Load gstack. Run /review” 建议性,不阻止 — 升级后重新复制摘要
Hermes instruction-only --host hermes(打印摘要路径和 gen:skill-docs --host hermes) 复制摘要,或自行渲染技能 建议性,不阻止 — 升级后重新复制摘要
GBrain (mod) instruction-only --host gbrain(brain-aware 变体从 GBrain 仓库发布) — 建议性,不阻止 — —

Copilot 通过带前缀的名称调用 gstack 技能(/gstack-review),因为 /review 是 Copilot 的内置功能。Copilot 会忽略技能钩子,所以 /careful 和 /freeze 在那里只能提供建议,并且除 ~/.copilot 之外的 COPILOT_HOME 尚不受支持(setup 会拒绝且不做任何更改)。

外部评审要求所选的 CLI 已安装并完成身份验证:在 Codex 中使用 gstack 时是 Claude Code,在其他 harness 上是 Codex。外部 harness 将这些命令识别为 /gstack-claude-code 和 /gstack-codex;每个 harness 都会省略自己的包装器。显式指定 provider 的请求会保留该 provider。现有的 codex_reviews 设置会在支持的情况下控制自动外部评审,无论选择的是哪个 provider。

/claude 已重命名为 /claude-code。重新运行 ./setup --host <name> 以迁移受管理的安装,包括共享该 checkout 的其他 harness。如果替换生成或安装失败,setup 会保留先前的安装并打印修复说明。

仅指令层级(任何读取规则的 agent——Zed、Amp、Jules、副项目): 将 2KB 摘要复制到 agents-digest/gstack-AGENTS.md 你的 agent 会读取的位置(例如,将其追加到项目的 AGENTS.md 中)。 它承载了 gstack 的理念、复用阶梯和语气规则——无需安装。该 摘要的第一行显示其 gstack 版本;升级后请重新复制。

对于 Codex,setup 会从 ${CODEX_HOME:-~/.codex}/config.toml 读取顶层 model 并生成匹配的行为 配置,当未配置可用模型时回退到 gpt-6-astra。 gpt-5.6-sol 会自动接收有界范围的指令, 完成所请求的 lake,而不会扩展到相邻的清理或推测性的 加固。Sol 配置仅支持精确匹配:带日期的快照和其他 5.6 变体会获得通用 GPT 配置,setup 会对类似 gpt-5.6-sol-2026-08-01 的近似情况发出警告。使用 ./setup --host codex --model <id> 覆盖检测——该 覆盖仅适用于该次运行;在你的 Codex config.toml 中设置 model 以 使其在升级后持续生效。更改 Codex 模型后,重新运行 ./setup --host codex 以重新生成技能。

gstack 使用哪个 Codex 模型。对于每次 Codex 调用(外部声音、 /codex、review 和 ship 对抗性检查),gstack 按以下 顺序选择模型:你为该请求指定的模型,然后是 GSTACK_CODEX_MODEL,然后是 你的 Codex config.toml 中的 model(对于原生 codex review,优先 review_model; 自定义 CODEX_HOME 会被采用),最后才是 gstack 的默认值 gpt-6-astra。在花费任何资源之前,它会打印所选模型及其来源, 例如 CODEX_MODEL: gpt-5.6-terra (exec; source: ~/.codex/config.toml model)。 如果你的选择无效或你的账户无法使用它,gstack 会停止并给出 修复消息,并报告外部评审不可用。它绝不会静默 切换到默认值。嵌套的 Codex 评审也会在隐藏已安装技能的情况下运行(-c skills.include_instructions=false),因此评审不会变成 完整的嵌套技能运行。运行时模型选择与上述 setup 时的 行为配置是分开的。/claude-code(在 Codex 上是 gstack-claude-code) 保留 Claude 配置的模型。设置 GSTACK_CLAUDE_MODEL=<model> 或在请求中指定模型以在本次调用中覆盖它,包括 恢复的咨询。有关 capture、judge 和 benchmark 模型选择,请参阅 eval 默认值与覆盖。

设计二进制文件($D)默认使用 OpenAI 的 gpt-5.5,图像 生成通过 gpt-image-2 完成。设置 GSTACK_DESIGN_MODEL=<model> 以在图像生成和截图分析中 使用另一个 gpt-5 级模型;如果 OpenAI 拒绝它,错误会指明 GSTACK_DESIGN_MODEL。使用 bun run design/scripts/live-model-check.ts 对照默认值检查密钥。

想添加对另一个 agent 的支持?请参阅 docs/ADDING_A_HOST.md。 渲染一个新 agent 只需一个 TypeScript 配置文件;安装它还需要一个 setup 分支和一致性套件,并且它最初是实验性的。

看它运行

You:    I want to build a daily briefing app for my calendar.
You:    /office-hours
Claude: [asks about the pain — specific examples, not hypotheticals]

You:    Multiple Google calendars, events with stale info, wrong locations.
        Prep takes forever and the results aren't good enough...

Claude: I'm going to push back on the framing. You said "daily briefing
        app." But what you actually described is a personal chief of
        staff AI.
        [extracts 5 capabilities you didn't realize you were describing]
        [challenges 4 premises — you agree, disagree, or adjust]
        [generates 3 implementation approaches with effort estimates]
        RECOMMENDATION: Ship the narrowest wedge tomorrow, learn from
        real usage. The full vision is a 3-month project — start with
        the daily briefing that actually works.
        [writes design doc → feeds into downstream skills automatically]

You:    /plan-ceo-review
        [reads the design doc, challenges scope, runs 10-section review]

You:    /plan-eng-review
        [ASCII diagrams for data flow, state machines, error paths]
        [test matrix, failure modes, security concerns]

You:    Approve plan. Exit plan mode.
        [writes 2,400 lines across 11 files. ~8 minutes.]

You:    /review
        [AUTO-FIXED] 2 issues. [ASK] Race condition → you approve fix.

You:    /qa https://staging.myapp.com
        [opens real browser, clicks through flows, finds and fixes a bug]

You:    /ship
        Tests: 42 → 51 (+9 new). PR: github.com/you/app/pull/42

你说的是“每日简报应用”。Agent 说的是“你在打造一个幕僚长 AI”——因为它倾听的是你的痛点,而不是你的功能需求。八条命令,端到端。那不是 copilot。那是一支团队。

冲刺

gstack 是一套流程,而不是一堆工具的集合。这些技能按照冲刺运行的顺序依次执行:

思考 → 规划 → 构建 → 评审 → 测试 → 发布 → 反思

每项技能都衔接下一项。/office-hours 编写设计文档,/plan-ceo-review 读取它。/plan-eng-review 编写测试计划,/qa 接手执行。/review 捕获 bug,/ship 验证它们已被修复。没有任何环节会遗漏,因为每一步都清楚前面发生了什么。

技能 你的专家 他们做什么
/office-hours YC Office Hours 从这里开始。六个逼问式问题,在你写代码之前重新定义你的产品。质疑你的框架,挑战前提,生成实现替代方案。设计文档会输入到每一个下游技能。
/plan-ceo-review CEO / 创始人 重新思考问题。找到隐藏在需求中的 10 星产品。四种模式:扩展、选择性扩展、保持范围、缩减。
/plan-eng-review 工程经理 锁定架构、数据流、图表、边界情况和测试。把隐藏的假设逼到明面上。
/plan-design-review 资深设计师 对每个设计维度按 0-10 打分,解释 10 分是什么样,然后编辑计划以达到该标准。AI Slop 检测。交互式——每个设计选择对应一个 AskUserQuestion。
/plan-devex-review 开发者体验负责人 交互式 DX 评审:探索开发者画像,对标竞争对手的 TTHW,设计你的魔法时刻,逐步追踪摩擦点。三种模式:DX EXPANSION、DX POLISH、DX TRIAGE。20-45 个逼问式问题。
/design-consultation 设计伙伴 从零构建完整的设计系统。研究行业格局,提出创意风险,生成逼真的产品模型。以开放的 DESIGN.md 格式编写 DESIGN.md,因此 impeccable、Google Stitch 以及任何读取它的工具都共享同一个文件。
/review 资深工程师 找出那些能通过 CI 但在生产环境中爆炸的 bug。自动修复显而易见的那些。标记完整性缺口。咨询式简化视角会标记过度构建的代码——从不阻塞,从不自动应用。
/deslop-shared-libs 共享代码评审员 在近期工作中找出值得提取的共享代码。比较最多五个机会,推荐最好的三个,附上源码证据、可靠性收益和总代码节省量。仅提供建议。
/test-audit 测试审计员 扫描现有测试,找出那些维护成本高于其保护价值的测试:源码 grep、重复项、无断言探测、仅测试用导出。每个候选都附带证据卡;除非你批准一批,否则仅报告。
/investigate 调试器 系统化根因调试。铁律:不调查就不修复。追踪数据流,检验假设,3 次修复失败后停止。
/design-review 会写代码的设计师 与 /plan-design-review 相同的审计,然后修复发现的问题。原子提交,前后截图。如果你安装了 impeccable,它的引擎会先运行,每个机械性发现都会带上其规则 id 标签。
/devex-review DX 测试员 实时开发者体验审计。实际测试你的入门流程:浏览文档,尝试快速上手流程,计时 TTHW,截图错误。与 /plan-devex-review 分数对比——这个回旋镖能显示你的计划是否与现实相符。
/design-shotgun 设计探索者 “给我看看选项。”生成 4-6 个 AI 模型变体,在浏览器中打开对比面板,收集你的反馈,并迭代。品味记忆会学习你的喜好。重复直到你满意为止,然后交给 /design-html。
/design-html 设计工程师 将模型转化为真正可用的生产级 HTML。Pretext 计算布局:文本重排、高度调整、布局动态化。30KB,零依赖。检测 React/Svelte/Vue。按设计类型智能路由 API(落地页 vs 仪表盘 vs 表单)。当你拥有 impeccable 引擎时,通过它进行一次 slop-gate 处理。输出可直接交付,而非演示。
/qa QA 负责人 探索浏览器、API、CLI、任务和 webhook 行为。复现 bug,编写失败的回归测试,修复根因并在提交前重新验证。
/qa-only QA 报告员 通过可重放的证据进行探索和报告。在不修改产品代码或测试的情况下建议回归用例。
/pair-agent 多智能体协调器 与任何 AI 智能体共享 gstack 自带的浏览器。一条命令,一次粘贴,即可连接。适用于 OpenClaw、Hermes、Codex、Cursor,或任何能执行 curl 的工具。每个智能体拥有自己的标签页。自动启动有头模式,让你看到一切。为远程智能体自动启动 ngrok 隧道。作用域令牌、标签页隔离、速率限制、活动归因。(运行在捆绑浏览器上——即回退引擎;驱动 Aside 的智能体只是打开自己的标签页。)
/cso 首席安全官 安全审计,包含应用模型、有依据的发现、独立质疑和明确的覆盖范围。静态评估在没有目录配置文件时仍然可用。在匹配的合格配置文件下,综合模式会为 Node/Bun、Python 和 Rails 添加受控的运行时/扫描器执行以及可审查的修复候选。经过运行时测试的捆绑包会认证独立的外部断言。项目测试完成仍为 self_reported,因为目标代码控制测试过程;tested 保留给未来独立于目标的完成见证。
/ship 发布工程师 同步 main,运行测试,探索变更行为,审计覆盖率和文档,然后验证、推送并打开 PR。
/land-and-deploy 发布工程师 合并 PR,等待 CI 并部署,验证生产环境健康。一条命令从“已批准”到“已在生产环境验证”。
/canary SRE 部署后监控循环。监视控制台错误、性能回退和页面故障。
/benchmark 性能工程师 基准测试页面加载时间、Core Web Vitals 和资源大小。在每个 PR 上比较前后差异。
/document-release 技术文档工程师 在每次发布时,对照项目文档审计变更行为,在最终验证和发布之前进行。也可独立运行。显示已更新、已审查/当前或受阻的文档以及任何剩余缺口。
/document-generate 文档作者 使用 Diataxis 框架从零生成缺失的文档。先研究代码库,然后编写真正与代码匹配的参考/操作指南/教程/解释文档。可独立调用,或在覆盖率图发现缺口时从 /document-release 链接调用。了解更多:教程 • 操作指南 • 为什么选择 Diataxis。
/retro 工程经理 团队感知的每周回顾。按人细分、发布连续记录、测试健康趋势、成长机会。/retro global 跨你所有的项目和 AI 工具(Claude Code、Codex、Gemini)运行。
/browse QA 工程师 给 agent 装上眼睛。首先驱动你的 Aside 浏览器——你真实的会话、真实的点击、真实的截图——通过确定性的 aside repl 脚本。没有 Aside?它会回退到 gstack 自带的 Chromium:真实点击,每条命令约 100ms,/open-gstack-browser 会显示它带侧边栏的有头模式、反机器人隐身和自动模型路由。其他所有浏览器技能都建立在它之上。
/scrape 数据提取器 从网页上提取结构化数据——表格、列表、价格——在你的 Aside 浏览器中,利用页面真实的登录状态。在回退浏览器上,/skillify 会把该流程变成一个永久的浏览器技能,下次运行只需约 200ms。
/setup-browser-cookies 会话管理器 将选定的 cookie 从 Chrome、Chromium、Brave、Edge、仅限 Windows 的 Opera 和 Opera GX,或仅限 macOS 的 Comet、Arc 和 Dia 复制到 gstack 自带的浏览器中。选择你的配置文件和域名;复制和登录验证是分开的。仅在回退路径上需要——Aside 已经有你的会话了。
/autoplan 评审流水线 一条命令,得到完整评审过的计划。自动运行 CEO → 设计 → DX → 工程评审(工程评审始终最后,这样发布关卡评审的是最终修订后的计划),并内置了决策原则。只把需要品味判断的决策提交给你批准。
/spec 规格作者 在五个阶段(为什么、范围、技术方案并强制阅读代码、草稿、归档)把模糊意图变成精确、可执行的规格。提交前有外部评审质量关卡(在 Codex 上用 Claude Code;在其他 harness 上用 Codex;低于 7/10 则拦截),失败即关闭的密钥脱敏,对已有 issue 去重,归档到 $GSTACK_STATE_ROOT/projects/$SLUG/specs/ 以供团队语料召回。--execute 会在全新的 worktree 中生成 claude -p;/ship 会在合并时自动关闭源 issue。感知计划模式。
/learn 记忆 管理 gstack 跨会话学到的东西。查看、搜索、修剪和导出项目特定的模式、陷阱和偏好。学习成果跨会话累积,因此 gstack 会随着时间推移在你的代码库上越来越聪明。
/make-pdf 发布器 输入 Markdown,输出出版级文档。Mermaid 和 excalidraw 代码块渲染为矢量图,完全离线。图片按页面缩放且绝不截断;宽图会获得自己的横向页面。--to html 输出一个自包含文件,--to docx 输出一个 Word 文档。
/diagram 图表制作器 输入英文,输出可编辑图表。生成三件套:mermaid 源码、可在 excalidraw.com 上打开和编辑的 .excalidraw(手绘风格),以及渲染后的 SVG/PNG。零网络。把源码嵌入 markdown,/make-pdf 即可渲染它。

没有网页时的 QA

对浏览器和非浏览器软件使用相同的命令。在一个仓库中开始, 使用其文档化的原生命令和隔离的本地 fixture;指明目标 以及你想检查的行为。例如:

/qa-only Test this repo's CLI using its documented local fixture. Check valid and invalid input, exit codes, stdout/stderr, and cancellation. Report only; do not change code or tests. For each finding, include the exact command, expected and actual results, and which checks remain untested. Keep requests inside the fixture; ask before contacting an external service.

/qa Test this repo's local webhook and worker fixture. Explore duplicate deliveries and recovery after a partial failure. Keep all effects inside the fixture; preserve reproduced bugs in native regression tests before repairing them.

QA 首先会告诉你它将使用哪个界面、哪些工具和写入权限。CLI 或 API 不需要浏览器。浏览器目标保留真实浏览器测试;开发者 体验审计仅在入职、安装或人体工学在范围内时才加载。 如果原生工具或安全 fixture 不可用,报告会指明阻塞项 和未测试的契约,而不是编造一个通过结果或安装另一个框架。

探索意味着从每个结果中学习并选择下一个有用的挑战,而不是运行随机命令。在下一次发现探测之前,QA 会保存一份简短的 exploration-NNN.json 证据记录,包含上一个结果、正在测试的假设以及下一条命令。最终报告会链接这些记录;它们不需要在探测之间额外发送聊天消息。发现的 bug 必须可复现,其新测试必须在修复前对 bug 失败、修复后通过。单元测试保护逻辑;集成测试和端到端测试保护 mock 会掩盖的真实边界。/qa-only 提出这些测试而不编写它们。

普通 /review 和 /ship 会自动对变更行为及附近风险运行有界版本,包括没有计划或 Web 服务器的小型 diff。现有的修复/测试审批规则仍然适用。缺失依赖、被拒绝的操作和时间限制仍然是可见的覆盖缺口;短暂的冒烟测试绝不意味着详尽的 QA。生产环境访问以及破坏性或外部影响需要特定权限。

有界探索使用可执行的截止时间守卫,而不是估算时钟:它拒绝迟到的探测,并在限制处停止所拥有的前台工作。未完成的检查在报告中保持可见。必需的计划检查仍处于审查/发布冒烟预算之外。有关命令、平台和清理限制,请参阅 QA 截止时间。

每次发布还会运行现有的文档审计,包括重复发布和现有 PR 更新。清晰的事实性更正会加入最终检查的变更;有风险的改写需要审批。审计失败会停止以进行恢复或明确接受所指定的风险,而不是静默丢弃其结果。发布负责版本控制、Git 和 PR 发布;文档助手不会独立提交或推送。

我应该使用哪种审查?

为……构建 计划阶段(编码前) 实时审计(发布后)
最终用户(UI、Web 应用、移动端) /plan-design-review /design-review
开发者(API、CLI、SDK、文档) /plan-devex-review /devex-review
架构(数据流、性能、测试) /plan-eng-review /review
以上全部 /autoplan(运行 CEO → 设计 → DX → 工程,自动检测哪些适用;工程始终最后) —

强力工具

技能 功能
/codex 第二意见 — 来自 OpenAI Codex CLI 的独立代码审查。审查、质疑和咨询模式。除 Codex 外,每个 harness 均可用。
/claude-code 第二意见 — 来自 Claude Code 的独立代码审查。审查、质疑和咨询模式,咨询时具有会话连续性。除 Claude Code 外,每个 harness 均可用。
/careful 安全护栏 — 在破坏性命令(rm -rf、DROP TABLE、force-push)之前发出警告。说“be careful”即可激活。可覆盖任何 MEDIUM 警告;根目录/主目录递归删除和默认分支 force-push 会被硬拒绝。
/freeze 编辑锁 — 将文件编辑限制在一个目录内。防止调试时意外更改范围之外的内容。
/guard 完全安全 — 一条命令中同时启用 /careful + /freeze。为生产工作提供最大安全性。
/unfreeze 解锁 — 移除 /freeze 边界。
/open-gstack-browser GStack 浏览器 — 以有头模式启动 gstack 自有的浏览器,具有侧边栏、反机器人隐身、自动模型路由(操作使用 Sonnet,分析使用 Opus)、一键 cookie 导入和 Claude Code 集成。清理页面、进行智能截图、编辑 CSS,并将信息传回你的终端。这是回退引擎的可见界面;打开 Aside 后,你可以在那里观看 agent 的标签页。
/setup-deploy Deploy Configurator — 为 /land-and-deploy 进行一次性设置。检测你的平台、生产 URL 和部署命令。
/setup-gbrain GBrain Onboarding — 从零到运行 gbrain 只需不到 5 分钟。PGLite 本地、Supabase 现有 URL,或通过 Management API 自动配置新的 Supabase 项目。为 Claude Code 注册 MCP + 每个仓库的信任三元组(读写/只读/拒绝)。完整指南。
/sync-gbrain Keep Brain Current — 通过 gbrain sources add + gbrain sync --strategy code 将此仓库的代码重新索引到 gbrain,刷新 CLAUDE.md 中的 ## GBrain Search Guidance 块,并在能力检查失败时自动移除指导。--incremental(默认)、--full、--dry-run。幂等;可安全重复运行。
/gstack-upgrade Self-Updater — 将 gstack 升级到最新版本。检测全局安装与 vendored 安装,同步两者,显示变更内容。
/ios-qa iOS Live-Device QA (v1.43.0.0+) — 通过应用内嵌的 StateServer,经 USB CoreDevice 驱动真实 iPhone。读取 Swift 源码,代码生成类型化的 @Observable 访问器,运行 agent 循环。可选的 --tailnet 标志将设备暴露给 OpenClaw 或你 Tailscale tailnet 上任何支持 HTTP 的 agent,使远程 agent 无需接触硬件即可运行 iOS QA。能力层级允许列表(observe/interact/mutate/restore)、每设备会话锁、审计日志。
/ios-fix、/ios-design-review、/ios-clean、/ios-sync iOS bug 修复循环、设计师视角的 HIG 审计、调试桥清理和访问器重新同步。参见 docs/skills.md。端到端演练:docs/howto-ios-testing-with-gstack.md。

独立二进制文件

除了斜杠命令技能之外,gstack 还为不适合在会话内运行的工作流提供了独立 CLI:

命令 功能
gstack-model-benchmark 跨模型基准测试 — 将同一提示词分别通过 Claude、GPT(经 Codex CLI)和 Gemini 运行;比较延迟、token、成本,以及(可选)LLM 评判质量分数。按提供商检测认证,不可用的提供商会干净地跳过。输出为表格、JSON 或 markdown。--dry-run 在不消耗 API 调用的情况下验证标志 + 认证。
gstack-taste-update 设计品味学习 — 将 /design-shotgun 中的批准和拒绝写入持久的每项目品味档案。每周衰减 5%。反馈到未来的变体生成中,使系统学习你实际选择的内容。
gstack-egress 出口回执审计器 — 每次 gstack 发起的离机发送都会在发送前向 ~/.gstack/security/egress.jsonl 写入防篡改、哈希链式回执。list 显示 gstack 尝试发送的内容及目标主机,grants 显示常设同意设置以及撤销每项的确切命令,verify 重新计算哈希链并在篡改时以 3 退出(可捕获编辑、重排序和链中删除;截断或删除账本本身不在范围内——它是取证日志,不是防篡改存储)。
gstack-context-bill Token 物料清单 — 对已安装技能树在 token 方面的成本进行只读、离线审计:每个会话都要支付的常开 frontmatter 对比每次调用的 SKILL.md + 强制引用。--diff 比较两棵树,--budget 强制执行上限,--exact 选择启用 Anthropic count_tokens(将文件文本发送到离机;先写入出口回执,如果无法写入回执则降级为离线估算)。
gstack-code-intelligence 代码智能提供商选择器 — 将 GBrain、Sourcebot 和 Graphify 封装在一个接口之后:用 options/status 查看有哪些可用,用 select 选择一个,用 index/search 使用它,用 suggest 检查一次性索引提议是否应在此触发。该提议在大型仓库(1,000+ 个跟踪文件;拒绝会被持久化)上触发。非本地提供商拒绝索引或搜索,直到你记录每个仓库的同意(consent <repo> yes|no — 查询文本是仓库派生的内容),每个仓库的信任策略的拒绝和只读层级无论同意与否都会否决写入类操作,并且每次向机器外发送都会写入一条出口回执。完全可选 — 未选择任何内容时,gstack 回退到 grep。
gstack-verify-gate 验证停止钩子(可选加入) — 阻止 Claude Code 的一轮结束,直到项目声明的验证命令通过(在 3 次被阻止的重新进入后,它会以响亮的仍为 RED 警告让步,而不是无限循环)。在 CLAUDE.md 中用一行声明它:<!-- gstack:verify: bun test -->。钩子绕过权限系统,因此声明的命令在你每个仓库信任它一次之前永远不会运行(gstack-verify-gate --trust);编辑命令会使信任失效,直到重新授予,并且每次授予都会被审计记录。./setup 永远不会为你注册它 — 用 gstack-settings-hook add-event --event Stop --command ~/.claude/skills/gstack/bin/gstack-verify-gate --source verify-gate 选择加入,用 gstack-settings-hook remove-source --source verify-gate 移除。
gstack-memorable Memorable 回忆桥接(可选加入,第三方,仅 Claude Code) — 将 Claude Code 连接到外部 Memorable CLI,通过 gstack 而不是供应商自己的安装程序,因此该钩子获得 gstack 的保证:一个明确的同意键(memorable_recall,默认关闭,由 gstack-egress grants 列出),对每个移交的提示的故障关闭出口回执(gstack-egress list --sink memorable-recall),HIGH 层级秘密预扫描,对返回内容的信任信封和 8 KiB 上限,供应商进程的允许列表环境和进程组遏制,以及干净移除。enable 在稳定安装处注册钩子,超时为 5 秒,并且永远不会运行供应商自己的同意命令;disable 先撤销门控,然后按身份移除条目,即使 Claude Code 剥离了标签;status 是只读的。gstack 永远不会安装 Memorable,其二进制文件发送的内容是供应商的说法,而不是 gstack 的。Windows 上尚不可用。完整指南。
gstack-wtree 工作树指纹 — 打印磁盘上实际内容的内容哈希(从 stat 缓存播种的临时索引,比完全重新哈希便宜约 40 倍;未跟踪的源文件计入,gitignored 的临时文件不计入)。相同的内容在提交、变基、修正和压缩中指纹相同 — 正是它将审查和测试证据绑定到内容而不是提交 SHA。
gstack-review-log 审查通过回执 — --start <skill> 在差异审查之前捕获工作树指纹;'<JSON>' --finish <token> 消费该一次性、仓库/分支/技能范围的回执。绑定需要匹配的开始/结束内容以及审查者报告的 completed:true 和 converged:true;它不是模型阅读了源代码的独立证明。--check-shared-libs <token> 从 stdin 读取当前发现为 JSON,并根据实际分支、捕获和符合条件的原始源 blob 检查先前的 Skip 决策。当证明缺失或不安全时,它返回 reusable:false,包括没有记录器版本化覆盖的较旧记录。最终审查日志记录计算共享代码指纹和覆盖率,而不是信任提供的证明。
gstack-review-read 审查新鲜度 — 发出带有计算的 review_freshness.status 和 reason 的审查记录:对于差异审查为 CURRENT、STALE 或 UNVERIFIED。/ship 和 /land-and-deploy 使用相同的等级;仅匹配的提交永远不会认证差异审查。仪表板规则。
gstack-evidence 验证证据账本 — run --label <lane> -- <cmd> 透明地包装任何测试命令(子进程的退出码始终透传),并记录针对哪个工作树指纹运行了什么;check 用 --expect-cmd、--max-age 和 --allow-paths 绑定将每个标签评为 FRESH/STALE/MISSING。/ship 和 /land-and-deploy 引用新鲜证据,而不是重新运行测试套件。每次运行的日志权限为 0600,上限 2MB,30 天后清理;账本和日志按设计保留在机器本地。
gstack-issue-guard 跟踪器文本信任信封 — 获取 GitHub issue/PR 文本(issue <n>、pr-body、pr-comments 或 --stdin)并将其包装在带标签的信封中,使智能体将其视为数据:注入形态的行即使通过全角和不可见字符规避也会被标记,伪造的信封横幅会被解除。gstack 中所有跟踪器文本入口都经过它,并由 CI 扫描器强制执行。
gstack-ios-qa-daemon iOS QA 守护进程 — Mac 端代理,通过 USB CoreDevice 在智能体和连接的 iPhone 之间中转。默认仅回环;--tailnet 打开面向 Tailscale 的监听器,具有身份门控的能力层级。通过 ~/.gstack/ios-qa-daemon.pid 上的 flock 实现单实例。参见 docs/howto-ios-testing-with-gstack.md。
gstack-ios-qa-mint iOS 允许列表管理器 — 用于 tailnet 允许列表的所有者授权 CLI。针对 ~/.gstack/ios-qa-allowlist.json(模式 0600)执行 grant/revoke/list。远程智能体从不自动加入允许列表;这是显式意图路径。
gstack-ios-qa-regen iOS 桥接重新生成器 — 确定性地安装规范的 DebugBridge 包,生成类型化状态访问器,并记录已安装的 gstack 版本。在源代码更改或升级后可以安全地重新运行。

私有付费 CSO 评估生产者是一份打包契约,而不是普通的 bun run build 产物。在 macOS 或 Linux 上,发布操作员在与 bun run build:cso 相同的干净构建会话中,使用文档化的加固 Bun 标志编译 cso-eval-producer,然后将其与 gstack-cso-launcher、gstack-cso-core、gstack-cso-watchdog 以及隐藏的 .gstack-cso-generation 清单一起安装为一个 root 所有、不可写的五产物单元。生产者拒绝 root 执行、可写/符号链接/不完整的安装以及未经审查的提供商 CLI 版本;每份回执绑定全部五个产物哈希,收集时拒绝来自不同单元身份的回执。参见 干净生产者流程。付费生产者评估在 Windows 上仍不可用,因为分离式看门狗没有 Windows 构建。

每个生产者获得一份精选的单单元源代码副本,目录权限封为 0555,文件权限封为 0444,外加前后内容、Git 和模式检查。Claude 将该精确副本作为受限的只读附加目录接收,以便其受限的启动器命令可以访问它。Gemini 不接收源代码工作目录或包含目录。Codex 在技术上获得对精确精选源代码根的只读文件系统访问权限,因为受信任的辅助程序继承了 Codex 权限配置文件;其私有提供商工作目录和精确的 cso-home 产物目录是唯一的写入根,所有其他根路径仍被拒绝,并且生产者提示要求通过辅助程序访问源代码。这是针对不可变公共夹具的评估隔离,并非声称 Codex 无法直接读取该夹具。

将每个已完成单元格的回执连同 state/cso-home/security/cso/ 复制到受信任的裁决主机。回执条目是相对于该目录的排序路径,并绑定每个保留文件的大小和 SHA-256 以及一个聚合清单哈希。提供方主目录、设置、会话和凭据位于单独的一次性目录下,并在单元格结束后删除;它们从不属于保留的产物树。裁决者必须在信任报告或修复包之前,根据回执对传输过来的树重新计算哈希。

付费生产者资格使用以下明确的主机矩阵:

生产者主机 每日/静态单元格 综合目标执行
Codex CLI 0.153.4 在自定义权限配置文件下受支持 因模型命令沙箱未被授予 Docker/socket 访问权限而失败关闭;将设置缺口报告为部分
Claude Code 2.1.263 在受限安全模式下受支持 当受限启动器子进程无法访问 Docker 时失败关闭;将设置缺口报告为部分
Gemini CLI 0.59.0 在隔离的主目录/设置下受支持 私有发布资格主机:确切的 run_shell_command(<launcher>) 策略可以在不暴露通用 shell 的情况下运行受信任的辅助程序

每个因设置受阻的综合单元格在发布门禁分母中仍计为未命中。当某个主机或工作流的隔离策略阻止所需设置时,评估器不会静默地将其计为受支持。

./setup 还在 ~/.claude/settings.json 中注册一个默认开启的 Stop 钩子: gstack-timeline-stop(在会话被中断时关闭悬空的会话时间线条目;失败开放——2 秒内部预算,始终以 0 退出,永远不会阻塞会话)。使用 ./setup --no-timeline-stop-hook 持久选择退出——该选择会写入 timeline_stop_hook 配置键,在升级后仍然保留,并且明确的“否”会移除一个活动注册。GSTACK_TIMELINE_STOP_HOOK=no 和 gstack-config set timeline_stop_hook no 也可以(标志 > 环境变量 > 配置)。 ./setup --no-team 在该次运行中跳过它,gstack-settings-hook remove-source --source gstack-timeline-stop 手动移除它,gstack-uninstall 也会移除它。

钩子注册仅限规范路径:每个钩子命令都指向稳定的 ~/.claude/skills/gstack 安装,而绝不是运行树设置所在的目录,因此删除工作树或 Conductor 工作区不会在你的会话中留下报错的死钩子。每次 ./setup 运行也会先进行修复:gstack-settings-hook prune-stale --repoint 移除失效的 gstack 钩子条目,将过时的条目重新指向稳定安装,并合并重复项,仅在发生更改时打印一行(并在文件旁写入备份)。

领域技能 + 原始 CDP 逃生舱

gstack 自有引擎中的两个浏览器原语(当 Aside 不在时的回退路径)会随时间增强代理:

  • $B domain-skill save —— 代理保存每个站点的笔记(例如,“LinkedIn 的 Apply 按钮位于 iframe 中”),下次访问该主机名时自动触发。隔离 → 3 次成功使用后激活 → 可通过 $B domain-skill promote-to-global 可选跨项目提升。存储与 /learn 的每项目学习文件放在一起。完整参考:docs/domain-skills.md。
  • $B cdp <Domain.method> —— 原始 Chrome DevTools Protocol 逃生舱,用于精选命令遗漏的罕见情况。默认拒绝:方法必须显式添加到 browse/src/cdp-allowlist.ts 并附一行理由。两级互斥锁将浏览器范围的 CDP 调用与每标签页工作串行化。数据外泄方法的输出被包裹在 UNTRUSTED 信封中。

想要没有约束、没有允许列表、没有守护进程的原生 CDP——只是从 agent 到 Chrome 的轻量传输?browser-use/browser-harness-js 是另一种理念(由 agent 编写辅助工具,而非 gstack 的精选命令),如果你不想要 gstack 的安全栈,它会很合适。两者可以共存:gstack 的 $B cdp 和 harness 都可以通过 Playwright 的 newCDPSession 连接到同一个 Chrome。

每个技能的深度解析、示例与理念 →

Karpathy 的四种失败模式?已经覆盖了。

Andrej Karpathy 的 AI 编码规则(17K stars)点明了四种失败模式:错误假设、过度复杂、正交编辑、命令式优于声明式。gstack 的工作流技能对四者都有约束。/office-hours 在写代码之前把假设摆到明面上。Confusion Protocol 阻止 Claude 在架构决策上瞎猜。/review 捕捉不必要的复杂性和顺手乱改。/ship 把任务转化为可验证的目标,并采用测试先行的执行方式。如果你已经在用 Karpathy 风格的 CLAUDE.md 规则,gstack 就是让它们在整个 sprint 中持续生效的工作流执行层,而不只是单次提示。

并行 sprint

gstack 跑一个 sprint 没问题。同时跑十个就变得有意思了。

设计是核心。/design-consultation 从零构建你的设计系统,调研现有方案,提出创意风险,并编写 DESIGN.md。但真正的魔力在于 shotgun-to-HTML 流水线。

/design-shotgun 是你探索的方式。你描述你想要什么。它用 GPT Image 生成 4-6 个 AI 模型变体。然后在浏览器中打开一个对比面板,把所有变体并排展示。你挑选喜欢的,留下反馈(“多点留白”、“标题更大胆”、“去掉渐变”),它再生成新一轮。重复直到你满意为止。几轮之后品味记忆就会生效,开始偏向你真正喜欢的东西。不用再用文字描述你的构想,然后指望 AI 能理解。你看到选项,挑出好的,然后可视化地迭代。

与 impeccable 兼容。如果你也在用 impeccable,gstack 不会与它冲突。当你安装了 impeccable 时,gstack 会在 /design-review、/review、/ship 和 /design-html 中把 impeccable 的确定性引擎作为前置步骤运行(gstack 从不运行 impeccable 的安装器或启动器;设计技能第一次找不到引擎时,它会询问一次是否将引擎二进制文件下载到 ~/.impeccable,带校验和锁定并记录日志,并记住你的回答),用它自己的方式说出相同的 61 个规则 id,读取 PRODUCT.md,以两个工具都能读取的开放 DESIGN.md 格式写入 DESIGN.md,并把延迟处理的问题交给 /impeccable <command>。说“不”则一切不变:不唠叨,不缺失步骤。gstack-config set design_detector off 可关闭前置步骤。gstack 从 impeccable 和 DESIGN.md 规范中衍生出的材料的署名在 NOTICE.md 中。

/design-html 让它成真。把那个已批准的模型(来自 /design-shotgun、CEO 计划、设计评审,或仅仅是一段描述)变成生产级 HTML/CSS。不是那种在一个视口宽度下看起来还行、换个地方就崩掉的 AI HTML。它使用 Pretext 进行文本计算布局:文本在调整大小时真正重排,高度随内容调整,布局是动态的。30KB 开销,零依赖。它会检测你的框架(React、Svelte、Vue)并输出正确的格式。智能 API 路由会根据是落地页、仪表盘、表单还是卡片布局,选择不同的 Pretext 模式。输出的是你真正会发布的东西,而不是演示。

/qa 是一次巨大的解放。它让我从 6 个并行 worker 扩展到 12 个。Claude Code 说出 "I SEE THE ISSUE",然后真正修复它、生成回归测试并验证修复——这改变了我的工作方式。Agent 现在有眼睛了。

智能审查路由。就像在一家运营良好的创业公司里:CEO 不必查看基础设施 bug 修复,后端改动也不需要设计审查。gstack 会跟踪运行了哪些审查,判断什么是合适的,然后直接做聪明的事。Review Readiness Dashboard 会在你发布前告诉你处于什么状态。

测试一切。如果你的项目没有测试框架,/ship 会从零开始搭建。每次 /ship 运行都会生成覆盖率审计。/qa 在基础设施可用时创建原生回归测试,并明确报告缺失的测试覆盖;仅 CSS 的修复可以改用浏览器证据。100% 测试覆盖率是目标——测试让 vibe coding 变得安全,而不是 yolo coding。

/document-release 就是你从未拥有过的工程师。它会根据发布 diff 审计相关的已撰写文档,并在最终验证前纠正事实偏差。有风险的更改会返回等待批准。/ship 在每次运行时调用它,并负责 TODOS、发布元数据、生成和发布;子进程报告文档已更新、当前或受阻。

Aside 是 gstack 首先驱动的浏览器。对于浏览器界面,在 Mac 上打开 Aside AI 浏览器时,/qa、/qa-only、/design-review、/canary、/benchmark、/scrape 和 /browse 都在那里运行——你的真实浏览器,带着你真实登录的会话,在 agent 为自己打开并在完成后关闭的标签页中。无需导入 cookie,没有“打开浏览器”步骤,没有 CAPTCHA 交接的麻烦:遇到登录墙,在 Aside 内登录,说“完成”,agent 就会继续。页面返回的任何内容都被视为不可信内容——agent 从中获取语法,绝不获取指令。/make-pdf、/diagram 和设计预览也通过 Aside 打印和截图(从你机器上的 loopback 提供服务,每个脚本渲染一次),规划技能在求助于搜索工具之前,会通过 Aside 自己的 agent 进行网络研究。

当 Aside 不在时,gstack 自己的浏览器会自动接管。Linux、Windows,或关闭了 Aside 的 Mac:相同的技能使用 ./setup 构建的捆绑无头 Chromium,产生相同的证据,并点亮下面那些只有在浏览器属于 gstack 而非你时才有的功能。

真实浏览器模式。/open-gstack-browser 启动 GStack Browser,一个 AI 控制的 Chromium,具有反机器人隐身、自定义品牌,并内置侧边栏扩展。Google 和 NYTimes 等网站无需验证码即可使用。菜单栏显示“GStack Browser”而不是“Chrome for Testing”。你的常规 Chrome 保持原样。所有现有的浏览命令照常工作。$B disconnect 返回无头模式。只要窗口打开,浏览器就保持存活……没有空闲超时在你工作时将其杀死。

侧边栏代理——你的 AI 浏览器助手。在 Chrome 侧边栏中输入自然语言,一个子 Claude 实例会执行它。“导航到设置页面并截图。”“用测试数据填写这个表单。”“遍历这个列表中的每一项并提取价格。”侧边栏会自动路由到合适的模型:Sonnet 用于快速操作(点击、导航、截图),Opus 用于阅读和分析。每个任务最多 5 分钟。侧边栏代理在隔离会话中运行,因此不会干扰你的主 Claude Code 窗口。侧边栏页脚支持一键导入 cookie。

个人自动化。侧边栏代理不仅适用于开发工作流。例如:“浏览我孩子学校的家长门户,把所有其他家长的姓名、电话号码和照片添加到我的 Google 通讯录中。”有两种方式完成身份验证:(1) 在有头浏览器中登录一次,你的会话会保持,或 (2) 点击侧边栏页脚中的“cookies”按钮,从你真实的 Chrome 中导入 cookie。一旦通过验证,Claude 会浏览目录、提取数据并创建联系人。

提示注入防御。恶意网页会试图劫持你的侧边栏代理。gstack 提供分层防御:每次读取页面时进行内容过滤(数据标记、隐藏元素剥离、ARIA 清理、URL 黑名单),外加一个 22MB 的 ML 分类器在 sidecar 子进程中本地运行,在代理看到页面衍生内容之前进行扫描,并有一个裁决合并器要求分类器一致同意才阻止(防止对 Stack Overflow 风格指令页面的单模型误报)。一切都在你的机器上运行,无网络调用。紧急终止开关:GSTACK_SECURITY_OFF=1。完整技术栈见 ARCHITECTURE.md。

AI 卡住时的浏览器交接。遇到 CAPTCHA、认证墙或 MFA 提示?$B handoff 会在完全相同的页面打开一个可见的 Chrome,你的所有 cookie 和标签页都完好无损。解决问题后,告诉 Claude 你完成了,$B resume 会从它中断的地方继续。代理甚至在连续 3 次失败后会自动建议这样做。

/pair-agent 是跨代理协调。你在使用 Claude Code。你同时运行着 OpenClaw。或者 Hermes。或者 Codex。你想让它们都查看同一个网站。输入 /pair-agent,选择你的代理,一个 GStack Browser 窗口会打开,这样你可以观看。该技能会打印一段指令。将那段指令粘贴到另一个代理的聊天中。它会用一次性设置密钥换取会话令牌,创建自己的标签页,并开始浏览。你可以看到两个代理在同一个浏览器中工作,各自在自己的标签页中,互不干扰。如果安装了 ngrok,隧道会自动启动,这样另一个代理可以在一台完全不同的机器上。同一台机器上的代理会获得一个零摩擦快捷方式,直接写入凭据。这是不同厂商的 AI 代理首次能够通过共享浏览器进行协调,并具备真正的安全性:作用域令牌、标签页隔离、速率限制、域名限制和活动归属。

Multi-AI second opinion. In Codex, gstack sends outside reviews to Claude Code through /claude-code. In Claude Code, /codex sends them to OpenAI Codex. Other harnesses expose both skills and use Codex where automatic outside reviews are supported. Each skill supports code review, adversarial challenge, and consultation with session continuity. Routing follows the harness, so changing your configured model does not change the outside reviewer. Reports identify the provider that actually completed each review; unavailable outside coverage remains visible.

Safety guardrails on demand. Say "be careful" and /careful warns before any destructive command — rm -rf, DROP TABLE, force-push, git reset --hard. /freeze locks edits to one directory while debugging so Claude can't accidentally "fix" unrelated code. /guard activates both. /investigate auto-freezes to the module being investigated.

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.

10-15 parallel sprints

gstack is powerful with one sprint. It is transformative with ten running at once.

Conductor runs multiple Claude Code sessions in parallel — each in its own isolated workspace. One session running /office-hours on a new idea, another doing /review on a PR, a third implementing a feature, a fourth running /qa on 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.

The 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.

Voice input (AquaVoice, Whisper, etc.)

gstack 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.

Uninstall

Option 1: Run the uninstall script

If gstack is installed on your machine:

~/.claude/skills/gstack/bin/gstack-uninstall

This handles skills, symlinks, global state (~/.gstack/), project-local state, browse daemons, and temp files. Use --keep-state to preserve config and analytics. Use --force to skip confirmation.

Option 2: Manual removal (no local repo)

If you don't have the repo cloned (e.g. you installed via a Claude Code paste and later deleted the clone):

# 1. Stop browse daemons
pkill -f "gstack.*browse" 2>/dev/null || true

# 2. Remove per-skill directories whose SKILL.md points into gstack/
#    (rm -rf, not rmdir — installed dirs also contain runtime-asset links)
find ~/.claude/skills -mindepth 1 -maxdepth 1 -type d ! -name gstack 2>/dev/null |
while IFS= read -r dir; do
  link="$dir/SKILL.md"
  [ -L "$link" ] || continue
  target=$(readlink "$link" 2>/dev/null) || continue
  case "$target" in
    gstack/*|*/gstack/*)
      rm -rf "$dir"
      ;;
  esac
done
# Directories gstack created carry a .gstack-owned marker (the only signal on
# Windows, where installs are file copies with no symlink to read)
for marker in ~/.claude/skills/*/.gstack-owned; do
  [ -f "$marker" ] && rm -rf "$(dirname "$marker")"
done
# Alias skills install as copies (no symlink to detect) — remove by name
rm -rf ~/.claude/skills/_gstack-command ~/.claude/skills/connect-chrome 2>/dev/null

# 3. Remove gstack
rm -rf ~/.claude/skills/gstack

# 4. Remove global state
rm -rf ~/.gstack

# 5. Remove integrations (skip any you never installed)
rm -rf "${CODEX_HOME:-$HOME/.codex}/skills/gstack"* 2>/dev/null
rm -rf ~/.factory/skills/gstack* 2>/dev/null
rm -rf ~/.kiro/skills/gstack* 2>/dev/null
rm -rf ~/.openclaw/skills/gstack* 2>/dev/null
rm -rf ~/.cursor/skills/gstack* 2>/dev/null
rm -rf ~/.config/opencode/skills/gstack* 2>/dev/null

# 6. Remove temp files
rm -f /tmp/gstack-* 2>/dev/null

# 7. Per-project cleanup (run from each project root)
rm -rf .gstack .gstack-worktrees .claude/skills/gstack 2>/dev/null
rm -rf .agents/skills/gstack* .factory/skills/gstack* 2>/dev/null

Manual removal leaves gstack's hook entries behind in ~/.claude/settings.json (the uninstall script removes all of them for you, including entries whose _gstack_source tag was stripped). Edit that file and delete every hook whose command path points into .claude/skills/gstack/: the SessionStart auto-update hook, the AskUserQuestion PreToolUse/PostToolUse hooks, and the Stop hooks (session timeline, plus verify-gate if you opted in). Left in place, they error on every matching event once the install directory is gone.

Clean up CLAUDE.md

The uninstall script does not edit CLAUDE.md. In each project where gstack was added, remove the ## gstack and ## Skill routing sections.

Playwright

~/Library/Caches/ms-playwright/ (macOS) is left in place because other tools may share it. Remove it if nothing else needs it.

Aside

gstack never installed Aside, so it never uninstalls it. Keep it or remove it like any other app.


Free, MIT licensed, open source. No premium tier, no waitlist.

I open sourced how I build software. You can fork it and make it your own.

We'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.

GBrain — persistent knowledge for your coding agent

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."

/setup-gbrain

Four paths, pick one:

  • 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. ~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.
  • 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.

After init, the skill offers to register gbrain as an MCP server for Claude Code (claude mcp add gbrain -- gbrain serve) so gbrain search, gbrain put, etc. show up as first-class typed tools — not bash shell-outs.

Keeping the brain current. Run /sync-gbrain from any repo to re-index its code into gbrain (incremental by default, --full for a full reindex, --dry-run to preview). The skill registers the cwd as a federated source via gbrain sources add, runs gbrain sync --strategy code, and writes a ## GBrain Search Guidance block to your project's CLAUDE.md so the agent prefers gbrain search/code-def/code-refs over Grep. The block is removed automatically if the capability check fails — no stale guidance pointing at tools that aren't installed.

Per-remote trust policy. Each repo on your machine gets one of three tiers:

  • read-write — agent can search the brain AND write new pages back from this repo
  • read-only — 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 — no gbrain interaction at all

The skill asks once per repo. The decision is sticky across worktrees and branches of the same remote.

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.

gstack-artifacts-init

Running gstack in Conductor? Conductor explicitly strips ANTHROPIC_API_KEY and OPENAI_API_KEY from every workspace's process env, so paid evals and gbrain embeddings won't work out of the box. Set GSTACK_ANTHROPIC_API_KEY and GSTACK_OPENAI_API_KEY in 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.

Full monty — every scenario, every flag, every bin helper, every troubleshooting step: USING_GBRAIN_WITH_GSTACK.md

Other references: docs/gbrain-sync.md (sync-specific guide) • docs/gbrain-sync-errors.md (error index)

Docs

Doc What it covers
Skill Deep Dives Philosophy, examples, and workflow for every skill (includes Greptile integration)
Diagrams & Document Formats Mermaid/excalidraw fences in PDFs, image sizing and safety defaults, --to html|docx, /diagram triplets
Builder Ethos Builder philosophy: Boil the Ocean, Search Before Building, three layers of knowledge
Using GBrain with GStack Every path, flag, bin helper, and troubleshooting step for /setup-gbrain
GBrain Sync Cross-machine memory setup, privacy modes, troubleshooting
Architecture Design decisions and system internals
Browser How gstack drives Aside first (the contract, the cookbook, rendering, research), when the fallback engine kicks in, and the fallback's full $B command reference
Contributing Dev setup, testing, contributor mode, and dev mode
Memorable recall bridge Opt-in third-party workflow memory through gstack: two consents, what gstack hands over and can attest, removal, troubleshooting
Changelog What's new in every version

Privacy & Telemetry

gstack includes opt-in usage telemetry to help improve the project. Here's exactly what happens:

  • 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 disables everything instantly.
  • Every off-machine send is receipted. Any gstack-initiated network send — telemetry included — writes a hash-chained, tamper-evident receipt to ~/.gstack/security/egress.jsonl before the send; sensitive sinks refuse to send at all if the receipt can't be written. Audit with gstack-egress list, verify the chain with gstack-egress verify (exit 3 on tamper), see the standing consent settings with gstack-egress grants. The ledger records attempted sends so accidents are auditable — it's an audit trail, not a network firewall.
  • Optional third-party bridges are off by default and receipted too. The one that exists today, the Memorable recall bridge, hands your prompt to a locally installed vendor binary only after you run gstack-memorable enable; every hand-off writes a receipt first, the consent shows up in gstack-egress grants, and what the vendor then sends is documented as the vendor's claim.

Data is stored in Supabase (open source Firebase alternative). The schema is in 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.

Local analytics are always available. Run gstack-analytics to see your personal usage dashboard from the local JSONL file — no remote data needed.

Troubleshooting

Skill not showing up? Run ./setup --status from your gstack checkout. It prints every install (host, scope, version, skills directory, source checkout) and, for a stale, missing or unregistered row, the exact command that fixes it. The usual fix is to re-run setup from that row's source for that host, e.g. cd ~/.claude/skills/gstack && ./setup (Claude) or cd ~/gstack && ./setup --host codex. A project install lives in the project's .claude/skills/gstack or .agents/skills/gstack; run its setup from inside the project.

/browse (or /qa, /design-review) says NEEDS_ASIDE or ASIDE_NOT_RUNNING? That's the probe telling you it's about to use the fallback browser. Want Aside? Open the app and sign in — aside --version should print a version and aside repl 'console.log("ok")' should print ok — then re-run. gstack never installs it for you. Want the fallback on purpose while Aside is open? GSTACK_SKIP_ASIDE=1 makes every skill, the renderer, and ./setup treat Aside as absent.

/browse fails on the fallback browser? cd ~/.claude/skills/gstack && bun install && bun run build

/make-pdf or /diagram can't render? Same two paths: with Aside open they print through Aside (bun run ~/.claude/skills/gstack/bin/gstack-render.ts some.html --screenshot /tmp/out.png tests it directly, and its first line, ENGINE=aside or ENGINE=browse, names the browser that actually rendered); without it they use the bundled browser, so bun run build is the fix.

Stale install? Run /gstack-upgrade — or set auto_upgrade: true in ~/.gstack/config.yaml

State in the wrong place, or a setting that won't stick? ~/.claude/skills/gstack/bin/gstack-paths --explain shows which directory gstack uses for its state and why. See docs/state-root.md.

Want shorter commands? cd ~/.claude/skills/gstack && ./setup --no-prefix — switches from /gstack-qa to /qa. Your choice is remembered for future upgrades.

Don't use some skills? gstack-config set disabled_skills make-pdf,pair-agent stops registering them on every host, so their descriptions stop loading into each session. Claude Code updates right away; other hosts on their next ./setup --host <name> or /gstack-upgrade. Their files stay installed, so a skill that calls a disabled one still works (you get a warning). Typos are rejected with the closest skill name, gstack-upgrade can't be disabled, and gstack-config set disabled_skills "" re-enables everything.

Want namespaced commands? cd ~/.claude/skills/gstack && ./setup --prefix — switches from /qa to /gstack-qa. Useful if you run other skill packs alongside gstack.

Codex says "Skipped loading skill(s) due to invalid SKILL.md"? Your Codex skill descriptions are stale. ${CODEX_HOME:-~/.codex}/skills/gstack is a runtime directory, not the checkout: ./setup --status shows the Codex row's source checkout. Fix: cd <that source> && git pull && ./setup --host codex — for a repo-local install, run it from inside the project.

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 Windows PowerShell and Visual Studio 2022 Build Tools with the Desktop development with C++ workload; setup leaves that skill explicitly unavailable when they are absent.

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.

Chromium install failed or hung during ./setup? The bundled browser is best-effort: setup records the reason, finishes registering every skill, and prints which skills are affected (/qa, /qa-only, /design-review, /browse, make-pdf, /diagram, /pair-agent). With Aside open, the browser skills keep running in Aside and only the fallback engine is missing; /pair-agent always needs the bundled browser. Fix the cause and re-run ./setup. Knobs: GSTACK_PLAYWRIGHT_INSTALL_TIMEOUT=<seconds> raises the download bound (default 600) on slow links; GSTACK_SKIP_PLAYWRIGHT=1 skips the Chromium install entirely (CI, no-browser boxes); GSTACK_CHROMIUM_NO_SANDBOX=1 is the fix when Chromium installs but cannot launch because the host blocks unprivileged user namespaces (Ubuntu 24.04+ AppArmor default, #2157).

Setup ended with "Not registered (a skill you own already uses the name; left untouched)"? gstack only deletes or links over a skill entry it can prove it created: a symlink into gstack, a directory carrying the .gstack-owned marker ./setup writes into every directory it creates, or a SKILL.md that is byte-identical to gstack's or carries the generated <!-- AUTO-GENERATED from ... --> banner. A qa/ or ship/ you wrote yourself is left untouched by ./setup, gstack-relink, and both prefix-mode flips, and the linker names it in the final summary. Rename or move yours, or switch modes (./setup --prefix / --no-prefix) so the names stop colliding. If you started your own skill from a generated gstack SKILL.md and then edited it, that file is moved to ~/.gstack/backups/skills/<timestamp>/<skill>/SKILL.md before gstack's is linked in, never deleted.

Claude says it can't see the skills? Make sure your project's CLAUDE.md has a gstack section. Add this:

## gstack
Use /browse from gstack for all web browsing. Never use mcp__claude-in-chrome__* tools.
Available skills: /office-hours, /plan-ceo-review, /plan-eng-review, /plan-design-review,
/design-consultation, /design-shotgun, /design-html, /review, /deslop-shared-libs, /test-audit, /ship, /land-and-deploy,
/canary, /benchmark, /browse, /open-gstack-browser, /qa, /qa-only, /design-review, /scrape,
/setup-browser-cookies, /setup-deploy, /setup-gbrain, /sync-gbrain, /retro, /investigate,
/document-release, /document-generate, /codex, /cso, /autoplan, /pair-agent, /careful, /freeze,
/guard, /unfreeze, /gstack-upgrade, /learn.

License

MIT. Free forever. Go build something.

来源:web-github-trending · github.com