Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when starting software development of new feature in the project, before writing implementation code
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-18 | ✗→✓ | ▲ Improved | 45% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 537% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 490% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 100% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 108% | 0% |
通过与用户的苏格拉底式对话,将模糊的想法转化为清晰的需求和明确的设计决策。
以下情况属于简单任务,不经过需求澄清,直接调用 sw-test-driven-dev:
不确定是否属于简单任务? 走需求澄清流程。宁可流程过度,不可跳过设计。
以下情况必须走需求澄清,不可走快速通道:
| 场景 | 说明 | |------|------| | Bug 修复涉及新增组件 | 需要新增文件、模块或服务 | | Bug 修复涉及接口变更 | 修改函数签名、API 契约或数据结构 | | Bug 影响多个模块 | 修复一处导致其他模块需要适配 | | 快速扫描后发现改动范围超预期 | 原本以为只改单函数,实际涉及多处修改 |
回退规则:快速扫描后发现改动超出预期 → 立即回退到需求澄清流程。
铁律:在完整呈现设计方案之前,严禁执行以下任何操作:
> 设计必须完整呈现(需求澄清 + 方案决策 + business-spec),但无需在每个节点等待用户明确批准。Agent 自动推进流程,用户可随时打断并提出异议。
> 反模式警告:"这个需求太简单了,不需要设计" > > 复杂项目必须经过此流程。所谓"简单"的项目,往往是未经验证的假设造成最大浪费的地方。如果改动确实明显简单(见上方"何时跳过此流程"),直接走测试驱动开发。
必须按顺序完成以下任务:
docs/sw-agiledevelopment/business-specs/YYYY-MM-DD--<name>.mdmermaidflowchart TD Start([开始]) --> Explore[1. 探索项目上下文<br/>检查文件、文档、代码提交] Explore --> Questions[2. 提出澄清问题<br/>每次只问一个] Questions --> Approaches[3. 提出 2–3 种方案<br/>包含权衡分析] Approaches --> Present[4. 分节呈现设计<br/>逐节推进] Present --> AllSectionsDone{所有节已完成?} AllSectionsDone -->|否,继续下一节| Present AllSectionsDone -->|是| WriteBusinessSpec[5. 编写 business-spec<br/>保存到 docs/sw-agiledevelopment/business-specs/] WriteBusinessSpec --> ShowSummary[6. 展示方案摘要] ShowSummary --> InvokeTechnical([7. 调用 sw-technical-spec<br/>唯一出口])
在向用户提问之前,先了解以下信息:
ls -la, tree)范围评估:如果用户请求涉及多个独立子系统(例如"构建一个包含聊天、文件存储、计费和分析的平台"),立即标记出来。不要在一个明显需要拆分的项目上浪费时间细化需求。
如果项目规模过大:
规则:
对话示例:
你:这个功能的用户是谁?
用户:主要是我们的内部运营团队。
你:明白了。关于数据存储,你有什么偏好吗?
A) 继续使用现有的 PostgreSQL
B) 尝试新的 MongoDB
C) 使用外部服务(如 Firebase)
用户:选 A,保持 PostgreSQL。探索方案时:
一旦理解了要构建的内容,按节呈现设计方案:
> 自动推进说明:Agent 展示每节设计后自动推进到下一节。如果用户对设计方向有根本性异议,可随时打断。
回退路径:如果用户对设计方向有根本性异议(例如"完全不是我要的"、"方向错了"、"重新想"),不要在本节内反复修改。立即回退到:
所有节展示完成后,自动进入"编写 business-spec"阶段。
设计原则:
在现有代码库中工作:
文档规范:
docs/sw-agiledevelopment/business-specs/YYYY-MM-DD--<feature-name>.mdsw-technical-spec)business-spec 结构:
markdown# {{功能名称}} - 业务需求 ## 概述 一句话描述这个功能是什么,解决什么问题。 ## 背景与动机 为什么要做这个功能?用户的痛点是什么? ## 用户与角色 - **主要用户**: {{使用者是谁}} - **使用场景**: {{典型使用场景}} ## 关键约束 - {{技术约束,如必须使用现有技术栈}} - {{时间或预算约束}} - {{合规或安全要求}} ## 目标 - {{目标 1}} - {{目标 2}} ## 非目标 明确排除的范围,避免范围蔓延。 - {{非目标 1}} - {{非目标 2}} ## 方案决策 **选定方案**: {{方案名称}} **原因**: {{选择此方案的理由}} **替代方案**: {{考虑过的其他方案及放弃原因}} ## 关键组件(草案) - {{组件 1}}: {{职责简述}} - {{组件 2}}: {{职责简述}} ## 验收标准(初稿) - [ ] {{验收标准 1}} - [ ] {{验收标准 2}} ## 风险与缓解 | 风险 | 影响 | 缓解措施 | |------|------|---------| | {{风险 1}} | {{高/中/低}} | {{缓解措施}} |
文档编写完成后,向用户展示方案摘要,然后自动调用 sw-technical-spec:
> "需求已澄清并保存到 docs/sw-agiledevelopment/business-specs/YYYY-MM-DD--<name>.md。以下是方案摘要: > - 目标概述] > - 选定方案及原因] > - 关键组件草案] > - 验收标准数量] > > 现在自动进入 technical-spec 编写阶段。"
自动推进:展示摘要后立即调用 sw-technical-spec,无需等待用户回复。用户如有修改需求可随时打断。
唯一出口:调用 sw-technical-spec 技能编写完整 technical-spec。
严禁:
| 原则 | 说明 | |------|------| | 一次一个问题 | 不要用多个问题同时询问用户 | | 优先选择题 | 比开放式问题更容易回答,减少用户思考负担 | | YAGNI 无情 | 从所有设计中删除当前不必要的功能 | | 探索替代方案 | 在确定方案前,总是提出 2–3 种方法供对比 | | 增量验证 | 分节呈现设计,每节展示后自动推进 | | 保持灵活 | 某部分不合理时,随时回退并重新澄清 |
| 想法 | 现实 | |------|------| | "用户大概会同意,我先开始实现" | 未经完整设计流程,严禁开始实现。设计可以很短,但必须完整呈现 | | "跳过需求澄清直接写 technical-spec" | 需求不清 → technical-spec 方向错误。必须先澄清需求 | | "不需要替代方案,我知道最佳方案" | 未呈现替代方案就确定设计 = 未经验证的假设。总是提出 2–3 种方法 | | "把多个问题合并问更快" | 一次一个问题。合并会压倒用户,降低回答质量 | | "编写 business-spec 后立即开始编码" | 必须先由 sw-technical-spec 编写完整 technical-spec。编码是更后方的步骤 | | "简单任务不需要需求澄清" | 正确。简单任务走快速通道直接 TDD。不确定是否简单?走需求澄清 |
| 借口 | 真相 | |------|------| | "这个太简单了,不需要设计" | 单文件少于 50 行的改动走快速通道。超出范围的"简单"必须设计 | | "用户不需要看设计过程" | 完整呈现设计是纪律。跳过 = 遗漏关键决策 | | "先写代码再补设计" | 设计先行是纪律。代码先行 = 即兴开发 | | "问题太多用户会烦" | 每次一个问题比合并问题更快获得清晰答案 | | "简单任务不需要需求澄清" | 正确。简单任务走快速通道直接 TDD |
You Aren't Gonna Need It(你不需要它)
对每个设计决策问:
如果答案是不确定,删除它。
business-spec 文件路径: docs/sw-agiledevelopment/business-specs/2026-04-08--user-authentication.md
返回摘要格式:
markdown## 需求澄清完成 **business-spec 文件**: `docs/sw-agiledevelopment/business-specs/2026-04-08--user-authentication.md` **设计状态**: ✅ 已完成 **主要决策**: - 目标:为内部运营团队提供统一身份认证 - 方案:JWT + bcrypt,支持邮箱和 OAuth - 关键组件:AuthService、UserStore、TokenManager **下一步**: 调用 sw-technical-spec 编写 technical-spec
前置 Skill: 无(这是工作流起点)
后续 Skill:
相关 Skill: 无
Other measured skills in the registry, with their headline benchmark lift.