@localsummer/incspec 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
package/templates/AGENTS.md
CHANGED
|
@@ -4,134 +4,49 @@ AI 编码助手使用 IncSpec 进行增量规格驱动开发的操作指南。
|
|
|
4
4
|
|
|
5
5
|
## 快速检查清单
|
|
6
6
|
|
|
7
|
-
**完整模式 (7步)
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
- 合并后循环回到步骤1开始下一个增量周期
|
|
15
|
-
|
|
16
|
-
**快速模式 (5步):**
|
|
17
|
-
- 启动快速模式: `incspec analyze <path> --quick`
|
|
18
|
-
- 按顺序执行: analyze → collect-req → apply → merge -> archive
|
|
7
|
+
**完整模式 (7步)**:
|
|
8
|
+
- 按顺序执行: analyze → collect-req → collect-dep → design → apply → merge → archive
|
|
9
|
+
- 适用于: 复杂 UI 功能、多组件交互、需要详细设计审查
|
|
10
|
+
|
|
11
|
+
**快速模式 (5步)**:
|
|
12
|
+
- 启动: `incspec analyze <path> --quick`
|
|
13
|
+
- 按顺序执行: analyze → collect-req → apply → merge → archive
|
|
19
14
|
- 跳过步骤 3 (UI依赖采集) 和步骤 4 (增量设计)
|
|
20
|
-
-
|
|
15
|
+
- 适用于: Bug 修复、简单功能、不涉及复杂 UI 依赖的变更
|
|
21
16
|
|
|
22
|
-
|
|
17
|
+
**核心约定**:
|
|
18
|
+
- 初始化: `incspec init`
|
|
19
|
+
- 检查状态: `incspec status`
|
|
20
|
+
- 编号引用: `[S1]` 时序步骤, `[D1]` 依赖, `[C1]` 变更
|
|
21
|
+
- 增量标记: `[N1]` 新增, `[S1-Modified]` 修改, `[S1-Deleted]` 删除
|
|
22
|
+
- 继续前验证: `incspec validate --strict`
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
## 七步工作流
|
|
25
25
|
|
|
26
26
|
```
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
├───────────────────────────────────────────────────────────────────────────────────┤
|
|
30
|
-
│ │
|
|
31
|
-
│ 完整模式 (7步): │
|
|
32
|
-
│ │
|
|
33
|
-
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
34
|
-
│ │ 步骤 1 │ │ 步骤 2 │ │ 步骤 3 │ │ 步骤 4 │ │
|
|
35
|
-
│ │ 分析 │───▶│ 收集 │───▶│ 收集 │───▶│ 设计 │ │
|
|
36
|
-
│ │ 代码流 │ │ 需求 │ │ UI依赖 │ │ 增量 │ │
|
|
37
|
-
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
|
|
38
|
-
│ ▲ │ │
|
|
39
|
-
│ │ ▼ │
|
|
40
|
-
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
41
|
-
│ │ │ │ 步骤 7 │ │ 步骤 6 │ │ 步骤 5 │ │
|
|
42
|
-
│ │ 循环 │◀───│ 归档 │◀───│ 合并到 │◀───│ 应用 │ │
|
|
43
|
-
│ │ │ │ 产出 │ │ 基线 │ │ 代码 │ │
|
|
44
|
-
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
|
|
45
|
-
│ │
|
|
46
|
-
│ 快速模式 (5步): │
|
|
47
|
-
│ │
|
|
48
|
-
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
49
|
-
│ │ 步骤 1 │ │ 步骤 2 │ │ 步骤 5 │ │ 步骤 6 │ │ 步骤 7 │ │
|
|
50
|
-
│ │ 分析 │───▶│ 收集 │───▶│ 应用 │───▶│ 合并到 │───▶│ 归档 │ │
|
|
51
|
-
│ │ 代码流 │ │ 需求 │ │ 代码 │ │ 基线 │ │ 产出 │ │
|
|
52
|
-
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
|
|
53
|
-
│ (跳过步骤 3 UI依赖采集 和 步骤 4 增量设计) │
|
|
54
|
-
│ │
|
|
55
|
-
└───────────────────────────────────────────────────────────────────────────────────┘
|
|
27
|
+
完整模式: [1分析] → [2需求] → [3UI依赖] → [4设计] → [5应用] → [6合并] → [7归档] → 循环
|
|
28
|
+
快速模式: [1分析] → [2需求] ─────────────────────→ [5应用] → [6合并] → [7归档] → 循环
|
|
56
29
|
```
|
|
57
30
|
|
|
58
|
-
**模式选择:**
|
|
59
|
-
- **完整模式**: 复杂 UI 功能、多组件交互、需要详细设计审查
|
|
60
|
-
- **快速模式**: Bug 修复、简单功能、不涉及 UI 依赖变更
|
|
61
|
-
|
|
62
31
|
### 步骤 1: 分析代码工作流
|
|
63
32
|
|
|
64
33
|
**命令**: `incspec analyze <source-path> [--module=name] [--quick] [--baseline=file]`
|
|
65
34
|
|
|
66
35
|
**目的**: 生成包含 API 调用时序图和依赖关系图的基线快照。
|
|
67
36
|
|
|
68
|
-
**选项**:
|
|
69
|
-
- `--quick`: 启动快速模式 (5步流程)
|
|
70
|
-
- `--baseline=<file>`: 使用现有基准报告,自动从 baselines/ 或 archives/ 目录恢复
|
|
71
|
-
|
|
72
37
|
**输出**: `incspec/baselines/{module}-baseline-v{n}.md`
|
|
73
38
|
|
|
74
|
-
|
|
75
|
-
- 带编号步骤 `[S1]`, `[S2]`, `[S3]`... 的 Mermaid 时序图
|
|
76
|
-
- 带编号节点 `[D1]`, `[D2]`, `[D3]`... 的 Mermaid 依赖图
|
|
77
|
-
- 带关系分类 `[R1.1]`, `[R2.1]`, `[R3.1]`... 的依赖摘要
|
|
78
|
-
|
|
79
|
-
**输出结构示例**:
|
|
80
|
-
```markdown
|
|
81
|
-
## API 调用时序图
|
|
82
|
-
|
|
83
|
-
```mermaid
|
|
84
|
-
sequenceDiagram
|
|
85
|
-
participant User as 用户
|
|
86
|
-
participant Component as 组件
|
|
87
|
-
participant API as 接口
|
|
88
|
-
|
|
89
|
-
User->>Component: [S1] 触发操作
|
|
90
|
-
Component->>API: [S2] fetchData()
|
|
91
|
-
API-->>Component: [S3] 响应
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## 依赖关系图
|
|
95
|
-
|
|
96
|
-
```mermaid
|
|
97
|
-
graph TD
|
|
98
|
-
D1[组件] --> D2[useStore]
|
|
99
|
-
D1 --> D3[API服务]
|
|
100
|
-
D2 --> D4[状态]
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## 依赖摘要
|
|
104
|
-
|
|
105
|
-
| ID | 关系类型 | 描述 |
|
|
106
|
-
|----|----------|------|
|
|
107
|
-
| R1.1 | 串行 | S1 → S2 → S3 |
|
|
108
|
-
| R2.1 | 并行 | S4 ∥ S5 |
|
|
109
|
-
| R3.1 | 条件 | S6 → S7 (满足条件时) |
|
|
110
|
-
```
|
|
39
|
+
**交付物**: Mermaid 时序图 (`[S1]`-`[Sn]`)、依赖图 (`[D1]`-`[Dn]`)、依赖摘要 (`[R1.x]`-`[R3.x]`)
|
|
111
40
|
|
|
112
41
|
### 步骤 2: 收集结构化需求
|
|
113
42
|
|
|
114
43
|
**命令**: `incspec collect-req` (别名: `cr`)
|
|
115
44
|
|
|
116
|
-
**目的**:
|
|
45
|
+
**目的**: 交互式需求收集,转换为 5 列格式。
|
|
117
46
|
|
|
118
47
|
**输出**: `incspec/requirements/structured-requirements.md`
|
|
119
48
|
|
|
120
|
-
**5
|
|
121
|
-
|
|
122
|
-
| 列名 | 描述 |
|
|
123
|
-
|------|------|
|
|
124
|
-
| 新增/修改功能 | 正在添加或更改的内容 |
|
|
125
|
-
| 涉及的UI组件 | 受影响的组件 |
|
|
126
|
-
| 触发条件 | 触发此功能的条件 |
|
|
127
|
-
| 核心状态变更 | Store/Props/Context 的变化 |
|
|
128
|
-
| 预期数据流 | 数据在系统中的流转方式 |
|
|
129
|
-
|
|
130
|
-
**交互模式**:
|
|
131
|
-
1. 从用户处收集初始需求
|
|
132
|
-
2. 通过澄清问题消除歧义
|
|
133
|
-
3. 转换为结构化5列格式
|
|
134
|
-
4. 最终确定前与用户确认
|
|
49
|
+
**5列格式**: 新增/修改功能 | 涉及的UI组件 | 触发条件 | 核心状态变更 | 预期数据流
|
|
135
50
|
|
|
136
51
|
### 步骤 3: 收集 UI 依赖
|
|
137
52
|
|
|
@@ -141,16 +56,7 @@ graph TD
|
|
|
141
56
|
|
|
142
57
|
**输出**: `incspec/requirements/ui-dependencies.md`
|
|
143
58
|
|
|
144
|
-
**6
|
|
145
|
-
|
|
146
|
-
| 维度 | 示例 |
|
|
147
|
-
|------|------|
|
|
148
|
-
| UI组件库 | Arco Design, Antd, Element Plus |
|
|
149
|
-
| 状态管理 | Zustand, Pinia, Redux, MobX |
|
|
150
|
-
| API集成 | REST端点, GraphQL查询 |
|
|
151
|
-
| 类型定义 | Interfaces, types, enums |
|
|
152
|
-
| 工具函数 | Helpers, formatters, validators |
|
|
153
|
-
| 上下文/位置 | 文件路径, 父组件 |
|
|
59
|
+
**6个维度**: UI组件库 | 状态管理 | API集成 | 类型定义 | 工具函数 | 上下文/位置
|
|
154
60
|
|
|
155
61
|
### 步骤 4: 设计增量
|
|
156
62
|
|
|
@@ -160,20 +66,14 @@ graph TD
|
|
|
160
66
|
|
|
161
67
|
**输出**: `incspec/increments/{feature}-increment-v{n}.md`
|
|
162
68
|
|
|
163
|
-
**7
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
7. **建议的测试用例** - 至少6个测试场景
|
|
172
|
-
|
|
173
|
-
**增量标记**:
|
|
174
|
-
- `[N1]`, `[N2]`... - 新增项
|
|
175
|
-
- `[S1-Modified]`, `[D2_MOD]` - 对现有项的修改
|
|
176
|
-
- `[S3-Deleted]`, `[D4_DEL]` - 删除项
|
|
69
|
+
**7个模块**:
|
|
70
|
+
1. 一句话摘要
|
|
71
|
+
2. 变更链设计表 (`[C1]`-`[Cn]`)
|
|
72
|
+
3. 规划的API调用时序图 (原始 `[S]` + 新增 `[N]` + 修改 `[S-Modified]` + 删除 `[S-Deleted]`)
|
|
73
|
+
4. 规划的依赖关系图 (原始 `[D]` + 新增 `[N]` + 修改 `[D_MOD]` + 删除 `[D_DEL]`)
|
|
74
|
+
5. 完整文件变更清单
|
|
75
|
+
6. 潜在风险与副作用
|
|
76
|
+
7. 建议的测试用例 (至少6个)
|
|
177
77
|
|
|
178
78
|
### 步骤 5: 应用代码变更
|
|
179
79
|
|
|
@@ -181,16 +81,9 @@ graph TD
|
|
|
181
81
|
|
|
182
82
|
**目的**: 根据增量蓝图执行代码生成和修改。
|
|
183
83
|
|
|
184
|
-
|
|
185
|
-
1. 解析增量蓝图 (模块2-5)
|
|
186
|
-
2. 分析依赖并进行拓扑排序
|
|
187
|
-
3. 执行顺序: Types → Utils → APIs → Store → Components
|
|
188
|
-
4. 使用项目风格参考创建新文件
|
|
189
|
-
5. 对现有文件进行精确编辑
|
|
190
|
-
6. 验证 TypeScript 编译
|
|
191
|
-
7. 输出变更摘要及统计信息
|
|
84
|
+
**执行顺序**: Types → Utils → APIs → Store → Components
|
|
192
85
|
|
|
193
|
-
**审批门禁**:
|
|
86
|
+
**审批门禁**: 增量设计必须经过审查批准后才能执行。
|
|
194
87
|
|
|
195
88
|
### 步骤 6: 合并到基线
|
|
196
89
|
|
|
@@ -198,469 +91,125 @@ graph TD
|
|
|
198
91
|
|
|
199
92
|
**目的**: 将增量整合到新的基线快照中。
|
|
200
93
|
|
|
201
|
-
|
|
202
|
-
1. 读取增量报告 (模块3-4)
|
|
203
|
-
2. 移除所有增量标记 (N/Modified/Deleted)
|
|
204
|
-
3. 将新节点与原始基线合并
|
|
205
|
-
4. 重新编号为干净的 `[S1]`-`[Sxx]` 和 `[D1]`-`[Dxx]` 序列
|
|
206
|
-
5. 输出新基线: `{module}-baseline-v{n+1}.md`
|
|
207
|
-
|
|
208
|
-
**结果**: 新基线成为下一个增量周期的起点。
|
|
94
|
+
**处理**: 移除增量标记 → 合并新节点 → 重新编号为干净序列 → 输出新基线 v{n+1}
|
|
209
95
|
|
|
210
96
|
### 步骤 7: 归档工作流产出
|
|
211
97
|
|
|
212
98
|
**命令**: `incspec archive [--yes] [<file>] [--keep]`
|
|
213
99
|
|
|
214
|
-
**目的**:
|
|
215
|
-
|
|
216
|
-
**处理流程**:
|
|
217
|
-
1. 确定要归档的文件 (默认全部当前工作流产出)
|
|
218
|
-
2. 创建归档目录: `incspec/archives/YYYY-MM/{module}/`
|
|
219
|
-
3. 移动或复制文件到归档目录 (取决于 `--keep` 选项)
|
|
220
|
-
4. 更新工作流状态以反映归档
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
## 任务前准备
|
|
224
|
-
|
|
225
|
-
**上下文检查清单**:
|
|
226
|
-
- [ ] 运行 `incspec status` 检查当前工作流状态
|
|
227
|
-
- [ ] 阅读 `incspec/project.md` 了解项目约定
|
|
228
|
-
- [ ] 查看 `incspec/baselines/` 中的最新基线
|
|
229
|
-
- [ ] 检查 `incspec/increments/` 中待处理的增量
|
|
230
|
-
- [ ] 运行 `incspec list` 查看所有规格文件
|
|
231
|
-
|
|
232
|
-
**创建新增量前**:
|
|
233
|
-
- 始终从最新基线开始
|
|
234
|
-
- 在开始新增量之前完成上一个增量
|
|
235
|
-
- 使用 `incspec validate` 检查完整性
|
|
236
|
-
- 严格按步骤顺序执行: 1 → 2 → 3 → 4 → 5 → 6 → 7
|
|
237
|
-
|
|
238
|
-
## 快速开始
|
|
239
|
-
|
|
240
|
-
### CLI 命令
|
|
241
|
-
|
|
242
|
-
```bash
|
|
243
|
-
# 初始化
|
|
244
|
-
incspec init # 交互式项目设置
|
|
245
|
-
incspec init --force # 强制重新初始化
|
|
246
|
-
|
|
247
|
-
# 状态与导航
|
|
248
|
-
incspec status / st # 查看当前工作流状态
|
|
249
|
-
incspec list / ls # 列出所有规格文件
|
|
250
|
-
incspec list baselines # 仅列出基线
|
|
251
|
-
incspec list -l # 长格式(含时间戳)
|
|
252
|
-
incspec list -a # 包含归档
|
|
253
|
-
|
|
254
|
-
# 7步工作流
|
|
255
|
-
incspec analyze <path> [--module=name] [--quick] [--baseline=file] # 步骤1: 基线分析
|
|
256
|
-
incspec collect-req / cr # 步骤2: 需求收集
|
|
257
|
-
incspec collect-dep / cd # 步骤3: 依赖收集 (快速模式跳过)
|
|
258
|
-
incspec design [--feature=name] / d # 步骤4: 增量设计 (快速模式跳过)
|
|
259
|
-
incspec apply [path] / ap # 步骤5: 代码执行
|
|
260
|
-
incspec merge [path] / m # 步骤6: 基线合并
|
|
261
|
-
incspec archive --yes # 步骤7: 归档产出
|
|
262
|
-
|
|
263
|
-
# 验证与管理
|
|
264
|
-
incspec validate / v # 验证完整性
|
|
265
|
-
incspec validate --strict # 严格验证模式
|
|
266
|
-
incspec archive # 归档当前工作流全部产出文件
|
|
267
|
-
incspec archive --workflow # 同上,显式指定
|
|
268
|
-
incspec archive <file> # 归档指定文件
|
|
269
|
-
incspec archive <file> --keep # 复制而非移动
|
|
270
|
-
|
|
271
|
-
# IDE 集成
|
|
272
|
-
incspec sync # 交互式选择同步目标
|
|
273
|
-
incspec sync --cursor # 同步 Cursor 斜杠命令
|
|
274
|
-
incspec sync --claude # 同步 Claude Code Skill
|
|
275
|
-
incspec sync --all # 同步全部
|
|
276
|
-
incspec sync --global # 同步到全局目录
|
|
277
|
-
incspec sync --project # 同步到当前目录
|
|
278
|
-
|
|
279
|
-
# 帮助
|
|
280
|
-
incspec help [command] # 显示帮助
|
|
281
|
-
incspec --version / -v # 显示版本
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
### Cursor 斜杠命令
|
|
285
|
-
|
|
286
|
-
运行 `incspec sync --cursor` 后,以下命令可用:
|
|
287
|
-
|
|
288
|
-
| 命令 | 步骤 | 描述 |
|
|
289
|
-
|------|------|------|
|
|
290
|
-
| `/incspec/inc-analyze` | 1 | 分析代码流,生成基线 |
|
|
291
|
-
| `/incspec/inc-collect-req` | 2 | 收集结构化需求 |
|
|
292
|
-
| `/incspec/inc-collect-dep` | 3 | 收集UI依赖 |
|
|
293
|
-
| `/incspec/inc-design` | 4 | 设计增量蓝图 |
|
|
294
|
-
| `/incspec/inc-apply` | 5 | 应用代码变更 |
|
|
295
|
-
| `/incspec/inc-merge` | 6 | 合并到基线 |
|
|
296
|
-
| `/incspec/inc-archive` | 7 | 归档工作流产出 |
|
|
297
|
-
| `/incspec/inc-status` | - | 检查工作流状态 |
|
|
298
|
-
| `/incspec/inc-help` | - | 显示帮助 |
|
|
100
|
+
**目的**: 将已完成的工作流产出归档到 `incspec/archives/YYYY-MM/{module}/`
|
|
299
101
|
|
|
300
102
|
## 目录结构
|
|
301
103
|
|
|
302
104
|
```
|
|
303
105
|
incspec/
|
|
304
|
-
├── project.md # 项目配置
|
|
305
|
-
├── WORKFLOW.md #
|
|
306
|
-
├── AGENTS.md #
|
|
307
|
-
├── baselines/ #
|
|
308
|
-
|
|
309
|
-
├──
|
|
310
|
-
|
|
311
|
-
│ └── ui-dependencies.md
|
|
312
|
-
├── increments/ # 增量设计蓝图
|
|
313
|
-
│ └── {feature}-increment-v{n}.md
|
|
314
|
-
└── archives/ # 历史记录
|
|
315
|
-
└── YYYY-MM/ # 按月份组织
|
|
316
|
-
└── {module}/ # 按工作流模块分组
|
|
106
|
+
├── project.md # 项目配置
|
|
107
|
+
├── WORKFLOW.md # 工作流状态
|
|
108
|
+
├── AGENTS.md # 本指南
|
|
109
|
+
├── baselines/ # 基线快照 (版本控制)
|
|
110
|
+
├── requirements/ # 需求与依赖
|
|
111
|
+
├── increments/ # 增量设计 (版本控制)
|
|
112
|
+
└── archives/ # 历史归档 (按月/模块)
|
|
317
113
|
```
|
|
318
114
|
|
|
319
115
|
## 编号系统
|
|
320
116
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
117
|
+
| 类型 | 原始 | 新增 | 修改 | 删除 |
|
|
118
|
+
|------|------|------|------|------|
|
|
119
|
+
| 时序 | `[S1]` | `[N1]` | `[S1-Modified]` | `[S1-Deleted]` |
|
|
120
|
+
| 依赖 | `[D1]` | `[N1]` | `[D1_MOD]` | `[D1_DEL]` |
|
|
121
|
+
| 变更 | `[C1]` | - | - | - |
|
|
122
|
+
| 关系 | `[R1.x]` 串行, `[R2.x]` 并行, `[R3.x]` 条件 |
|
|
324
123
|
|
|
325
|
-
|
|
326
|
-
|------|------|------|
|
|
327
|
-
| `[S1]`, `[S2]`... | 原始基线步骤 | `[S1] 用户点击按钮` |
|
|
328
|
-
| `[N1]`, `[N2]`... | 增量中的新步骤 | `[N1] 验证输入` |
|
|
329
|
-
| `[S1-Modified]` | 修改的现有步骤 | `[S1-Modified] 增强验证` |
|
|
330
|
-
| `[S3-Deleted]` | 删除的步骤 | `[S3-Deleted] 移除遗留调用` |
|
|
124
|
+
## CLI 命令
|
|
331
125
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|------|------|------|
|
|
338
|
-
| `[D1]`, `[D2]`... | 原始基线节点 | `D1[UserStore]` |
|
|
339
|
-
| `[N1]`, `[N2]`... | 增量中的新节点 | `N1[ValidationUtil]` |
|
|
340
|
-
| `[D2_MOD]` | 修改的现有节点 | `D2_MOD[增强的API]` |
|
|
341
|
-
| `[D3_DEL]` | 删除的节点 | `D3_DEL[遗留服务]` |
|
|
342
|
-
|
|
343
|
-
### 变更链编号
|
|
344
|
-
|
|
345
|
-
用于增量设计表:
|
|
346
|
-
|
|
347
|
-
| 格式 | 用途 |
|
|
348
|
-
|------|------|
|
|
349
|
-
| `[C1]`, `[C2]`... | 顺序变更操作 |
|
|
350
|
-
|
|
351
|
-
### 关系编号
|
|
126
|
+
```bash
|
|
127
|
+
# 初始化与状态
|
|
128
|
+
incspec init [--force] # 初始化项目
|
|
129
|
+
incspec status / st # 查看工作流状态
|
|
130
|
+
incspec list / ls [-l] [-a] # 列出规格文件
|
|
352
131
|
|
|
353
|
-
|
|
132
|
+
# 7步工作流
|
|
133
|
+
incspec analyze <path> [--quick] [--module=name] [--baseline=file] # 步骤1
|
|
134
|
+
incspec collect-req / cr # 步骤2
|
|
135
|
+
incspec collect-dep / cd # 步骤3 (快速模式跳过)
|
|
136
|
+
incspec design / d [--feature=name] # 步骤4 (快速模式跳过)
|
|
137
|
+
incspec apply / ap [path] # 步骤5
|
|
138
|
+
incspec merge / m [path] # 步骤6
|
|
139
|
+
incspec archive [--yes] [--keep] # 步骤7
|
|
354
140
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
141
|
+
# 验证与同步
|
|
142
|
+
incspec validate / v [--strict] # 验证完整性
|
|
143
|
+
incspec sync [--cursor|--claude|--all] [--global|--project] # IDE集成
|
|
144
|
+
incspec reset [--archive|--clean] # 重置工作流状态
|
|
145
|
+
```
|
|
360
146
|
|
|
361
|
-
##
|
|
147
|
+
## 文件格式示例
|
|
362
148
|
|
|
363
|
-
###
|
|
149
|
+
### 基线文件
|
|
364
150
|
|
|
365
151
|
```markdown
|
|
366
152
|
---
|
|
367
153
|
module: home
|
|
368
154
|
version: 1
|
|
369
|
-
created: 2024-01-15T10:00:00Z
|
|
370
155
|
source_path: src/pages/Home
|
|
371
156
|
---
|
|
372
157
|
|
|
373
|
-
#
|
|
158
|
+
# Home 基线 v1
|
|
374
159
|
|
|
375
160
|
## API 调用时序图
|
|
376
|
-
|
|
377
|
-
```mermaid
|
|
378
|
-
sequenceDiagram
|
|
379
|
-
participant User as 用户
|
|
380
|
-
participant Component as 组件
|
|
381
|
-
participant Store as 状态
|
|
382
|
-
participant API as 接口
|
|
383
|
-
|
|
384
|
-
User->>Component: [S1] 挂载组件
|
|
385
|
-
Component->>Store: [S2] 初始化状态
|
|
386
|
-
Store->>API: [S3] fetchInitialData()
|
|
387
|
-
API-->>Store: [S4] 响应
|
|
388
|
-
Store-->>Component: [S5] 更新视图
|
|
389
|
-
```
|
|
161
|
+
sequenceDiagram (Mermaid): User → Component → Store → API 的 [S1]-[Sn] 编号调用
|
|
390
162
|
|
|
391
163
|
## 依赖关系图
|
|
392
|
-
|
|
393
|
-
```mermaid
|
|
394
|
-
graph TD
|
|
395
|
-
D1[HomePage] --> D2[useHomeStore]
|
|
396
|
-
D1 --> D3[HomeAPI]
|
|
397
|
-
D2 --> D4[UserState]
|
|
398
|
-
D3 --> D5[HttpClient]
|
|
399
|
-
```
|
|
164
|
+
graph TD (Mermaid): [D1]-[Dn] 编号的组件依赖关系
|
|
400
165
|
|
|
401
166
|
## 依赖摘要
|
|
402
|
-
|
|
403
167
|
| ID | 类型 | 关系 | 描述 |
|
|
404
|
-
|
|
405
|
-
|
|
|
406
|
-
| R1.2 | 串行 | S3 → S4 → S5 | API响应流 |
|
|
407
|
-
| R2.1 | 并行 | D2 ∥ D3 | Store和API相互独立 |
|
|
168
|
+
| R1.1 | 串行 | S1 → S2 | 顺序调用 |
|
|
169
|
+
| R2.1 | 并行 | S3 ∥ S4 | 并发调用 |
|
|
408
170
|
```
|
|
409
171
|
|
|
410
|
-
###
|
|
172
|
+
### 增量文件
|
|
411
173
|
|
|
412
174
|
```markdown
|
|
413
175
|
---
|
|
414
176
|
feature: batch-operation
|
|
415
|
-
version: 1
|
|
416
177
|
baseline: home-baseline-v1
|
|
417
|
-
created: 2024-01-16T14:00:00Z
|
|
418
178
|
---
|
|
419
179
|
|
|
420
|
-
#
|
|
180
|
+
# Batch-operation 增量 v1
|
|
421
181
|
|
|
422
182
|
## 1. 一句话摘要
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
##
|
|
427
|
-
|
|
428
|
-
| ID | 变更 | 文件 | 操作 | 逻辑规格 |
|
|
429
|
-
|----|------|------|------|----------|
|
|
430
|
-
| C1 | 添加选择状态 | store/list.ts | modify | 跟踪已选ID |
|
|
431
|
-
| C2 | 添加批量操作 | components/BatchActions.tsx | create | 批量操作UI |
|
|
432
|
-
| C3 | 添加批量API | api/batch.ts | create | 批量操作端点 |
|
|
433
|
-
|
|
434
|
-
## 3. 规划的API调用时序图
|
|
435
|
-
|
|
436
|
-
```mermaid
|
|
437
|
-
sequenceDiagram
|
|
438
|
-
participant User as 用户
|
|
439
|
-
participant List as 列表
|
|
440
|
-
participant Store as 状态
|
|
441
|
-
participant API as 接口
|
|
442
|
-
|
|
443
|
-
User->>List: [S1] 查看列表
|
|
444
|
-
List->>Store: [S2] 加载项目
|
|
445
|
-
User->>List: [N1] 切换选择
|
|
446
|
-
List->>Store: [N2] 更新selectedIds
|
|
447
|
-
User->>List: [N3] 点击批量操作
|
|
448
|
-
List->>API: [N4] batchOperation()
|
|
449
|
-
API-->>List: [N5] 响应
|
|
450
|
-
List->>Store: [N6] 刷新列表
|
|
451
|
-
```
|
|
452
|
-
|
|
453
|
-
## 4. 规划的依赖关系图
|
|
454
|
-
|
|
455
|
-
```mermaid
|
|
456
|
-
graph TD
|
|
457
|
-
D1[ListPage] --> D2[useListStore]
|
|
458
|
-
D1 --> N1[BatchActions]
|
|
459
|
-
N1 --> N2[useBatchStore]
|
|
460
|
-
N2 --> N3[BatchAPI]
|
|
461
|
-
D2 --> D2_MOD[增强的状态]
|
|
462
|
-
```
|
|
463
|
-
|
|
464
|
-
## 5. 完整文件变更清单
|
|
465
|
-
|
|
466
|
-
| 操作 | 路径 | 描述 |
|
|
467
|
-
|------|------|------|
|
|
468
|
-
| create | src/components/BatchActions.tsx | 批量操作按钮 |
|
|
469
|
-
| create | src/api/batch.ts | 批量API服务 |
|
|
470
|
-
| create | src/store/batch.ts | 批量选择状态 |
|
|
471
|
-
| modify | src/store/list.ts | 添加选择跟踪 |
|
|
472
|
-
| modify | src/pages/List.tsx | 集成批量UI |
|
|
473
|
-
|
|
183
|
+
## 2. 变更链设计表 ([C1]-[Cn])
|
|
184
|
+
## 3. 规划的API调用时序图 (原始[S] + [N]新增 + [S-Modified] + [S-Deleted])
|
|
185
|
+
## 4. 规划的依赖关系图 (原始[D] + [N]新增 + [D_MOD] + [D_DEL])
|
|
186
|
+
## 5. 完整文件变更清单 (create/modify/delete + 路径)
|
|
474
187
|
## 6. 潜在风险与副作用
|
|
475
|
-
|
|
476
|
-
- [ ] 性能: 大量选择可能导致渲染变慢
|
|
477
|
-
- [ ] 状态同步: 批量操作后需清除选择状态
|
|
478
|
-
- [ ] 错误处理: 部分批量失败需要优雅处理
|
|
479
|
-
- [ ] 用户体验: 批量操作期间的加载状态
|
|
480
|
-
|
|
481
|
-
## 7. 建议的测试用例
|
|
482
|
-
|
|
483
|
-
| # | 测试用例 | 预期结果 |
|
|
484
|
-
|---|----------|----------|
|
|
485
|
-
| 1 | 选择单个项目 | 项目高亮,计数显示1 |
|
|
486
|
-
| 2 | 选择全部项目 | 所有项目高亮 |
|
|
487
|
-
| 3 | 取消选择项目 | 项目取消高亮,计数递减 |
|
|
488
|
-
| 4 | 执行批量删除 | 已选项目被移除 |
|
|
489
|
-
| 5 | 批量操作失败 | 显示错误消息,项目保留 |
|
|
490
|
-
| 6 | 取消选择 | 所有项目取消选择 |
|
|
188
|
+
## 7. 建议的测试用例 (至少6个)
|
|
491
189
|
```
|
|
492
190
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
```markdown
|
|
496
|
-
---
|
|
497
|
-
created: 2024-01-16T10:00:00Z
|
|
498
|
-
updated: 2024-01-16T14:30:00Z
|
|
499
|
-
---
|
|
500
|
-
|
|
501
|
-
# 结构化需求
|
|
502
|
-
|
|
503
|
-
## 功能需求
|
|
504
|
-
|
|
505
|
-
| 功能 | UI组件 | 触发条件 | 状态变更 | 数据流 |
|
|
506
|
-
|------|--------|----------|----------|--------|
|
|
507
|
-
| 批量删除 | List, BatchActions | 点击删除按钮 | selectedIds → clear | 用户 → Store → API → 刷新 |
|
|
508
|
-
| 批量导出 | List, ExportModal | 点击导出按钮 | exportFormat | 用户 → Store → API → 下载 |
|
|
509
|
-
|
|
510
|
-
## 澄清问题
|
|
511
|
-
|
|
512
|
-
- 问: 批量操作的最大数量是多少?
|
|
513
|
-
- 答: 每次操作100项
|
|
514
|
-
|
|
515
|
-
- 问: 删除的项目是否可恢复?
|
|
516
|
-
- 答: 否,此功能接受硬删除
|
|
517
|
-
```
|
|
518
|
-
|
|
519
|
-
## 最佳实践
|
|
520
|
-
|
|
521
|
-
### 工作流纪律
|
|
522
|
-
|
|
523
|
-
1. **不要跳过步骤** - 完整模式按1-7顺序执行,快速模式按1-2-5-6-7执行
|
|
524
|
-
2. **一次一个增量** - 完成后再开始下一个
|
|
525
|
-
3. **频繁验证** - 继续前运行 `incspec validate`
|
|
526
|
-
4. **保持基线最新** - 实施成功后始终合并
|
|
527
|
-
|
|
528
|
-
### 编号一致性
|
|
529
|
-
|
|
530
|
-
1. **使用连续编号** - 序列中不能有间隙
|
|
531
|
-
2. **适当使用前缀** - S表示时序, D表示依赖, C表示变更
|
|
532
|
-
3. **清晰标记修改** - 始终标注Modified/Deleted
|
|
533
|
-
4. **合并时重新编号** - 基线中保持干净序列
|
|
534
|
-
|
|
535
|
-
### 文档质量
|
|
191
|
+
## 与AI助手集成
|
|
536
192
|
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
3. **列出所有风险** - 即使是小问题
|
|
540
|
-
4. **全面测试** - 覆盖边界情况
|
|
193
|
+
**完整模式流程**:
|
|
194
|
+
1. 人类提供需求 → AI 执行步骤 1-4 → 人类审批设计 → AI 执行步骤 5-7 → 循环
|
|
541
195
|
|
|
542
|
-
|
|
196
|
+
**快速模式流程**:
|
|
197
|
+
1. 人类提供简单需求 → AI 执行步骤 1-2 → 人类审批 → AI 执行步骤 5-7 → 循环
|
|
543
198
|
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
199
|
+
**核心原则**:
|
|
200
|
+
- 增量优于大爆炸 - 小的、经过验证的变更
|
|
201
|
+
- 规格驱动 - 需求先于代码
|
|
202
|
+
- 可追溯 - 每个变更关联到需求
|
|
203
|
+
- 可逆转 - 基线提供回滚点
|
|
548
204
|
|
|
549
205
|
## 故障排除
|
|
550
206
|
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
- 先完成步骤1 (analyze)
|
|
559
|
-
- 检查 `incspec/baselines/` 目录
|
|
560
|
-
|
|
561
|
-
**"Previous step not completed"**
|
|
562
|
-
- 运行 `incspec status` 检查进度
|
|
563
|
-
- 按顺序完成待处理步骤
|
|
564
|
-
|
|
565
|
-
**"Validation failed"**
|
|
566
|
-
- 检查文件格式是否符合预期结构
|
|
567
|
-
- 确保所有必需部分都存在
|
|
568
|
-
- 验证编号序列
|
|
569
|
-
|
|
570
|
-
### 验证技巧
|
|
571
|
-
|
|
572
|
-
```bash
|
|
573
|
-
# 检查整体完整性
|
|
574
|
-
incspec validate --strict
|
|
575
|
-
|
|
576
|
-
# 列出文件以验证结构
|
|
577
|
-
incspec list -l
|
|
578
|
-
|
|
579
|
-
# 检查当前状态
|
|
580
|
-
incspec status
|
|
581
|
-
```
|
|
582
|
-
|
|
583
|
-
### 恢复步骤
|
|
584
|
-
|
|
585
|
-
1. **工作流卡住**: 删除 `WORKFLOW.md` 并重新开始
|
|
586
|
-
2. **基线损坏**: 从 `archives/` 恢复或重新生成
|
|
587
|
-
3. **合并失败**: 使用最新基线重新运行合并
|
|
588
|
-
|
|
589
|
-
## 快速参考
|
|
590
|
-
|
|
591
|
-
### 工作流状态
|
|
592
|
-
|
|
593
|
-
| 状态 | 描述 |
|
|
594
|
-
|------|------|
|
|
595
|
-
| `pending` | 步骤未开始 |
|
|
596
|
-
| `in_progress` | 步骤正在进行 |
|
|
597
|
-
| `completed` | 步骤已完成 |
|
|
598
|
-
|
|
599
|
-
### 文件类型
|
|
600
|
-
|
|
601
|
-
| 目录 | 用途 | 版本控制 |
|
|
602
|
-
|------|------|----------|
|
|
603
|
-
| `baselines/` | 当前真相 | 是 (v1, v2...) |
|
|
604
|
-
| `requirements/` | 收集的规格 | 否 |
|
|
605
|
-
| `increments/` | 变更提案 | 是 (v1, v2...) |
|
|
606
|
-
| `archives/` | 历史记录 | 按日期 |
|
|
607
|
-
|
|
608
|
-
### CLI 快捷方式
|
|
609
|
-
|
|
610
|
-
| 完整命令 | 别名 | 描述 |
|
|
611
|
-
|----------|------|------|
|
|
612
|
-
| `status` | `st` | 查看状态 |
|
|
613
|
-
| `collect-req` | `cr` | 需求收集 |
|
|
614
|
-
| `collect-dep` | `cd` | 依赖收集 |
|
|
615
|
-
| `design` | `d` | 设计 |
|
|
616
|
-
| `apply` | `ap` | 应用 |
|
|
617
|
-
| `merge` | `m` | 合并 |
|
|
618
|
-
| `list` | `ls` | 列出文件 |
|
|
619
|
-
| `validate` | `v` | 验证 |
|
|
620
|
-
|
|
621
|
-
### 常用命令
|
|
622
|
-
|
|
623
|
-
```bash
|
|
624
|
-
incspec status # 我在哪里?
|
|
625
|
-
incspec list # 有什么?
|
|
626
|
-
incspec validate --strict # 是否正确?
|
|
627
|
-
incspec sync # 设置IDE命令
|
|
628
|
-
```
|
|
629
|
-
|
|
630
|
-
## 与AI助手集成
|
|
207
|
+
| 错误 | 解决方案 |
|
|
208
|
+
|------|----------|
|
|
209
|
+
| Workflow not initialized | 运行 `incspec init` |
|
|
210
|
+
| No baseline found | 先完成步骤 1 (analyze) |
|
|
211
|
+
| Previous step not completed | 运行 `incspec status` 检查进度 |
|
|
212
|
+
| Validation failed | 检查文件格式和编号序列 |
|
|
213
|
+
| 工作流卡住 | 运行 `incspec reset` 重置状态 |
|
|
631
214
|
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
**完整模式 (7步):**
|
|
635
|
-
|
|
636
|
-
1. **人类**: 提供高层需求
|
|
637
|
-
2. **AI**: 运行步骤1 (analyze) 理解代码库
|
|
638
|
-
3. **AI**: 运行步骤2 (collect-req) 并提出澄清问题
|
|
639
|
-
4. **AI**: 运行步骤3 (collect-dep) 映射依赖
|
|
640
|
-
5. **AI**: 运行步骤4 (design) 创建蓝图
|
|
641
|
-
6. **人类**: 审查并批准增量设计
|
|
642
|
-
7. **AI**: 运行步骤5 (apply) 生成代码
|
|
643
|
-
8. **人类**: 测试并验证变更
|
|
644
|
-
9. **AI**: 运行步骤6 (merge) 更新基线
|
|
645
|
-
10. **AI**: 运行步骤7 (archive) 归档产出
|
|
646
|
-
11. **循环**: 返回步骤1开始下一个增量
|
|
647
|
-
|
|
648
|
-
**快速模式 (5步):**
|
|
649
|
-
|
|
650
|
-
1. **人类**: 提供简单需求 (Bug修复/小功能)
|
|
651
|
-
2. **AI**: 运行步骤1 (analyze --quick) 理解代码库
|
|
652
|
-
3. **AI**: 运行步骤2 (collect-req) 收集需求
|
|
653
|
-
4. **AI**: 运行步骤5 (apply) 生成代码
|
|
654
|
-
5. **人类**: 测试并验证变更
|
|
655
|
-
6. **AI**: 运行步骤6 (merge) 更新基线
|
|
656
|
-
7. **AI**: 运行步骤7 (archive) 归档产出
|
|
657
|
-
8. **循环**: 返回步骤1开始下一个增量
|
|
658
|
-
|
|
659
|
-
### 核心原则
|
|
660
|
-
|
|
661
|
-
- **增量优于大爆炸** - 小的、经过验证的变更
|
|
662
|
-
- **规格驱动** - 需求先于代码
|
|
663
|
-
- **可追溯** - 每个变更都关联到需求
|
|
664
|
-
- **可逆转** - 基线提供回滚点
|
|
665
|
-
|
|
666
|
-
记住: 基线是真相。增量是提案。通过7步周期保持它们同步。
|
|
215
|
+
记住: **基线是真相,增量是提案**。通过工作流周期保持它们同步。
|