其他
新项目、新功能、需求模糊或跨模块改动前…
在开始新项目、新功能或重大改动且需求不明确时,先写结构化 spec 并逐阶段人工审批,确保编码前对目标、边界和完成标准达成共识。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 48/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 55/100 ×0.15
适用场景
新项目、新功能、需求模糊或跨模块改动前,通用
解决思路
- 在写任何代码前,先写结构化规格说明(spec);spec 是你与人类工程师之间的共享事实来源,定义要构建什么、为什么、如何知道完成;没有 spec 的代码就是在猜。
- 按门控工作流执行:SPECIFY → PLAN → TASKS → IMPLEMENT;每个阶段都要人类评审;当前阶段未验证前,不要进入下一阶段。
- Phase 0 范围检查:仅当一个请求捆绑多个可独立测试的能力时才启用;多数请求只描述一个能力时,跳过 Phase 0,直接进入 Specify。
- Phase 0 检测:当单个需求捆绑多个可独立测试的能力时,先分解再写 spec;检测信号包括:需求点名了具有各自消费者或数据的独立能力(如 identity、billing、notifications、reporting);验收标准聚成可单独交付和验证的组;某个能力被裁掉或替换时不需要重写其他能力的需求。
- 写任何 spec 之前先提出能力地图;保持小而可评审,只包含模块表和构建顺序,不要变成项目计划。
- 能力地图使用稳定模块 id:kebab-case,只选一次,计划进行中永不重命名;spec、计划和下游命令通过这些 id 选择工作,而不是猜测哪个 spec 是活跃的。
- 能力地图记录依赖方向且不允许循环:箭头单向;如果两个模块互相需要,它们应合并为一个模块。
- 接口放在边界处:地图只记录如 billing 依赖 identity;两者之间的契约应放在提供方模块的 spec 中(设计时可参考 `api-and-interface-design`)。
- 能力地图像每个阶段一样受门控:在写任何模块 spec 之前,由人类评审模块边界、依赖方向和构建顺序;地图错了代价高,评审十行成本低。
- 地图获批后按模块递归:按依赖顺序对每个模块运行 Specify → Plan → Tasks → Implement;每个模块得到自己的 spec,范围限定为该模块的目标、边界和成功标准。
- 将获批地图保存在项目根目录,将每个模块的 spec 与它放在一起,并按模块 id 命名(`SPEC-identity.md`、`SPEC-billing.md`);地图,而不是猜文件名,是现有内容的索引。
- Phase 1 Specify:从高层愿景开始;向人类提出澄清问题,直到需求具体化。
- Phase 1 先暴露假设:在写任何 spec 内容前,列出你正在做的假设,例如平台、认证方式、数据库、目标浏览器,并请对方现在纠正,否则按假设继续。
- 不要默默填补模糊需求;spec 的全部目的就是在写代码前暴露误解,而假设是最危险的误解形式。
- spec 六个核心领域之 Objective:构建什么、为什么、用户是谁、成功什么样。
- spec 六个核心领域之 Commands:写完整可执行命令及参数,不只工具名,如 Build: `npm run build`,Test: `npm test -- --coverage`,Lint: `npm run lint --fix`,Dev: `npm run dev`。
- spec 六个核心领域之 Project Structure:写源码、测试、文档的位置,如 `src/`、`tests/`、`e2e/`、`docs/`。
- spec 六个核心领域之 Code Style:一段真实代码片段胜过三段描述,包含命名约定、格式规则和好输出示例。
- spec 六个核心领域之 Testing Strategy:写框架、测试位置、覆盖率期望、不同关注点用哪些测试层级。
- spec 六个核心领域之 Boundaries:用三层系统,Always do(如提交前跑测试、遵守命名约定、验证输入)、Ask first(如数据库 schema 变更、添加依赖、改 CI 配置)、Never do(如提交 secrets、编辑 vendor 目录、未经批准删除失败测试)。
- 按 spec 模板创建文档,包含:标题、Objective、Tech Stack、Commands、Project Structure、Code Style、Testing Strategy、Boundaries、Success Criteria、Open Questions。
- 如果项目已使用 OpenSpec 或其他规格系统,保持该系统的工件格式与存储约定,不要创建重复的 `SPEC.md`;本技能负责澄清、内容和审批门,外部工具负责已批准 spec 的表示。
- 将模糊指示重构成成功标准:如「让 dashboard 更快」重构为 Dashboard LCP < 2.5s on 4G、初始数据加载 < 500ms、加载期间无布局偏移(CLS < 0.1),并确认这些目标是否正确;这样可循环、重试、解决问题朝向明确目标,而不是猜「更快」。
- Phase 2 Plan:基于已验证 spec 生成技术实现计划,识别主要组件及其依赖。
- Phase 2 Plan:确定实现顺序,即必须先构建什么。
- Phase 2 Plan:记录风险及缓解策略。
- Phase 2 Plan:识别可并行构建与必须串行的部分。
- Phase 2 Plan:定义阶段之间的验证检查点。
- Phase 2 Plan 遵循 `planning-and-task-breakdown` 进行依赖图映射和垂直切片;它是规范来源;以上是轻量总结,若有分歧以 `planning-and-task-breakdown` 为准。
- Phase 2 输出约定:将计划保存到 `tasks/plan.md`,并把任务列表记录到 `planning-and-task-breakdown` 定义的任务列表目标(默认 `tasks/todo.md`;项目可指定外部跟踪器);如果 `tasks/` 不存在则创建;下游命令(如 `/build`)期望这些默认值。
- Phase 2 计划应可评审:人类应能读后说「对,这就是正确方向」或「不对,改 X」。
- Phase 3 Tasks:将计划拆成离散、可实现的 task。
- Phase 3 Tasks:每个 task 应能在一个专注 session 内完成。
- Phase 3 Tasks:每个 task 有明确验收标准。
- Phase 3 Tasks:每个 task 包含验证步骤(测试、构建、手动检查)。
- Phase 3 Tasks:task 按依赖排序,而不是按感知重要性排序。
- Phase 3 Tasks:不应有 task 需要改动超过约 5 个文件。
- Phase 3 Tasks 遵循 `planning-and-task-breakdown` 获取完整任务大小和依赖排序机制;它是规范来源;下面模板是轻量形式,如有分歧以它为准。
- Phase 3 使用 task 模板:`- [ ] Task: [Description]`,`Acceptance: [What must be true when done]`,`Verify: [How to confirm — test command, build, manual check]`,`Files: [Which files will be touched]`。
- Phase 4 Implement:按 `skills/incremental-implementation/SKILL.md`(`incremental-implementation`)和 `skills/test-driven-development/SKILL.md`(`test-driven-development`)一次执行一个 task。
- Phase 4 Implement:使用 `skills/context-engineering/SKILL.md`(`context-engineering`)在每一步加载正确的 spec 片段和源文件,而不是把整个 spec 灌给 agent。
- 保持 spec 存活:当决策变化时更新 spec;如果发现数据模型需要改,先更新 spec,再实现。
- 保持 spec 存活:当范围变化时更新 spec;新增或砍掉的功能应反映在 spec 中。
- 保持 spec 存活:提交 spec;spec 应与代码一起纳入版本控制。
- 保持 spec 存活:在 PR 中引用 spec;链接到每个 PR 实现的 spec 章节。
- 遇到「这很简单,我不需要 spec」时:简单任务不需要长 spec,但仍需要验收标准;两行 spec 也可以。
- 遇到「我会先写代码再补 spec」时:那是文档,不是规格说明;spec 的价值在于强迫在代码前清晰。
- 遇到「spec 会拖慢我们」时:15 分钟 spec 可避免数小时返工;15 分钟瀑布胜过 15 小时调试。
- 遇到「需求反正会变」时:所以 spec 是活文档;过时的 spec 仍好过没有 spec。
- 遇到「用户知道想要什么」时:即使清晰请求也有隐含假设;spec 会暴露这些假设。
- 遇到「这是一个大功能,拆分是额外开销」时:如果验收标准聚成可独立测试组,单块 spec 会迫使每个下游任务推理整个契约;十行能力地图是廉价替代。
- 遇到「我会在计划时再分解」时:计划是在一个 spec 内切 task;到那时过大的工件已经存在;模块边界和依赖方向必须在写 spec 前决定,而不是之后。
- 红旗:没有任何书面需求就开始写代码;出现时应停止并补 spec。
- 红旗:在澄清「完成」含义前就问「我可以直接开始构建吗?」;出现时应先澄清完成标准。
- 红旗:实现任何 spec 或 task 列表未提到的功能;出现时应回到 spec/task 列表。
- 红旗:做出架构决策却不记录;出现时应把决策写入 spec。
- 红旗:因为「要构建什么是显然的」而跳过 spec;出现时应至少写验收标准。
- 红旗:一个 spec 的需求跨越多个可独立测试的能力;出现时应先补能力地图并拆分。
- 红旗:模块边界或构建顺序因为事先没有获批能力地图而在实现过程中被隐式决定;出现时应停止并补获批能力地图。
- 进入实现前验证:spec 覆盖所有六个核心领域。
- 进入实现前验证:人类已评审并批准 spec。
- 进入实现前验证:成功标准具体且可测试。
- 进入实现前验证:Boundaries(Always/Ask First/Never)已定义。
- 进入实现前验证:spec 已保存到仓库文件中。
- 进入实现前验证:如果请求捆绑多个可独立测试能力,在写任何模块 spec 前已批准能力地图(模块 id、依赖方向、构建顺序)。
- 进入实现前验证:每个模块 spec 都可追溯到已批准地图中的模块 id。
适用边界 · 注意事项
- 单行修复、错别字修正,或需求明确且自包含的改动,不适用完整 spec-driven 流程。
- 当请求只描述一个能力时,不要启用 Phase 0 能力拆分;直接进入 Specify。
- 如果项目已有 OpenSpec 等规格系统,不要另建重复 `SPEC.md`,应沿用既有格式与存储约定。