SKILL.md 16 KB


name: spec-driven-dev description: | 文档驱动的软件开发规范工作流。当用户需要以下操作时使用: (1) 创建需求规格书并进行需求澄清 (2) 规划业务模块和详细模块设计 (3) 生成统一规范集合(架构、UI/UX、后端、数据库) (4) 确保跨模块一致性和可追溯性

触发词: "需求规格", "spec-driven", "文档驱动开发", "需求澄清", "模块设计", "规范集合", "create specs", "requirements specification"

文档驱动开发工作流

一种结构化的、文档驱动的企业软件开发方法,确保所有项目产出物的一致性、可追溯性和对齐。

语言规范

重要:所有产出文档、交互内容均使用中文。 仅在技术术语、代码示例、配置文件中可使用英文。


工作流概览

┌─────────────────────────────────────────────────────────────────┐
│                    文档驱动开发工作流                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐       │
│  │   阶段 1     │    │   阶段 2     │    │   阶段 3     │       │
│  │  需求澄清    │───▶│  模块规划    │───▶│  模块设计    │       │
│  │ (逐个交互)   │    │              │    │              │       │
│  └──────────────┘    └──────────────┘    └──────────────┘       │
│         │                   │                   │                │
│         └───────────────────┴───────────────────┘                │
│                             │                                    │
│                    ┌────────▼────────┐                          │
│                    │    规范集合     │                          │
│                    │   (并行产出)    │                          │
│                    └────────┬────────┘                          │
│                             │                                    │
│         ┌───────────────────┼───────────────────┐               │
│         ▼                   ▼                   ▼               │
│  ┌────────────┐     ┌────────────┐     ┌────────────┐          │
│  │  架构规范  │     │ UI/UX规范  │     │  后端规范  │          │
│  └────────────┘     └────────────┘     └────────────┘          │
│         │                   │                   │               │
│         └───────────────────┴───────────────────┘               │
│                             │                                    │
│                    ┌────────▼────────┐                          │
│                    │  数据库规范     │                          │
│                    └─────────────────┘                          │
│                                                                  │
│                    ┌─────────────────┐                          │
│                    │  校验与对齐     │                          │
│                    └─────────────────┘                          │
└─────────────────────────────────────────────────────────────────┘

产出物位置

所有产出物生成在:docs/specs/{项目名称}/

docs/specs/{项目名称}/
├── 00-需求规格/
│   └── 需求规格书.md
├── 01-模块规划/
│   └── 模块规划.md
├── 02-模块设计/
│   ├── 模块1-详细设计.md
│   ├── 模块2-详细设计.md
│   └── 模块N-详细设计.md
├── 03-规范集合/
│   ├── 架构规范.md
│   ├── UI-UX规范.md
│   ├── 后端开发规范.md
│   └── 数据库设计规范.md
└── 04-校验报告/
    └── 一致性校验报告.md

阶段 1:需求澄清(交互式)

1.1 收集初始上下文

首先从用户提供的需求文档或描述中提取:

  • 项目名称和描述
  • 业务领域
  • 目标用户
  • 核心功能(高层概览)
  • 技术偏好(如有)

1.2 交互式问题澄清流程

核心原则:逐个问题交互,而非一次性提出所有问题。

流程:
1. 根据上下文识别问题类别优先级
2. 选择最重要的第一个问题
3. 提出问题,等待用户回答
4. 记录答案,根据答案可能产生追问
5. 选择下一个问题
6. 重复直到收集足够信息(至少10个问题)
7. 确认是否需要补充

1.3 问题类别与优先级

根据项目类型动态调整问题优先级:

类别 关注点 典型优先级
技术架构 架构模式、技术栈、集成、扩展性 高
业务逻辑 领域规则、工作流、边界情况、用户角色 高
安全合规 认证、授权、数据保护、合规要求 高(医疗/金融必问)
性能 响应时间、吞吐量、缓存、并发 中
用户体验 无障碍、响应式、用户流程、错误处理 中
运维 部署、监控、日志、备份 中

1.4 单个问题的交互格式

每次只提出一个问题,格式如下:

**问题 {N}/{总数}:{问题标题}**

{问题描述,说明为什么需要澄清这个问题}

请选择:
- A) {选项A} - {简短说明}
- B) {选项B} - {简短说明}
- C) {选项C} - {简短说明}
- D) {选项D} - {简短说明}
- E) 其他(请说明)

1.5 交互示例

助手:我已阅读您的需求文档,现在开始逐个澄清关键问题。

**问题 1/12:后端技术栈选择**

根据文档描述,这是一个医疗信息化系统,需要与现有HIS系统集成。
请选择后端技术栈:

- A) Java + Spring Boot - 企业级首选,生态完善
- B) Node.js + NestJS - 与前端技术栈统一
- C) Python + FastAPI - 快速开发,AI扩展性好
- D) InterSystems IRIS 2019 - 医疗信息化领域成熟的技术
- E) 其他(请说明)

请选择或输入您的答案:

用户:A

助手:收到,选择 **A) Java + Spring Boot**。

**问题 2/12:数据库选型**

考虑到医疗数据的结构化特点和与HIS系统的集成需求:
- A) InterSystems IRIS - 多模型数据库(关系型、对象、文档)
- B) MySQL - 成熟稳定,运维成本低
- C) SQL Server - 与现有HIS保持一致
- D) Oracle - 企业级,高可用
- E) 其他(请说明)

请选择或输入您的答案:

用户:C,因为现有HIS用的是SQL Server

助手:收到,选择 **C) SQL Server**,理由是保持与现有HIS系统一致。

**问题 3/12:与HIS系统的集成方式**...

1.6 追问机制

根据用户回答,可能触发追问:

用户:选择 D) 其他:混合云部署

助手:收到,选择**混合云部署**。

追问:混合云部署需要确认:
- 敏感数据(患者信息)存储在本地还是云端?
- 哪些模块需要部署在云端?

请选择:
- A) 全部本地部署,云端仅做备份
- B) 核心数据本地,非敏感服务云端
- C) 主系统云端,本地只留数据同步节点
- D) 其他(请说明)

1.7 问题完成确认

收集完所有问题后:

## 需求澄清完成

已收集以下关键决策:

| 序号 | 问题 | 您的选择 |
|------|------|----------|
| 1 | 后端技术栈 | Java + Spring Boot |
| 2 | 数据库 | SQL Server |
| ... | ... | ... |

**确认点:** 以上信息是否完整?是否需要补充或修改?
- 回复"确认"继续生成需求规格书
- 回复需要修改的问题编号进行修改
- 回复"补充"添加更多信息

1.8 生成需求规格书

用户确认后,使用 references/templates/requirement-spec-template.md 生成需求规格书。

检查点: 展示需求规格书,等待用户确认后进入下一阶段。


阶段 2:模块规划

2.1 分解业务模块

基于需求,识别业务模块:

  • 每个模块应有清晰的边界
  • 定义模块依赖关系
  • 识别共享组件/服务

2.2 模块规划文档

使用 references/templates/module-planning-template.md 生成。

包含:

  • 模块列表及描述
  • 依赖关系图(Mermaid图)
  • 优先级/复杂度矩阵
  • 预估复杂度

检查点: 与用户确认模块分解方案。


阶段 3:模块详细设计

3.1 设计每个模块

为每个模块使用 references/templates/module-design-template.md 创建详细设计。

每个模块设计包含:

  • 功能需求映射
  • API契约(端点、请求/响应模式)
  • 组件架构
  • 状态管理
  • 错误处理策略

3.2 模块设计检查清单

每个模块设计需确认:

  • 阶段1的所有需求都已覆盖
  • API契约已明确定义
  • 错误场景已覆盖
  • 安全考虑已文档化
  • 性能需求已回应

阶段 4:规范集合(并行生成)

并行生成四个规范文档:

4.1 架构规范

模板:references/templates/architecture-spec-template.md

内容:

  • 系统架构概览
  • 技术栈决策
  • 部署架构
  • 集成模式
  • 扩展性策略

4.2 UI/UX规范

模板:references/templates/ui-ux-spec-template.md

内容:

  • 设计系统(颜色、字体、间距)
  • 组件库标准
  • 无障碍要求(WCAG级别)
  • 响应式断点
  • 交互模式
  • 页面布局和线框图

4.3 后端开发规范

模板:references/templates/backend-spec-template.md

内容:

  • API设计标准(REST/GraphQL/gRPC)
  • 错误响应格式
  • 认证/授权流程
  • 限流策略
  • 日志和监控
  • 代码结构和命名规范

4.4 数据库规范

模板:references/templates/database-spec-template.md

内容:

  • 实体关系图
  • 表定义及字段规格
  • 索引策略
  • 数据迁移方案
  • 备份与恢复
  • 查询优化指南

阶段 5:校验与对齐

5.1 跨文档校验

使用 references/validation/consistency-checklist.md 进行半自动校验。

自动检查:

  • 模块设计中的API端点与后端规范匹配
  • 数据库实体与模块设计中的数据模型匹配
  • UI组件引用有效的设计令牌
  • 所有需求都有对应的模块覆盖

人工审查点:

  • 跨模块业务逻辑一致性
  • 安全模式对齐
  • 性能需求可行性

5.2 生成一致性报告

产出:docs/specs/{项目}/04-校验报告/一致性校验报告.md

# 一致性校验报告

## 概要
- 总检查项:X
- 通过:Y
- 警告:Z
- 失败:N

## 自动检查结果
| 检查项 | 状态 | 详情 |
|--------|------|------|
| API覆盖 | 通过 | 所有15个端点已定义 |
| 实体映射 | 警告 | 2个实体缺少索引 |
| ... | ... | ... |

## 需人工审查
- [ ] 审查跨模块认证流程
- [ ] 验证错误处理一致性
- [ ] 检查性能目标可行性

项目规模配置

根据项目规模调整文档粒度:

规模 需求规格 模块数 规范详细度
小型(<10个功能) 1个文档,简化章节 1-3个模块 仅核心内容
中型(10-30个功能) 完整模板 4-8个模块 标准详细度
大型(>30个功能) 扩展子章节 8+个模块 完整详细

通过初始上下文配置或根据功能数量自动检测。


模板参考

所有模板位于 references/templates/:

模板 用途
requirement-spec-template.md 需求规格书
module-planning-template.md 业务模块规划
module-design-template.md 模块详细设计
architecture-spec-template.md 系统架构
ui-ux-spec-template.md UI/UX规范
backend-spec-template.md 后端开发规范
database-spec-template.md 数据库设计

用户可通过编辑 references/templates/ 中的文件自定义模板。


执行流程

1. 收集初始项目上下文(读取需求文档)
2. 识别问题类别,确定优先级
3. 【交互式】逐个提出澄清问题:
   a. 提出当前问题
   b. 等待用户回答
   c. 记录答案,处理追问
   d. 选择下一个问题
   e. 重复直到收集足够信息
4. 汇总确认所有答案
5. 【检查点】用户确认需求澄清结果
6. 生成 需求规格书.md
7. 【检查点】用户确认需求规格书
8. 分解业务模块
9. 生成 模块规划.md
10. 【检查点】用户确认模块结构
11. 为每个模块生成 模块N-详细设计.md
12. 并行生成规范集合:
    a. 架构规范.md
    b. UI-UX规范.md
    c. 后端开发规范.md
    d. 数据库设计规范.md
13. 运行校验检查
14. 生成 一致性校验报告.md
15. 【检查点】最终审查

快速开始示例

用户:我想为一个库存管理系统创建规范

助手:好的,我来帮您创建库存管理系统的规范文档。首先让我了解一下基本情况。

**问题 1/12:系统规模与用户量**

请选择预期的系统规模:

- A) 小型 - 单仓库,<50用户,基础库存管理
- B) 中型 - 多仓库,50-200用户,需批次管理
- C) 大型 - 多仓多级,200-500用户,需WMS集成
- D) 企业级 - 集团多仓,>500用户,全供应链
- E) 其他(请说明)

请选择或输入您的答案:

用户:B

助手:收到,选择 **B) 中型规模** - 多仓库,50-200用户,需批次管理。

**问题 2/12:技术栈偏好**...

[继续逐个交互...]

问题生成框架

重要:问题应在交互过程中根据上下文动态生成,而非使用预设问题列表。

参考 references/question-bank/questioning-framework.md 了解:

  • 问题生成原则:上下文感知、渐进深入、避免重复、实用性导向
  • 问题分类框架:业务、技术、安全、性能、用户体验五大维度
  • 动态问题生成流程:如何根据用户回答调整后续问题
  • 追问机制:何时触发追问、如何处理不确定的回答
  • 澄清终止条件:何时可以结束澄清阶段

问题生成核心要点

  1. 基于上下文生成:根据项目类型、用户回答、已有信息动态生成
  2. 每次一个问题:逐个交互,等待回答后再生成下一个
  3. 至少4个选项:覆盖常见场景 + "其他"选项
  4. 追踪信息缺口:持续追踪哪些关键决策点尚未明确