Skip to content

Commit 5964d7b

Browse files
committed
feat: Enable SDD
--story=1
1 parent 384ff42 commit 5964d7b

20 files changed

+3012
-0
lines changed
Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
---
2+
description: 在任务生成后,对 spec.md、plan.md 和 tasks.md 执行非破坏性的跨工件一致性和质量分析。
3+
---
4+
5+
## 用户输入
6+
7+
```text
8+
$ARGUMENTS
9+
```
10+
11+
在继续之前,您**必须**考虑用户输入(如果不为空)。
12+
13+
## 目标
14+
15+
在实施之前,识别三个核心工件(`spec.md``plan.md``tasks.md`)之间的不一致、重复、模糊和规范不足的项目。此命令**必须**`/tasks` 成功生成完整的 `tasks.md` 后运行。
16+
17+
## 操作约束
18+
19+
**严格只读****不要**修改任何文件。输出结构化分析报告。提供可选的修复计划(用户必须明确批准后才能手动调用任何后续编辑命令)。
20+
21+
**章程权威**:项目章程(`.specify/memory/constitution.md`)在此分析范围内是**不可协商的**。章程冲突自动为严重问题,需要调整规范、计划或任务——而不是稀释、重新解释或默默忽略原则。如果原则本身需要更改,那必须在 `/analyze` 之外的单独、明确的章程更新中进行。
22+
23+
## 执行步骤
24+
25+
### 1. 初始化分析上下文
26+
27+
从仓库根目录运行一次 `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks` 并解析 JSON 以获取 FEATURE_DIR 和 AVAILABLE_DOCS。推导绝对路径:
28+
29+
- SPEC = FEATURE_DIR/spec.md
30+
- PLAN = FEATURE_DIR/plan.md
31+
- TASKS = FEATURE_DIR/tasks.md
32+
33+
如果任何必需文件缺失,则以错误消息中止(指示用户运行缺失的先决条件命令)。
34+
对于参数中的单引号,如 "I'm Groot",使用转义语法:例如 'I'\''m Groot'(或尽可能使用双引号:"I'm Groot")。
35+
36+
### 2. 加载工件(渐进式展示)
37+
38+
仅从每个工件加载最小必需的上下文:
39+
40+
**从 spec.md:**
41+
42+
- 概述/上下文
43+
- 功能需求
44+
- 非功能需求
45+
- 用户故事
46+
- 边缘情况(如果存在)
47+
48+
**从 plan.md:**
49+
50+
- 架构/技术栈选择
51+
- 数据模型引用
52+
- 阶段
53+
- 技术约束
54+
55+
**从 tasks.md:**
56+
57+
- 任务 ID
58+
- 描述
59+
- 阶段分组
60+
- 并行标记 [P]
61+
- 引用的文件路径
62+
63+
**从章程:**
64+
65+
- 加载 `.specify/memory/constitution.md` 进行原则验证
66+
67+
### 3. 构建语义模型
68+
69+
创建内部表示(输出中不包含原始工件):
70+
71+
- **需求清单**:每个功能和非功能需求,带有稳定键(基于祈使短语推导 slug;例如,"User can upload file" → `user-can-upload-file`
72+
- **用户故事/操作清单**:带有验收标准的离散用户操作
73+
- **任务覆盖映射**:将每个任务映射到一个或多个需求或故事(通过关键词/显式引用模式推断,如 ID 或关键短语)
74+
- **章程规则集**:提取原则名称和 MUST/SHOULD 规范性声明
75+
76+
### 4. 检测过程(高效令牌分析)
77+
78+
专注于高信号发现。限制总共 50 个发现;在溢出摘要中聚合其余部分。
79+
80+
#### A. 重复检测
81+
82+
- 识别近似重复的需求
83+
- 标记较低质量的表述以进行合并
84+
85+
#### B. 模糊性检测
86+
87+
- 标记缺乏可测量标准的模糊形容词(快速、可扩展、安全、直观、稳健)
88+
- 标记未解决的占位符(TODO、TKTK、???、`<placeholder>` 等)
89+
90+
#### C. 规范不足
91+
92+
- 有动词但缺少对象或可测量结果的需求
93+
- 缺少验收标准对齐的用户故事
94+
- 引用规范/计划中未定义的文件或组件的任务
95+
96+
#### D. 章程对齐
97+
98+
- 与 MUST 原则冲突的任何需求或计划元素
99+
- 章程中缺失的强制部分或质量门控
100+
101+
#### E. 覆盖缺口
102+
103+
- 没有关联任务的需求
104+
- 没有映射需求/故事的任务
105+
- 未在任务中反映的非功能需求(例如,性能、安全性)
106+
107+
#### F. 不一致性
108+
109+
- 术语漂移(相同概念在不同文件中命名不同)
110+
- 计划中引用但在规范中缺失的数据实体(反之亦然)
111+
- 任务排序矛盾(例如,集成任务在基础设置任务之前而没有依赖说明)
112+
- 冲突需求(例如,一个要求 Next.js 而另一个指定 Vue)
113+
114+
### 5. 严重性分配
115+
116+
使用此启发式方法对发现进行优先级排序:
117+
118+
- **严重**:违反章程 MUST、缺失核心规范工件,或零覆盖的需求阻止基线功能
119+
- ****:重复或冲突需求、模糊的安全/性能属性、不可测试的验收标准
120+
- ****:术语漂移、缺失非功能任务覆盖、规范不足的边缘情况
121+
- ****:风格/措辞改进、不影响执行顺序的轻微冗余
122+
123+
### 6. 生成紧凑分析报告
124+
125+
输出 Markdown 报告(不写入文件),结构如下:
126+
127+
## 规范分析报告
128+
129+
| ID | 类别 | 严重性 | 位置 | 摘要 | 建议 |
130+
|----|------|--------|------|------|------|
131+
| A1 | 重复 || spec.md:L120-134 | 两个相似需求... | 合并表述;保留更清晰的版本 |
132+
133+
(每个发现添加一行;生成以类别首字母为前缀的稳定 ID。)
134+
135+
**覆盖摘要表:**
136+
137+
| 需求键 | 有任务? | 任务 ID | 备注 |
138+
|--------|----------|---------|------|
139+
140+
**章程对齐问题:**(如果有)
141+
142+
**未映射任务:**(如果有)
143+
144+
**指标:**
145+
146+
- 总需求数
147+
- 总任务数
148+
- 覆盖率%(有 >=1 个任务的需求)
149+
- 模糊性计数
150+
- 重复计数
151+
- 严重问题计数
152+
153+
### 7. 提供下一步操作
154+
155+
在报告末尾,输出简洁的下一步操作块:
156+
157+
- 如果存在严重问题:建议在 `/implement` 之前解决
158+
- 如果只有低/中问题:用户可以继续,但提供改进建议
159+
- 提供明确的命令建议:例如,"运行 /speckit.specify 进行细化"、"运行 /speckit.plan 调整架构"、"手动编辑 tasks.md 为 'performance-metrics' 添加覆盖"
160+
161+
### 8. 提供修复
162+
163+
询问用户:"您希望我为前 N 个问题建议具体的修复编辑吗?"(不要自动应用它们。)
164+
165+
## 操作原则
166+
167+
### 上下文效率
168+
169+
- **最小高信噪比令牌**:专注于可操作的发现,而不是详尽的文档
170+
- **渐进式展示**:增量加载工件;不要将所有内容倾倒到分析中
171+
- **高效令牌输出**:限制发现表为 50 行;总结溢出部分
172+
- **确定性结果**:无更改重新运行应产生一致的 ID 和计数
173+
174+
### 分析指南
175+
176+
- **绝不修改文件**(这是只读分析)
177+
- **绝不虚构缺失部分**(如果缺失,准确报告)
178+
- **优先处理章程违规**(这些总是严重的)
179+
- **使用示例而非详尽规则**(引用具体实例,而不是通用模式)
180+
- **优雅报告零问题**(发出带有覆盖统计的成功报告)
181+
182+
## 上下文
183+
184+
$ARGUMENTS

0 commit comments

Comments
 (0)