跳到主要内容

规范结构

理解 LeanSpec 规范的结构:前置元数据、必需部分、子规范文件,以及如何构建人类和 AI 都能理解的规范。

规范结构

每个规范包含:

  1. 前置元数据(YAML 元数据)
  2. 标题和状态徽章(自动生成)
  3. 核心部分(问题、解决方案、成功标准)
  4. 可选子规范文件(用于复杂规范)

前置元数据

必需字段

---
status: planned # 当前状态
created: '2025-11-08' # 创建日期(YYYY-MM-DD)
created_at: '2025-11-08T10:30:00Z' # ISO 时间戳(自动管理)
updated_at: '2025-11-08T14:45:00Z' # ISO 时间戳(自动管理)
---

重要:这些是系统管理的。使用 lean-spec update 修改,永远不要手动编辑。

可选字段

---
status: in-progress
created: '2025-11-08'
tags: # 分类
- api
- backend
- security
priority: high # high, medium, low
assignee: alice # 谁在做这个
depends_on: # 硬依赖(阻塞)
- spec-041
- spec-039
related: # 软关系(信息性)
- spec-043
- spec-044
created_at: '2025-11-08T10:30:00Z'
updated_at: '2025-11-08T14:45:00Z'
completed_at: '2025-11-09T16:20:00Z' # 标记为完成的时间
transitions: # 状态变更历史
- status: in-progress
at: '2025-11-08T11:00:00Z'
- status: complete
at: '2025-11-09T16:20:00Z'
---

手动编辑:只有 depends_onrelated 必须手动编辑(尚无 CLI 命令)。所有其他字段使用 lean-spec update

另见前置元数据参考

状态徽章

在前置元数据后自动生成:

> **状态**:⏳ 进行中 · **优先级**:高 · **创建**:2025-11-08 · **标签**:api, backend

这由 CLI 渲染,不应手动编辑。

核心部分

最小结构

每个规范至少应有:

## 问题
[我们要解决什么问题?为什么重要?]

## 解决方案
[我们要构建什么?它如何解决问题?]

## 成功标准
- [ ] [我们如何知道完成了?]
- [ ] [成功是什么样子?]

推荐结构

对于更复杂的规范:

## 概述
[功能/变更的 1-2 段摘要]

## 问题
[详细问题描述]

### 为什么重要
[影响、紧迫性、业务背景]

### 当前状态
[今天存在但不够的是什么]

## 解决方案
[提出的方法]

### 设计决策
[做出的关键选择及原因]

### 权衡
[我们放弃了什么,考虑的替代方案]

## 实现
[高级实现方法]

### 阶段(如果是多阶段)
1. 阶段 1:[描述]
2. 阶段 2:[描述]

## 成功标准
- [ ] [具体、可衡量的结果]
- [ ] [验收标准]
- [ ] [性能目标]

## 超出范围
- [我们明确不做的事情]
- [未来考虑事项]

可选部分

仅在需要时添加:

## 研究
[探索/尝试的发现]

## 依赖
[外部依赖、被阻塞的工作]

## 测试策略
[如何验证解决方案]

## 发布计划
[部署方法、迁移步骤]

## 风险
[潜在问题和缓解措施]

子规范文件

当规范超过 400 行或有多个不同关注点时,拆分为子规范:

常见子规范

specs/042-my-feature/
├── README.md # 主规范(必需)
├── DESIGN.md # 详细设计和架构
├── IMPLEMENTATION.md # 带阶段的实现计划
├── TESTING.md # 测试策略和测试用例
├── CONFIGURATION.md # 配置示例和模式
└── API.md # API 设计(如适用)

README.md(主规范)

应包含:

  • 前置元数据(元数据)
  • 高级概述
  • 问题陈述
  • 解决方案方法
  • 成功标准
  • 指向子规范的详细链接

目标:<300 行

DESIGN.md

详细设计决策:

  • 架构图
  • 数据模型
  • 组件交互
  • 技术选择和理由

目标:<400 行

IMPLEMENTATION.md

执行计划:

  • 阶段分解
  • 任务列表
  • 操作顺序
  • 集成点

目标:<400 行

TESTING.md

测试策略:

  • 测试用例
  • 边缘情况
  • 性能测试
  • 集成测试

目标:<400 行

示例

简单规范(单文件)

---
status: planned
created: '2025-11-08'
tags:
- bug-fix
priority: medium
---

# 修复身份验证超时

> **状态**:📋 计划中 · **优先级**:中

## 问题
用户在 15 分钟不活动后被登出,即使正在积极使用应用。会话超时太激进。

## 解决方案
为活跃用户延长会话超时至 8 小时:
- 对真正不活跃的用户保持 15 分钟超时
- 在任何 API 调用时刷新会话
- 添加"记住我"选项以获得 30 天令牌

## 实现
1. 更新 JWT 令牌 TTL 配置
2. 添加中间件以在 API 调用时刷新令牌
3. 在登录表单添加"记住我"复选框
4. 更新文档

## 成功标准
- [ ] 用户在 8 小时的活跃使用期间保持登录
- [ ] 不活跃用户(无 API 调用)在 15 分钟后超时
- [ ] "记住我"令牌持续 30 天
- [ ] 零客户投诉关于过早登出

## 超出范围
- SSO 集成(未来工作)
- 多设备会话管理

行数:约 45 行 ✅

复杂规范(多文件)

README.md(概述):

---
status: in-progress
created: '2025-11-08'
tags:
- api
- breaking-change
priority: high
depends_on:
- spec-041
---

# API v2 重新设计

> **状态**:⏳ 进行中 · **优先级**:高

## 概述
完全重新设计 REST API 以符合 RESTful 原则、一致的错误处理和改进的性能。

## 问题
当前 API(v1)有:
- 不一致的端点命名
- 混合 HTTP 方法(某些资源使用 POST 进行读取)
- 无标准错误格式
- 性能差(N+1 查询常见)

详见 [DESIGN.md](./DESIGN.md) 进行详细分析。

## 解决方案
构建 API v2,包含:
- RESTful 资源设计
- 一致的错误响应
- GraphQL 用于复杂查询
- &lt;200ms p95 响应时间

参见:
- [DESIGN.md](./DESIGN.md) - 架构和设计决策
- [IMPLEMENTATION.md](./IMPLEMENTATION.md) - 阶段分解
- [TESTING.md](./TESTING.md) - 测试策略

## 成功标准
- [ ] 所有 v1 端点都有 v2 等效项
- [ ] p95 响应时间 &lt;200ms
- [ ] 100% API 测试覆盖率
- [ ] 发布迁移指南
- [ ] v2 启动后 3 个月内零破坏性变化

## 超出范围
- GraphQL 订阅(v2.1)
- 批量操作(v2.2)

DESIGN.md(详细设计 - 350 行) IMPLEMENTATION.md(执行计划 - 280 行) TESTING.md(测试策略 - 190 行)

总计:约 820 行,跨 4 个文件 ✅ 最大文件:350 行 ✅

结构最佳实践

要做:

  • ✅ 从问题、解决方案、成功标准开始(最小可行)
  • ✅ 根据需要逐步添加部分
  • ✅ 当 >400 行时拆分为子规范
  • ✅ 在子规范之间链接以便导航
  • ✅ 将 README.md 保持为入口点/概述

不要:

  • ❌ 预先添加所有可能的部分
  • ❌ 让任何单个文件超过 400 行
  • ❌ 埋藏问题陈述
  • ❌ 跳过成功标准
  • ❌ 在一个规范中混合多个不相关的关注点

AI 友好结构

为了最大化 AI 代理理解:

1. 使用清晰的标题

## 问题
## 解决方案
## 成功标准

而非:"问题所在"、"我们的解决方案"、"我们如何知道有效"

2. 包含示例

## 解决方案
使用 Redis 进行缓存:

\`\`\`json
\{
"key": "user:123",
"value": \{"name": "Alice", "email": "alice@example.com"\},
"ttl": 300
\}
\`\`\`

3. 明确边界

## 超出范围
- 移动应用对等(未来)
- Google 以外的 OAuth 提供商(不需要)

4. 定量定义成功

## 成功标准
- [ ] API 响应时间 &lt;100ms(p95)
- [ ] 缓存命中率 &gt;80%
- [ ] 2 周内零假阳性

而非:"快速 API"、"良好缓存"、"运行良好"

另见编写 AI 可执行的规范

下一步


参考CLI 文档 获取命令详情