ワンクリックで
design
为某个具体实现决策撰写一份 design doc(docs/design-docs/)。独立、由人触发——不属于主 build 流程。当一个解法足够含糊、技术路线应在动工前先论证清楚时使用;涵盖 feature design、技术性重构、架构决策与迁移。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
为某个具体实现决策撰写一份 design doc(docs/design-docs/)。独立、由人触发——不属于主 build 流程。当一个解法足够含糊、技术路线应在动工前先论证清楚时使用;涵盖 feature design、技术性重构、架构决策与迁移。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
FDD 主流程 step 1(规划与拆解)。覆盖两段——plan(与用户弄清需求、经 investigator 调查代码库、定出 milestone、写出 plan.md 并呈现)与 features(把 milestone 拆成 features.json 并过 coverage 闸)。中间的 contract 段交给 harness-stack:fdd-validation-contract。由 harness-stack:fdd 调用。
构建新特性的主流程编排器。契约优先的多 agent 架构——捕获一个 plan,定义可测试的断言,拆解为多个 feature,再用全新上下文的 implementer/reviewer/validator subagent 驱动一个里程碑设闸的执行循环。当一处改动触及多个文件、有多条验收标准、或跨越多个 feature 时使用。主流程分三步,分发给 fdd-planning(含 fdd-validation-contract)/ fdd-execution / fdd-validate。
为一个 plan 撰写 validation contract——把 definition of done 落成一组可测试、用户可观测的 assertion(VAL-<AREA>-NNN),带 persona 与声明的 Evidence。它是 fdd step 1(规划)里的 contract 阶段。契约通过逐 area 的 investigation subagent 与若干轮 adversarial review 构建,而非一人独写。产出 .harness-runtime/plans/<slug>/validation-contract.md,并经由 fdd init-state 播种 validation-state.json。在项目内首次使用时,还会 bootstrap 项目级约定文档 docs/user-test-patterns.md。
规范 git 工作流实践。任何代码改动都适用。在提交、开分支、解决冲突,或需要把多条并行工作线组织起来时使用。
harness-stack 框架的引导纲要(bootstrap doctrine)。在会话开始时自动加载,用以介绍 lifecycle map、golden rules,以及如何挑选正确的 harness-stack:* skill。在一次会话中首次调用任何 harness-stack:* skill 之前,先读它。
复盘一次 harness-stack 使用,把值得上报的摩擦、缺陷或建议提成 GitHub Issue 反馈给上游。在完成一项任务、用完某个 skill 后有意见或改进想法,或想为框架本身留下改进线索时使用。
| name | design |
| description | 为某个具体实现决策撰写一份 design doc(docs/design-docs/)。独立、由人触发——不属于主 build 流程。当一个解法足够含糊、技术路线应在动工前先论证清楚时使用;涵盖 feature design、技术性重构、架构决策与迁移。 |
在实现复杂改动前先写一份 design doc。design doc 记录高层实现策略与关键设计决策,重点在所权衡的 trade-offs。我们的工作不是产出代码,而是解决问题——design doc 逼你在投入某个解法之前把问题想清楚。
这是一份严肃的文档。它既是「系统当初为何如此设计」的 source of truth,也是工程师面对陌生系统时最易上手的入口。
回答下面这些问题。若有 3 个及以上为「是」,就写一份 design doc:
何时不要用: 解法显而易见、没有真正的 trade-offs。如果你的 design doc 只会写「我们就这么实现」、没有备选方案或权衡讨论,那就别写,直接写代码。
RESEARCH ──→ DESIGN ──→ APPROVE ──→ UPDATE
│ │ │ │
▼ ▼ ▼ ▼
加载上下文 提出完整 人类确认 在 plan 触及现实时
读代码 的解法 更新文档
问清问题
在提出任何方案前,先深入理解问题空间。这一阶段至关重要——建立在浅薄理解上的设计只会产出浅薄的解法。
加载上下文:
docs/product-spec.md)docs/design-docs/)理解约束:
立刻把假设摆上台面:
我正在做的假设:
1. 我们能在不停机迁移的前提下加一张新数据库表
2. 现有 auth 中间件支持这个新角色
3. 这里读延迟比写延迟更重要
→ 现在纠正我,否则我就按这些往下走。
问清楚。 别猜——有含糊就问。建立在错误假设上的 design doc 浪费的时间,远超那几个问题的成本。
提出一份完整、可执行的设计。想透彻——人类指望你考虑到他们没想到的角度。围绕细节与人类反复迭代,直到设计扎实。
按下面这个模板写 design doc,保存到 docs/design-docs/<name>.md:
# Design Doc: [Title]
**Status:** Draft | Approved | Implemented | Deprecated
**Author:** [name]
**Date:** [date]
## Context and Scope
<!-- 客观的背景事实。对全局做粗略概述:正在构建或改动什么、已经
存在什么。保持简洁——让读者跟上节奏,但不要重复他们已经知道的。 -->
## Goals and Non-Goals
<!-- 简短的要点列表。
Goals:系统必须达成什么。
Non-Goals:那些本可合理列为目标、但被刻意排除的东西。
不是反向目标(「不该崩溃」),而是有意的范围裁剪
(「ACID 合规不是目标」)。 -->
## Design
### Overview
<!-- 所选方案的高层概述。从这里起笔,好让读者自行决定往下读多深。
说明为什么这个方案最能满足既定 goals——trade-offs 就活在这里。 -->
### System Context Diagram
<!-- 这个系统如何嵌入更大的技术版图?
把系统画成它所处环境中的一个方框——外部系统、用户、进出的数据流。
这能让读者用他们已知的东西来定位这份设计。
用 ASCII 图:
┌─────────┐ ┌─────────┐ ┌──────────┐
│ Client │────→│ API │────→│ Database │
└─────────┘ └─────────┘ └──────────┘ -->
### API Design
<!-- 勾勒这个系统对外暴露或对内消费的 API。聚焦与设计 trade-offs 相关的部分——
不要照搬正式的接口定义(冗长、细节多余、很快过时)。
展示:endpoints/methods、关键参数、响应结构、错误处理方式。 -->
### Data Storage
<!-- 数据以何种形式、如何存储?聚焦与 trade-off 相关的部分,
不要写完整的 schema 定义。
覆盖:存储技术选型及理由、关键实体与关系、访问模式、
以及(如适用)迁移策略。 -->
### Component Boundaries
<!-- 内部结构:有哪些组件、各自负责什么、各自又不负责什么?
定义依赖方向(谁能 import 谁)、通信模式(API、事件、共享类型)、
以及模块边界。 -->
## Alternatives Considered
<!-- 对每个备选方案:它做了哪些 trade-offs,这些 trade-offs 与所选设计
相比如何?务必把为什么否决备选方案讲透——这正是日后避免重新
翻案的关键。
每个被否决的备选方案都需要一个具体理由,而不只是「感觉不对」。 -->
## Cross-Cutting Concerns
<!-- 这份设计如何应对那些横跨系统的关注点:安全、隐私、可观测性、
错误处理、测试策略、迁移路径、回滚方案。
只纳入与本设计相关的关注点。 -->
## Risks
<!-- 哪里可能出错?每条风险都需要一个缓解策略,而不只是一句担忧。 -->
并非每份设计都需要每个小节。 一次小重构可能只需 Overview + Component Boundaries。一个触及外部系统的新 feature 可能各节都要。把相关的写进来——拿不准时,就写。按需写到足够详尽,让它能作为可执行的实现指引。
写作原则:
把 design doc 呈给人类评审。在获批前,不要进入实现。
DESIGN DOC 待评审:
- 标题:[name]
- 关键 trade-off:[一行说清核心设计取舍]
- 已考虑的备选方案:[数量]
- 已处理的 cross-cutting concerns:[清单]
→ 批准,或告诉我要改什么。
实现期间 plan 触及现实,缺陷和未顾及的需求会浮现。届时更新 design doc——让文档与实际构建出来的东西保持一致。若发布后发生重大变更,加一节「Amendments」,链接到后续的 design doc。
获批的 design doc 作为持久 Library 存放在 docs/design-docs/。开始构建时,运行 harness-stack:fdd——它会读取已存在的 design doc(如果有)。
docs/design-docs/<name>.md 是受版本管理的 Library:「系统当初为何如此设计」的 source of truth。design。| 借口 | 现实 |
|---|---|
| 「实现一目了然」 | 若真的一目了然,design doc 5 分钟就写完。写不快,就说明它并不那么显然。 |
| 「我构建完再补设计文档」 | 那是事后复盘,不是 design doc。价值在于在投入之前评估备选方案。 |
| 「design doc 是官僚主义」 | 因为选错路线而重写才是真正的官僚主义。design doc 通过避开编码上的死胡同来省钱。 |
| 「这事只有一种做法」 | 若你说不出一个备选方案,说明你还没探索过问题空间。 |
| 「我先开写、看哪种能用」 | 那是 prototype,不是实现。若你先做 prototype,在投入某个路线之前,把发现记进 design doc。 |
docs/design-docs/