mcpField
W
writing-design-docs

writing-design-docs

github.com/neekolas开发143 次安装32 周前更新
代码仓库

关于 writing-design-docs

帮助工程团队产出结构化设计文档的技能,要求先探索代码库并比较方案,再编写设计与验证计划。文档包含目标、系统设计、依赖和可测试的 EARS 验收标准,完成后即停止。

主要功能

  1. 01探索代码库与相关背景
  2. 02提出并比较多个方案
  3. 03按六个章节组织设计文档
  4. 04编写 EARS 验收标准
  5. 05列出边界情况与验证命令

适用场景

  1. 01为新功能规划实现方案
  2. 02记录架构选择及其取舍
  3. 03制定可测试的验收和验证计划

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/neekolas/claude-skills --skill writing-design-docs

安装后在 Claude Code 中输入/writing-design-docs确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

examples/
large-event-system.md
medium-api-endpoint.md
small-cli-flag.md

详细介绍

编写设计文档

生成一份结构化设计文档,记录你要构建什么、为什么构建,以及如何验证其正常运行。输出:docs/plans/YYYY-MM-DD-<topic>-design.md。此技能生成文档后即停止。

流程

digraph design_doc {
    "Explore codebase & context" [shape=box];
    "Propose 2-3 approaches" [shape=box];
    "User selects approach" [shape=diamond];
    "Draft each section" [shape=box];
    "Write EARS requirements" [shape=box];
    "Present to user for review" [shape=box];
    "User approves?" [shape=diamond];
    "Write to docs/plans/" [shape=box];
    "Done" [shape=doublecircle];

    "Explore codebase & context" -> "Propose 2-3 approaches";
    "Propose 2-3 approaches" -> "User selects approach";
    "User selects approach" -> "Propose 2-3 approaches" [label="none fit"];
    "User selects approach" -> "Draft each section" [label="selected"];
    "Draft each section" -> "Write EARS requirements";
    "Write EARS requirements" -> "Present to user for review";
    "Present to user for review" -> "User approves?";
    "User approves?" -> "Draft each section" [label="revise"];
    "User approves?" -> "Write to docs/plans/" [label="yes"];
    "Write to docs/plans/" -> "Done";
}
提出方案

起草前,先探索解决方案空间。研究代码库和相关库,然后提出 2-3 种方案:

  • 首先给出你的推荐方案,并说明原因
  • 对每种方案:说明架构概要、优点、缺点和工作量估算
  • 至少包含一个更简单/规模更小的方案,以及一个更稳健/更具扩展性的方案
  • 让用户先选择,再确定设计方向

设计文档模板

共六个部分。根据复杂度调整深度,参见“缩放指南”。

1. 摘要

用 2-4 句话说明是什么以及为什么。繁忙的工程师仅阅读这部分,就应能理解项目。

2. 项目目标与非目标

目标: 要解决的问题。必须保持的不变量。要具体,例如“p99 低于 200ms”,而不是“速度快”。

非目标: 明确不在范围内的合理事项。不是对目标的否定,而是你选择不处理的事项。

3. 背景
  • 触发因素:GitHub Issues、Slack 讨论串或其他触发因素
  • 代码库:与此工作相关的现有文件夹、文件和设计文档
  • 外部文档:第三方库文档的 URL
  • 参考资料:为设计提供依据的博客文章、RFC 或原始资料
  • 影响范围:将要修改的模块或目录
4. 系统设计
  • 架构概览:组件如何协同工作。必要时添加图示。
  • 新增或修改的接口:类/结构体定义、API 边界。描述形态,而非实现。
  • 关键函数:重要函数及其预期行为、契约和不变量。
  • 考虑过的替代方案:说明未采用其他方案的原因。
5. 所需库与工具

外部依赖:

包版本用途
name^x.y.z说明所需原因

内部模块:

模块路径用途
namesrc/path/说明其提供的功能

如果没有依赖,请写“无”,不要省略此部分。

6. 测试与验证

这是最重要的部分,内容应最详尽。

验收标准

每条标准都使用 EARS 格式。每条标准都必须可测试且含义明确。

边界情况

涵盖相关类别:并发/竞态条件、依赖故障、错误处理/恢复、边界条件、安全注意事项。

验证命令

列出用于证明正确性的具体命令。包括 lint 和格式检查。

EARS 速查表

模式模板示例
普遍适用THE SYSTEM SHALL [行为]THE SYSTEM SHALL 加密所有静态数据
事件驱动WHEN [事件] THE SYSTEM SHALL [行为]WHEN 请求超出速率限制 THE SYSTEM SHALL 返回 HTTP 429
状态驱动WHILE [状态] THE SYSTEM SHALL [行为]WHILE 熔断器处于开启状态 THE SYSTEM SHALL 返回缓存的响应
可选WHERE [功能] THE SYSTEM SHALL [行为]WHERE 启用了详细日志记录 THE SYSTEM SHALL 记录请求正文
禁止事项THE SYSTEM SHALL NOT [行为]THE SYSTEM SHALL NOT 向客户端暴露内部错误详情
复合条件WHEN [a] AND [b] THE SYSTEM SHALL [行为]WHEN 队列已满 AND 消息具有高优先级 THE SYSTEM SHALL 淘汰优先级最低的最旧消息

规则: 使用 SHALL,绝不使用“should”/“may”。每项要求都必须能独立测试。避免模糊表述,使用可衡量的标准。

扩展指南

部分小型(约 150 字)中型(约 400 字)大型(约 800 字)
摘要2 句话3 句话4 句话
目标/非目标每项 2-3 个要点每项 4-5 个要点6 个以上要点,并包含不变量
背景仅链接链接 + 文件列表链接 + 文件 + 影响
系统设计1 个段落接口 + 函数图表 + 完整 API 范围
库表格或“无”表格 + 理由表格 + 替代方案
测试3-5 个 EARS8-12 个 EARS + 边缘情况15 个以上 EARS + 全面的边缘情况

常见错误

错误修正方法
把测试当作事后补充使用红/绿 TDD,并在规范中定义测试用例
目标含糊加入具体数字:“将 p99 从 800ms 降至 200ms”
缺少非目标未说明的范围 = 默认纳入范围
把实现当作设计描述契约和行为,而不是代码
没有背景链接链接到催化因素——未来的读者需要了解原因

示例

查看 examples/ 中按规模划分的示例:

  • small-cli-flag.md — 添加 --verbose 标志(精简但完整)
  • medium-api-endpoint.md — 带身份验证和速率限制的 REST API
  • large-event-system.md — 带重试和 DLQ 的分布式事件管道

评论

支持 Markdown