← 返回主页 v1.40.0 MIT License 47 Skills

gstack 使用操作手册

Garry Tan (YC CEO) 的 Claude Code 工作流——把 AI Agent 变成一支虚拟工程团队

1. 什么是 gstack

gstack 是 Y Combinator 总裁 Garry Tan 开源的一套 Claude Code / OpenCode / Codex 工作流,本质上是 47+ 个高度结构化的 Slash Command(Skill),每个命令对应一个角色专家:

  • CEO / Founder:重塑产品,挖掘隐藏的 10 星功能
  • Eng Manager:架构、数据流、边缘场景、测试矩阵
  • Senior Designer:检测 AI Slop(生硬模板化设计),打分到 10/10
  • Staff Engineer:CI 通过却会在生产爆炸的 Bug
  • QA Lead:真实浏览器点击、自动生成回归测试
  • CSO:OWASP Top 10 + STRIDE 安全审计
  • Release Engineer:从 PR 到生产部署的全自动化
核心价值 gstack 的精髓不是“工具集合”,而是一套流程:思考 → 计划 → 构建 → 审查 → 测试 → 发布 → 反思。每个 Skill 都会读取上一步的产物(如 design doc、test plan、review 结果),形成无缝管道。

它解决什么问题?

  • 新手用户:不知道怎么写 Prompt → 用结构化角色代替空白提示
  • 资深工程师:每个 PR 的严格 review、QA、release 自动化
  • 创始人 / CEO:技术背景仍想 Ship 产品的人

2. 安装步骤

2.1 前置要求

组件版本用途
git任意克隆仓库
bunv1.0+运行 TypeScript Skill 生成器
node.js仅 Windows启动 Chromium
opencode / claude / codex任一宿主 Agent

安装 Bun(macOS)

curl -fsSL https://bun.sh/install | bash
export PATH="$HOME/.bun/bin:$PATH"
bun --version  # 应输出 1.x.x

2.2 克隆 gstack 仓库

git clone --single-branch --depth 1 \
  https://github.com/garrytan/gstack.git \
  ~/gstack

2.3 OpenCode 用户的安装方式

官方推荐:

cd ~/gstack
./setup --host opencode
⚠️ 实战踩坑:browse 二进制构建失败

官方 setup 会先编译 browse(无头浏览器二进制),过程中需要下载 onnxruntime-web(22MB ML 模型,用于 prompt injection 防御)以及 Playwright Chromium。在国内网络环境下经常失败超时。

解决方案:跳过二进制编译,只生成并 link Skill 文档。如下:

简化安装(推荐,国内网络友好)

# 1. 进入 gstack 目录
cd ~/gstack

# 2. 直接生成 OpenCode 格式的 Skill 文档(约 2 秒)
bun run gen:skill-docs --host opencode

# 3. 手动 link 到 OpenCode skills 目录
mkdir -p ~/.config/opencode/skills
cd ~/gstack/.opencode/skills
for skill in gstack*/; do
  name="${skill%/}"
  ln -sfn "$HOME/gstack/.opencode/skills/$name" \
          "$HOME/.config/opencode/skills/$name"
done

# 4. 验证
ls ~/.config/opencode/skills/ | grep gstack | wc -l
# 应输出 47
✅ 验证安装成功 在 OpenCode 中输入任意一个命令的描述,比如「帮我做一次 office hours」,Agent 应能识别 gstack-office-hours Skill 并自动加载。

2.4 团队模式(共享代码仓库)

cd ~/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"

切换到 team 模式后,团队成员不需要重复安装:每次 OpenCode/Claude Code 启动都会自动检查更新(节流为每小时一次,离线安全)。

3. 核心工作流

gstack 不是工具堆,而是一条流水线。每个 Skill 都消费上一个 Skill 的产出

1思考
/office-hours
2计划
/autoplan
3构建
(实现代码)
4审查
/review
5测试
/qa
6发布
/ship
7反思
/retro
典型一次开发的命令链
/office-hours          # 我想做一个日报 App
/plan-ceo-review       # CEO 视角挑战需求
/plan-eng-review       # 工程视角写架构
/plan-design-review    # 设计视角检测 AI Slop
# ↑ 上面三步可用 /autoplan 一键完成
# 实现代码(Agent 自己写)
/review                # 自动审 + 自动修
/qa https://staging... # 真实浏览器测
/ship                  # 跑测试 + 推 PR
/land-and-deploy       # 合并 + 部署 + 验证
/retro                 # 周期复盘

4. Skill 详解(含具体用法、设计原因、使用好处)

本章对核心 Skill 给出三个维度的解释:

  • 具体用法:实际怎么调用 + 输入什么参数
  • 为什么这样设计:背后的产品 / 工程逻辑
  • 这样用的好处:相比"直接写代码"或其他做法,能避免什么坑

4.1 思考阶段(开始前必做)

/office-hours · YC Office Hours

具体用法

> /office-hours
> /office-hours 我想给应用加 AI 总结功能
> /office-hours --depth deep   # 更激进的挑战模式

调用后 Agent 会问 6 个强制性问题,逐题回答,不能跳过:

  1. 用户具体在什么场景说"想要"?给 3 个真实引用
  2. 这事在 OKR 里排第几?不做会失去多少用户?
  3. 有没有"成本更低 80% 价值"的替代方案?
  4. ……

讨论结束后产出 DESIGN.md(或 docs/superpowers/specs/YYYY-MM-DD-<name>-design.md),后续所有 Skill 都会读它。

为什么这样设计

Garry Tan 在 YC 做了 10 年 office hours,发现 90% 创业失败不是执行问题,是做错了产品——做了用户说要的,错过了用户真正需要的。这个 Skill 把 YC 的提问框架代码化:用问题暴露假设,用替代方案打破执着。

这样用的好处

  • 砍掉 60% 不必要范围:很多"必须功能"在追问下其实是"想要"
  • 提前暴露伪需求:5 分钟对话省掉 5 天白做工
  • 产出 design doc 是后续 Skill 的输入:跳过它 → /autoplan 没有评审对象
  • 训练你的产品直觉:用多了会内化这 6 个问题
不要跳过的场景 即使是"小功能"也用——简单需求被错误执行的代价 = 复杂需求的代价。

/autoplan · Review Pipeline

具体用法

> /autoplan
> /autoplan --skip ceo,design   # 跳过特定视角
> /autoplan --only eng          # 只跑工程视角

会自动按需调度 4 个 Skill:/plan-ceo-review/plan-design-review/plan-eng-review/plan-devex-review,并把所有需要你拍板的"品味决策"打包成单次 AskUserQuestion。

为什么这样设计

这是"智能调度"的体现——纯后端服务不需要 design review,纯 SDK 不需要 design review。手动跑 4 个命令容易遗漏或重复,/autoplan 根据需求类型自动判断哪些视角适用。

这样用的好处

  • 省 60% 时间:相比手动一个个跑 plan-*-review
  • 不会漏视角:Agent 自动判断当前需求需要哪几种 review
  • 决策点集中:一次性问完所有要你定的事,不打断思路
  • 编码了决策原则:经验沉淀进 Skill,不依赖你记住

4.2 计划阶段

/plan-ceo-review · CEO / Founder 视角

具体用法

> /plan-ceo-review
> /plan-ceo-review --mode expansion       # 扩展模式
> /plan-ceo-review --mode hold-scope      # 保持现有范围
> /plan-ceo-review --mode reduction       # 缩减模式

4 种模式:

  • Expansion:挖隐藏的 10 星产品("你做的不是 X,是 Y")
  • Selective Expansion:保留核心,挑战 1-2 个维度
  • Hold Scope:仅做合规挑战,不扩范围(已 ship 周期)
  • Reduction:砍范围(资源紧 / 期限紧)

为什么这样设计

CEO 视角和工程师视角天然冲突——工程师想"全部都做",CEO 想"做最赚的那个"。把 CEO 思维代码化,让 AI 在你激情澎湃想做大功能时帮你踩刹车。

这样用的好处

  • 找到 10 星产品:你描述"日报 App",AI 指出你其实在做"AI 助理"
  • 避免范围爆炸:早期就把 V2/V3 的事剥离
  • 4 种模式覆盖不同阶段:早期用 expansion,成熟期用 hold-scope

/plan-eng-review · 工程经理视角

具体用法

> /plan-eng-review

产出包含:

  • ASCII 数据流图(请求 → 服务 → DB)
  • 状态机图(订单 / 用户状态等)
  • 错误路径表(每个 step 的失败处理)
  • 测试矩阵(输入边界 × 期望输出)
  • 失败模式分析(FMEA 简化版)

为什么这样设计

大多数 AI 产生的代码都"看起来对、跑起来错"——因为 AI 没有把架构画出来过。强制 ASCII 数据流图是让 AI 把隐含假设显式化。状态机能防止"3 个布尔 = 8 种状态"的失控组合爆炸。

这样用的好处

  • 架构问题前置发现:在写代码前就发现"这个状态机没法表达取消订单"
  • 测试矩阵自动转单测:后续 /ship 可直接用
  • code review 时有据可依:同事看到数据流图秒懂改动影响范围

/plan-design-review · 设计师视角

具体用法

> /plan-design-review

会对每个设计维度打 0-10 分,并解释什么是 10 分:

  • 视觉层级(信息密度 vs 留白)
  • 交互反馈(loading / error / empty 三态)
  • 响应式布局(5 个断点)
  • 无障碍(ARIA / 对比度 / 键盘)
  • 动效合理性
  • AI Slop 检测(千篇一律的 bot 模板)

为什么这样设计

"AI Slop" 是 Garry Tan 创造的术语——指 AI 默认产出的"看似漂亮实则套模板"的设计:渐变背景 + 中心对齐表单 + 紫色按钮。这种设计 2024 年还能用,2026 年用户一眼识破。Skill 显式列出 AI Slop 模式,强制 Agent 偏离它。

这样用的好处

  • 避免"AI 设计味":差异化产品视觉
  • 0-10 打分量化:知道还差多少能 ship
  • 逐项交互式确认:一次只问一个,不被信息淹没

/plan-devex-review · 开发者体验视角

具体用法

> /plan-devex-review
> /plan-devex-review --mode polish    # 已有 SDK 优化
> /plan-devex-review --mode triage    # 时间紧,找最值得改的

对标 TTHW(Time-To-Hello-World)—— 从开发者第一次看文档到运行第一个 demo 的时间。Stripe、Vercel、OpenAI 的 TTHW 都 < 5 分钟。

3 种模式:DX EXPANSION(从零设计 SDK)、DX POLISH(优化已有 SDK)、DX TRIAGE(找改一个最值得的)。20-45 个强制问题。

为什么这样设计

SDK / API / CLI 的成败 90% 在 DX。/plan-design-review 是给终端用户的,/plan-devex-review 是给开发者用户的。两者用户群不同 → 评审维度完全不同。

这样用的好处

  • 找到 friction point:哪一步把 50% 用户劝退?
  • 对标头部 SDK:你的 TTHW vs 行业最佳
  • 设计"魔法时刻":让开发者"第一次跑通"产生 wow

4.3 构建阶段

/design-shotgun · 设计探索

具体用法

> /design-shotgun 登录页大改版,要"未来感"但别太花
> /design-shotgun --variants 6      # 生成 6 个变体(默认 4-6)
> /design-shotgun --refine 2,4      # 基于第 2、4 个再生成新一轮

Agent 会:

  1. 调用 GPT Image 同时生成 4-6 个 mock 变体
  2. 在浏览器打开对比板(4 张并列)
  3. 等你给反馈("②好但太像 Stripe")
  4. 基于反馈生成下一轮,直到你满意
  5. 把你的偏好存入 taste memory(跨项目复用)

为什么这样设计

"用文字描述视觉"是反人类的——你说"现代但不花哨",AI 给你的可能差得远。看到选项再选比文字描述快 10 倍。Taste memory 学习你的偏好后,第 3 个项目开始 AI 自动避开你不喜欢的风格。

这样用的好处

  • 视觉直觉直接调用:不用翻译成文字
  • 跨项目偏好累积:3 个项目后 AI 懂你"喜欢留白、讨厌渐变"
  • 一轮 5 分钟 vs 反复改 2 小时:效率碾压传统流程

/design-html · 设计转代码

具体用法

> /design-html ./mock-final.png
> /design-html --framework react      # 显式指定框架
> /design-html --type dashboard       # 类型路由(landing/dashboard/form)

把 mock 图片变成生产级 HTML/CSS。自动检测项目框架(React/Svelte/Vue),用 Pretext 计算文本布局——文字真的会随宽度 reflow,高度真的会随内容调整。

为什么这样设计

普通 AI 写 HTML 的通病:硬编码像素 → 在某个屏幕宽度看着对、其他都崩。Pretext 是 Garry 团队开发的计算布局库(30KB 零依赖),文字宽度由计算得出而非硬编码。智能 API 路由根据布局类型选不同 Pretext 模式(landing 用 hero pattern,dashboard 用 grid)。

这样用的好处

  • 真正响应式:不只是写了 @media,是数学计算的 reflow
  • shippable 不是 demo:直接进生产,不用 dev 重写
  • 30KB 开销:比 Tailwind + 任意 UI 库小 90%

4.4 审查阶段

/review · 资深工程师视角

具体用法

> /review                    # 审当前 diff
> /review --base main        # 与 main 对比
> /review --autofix          # 找到的问题自动修
> /review --strict           # 更严格(发现 nice-to-have 也报)

会查的"CI 通过但生产爆炸"问题:

  • SQL 拼接 / N+1 查询
  • LLM 调用未做信任边界(用户输入直接进 prompt)
  • 条件副作用(if 块里偷偷改了 state)
  • Promise 未 await / Race condition
  • 边界条件遗漏(空数组、null、undefined)

对每个问题分级:AUTO-FIXED(已自动修)/ ASK(需你拍板)/ FYI(仅提醒)。

为什么这样设计

普通 ESLint / Prettier 抓的是"语法 / 风格"问题。/review 抓的是"语义级"问题——这些往往只在生产数据下暴露,本地测试发现不了。比如 SQL 拼接看起来对,跑一年没事,直到有用户名带 '

这样用的好处

  • 覆盖 CI 抓不到的层:和 lint 互补不重复
  • 简单问题自动修:你只需对 ASK 分类做决策
  • 每次合并前的最后关卡:拦下 80% 生产事故

/cso · 安全官视角

具体用法

> /cso                                  # 全量扫描
> /cso --focus "auth,payment"           # 聚焦特定模块
> /cso --threshold 9                    # 只报 9 分以上的(默认 8)
> /cso --include-fp                     # 包含 false positive(学习用)

OWASP Top 10 + STRIDE 威胁建模。零噪音模式:

  • 17 个 false positive 排除规则(不报告"明显但不是漏洞"的事)
  • ≥8/10 confidence 才报(避免狼来了)
  • 每个发现独立验证(用第二轮 LLM check)
  • 必须包含具体利用场景(不是"理论上可能")

为什么这样设计

传统安全扫描器(Snyk / Semgrep / Bandit)的通病:一次报 200 条,开发者关掉。/cso 反其道而行:宁少勿滥,每条都附带可执行的攻击 PoC(如 curl ...)。这种风格让开发者真的会处理。

这样用的好处

  • 真问题:8/10 + 验证 → 几乎 0 个 false positive
  • 有 PoC:可以直接在 staging 复现验证
  • 低噪音 = 真的有人看:传统扫描的 200 条没人读

/investigate · 系统化调试

具体用法

> /investigate
> /investigate 支付按钮 5% 概率不响应
> /investigate --logs ./logs/2024-01-15.log
> /investigate --max-attempts 5     # 默认 3 次失败后停止

4 阶段方法论:Reproduce → Isolate → Fix → Verify。每阶段不通过不能进下一阶段。

铁律:"NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST"。

为什么这样设计

新手 / AI 调试的通病:直接跳到 Fix 阶段,"应该是 X 问题,改一下试试"。结果修了一处坏了三处/investigate 强制走 4 阶段,3 次失败修复后自动停止——避免越调越乱

这样用的好处

  • 找到真根因:不再是"症状缓解"
  • 3 次熔断:避免无限尝试浪费时间
  • 有日志可追溯:每个假设和测试结果都记录
火急时也要走完整流程 看似多花 5 分钟,实际避免"瞎修出新 bug"的几小时返工。

4.5 测试阶段

/qa <url> · 真实浏览器 QA

具体用法

> /qa https://staging.example.com
> /qa http://localhost:3000 --flow login,checkout
> /qa --auth-cookies ./cookies.json   # 已登录态测试
> /qa --mobile                         # 移动视口

启动真 Chromium(不是模拟器),按以下步骤工作:

  1. 探索页面,识别核心 user flow
  2. 真点击、真输入、真验证
  3. 发现 Bug 后自动修复(原子提交)
  4. 修复后自动生成 regression test(Playwright/Cypress)
  5. 重新跑 flow 验证

为什么这样设计

单元测试 + 集成测试覆盖不到的 30% bug 都在用户流层级——比如"按钮按了 loading,但 API 没调"。这种 bug 只有真浏览器跑过才发现。/qa 给 Agent "一双眼睛",从此 Agent 不再只能猜测页面行为。

这样用的好处

  • 找到 e2e 层 bug:UT 抓不到的 30% 错误
  • 修了一个 + 一个 regression test:永久免疫
  • 让并行 Agent 真正可行:Garry 自己说 /qa 让他从 6 → 12 并行 worker

/benchmark · 性能基线

具体用法

> /benchmark https://example.com           # 建立基线
> /benchmark --compare main                # 与 main 分支对比
> /benchmark --metric LCP,FCP,CLS          # 只测核心 vitals

测三件事:

  • 页面加载时间(FCP / LCP / TTI)
  • Core Web Vitals(LCP / CLS / INP)
  • 资源大小(JS / CSS / Image)

为什么这样设计

性能回归是"缓慢累积"——这周加 50ms,下周再加 80ms,半年后页面卡。每个 PR 都跑 benchmark 是把累积变成可见

这样用的好处

  • 性能回归早发现:单 PR 多 100ms 就拦下
  • 数据驱动决策:不再"感觉慢"
  • 对标行业基准:知道你和 Stripe / Vercel 差多少

4.6 发布阶段

/ship · PR 自动化

具体用法

> /ship                              # 标准流程
> /ship --hotfix                     # 热修复(跳过部分门禁)
> /ship --no-test                    # 跳测试(紧急时用)
> /ship --base develop               # 指定 base 分支

完整流程:

  1. 同步 main / develop(避免落后)
  2. 跑测试(有就用,没有自动 bootstrap 测试框架)
  3. 覆盖率审计(生成 coverage report)
  4. git push
  5. gh CLI 开 PR,正文自动生成(含 changes / tests / screenshots)

为什么这样设计

Ship 流程的"碎"是开发者最大痛点——同步、跑测试、推、写 PR 描述、贴截图……每个动作 1 分钟,5 个动作 5 分钟,每天若干次。/ship 把这些原子化为单命令

这样用的好处

  • 从 5 分钟 → 30 秒
  • PR 描述质量高:自动包含 diff 摘要、测试覆盖、截图
  • 没测试框架自动 bootstrap:新项目第一次 ship 顺便配 Vitest/Jest

/land-and-deploy · 部署一条龙

具体用法

> /land-and-deploy
> /land-and-deploy --priority urgent     # 紧急部署
> /land-and-deploy --skip-canary         # 跳过金丝雀(小改)
> /land-and-deploy --env staging         # 指定环境

从"PR approved"到"verified in production"全自动:

  1. 合并 PR(squash merge)
  2. 等 CI 通过
  3. 触发部署(Vercel / Railway / Fly.io / 自定义脚本)
  4. 等部署完成
  5. 跑 production health check(关键 endpoint)
  6. 30 分钟内监控 Sentry / DataDog

为什么这样设计

"approved 后到生产 OK"之间通常有 4-6 个动作,工程师容易在中间环节出错(忘了部署 / 没看 health check)。/land-and-deploy 把它们串成一个事务:任一步失败自动停止 + 通知。

这样用的好处

  • 不用守着部署:触发后做别的事
  • 失败自动停:避免坏代码进生产
  • 30 分钟监控:捕获部署后的延迟问题

/canary · 部署后监控

具体用法

> /canary --duration 30m
> /canary --duration 2h --alerts slack    # 告警发 Slack
> /canary --baseline yesterday            # 对比昨日基线

监控 3 类指标:

  • Console error 频率(前端)
  • 性能回归(Core Web Vitals 偏移)
  • 页面失败(5xx / 超时)

异常超阈值自动 ping 你(或 Slack)。

为什么这样设计

部署 ≠ 没问题。30% 的生产故障在部署后 30 分钟才暴露(缓存、CDN、长连接)。/canary 让你在事故升级前发现

这样用的好处

  • 缩短 MTTR:5 分钟发现 vs 用户投诉后 2 小时
  • 免费的"上线值守":以前要工程师盯着
  • 异常对比基线:知道是新问题还是老问题

4.7 强力工具

/freeze · 编辑锁

具体用法

> /freeze src/payment              # 只允许改这个目录
> /freeze src/auth tests/auth      # 多个目录
> /freeze .                        # 锁定整个项目(只读)
> /unfreeze                        # 解锁

为什么这样设计

AI 在调试一个 bug 时,常会"顺手"重构旁边的模块("反正看着不顺眼")——这种意外改动是生产事故的常见来源。/freeze 给 Agent 划红线。

这样用的好处

  • 避免 scope creep:debug 时不会越界改其他模块
  • diff 干净:PR review 不会被无关改动淹没
  • 调试期心理安全:放心让 AI 探索

/careful · 危险命令护栏

具体用法

> /careful                # 启用危险命令警告
> /careful off            # 关闭

启用后,以下命令执行前会先警告并让你确认:

  • rm -rf
  • SQL DROP / TRUNCATE / DELETE FROM
  • git force-push / reset --hard / clean -fdx
  • kubectl delete
  • npm publish

为什么这样设计

AI 跑命令的速度比人快 100 倍——也意味着错误传播速度也快 100 倍。一个 rm -rf $UNDEFINED_VAR/ 几秒就能毁掉 home 目录。

这样用的好处

  • 关键时刻多 1 秒:足够你看出"等等不对"
  • 不影响日常命令:只警告高风险
  • 覆盖最容易踩的坑:基于真实事故复盘

/guard · 全模式保险

具体用法

> /guard
# 等价于:/careful + /freeze [当前目录]

为什么这样设计

生产环境作业(hotfix、紧急回滚、数据迁移)需要双重保险/guard 一键开启。

这样用的好处

  • 降低生产作业心智负担:一个命令而不是两个
  • 明确进入"高警觉模式":自己也会更专注

/learn · 跨 Session 项目记忆

具体用法

> /learn                              # 列出已学习的内容
> /learn add "我们的 API 错误码用 4 位数字"
> /learn add "src/legacy/ 不要动,正在弃用"
> /learn search 错误码
> /learn prune                        # 清理过期项
> /learn export                       # 导出(备份 / 分享给同事)

为什么这样设计

每次新 Session,Agent 都"失忆"——你要重新解释项目约定。/learn 把项目特定知识持久化到本地,下次新 Session 自动加载。这是把 Agent 训练成"老员工"的关键。

这样用的好处

  • 越用越懂你的代码库:累积记忆 vs 每次失忆
  • 团队共享知识:导出给同事的 onboarding 加速 5 倍
  • 防止"踩同一个坑两次":bug 和教训写进去就不会重犯
最被低估的 Skill 很多用户用 gstack 半年才发现 /learn,错过了最大的复利效应。建议第一周就开始用。

/retro · 复盘

具体用法

> /retro                       # 当前项目本周复盘
> /retro --period month        # 月度
> /retro global                # 跨所有项目和 AI 工具
> /retro --team               # 含每个成员的明细

产出:

  • 本周 ship 频率(PR / commit / lines)
  • 测试健康趋势(覆盖率、通过率)
  • 每人 streak(连续 ship 天数)
  • 成长机会(哪些 skill 用得少?)

为什么这样设计

"AI 让我多产 X 倍"是直觉,/retro 让它变成数据。看到自己 ship 节奏的拐点,是优化工作流最强的反馈。

这样用的好处

  • 数据驱动选工具:看到 /qa 用得多 → 验证 ROI
  • 每周可视化进步:心理上很爽
  • 找到瓶颈:哪个阶段卡得最久?

5. 实战场景

场景 A:从零做一个新功能

用户:我想给应用加一个通知功能

# 第一步:思考清楚再写代码
> /office-hours
Agent:[6 个强制问题挑战需求]
       你说"通知功能",但你描述的痛点其实是
       "用户错过重要状态变化"——是不是要做的是
       "智能摘要",而不是"通知列表"?

# 第二步:一键多视角审查
> /autoplan
Agent:[CEO 视角] 建议从最窄楔形开始
       [Design 视角] 8/10—主面板需要改进信息层级
       [Eng 视角] 状态机 + 测试矩阵已生成
       同意吗?

# 第三步:实现(Agent 自己写)
[2,400 行代码 / 11 文件 / 8 分钟]

# 第四步:审查
> /review
[AUTO-FIXED] 2 个明显问题
[ASK] 1 个 race condition——你拍板

# 第五步:QA
> /qa https://staging.myapp.com
[真实浏览器测全流程]
[发现 1 个 bug,已修,已生成 regression test]

# 第六步:发布
> /ship
Tests: 42 → 51 (+9)
PR: github.com/you/app/pull/42

# 第七步:合并 + 部署
> /land-and-deploy

场景 B:调试一个生产 Bug

# 不要直接让 Agent 写"修复"——先调查
> /investigate
Agent:[追数据流]
       [测试假设 1: ✗ ]
       [测试假设 2: ✗ ]
       [测试假设 3: ✓ 找到根因]
       建议方案 A / B / C,你选。

# 改完后审一遍
> /review

# 部署前再过一次 QA
> /qa https://staging...

# 推 PR
> /ship

场景 C:纯安全审计

> /cso
Agent:[OWASP Top 10 全扫]
       [STRIDE 威胁建模]
       Found 3 issues (8.5/10 confidence):
       1. SQL Injection in /api/search
          Exploit: curl -X POST ... → 拿到所有用户表
       2. Missing rate limit on /login
       3. XSS in markdown renderer

场景 D:纯重构

> /freeze src/auth         # 锁定只能改 auth 目录
> /careful                # 危险命令前提示
> (让 Agent 重构)
> /review                  # 完事审查
> /unfreeze                # 解锁

6. 实战经验总结

核心心法 不要让 AI 直接 Yolo 写代码。gstack 的所有威力都来自"先思考、再约束、最后才动手"这条铁律。把流程当作护栏,AI 才不会失控。

1/office-hours 开始,永远

这是最容易被跳过、也最有价值的 Skill。它会用 6 个问题挑战你的需求定义,大概率会发现你想做的东西不是你以为想做的东西。design doc 是后续所有 Skill 的输入——跳过它,/autoplan 就没有评估的对象。

2能用 /autoplan 就别手动串联

/autoplan 把 CEO/Design/Eng/DX 的 review 自动按需调度(不适用的会跳过),把"品味决策"打包成单次 AskUserQuestion。比你一个个跑省 60% 时间。

3/review 当成必经的关卡

所有要合并的 PR,都先跑 /review。它不是普通的 lint,而是查那些「CI 绿灯但生产爆炸」的隐藏问题——SQL 安全、LLM 信任边界、条件副作用。简单的会自动修,复杂的会标记 ASK 让你拍板。

4/qa 是从「单 Agent」到「并行多 Agent」的分水岭

Garry 自己说:"/qa 让我从 6 个并行 Agent 跳到 12 个。" 因为有了真实浏览器,AI 能自己发现 Bug、自己修、自己写回归测试,你只需要看最终报告。

5调试用 /investigate,不要直接让 Agent 修

"铁律:未调查不修复"。/investigate 会强制 Agent 追数据流、列假设、依次验证,3 次失败修复后停止。这避免了 Agent "瞎修"出更多问题的常见情况。

6/freeze + /careful 用作生产环境护身符

当你在 prod 分支或生产数据库附近作业时:

> /guard       # 一次开启 careful + freeze
> /freeze src/payment   # 限定 Agent 只能改这个目录

避免 Agent 一时手痒去重构隔壁模块。

7/learn 让 Agent 越用越懂你的代码库

每次 Session 中发现的「这个项目的 X 模块用了非主流的 Y 方法」「永远别动 Z 文件」这类知识,会被 /learn 持久化,下次新 Session 自动加载。这是 gstack 最被低估的一个 Skill。

8团队协作上 --team 模式

把 gstack 配置 commit 到 repo 里(仅配置,不 vendor 二进制)。每个使用 OpenCode/Claude Code 的同事会自动同步同一版本,不会出现 "我这边能跑你那边不行" 的问题。

9设计先 /design-shotgun/design-html

不要让 Agent 一上来就写 HTML——先用 shotgun 让它生成 4-6 个 mock 给你挑,再让 html 转码。Pretext 计算布局保证不会 hardcode 像素值。

10每周做一次 /retro global

跨所有项目跑复盘,看 ship 频率、test health 趋势、个人 streak。这是「AI 增强生产力」最直观的反馈回路——你会清晰看到自己 ship 速度的拐点。

常见误用:把 gstack 当工具集而非流程 新手最容易犯的错是只用 /review 不用 /office-hours,或只用 /qa 不用 /ship。每个 Skill 都依赖前一步的产物,单独跑只能拿到 30% 价值。

性价比最高的 5 个 Skill(如果只能记住)

排名Skill为什么
1/office-hours从源头改变你做的事,避免做错产品
2/review合并前的最后一道关卡,找隐藏 bug
3/autoplan一键串联前置 review,省 60% 时间
4/qa真实浏览器测试,让并行扩展成为可能
5/learn跨 Session 的项目记忆,越用越懂你

7. 常见问题(FAQ)

Q1:setup 卡在 "Building browse binary"?

这是国内最常见问题。browse 需要下载 onnxruntime-web(22MB ML 模型)+ Playwright Chromium(~150MB),网络受限时容易超时。

解决:跳过 browse 编译,只生成 Skill 文档:

cd ~/gstack
bun run gen:skill-docs --host opencode
# 然后手动 link skills(见 2.3 节)

代价:失去 /browse/qa/design-html 这些需要浏览器的 Skill。其余 40+ 个 Skill 仍可用。

Q2:bun install 一直卡着不动?

检查是否被某个包卡住(如 onnxruntime-web):

lsof -p $(pgrep -f "bun install") | grep -E "TCP|REG"

如果卡在 ML 包,可加 --ignore-scripts 跳过 postinstall:

bun install --ignore-scripts
Q3:Agent 没有识别 gstack 的 Skill?
  • 确认 link 到了正确目录:~/.config/opencode/skills/(OpenCode),~/.claude/skills/(Claude Code)
  • 确认 Skill 是符号链接,不是空目录:ls -la ~/.config/opencode/skills | grep gstack
  • 每个 skill 目录下应有 SKILL.md 文件
  • OpenCode 会自动发现 ~/.config/opencode/skills/ 下的 Skill;不需要配置
Q4:升级到最新版怎么做?
# 方法 A:Skill 内调用
> /gstack-upgrade

# 方法 B:手动
cd ~/gstack && git pull && bun run gen:skill-docs --host opencode
Q5:能否只装部分 Skill?

可以。链接前手动选择:

cd ~/gstack/.opencode/skills
# 只装思考+审查相关
for s in gstack-office-hours gstack-autoplan gstack-review gstack-qa gstack-ship gstack-learn; do
  ln -sfn "$HOME/gstack/.opencode/skills/$s" \
          "$HOME/.config/opencode/skills/$s"
done
Q6:和 OpenCode 自带的 review skill 冲突吗?

不冲突。gstack 的 Skill 都带 gstack- 前缀(如 gstack-review),与 OpenCode 内置 /review 命名空间隔离。OpenCode 会优先匹配你显式说的名字。

Q7:Agent 一直忽略 gstack workflow,直接写代码怎么办?

在项目根目录创建 AGENTS.mdCLAUDE.md,写明:

# 项目 AI 工作流约定

任何代码改动前必须:
1. 先调用 /gstack-office-hours 明确需求
2. 再调用 /gstack-autoplan 做多视角审查
3. 实现后调用 /gstack-review
4. 合并前调用 /gstack-qa

这是用户指令,会覆盖 Agent 默认行为。

8. 参考资源