sillyspec 2.4.4 → 2.6.0
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/.claude/commands/sillyspec/archive.md +36 -43
- package/.claude/commands/sillyspec/brainstorm.md +86 -483
- package/.claude/commands/sillyspec/continue.md +24 -29
- package/.claude/commands/sillyspec/execute.md +63 -173
- package/.claude/commands/sillyspec/explore.md +20 -68
- package/.claude/commands/sillyspec/export.md +13 -37
- package/.claude/commands/sillyspec/init.md +25 -127
- package/.claude/commands/sillyspec/plan.md +40 -188
- package/.claude/commands/sillyspec/propose.md +36 -186
- package/.claude/commands/sillyspec/quick.md +17 -47
- package/.claude/commands/sillyspec/resume.md +22 -79
- package/.claude/commands/sillyspec/scan.md +109 -507
- package/.claude/commands/sillyspec/status.md +20 -95
- package/.claude/commands/sillyspec/verify.md +27 -86
- package/.claude/commands/sillyspec/workspace.md +27 -95
- package/.sillyspec/config.yaml +13 -0
- package/package.json +7 -2
- package/src/index.js +2 -2
- package/src/init.js +240 -75
- package/templates/archive.md +36 -43
- package/templates/brainstorm.md +81 -483
- package/templates/continue.md +20 -30
- package/templates/execute.md +63 -173
- package/templates/explore.md +15 -68
- package/templates/export.md +10 -39
- package/templates/init.md +20 -127
- package/templates/plan.md +40 -188
- package/templates/propose.md +36 -186
- package/templates/quick.md +13 -48
- package/templates/resume.md +22 -79
- package/templates/scan.md +109 -507
- package/templates/status.md +16 -96
- package/templates/verify.md +22 -86
- package/templates/workspace.md +22 -95
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
description: 绿地项目初始化 — 深度提问、调研、需求文档、路线图
|
|
3
|
+
argument-hint: "[项目名]"
|
|
4
|
+
---
|
|
2
5
|
|
|
6
|
+
## 交互规范
|
|
3
7
|
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
4
8
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
你现在是 SillySpec 的项目初始化器。
|
|
9
|
+
## 核心约束(必须遵守)
|
|
10
|
+
- ❌ 写任何实现代码
|
|
11
|
+
- ❌ 安装任何依赖
|
|
12
|
+
- ❌ 一次问多个问题
|
|
13
|
+
- ❌ 接受模糊需求(❌"好用" → ✅"首屏加载 < 2 秒")
|
|
11
14
|
|
|
12
15
|
## 用户输入
|
|
13
16
|
$ARGUMENTS
|
|
14
17
|
|
|
15
|
-
|
|
18
|
+
---
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
## 流程
|
|
18
21
|
|
|
19
22
|
### Step 1: 检查工作区模式
|
|
20
23
|
|
|
@@ -22,16 +25,7 @@ $ARGUMENTS
|
|
|
22
25
|
cat .sillyspec/config.yaml 2>/dev/null
|
|
23
26
|
```
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
1. 列出所有子项目:
|
|
27
|
-
检测到工作区模式,请选择要初始化的子项目:
|
|
28
|
-
> 1. frontend — 前端 - Vue3 + TypeScript
|
|
29
|
-
> 2. backend — 后端 - Node.js + PostgreSQL
|
|
30
|
-
> 3. 新建子项目(先运行 /sillyspec:workspace add)
|
|
31
|
-
2. 用户选择后,**切换到该子项目目录**执行后续所有步骤
|
|
32
|
-
3. 后续步骤中的所有文件路径相对于子项目目录
|
|
33
|
-
|
|
34
|
-
否则 → 单项目模式,继续。
|
|
28
|
+
有 `projects` → 工作区模式:AskUserQuestion 选子项目,切换到子项目目录执行。
|
|
35
29
|
|
|
36
30
|
### Step 2: 检查项目状态
|
|
37
31
|
|
|
@@ -39,128 +33,32 @@ cat .sillyspec/config.yaml 2>/dev/null
|
|
|
39
33
|
ls -la
|
|
40
34
|
```
|
|
41
35
|
|
|
42
|
-
|
|
43
|
-
如果是空目录 → 继续。
|
|
44
|
-
|
|
45
|
-
### Step 3: 深度提问
|
|
36
|
+
已有代码/配置 → 提示用 `/sillyspec:scan`。空目录 → 继续。
|
|
46
37
|
|
|
47
|
-
|
|
38
|
+
### Step 3: 深度提问(一次一个问题)
|
|
48
39
|
|
|
49
|
-
|
|
50
|
-
2. **核心功能** — 用户能做的最重要的事情是什么?
|
|
51
|
-
3. **技术偏好** — 有偏好的语言/框架吗?还是让我建议?
|
|
52
|
-
4. **非功能需求** — 性能要求?安全要求?离线支持?多语言?
|
|
53
|
-
5. **设计偏好** — 有参考产品吗?喜欢什么风格?
|
|
54
|
-
6. **约束** — 预算?时间?团队规模?
|
|
55
|
-
7. **不在范围内** — 明确什么不做
|
|
40
|
+
按需探索(不是每个都要):项目本质 → 核心功能 → 技术偏好 → 非功能需求 → 设计偏好 → 约束 → 不在范围内。
|
|
56
41
|
|
|
57
42
|
### Step 4: 技术选型(如需要)
|
|
58
43
|
|
|
59
|
-
|
|
60
|
-
- 语言 + 框架 + 数据库 + 部署方案
|
|
61
|
-
- 给出推荐和理由
|
|
62
|
-
|
|
63
|
-
### Step 5: 可选调研
|
|
64
|
-
|
|
65
|
-
如果用户同意,对关键技术选型做快速调研:
|
|
66
|
-
- 选定框架的当前版本和生态状态
|
|
67
|
-
- 已知的坑和替代方案
|
|
68
|
-
- 依赖的第三方服务的稳定性
|
|
69
|
-
|
|
70
|
-
### Step 6: 生成需求文档
|
|
71
|
-
|
|
72
|
-
保存到 `.sillyspec/REQUIREMENTS.md`:
|
|
73
|
-
|
|
74
|
-
```markdown
|
|
75
|
-
# 需求文档
|
|
76
|
-
|
|
77
|
-
## 项目概述
|
|
78
|
-
[一句话描述]
|
|
44
|
+
用户无明确偏好时,推荐 2-3 套技术栈并列优劣和推荐理由。可选快速调研选定框架的版本、生态、已知坑。
|
|
79
45
|
|
|
80
|
-
|
|
81
|
-
[谁在用、在什么场景下用]
|
|
46
|
+
### Step 5: 生成文档
|
|
82
47
|
|
|
83
|
-
|
|
84
|
-
### P0 — 必须有
|
|
85
|
-
- [ ] 需求 1
|
|
86
|
-
- [ ] 需求 2
|
|
48
|
+
**`REQUIREMENTS.md`:** 概述、目标用户、功能需求(P0/P1/P2)、非功能需求、不在范围内、技术选型表。
|
|
87
49
|
|
|
88
|
-
|
|
89
|
-
- [ ] 需求 3
|
|
50
|
+
**`ROADMAP.md`:** Phase 分阶段路线图(目标 + 交付物)。
|
|
90
51
|
|
|
91
|
-
|
|
92
|
-
- [ ] 需求 4
|
|
93
|
-
|
|
94
|
-
## 非功能需求
|
|
95
|
-
- 性能:xxx
|
|
96
|
-
- 安全:xxx
|
|
97
|
-
- 部署:xxx
|
|
98
|
-
|
|
99
|
-
## 不在范围内
|
|
100
|
-
- xxx
|
|
101
|
-
- xxx
|
|
102
|
-
|
|
103
|
-
## 技术选型
|
|
104
|
-
| 层 | 选择 | 理由 |
|
|
105
|
-
|---|---|---|
|
|
106
|
-
| 前端 | React + TypeScript | xxx |
|
|
107
|
-
| 后端 | xxx | xxx |
|
|
108
|
-
| 数据库 | xxx | xxx |
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### Step 7: 生成路线图:
|
|
112
|
-
|
|
113
|
-
```markdown
|
|
114
|
-
# 项目路线图
|
|
115
|
-
|
|
116
|
-
## Phase 1: 基础骨架
|
|
117
|
-
- 目标:可运行的最小版本
|
|
118
|
-
- 交付物:项目结构 + 基础配置 + 首个可运行页面/接口
|
|
119
|
-
|
|
120
|
-
## Phase 2: 核心功能
|
|
121
|
-
- 目标:P0 功能全部可用
|
|
122
|
-
- 交付物:xxx
|
|
123
|
-
|
|
124
|
-
## Phase 3: 完善
|
|
125
|
-
- 目标:P1 + 测试 + 打磨
|
|
126
|
-
- 交付物:xxx
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Step 8: 生成 PROJECT.md
|
|
130
|
-
|
|
131
|
-
保存到 `.sillyspec/PROJECT.md`:
|
|
132
|
-
|
|
133
|
-
```markdown
|
|
134
|
-
# PROJECT.md
|
|
135
|
-
|
|
136
|
-
## 项目名:xxx
|
|
137
|
-
## 一句话:xxx
|
|
138
|
-
## 状态:已初始化,等待规划
|
|
139
|
-
```
|
|
52
|
+
**`PROJECT.md`:** 项目名、一句话描述、状态。
|
|
140
53
|
|
|
141
|
-
### Step
|
|
54
|
+
### Step 6: Git 初始化
|
|
142
55
|
|
|
143
56
|
```bash
|
|
144
|
-
git init
|
|
145
|
-
git add .
|
|
146
|
-
git commit -m "chore: sillyspec init - project initialized"
|
|
57
|
+
git init && git add . && git commit -m "chore: sillyspec init - project initialized"
|
|
147
58
|
```
|
|
148
59
|
|
|
149
60
|
### 最后说:
|
|
150
61
|
|
|
151
62
|
> ✅ 项目初始化完成!
|
|
152
|
-
>
|
|
153
|
-
>
|
|
154
|
-
> - `.sillyspec/PROJECT.md` — 项目概述
|
|
155
|
-
> - `.sillyspec/REQUIREMENTS.md` — 需求文档
|
|
156
|
-
> - `.sillyspec/ROADMAP.md` — 路线图
|
|
157
|
-
>
|
|
158
|
-
> 下一步:
|
|
159
|
-
> - 开始第一个功能:`/sillyspec:brainstorm "Phase 1: xxx"`
|
|
160
|
-
> - 或修改需求:直接告诉我改什么
|
|
161
|
-
|
|
162
|
-
## 绝对规则
|
|
163
|
-
- 不写任何实现代码
|
|
164
|
-
- 不安装任何依赖
|
|
165
|
-
- 提问阶段一次一个问题
|
|
166
|
-
- 需求必须具体,不能模糊(❌"好用" → ✅"首屏加载 < 2 秒")
|
|
63
|
+
> 生成文件:PROJECT.md、REQUIREMENTS.md、ROADMAP.md
|
|
64
|
+
> 下一步:`/sillyspec:brainstorm "Phase 1: xxx"` 或直接告诉我改什么
|
|
@@ -1,233 +1,85 @@
|
|
|
1
|
-
|
|
1
|
+
## 交互规范
|
|
2
|
+
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
2
3
|
|
|
3
|
-
##
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
## 核心约束(必须遵守)
|
|
5
|
+
- ❌ 写实现代码(只写计划中的代码示例)
|
|
6
|
+
- ❌ 每个步骤缺验证命令和预期输出
|
|
7
|
+
- ❌ 编造表名、字段名(必须来自 ARCHITECTURE.md 或 design.md)
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
## 状态检查(必须先执行)
|
|
8
10
|
|
|
9
11
|
```bash
|
|
10
12
|
sillyspec status --json
|
|
11
13
|
```
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
- 其他 phase → ❌ 不允许跳步,提示用户运行 `sillyspec next` 获取正确步骤
|
|
15
|
+
- `phase: "plan"` → ✅ 继续
|
|
16
|
+
- 其他 phase → 提示 `sillyspec next`
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
---
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
## 流程
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
### 1. 加载上下文
|
|
22
23
|
|
|
23
24
|
```bash
|
|
24
25
|
cat .sillyspec/config.yaml 2>/dev/null
|
|
25
26
|
```
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
# 工作区概览(了解所有子项目)
|
|
31
|
-
cat .sillyspec/workspace/CODEBASE-OVERVIEW.md 2>/dev/null
|
|
32
|
-
|
|
33
|
-
# 共享规范
|
|
34
|
-
cat .sillyspec/shared/*.md 2>/dev/null
|
|
35
|
-
|
|
36
|
-
# 规范(最近非归档变更)
|
|
37
|
-
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
|
|
38
|
-
cat "$LATEST/proposal.md"
|
|
39
|
-
cat "$LATEST/design.md"
|
|
40
|
-
cat "$LATEST/tasks.md"
|
|
41
|
-
cat "$LATEST/specs/requirements.md" 2>/dev/null
|
|
42
|
-
|
|
43
|
-
# 各子项目的代码库上下文
|
|
44
|
-
# 从 config.yaml 读取项目列表,对每个子项目:
|
|
45
|
-
cat <子项目路径>/.sillyspec/codebase/CONVENTIONS.md 2>/dev/null
|
|
46
|
-
cat <子项目路径>/.sillyspec/codebase/ARCHITECTURE.md 2>/dev/null
|
|
47
|
-
cat <子项目路径>/.sillyspec/codebase/STACK.md 2>/dev/null
|
|
48
|
-
|
|
49
|
-
# 项目需求
|
|
50
|
-
cat <子项目路径>/.sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
**如果不是工作区模式:**
|
|
28
|
+
**工作区模式:** 加载 CODEBASE-OVERVIEW.md + 共享规范 + 子项目的 CONVENTIONS/ARCHITECTURE/STACK + REQUIREMENTS.md。
|
|
54
29
|
|
|
30
|
+
**单项目模式:**
|
|
55
31
|
```bash
|
|
56
|
-
# 规范(最近非归档变更)
|
|
57
32
|
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
|
|
58
|
-
cat "$LATEST/proposal.md
|
|
59
|
-
cat "$LATEST/design.md"
|
|
60
|
-
cat "$LATEST/tasks.md"
|
|
33
|
+
cat "$LATEST"/{proposal,design,tasks}.md 2>/dev/null
|
|
61
34
|
cat "$LATEST/specs/requirements.md" 2>/dev/null
|
|
62
|
-
|
|
63
|
-
# 代码库上下文(棕地)
|
|
64
|
-
cat .sillyspec/codebase/CONVENTIONS.md 2>/dev/null
|
|
65
|
-
cat .sillyspec/codebase/ARCHITECTURE.md 2>/dev/null
|
|
66
|
-
cat .sillyspec/codebase/STACK.md 2>/dev/null
|
|
67
|
-
|
|
68
|
-
# 项目需求
|
|
35
|
+
cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE,STACK}.md 2>/dev/null
|
|
69
36
|
cat .sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
70
37
|
```
|
|
71
38
|
|
|
72
39
|
### 1.5 锚定确认(必须完成)
|
|
73
40
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
已读取并理解:
|
|
78
|
-
- [x] proposal.md — 变更动机和范围
|
|
79
|
-
- [x] design.md — 技术方案和文件变更(如果存在)
|
|
80
|
-
- [x] tasks.md — 实现清单
|
|
81
|
-
- [x] specs/requirements.md — 需求和场景(如果存在)
|
|
82
|
-
|
|
83
|
-
所有可用上下文已加载,开始执行。
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
**文件不存在不是错误**。只确认实际存在的文件。不准跳过此步骤。
|
|
41
|
+
确认实际存在的文件(proposal / design / tasks / requirements),不存在的标注跳过。
|
|
87
42
|
|
|
88
43
|
### 2. 逐任务展开
|
|
89
44
|
|
|
90
|
-
把 tasks.md
|
|
91
|
-
|
|
92
|
-
**工作区模式下,每个 Task 必须标注所属项目:**
|
|
93
|
-
|
|
94
|
-
```markdown
|
|
95
|
-
### Task 1: [frontend] 数据库 User 模型
|
|
96
|
-
|
|
97
|
-
**项目:** frontend
|
|
98
|
-
**文件:**
|
|
99
|
-
```
|
|
45
|
+
把 tasks.md 每个 checkbox 展开为详细步骤。工作区模式下每个 Task 标注所属项目。
|
|
100
46
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
- 修改:`prisma/schema.prisma`
|
|
110
|
-
- 新建:`prisma/migrations/xxx/migration.sql`
|
|
111
|
-
- 测试:`tests/models/user.test.ts`
|
|
112
|
-
|
|
113
|
-
**步骤:**
|
|
114
|
-
- [ ] 写失败测试:
|
|
115
|
-
```typescript
|
|
116
|
-
// tests/models/user.test.ts
|
|
117
|
-
import { prisma } from '@/lib/db'
|
|
118
|
-
|
|
119
|
-
describe('User model', () => {
|
|
120
|
-
it('should create user with hashed password', async () => {
|
|
121
|
-
const user = await prisma.user.create({
|
|
122
|
-
data: { email: 'test@test.com', passwordHash: 'hashed' }
|
|
123
|
-
})
|
|
124
|
-
expect(user.id).toBeDefined()
|
|
125
|
-
expect(user.passwordHash).toBe('hashed')
|
|
126
|
-
})
|
|
127
|
-
})
|
|
128
|
-
```
|
|
129
|
-
运行:`pnpm test tests/models/user.test.ts` → 预期 FAIL(模型不存在)
|
|
130
|
-
|
|
131
|
-
- [ ] 写最少代码让测试通过:
|
|
132
|
-
```prisma
|
|
133
|
-
// prisma/schema.prisma
|
|
134
|
-
model User {
|
|
135
|
-
id String @id @default(cuid())
|
|
136
|
-
email String @unique
|
|
137
|
-
passwordHash String
|
|
138
|
-
createdAt DateTime @default(now())
|
|
139
|
-
}
|
|
140
|
-
```
|
|
141
|
-
运行:`npx prisma migrate dev --name add-user-model`
|
|
142
|
-
运行:`pnpm test tests/models/user.test.ts` → 预期 PASS
|
|
143
|
-
|
|
144
|
-
- [ ] 运行全量测试 → 预期 ALL GREEN
|
|
145
|
-
- [ ] git commit -m "feat: add User model"
|
|
146
|
-
|
|
147
|
-
**验证命令:**
|
|
148
|
-
`pnpm test tests/models/user.test.ts -v`
|
|
149
|
-
```
|
|
47
|
+
**每个 Task 必须包含:**
|
|
48
|
+
- 精确文件路径
|
|
49
|
+
- **精确方法签名**(参数类型、返回值类型、注解)— ❌ "实现用户创建接口" → ✅ `public Result<UserVO> createUser(@RequestBody @Valid UserDTO dto)`,参考 `RoleController.createRole`
|
|
50
|
+
- 完整可运行的代码示例(不写"添加验证逻辑"这种模糊描述)
|
|
51
|
+
- 涉及已有类调用时,标注"参考 `XxxService.java` 的 `xxx` 方法"
|
|
52
|
+
- 新增方法必须列出方法签名,方法签名必须来自已有代码风格或 design.md
|
|
53
|
+
- 运行命令和预期输出
|
|
54
|
+
- TDD 步骤:🔴 写失败测试 → 🟢 写最少代码 → 🔵 重构 → ✅ commit
|
|
150
55
|
|
|
151
56
|
### 3. 标注执行顺序
|
|
152
57
|
|
|
58
|
+
按 Wave 分组,标注依赖关系:
|
|
153
59
|
```markdown
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
**Wave 1**(并行,无依赖):
|
|
157
|
-
- Task 1: 数据库模型
|
|
158
|
-
- Task 2: 邮件服务(独立模块)
|
|
159
|
-
|
|
160
|
-
**Wave 2**(依赖 Wave 1):
|
|
161
|
-
- Task 3: 注册 API(需要 User 模型)
|
|
162
|
-
|
|
163
|
-
**Wave 3**(依赖 Wave 2):
|
|
164
|
-
- Task 4: 验证流程(需要注册完成)
|
|
60
|
+
**Wave 1**(并行,无依赖):Task 1, Task 2
|
|
61
|
+
**Wave 2**(依赖 Wave 1):Task 3
|
|
165
62
|
```
|
|
166
63
|
|
|
167
|
-
### 4.
|
|
168
|
-
|
|
169
|
-
**假设执行者是:** 熟练开发者,但对你项目零上下文、品味存疑、讨厌写测试。
|
|
170
|
-
|
|
171
|
-
- 每个步骤 2-5 分钟可完成
|
|
172
|
-
- 包含完整可运行的代码(不要写"添加验证逻辑")
|
|
173
|
-
- 包含精确文件路径(不要写"在适当位置")
|
|
174
|
-
- 包含运行命令和预期输出
|
|
175
|
-
- 频繁 commit,每个任务独立提交
|
|
176
|
-
- 如果发现设计有矛盾 → 停下来告诉用户
|
|
177
|
-
|
|
178
|
-
### 5. 保存
|
|
179
|
-
|
|
180
|
-
保存到 `.sillyspec/plans/YYYY-MM-DD-<change-name>.md`
|
|
181
|
-
|
|
182
|
-
### 6. 自检门控(Hard Gate)
|
|
64
|
+
### 4. 保存
|
|
183
65
|
|
|
184
|
-
|
|
185
|
-
- [ ] 每个 task 是否包含验证命令和预期输出?
|
|
186
|
-
- [ ] 是否标注了 Wave 和执行顺序?
|
|
187
|
-
- [ ] plan 是否与 design.md 的文件变更清单一致?
|
|
66
|
+
保存到 `.sillyspec/changes/<变更名>/plan.md`
|
|
188
67
|
|
|
189
|
-
|
|
68
|
+
### 5. 自检门控
|
|
190
69
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
```bash
|
|
196
|
-
bash scripts/validate-plan.sh .sillyspec/changes/<当前变更目录>
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
- 脚本返回 0 → 自检通过,继续
|
|
200
|
-
- 脚本返回非 0 → 根据提示修正后重新运行
|
|
201
|
-
|
|
202
|
-
### 8. 最后说:
|
|
203
|
-
|
|
204
|
-
**用 CLI 验证并获取下一步:**
|
|
70
|
+
- [ ] 每个 task 有具体文件路径?
|
|
71
|
+
- [ ] 每个 task 有验证命令和预期输出?
|
|
72
|
+
- [ ] 标注了 Wave 和执行顺序?
|
|
73
|
+
- [ ] plan 与 design.md 文件变更清单一致?
|
|
205
74
|
|
|
206
75
|
```bash
|
|
207
|
-
sillyspec
|
|
76
|
+
bash scripts/validate-plan.sh .sillyspec/changes/<当前变更目录> 2>/dev/null
|
|
208
77
|
```
|
|
209
78
|
|
|
210
|
-
|
|
211
|
-
> 计划已保存到 `.sillyspec/plans/xxx.md`。
|
|
212
|
-
> 下一步:
|
|
79
|
+
### 6. 完成
|
|
213
80
|
|
|
214
81
|
```bash
|
|
215
|
-
sillyspec next
|
|
82
|
+
sillyspec status --json && sillyspec next
|
|
216
83
|
```
|
|
217
84
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
### 9. 更新 STATE.md
|
|
221
|
-
|
|
222
|
-
plan 完成后,**必须自动更新** `.sillyspec/STATE.md`:
|
|
223
|
-
|
|
224
|
-
- 当前阶段改为 `plan ✅`
|
|
225
|
-
- 下一步改为 `/sillyspec:execute`
|
|
226
|
-
- 历史记录追加时间 + plan 完成
|
|
227
|
-
- 追加 Wave 数量信息
|
|
228
|
-
|
|
229
|
-
## 绝对规则
|
|
230
|
-
- 不写实现代码(只写计划中的代码示例)
|
|
231
|
-
- 每个步骤必须有验证命令和预期输出
|
|
232
|
-
- 不要遗漏边界情况
|
|
233
|
-
- **计划中引用的表名、字段名必须来自 ARCHITECTURE.md 数据模型或 design.md 中声明的新增表。禁止编造。**
|
|
85
|
+
更新 `.sillyspec/STATE.md`:阶段改为 `plan ✅`,下一步 `/sillyspec:execute`。
|