--- name: agile-design-doc description: 生成面向敏捷开发团队的精炼设计文档。MVP导向,避免过度设计。使用场景:(1) 需要为新功能或系统模块生成设计文档 (2) 需要明确功能边界和交互流程 (3) 需要提供实现思路和关键方法 (4) 需要阐述技术难点和解决方案。该skill会先分析项目技术栈和现有组件,然后生成精炼、重点突出的设计文档。 --- # 敏捷设计文档生成 ## 核心原则 ### 1. MVP导向,避免过度设计 - 敏捷开发以快速迭代为目标,不需要考虑所有边界情况 - 专注于核心功能,次要功能可以后续迭代 - 不要为了"完整性"而添加不必要的功能 ### 2. 基于现有技术栈 - 必须先读取项目配置文件(pyproject.toml、package.json等)了解技术栈 - 复用现有组件,避免重复造轮子 - 设计方案必须与当前技术栈兼容 ### 3. 清晰阐述设计意图 - 明确本次设计解决的问题或提供的功能 - 使用mermaid时序图展示交互流程 - 针对每个功能点给出实现思路和关键方法 - 复杂逻辑使用mermaid实现流程 - 提供示例代码说明关键实现 ### 4. 精炼文档,面向技术人员 - 读者是开发者和了解业务的产品人员 - 避免冗长的背景介绍和废话 - 先了解现有组件,避免重复设计 ## 工作流程 ### 第一步:前置分析 在生成设计文档之前,必须先完成以下分析: #### 1.1 了解项目背景 ``` 询问用户或分析项目: - 项目背景?现在是什么系统,要做什么功能/模块? ``` #### 1.2 识别技术栈 ``` 必须读取的配置文件: - Python项目:pyproject.toml, requirements.txt, setup.py - Node.js项目:package.json, yarn.lock, pnpm-lock.yaml - Java项目:pom.xml, build.gradle - Go项目:go.mod, go.sum - 其他:根据项目类型识别 分析内容: - 主要框架和库 - 数据库和存储 - 消息队列和中间件 - 部署和运维工具 ``` #### 1.3 了解现有组件 ``` 通过以下方式了解现有组件: 1. 询问用户:有哪些现有组件可以复用? 2. 读取项目结构:分析src/、lib/、components/等目录 3. 查看文档:README.md、docs/等 记录可复用的组件: - 基础服务类 - 工具函数 - 中间件 - 数据模型 ``` ### 第二步:设计文档生成 按照以下结构生成设计文档: #### 2.1 设计目标(1-2段) ``` 明确说明: - 本次设计要解决什么问题 - 提供什么功能 ``` #### 2.2 功能列表(简洁列表) ``` 简要列出本次设计的功能点: - 功能1:一句话描述 - 功能2:一句话描述 - 功能3:一句话描述 不要展开详细说明,保持简洁 ``` #### 2.3 交互流程(Mermaid时序图) ``` 为每个主要功能绘制时序图: ```mermaid sequenceDiagram participant User participant API participant Service participant DB User->>API: 请求 API->>Service: 调用 Service->>DB: 查询 DB-->>Service: 返回 Service-->>API: 结果 API-->>User: 响应 ``` 时序图目的: - 展示组件间的交互顺序 - 明确系统边界 - 识别外部依赖 ``` #### 2.4 实现方案(核心部分) 针对每个功能点,按以下结构描述: **功能点名称** *实现思路*(2-3句话) - 说明采用的技术方案 - 为什么选择这个方案 - 与现有组件的集成方式 *关键方法*(代码示例) ```python # 示例:用户认证 def authenticate_user(token: str) -> User: """验证用户token并返回用户信息""" # 1. 验证token格式 # 2. 从缓存或数据库查询 # 3. 返回用户信息 pass ``` *技术难点*(如有) - 描述难点 - 说明解决方案 - 提供参考链接或示例 #### 2.5 数据模型(如需要) ``` 仅列出新增或修改的数据模型: - User: {id, name, email} - Order: {id, userId, amount, status} 使用简洁的表格或JSON格式 ``` #### 2.6 接口定义(如需要) ``` 仅列出新增或修改的API: POST /api/users - 请求:{name, email} - 响应:{id, name, email, createdAt} 保持简洁,不要展开所有字段 ``` ### 第三步:质量检查 生成文档后,进行以下检查: #### 3.1 精炼度检查 - [ ] 是否有冗长的背景介绍? - [ ] 是否有重复的内容? - [ ] 是否可以删除某些章节而不影响理解? #### 3.2 重点突出检查 - [ ] 设计目标是否清晰? - [ ] 功能列表是否简洁? - [ ] 时序图是否展示了核心交互? - [ ] 实现方案是否提供了关键方法? #### 3.3 技术准确性检查 - [ ] 技术栈是否与项目一致? - [ ] 是否复用了现有组件? - [ ] 代码示例是否正确? #### 3.4 MVP导向检查 - [ ] 是否包含了不必要的功能? - [ ] 是否可以简化某些设计? - [ ] 是否有可以后续迭代的内容? ## 常见问题处理 ### Q1: 用户没有提供足够信息 ``` 优先级顺序: 1. 读取项目文件(pyproject.toml、package.json等) 2. 分析项目结构 3. 询问用户具体问题 4. 基于常见模式做合理假设(并在文档中说明) ``` ### Q2: 不确定是否需要某个功能 ``` 原则: - 如果是核心功能,必须包含 - 如果是辅助功能,可以后续迭代 - 如果不确定,询问用户 - 在文档中明确标注"可选"或"后续迭代" ``` ### Q3: 技术栈不熟悉 ``` 处理方式: 1. 读取项目配置文件了解技术栈 2. 搜索相关文档和最佳实践 3. 参考项目现有代码的实现方式 4. 在文档中说明技术选型的理由 ``` ## 参考资源 - [设计文档模板](references/template.md) - 标准设计文档模板