sillyspec 3.7.13 → 3.7.15
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/skills/sillyspec-archive/SKILL.md +77 -0
- package/.claude/skills/sillyspec-brainstorm/SKILL.md +591 -0
- package/.claude/skills/sillyspec-continue/SKILL.md +44 -0
- package/.claude/skills/sillyspec-execute/SKILL.md +233 -0
- package/.claude/skills/sillyspec-explore/SKILL.md +96 -0
- package/.claude/skills/sillyspec-export/SKILL.md +53 -0
- package/.claude/skills/sillyspec-init/SKILL.md +171 -0
- package/.claude/skills/sillyspec-plan/SKILL.md +263 -0
- package/.claude/skills/sillyspec-propose/SKILL.md +248 -0
- package/.claude/skills/sillyspec-quick/SKILL.md +102 -0
- package/.claude/skills/sillyspec-resume/SKILL.md +111 -0
- package/{templates/scan.md → .claude/skills/sillyspec-scan/SKILL.md} +22 -60
- package/.claude/skills/sillyspec-state/SKILL.md +54 -0
- package/.claude/skills/sillyspec-status/SKILL.md +131 -0
- package/.claude/skills/sillyspec-verify/SKILL.md +146 -0
- package/.claude/skills/sillyspec-workspace/SKILL.md +149 -0
- package/.sillyspec/changes/run-command-design/design.md +1230 -0
- package/.sillyspec/docs/sillyspec/scan/.gitkeep +0 -0
- package/.sillyspec/knowledge/INDEX.md +8 -0
- package/.sillyspec/knowledge/uncategorized.md +3 -0
- package/.sillyspec/projects/sillyspec.yaml +3 -0
- package/README.md +4 -0
- package/logo.jpg +0 -0
- package/package.json +7 -1
- package/packages/dashboard/dist/assets/index-Bx0cgoK_.js +7446 -0
- package/packages/dashboard/dist/assets/index-DbkUSsNO.css +1 -0
- package/packages/dashboard/dist/favicon.jpg +0 -0
- package/packages/dashboard/dist/index.html +2 -2
- package/packages/dashboard/dist/logo.jpg +0 -0
- package/packages/dashboard/package-lock.json +220 -0
- package/packages/dashboard/package.json +8 -5
- package/packages/dashboard/public/favicon.jpg +0 -0
- package/packages/dashboard/public/logo.jpg +0 -0
- package/packages/dashboard/server/index.js +92 -4
- package/packages/dashboard/server/parser.js +252 -28
- package/packages/dashboard/src/App.vue +139 -9
- package/packages/dashboard/src/components/ActionBar.vue +23 -39
- package/packages/dashboard/src/components/CommandPalette.vue +40 -65
- package/packages/dashboard/src/components/DetailPanel.vue +68 -53
- package/packages/dashboard/src/components/DocPreview.vue +137 -20
- package/packages/dashboard/src/components/DocTree.vue +48 -26
- package/packages/dashboard/src/components/LogStream.vue +12 -32
- package/packages/dashboard/src/components/PipelineStage.vue +8 -8
- package/packages/dashboard/src/components/PipelineView.vue +35 -43
- package/packages/dashboard/src/components/ProjectList.vue +52 -77
- package/packages/dashboard/src/components/ProjectOverview.vue +178 -0
- package/packages/dashboard/src/components/StageBadge.vue +13 -13
- package/packages/dashboard/src/components/StepCard.vue +11 -11
- package/packages/dashboard/src/components/detail/DocsDetail.vue +48 -0
- package/packages/dashboard/src/components/detail/GitDetail.vue +61 -0
- package/packages/dashboard/src/components/detail/TechDetail.vue +43 -0
- package/packages/dashboard/src/main.js +4 -1
- package/packages/dashboard/src/style.css +13 -13
- package/src/index.js +55 -8
- package/src/init.js +66 -196
- package/src/migrate.js +1 -18
- package/src/progress.js +279 -281
- package/src/run.js +320 -0
- package/src/setup.js +1 -9
- package/src/stages/brainstorm.js +210 -0
- package/src/stages/execute.js +190 -0
- package/src/stages/index.js +22 -0
- package/src/stages/plan.js +118 -0
- package/src/stages/propose.js +115 -0
- package/src/stages/verify.js +98 -0
- package/packages/dashboard/dist/assets/index-5Rrvs0Rl.css +0 -1
- package/packages/dashboard/dist/assets/index-ZNToqi9V.js +0 -17
- package/templates/archive.md +0 -121
- package/templates/brainstorm.md +0 -246
- package/templates/commit.md +0 -123
- package/templates/continue.md +0 -32
- package/templates/execute.md +0 -314
- package/templates/explore.md +0 -60
- package/templates/export.md +0 -21
- package/templates/init.md +0 -61
- package/templates/plan.md +0 -157
- package/templates/progress-format.md +0 -90
- package/templates/propose.md +0 -73
- package/templates/quick.md +0 -135
- package/templates/resume-dialog.md +0 -55
- package/templates/resume.md +0 -53
- package/templates/scan-quick.md +0 -49
- package/templates/skills/playwright-e2e/SKILL.md +0 -340
- package/templates/status.md +0 -72
- package/templates/verify.md +0 -253
- package/templates/workspace-sync.md +0 -89
- package/templates/workspace.md +0 -67
- /package/.sillyspec/{docs/sillyspec/brainstorm → changes/brainstorm-archive}/2026-04-05-dashboard-design.md +0 -0
- /package/.sillyspec/{docs/sillyspec/brainstorm → changes/brainstorm-archive}/2026-04-05-unified-docs-design.md +0 -0
- /package/.sillyspec/{specs/2026-04-05-dashboard-design.md → changes/dashboard/design.md.braindraft} +0 -0
- /package/.sillyspec/{specs/2026-04-05-unified-docs-design.md → changes/unified-docs-design/design.md} +0 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:resume
|
|
3
|
+
description: 恢复工作 — 从中断处继续
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 交互规范
|
|
7
|
+
|
|
8
|
+
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
9
|
+
|
|
10
|
+
不要用编号列表让用户手动输入数字。
|
|
11
|
+
如果需要自由输入,在 AskUserQuestion 的选项中加入"Other(自定义输入)"。
|
|
12
|
+
|
|
13
|
+
你现在是 SillySpec 的恢复管理器。
|
|
14
|
+
|
|
15
|
+
## 流程
|
|
16
|
+
|
|
17
|
+
### 1. 读取 progress.json
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
sillyspec progress show 2>/dev/null
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 2. 如果有 progress.json
|
|
24
|
+
|
|
25
|
+
直接从 progress.json 中提取并展示:
|
|
26
|
+
|
|
27
|
+
> 🔄 工作状态恢复
|
|
28
|
+
>
|
|
29
|
+
> **当前变更**:<名称>
|
|
30
|
+
> **当前阶段**:<阶段名> <状态>
|
|
31
|
+
> **下一步**:<命令>
|
|
32
|
+
>
|
|
33
|
+
> **阶段进度**(大模块):
|
|
34
|
+
> | 阶段 | 状态 |
|
|
35
|
+
> |---|---|
|
|
36
|
+
> | stage-1 列表页 | ✅ |
|
|
37
|
+
> | stage-2 表单页 | 🔄 execute (2/6) |
|
|
38
|
+
> | stage-3 详情页 | ⬜ |
|
|
39
|
+
>
|
|
40
|
+
> **关键决策**:
|
|
41
|
+
> - xxx
|
|
42
|
+
>
|
|
43
|
+
> **下一步命令**:
|
|
44
|
+
> `/sillyspec:execute reward-punishment/stage-2`
|
|
45
|
+
|
|
46
|
+
**不需要执行 Git 操作或文件探测。** progress.json 已经包含所有信息。
|
|
47
|
+
|
|
48
|
+
使用 `sillyspec progress show` 查看。
|
|
49
|
+
|
|
50
|
+
然后问用户:
|
|
51
|
+
1. 直接继续执行下一步
|
|
52
|
+
2. 查看更多细节
|
|
53
|
+
|
|
54
|
+
### 3. 如果没有 progress.json
|
|
55
|
+
|
|
56
|
+
**不要直接说"没有记录"。** 自动探测项目状态:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# 检查主变更
|
|
60
|
+
ls .sillyspec/changes/*/MASTER.md 2>/dev/null
|
|
61
|
+
|
|
62
|
+
# 检查活跃变更
|
|
63
|
+
ls .d .sillyspec/changes/*/ | grep -v archive | grep -v stages | tail -1 2>/dev/null
|
|
64
|
+
|
|
65
|
+
# 检查子阶段
|
|
66
|
+
ls .sillyspec/changes/*/stages/*/proposal.md 2>/dev/null
|
|
67
|
+
|
|
68
|
+
# 检查代码库文档
|
|
69
|
+
ls .sillyspec/codebase/*.md 2>/dev/null
|
|
70
|
+
|
|
71
|
+
# 检查计划文件
|
|
72
|
+
ls -t .sillyspec/plans/*.md | head -1 2>/dev/null
|
|
73
|
+
|
|
74
|
+
# 检查需求/路线图
|
|
75
|
+
cat .sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
76
|
+
cat .sillyspec/ROADMAP.md 2>/dev/null
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
#### 如果检测到 MASTER.md(大模块)
|
|
80
|
+
|
|
81
|
+
检查各阶段状态并输出阶段进度表(同步骤 2 格式)。
|
|
82
|
+
|
|
83
|
+
同时**运行 `sillyspec progress init`**,将探测到的信息写入 progress.json,后续命令执行时会自动更新。
|
|
84
|
+
|
|
85
|
+
#### 如果是普通变更(无 MASTER.md)
|
|
86
|
+
|
|
87
|
+
根据探测结果推断:
|
|
88
|
+
|
|
89
|
+
| 探测到的文件 | 推断阶段 | 建议操作 |
|
|
90
|
+
|---|---|---|
|
|
91
|
+
| 无任何 .sillyspec/ 内容 | 未开始 | `/sillyspec:init` 或 `/sillyspec:scan` |
|
|
92
|
+
| 有 SCAN-RAW.md 但缺失文档 | 扫描中断 | `/sillyspec:scan --deep`(断点续扫) |
|
|
93
|
+
| 有 codebase/ 但文档不全(快扫 3 份缺失) | 快扫中断 | `/sillyspec:scan`(补全缺失文档) |
|
|
94
|
+
| 有 codebase/ 7 份齐全但无 changes/ | 已扫描,未开始需求 | `/sillyspec:brainstorm "想法"` |
|
|
95
|
+
| 有 REQUIREMENTS.md 但无 changes/ | 绿地项目,已有需求 | `/sillyspec:brainstorm "想法"` |
|
|
96
|
+
| changes/ 下有 proposal,无 tasks | 已有规范,待计划 | `/sillyspec:plan` |
|
|
97
|
+
| changes/ 下有 tasks,有未完成 checkbox | 执行中 | `/sillyspec:execute` |
|
|
98
|
+
| tasks.md 全部完成 | 待验证 | `/sillyspec:verify` |
|
|
99
|
+
|
|
100
|
+
**扫描中断检测逻辑:**
|
|
101
|
+
- 有 `SCAN-RAW.md` → 说明深度扫描预处理已完成,检查 7 份文档缺哪些
|
|
102
|
+
- 有部分 codebase 文档(如只有 STACK 和 STRUCTURE)→ 说明快扫或深扫中断
|
|
103
|
+
- 缺失的文档列表直接展示给用户,告知 `/sillyspec:scan` 会自动跳过已存在的文档
|
|
104
|
+
|
|
105
|
+
**同时运行 `sillyspec progress init`** 记录推断的状态。
|
|
106
|
+
|
|
107
|
+
### 4. 关键原则
|
|
108
|
+
|
|
109
|
+
- **不需要 HANDOFF.json**。progress.json 是唯一的恢复数据源。
|
|
110
|
+
- **progress.json 不需要 Git 提交**(已在 .runtime/ 下,被 .gitignore 忽略)。
|
|
111
|
+
- **每次命令执行完自动更新 progress.json**(通过 `sillyspec progress` CLI),不需要用户手动保存。
|
|
@@ -8,20 +8,13 @@
|
|
|
8
8
|
- `--deep` → 直接深度扫描
|
|
9
9
|
- 其他 → 快速扫描该区域
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## 流程控制(必须先执行)
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
|
|
14
|
+
sillyspec status --json
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
basename $(cat .sillyspec/projects/*.yaml 2>/dev/null | head -1) .yaml || basename $(pwd)
|
|
20
|
-
```
|
|
21
|
-
从 STATE.md 或 `projects/` 目录确定当前项目名,后续路径为 `.sillyspec/docs/<project>/`。
|
|
22
|
-
|
|
23
|
-
有 STATE.md 且 phase 为 `scan` 或未记录 → 继续。
|
|
24
|
-
其他 phase → STATE.md 中记录的下一步命令为准。
|
|
17
|
+
非 `init` phase → 以 CLI 返回为准决定下一步。
|
|
25
18
|
|
|
26
19
|
---
|
|
27
20
|
|
|
@@ -30,9 +23,9 @@ basename $(cat .sillyspec/projects/*.yaml 2>/dev/null | head -1) .yaml || basena
|
|
|
30
23
|
### 检查工作区 & 已有文档
|
|
31
24
|
|
|
32
25
|
```bash
|
|
33
|
-
|
|
34
|
-
ls
|
|
35
|
-
wc -l
|
|
26
|
+
ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q . # 有 .yaml → 工作区模式
|
|
27
|
+
ls docs/*/scan/ 2>/dev/null # 检查已有文档
|
|
28
|
+
wc -l docs/*/scan/*.md 2>/dev/null
|
|
36
29
|
```
|
|
37
30
|
|
|
38
31
|
- 已有 3 份 → 建议升级深度扫描
|
|
@@ -51,19 +44,23 @@ cat package.json pom.xml build.gradle go.mod Cargo.toml requirements.txt pyproje
|
|
|
51
44
|
find . -maxdepth 2 -name "*.config.*" -not -path "*/node_modules/*" -not -path "*/.git/*" | head -20 | xargs cat 2>/dev/null
|
|
52
45
|
```
|
|
53
46
|
|
|
54
|
-
结果保存到
|
|
47
|
+
结果保存到 `docs/<project>/scan/_env-detect.md`(临时文件,扫描完删除)。
|
|
55
48
|
|
|
56
49
|
---
|
|
57
50
|
|
|
58
51
|
## 深度扫描
|
|
59
52
|
|
|
60
|
-
|
|
53
|
+
```bash
|
|
54
|
+
PROJECT=$(python3 -c "import sys,json; print(json.load(open('.sillyspec/.runtime/progress.json')).get('project',''))" 2>/dev/null || basename "$(pwd)")
|
|
55
|
+
mkdir -p docs/${PROJECT}/scan
|
|
56
|
+
```
|
|
61
57
|
|
|
62
58
|
### 断点续扫
|
|
63
59
|
|
|
64
60
|
```bash
|
|
61
|
+
PROJECT=$(python3 -c "import sys,json; print(json.load(open('.sillyspec/.runtime/progress.json')).get('project',''))" 2>/dev/null || basename "$(pwd)")
|
|
65
62
|
for f in ARCHITECTURE STRUCTURE CONVENTIONS INTEGRATIONS TESTING CONCERNS PROJECT; do
|
|
66
|
-
[ -f "
|
|
63
|
+
[ -f "docs/${PROJECT}/scan/${f}.md" ] && echo "✅ ${f}.md" || echo "⬜ ${f}.md"
|
|
67
64
|
done
|
|
68
65
|
```
|
|
69
66
|
|
|
@@ -115,55 +112,20 @@ TESTING.md 含测试结构。CONCERNS.md 按严重程度分组。PROJECT.md 含
|
|
|
115
112
|
|
|
116
113
|
```bash
|
|
117
114
|
# 路径校验
|
|
115
|
+
PROJECT=$(python3 -c "import sys,json; print(json.load(open('.sillyspec/.runtime/progress.json')).get('project',''))" 2>/dev/null || basename "$(pwd)")
|
|
118
116
|
for f in ARCHITECTURE STRUCTURE CONVENTIONS INTEGRATIONS TESTING CONCERNS PROJECT; do
|
|
119
|
-
[ -f "
|
|
117
|
+
[ -f "docs/${PROJECT}/scan/${f}.md" ] && echo "✅ ${f}.md"
|
|
120
118
|
done
|
|
121
119
|
|
|
122
|
-
#
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
cat > .sillyspec/knowledge/INDEX.md << 'EOF'
|
|
126
|
-
# Knowledge Index
|
|
127
|
-
|
|
128
|
-
> 子代理任务开始前查询此文件,按关键词匹配,只读命中的知识文件。
|
|
129
|
-
> execute/quick 执行中发现的坑自动追加到 uncategorized.md,经用户确认后归类到对应文件。
|
|
130
|
-
|
|
131
|
-
<!-- 格式:关键词1|关键词2|关键词3 → 文件路径 -->
|
|
132
|
-
<!-- 示例:mybatis-plus|分页|Page → pagination.md -->
|
|
133
|
-
<!-- 示例:跨域|CORS|preflight → cors.md -->
|
|
134
|
-
EOF
|
|
135
|
-
fi
|
|
136
|
-
if [ ! -f ".sillyspec/knowledge/uncategorized.md" ]; then
|
|
137
|
-
cat > .sillyspec/knowledge/uncategorized.md << 'EOF'
|
|
138
|
-
# 未分类知识
|
|
120
|
+
# 验证 CLI
|
|
121
|
+
sillyspec status --json # 应返回 phase: "brainstorm"
|
|
122
|
+
sillyspec next # 推荐给用户
|
|
139
123
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
fi
|
|
144
|
-
|
|
145
|
-
# 更新状态
|
|
146
|
-
cat > .sillyspec/STATE.md << 'EOF'
|
|
147
|
-
# 项目状态
|
|
148
|
-
|
|
149
|
-
## 当前阶段
|
|
150
|
-
- 阶段:scan ✅
|
|
151
|
-
- 下一步:/sillyspec:brainstorm
|
|
152
|
-
|
|
153
|
-
## 关键决策
|
|
154
|
-
- (扫描中发现的技术决策)
|
|
155
|
-
|
|
156
|
-
## 历史记录
|
|
157
|
-
- $(date '+%Y-%m-%d %H:%M:%S') scan 完成
|
|
158
|
-
EOF
|
|
159
|
-
|
|
160
|
-
# 清理
|
|
161
|
-
rm -f .sillyspec/docs/<project>/scan/_env-detect.md
|
|
162
|
-
git add .sillyspec/
|
|
124
|
+
# 清理 + 提交
|
|
125
|
+
rm -f docs/${PROJECT}/scan/_env-detect.md
|
|
126
|
+
git add . && git commit -m "chore: sillyspec scan - codebase mapped"
|
|
163
127
|
```
|
|
164
128
|
|
|
165
|
-
💡 扫描产出已暂存。准备好后用 `/sillyspec:commit` 提交。
|
|
166
|
-
|
|
167
129
|
### 自检门控
|
|
168
130
|
- [ ] ARCHITECTURE.md:技术栈 + Schema 摘要?
|
|
169
131
|
- [ ] CONVENTIONS.md:隐形规则 + 代码风格?
|
|
@@ -175,4 +137,4 @@ git add .sillyspec/
|
|
|
175
137
|
|
|
176
138
|
## 绝对规则
|
|
177
139
|
- ❌ 修改代码 / 编造路径 / 主代理读源码全文
|
|
178
|
-
- ✅ 交互模式每步等用户 / 文档只写
|
|
140
|
+
- ✅ 交互模式每步等用户 / 文档只写 `docs/<project>/scan/`
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:state
|
|
3
|
+
description: 查看当前工作状态 — 显示 progress.json 内容
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
你现在是 SillySpec 的状态查看器。
|
|
7
|
+
|
|
8
|
+
## 流程
|
|
9
|
+
|
|
10
|
+
### 1. 读取 progress.json
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
sillyspec progress show 2>/dev/null
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### 2. 如果有 progress.json
|
|
17
|
+
|
|
18
|
+
格式化展示当前状态:
|
|
19
|
+
|
|
20
|
+
> 📊 当前状态
|
|
21
|
+
>
|
|
22
|
+
> **变更**:<名称>
|
|
23
|
+
> **阶段**:<当前阶段>
|
|
24
|
+
> **进度**:<具体进度>
|
|
25
|
+
> **下一步**:<命令>
|
|
26
|
+
>
|
|
27
|
+
> **阶段进度**(大模块):
|
|
28
|
+
> (显示各阶段状态表)
|
|
29
|
+
>
|
|
30
|
+
> **关键决策**:
|
|
31
|
+
> - xxx
|
|
32
|
+
>
|
|
33
|
+
> **阻塞项**:
|
|
34
|
+
> - xxx(如无则省略)
|
|
35
|
+
|
|
36
|
+
### 3. 如果没有 progress.json
|
|
37
|
+
|
|
38
|
+
提示用户项目还没有开始,或 progress.json 尚未生成:
|
|
39
|
+
|
|
40
|
+
> 📊 还没有工作记录。
|
|
41
|
+
>
|
|
42
|
+
> 开始使用:
|
|
43
|
+
> - 新项目:`/sillyspec:init`
|
|
44
|
+
> - 已有项目:`/sillyspec:scan`
|
|
45
|
+
> - 恢复中断的工作:`/sillyspec:resume`
|
|
46
|
+
>
|
|
47
|
+
> progress.json 会在 `sillyspec init` 时自动创建。
|
|
48
|
+
|
|
49
|
+
### 注意
|
|
50
|
+
|
|
51
|
+
- 这是只读命令,**不修改任何文件**
|
|
52
|
+
- `/sillyspec:status` 查看项目整体进度(change 文件级别)
|
|
53
|
+
- `/sillyspec:state` 查看当前工作状态(progress.json 级别)
|
|
54
|
+
- 两者互补:status 看"有什么",state 看"在做什么"
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:status
|
|
3
|
+
description: 查看项目进度和状态
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
你现在是 SillySpec 的状态检查器。
|
|
9
|
+
|
|
10
|
+
## 流程
|
|
11
|
+
|
|
12
|
+
### 0: 检查工作区模式
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**如果是工作区模式:**
|
|
19
|
+
|
|
20
|
+
1. 读取 projects/*.yaml 获取子项目列表:
|
|
21
|
+
```bash
|
|
22
|
+
for f in .sillyspec/projects/*.yaml; do
|
|
23
|
+
[ -f "$f" ] || continue
|
|
24
|
+
proj_name=$(basename "$f" .yaml)
|
|
25
|
+
proj_path=$(grep '^path:' "$f" | head -1 | sed 's/^path:[[:space:]]*//')
|
|
26
|
+
done
|
|
27
|
+
```
|
|
28
|
+
2. 对每个子项目执行 Step 1-5 的检查(在子项目目录下)
|
|
29
|
+
3. 检查共享规范:
|
|
30
|
+
```bash
|
|
31
|
+
ls .sillyspec/shared/ 2>/dev/null
|
|
32
|
+
```
|
|
33
|
+
4. 检查工作区概览:
|
|
34
|
+
```bash
|
|
35
|
+
ls .sillyspec/workspace/ 2>/dev/null
|
|
36
|
+
```
|
|
37
|
+
5. 输出汇总:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
🏢 工作区状态
|
|
41
|
+
|
|
42
|
+
📦 子项目:
|
|
43
|
+
|
|
44
|
+
✅ frontend ./frontend
|
|
45
|
+
📋 项目:已初始化
|
|
46
|
+
📂 代码库:已扫描(7 份文档)
|
|
47
|
+
🔄 进行中:1 个变更
|
|
48
|
+
- [user-auth] Phase 3 (Execute) — tasks 5/8
|
|
49
|
+
✅ 已归档:3 个变更
|
|
50
|
+
|
|
51
|
+
⚠️ backend ./backend
|
|
52
|
+
📋 项目:已初始化
|
|
53
|
+
📂 代码库:未扫描
|
|
54
|
+
🔄 进行中:0 个变更
|
|
55
|
+
|
|
56
|
+
📄 共享规范:2 份
|
|
57
|
+
- api-contract.md
|
|
58
|
+
- data-models.md
|
|
59
|
+
|
|
60
|
+
💡 下一步:
|
|
61
|
+
- 扫描 backend:/sillyspec:scan backend
|
|
62
|
+
- 继续开发:/sillyspec:continue
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
然后结束,不执行下面的单项目流程。
|
|
66
|
+
|
|
67
|
+
**如果不是工作区模式:** 继续下面的单项目流程。
|
|
68
|
+
|
|
69
|
+
### 1. 项目基础
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
cat .sillyspec/PROJECT.md 2>/dev/null || echo "未初始化"
|
|
73
|
+
PROJECT=$(python3 -c "import sys,json; print(json.load(open('.sillyspec/.runtime/progress.json')).get('project',''))" 2>/dev/null || basename "$(pwd)")
|
|
74
|
+
ls docs/${PROJECT}/scan/ 2>/dev/null | head -10
|
|
75
|
+
cat .sillyspec/REQUIREMENTS.md 2>/dev/null | head -20
|
|
76
|
+
cat .sillyspec/ROADMAP.md 2>/dev/null
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 2. 进行中的变更
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
ls .sillyspec/changes/ 2>/dev/null | grep -v archive
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
对每个进行中的变更,检查文件完成度:
|
|
86
|
+
- proposal.md ✅/❌
|
|
87
|
+
- design.md ✅/❌
|
|
88
|
+
- specs/requirements.md ✅/❌
|
|
89
|
+
- tasks.md — X/Y 完成
|
|
90
|
+
- 对应计划 .sillyspec/plans/ ✅/❌
|
|
91
|
+
|
|
92
|
+
### 3. 归档历史
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
ls .sillyspec/changes/archive/ 2>/dev/null | wc -l
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 4. 中断状态
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
cat .sillyspec/HANDOFF.json 2>/dev/null
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 5. 代码库文档
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
PROJECT=$(python3 -c "import sys,json; print(json.load(open('.sillyspec/.runtime/progress.json')).get('project',''))" 2>/dev/null || basename "$(pwd)")
|
|
108
|
+
ls docs/${PROJECT}/scan/ 2>/dev/null
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 6. 输出
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
📊 SillySpec 状态
|
|
115
|
+
|
|
116
|
+
📋 项目:xxx(已初始化 / 未初始化)
|
|
117
|
+
📂 代码库:已扫描(7 份文档)/ 未扫描
|
|
118
|
+
|
|
119
|
+
🔄 进行中:N 个变更
|
|
120
|
+
- [change-1] Phase 3 (Execute) — tasks 5/8
|
|
121
|
+
- [change-2] Phase 2 (Propose) — 缺少 design.md
|
|
122
|
+
|
|
123
|
+
✅ 已归档:N 个变更
|
|
124
|
+
📝 设计文档:N 份
|
|
125
|
+
📝 实现计划:N 份
|
|
126
|
+
|
|
127
|
+
💡 下一步:/sillyspec:continue
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## 绝对规则
|
|
131
|
+
- 不修改任何文件
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:verify
|
|
3
|
+
description: 验证实现 — 对照规范检查 + 测试套件
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **可选阶段。** execute 完成后会询问是否需要 verify,也可以手动调用。
|
|
7
|
+
|
|
8
|
+
你现在是 SillySpec 的验证器。
|
|
9
|
+
|
|
10
|
+
## 🛑 流程控制(必须先执行)
|
|
11
|
+
|
|
12
|
+
**在开始任何工作之前,先调用 SillySpec CLI 检查当前状态:**
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
sillyspec status --json
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**根据 CLI 返回的 phase 决定是否允许执行 verify:**
|
|
19
|
+
- `phase: "verify"` → ✅ 可以继续
|
|
20
|
+
- 其他 phase → ❌ 不允许跳步,提示用户运行 `sillyspec next` 获取正确步骤
|
|
21
|
+
|
|
22
|
+
**不要跳过状态检查。不要自己推断阶段。以 CLI 为准。**
|
|
23
|
+
|
|
24
|
+
## 流程
|
|
25
|
+
|
|
26
|
+
### 1. 加载规范
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
|
|
30
|
+
cat "$LATEST/proposal.md"
|
|
31
|
+
cat "$LATEST/design.md"
|
|
32
|
+
cat "$LATEST/tasks.md"
|
|
33
|
+
cat "$LATEST/specs/requirements.md" 2>/dev/null
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 1.5 锚定确认(必须完成)
|
|
37
|
+
|
|
38
|
+
读取相关规范文件。对于存在的文件,确认理解;对于不存在的文件,标注跳过:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
已读取并理解:
|
|
42
|
+
- [x] proposal.md — 变更动机和范围(如果存在)
|
|
43
|
+
- [x] design.md — 技术方案和文件变更(如果存在)
|
|
44
|
+
- [x] tasks.md — 实现清单(如果存在)
|
|
45
|
+
- [x] specs/requirements.md — 需求和场景(如果存在)
|
|
46
|
+
|
|
47
|
+
所有可用上下文已加载,开始验证。
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**文件不存在不是错误**。只确认实际存在的文件。不准跳过此步骤。
|
|
51
|
+
|
|
52
|
+
### 2. 逐项检查 tasks.md
|
|
53
|
+
|
|
54
|
+
对每个 checkbox 报告状态:
|
|
55
|
+
- ✅ 已完成 / ❌ 未完成 / ⚠️ 部分完成
|
|
56
|
+
|
|
57
|
+
### 3. 对照 design.md
|
|
58
|
+
|
|
59
|
+
- 架构决策是否遵循?
|
|
60
|
+
- 文件变更清单是否一致?
|
|
61
|
+
- 数据模型是否符合?
|
|
62
|
+
- API 设计是否符合?
|
|
63
|
+
|
|
64
|
+
### 4. 运行完整测试套件(fresh run)
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# 根据项目技术栈运行
|
|
68
|
+
pnpm test 2>/dev/null || npm test 2>/dev/null || pytest 2>/dev/null || go test ./... 2>/dev/null
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
记录通过/失败数量。如有失败,分析原因。
|
|
72
|
+
|
|
73
|
+
### 5. 代码质量扫描
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# 搜索技术债务标记
|
|
77
|
+
grep -r "TODO\|FIXME\|HACK\|XXX" src/ lib/ app/ --include="*.ts" --include="*.tsx" --include="*.py" --include="*.js" 2>/dev/null | head -20
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 6. 输出验证报告
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
# SillySpec 验证报告
|
|
84
|
+
|
|
85
|
+
## 任务完成度
|
|
86
|
+
- [x] Task 1: xxx ✅
|
|
87
|
+
- [x] Task 2: xxx ✅
|
|
88
|
+
- [ ] Task 3: xxx ❌ 未实现
|
|
89
|
+
完成度:2/3
|
|
90
|
+
|
|
91
|
+
## 设计一致性
|
|
92
|
+
- ✅ 架构决策遵循
|
|
93
|
+
- ⚠️ API 返回格式与 design.md 略有差异(缺少 error 字段)
|
|
94
|
+
|
|
95
|
+
## 测试结果
|
|
96
|
+
- passed: 42, failed: 3
|
|
97
|
+
|
|
98
|
+
## 技术债务标记
|
|
99
|
+
- src/auth/login.ts:15 // TODO: add rate limiting
|
|
100
|
+
- src/auth/login.ts:45 // FIXME: token expiry
|
|
101
|
+
|
|
102
|
+
## 结论
|
|
103
|
+
⚠️ PASS WITH NOTES
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## 脚本校验(硬验证)
|
|
107
|
+
|
|
108
|
+
在输出验证报告之前,运行综合校验脚本:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
bash scripts/validate-all.sh
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
将脚本输出纳入验证报告中的"设计一致性"部分。
|
|
115
|
+
|
|
116
|
+
### 7. 最后说:
|
|
117
|
+
|
|
118
|
+
**用 CLI 验证并获取下一步:**
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
sillyspec status --json
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
展示结果给用户,然后:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
sillyspec next
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
将 CLI 返回的命令推荐给用户。**不要自己编建议。**
|
|
131
|
+
|
|
132
|
+
### 8. 更新 progress.json
|
|
133
|
+
|
|
134
|
+
verify 完成后,**必须自动更新进度**:
|
|
135
|
+
```bash
|
|
136
|
+
sillyspec progress complete-stage verify
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
- 当前阶段改为 `verify ✅` 或 `verify ⚠️`
|
|
140
|
+
- 下一步改为 `/sillyspec:archive`(PASS 时)或 `修复后重新 /sillyspec:verify`
|
|
141
|
+
- 如果是子阶段,更新阶段进度;如果全部阶段完成,下一步改为 `/sillyspec:archive`
|
|
142
|
+
- 历史记录追加时间 + 验证结果
|
|
143
|
+
|
|
144
|
+
## 绝对规则
|
|
145
|
+
- 不修改任何代码
|
|
146
|
+
- 只做检查和报告
|