sillyspec 3.8.5 → 3.8.7

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.
Files changed (163) hide show
  1. package/README.md +0 -6
  2. package/docs/.vitepress/config.mts +45 -0
  3. package/docs/.vitepress/dist/404.html +25 -0
  4. package/docs/.vitepress/dist/assets/app.YytxICdd.js +1 -0
  5. package/docs/.vitepress/dist/assets/chunks/framework.Czhw_PXq.js +19 -0
  6. package/docs/.vitepress/dist/assets/chunks/theme.DusTRZQk.js +1 -0
  7. package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.js +1 -0
  8. package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.lean.js +1 -0
  9. package/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  10. package/docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  11. package/docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  12. package/docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  13. package/docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  14. package/docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  15. package/docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  16. package/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  17. package/docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  18. package/docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  19. package/docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  20. package/docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  21. package/docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  22. package/docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  23. package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.js +15 -0
  24. package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.lean.js +1 -0
  25. package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.js +4 -0
  26. package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.lean.js +1 -0
  27. package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.js +1 -0
  28. package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.lean.js +1 -0
  29. package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.js +4 -0
  30. package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.lean.js +1 -0
  31. package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.js +5 -0
  32. package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.lean.js +1 -0
  33. package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.js +28 -0
  34. package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.lean.js +1 -0
  35. package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.js +30 -0
  36. package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.lean.js +1 -0
  37. package/docs/.vitepress/dist/assets/style.DFTx90Kk.css +1 -0
  38. package/docs/.vitepress/dist/hashmap.json +1 -0
  39. package/docs/.vitepress/dist/index.html +28 -0
  40. package/docs/.vitepress/dist/sillyspec/commands.html +42 -0
  41. package/docs/.vitepress/dist/sillyspec/dashboard.html +31 -0
  42. package/docs/.vitepress/dist/sillyspec/file-io.html +28 -0
  43. package/docs/.vitepress/dist/sillyspec/getting-started.html +31 -0
  44. package/docs/.vitepress/dist/sillyspec/install.html +32 -0
  45. package/docs/.vitepress/dist/sillyspec/lifecycle.html +55 -0
  46. package/docs/.vitepress/dist/sillyspec/structure.html +57 -0
  47. package/docs/.vitepress/dist/vp-icons.css +1 -0
  48. package/docs/index.md +34 -0
  49. package/docs/sillyspec/commands.md +218 -0
  50. package/docs/sillyspec/dashboard.md +51 -0
  51. package/docs/sillyspec/file-io.md +34 -0
  52. package/docs/sillyspec/getting-started.md +61 -0
  53. package/docs/sillyspec/install.md +51 -0
  54. package/docs/sillyspec/lifecycle.md +146 -0
  55. package/docs/sillyspec/structure.md +62 -0
  56. package/package.json +11 -9
  57. package/packages/dashboard/dist/assets/index-Bh-GPjKY.css +1 -0
  58. package/packages/dashboard/dist/assets/index-CrCn5Gg6.js +17 -0
  59. package/packages/dashboard/dist/index.html +2 -2
  60. package/packages/dashboard/package-lock.json +0 -220
  61. package/packages/dashboard/package.json +5 -8
  62. package/packages/dashboard/server/index.js +106 -255
  63. package/packages/dashboard/server/parser.js +29 -333
  64. package/packages/dashboard/server/watcher.js +131 -203
  65. package/packages/dashboard/src/App.vue +10 -181
  66. package/packages/dashboard/src/components/ActionBar.vue +42 -26
  67. package/packages/dashboard/src/components/CommandPalette.vue +65 -40
  68. package/packages/dashboard/src/components/DetailPanel.vue +53 -68
  69. package/packages/dashboard/src/components/LogStream.vue +33 -13
  70. package/packages/dashboard/src/components/PipelineStage.vue +8 -8
  71. package/packages/dashboard/src/components/PipelineView.vue +45 -80
  72. package/packages/dashboard/src/components/ProjectList.vue +45 -103
  73. package/packages/dashboard/src/components/StageBadge.vue +13 -13
  74. package/packages/dashboard/src/components/StepCard.vue +15 -15
  75. package/packages/dashboard/src/composables/useDashboard.js +6 -20
  76. package/packages/dashboard/src/composables/useKeyboard.js +4 -6
  77. package/packages/dashboard/src/main.js +1 -4
  78. package/packages/dashboard/src/style.css +17 -17
  79. package/src/index.js +12 -123
  80. package/src/init.js +227 -86
  81. package/src/setup.js +9 -1
  82. package/templates/archive.md +120 -0
  83. package/templates/brainstorm.md +170 -0
  84. package/{.claude/skills/sillyspec-commit/SKILL.md → templates/commit.md} +45 -29
  85. package/templates/continue.md +32 -0
  86. package/templates/execute.md +304 -0
  87. package/templates/explore.md +59 -0
  88. package/templates/export.md +21 -0
  89. package/templates/init.md +61 -0
  90. package/templates/plan.md +146 -0
  91. package/templates/quick.md +135 -0
  92. package/templates/scan-quick.md +49 -0
  93. package/templates/scan.md +156 -0
  94. package/templates/skills/playwright-e2e/SKILL.md +340 -0
  95. package/templates/status.md +75 -0
  96. package/templates/verify.md +236 -0
  97. package/templates/workspace-sync.md +99 -0
  98. package/templates/workspace.md +70 -0
  99. package/.claude/skills/sillyspec-archive/SKILL.md +0 -17
  100. package/.claude/skills/sillyspec-auto/SKILL.md +0 -77
  101. package/.claude/skills/sillyspec-brainstorm/SKILL.md +0 -17
  102. package/.claude/skills/sillyspec-continue/SKILL.md +0 -44
  103. package/.claude/skills/sillyspec-doctor/SKILL.md +0 -22
  104. package/.claude/skills/sillyspec-execute/SKILL.md +0 -17
  105. package/.claude/skills/sillyspec-explore/SKILL.md +0 -96
  106. package/.claude/skills/sillyspec-export/SKILL.md +0 -53
  107. package/.claude/skills/sillyspec-init/SKILL.md +0 -170
  108. package/.claude/skills/sillyspec-plan/SKILL.md +0 -52
  109. package/.claude/skills/sillyspec-propose/SKILL.md +0 -17
  110. package/.claude/skills/sillyspec-quick/SKILL.md +0 -17
  111. package/.claude/skills/sillyspec-resume/SKILL.md +0 -111
  112. package/.claude/skills/sillyspec-scan/SKILL.md +0 -17
  113. package/.claude/skills/sillyspec-state/SKILL.md +0 -54
  114. package/.claude/skills/sillyspec-status/SKILL.md +0 -17
  115. package/.claude/skills/sillyspec-verify/SKILL.md +0 -17
  116. package/.claude/skills/sillyspec-workspace/SKILL.md +0 -149
  117. package/.sillyspec/changes/archive/2026-04-08-derive-state/design.md +0 -97
  118. package/.sillyspec/changes/archive/2026-04-08-derive-state/plan.md +0 -51
  119. package/.sillyspec/changes/archive/2026-04-08-derive-state/proposal.md +0 -29
  120. package/.sillyspec/changes/archive/2026-04-08-derive-state/requirements.md +0 -34
  121. package/.sillyspec/changes/archive/2026-04-08-derive-state/tasks.md +0 -13
  122. package/.sillyspec/changes/archive/2026-04-08-derive-state/verify-result.md +0 -43
  123. package/.sillyspec/changes/auto-mode/design.md +0 -50
  124. package/.sillyspec/changes/auto-mode/proposal.md +0 -19
  125. package/.sillyspec/changes/auto-mode/requirements.md +0 -21
  126. package/.sillyspec/changes/auto-mode/tasks.md +0 -7
  127. package/.sillyspec/changes/brainstorm-archive/2026-04-05-unified-docs-design.md +0 -199
  128. package/.sillyspec/changes/dashboard/design.md.braindraft +0 -206
  129. package/.sillyspec/changes/run-command-design/design.md +0 -1230
  130. package/.sillyspec/changes/unified-docs-design/design.md +0 -199
  131. package/.sillyspec/docs/sillyspec/scan/.gitkeep +0 -0
  132. package/.sillyspec/knowledge/INDEX.md +0 -8
  133. package/.sillyspec/knowledge/uncategorized.md +0 -3
  134. package/.sillyspec/projects/sillyspec.yaml +0 -3
  135. package/packages/dashboard/dist/assets/index-D1EVTLmc.js +0 -7446
  136. package/packages/dashboard/dist/assets/index-DGe8CqeP.css +0 -1
  137. package/packages/dashboard/public/logo.jpg +0 -0
  138. package/packages/dashboard/src/components/DocPreview.vue +0 -160
  139. package/packages/dashboard/src/components/DocTree.vue +0 -58
  140. package/packages/dashboard/src/components/ProjectOverview.vue +0 -178
  141. package/packages/dashboard/src/components/detail/DocsDetail.vue +0 -48
  142. package/packages/dashboard/src/components/detail/GitDetail.vue +0 -61
  143. package/packages/dashboard/src/components/detail/TechDetail.vue +0 -43
  144. package/src/derive.js +0 -147
  145. package/src/migrate.js +0 -117
  146. package/src/progress.js +0 -495
  147. package/src/run.js +0 -640
  148. package/src/stages/archive.js +0 -54
  149. package/src/stages/brainstorm.js +0 -239
  150. package/src/stages/doctor.js +0 -312
  151. package/src/stages/execute.js +0 -259
  152. package/src/stages/index.js +0 -35
  153. package/src/stages/plan.js +0 -259
  154. package/src/stages/propose.js +0 -115
  155. package/src/stages/quick.js +0 -64
  156. package/src/stages/scan.js +0 -141
  157. package/src/stages/status.js +0 -65
  158. package/src/stages/verify.js +0 -135
  159. /package/.sillyspec/{changes/brainstorm-archive → specs}/2026-04-05-dashboard-design.md +0 -0
  160. /package/{packages/dashboard → docs/.vitepress}/dist/favicon.jpg +0 -0
  161. /package/{logo.jpg → docs/.vitepress/dist/logo.jpg} +0 -0
  162. /package/{packages/dashboard → docs}/public/favicon.jpg +0 -0
  163. /package/{packages/dashboard/dist → docs/public}/logo.jpg +0 -0
@@ -0,0 +1,99 @@
1
+ ## 交互规范
2
+ **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
3
+
4
+ ## 核心约束(必须遵守)
5
+ - ❌ 修改子项目的代码
6
+ - ❌ 删除已有文件(clone 前必须确认)
7
+ - ❌ 跳过冲突检查直接覆盖
8
+
9
+ ## 流程
10
+
11
+ ### Step 1: 读取配置
12
+
13
+ ```bash
14
+ ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
15
+ ```
16
+
17
+ 无子项目配置 → 提示先执行 `/sillyspec:workspace` 初始化工作区。
18
+
19
+ ### Step 2: 逐个子项目检查
20
+
21
+ 对每个子项目配置文件,按顺序执行:
22
+
23
+ ```bash
24
+ for f in .sillyspec/projects/*.yaml; do
25
+ [ -f "$f" ] || continue
26
+ proj_name=$(basename "$f" .yaml)
27
+ proj_path=$(grep '^path:' "$f" | head -1 | sed 's/^path:[[:space:]]*//')
28
+ proj_repo=$(grep '^repo:' "$f" | head -1 | sed 's/^repo:[[:space:]]*//')
29
+ # ... 检查逻辑
30
+ done
31
+ ```
32
+
33
+ ```bash
34
+ # 检查目录是否存在
35
+ ls -d <path> 2>/dev/null && echo "EXISTS" || echo "MISSING"
36
+ ```
37
+
38
+ #### 情况 A:目录不存在
39
+
40
+ ```bash
41
+ # 检查是否有 repo 配置
42
+ grep '^repo:' .sillyspec/projects/<name>.yaml
43
+ ```
44
+
45
+ - **有 repo** → AskUserQuestion:"子项目 `<name>` 不存在,是否从 `<repo>` clone 到 `<path>`?"
46
+ - 用户确认 → `git clone <repo> <path>` → ✅ 成功
47
+ - clone 失败 → ❌ 报错,提示用户手动 clone
48
+ - **无 repo** → ⚠️ 提示用户:"子项目 `<name>` 不存在且无 repo 配置,请手动放置到 `<path>`"
49
+
50
+ #### 情况 B:目录已存在
51
+
52
+ ```bash
53
+ # 检查是否是 git 仓库
54
+ git -C <path> rev-parse --is-inside-work-tree 2>/dev/null
55
+
56
+ # 如果是,检查 remote 是否匹配
57
+ git -C <path> remote get-url origin 2>/dev/null
58
+ ```
59
+
60
+ - **不是 git 仓库** → AskUserQuestion:"目录 `<path>` 存在但不是 git 仓库,可能和其他项目冲突。"
61
+ - 跳过此子项目
62
+ - 让用户指定正确路径
63
+ - **是 git 仓库,remote 匹配 repo** → ✅ 跳过,状态正常
64
+ - **是 git 仓库,remote 不匹配 repo** → ⚠️ AskUserQuestion:
65
+ - "目录 `<path>` 是 git 仓库但 remote 不匹配(期望 `<repo>`,实际 `<actual>`)。可能是不同项目。"
66
+ - 跳过 / 用户确认覆盖
67
+
68
+ #### 情况 C:路径冲突
69
+
70
+ 检查两个子项目的 path 是否指向同一目录或互相包含:
71
+
72
+ ```bash
73
+ # 将相对路径转为绝对路径后比较
74
+ realpath <path1>
75
+ realpath <path2>
76
+ ```
77
+
78
+ 冲突 → ❌ 报错:"子项目 A 和 B 的路径冲突,请修改对应的 projects/*.yaml"
79
+
80
+ ### Step 3: 汇总报告
81
+
82
+ ```
83
+ 📊 工作区同步结果
84
+
85
+ ┌───────────────────┬──────────┬────────────────────────────────────┐
86
+ │ 子项目 │ 状态 │ 说明 │
87
+ ├───────────────────┼──────────┼────────────────────────────────────┤
88
+ │ back-service │ ✅ 正常 │ 目录存在,git remote 匹配 │
89
+ │ sub-grid-security │ 🔄 已克隆 │ 从 https://... clone 成功 │
90
+ │ frontend │ ⚠️ 缺失 │ 无 repo 配置,请手动放置 │
91
+ └───────────────────┴──────────┴────────────────────────────────────┘
92
+ ```
93
+
94
+ 全部正常 → 提示 `/sillyspec:brainstorm '你的需求'` 继续。
95
+ 有异常 → 提示用户处理后再 sync。
96
+
97
+ ### Step 4: 更新子项目配置
98
+
99
+ 如果 clone 过程中实际 remote 和 `projects/<name>.yaml` 中的 repo 不一致,更新对应 yaml 文件的 repo 字段为实际值。
@@ -0,0 +1,70 @@
1
+ ## 交互规范
2
+ **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
3
+
4
+ ## 核心约束(必须遵守)
5
+ - ❌ 修改子项目目录下的任何文件
6
+ - ❌ 写非法 YAML
7
+ - ❌ 使用绝对路径(必须是相对路径)
8
+
9
+ ## 用户指令
10
+ $ARGUMENTS
11
+
12
+ ---
13
+
14
+ ## 流程
15
+
16
+ ### Step 1: 检查配置
17
+
18
+ ```bash
19
+ ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
20
+ ```
21
+
22
+ 不存在 → 询问是否初始化工作区。
23
+
24
+ ### Step 2: 解析指令
25
+
26
+ - 无参数 / `status` → 显示状态
27
+ - `add` → 添加子项目
28
+
29
+ **添加流程:**
30
+ 1. AskUserQuestion 询问子项目名称、目录路径、角色描述
31
+ 2. **自动检测 git 远程地址:**
32
+ ```bash
33
+ git -C <path> remote get-url origin 2>/dev/null
34
+ ```
35
+ 检测到则写入 repo 字段,检测不到则留空
36
+ 3. 创建 `.sillyspec/projects/<name>.yaml` 文件
37
+ - `remove` → 删除 `.sillyspec/projects/<name>.yaml` 文件
38
+ - `sync` → 同步子项目(clone 缺失的,检查冲突)
39
+
40
+ ### Step 3: 执行操作
41
+
42
+ **初始化工作区:** 询问名称 → 逐个添加子项目(名称、路径、角色描述,验证路径存在)→ 共享规范 → 创建 `projects/*.yaml` + `.sillyspec/shared/`
43
+
44
+ **添加/移除子项目:** 创建或删除 `projects/<name>.yaml`,Git 提交。
45
+
46
+ **状态显示:** 读取每个子项目的 `.sillyspec/` 内容(PROJECT.md、docs/<project>/scan/ 文档数、进行中变更),输出格式:
47
+
48
+ ```
49
+ 🏢 工作区:<name>
50
+ 📦 子项目(N 个):
51
+ ✅ frontend ./frontend 前端 - Vue3+TS 已扫描(7 份文档)
52
+ ⚠️ backend ./backend 后端 - Node.js 已初始化(未扫描)
53
+ 📄 共享规范:2 份
54
+ 💡 操作:/sillyspec:workspace add | /sillyspec:init | /sillyspec:scan
55
+ ```
56
+
57
+ ### 读取子项目信息
58
+
59
+ ```bash
60
+ for f in .sillyspec/projects/*.yaml; do
61
+ [ -f "$f" ] || continue
62
+ proj_name=$(basename "$f" .yaml)
63
+ proj_path=$(grep '^path:' "$f" | head -1 | sed 's/^path:[[:space:]]*//')
64
+ proj_role=$(grep '^role:' "$f" | head -1 | sed 's/^role:[[:space:]]*//')
65
+ proj_repo=$(grep '^repo:' "$f" | head -1 | sed 's/^repo:[[:space:]]*//')
66
+ # 检查文档数、变更数等
67
+ doc_count=$(ls "$proj_path"/.sillyspec/docs/$proj_name/scan/*.md 2>/dev/null | wc -l)
68
+ echo " $proj_name $proj_path $proj_role docs:$doc_count"
69
+ done
70
+ ```
@@ -1,17 +0,0 @@
1
- ---
2
- name: sillyspec:archive
3
- description: 归档变更 — 规范沉淀,可追溯
4
- ---
5
-
6
- ## 执行
7
-
8
- **你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
9
-
10
- 1. 运行 `sillyspec run archive` — 读取输出的步骤 prompt
11
- 2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
12
- 3. 步骤完成后,运行 `sillyspec run archive --done --output "你的摘要"`
13
- 4. 重复 2-3 直到阶段完成
14
- 5. **禁止**在没有运行 CLI 的情况下自行决定流程
15
-
16
- ## 用户指令
17
- $ARGUMENTS
@@ -1,77 +0,0 @@
1
- ---
2
- description: 自动模式 — 全流程自动推进(通用版)
3
- argument-hint: "<需求描述>"
4
- ---
5
-
6
- ## 用法
7
- - /sillyspec:auto 实现用户登录功能
8
- - /sillyspec:auto 修复搜索结果的排序问题
9
-
10
- ## 任务
11
- $ARGUMENTS
12
-
13
- ---
14
-
15
- ## 执行流程
16
-
17
- 你是全流程编排器,按 brainstorm → plan → execute → verify 顺序自动推进。
18
-
19
- ### 启动
20
- 1. 运行 `sillyspec run auto --input "<用户需求>"`
21
- 2. 读取 CLI 输出的 step prompt(包含你的角色描述)
22
- 3. 执行 prompt 中的操作
23
-
24
- ### 步骤循环
25
- 重复以下循环直到 CLI 输出"全部流程已完成":
26
-
27
- 1. **读取 CLI 输出的 step prompt**
28
- 2. **判断是否需要用户确认:**
29
- - prompt 中包含"请用户选择""等待用户回答""展示给用户""用户确认" → **暂停,等用户回复**
30
- - 纯内部操作 → **直接执行**
31
- 3. **执行 prompt 要求的操作**
32
- 4. **完成后运行** `sillyspec run auto --done --output "<你的摘要>"`
33
- 5. **读取 CLI 输出的下一步 prompt**,回到步骤 1
34
-
35
- ### 阶段审核门控
36
-
37
- **brainstorm 完成后:**
38
- 评估需求复杂度(参考 brainstorm Step 5 的判断结果),根据复杂度决定:
39
-
40
- | 复杂度 | 审核策略 |
41
- |--------|---------|
42
- | 简单(无拆分、无批量) | 不审核,直接进入 plan |
43
- | 中等(有拆分或批量) | 启动 1 个审核子代理(QA 视角)审查 design.md |
44
- | 复杂(拆分 + 批量/多角色) | 启动 2-3 个审核子代理多角度审查 |
45
-
46
- 多角度审核子代理分工:
47
- - **架构师** — 审查设计合理性、技术选型 trade-off、模块划分
48
- - **安全专家** — 审查安全隐患、权限设计、数据校验
49
- - **QA 专家** — 审查需求覆盖率、边界场景遗漏、验收标准
50
-
51
- 审核流程:
52
- 1. 暂停,提示用户当前复杂度等级和建议审核策略
53
- 2. 用户确认后,启动审核子代理(读取 design.md + requirements.md + tasks.md)
54
- 3. 子代理输出问题清单
55
- 4. 汇总问题,询问用户"是否需要修改后再继续"
56
- 5. 需要修改 → 修复后重新审核;不需要 → 进入下一阶段
57
-
58
- **plan 完成后:**
59
- 同样评估复杂度,启动审核子代理审查 plan.md:
60
- - **项目经理** — 审查任务拆解粒度、依赖关系、优先级
61
- - **工程师** — 审查任务可行性、工作量评估是否合理
62
- - **QA** — 审查验收标准是否具体可测试
63
-
64
- ### 关键规则
65
- - 不要跳过任何步骤
66
- - 不要手动修改 progress.json
67
- - 不要自动 commit,只 git add
68
- - 不要使用 npx
69
- - 不要编造不存在的 CLI 子命令
70
- - 遇到命令报错 → 展示错误,暂停等用户介入
71
-
72
- ### 异常处理
73
- - 命令执行失败 → 展示错误信息,暂停等待用户指示
74
- - 用户说"停止"或"暂停" → 立即停止,报告当前进度
75
-
76
- ### 完成条件
77
- CLI 输出"全部流程已完成"后,输出完整流程总结,提示用户提交改动。
@@ -1,17 +0,0 @@
1
- ---
2
- name: sillyspec:brainstorm
3
- description: 需求探索 — 结构化头脑风暴,含技术方案输出(创建性工作前必用)
4
- ---
5
-
6
- ## 执行
7
-
8
- **你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
9
-
10
- 1. 运行 `sillyspec run brainstorm` — 读取输出的步骤 prompt
11
- 2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
12
- 3. 步骤完成后,运行 `sillyspec run brainstorm --done --output "你的摘要"`
13
- 4. 重复 2-3 直到阶段完成
14
- 5. **禁止**在没有运行 CLI 的情况下自行决定流程
15
-
16
- ## 用户指令
17
- $ARGUMENTS
@@ -1,44 +0,0 @@
1
- ---
2
- name: sillyspec:continue
3
- description: 自动判断并执行下一步
4
- ---
5
-
6
- ---
7
-
8
- 你现在是 SillySpec 的自动推进器。
9
-
10
- ## 判断逻辑
11
-
12
- 按顺序检查,第一个未完成的就执行:
13
-
14
- ```
15
- 1. 有 HANDOFF.json?→ 执行 /sillyspec:resume
16
-
17
- 2. .sillyspec/changes/ 有进行中的变更?
18
- 2a. 没有任何文件 → 提示检查 proposal 是否需要完善
19
- 2b. 没有 design.md → 提示补充 design
20
- 2c. 没有 tasks.md → 执行 /sillyspec:propose(补全规范)
21
- 2d. tasks.md 有未完成项 + 有计划文件 → 执行 /sillyspec:execute
22
- 2e. tasks.md 全完成 + 没验证 → 执行 /sillyspec:verify
23
- 2f. 已验证通过 → 执行 /sillyspec:archive
24
-
25
- 3. 有设计文档但没有对应变更?
26
- → 提示运行 /sillyspec:propose <name>
27
-
28
- 4. 有 docs/*/scan/ 但没有进行中的工作?
29
- → 提示运行 /sillyspec:brainstorm "你的想法"
30
-
31
- 5. 什么都没有?
32
- → 提示运行 /sillyspec:init(新项目)或 /sillyspec:scan(棕地项目)
33
- ```
34
-
35
- ## 输出
36
-
37
- 先报告检测结果,再执行:
38
-
39
- > 🤖 SillySpec 自动检测
40
- >
41
- > 当前状态:[描述]
42
- > 下一步:[执行的命令]
43
- >
44
- > [开始执行...]
@@ -1,22 +0,0 @@
1
- ---
2
- name: sillyspec:doctor
3
- description: 项目自检 — 检查 CLI、配置、构建环境和外部依赖
4
- ---
5
-
6
- ## 前置检查
7
-
8
- **在执行任何检查之前,先确认 SillySpec CLI 是否可用:**
9
-
10
- 1. 运行 `sillyspec --version`
11
- 2. 如果失败:
12
- - 输出:❌ SillySpec CLI 未安装
13
- - 给出安装命令:`npm install -g sillyspec`
14
- - 停止,不要继续后续步骤
15
-
16
- ## 执行
17
-
18
- CLI 可用后,运行 `sillyspec run doctor`,按提示逐步执行。
19
- 每步完成后运行 `sillyspec run doctor --done --output "摘要"`。
20
-
21
- ## 用户指令
22
- $ARGUMENTS
@@ -1,17 +0,0 @@
1
- ---
2
- name: sillyspec:execute
3
- description: 波次执行 — 子代理并行 + 强制 TDD + 两阶段审查
4
- ---
5
-
6
- ## 执行
7
-
8
- **你必须使用 exec 工具(shell)执行以下命令,不要自己编造流程:**
9
-
10
- 1. 运行 `sillyspec run execute` — 读取输出的步骤 prompt
11
- 2. 按照输出的 prompt **严格执行**,不要跳过或自行添加步骤
12
- 3. 步骤完成后,运行 `sillyspec run execute --done --output "你的摘要"`
13
- 4. 重复 2-3 直到阶段完成
14
- 5. **禁止**在没有运行 CLI 的情况下自行决定流程
15
-
16
- ## 用户指令
17
- $ARGUMENTS
@@ -1,96 +0,0 @@
1
- ---
2
- name: sillyspec:explore
3
- description: 自由思考模式 — 讨论、画图、调研,不写代码
4
- ---
5
-
6
- ## 交互规范
7
-
8
- **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
9
-
10
- 不要用编号列表让用户手动输入数字。
11
- 如果需要自由输入,在 AskUserQuestion 的选项中加入"Other(自定义输入)"。
12
-
13
- ---
14
-
15
- 你现在是 SillySpec 的自由思考伙伴。
16
-
17
- ## 话题
18
- $ARGUMENTS
19
-
20
- ## 这是什么模式
21
-
22
- **探索模式用于思考,不用于实现。** 你可以读文件、搜代码、调查代码库,但绝对不能写代码或实现功能。如果用户要求实现,提醒他们先退出探索模式。
23
-
24
- **这不是一个工作流,是一种姿态。** 没有固定步骤、没有必需的输出。你是一个帮助用户思考的伙伴。
25
-
26
- ## 姿态
27
-
28
- - **好奇,不说教** — 问自然产生的问题,不按脚本走
29
- - **开放式线程** — 展示多个有趣方向,让用户选择
30
- - **可视化** — 大量使用 ASCII 图表
31
- - **自适应** — 追随有趣的线索,随时转向
32
- - **耐心** — 不急着下结论
33
- - **务实** — 探索实际代码库,不只纸上谈兵
34
-
35
- ## 你可以做的事
36
-
37
- **探索问题空间:** 问澄清问题、挑战假设、重新定义问题
38
-
39
- **调查代码库:** 映射相关架构、找集成点、识别已有模式、暴露隐藏复杂性
40
-
41
- **比较选项:** 头脑风暴多种方案、建对比表、画权衡分析
42
-
43
- **画图:**
44
- ```
45
- ┌─────────────────────────────────┐
46
- │ 用 ASCII 图自由表达 │
47
- ├─────────────────────────────────┤
48
- │ │
49
- │ ┌────────┐ ┌────────┐ │
50
- │ │ State │──────▶│ State │ │
51
- │ │ A │ │ B │ │
52
- │ └────────┘ └────────┘ │
53
- │ │
54
- └─────────────────────────────────┘
55
- ```
56
-
57
- **暴露风险:** 识别可能出错的地方、发现理解空白
58
-
59
- ## OpenSpec 上下文感知
60
-
61
- ### 检查已有上下文
62
-
63
- ```bash
64
- # 查看进行中的变更
65
- ls .sillyspec/changes/ 2>/dev/null | grep -v archive
66
- # 查看需求
67
- cat .sillyspec/REQUIREMENTS.md 2>/dev/null
68
- cat .sillyspec/ROADMAP.md 2>/dev/null
69
- ```
70
-
71
- ### 当有进行中的变更时
72
-
73
- 读取变更的 proposal、design、tasks,自然地引用它们。
74
-
75
- 当发现重要的决策时,**提议保存**(不自动保存):
76
-
77
- 请选择:
78
- 1. 写入 design.md
79
- 2. 加入 specs
80
- 3. 暂不保存
81
-
82
- ## 没有必需的结束
83
-
84
- 探索可以:
85
- 1. 创建变更提案 — 流入 proposal
86
- 2. 产出文档更新
87
- 3. 继续探索
88
- 4. 结束探索
89
-
90
- ## 禁止事项
91
-
92
- - ❌ 写实现代码
93
- - ❌ 安装依赖
94
- - ❌ 修改任何文件(除非用户明确要求保存发现)
95
- - ❌ 强行下结论
96
- - ❌ 强行结构化(让模式自然涌现)
@@ -1,53 +0,0 @@
1
- ---
2
- name: sillyspec:export
3
- description: 导出成功方案为可复用模板
4
- ---
5
-
6
- ---
7
-
8
- 你现在是 SillySpec 的模板导出器。
9
-
10
- ## 参数解析
11
-
12
- 解析 `$ARGUMENTS`:
13
- - 第一个参数为变更名(如 `user-auth`)
14
- - `--to` 指定输出路径(默认 `~/.sillyspec/templates/<change-name>/`)
15
-
16
- ## 流程
17
-
18
- ### 1. 读取变更文件
19
-
20
- ```bash
21
- CHANGE_DIR=".sillyspec/changes/$ARGUMENTS"
22
- cat "$CHANGE_DIR/proposal.md"
23
- cat "$CHANGE_DIR/design.md"
24
- cat "$CHANGE_DIR/specs/requirements.md" 2>/dev/null
25
- ```
26
-
27
- 如果变更不存在 → 告诉用户"变更不存在,请确认变更名"
28
-
29
- ### 2. 清理为通用模板
30
-
31
- 读取文件后,进行清理:
32
- - 移除项目特定的信息(具体类名、路径、端口号)
33
- - 保留通用的设计方案、架构决策、需求场景
34
- - 添加一个 `notes.md`,记录使用建议和适配要点
35
-
36
- ### 3. 导出到模板目录
37
-
38
- ```bash
39
- mkdir -p ~/.sillyspec/templates/<change-name>
40
- cp 清理后的文件到该目录
41
- ```
42
-
43
- ### 4. 确认
44
-
45
- 展示导出内容摘要,告知模板路径。
46
-
47
- ### 最后说:
48
-
49
- > ✅ 方案已导出到 `~/.sillyspec/templates/<change-name>/`
50
- >
51
- > 其他项目使用:`/sillyspec:brainstorm "你的想法"` → AI 会自动发现并建议复用此模板
52
- >
53
- > 手动查看:`ls ~/.sillyspec/templates/<change-name>/`
@@ -1,170 +0,0 @@
1
- ---
2
- name: sillyspec:init
3
- description: 绿地项目初始化 — 深度提问、调研、需求文档、路线图
4
- ---
5
-
6
- ## 交互规范
7
-
8
- **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
9
-
10
- 不要用编号列表让用户手动输入数字。
11
- 如果需要自由输入,在 AskUserQuestion 的选项中加入"Other(自定义输入)"。
12
-
13
- ---
14
-
15
- 你现在是 SillySpec 的项目初始化器。
16
-
17
- ## 用户输入
18
- $ARGUMENTS
19
-
20
- ## 核心流程
21
-
22
- 这是一个从零开始创建新项目的完整流程。你的目标是:**在开始写任何代码之前,把需求彻底搞清楚。**
23
-
24
- ### Step 1: 检查工作区模式
25
-
26
- ```bash
27
- ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
28
- ```
29
-
30
- 如果 projects/ 目录存在且包含 .yaml 文件 → 工作区模式:
31
- 1. 列出所有子项目(读取 projects/*.yaml):
32
- 检测到工作区模式,请选择要初始化的子项目:
33
- > 1. frontend — 前端 - Vue3 + TypeScript
34
- > 2. backend — 后端 - Node.js + PostgreSQL
35
- > 3. 新建子项目(先运行 /sillyspec:workspace add)
36
- 2. 用户选择后,**切换到该子项目目录**执行后续所有步骤
37
- 3. 后续步骤中的所有文件路径相对于子项目目录
38
-
39
- 否则 → 单项目模式,继续。
40
-
41
- ### Step 2: 检查项目状态
42
-
43
- ```bash
44
- ls -la
45
- ```
46
-
47
- 如果目录已经有代码/配置文件 → 提示用 `/sillyspec:scan` 代替。
48
- 如果是空目录 → 继续。
49
-
50
- ### Step 3: 深度提问
51
-
52
- **一次只问一个问题**,按以下顺序探索:
53
-
54
- 1. **项目本质** — 这个项目要解决什么问题?给谁用?
55
- 2. **核心功能** — 用户能做的最重要的事情是什么?
56
- 3. **技术偏好** — 有偏好的语言/框架吗?还是让我建议?
57
- 4. **非功能需求** — 性能要求?安全要求?离线支持?多语言?
58
- 5. **设计偏好** — 有参考产品吗?喜欢什么风格?
59
- 6. **约束** — 预算?时间?团队规模?
60
- 7. **不在范围内** — 明确什么不做
61
-
62
- ### Step 4: 技术选型(如需要)
63
-
64
- 如果用户没有明确偏好,基于项目需求推荐 2-3 套技术栈,列出优劣:
65
- - 语言 + 框架 + 数据库 + 部署方案
66
- - 给出推荐和理由
67
-
68
- ### Step 5: 可选调研
69
-
70
- 如果用户同意,对关键技术选型做快速调研:
71
- - 选定框架的当前版本和生态状态
72
- - 已知的坑和替代方案
73
- - 依赖的第三方服务的稳定性
74
-
75
- ### Step 6: 生成需求文档
76
-
77
- 保存到 `.sillyspec/REQUIREMENTS.md`:
78
-
79
- ```markdown
80
- # 需求文档
81
-
82
- ## 项目概述
83
- [一句话描述]
84
-
85
- ## 目标用户
86
- [谁在用、在什么场景下用]
87
-
88
- ## 功能需求
89
- ### P0 — 必须有
90
- - [ ] 需求 1
91
- - [ ] 需求 2
92
-
93
- ### P1 — 应该有
94
- - [ ] 需求 3
95
-
96
- ### P2 — 有了更好
97
- - [ ] 需求 4
98
-
99
- ## 非功能需求
100
- - 性能:xxx
101
- - 安全:xxx
102
- - 部署:xxx
103
-
104
- ## 不在范围内
105
- - xxx
106
- - xxx
107
-
108
- ## 技术选型
109
- | 层 | 选择 | 理由 |
110
- |---|---|---|
111
- | 前端 | React + TypeScript | xxx |
112
- | 后端 | xxx | xxx |
113
- | 数据库 | xxx | xxx |
114
- ```
115
-
116
- ### Step 7: 生成路线图:
117
-
118
- ```markdown
119
- # 项目路线图
120
-
121
- ## Phase 1: 基础骨架
122
- - 目标:可运行的最小版本
123
- - 交付物:项目结构 + 基础配置 + 首个可运行页面/接口
124
-
125
- ## Phase 2: 核心功能
126
- - 目标:P0 功能全部可用
127
- - 交付物:xxx
128
-
129
- ## Phase 3: 完善
130
- - 目标:P1 + 测试 + 打磨
131
- - 交付物:xxx
132
- ```
133
-
134
- ### Step 8: 生成 PROJECT.md
135
-
136
- 保存到 `.sillyspec/PROJECT.md`:
137
-
138
- ```markdown
139
- # PROJECT.md
140
-
141
- ## 项目名:xxx
142
- ## 一句话:xxx
143
- ## 状态:已初始化,等待规划
144
- ```
145
-
146
- ### Step 9: Git 初始化
147
-
148
- ```bash
149
- git init
150
- git add .
151
- ```
152
-
153
- ### 最后说:
154
-
155
- > ✅ 项目初始化完成!
156
- >
157
- > 生成文件:
158
- > - `.sillyspec/PROJECT.md` — 项目概述
159
- > - `.sillyspec/REQUIREMENTS.md` — 需求文档
160
- > - `.sillyspec/ROADMAP.md` — 路线图
161
- >
162
- > 下一步:
163
- > - 开始第一个功能:`/sillyspec:brainstorm "Phase 1: xxx"`
164
- > - 或修改需求:直接告诉我改什么
165
-
166
- ## 绝对规则
167
- - 不写任何实现代码
168
- - 不安装任何依赖
169
- - 提问阶段一次一个问题
170
- - 需求必须具体,不能模糊(❌"好用" → ✅"首屏加载 < 2 秒")