sillyspec 3.7.0 → 3.7.2
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 +1 -1
- package/src/index.js +11 -483
- package/src/setup.js +234 -66
- package/templates/brainstorm.md +2 -6
- package/templates/execute.md +19 -0
- package/templates/plan.md +6 -6
- package/templates/propose.md +3 -7
- package/templates/quick.md +2 -0
- package/templates/scan.md +17 -5
- package/.claude/commands/sillyspec/archive.md +0 -63
- package/.claude/commands/sillyspec/brainstorm.md +0 -182
- package/.claude/commands/sillyspec/continue.md +0 -32
- package/.claude/commands/sillyspec/execute.md +0 -133
- package/.claude/commands/sillyspec/explore.md +0 -43
- package/.claude/commands/sillyspec/export.md +0 -21
- package/.claude/commands/sillyspec/init.md +0 -64
- package/.claude/commands/sillyspec/plan.md +0 -112
- package/.claude/commands/sillyspec/propose.md +0 -77
- package/.claude/commands/sillyspec/quick.md +0 -76
- package/.claude/commands/sillyspec/resume.md +0 -53
- package/.claude/commands/sillyspec/scan-quick.md +0 -47
- package/.claude/commands/sillyspec/scan.md +0 -135
- package/.claude/commands/sillyspec/status.md +0 -72
- package/.claude/commands/sillyspec/verify.md +0 -87
- package/.claude/commands/sillyspec/workspace-sync.md +0 -89
- package/.claude/commands/sillyspec/workspace.md +0 -67
- package/.sillyspec/config.yaml +0 -13
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
## 核心约束(必须遵守)
|
|
5
|
-
- ❌ 写实现代码(任何语言)
|
|
6
|
-
- ❌ 修改任何源代码文件
|
|
7
|
-
- ❌ 安装依赖或执行构建命令
|
|
8
|
-
- ❌ 创建数据库迁移脚本
|
|
9
|
-
- ❌ 跳过 brainstorm 直接进入 execute/plan
|
|
10
|
-
- ❌ 在 checklist 未完成前开始写设计文档
|
|
11
|
-
- ❌ 编造不存在的表名、字段名、API 端点
|
|
12
|
-
- ❌ 一次性抛出多个问题(必须逐个等待回答)
|
|
13
|
-
- ❌ 用户确认前自行推进到 plan 或任何后续阶段
|
|
14
|
-
|
|
15
|
-
## 状态检查(必须先执行)
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
sillyspec status --json
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
- `phase: "brainstorm"` → ✅ 继续
|
|
22
|
-
- 其他 phase → 提示用户当前阶段,建议先完成
|
|
23
|
-
|
|
24
|
-
## 用户想法
|
|
25
|
-
$ARGUMENTS
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Checklist(必须按顺序完成,不允许跳步或并行)
|
|
30
|
-
|
|
31
|
-
- [ ] **Step 1** — 加载项目上下文
|
|
32
|
-
- [ ] **Step 1.5** — 协作与复用检查(同名变更 + 全局模板)
|
|
33
|
-
- [ ] **Step 2** — 原型/设计图分析(如有)
|
|
34
|
-
- [ ] **Step 2b** — 评估需求范围,复杂需求拆分子项目/阶段,生成 MASTER.md
|
|
35
|
-
- [ ] **Step 3** — 对话式探索(一次一个问题,2-3 轮内完成)
|
|
36
|
-
- [ ] **Step 4** — 提出 2-3 个方案并推荐
|
|
37
|
-
- [ ] **Step 5** — 分段展示设计,逐段确认
|
|
38
|
-
- [ ] **Step 6** — 写设计文档并保存
|
|
39
|
-
- [ ] **Step 7** — AI 自审(对照约束检查)
|
|
40
|
-
- [ ] **Step 8** — 用户确认设计方案
|
|
41
|
-
- [ ] **Step 9** — 输出 design.md
|
|
42
|
-
- [ ] **Step 10** — 更新 STATE.md
|
|
43
|
-
|
|
44
|
-
**终态:** brainstorm 完成后唯一出口是 `/sillyspec:plan`。不允许直接进入 execute 或任何代码操作。
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## 各步骤详解
|
|
49
|
-
|
|
50
|
-
### Step 1: 加载项目上下文
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
cat .sillyspec/config.yaml 2>/dev/null
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**工作区模式:** AskUserQuestion 选子项目,**cd 到子项目目录执行**,加载子项目上下文 + 共享规范 + 工作区概览,设计文档保存到子项目 `.sillyspec/changes/`。git commit 在子项目目录执行。
|
|
57
|
-
|
|
58
|
-
**单项目模式:**
|
|
59
|
-
```bash
|
|
60
|
-
cat .sillyspec/{PROJECT,REQUIREMENTS,ROADMAP}.md 2>/dev/null
|
|
61
|
-
cat .sillyspec/codebase/{STRUCTURE,CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
62
|
-
ls .sillyspec/changes/ 2>/dev/null | grep -v archive
|
|
63
|
-
ls .sillyspec/knowledge/ 2>/dev/null
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Step 1.5: 协作与复用检查
|
|
67
|
-
|
|
68
|
-
- **同名变更:** `ls .sillyspec/changes/ | grep -v archive` — 有相关变更则提示避免冲突
|
|
69
|
-
- **全局模板:** `ls ~/.sillyspec/templates/ 2>/dev/null` — 有匹配模板则建议复用
|
|
70
|
-
|
|
71
|
-
无匹配则跳过,不输出。
|
|
72
|
-
|
|
73
|
-
### Step 2: 原型/设计图分析(如有图片则必做)
|
|
74
|
-
|
|
75
|
-
**不要只看描述文字,图片包含布局、字段、交互等视觉信息。**
|
|
76
|
-
|
|
77
|
-
对每张图逐页分析(先主页面后子页面):
|
|
78
|
-
1. **页面结构** — 识别搜索区、操作栏、表格、表单等区块
|
|
79
|
-
2. **表单字段** — 字段名、类型、必填、选项
|
|
80
|
-
3. **交互流程** — 页面跳转、按钮行为、流程线
|
|
81
|
-
4. **标注备注** — 业务规则、状态说明、权限说明
|
|
82
|
-
|
|
83
|
-
展示分析结果,问用户确认有无遗漏。
|
|
84
|
-
|
|
85
|
-
### Step 2b: 大模块拆分
|
|
86
|
-
|
|
87
|
-
**满足以下任意 2 条就建议拆分:**
|
|
88
|
-
- 3+ 个可独立交付的功能模块
|
|
89
|
-
- 3+ 种角色有不同权限和视图
|
|
90
|
-
- 跨页面状态流转(审批流、多步表单)
|
|
91
|
-
- brainstorm 提问发现需求范围过大
|
|
92
|
-
|
|
93
|
-
确认拆分后生成 MASTER.md:
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
mkdir -p .sillyspec/changes/<变更名>/stages
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
`MASTER.md` 内容:概述、拆分计划表(阶段/范围/状态)、整体技术方向、阶段间依赖、原型分析摘要、经验记录。
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
git add .sillyspec/changes/<变更名>/MASTER.md
|
|
103
|
-
git commit -m "docs: master change plan for <变更名>"
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
提示用户:`/sillyspec:brainstorm <变更名>/stage-1`
|
|
107
|
-
|
|
108
|
-
**子阶段 brainstorm:** 读取 MASTER.md + 前序阶段经验 + 对应原型,设计文档保存到 `.sillyspec/changes/<变更名>/stages/<stage-N>/`。
|
|
109
|
-
|
|
110
|
-
### Step 3: 对话式探索
|
|
111
|
-
|
|
112
|
-
**核心规则:一次只问一个问题。**
|
|
113
|
-
|
|
114
|
-
1. 从最核心的问题开始(用户到底想做什么?)
|
|
115
|
-
2. 等待回答,根据信息量决定追问还是进入方案讨论
|
|
116
|
-
3. 探索顺序按需:目的 → 约束 → 边界 → 成功标准
|
|
117
|
-
4. **大多数 brainstorm 2-3 轮就应进入方案讨论**
|
|
118
|
-
|
|
119
|
-
### Step 4: 提出 2-3 种方案
|
|
120
|
-
|
|
121
|
-
每种方案列优劣,给出推荐和理由。
|
|
122
|
-
|
|
123
|
-
### Step 5: 分段展示设计
|
|
124
|
-
|
|
125
|
-
简单项目几句话;复杂项目每段 200-300 字逐段确认。
|
|
126
|
-
|
|
127
|
-
### Step 6: 写设计文档
|
|
128
|
-
|
|
129
|
-
保存到 `.sillyspec/changes/<变更名>/design.md`:
|
|
130
|
-
|
|
131
|
-
```markdown
|
|
132
|
-
# [Feature Name] 设计
|
|
133
|
-
|
|
134
|
-
## 动机与范围
|
|
135
|
-
(为什么做、范围边界、成功标准)
|
|
136
|
-
|
|
137
|
-
## 功能需求
|
|
138
|
-
(需求场景、验收标准)
|
|
139
|
-
- [ ] 标准 1
|
|
140
|
-
|
|
141
|
-
## 技术方案
|
|
142
|
-
## 约束和假设
|
|
143
|
-
## 不在范围内
|
|
144
|
-
## 文件变更
|
|
145
|
-
## 代码风格参照
|
|
146
|
-
(参考已有源文件,标注返回值类型、异常类型、注解风格)
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
**注意:** 引用的表名必须来自 ARCHITECTURE.md 数据模型或明确标注"新增"。必须先读取 `.sillyspec/codebase/ARCHITECTURE.md`。
|
|
150
|
-
|
|
151
|
-
### Step 7: AI 自审(必须执行)
|
|
152
|
-
|
|
153
|
-
- 需求覆盖:是否完整覆盖 Step 3 确认的需求点?
|
|
154
|
-
- 约束一致性:技术方案是否与 ARCHITECTURE.md、CONVENTIONS.md 一致?
|
|
155
|
-
- 表名/字段真实性:是否来自真实 schema?
|
|
156
|
-
- 范围控制:是否包含不必要功能(YAGNI)?
|
|
157
|
-
- 验收标准:是否具体、可测试?
|
|
158
|
-
- 变更冲突:是否与 Step 1.5 检测到的已有变更冲突?
|
|
159
|
-
|
|
160
|
-
发现问题 → 修改文档,重新自审。不确定的标注「⚠️ 自审存疑」让用户判断。
|
|
161
|
-
|
|
162
|
-
### Step 8: 用户确认(⛔ 门禁)
|
|
163
|
-
|
|
164
|
-
```bash
|
|
165
|
-
sillyspec status --json
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
展示设计方案,AskUserQuestion:确认 / 需要修改 / 推翻重来。
|
|
169
|
-
|
|
170
|
-
### Step 9: 输出技术方案
|
|
171
|
-
|
|
172
|
-
用户确认后,确认 design.md 已包含完整内容(动机、需求、方案、文件变更、代码风格参照)。如 Step 6 已保存则无需重复。
|
|
173
|
-
|
|
174
|
-
### Step 10: 更新 STATE.md
|
|
175
|
-
|
|
176
|
-
自动更新 `.sillyspec/STATE.md`(不存在则创建):当前变更、阶段、下一步 `/sillyspec:plan`、关键决策、历史记录。不需要 Git 提交。
|
|
177
|
-
|
|
178
|
-
## 关键原则
|
|
179
|
-
- YAGNI — 无情砍掉不需要的功能
|
|
180
|
-
- 总是探索替代方案
|
|
181
|
-
- 设计可以很短,但必须存在
|
|
182
|
-
- "简单"的项目更需要设计——未检视的假设造成最大浪费
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
## 核心约束(必须遵守)
|
|
2
|
-
- ❌ 跳过自动判断,直接执行某个阶段
|
|
3
|
-
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## 判断逻辑
|
|
7
|
-
|
|
8
|
-
**先检查是否工作区模式:**
|
|
9
|
-
```bash
|
|
10
|
-
cat .sillyspec/config.yaml 2>/dev/null | grep -q "projects"
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
**工作区模式:** 同时检查根目录和每个子项目,列出所有未完成的工作,让用户选择继续哪个。
|
|
14
|
-
|
|
15
|
-
**单项目模式:** 按顺序检查,第一个未完成的就执行:
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
1. 有进行中的变更?
|
|
19
|
-
1a. 无 design.md → 提示补充设计(/sillyspec:brainstorm)
|
|
20
|
-
1b. 无 tasks.md → 执行 /sillyspec:plan
|
|
21
|
-
1c. tasks.md 有未完成项 + 有计划 → 执行 /sillyspec:execute
|
|
22
|
-
1d. tasks.md 全完成 + 未验证 → 执行 /sillyspec:verify(可选)
|
|
23
|
-
1e. 已验证通过 → 执行 /sillyspec:archive
|
|
24
|
-
|
|
25
|
-
2. 有 .sillyspec/codebase/ 但无进行中工作?
|
|
26
|
-
→ /sillyspec:brainstorm "你的想法"
|
|
27
|
-
|
|
28
|
-
3. 什么都没有?
|
|
29
|
-
→ /sillyspec:init(新项目)或 /sillyspec:scan(棕地项目)
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
先报告检测结果,再执行。
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
## 核心约束(必须遵守)
|
|
5
|
-
- ❌ 跳过状态检查,自行推断阶段
|
|
6
|
-
- ❌ 跳步执行(不允许跳过 plan 直接 execute)
|
|
7
|
-
- ❌ 先写代码后补测试
|
|
8
|
-
- ❌ 编造不存在的方法/注解/路径/类/字段
|
|
9
|
-
- ❌ 自行补全缺失的接口/方法(应报告 BLOCKED)
|
|
10
|
-
- ❌ 意外修改了计划外的文件却不报告
|
|
11
|
-
|
|
12
|
-
## 状态检查(必须先执行)
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
cat .sillyspec/STATE.md 2>/dev/null
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
有 STATE.md 且 phase 为 execute → 继续。无 STATE.md 或 phase 不对 → 检查是否有未完成的 tasks.md:
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
ls .sillyspec/changes/*/tasks.md 2>/dev/null | xargs grep -l '\- \[ \]' 2>/dev/null
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
有未完成的 tasks.md → 继续。没有 → 提示 `/sillyspec:continue`。
|
|
25
|
-
|
|
26
|
-
## 执行范围
|
|
27
|
-
$ARGUMENTS
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## 加载上下文
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
cat .sillyspec/config.yaml 2>/dev/null
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
**工作区模式:** 根据计划 Task 标注确定子项目,额外加载共享规范 + CODEBASE-OVERVIEW.md。所有代码修改、测试运行、git commit 都在子项目目录中执行。
|
|
38
|
-
|
|
39
|
-
**加载以下文件(主代理读取,后续注入子代理):**
|
|
40
|
-
```bash
|
|
41
|
-
PLAN=$(ls -t .sillyspec/changes/*/tasks.md 2>/dev/null | head -1); cat "$PLAN"
|
|
42
|
-
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
|
|
43
|
-
cat "$LATEST"/{tasks,design}.md 2>/dev/null
|
|
44
|
-
cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
45
|
-
cat .sillyspec/local.yaml 2>/dev/null
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
如果 `$ARGUMENTS` 指定范围(如 `wave-1`、`task-3`),只执行对应部分。
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## 确认频率
|
|
53
|
-
|
|
54
|
-
用 AskUserQuestion 询问用户选择:
|
|
55
|
-
- **每个 Wave 确认** — 每个 Wave 完成后展示结果,等用户确认后继续下一 Wave
|
|
56
|
-
- **AI 自主判断** — AI 在遇到 BLOCKED 或计划外变更时才询问,其余自动推进
|
|
57
|
-
- **全自动** — 全部自动执行,不在中途打断用户
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## 子代理执行(强制模式)
|
|
62
|
-
|
|
63
|
-
**所有任务通过子代理执行,主代理负责调度和记录。**
|
|
64
|
-
|
|
65
|
-
### 执行流程
|
|
66
|
-
|
|
67
|
-
1. 解析 tasks.md,按 Wave 分组
|
|
68
|
-
2. 同一 Wave 内的任务**并行启动**子代理,不同 Wave **串行等待**
|
|
69
|
-
3. 每个 Wave 完成后,根据用户选择的确认频率决定是否暂停
|
|
70
|
-
4. 子代理返回结果后,主代理勾选 tasks.md、更新 STATE.md
|
|
71
|
-
|
|
72
|
-
### 子代理 Prompt 模板
|
|
73
|
-
|
|
74
|
-
主代理在 dispatch 子代理前,必须准备以下 prompt(所有内容**内联**,不让子代理自己读文件):
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
你正在执行任务:
|
|
78
|
-
|
|
79
|
-
## 任务描述
|
|
80
|
-
{tasks.md 中当前 task 的完整内容,包括步骤字段}
|
|
81
|
-
|
|
82
|
-
## 项目约定
|
|
83
|
-
{CONVENTIONS.md 全文}
|
|
84
|
-
|
|
85
|
-
## 项目架构
|
|
86
|
-
{ARCHITECTURE.md 全文}
|
|
87
|
-
|
|
88
|
-
## 构建命令
|
|
89
|
-
{local.yaml 中的 build 命令,如无则给默认命令}
|
|
90
|
-
|
|
91
|
-
## 工作目录
|
|
92
|
-
{子项目目录路径,工作区模式需要 cd 到此目录}
|
|
93
|
-
|
|
94
|
-
## 铁律(必须遵守)
|
|
95
|
-
1. **先读后写:** 先 cat 要修改的文件和参考文件,确认风格和方法签名后再写
|
|
96
|
-
2. **grep 确认:** 调用已有方法前必须 grep 确认存在,grep 不到 → 报告 BLOCKED
|
|
97
|
-
3. **不编造:** 不编造不存在的方法/注解/类/字段
|
|
98
|
-
4. **不自行补全:** 发现缺失接口/方法,不自己写,报告 BLOCKED
|
|
99
|
-
5. **TDD 不跳步:** 按任务步骤逐步执行,每步必须运行测试命令并确认结果
|
|
100
|
-
6. **测试直接通过 = 测了已有行为,重写测试**
|
|
101
|
-
7. **commit:** 完成后在工作目录执行 git add -A && git commit
|
|
102
|
-
8. **不修改计划外的文件**,如必须修改则在报告中说明
|
|
103
|
-
|
|
104
|
-
## 完成后报告(严格按此格式)
|
|
105
|
-
|
|
106
|
-
- **Status:** DONE / DONE_WITH_CONCERNS / BLOCKED
|
|
107
|
-
- **改动文件:** {列表}
|
|
108
|
-
- **测试结果:** {通过/失败/跳过及原因}
|
|
109
|
-
- **Commit:** {hash 或 "无"}
|
|
110
|
-
- **问题:** {BLOCKED 原因 / DONE_WITH_CONCERNS 描述 / 无}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### 子代理结果处理
|
|
114
|
-
|
|
115
|
-
子代理返回后,主代理:
|
|
116
|
-
|
|
117
|
-
1. **DONE** → 勾选 tasks.md,记录精确到秒的时间戳
|
|
118
|
-
2. **DONE_WITH_CONCERNS** → 勾选 tasks.md,记录问题到报告
|
|
119
|
-
3. **BLOCKED** → 不勾选,报告给用户,AskUserQuestion 三选一:
|
|
120
|
-
- 重试(重新 dispatch 同一任务)
|
|
121
|
-
- 跳过(勾选并标注 SKIPPED)
|
|
122
|
-
- 停止(暂停执行,用户处理后继续)
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## 完成后
|
|
127
|
-
|
|
128
|
-
所有任务完成后,用 AskUserQuestion 询问用户下一步:
|
|
129
|
-
1. **验证** — 执行 `/sillyspec:verify` 全面验证
|
|
130
|
-
2. **归档** — 跳过 verify,执行 `/sillyspec:archive`
|
|
131
|
-
3. **继续开发** — 不结束当前阶段
|
|
132
|
-
|
|
133
|
-
更新 `.sillyspec/STATE.md`:阶段改为 `execute ✅` 或 `execute 🔄 (X/M)`,历史记录追加执行结果(含精确到秒的时间戳)。
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 自由思考模式 — 讨论、画图、调研,不写代码
|
|
3
|
-
argument-hint: "[探索主题]"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## 交互规范
|
|
7
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
8
|
-
|
|
9
|
-
## 核心约束(必须遵守)
|
|
10
|
-
- ❌ 写实现代码
|
|
11
|
-
- ❌ 安装依赖
|
|
12
|
-
- ❌ 修改文件(除非用户明确要求保存发现)
|
|
13
|
-
- ❌ 强行下结论或强行结构化
|
|
14
|
-
|
|
15
|
-
## 话题
|
|
16
|
-
$ARGUMENTS
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## 这是什么模式
|
|
21
|
-
|
|
22
|
-
**探索模式用于思考,不用于实现。** 读文件、搜代码、调查代码库,但绝对不能写代码。没有固定步骤、没有必需的输出。
|
|
23
|
-
|
|
24
|
-
## 姿态
|
|
25
|
-
|
|
26
|
-
- **好奇不说教** — 问自然产生的问题
|
|
27
|
-
- **开放式线程** — 展示多个有趣方向
|
|
28
|
-
- **可视化** — 大量使用 ASCII 图表
|
|
29
|
-
- **自适应** — 追随有趣线索随时转向
|
|
30
|
-
- **务实** — 探索实际代码库,不只纸上谈兵
|
|
31
|
-
|
|
32
|
-
## 上下文感知
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
ls .sillyspec/changes/ 2>/dev/null | grep -v archive
|
|
36
|
-
cat .sillyspec/{REQUIREMENTS,ROADMAP}.md 2>/dev/null
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
有进行中变更时读取其 design/tasks,自然引用。发现重要决策时可提议保存(不自动保存)。
|
|
40
|
-
|
|
41
|
-
## 没有必需的结束
|
|
42
|
-
|
|
43
|
-
探索可以创建变更提案、产出文档、继续探索或结束。
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
## 核心约束(必须遵守)
|
|
2
|
-
- ❌ 修改任何文件(只读)
|
|
3
|
-
|
|
4
|
-
## 参数解析
|
|
5
|
-
`$ARGUMENTS`:变更名 + 可选 `--to` 输出路径(默认 `~/.sillyspec/templates/<change-name>/`)
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 流程
|
|
10
|
-
|
|
11
|
-
1. **读取变更文件:**
|
|
12
|
-
- 先检查根目录:`cat .sillyspec/changes/$ARGUMENTS/{design}.md 2>/dev/null`
|
|
13
|
-
- 根目录没有 → 检查子项目:遍历 config.yaml 中的子项目路径,查找 `$ARGUMENTS`
|
|
14
|
-
2. **清理为通用模板:** 移除项目特定信息,保留通用设计方案,添加 `notes.md` 使用建议。
|
|
15
|
-
3. **导出:** `mkdir -p ~/.sillyspec/templates/<change-name>` 并复制文件。
|
|
16
|
-
4. **确认:** 展示摘要和模板路径。
|
|
17
|
-
|
|
18
|
-
### 最后说:
|
|
19
|
-
|
|
20
|
-
> ✅ 已导出到 `~/.sillyspec/templates/<change-name>/`
|
|
21
|
-
> 其他项目使用:`/sillyspec:brainstorm` → AI 自动发现并建议复用
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 绿地项目初始化 — 深度提问、调研、需求文档、路线图
|
|
3
|
-
argument-hint: "[项目名]"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## 交互规范
|
|
7
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
8
|
-
|
|
9
|
-
## 核心约束(必须遵守)
|
|
10
|
-
- ❌ 写任何实现代码
|
|
11
|
-
- ❌ 安装任何依赖
|
|
12
|
-
- ❌ 一次问多个问题
|
|
13
|
-
- ❌ 接受模糊需求(❌"好用" → ✅"首屏加载 < 2 秒")
|
|
14
|
-
|
|
15
|
-
## 用户输入
|
|
16
|
-
$ARGUMENTS
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## 流程
|
|
21
|
-
|
|
22
|
-
### Step 1: 检查工作区模式
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
cat .sillyspec/config.yaml 2>/dev/null
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
有 `projects` → 工作区模式:AskUserQuestion 选子项目,切换到子项目目录执行。
|
|
29
|
-
|
|
30
|
-
### Step 2: 检查项目状态
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
ls -la
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
已有代码/配置 → 提示用 `/sillyspec:scan`。空目录 → 继续。
|
|
37
|
-
|
|
38
|
-
### Step 3: 深度提问(一次一个问题)
|
|
39
|
-
|
|
40
|
-
按需探索(不是每个都要):项目本质 → 核心功能 → 技术偏好 → 非功能需求 → 设计偏好 → 约束 → 不在范围内。
|
|
41
|
-
|
|
42
|
-
### Step 4: 技术选型(如需要)
|
|
43
|
-
|
|
44
|
-
用户无明确偏好时,推荐 2-3 套技术栈并列优劣和推荐理由。可选快速调研选定框架的版本、生态、已知坑。
|
|
45
|
-
|
|
46
|
-
### Step 5: 生成文档
|
|
47
|
-
|
|
48
|
-
**`REQUIREMENTS.md`:** 概述、目标用户、功能需求(P0/P1/P2)、非功能需求、不在范围内、技术选型表。
|
|
49
|
-
|
|
50
|
-
**`ROADMAP.md`:** Phase 分阶段路线图(目标 + 交付物)。
|
|
51
|
-
|
|
52
|
-
**`PROJECT.md`:** 项目名、一句话描述、状态。
|
|
53
|
-
|
|
54
|
-
### Step 6: Git 初始化
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
git init && git add . && git commit -m "chore: sillyspec init - project initialized"
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### 最后说:
|
|
61
|
-
|
|
62
|
-
> ✅ 项目初始化完成!
|
|
63
|
-
> 生成文件:PROJECT.md、REQUIREMENTS.md、ROADMAP.md
|
|
64
|
-
> 下一步:`/sillyspec:brainstorm "Phase 1: xxx"` 或直接告诉我改什么
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
## 核心约束(必须遵守)
|
|
5
|
-
- ❌ 写实现代码(只写计划中的代码示例)
|
|
6
|
-
- ❌ 每个步骤缺验证命令和预期输出
|
|
7
|
-
- ❌ 编造表名、字段名(必须来自 ARCHITECTURE.md 或 design.md)
|
|
8
|
-
|
|
9
|
-
## 状态检查(必须先执行)
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
sillyspec status --json
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
- `phase: "plan"` → ✅ 继续
|
|
16
|
-
- 其他 phase → 提示 `sillyspec next`
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## 流程
|
|
21
|
-
|
|
22
|
-
### 1. 加载上下文
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
cat .sillyspec/config.yaml 2>/dev/null
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
**工作区模式:** 加载 CODEBASE-OVERVIEW.md + 共享规范 + 子项目的 CONVENTIONS/ARCHITECTURE/STACK + REQUIREMENTS.md。
|
|
29
|
-
|
|
30
|
-
**单项目模式:**
|
|
31
|
-
```bash
|
|
32
|
-
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
|
|
33
|
-
cat "$LATEST"/{design,tasks}.md 2>/dev/null
|
|
34
|
-
cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
35
|
-
cat .sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### 1.5 锚定确认(必须完成)
|
|
39
|
-
|
|
40
|
-
确认实际存在的文件(design / tasks),不存在的标注跳过。
|
|
41
|
-
|
|
42
|
-
### 2. 逐任务展开
|
|
43
|
-
|
|
44
|
-
把 tasks.md 每个 checkbox **保留 `- [ ]` 格式**并展开为任务描述,按 Wave 分组组织。工作区模式下每个 Task 标注所属项目。
|
|
45
|
-
|
|
46
|
-
**输出格式要求(必须严格遵守):**
|
|
47
|
-
|
|
48
|
-
```markdown
|
|
49
|
-
### Wave 1(并行,无依赖)
|
|
50
|
-
- [ ] 添加用户创建接口
|
|
51
|
-
- 修改: `UserController.java`、`UserService.java`
|
|
52
|
-
- 参考: `RoleController.createRole`
|
|
53
|
-
- 步骤:
|
|
54
|
-
1. 写测试 UserControllerTest.testCreateUser
|
|
55
|
-
2. 运行测试确认失败
|
|
56
|
-
3. 写 UserController.createUser
|
|
57
|
-
4. 运行测试确认通过
|
|
58
|
-
|
|
59
|
-
- [ ] 添加角色创建接口
|
|
60
|
-
- ...
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**每个 Task 必须保留 `- [ ]` checkbox,这是 execute 阶段勾选完成状态的依据。** 禁止写成纯文本列表。
|
|
64
|
-
|
|
65
|
-
**每个 Task 必须包含「步骤」字段,列出 TDD 执行顺序:**
|
|
66
|
-
- 1. 写测试 → 2. 运行确认失败 → 3. 写代码 → 4. 运行确认通过
|
|
67
|
-
|
|
68
|
-
**纯配置/数据/文档类任务可跳过 TDD,步骤简化为:1. 实现 → 2. 验证**
|
|
69
|
-
|
|
70
|
-
**注意:不需要写精确方法签名和代码示例。** 方法签名和代码风格由 execute 阶段先读后写确认。plan 专注"做什么"和"执行顺序"。
|
|
71
|
-
|
|
72
|
-
**每个 Task 包含:**
|
|
73
|
-
- 精确文件路径(修改哪个文件)
|
|
74
|
-
- 任务描述(做什么,一两句话说清楚)
|
|
75
|
-
- 涉及已有类调用时,标注参考文件(如"参考 `RoleController.createRole`)
|
|
76
|
-
- 依赖关系
|
|
77
|
-
|
|
78
|
-
**注意:不需要写精确方法签名和代码示例。** 方法签名和代码风格由 execute 阶段先读后写确认。plan 专注"做什么",execute 负责"怎么做"。
|
|
79
|
-
|
|
80
|
-
### 3. 标注执行顺序
|
|
81
|
-
|
|
82
|
-
按 Wave 分组,标注依赖关系:
|
|
83
|
-
```markdown
|
|
84
|
-
### Wave 1(并行,无依赖)
|
|
85
|
-
- [ ] 添加用户创建接口
|
|
86
|
-
- 修改: `UserController.java`、`UserService.java`
|
|
87
|
-
- 参考: `RoleController.createRole`
|
|
88
|
-
|
|
89
|
-
- [ ] 添加角色创建接口
|
|
90
|
-
- ...
|
|
91
|
-
|
|
92
|
-
### Wave 2(依赖 Wave 1)
|
|
93
|
-
- [ ] 添加用户列表查询(依赖用户创建完成)
|
|
94
|
-
- ...
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### 4. 保存
|
|
98
|
-
|
|
99
|
-
**直接覆盖** `.sillyspec/changes/<变更名>/tasks.md`。不再生成单独的 plan.md 文件。
|
|
100
|
-
|
|
101
|
-
### 5. 自检门控
|
|
102
|
-
|
|
103
|
-
- [ ] 每个 task 有具体文件路径?
|
|
104
|
-
- [ ] 标注了 Wave 和依赖关系?
|
|
105
|
-
|
|
106
|
-
### 6. 完成
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
sillyspec status --json && sillyspec next
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
更新 `.sillyspec/STATE.md`:阶段改为 `plan ✅`,下一步 `/sillyspec:execute`。
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
> **提示:** 通常不需要单独执行 propose。brainstorm 阶段会自动产出 design.md。仅当需求已经明确、跳过 brainstorm 时才手动执行 propose。
|
|
5
|
-
|
|
6
|
-
## 核心约束(必须遵守)
|
|
7
|
-
- ❌ 写实现代码
|
|
8
|
-
- ❌ tasks.md 写具体步骤(只列任务名)
|
|
9
|
-
- ❌ 编造表名、字段名、API 端点(必须来自 ARCHITECTURE.md 或明确标注"新增")
|
|
10
|
-
|
|
11
|
-
## 状态检查(必须先执行)
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
sillyspec status --json
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
- `phase: "propose"` → ✅ 继续
|
|
18
|
-
- 其他 phase → 提示 `sillyspec next`
|
|
19
|
-
|
|
20
|
-
## 变更名称
|
|
21
|
-
$ARGUMENTS
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## 流程
|
|
26
|
-
|
|
27
|
-
### 1. 加载上下文
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
cat .sillyspec/changes/*/MASTER.md 2>/dev/null # 子阶段变更
|
|
31
|
-
ls -t .sillyspec/knowledge/*.md | head -1
|
|
32
|
-
cat .sillyspec/{REQUIREMENTS}.md .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
33
|
-
ls .sillyspec/changes/ | grep -v archive
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
**子阶段变更(如 `name/stage-1`):** 读 MASTER.md 获取方向 + 前序经验 + 原型分析。规范保存到 `changes/<name>/stages/<stage-N>/`。
|
|
37
|
-
|
|
38
|
-
无设计文档 → 提示先 `/sillyspec:brainstorm`。
|
|
39
|
-
|
|
40
|
-
### 1.5 锚定确认(必须完成)
|
|
41
|
-
|
|
42
|
-
确认实际存在的文件。
|
|
43
|
-
|
|
44
|
-
### 2. 探索现有代码
|
|
45
|
-
|
|
46
|
-
理解相关模块当前实现,识别影响范围。
|
|
47
|
-
|
|
48
|
-
### 3. 生成规范文件
|
|
49
|
-
|
|
50
|
-
创建 `.sillyspec/changes/$ARGUMENTS/`:
|
|
51
|
-
|
|
52
|
-
**`design.md`:** 动机与范围、功能需求(REQ-001 格式、Given/When/Then 用户场景、非功能需求)、架构决策及理由、文件变更清单表格、数据模型、API 设计、**代码风格参照**(参考已有的 Controller/Service/Entity 源文件,标注返回值类型、异常类型、注解风格)
|
|
53
|
-
|
|
54
|
-
**`tasks.md`:** 准备 → 实现 → 收尾的任务列表(每个 task 标注文件路径)
|
|
55
|
-
|
|
56
|
-
### 4. 展示关键文件
|
|
57
|
-
|
|
58
|
-
展示 design.md 给用户审阅。tasks.md 只展示任务列表。
|
|
59
|
-
|
|
60
|
-
### 5. 自检门控
|
|
61
|
-
|
|
62
|
-
- [ ] design.md 含"动机、变更范围、功能需求"?
|
|
63
|
-
- [ ] design.md 含"文件变更清单"表格?
|
|
64
|
-
- [ ] design.md 含 Given/When/Then 用户场景?
|
|
65
|
-
- [ ] tasks.md 每个 task 有文件路径?
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
bash scripts/validate-proposal.sh .sillyspec/changes/$ARGUMENTS 2>/dev/null
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### 6. 完成
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
sillyspec status --json && sillyspec next
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
更新 `.sillyspec/STATE.md`:阶段改为 `propose ✅`,下一步 `/sillyspec:plan`。
|