可以直接复用的 Spec-First 案例

这些案例展示一件事:如何把松散需求变成一个小规格包,包含 spec.md、任务、验收标准和测试证据,然后再让 AI 开始写代码。

Before弱工单或提示词
After可评审规格包
Use复制到 issue 和 PR

应该怎样阅读这些案例

先看弱需求

Before 状态故意保留粗糙感。它代表很多 AI 编码提示词的真实问题:目标被暗示但没有写明,约束缺失,评审者也没有客观理由拒绝额外行为。

再看边界

有价值的不是文案变顺,而是边界变明确:非目标、影响文件或系统、兼容约束,以及实现功能时不能改变的行为。

最后看证据

规格包只有在验收标准能落到测试、截图、fixture、日志或上线信号时才算完整。案例展示的是评审者在合并前应该要求的证明。

精选案例

Checkout 优惠码

一个涉及金额的 checkout 需求,变成包含校验状态、总价计算、实现任务和回滚证据的规格包。

弱需求:
给 checkout 加优惠码。
无效码不要影响付款。

规格边界:
- 付款前应用一个优惠码
- 不做后台管理
- 不重构 totals
打开优惠码案例

API 错误分类

一个 API 错误清理需求,变成包含兼容说明、SDK fixture、OpenAPI 示例和迁移证据的契约规格。

弱需求:
优化 API 错误。
让客户端更容易处理。

规格边界:
- 只改 envelope
- 只做 additive response change
- 旧 SDK 仍能解析
打开 API 错误案例

通知偏好迁移

一个设置页需求,变成包含退订保留、重复发送预防和 worker 投递证据的迁移规格包。

弱需求:
添加通知偏好。
注意不要骚扰用户。

规格边界:
- 只处理邮件和推送
- 保留现有退订
- 证明不会重复发送
打开通知案例

数据库 Schema 变更

一个模糊账号状态字段需求,变成包含 expand/backfill/switch、查询证据和回滚边界的迁移计划。

弱需求:
给 accounts 加 account_status。
确保报表还能用。

规格边界:
- 先 nullable expand
- parity check 通过后再 switch
- cleanup 放到后续发布
打开数据库案例

AI PR 范围漂移

一个过宽的 AI 生成 PR,变成包含允许文件、非目标、diff 映射和合并证据的评审规格包。

弱需求:
用 AI 修复设置 bug。
顺手清理相关代码。

规格边界:
- 只改允许路径
- 不改 billing 或 auth
- changed files 映射到 tasks
打开 AI PR 案例

大报表导出

一个 CSV 导出需求,变成包含权限、filter snapshot、文件过期、队列指标和失败处理的异步 job 规格。

弱需求:
给报表加 CSV 导出。
文件准备好后邮件通知。

规格边界:
- 大客户走异步 job
- 使用当前报表 filters
- 下载链接安全过期
打开导出案例

什么样的案例值得被索引

这些不是装饰性示例。每个案例都必须教会一个可复用决策:如何缩小范围、如何命名失败模式、如何把验收标准转成证据,或者如何防止 AI 编码工具发明产品行为。如果一个案例只是说“需求要写清楚”,它就不应该放在这里。

案例库刻意比博客归档更小。少量完整、可复用的案例,比大量浅层变体更有价值。只有当新案例能引入不同模式时,才会加入:例如涉及金额的 checkout 逻辑、公开 API 兼容性、迁移安全、长任务后台处理,或通知偏好漂移。

Checkout 与计费

可以复制回滚信号、总价计算测试、无效状态验收;不要照搬只适合某个产品的商业规则。

API 契约

可以复制错误 envelope、兼容说明、SDK fixture 和 OpenAPI 示例;不要在没有迁移窗口时重命名字段。

模糊工单改写

可以复制 before/after 结构和证据清单;不要在架构不同的情况下照搬所有任务。

AI PR 评审

当 AI 生成 diff 总是扩大范围时,可以复制允许路径、非目标和 changed-file map。

后台任务

当用户操作需要异步完成时,可以复制状态机、权限检查和队列证据。

如何选择对应案例

先匹配风险,再匹配行业。你的需求不一定和案例领域完全一样,真正可复用的是边界写法、证据要求和评审动作。

公开响应形状

如果客户端、SDK、文档或生成代码依赖稳定契约,先看 API 错误分类案例

长时间后台任务

如果工作需要后台 job 完成,并涉及权限、状态和运维证据,先看 大报表导出案例

案例维护标准

每个可索引案例都要经过同一套检查。第一,页面必须有具体 before 状态,而不是只讲“需求要写清楚”。第二,after 状态必须能进入真实工程流程:规格、任务清单、验收标准或证据清单。第三,案例要解释为什么这个改写能减少返工,而不是只是让文字更像专业文档。

这套标准同时服务读者和搜索质量。一个页面可以有漂亮卡片和 CTA,但仍然很薄。真正有用的案例页,应该让开发者在五分钟内做出一个具体决定:是否缩小范围、是否补兼容说明、是否拆分 AI 编码任务,或是否在合并前要求某个测试。如果案例不能支持这类动作,就应该扩写、合并到更强页面,或从索引中移除。

原创性

案例必须补充一个具体场景、失败模式或可复用产物,而不是重复已有页面。

可复用

读者至少应该能复制其中一段到 issue、PR、仓库规格或评审清单。

证据

页面需要写出合并前要看什么证明,因为模糊 AI 编码提示最常失败在这里。

这些案例刻意避免的常见问题

发布新案例前,可以把这一段当作自检:页面是否展示了混乱输入、改写后的规格包和证据门槛。如果只有一个很短的摘要和几个入口,它更像目录卡片,不像能被搜索收录的独立资源。

只展示漂亮答案

没有原始弱需求,读者就看不出哪些歧义被移除了。before 状态本身就是教学的一部分。

把证据留到最后

证据应该和规格一起设计。实现后再补证据,会把评审变成总结,而不是验证。

盲目复制领域规则

真正可复用的是规格包结构。具体业务规则必须按读者自己的系统、风险和发布流程重写。

提交审核前如何判断案例页够不够厚

案例页不是文章页,也不能只靠列表撑内容。一个合格案例页应该让读者看完后能够复述三件事:原始需求错在哪里,改写后的规格为什么更可执行,以及合并前应该拿什么证据证明结果。只要这三件事缺一项,页面就容易被认为只是导航页或浅层摘要。

所以这里的案例会优先补真实工作流中的判断,而不是继续堆同义词:谁负责评审、哪些范围不做、什么地方容易回滚失败、哪些测试或截图能证明改动成立。这样的内容对搜索和 AdSense 都更稳,因为它不是为了凑字数,而是在补读者做决策所需的信息。

这也是案例库宁可少一些,也要每篇更完整的原因。

快速 before/after 示例

通知偏好

把笼统设置需求改写成迁移风险、偏好状态和重复发送证据。

打开完整案例

数据库 Schema 变更

把“加状态字段”改写成分阶段迁移任务、parity check 和回滚边界。

打开完整案例

更多紧凑改写

对照松散工单和规格包版本,查看范围、任务、验收和证据如何落地。

浏览快速示例

AI PR 范围漂移

把“用 AI 修一下”改写成允许路径、非目标和 changed-file 证据映射。

打开完整案例

大报表导出

把 CSV 按钮需求改写成异步 job、权限检查和队列证据。

打开完整案例

从你的模糊需求开始

把粗糙需求贴进 AI Coding Spec Packet 生成器,转成四份可评审 Markdown 文件。

编辑说明

案例选择标准是可复用:每个案例都必须展示真实 before/after、明确规格边界,并给出评审证据。