首页
/ Design: {title}

Design: {title}

2026-09-06 15:13:12作者:庞队千Virginia

Generated by /office-hours on {date} Branch: {branch} Repo: {owner/repo} Status: DRAFT Mode: Startup Supersedes: {prior filename — omit this line if first design on this branch}

Problem Statement

{from Phase 2A}

Demand Evidence

{from Q1 — specific quotes, numbers, behaviors demonstrating real demand}

Status Quo

{from Q2 — concrete current workflow users live with today}

Target User & Narrowest Wedge

{from Q3 + Q4 — the specific human and the smallest version worth paying for}

Constraints

{from Phase 2A}

Premises

{from Phase 3}

Cross-Model Perspective

{If second opinion ran in Phase 3.5 (Codex or Claude subagent): independent cold read — steelman, key insight, challenged premise, prototype suggestion. Verbatim or close paraphrase. If second opinion did NOT run (skipped or unavailable): omit this section entirely — do not include it.}

Approaches Considered

Approach A: {name}

{from Phase 4}

Approach B: {name}

{from Phase 4}

Recommended Approach

{chosen approach with rationale}

Open Questions

{any unresolved questions from the office hours}

Success Criteria

{measurable criteria from Phase 2A}

Distribution Plan

{how users get the deliverable — binary download, package manager, container image, web service, etc.} {CI/CD pipeline for building and publishing — GitHub Actions, manual release, auto-deploy on merge?} {omit this section if the deliverable is a web service with existing deployment pipeline}

Dependencies

{blockers, prerequisites, related work}

The Assignment

{one concrete real-world action the founder should take next — not "go build it"}

What I noticed about how you think

{observational, mentor-like reflections referencing specific things the user said during the session. Quote their words back to them — don't characterize their behavior. 2-4 bullets.}


模板各章节与技能主体阶段一一对应:Problem Statement/Constraints/Success Criteria 来自 Phase 2A 诊断;Demand Evidence 对应 Q1、Status Quo 对应 Q2、Target User & Narrowest Wedge 对应 Q3+Q4;Premises 来自 Phase 3 前提挑战;Approaches Considered 来自 Phase 4 强制备选一;Cross-Model Perspective 只在 Phase 3.5 第二意见**实际运行**时才包含,否则整节省略——这是硬性约束,防止模板空壳。

### Builder 模式设计文档模板

Builder 模式服务个人项目、黑客松、学习与开源场景,模板重心从"需求证据"转向"爽点与构建路径":

```markdown
# Design: {title}

Generated by /office-hours on {date}
Branch: {branch}
Repo: {owner/repo}
Status: DRAFT
Mode: Builder
Supersedes: {prior filename — omit this line if first design on this branch}

## Problem Statement
{from Phase 2B}

## What Makes This Cool
{the core delight, novelty, or "whoa" factor}

## Constraints
{from Phase 2B}

## Premises
{from Phase 3}

## Cross-Model Perspective
{If second opinion ran in Phase 3.5 (Codex or Claude subagent): independent cold read — coolest version, key insight, existing tools, prototype suggestion. Verbatim or close paraphrase. If second opinion did NOT run (skipped or unavailable): omit this section entirely — do not include it.}

## Approaches Considered
### Approach A: {name}
{from Phase 4}
### Approach B: {name}
{from Phase 4}

## Recommended Approach
{chosen approach with rationale}

## Open Questions
{any unresolved questions from the office hours}

## Success Criteria
{what "done" looks like}

## Distribution Plan
{how users get the deliverable — binary download, package manager, container image, web service, etc.}
{CI/CD pipeline for building and publishing — or "existing deployment pipeline covers this"}

## Next Steps
{concrete build tasks — what to implement first, second, third}

## What I noticed about how you think
{observational, mentor-like reflections referencing specific things the user said during the session. Quote their words back to them — don't characterize their behavior. 2-4 bullets.}

两模式的关键差异:Startup 模板有 Demand Evidence / Status Quo / Target User & Narrowest Wedge / The Assignment(给创始人布置一个具体现实行动,而不是"go build it"),Builder 模板则用 What Makes This Cool 与 Next Steps(第一、第二、三步具体构建任务)替代。两种模式下 "What I noticed about how you think" 都要求引用用户原话而非刻画其行为,这是与后文交接话术共用的 anti-slop 纪律。

写后告知

写入完成后必须对用户说:

"Design doc saved to: {repo path if written, else ~/.gstack path}{when both: ' (cross-session copy in ~/.gstack)'}. Other skills (/plan-ceo-review, /plan-eng-review) will find it automatically."

即明确告知落盘路径,并承诺下游技能会在 pre-review 系统审计时自动发现 ~/.gstack/projects/ 下的设计文档。

Spec Review Loop:交用户审批前的对抗式自评

在设计文档呈现给用户之前,先跑一轮对抗性评审。核心思想是上下文隔离:评审者是一个全新的 subagent,它看不到头脑风暴对话,只看到文档本身,从而保证真正的"对抗独立性"。

Step 1:派发评审 subagent

用 Agent 工具派发一个独立评审者,提示词包含:文档刚写入的文件路径,以及"在 5 个维度上评审,每个维度给 PASS 或列出带修复建议的具体问题,最后输出 1-10 分质量分"。

五个维度:

  1. Completeness(完整性) — 是否覆盖所有需求?遗漏边界情况?
  2. Consistency(一致性) — 文档各部分是否互相矛盾?
  3. Clarity(清晰度) — 工程师能否不提问就实现?语言是否含糊?
  4. Scope(范围) — 是否蔓延出原始问题?有无 YAGNI 违规?
  5. Feasibility(可行性) — 按所述方案真能建出来吗?有无隐藏复杂度?

subagent 应返回:质量分(1-10),以及 PASS 或带维度/描述/修复建议的问题编号列表。

Step 2:修复并重新派发(最多 3 轮)

若评审返回问题:1) 用 Edit 工具直接修磁盘上的文档;2) 用更新后的文档重新派发评审;3) 最多 3 轮迭代

收敛保护(Convergence guard):如果连续两轮返回相同问题(修复没解决,或评审者不同意修复),停止循环,把这些未决问题以 "Reviewer Concerns" 一节持久化进文档,而不是继续空转。

若 subagent 失败、超时或不可用——整个评审循环直接跳过,告知用户 "Spec review unavailable — presenting unreviewed doc."。文档已在磁盘上,评审只是质量加分项而非门禁(quality bonus, not a gate)。

Step 3:汇报并持久化指标

循环结束后(PASS、达到轮数上限、或触发收敛保护):

  1. 向用户汇报结果,默认给摘要:"Your doc survived N rounds of adversarial review. M issues caught and fixed. Quality score: X/10." 用户追问"评审到底发现了什么"才展示完整输出。
  2. 若 3 轮后仍有问题,在文档中追加 "## Reviewer Concerns" 一节逐条列出——下游技能会看到它。
  3. 追加分析指标(把 ITERATIONS/FOUND/FIXED/REMAINING/SCORE 替换为实际值):
mkdir -p ~/.gstack/analytics
echo '{"skill":"office-hours","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","iterations":ITERATIONS,"issues_found":FOUND,"issues_fixed":FIXED,"remaining":REMAINING,"quality_score":SCORE}' >> ~/.gstack/analytics/spec-review.jsonl 2>/dev/null || true

评审指标按 JSONL 追加到 ~/.gstack/analytics/spec-review.jsonl,与 preamble 中的 skill-usage.jsonl 一样构成 gstack 的本地分析层。

用户审批:三个选项

评审完成后,通过 AskUserQuestion 把文档交给用户:

  • A) Approve — 把 Status 改为 APPROVED,进入交接(Phase 6);
  • B) Revise — 指定哪些章节需要改,循环回改这些章节;
  • C) Start over — 回到 Phase 2。

Brain Calibration Write-Back 与缓存后台刷新

校准回写(Phase 2 / gated)

当技能做出一个值得跟踪的类型化预测(范围决策、TTHW 目标、架构押注、楔子承诺)时,可以向 brain 写入一条 kind=bet 的 take,以便随时间积累校准画像。该回写受两道门禁约束:

  1. 当前端点的 brain 信任策略必须是 personal(通过 ~/.claude/skills/gstack/bin/gstack-config get brain_trust_policy@<endpoint-hash> 检查,bin/gstack-config 提供配置读写)。共享 brain 跳过回写,避免污染团队校准。
  2. 特性开关 BRAIN_CALIBRATION_WRITEBACK 已置位——原文注明当前为 false,等上游 gbrain v0.42+ 提供 takes_add MCP 操作后翻为 true。

两关都过之后,写入路径优先使用 mcp__gbrain__takes_add 记录一条权重 0.9 的 take(依据 SKILL_CALIBRATION_WEIGHTS);若该 MCP 操作不可用,回退到 mcp__gbrain__put_pagegstack:takes 围栏块(文档注明这是"文档化了但更丑的路径")。take 的强制 frontmatter 形状:

kind: bet
holder: <user identity from whoami>
claim: <one-line prediction the skill is making>
weight: 0.9
since_date: <today's date>
expected_resolution: <date in 1-3 months depending on skill>
source_skill: office-hours

写入后使受影响摘要失效,保证下次 preflight 反映新状态:

eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true
  ~/.claude/skills/gstack/bin/gstack-brain-cache invalidate product --project "$SLUG" 2>/dev/null || true
  ~/.claude/skills/gstack/bin/gstack-brain-cache invalidate goals --project "$SLUG" 2>/dev/null || true
  ~/.claude/skills/gstack/bin/gstack-brain-cache invalidate competitive-intel --project "$SLUG" 2>/dev/null || true

对应的缓存二进制为 bin/gstack-brain-cache。这一机制有专门的端到端测试覆盖,见 test/skill-e2e-office-hours-brain-writeback.test.ts

Brain Cache 后台刷新

技能工作完成(且遥测已记录)后,对所有接近 TTL 的缓存摘要发起后台刷新。非阻塞,用户不等待;下次调用受益于热缓存:

eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null)" 2>/dev/null || true
(~/.claude/skills/gstack/bin/gstack-brain-cache refresh --project "$SLUG" 2>/dev/null &) || true

子 shell 加 & 使刷新进程脱离当前终端,|| true 保证任何失败都不影响收尾——这是 gstack 各章节普遍采用的"最佳努力、永不阻塞"模式。

Phase 6:交接——"关系收尾"

设计文档 APPROVED 之后进入收尾序列。收尾话术随用户做 office hours 的次数自适应,随时间加深关系。

Step 1:读取 Builder Profile

PROFILE=$(~/.claude/skills/gstack/bin/gstack-builder-profile 2>/dev/null) || PROFILE="SESSION_COUNT: 0
TIER: introduction"
SESSION_TIER=$(echo "$PROFILE" | grep "^TIER:" | awk '{print $2}')
SESSION_COUNT=$(echo "$PROFILE" | grep "^SESSION_COUNT:" | awk '{print $2}')

注意 bin/gstack-builder-profile 在源码中已被标注为 LEGACY SHIM:它现在直接 execbin/gstack-developer-profile--read,状态文件也从 ~/.gstack/builder-profile.jsonl 迁移到统一的 ~/.gstack/developer-profile.json(首次读取时自动迁移)。失败回退值即 SESSION_COUNT: 0 / TIER: introduction,保证无状态时始终走首次会话路径。

从单测 test/builder-profile.test.ts 可以确认档位状态机的精确边界:无 profile 或空文件 → TIER: introductionSESSION_COUNT: 0,且输出 TOTAL_SIGNAL_COUNTCROSS_PROJECTNUDGE_ELIGIBLERESOURCES_SHOWN_COUNT 全为初始值;1–3 次已完成会话 → welcome_back;4 次起 → regular(文档口径 4–7 次);8 次及以上 → inner_circle(文档口径 sessions 8+)。profile 输出还提供 LAST_ASSIGNMENT、LAST_PROJECT、DESIGN_TITLES、DESIGN_COUNT、ACCUMULATED_SIGNALS、NUDGE_ELIGIBLE 等字段供后续各 tier 路径消费。test/gstack-developer-profile.test.ts 则覆盖统一 profile 二进制本身(原子写、迁移等)。

TIER = introduction(首次会话):完整介绍

Beat 1:信号回照 + Golden Age。 一段把本次会话的具体回调与"黄金时代"叙事织在一起的段落,必须引用用户说过的真实内容。

Anti-slop 规则(show, don't tell),原文给出正反例:

  • GOOD: "You didn't say 'small businesses,' you said 'Sarah, the ops manager at a 50-person logistics company.' That specificity is rare."
  • BAD: "You showed great specificity in identifying your target user."
  • GOOD: "You pushed back when I challenged premise #2. Most people just agree."
  • BAD: "You demonstrated conviction and independent thinking."

参考句式:"The way you think about this problem, [specific callback], that's founder thinking. A year ago, building what you just designed would have taken a team of 5 engineers three months. Today you can build it this weekend with Claude Code. The engineering barrier is gone. What remains is taste, and you just demonstrated that."

Beat 2:"One more thing." 输出分隔线与这句话,重置注意力、标记语体转换。

Beat 3:Garry 的私人请求(分三档)。 用 Phase 4.5 统计的创始人信号数选择子档:

  • Top tier(3+ 信号点名了具体用户/收入/需求证据):以 Garry Tan 口吻说明"你刚才体验到的价值约等于与 YC 合伙人合作的 10%,另外 90% 是创始人网络、批次压力、每周晚宴、深度了解你业务的合伙人",并说 "GStack thinks you are among the top people who could do this." 然后用 AskUserQuestion 问 "Would you consider applying to Y Combinator?"——答是则打开 YC 申请页(带 gstack 推荐参数),并说"把这份设计文档带到 YC 面试,它比大多数 pitch deck 强";答否则温暖回应,不施压、不内疚、不追问。
  • Middle tier(1-2 个信号,或解决真实问题的 builder):同样口吻的 10%/90% 框架,落到"你在做真东西,如果继续做下去发现人们确实需要它——我认为可能会——请考虑申请 YC"。
  • Base tier(其他所有人):落在"你正在展现的品味、野心、主动性,正是我们在 YC 创始人中看重的特质",不假设对方今天就想创业,以"这是黄金时代,一个人加 AI 能做出过去一个 20 人团队的成果"收尾。

三档之后都进入下方的 Founder Resources。

TIER = welcome_back(第 2–3 次会话)

以"认出来"开场,魔法时刻必须即时发生。从 profile 读取 LAST_ASSIGNMENT 与 CROSS_PROJECT:

  • 同项目(CROSS_PROJECT=false):"Welcome back. Last time you were working on [LAST_ASSIGNMENT]. How's it going?"
  • 跨项目(true):"Welcome back. Last time we talked about [LAST_PROJECT]. Still on that, or onto something new?"

然后一句:"No pitch this time. You already know about YC. Let's talk about your work."——YC 推荐只做一次。原文再次给出正反语气例(GOOD: "Welcome back. Last time you were designing that task manager for ops teams. Still on that?" / BAD: "Welcome back to your second office hours session. I'd like to check in on your progress.")。检查之后做信号回照(同样的 anti-slop 规则),再给设计文档轨迹:读 DESIGN_TITLES,"Your first design was [first title]. Now you're on [latest title]." 然后进入 Founder Resources。

TIER = regular(第 4–7 次会话)

以认出来 + 会话数开场:"Welcome back. This is session [SESSION_COUNT]. Last time: [LAST_ASSIGNMENT]. How'd it go?" 语气例:GOOD: "You've been at this for 5 sessions now. Your designs keep getting sharper. Let me show you what I've noticed." / BAD: "Based on my analysis of your 5 sessions, I've identified several positive trends in your development."

随后是弧线级信号回照——引用跨会话模式而非仅本次会话,例如 "In session 1, you described users as 'small businesses.' By now you're saying 'Sarah at Acme Corp.' That specificity shift is a signal." 设计轨迹要带解读:"Your first design was broad. Your latest narrows to a specific wedge, that's the PMF pattern."

累积信号可见化:读 ACCUMULATED_SIGNALS,"Across your sessions, I've noticed: you've named specific users [N] times, pushed back on premises [N] times, shown domain expertise in [topics]. These patterns mean something."

Builder-to-founder 轻推(仅当 profile 中 NUDGE_ELIGIBLE 为 true):"You started this as a side project. But you've named specific users, pushed back when challenged, and your designs keep getting sharper each time. I don't think this is a side project anymore. Have you thought about whether this could be a company?"——必须显得是被证据挣来的,不是广播;证据不支持就整段跳过。

Builder Journey Summary(第 5 次会话起):自动生成 ~/.gstack/builder-journey.md,用第二人称讲叙事的弧线(narrative arc,不是数据表),引用用户跨会话说过的具体内容,然后打开它:

eval "$(~/.claude/skills/gstack/bin/gstack-paths)"
open "$GSTACK_STATE_ROOT/builder-journey.md"

这里 bin/gstack-paths 负责导出 GSTACK_STATE_ROOT 等状态路径变量,保证在自定义 GSTACK_HOME 部署下路径依然正确。

TIER = inner_circle(第 8 次起)

"数据自己说话,不需要再推销":"You've done [SESSION_COUNT] sessions. You've iterated [DESIGN_COUNT] designs. Most people who show this pattern end up shipping." 给出 profile 中完整的累积信号摘要,并自动更新 ~/.gstack/builder-journey.md 的叙事弧线后打开。然后进入 Founder Resources。

Founder Resources(所有 tier)

常驻退出检查(#538)——必须先跑:

~/.claude/skills/gstack/bin/gstack-config get founder_resources 2>/dev/null || echo "true"

值为 false静默跳过整节——不展示资源、连"应要求跳过"都不说。用户说过 never,配置比会话上下文与记忆指令都活得久,"never 就是 never"(重新启用:gstack-config set founder_resources true)。退出机制有专门测试 test/founder-resources-optout.test.ts

去重检查:读 profile 输出中的 RESOURCES_SHOWN。若 RESOURCES_SHOWN_COUNT ≥ 34(资源池全部耗尽),整节跳过;否则不得选中 RESOURCES_SHOWN 列表中出现过的任何 URL。

选择规则

  • 挑 2–3 条,混合类别——绝不同类 3 条;
  • 永不选中出现在去重日志中的 URL;
  • 与本次会话上下文匹配(什么被聊到过,比随机多样性更重要),原文给出的映射:
会话情境 推荐资源
犹豫要不要离开现在的公司 "My $200M Startup Mistake" 或 "Should You Quit Your Job At A Unicorn?"
正在做 AI 产品 "The New Way To Build A Startup" 或 "Vertical AI Agents Could Be 10X Bigger Than SaaS"
苦于想不出点子 "How to Get Startup Ideas" (PG) 或 "How to Get and Evaluate Startup Ideas" (Jared)
Builder 却不把自己当创始人 "The Bus Ticket Theory of Genius" (PG) 或 "You Weren't Meant to Have a Boss" (PG)
担心自己只是纯技术背景 "Tips For Technical Startup Founders" (Diana Hu)
不知道从哪开始 "Before the Startup" (PG) 或 "Why to Not Not Start a Startup" (PG)
想得太多、迟迟不发布 "Why Startup Founders Should Launch Companies Sooner Than They Think"
在找联合创始人 "How To Find A Co-Founder"
首次创始人,需要全貌 "Unconventional Advice for Founders"("the magnum opus")
  • 若匹配类别的资源都已展示过,改从用户没看过的其他类别挑选。

每条资源的呈现格式

{Title} ({duration or "essay"}) {1-2 句导语——直接、具体、鼓励性;用 Garry 的口吻说明这条为什么对 TA 的处境重要} {url}

资源池(34 条,按 5 个类别组织)

  • GARRY TAN VIDEOS:1. "My $200 million startup mistake: Peter Thiel asked and I said no"(5 min);2. "Unconventional Advice for Founders"(48 min, Stanford);3. "The New Way To Build A Startup"(8 min);4. "How To Build The Future: Sam Altman"(30 min);5. "What Founders Can Do To Improve Their Design Game"(15 min)。
  • YC BACKSTORY / HOW TO BUILD THE FUTURE:6. "Tom Blomfield: How I Created Two Billion-Dollar Fintech Startups"(20 min);7. "DoorDash CEO: Customer Obsession, Surviving Startup Death & Creating A New Market"(30 min)。
  • LIGHTCONE PODCAST:8. "How to Spend Your 20s in the AI Era"(40 min);9. "How Do Billion Dollar Startups Start?"(25 min);10. "Billion-Dollar Unpopular Startup Ideas"(25 min);11. "Vertical AI Agents Could Be 10X Bigger Than SaaS"(40 min);12. "The Truth About Building AI Startups Today"(35 min);13. "Startup Ideas You Can Now Build With AI"(30 min);14. "Vibe Coding Is The Future"(30 min);15. "How To Get AI Startup Ideas"(30 min);16. "10 People + AI = Billion Dollar Company?"(25 min)。
  • YC STARTUP SCHOOL:17. "Should You Start A Startup?"(17 min, Harj Taggar);18. "How to Get and Evaluate Startup Ideas"(30 min, Jared Friedman);19. "How David Lieb Turned a Failing Startup Into Google Photos"(20 min);20. "Tips For Technical Startup Founders"(15 min, Diana Hu);21. "Why Startup Founders Should Launch Companies Sooner Than They Think"(12 min, Tyler Bosmeny);22. "How To Talk To Users"(20 min, Gustaf Alströmer);23. "How To Find A Co-Founder"(15 min, Harj Taggar);24. "Should You Quit Your Job At A Unicorn?"(12 min, Tom Blomfield)。
  • PAUL GRAHAM ESSAYS(10 篇,无时长):25. "How to Do Great Work";26. "How to Do What You Love";27. "The Bus Ticket Theory of Genius";28. "Why to Not Not Start a Startup";29. "Before the Startup";30. "Superlinear Returns";31. "How to Get Startup Ideas";32. "Schlep Blindness";33. "You Weren't Meant to Have a Boss";34. "Relentlessly Resourceful"。

分享后:记日志并提供打开。

  1. 把选中的资源 URL 记入 builder profile(single source of truth),追加一条 mode: "resources" 的会话记录:
eval "$(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null || true)"
~/.claude/skills/gstack/bin/gstack-developer-profile --log-session '{"date":"'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'","mode":"resources","project_slug":"'"${SLUG:-unknown}"'","signal_count":0,"signals":[],"design_doc":"","assignment":"","resources_shown":["URL1","URL2","URL3"],"topics":[]}' 2>/dev/null || true

这与 SKILL.md 中 Phase 4.5 的"Builder Profile Append"形成两段式记录:Phase 4.5 先追加一条含信号/设计文档/assignment 的主记录(resources_shown 为空数组),Phase 6 选完资源后再追加这条 resources 记录。gstack-developer-profile --log-session 自行处理目录创建,并通过原子 mktemp+mv 写入。

  1. 记录到分析层:
mkdir -p ~/.gstack/analytics
echo '{"skill":"office-hours","event":"resources_shown","count":NUM_RESOURCES,"categories":"CAT1,CAT2","ts":"'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true
  1. 用 AskUserQuestion 提供打开选项:A) 全部打开(我稍后自己看);B/C/D) 只打开第 1/2/3 条;E) 跳过——我以后自己找。选 A 则 open URL1 && open URL2 && open URL3;B/C/D 只打开所选项;E 直接进入下一节。

Next-skill 推荐:把用户交给循环

不是列选项,而是主动提议现在就启动下一个评审,让设计文档直接流入结构化评审。按设计文档的模式映射推荐项——模糊时默认 /plan-eng-review(实际用途最广、留存最强):

  • PROACTIVEfalseCONDUCTOR_SESSION: true:不自动启动,一句话推荐后停下,等用户自己调用:
    • EXPANSION / ambitious → "Next: /plan-ceo-review to pressure-test scope and find the 10-star product."
    • well-scoped → "Next: /plan-eng-review to lock architecture, tests, and edge cases."
    • visual/UX-heavy → "Next: /plan-design-review for a visual/UX pass."
  • 否则,用 AskUserQuestion 以 D<N> 格式(preamble 中定义的决策简报格式)提问 "Run the next review now?",四个选项带完整性评分 A=10/10、B=9/10、C=8/10、D=3/10:
选项 内容 权衡
A) 立即运行 /plan-eng-review(推荐) 在写第一行代码前锁定架构、测试与边界情况 现在多花约 15 分钟 CC(相当于人类 1-2 小时评审压缩)
B) 立即运行 /plan-ceo-review 压力测试野心与范围,找到"10 星版本" 范围已经收紧且清楚时价值较低
C) 立即运行 /plan-design-review 在计划阶段(改动还便宜时)抓住视觉/UX 问题 纯后端或无视觉特性时价值很小
D) 现在不——我稍后自己跑 想立即开建时保住心流 评审缺口会复利;代码存在后问题更贵

在用户选择 A/B/C 时(注意:不是调用成功时)记录交接遥测,然后通过 Skill 工具调用所选技能(它会自动发现刚写的设计文档):

~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type handoff --skill office-hours --outcome accepted --session-id "$_SESSION_ID" 2>/dev/null || true

选 D 则记录 declined 后停下(bin/gstack-telemetry-log):

~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type handoff --skill office-hours --outcome declined --session-id "$_SESSION_ID" 2>/dev/null || true
登录后查看全文
热门项目推荐
相关项目推荐