sillyspec 3.7.14 → 3.7.16

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 (85) hide show
  1. package/.claude/skills/sillyspec-archive/SKILL.md +77 -0
  2. package/.claude/skills/sillyspec-brainstorm/SKILL.md +591 -0
  3. package/.claude/skills/sillyspec-continue/SKILL.md +44 -0
  4. package/.claude/skills/sillyspec-execute/SKILL.md +233 -0
  5. package/.claude/skills/sillyspec-explore/SKILL.md +96 -0
  6. package/.claude/skills/sillyspec-export/SKILL.md +53 -0
  7. package/.claude/skills/sillyspec-init/SKILL.md +171 -0
  8. package/.claude/skills/sillyspec-plan/SKILL.md +263 -0
  9. package/.claude/skills/sillyspec-propose/SKILL.md +248 -0
  10. package/.claude/skills/sillyspec-quick/SKILL.md +102 -0
  11. package/.claude/skills/sillyspec-resume/SKILL.md +111 -0
  12. package/{templates/scan.md → .claude/skills/sillyspec-scan/SKILL.md} +22 -60
  13. package/.claude/skills/sillyspec-state/SKILL.md +54 -0
  14. package/.claude/skills/sillyspec-status/SKILL.md +131 -0
  15. package/.claude/skills/sillyspec-verify/SKILL.md +146 -0
  16. package/.claude/skills/sillyspec-workspace/SKILL.md +149 -0
  17. package/.sillyspec/changes/run-command-design/design.md +1230 -0
  18. package/.sillyspec/docs/sillyspec/scan/.gitkeep +0 -0
  19. package/.sillyspec/knowledge/INDEX.md +8 -0
  20. package/.sillyspec/knowledge/uncategorized.md +3 -0
  21. package/.sillyspec/projects/sillyspec.yaml +3 -0
  22. package/package.json +1 -1
  23. package/packages/dashboard/dist/assets/index-Bx0cgoK_.js +7446 -0
  24. package/packages/dashboard/dist/assets/index-DbkUSsNO.css +1 -0
  25. package/packages/dashboard/dist/index.html +2 -2
  26. package/packages/dashboard/package-lock.json +220 -0
  27. package/packages/dashboard/package.json +8 -5
  28. package/packages/dashboard/server/index.js +91 -3
  29. package/packages/dashboard/server/parser.js +252 -28
  30. package/packages/dashboard/src/App.vue +54 -8
  31. package/packages/dashboard/src/components/ActionBar.vue +23 -39
  32. package/packages/dashboard/src/components/CommandPalette.vue +40 -65
  33. package/packages/dashboard/src/components/DetailPanel.vue +68 -53
  34. package/packages/dashboard/src/components/DocPreview.vue +137 -20
  35. package/packages/dashboard/src/components/DocTree.vue +48 -26
  36. package/packages/dashboard/src/components/LogStream.vue +12 -32
  37. package/packages/dashboard/src/components/PipelineStage.vue +8 -8
  38. package/packages/dashboard/src/components/PipelineView.vue +35 -43
  39. package/packages/dashboard/src/components/ProjectList.vue +51 -77
  40. package/packages/dashboard/src/components/ProjectOverview.vue +178 -0
  41. package/packages/dashboard/src/components/StageBadge.vue +13 -13
  42. package/packages/dashboard/src/components/StepCard.vue +11 -11
  43. package/packages/dashboard/src/components/detail/DocsDetail.vue +48 -0
  44. package/packages/dashboard/src/components/detail/GitDetail.vue +61 -0
  45. package/packages/dashboard/src/components/detail/TechDetail.vue +43 -0
  46. package/packages/dashboard/src/main.js +4 -1
  47. package/packages/dashboard/src/style.css +14 -14
  48. package/src/index.js +55 -8
  49. package/src/init.js +69 -196
  50. package/src/migrate.js +1 -18
  51. package/src/progress.js +279 -281
  52. package/src/run.js +320 -0
  53. package/src/setup.js +1 -9
  54. package/src/stages/brainstorm.js +210 -0
  55. package/src/stages/execute.js +190 -0
  56. package/src/stages/index.js +22 -0
  57. package/src/stages/plan.js +118 -0
  58. package/src/stages/propose.js +115 -0
  59. package/src/stages/verify.js +98 -0
  60. package/packages/dashboard/dist/assets/index-hNnQCobe.css +0 -1
  61. package/packages/dashboard/dist/assets/index-qgPzQGjk.js +0 -17
  62. package/templates/archive.md +0 -121
  63. package/templates/brainstorm.md +0 -246
  64. package/templates/commit.md +0 -123
  65. package/templates/continue.md +0 -32
  66. package/templates/execute.md +0 -314
  67. package/templates/explore.md +0 -60
  68. package/templates/export.md +0 -21
  69. package/templates/init.md +0 -61
  70. package/templates/plan.md +0 -157
  71. package/templates/progress-format.md +0 -90
  72. package/templates/propose.md +0 -73
  73. package/templates/quick.md +0 -135
  74. package/templates/resume-dialog.md +0 -55
  75. package/templates/resume.md +0 -53
  76. package/templates/scan-quick.md +0 -49
  77. package/templates/skills/playwright-e2e/SKILL.md +0 -340
  78. package/templates/status.md +0 -72
  79. package/templates/verify.md +0 -253
  80. package/templates/workspace-sync.md +0 -89
  81. package/templates/workspace.md +0 -67
  82. /package/.sillyspec/{docs/sillyspec/brainstorm → changes/brainstorm-archive}/2026-04-05-dashboard-design.md +0 -0
  83. /package/.sillyspec/{docs/sillyspec/brainstorm → changes/brainstorm-archive}/2026-04-05-unified-docs-design.md +0 -0
  84. /package/.sillyspec/{specs/2026-04-05-dashboard-design.md → changes/dashboard/design.md.braindraft} +0 -0
  85. /package/.sillyspec/{specs/2026-04-05-unified-docs-design.md → changes/unified-docs-design/design.md} +0 -0
@@ -1,90 +0,0 @@
1
- # Progress Format — AI 写入规范
2
-
3
- > 本文件供 AI 在各阶段执行时参考,规范 progress.json 和 user-inputs.md 的写入方式。
4
-
5
- ## 文件位置
6
-
7
- - **进度文件:** `.sillyspec/.runtime/progress.json`
8
- - **用户输入记录:** `.sillyspec/.runtime/user-inputs.md`
9
-
10
- ## progress.json 字段说明
11
-
12
- | 字段 | 类型 | 说明 |
13
- |------|------|------|
14
- | `_version` | number | 内部版本号,固定为 `1` |
15
- | `schemaVersion` | string | Schema 版本,固定为 `"1.0.0"` |
16
- | `currentStage` | string | 当前阶段:`brainstorm` / `propose` / `plan` / `execute` / `verify` |
17
- | `lastActiveAt` | string | ISO 8601 时间戳,每次更新时刷新 |
18
- | `resumeCount` | number | 恢复次数,每次恢复时 +1 |
19
- | `checkpoint` | string | 一句话描述当前进度(给恢复时快速定位) |
20
- | `stages.<stage>.status` | string | 阶段状态:`not_started` / `in_progress` / `completed` |
21
- | `stages.<stage>.completedSteps` | number[] | 已完成步骤 ID 列表 |
22
- | `stages.<stage>.inProgressStep` | object/null | 当前进行中的步骤:`{ id, name, startedAt, partialContext }` |
23
- | `stages.<stage>.summaries` | object | 步骤结论,key 为步骤 ID,value 见下方 |
24
- | `stages.<stage>.artifacts` | array | 产出文件列表:`[{ stepId, name, paths }]` |
25
- | `stages.<stage>.stageSummary` | string/null | 阶段总结 |
26
-
27
- ### summaries 结构
28
-
29
- ```json
30
- {
31
- "1": {
32
- "conclusion": "一句话结论",
33
- "keyEntities": ["实体1", "实体2"],
34
- "decisions": ["决定A"],
35
- "rejectedAlternatives": ["被否的方案B"],
36
- "userMessages": ["用户原话摘要"],
37
- "openQuestions": ["未解决的问题"]
38
- }
39
- }
40
- ```
41
-
42
- ## user-inputs.md 格式
43
-
44
- 每步完成时 **append**(不覆盖)用户在本步说的所有原话:
45
-
46
- ```markdown
47
- # 用户输入记录
48
-
49
- ## Step 1 - 需求理解 (2026-04-05 00:30)
50
- - 我们主要做研发项目管理,不搞CRM
51
- - 目标用户是中大型团队,50人以上
52
-
53
- ## Step 3 - 竞品分析 (2026-04-05 00:45)
54
- - Jira太重了,我们想做轻的
55
- - 排期最烦了,能不能AI帮搞
56
- ```
57
-
58
- ### 时间戳格式
59
-
60
- `YYYY-MM-DD HH:MM`
61
-
62
- ### 获取当前时间
63
-
64
- - JavaScript:`new Date().toLocaleString('sv-SE', { timeZone: 'Asia/Shanghai', hour12: false }).slice(0, 16)` → `"2026-04-05 13:37"`
65
- - 或 shell 命令:`date '+%Y-%m-%d %H:%M'`
66
-
67
- ## 每步完成后的保存流程
68
-
69
- 1. **更新 progress.json**:
70
- - 将步骤 ID 加入 `completedSteps`
71
- - 清空 `inProgressStep`(或设为下一步)
72
- - 在 `summaries` 中写入本步结论
73
- - 刷新 `lastActiveAt`
74
- - 更新 `checkpoint`(一句话描述)
75
-
76
- 2. **Append user-inputs.md**:
77
- - 追加 `## Step N - 步骤名 (YYYY-MM-DD HH:MM)` 段落
78
- - 列出用户在本步的所有原话
79
- - **不要删除之前的内容,只追加**
80
-
81
- 3. **如果阶段完成**:
82
- - 设置 `stages.<stage>.status = "completed"`
83
- - 写入 `stageSummary`
84
- - 更新 `currentStage` 为下一阶段
85
-
86
- ## 多任务并行说明
87
-
88
- - `quick` 命令**不修改** progress.json,独立执行
89
- - quick 完成后主流程状态不变,直接继续
90
- - `resume` 恢复时忽略 quick 的内容
@@ -1,73 +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
- cat .sillyspec/STATE.md 2>/dev/null
15
- ```
16
-
17
- - phase 为 `propose` 或 STATE.md 中下一步为 `/sillyspec:propose` → ✅ 继续
18
- - 其他 phase → 提示用户当前阶段
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/docs/<project>/scan/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
33
- ls .sillyspec/changes/ | grep -v archive
34
- ```
35
-
36
- **子阶段变更(如 `name/stage-1`):** 读 MASTER.md 获取方向 + 前序经验 + 原型分析。规范保存到 `.sillyspec/docs/<project>/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/docs/<project>/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
- 更新 `.sillyspec/STATE.md`:阶段改为 `propose ✅`,下一步 `/sillyspec:plan`。
@@ -1,135 +0,0 @@
1
- ## 交互规范
2
- **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
3
-
4
- ## 核心约束(必须遵守)
5
- - ❌ 不写测试(底线是仍然要写测试)
6
- - ❌ 修改无关文件
7
- - ❌ 跳过测试因为"任务太简单"
8
-
9
- ## 用法
10
-
11
- - `/sillyspec:quick "修复用户创建接口漏了手机号校验"` — 独立记录到按用户名隔离的 QUICKLOG
12
- - `/sillyspec:quick --change user-module "修复用户创建接口漏了手机号校验"` — 追加到 user-module 变更的 tasks.md
13
-
14
- ## 任务
15
- $ARGUMENTS
16
-
17
- ---
18
-
19
- ## 流程
20
-
21
- 1. **解析参数:** 检查是否携带 `--change <变更名>`,确定记录方式
22
- 1.5 **归属检查:** 如果没有 `--change` 参数,检查 `.sillyspec/docs/<project>/changes/` 下是否有非 archive 的活跃变更目录:
23
- ```bash
24
- ls -d .sillyspec/docs/<project>/changes/*/ 2>/dev/null | grep -v archive
25
- ```
26
- - 有活跃变更 → AskUserQuestion 询问本次 quick 归属哪个变更,默认选当前活跃的
27
- - 用户选择后将日志写入 `.sillyspec/docs/<project>/changes/<变更名>/quicklog/` 而非独立 QUICKLOG
28
- - 用户选择"无归属" → 走原有的独立 QUICKLOG 流程
29
- - 无活跃变更 → 走原有的独立 QUICKLOG 流程
30
- 2. **理解任务:** 模糊则问一个问题确认
31
- 3. **加载上下文:** `cat .sillyspec/docs/<project>/scan/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null`
32
- 3b. **编码规范扫描:** 检测项目中的编码规范配置文件(`.eslintrc*`、`.prettierrc*`、`tsconfig.json`、`.editorconfig`、`tailwind.config.*`、`CONTRIBUTING.md`),提取关键规则生成摘要。写作代码时必须严格遵守这些规则(分号/引号/缩进/命名风格等),如不确定优先遵守规范约束。
33
- 4. **知识库查询(强制步骤):**
34
- ```bash
35
- cat .sillyspec/knowledge/INDEX.md 2>/dev/null
36
- ```
37
- 根据当前任务描述中的关键词匹配 INDEX.md 条目,命中时 `cat` 对应知识文件,将内容纳入后续开发考量。未命中则跳过。
38
- **MCP 检测:** 检查当前可用工具列表中是否存在 MCP 工具(Context7/浏览器/数据库/搜索等),根据检测结果动态利用:
39
- - 有 Context7 → 查询不熟悉库/API 的最新文档
40
- - 有浏览器 MCP → 验证页面改动效果
41
- - 有数据库 MCP → 查询表结构和数据验证(只读)
42
- - 有搜索 MCP → 搜索最佳实践和解决方案
43
- - 有其他 MCP → 按任务需要灵活使用
44
- - 无 MCP → 使用 web search
45
- 5. **先读后写:** 调用已有方法前 `cat` 源文件确认签名,`grep` 确认方法存在
46
- 6. **数据操作安全:** 任何改变现有数据的操作(非 SELECT 的数据库操作)必须暂停并报告给用户确认,不得自动执行。新建表不受此限制
47
- 6. **TDD 执行:**
48
- ```
49
- 🔴 RED → 先写测试,运行确认失败
50
- 🟢 GREEN → 写最少代码让测试通过
51
- 🔵 REFACTOR → 清理,保持测试通过
52
- ✅ STAGE → git add 暂存(测试文件必须包含在暂存中)
53
- ```
54
- 测试文件必须保留在项目中,不能删除。违反 TDD → 删掉代码从测试重新开始。
55
- - 纯配置/数据/文档可跳过 TDD
56
- - 其他情况一律走 TDD
57
- 7. **运行测试:** 先检查 local.yaml 构建命令配置:
58
- ```bash
59
- cat .sillyspec/local.yaml 2>/dev/null
60
- ```
61
- 如果有则使用 local.yaml 中的命令;否则使用默认命令:
62
- ```bash
63
- mvn test -pl <模块> -Dtest=<测试类> 2>/dev/null || ./gradlew test --tests <测试类> 2>/dev/null || pnpm test 2>/dev/null || npm test 2>/dev/null || pytest <测试文件> 2>/dev/null
64
- ```
65
- 8. **Lint 校验(如项目配置了):** 写完代码后、暂存前,运行项目的 lint 工具验证代码质量:
66
- ```bash
67
- # 检测并运行可用的 lint 工具
68
- npx eslint <修改的文件> 2>/dev/null || \
69
- npx prettier --check <修改的文件> 2>/dev/null || \
70
- npx tsc --noEmit 2>/dev/null || \
71
- true # 没有 lint 工具则跳过
72
- ```
73
- - **有报错 → 自动修复:** `npx eslint --fix <修改的文件>` / `npx prettier --write <修改的文件>`
74
- - **修复后仍有报错 → 在 QUICKLOG 中标注,提醒用户手动处理**
75
- - **工作区模式下,在子项目目录中执行,不要在主项目目录执行**
76
- 9. **Git 暂存:** `git add -A`。**不要 commit**,由用户通过 `/sillyspec:commit` 统一提交。**工作区模式下,确认当前在正确的子项目目录中执行暂存。**
77
- 10. **记录:**
78
- - **有 `--change`:** 在 `.sillyspec/docs/<project>/changes/<变更名>/tasks.md` 追加 task 并勾选,**记录精确到秒的时间戳**:
79
-
80
- ```
81
- - [x] [YYYY-MM-DD HH:MM:SS] 任务描述
82
- ```
83
- - **无 `--change` 但步骤 1.5 确认了归属变更:** 记录到 `.sillyspec/docs/<project>/changes/<变更名>/quicklog/YYYY-MM-DD-HHMMSS-任务简述.md`,格式:
84
-
85
- ```markdown
86
- # quick: 任务描述
87
-
88
- - 时间:YYYY-MM-DD HH:MM:SS
89
- - 关联变更:<变更名>
90
- - 修改文件:
91
- - `path/to/file1`
92
- - `path/to/file2`
93
- - 改动说明:(2-3 句描述做了什么)
94
- - 发现的坑:(如有,简要记录)
95
- ```
96
-
97
- - **无 `--change` 且无归属:** 记录到 `.sillyspec/docs/<project>/quicklog/QUICKLOG-<git用户名>.md`(见下方规则)
98
- 10. **检查复杂度:** 任务比预期复杂 → 建议用完整流程
99
-
100
- 11. **记录发现的坑:** 执行过程中如果发现项目特有的规律、陷阱或约定(如"某方法参数顺序容易搞反"、"某表有隐藏软删除字段"),追加到 `.sillyspec/knowledge/uncategorized.md`,格式:
101
-
102
- ```markdown
103
- ### [待确认] {简短标题}
104
- > 来源:quick / {时间戳}
105
-
106
- {坑的具体描述}
107
- ```
108
-
109
- **工作区模式下:** 只影响当前子项目 → 写入当前子项目 `.sillyspec/knowledge/uncategorized.md`;影响多个子项目 → 写入工作区根目录 `.sillyspec/knowledge/uncategorized.md`。
110
-
111
- 12. **知识库审阅提示:** 如果本次执行向 knowledge/ 写入了新条目,提示用户:
112
- > 📚 本次 quick 发现了新知识,请审阅:`cat .sillyspec/knowledge/uncategorized.md`
113
- > 确认后请将 `[待确认]` 改为 `[已确认]`,并可归类到 knowledge/ 下的专题文件中更新 INDEX.md。
114
-
115
- ### QUICKLOG 规则
116
-
117
- **按 git 用户名隔离,避免多人同时操作冲突:**
118
-
119
- ```bash
120
- USER=$(git config user.name 2>/dev/null || echo "default")
121
- LOG_FILE=".sillyspec/docs/<project>/quicklog/QUICKLOG-${USER}.md"
122
- ```
123
-
124
- 文件路径:`$LOG_FILE`
125
-
126
- **追加记录格式(时间精确到秒):**
127
- ```markdown
128
- ## YYYY-MM-DD HH:MM:SS | fix: 任务描述
129
- - 文件:`修改的文件列表`
130
- - 关联归档:`相关的已归档变更名`(如有)
131
- ```
132
-
133
- **文件轮转:** 追加前检查文件大小,超过 500 行则:
134
- 1. 将当前文件重命名为 `QUICKLOG-${USER}-YYYY-MM-DD.md`
135
- 2. 创建新的空 `QUICKLOG-${USER}.md`
@@ -1,55 +0,0 @@
1
- # Resume Dialog Template
2
-
3
- > 此模板用于 AI 恢复中断的 SillySpec 工作流程。
4
-
5
- ## 恢复流程
6
-
7
- 当用户执行 `resume` 或对话中断后恢复时,按以下步骤操作:
8
-
9
- ### 1. 读取进度
10
-
11
- ```
12
- 读取 .sillyspec/.runtime/progress.json
13
- 读取 .sillyspec/.runtime/user-inputs.md(截取当前阶段相关部分)
14
- 读取 .sillyspec/STATE.md
15
- ```
16
-
17
- ### 2. 向用户确认
18
-
19
- 用简洁的语言告知:
20
-
21
- - 当前阶段和步骤
22
- - 上次做到哪里(checkpoint)
23
- - 距上次活跃时间
24
- - 下一步要做什么
25
-
26
- **示例:**
27
-
28
- > 📋 上次你在 **brainstorm** 阶段的 **Step 4 - 技术选型**,已经讨论了前端框架的选择。
29
- > 距今约 2 小时。要继续技术选型,还是回顾一下之前的结论?
30
-
31
- ### 3. 恢复上下文
32
-
33
- 从 `summaries` 和 `user-inputs.md` 中提取之前的关键信息,注入对话:
34
-
35
- - 已完成的步骤结论
36
- - 已做的决策和被否的方案
37
- - 未解决的问题
38
- - 用户的关键偏好
39
-
40
- ### 4. 继续执行
41
-
42
- 从 `inProgressStep` 指定的步骤继续。如果 `inProgressStep` 为空但从 `completedSteps` 可推断进度,则从下一步开始。
43
-
44
- ### 5. 更新进度
45
-
46
- - `resumeCount` +1
47
- - 刷新 `lastActiveAt`
48
- - 开始执行后更新 `inProgressStep`
49
-
50
- ## 注意事项
51
-
52
- - 不要重新问已完成步骤中已经确认的问题
53
- - 除非用户主动要求,不要从头开始
54
- - 如果 progress.json 损坏,告知用户并建议运行 `sillyspec progress validate`
55
- - quick 任务不影响主流程进度
@@ -1,53 +0,0 @@
1
- ## 交互规范
2
- **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
3
-
4
- ## 核心约束(必须遵守)
5
- - ❌ 直接说"没有记录"(无 STATE.md 时应自动探测)
6
- - ❌ 修改任何文件(只读展示,但探测后可创建 STATE.md)
7
-
8
- ---
9
-
10
- ## 流程
11
-
12
- ### Step 1: 读取 STATE.md
13
-
14
- ```bash
15
- cat .sillyspec/STATE.md 2>/dev/null
16
- ```
17
-
18
- **有 STATE.md:** 提取并展示当前变更、阶段、进度、下一步命令、阶段进度表、关键决策。AskUserQuestion:直接继续 / 查看更多细节。
19
-
20
- **无 STATE.md:** 自动探测(工作区模式下同时检查子项目):
21
-
22
- ```bash
23
- cat .sillyspec/config.yaml 2>/dev/null # 检查是否工作区模式
24
- ls .sillyspec/changes/*/MASTER.md 2>/dev/null
25
- ls -d .sillyspec/changes/*/ | grep -v archive | grep -v stages | tail -1 2>/dev/null
26
- ls .sillyspec/codebase/*.md .sillyspec/codebase/details/*.md .sillyspec/changes/*/tasks.md .sillyspec/{REQUIREMENTS,ROADMAP}.md 2>/dev/null
27
- # 工作区模式:检查每个子项目的状态
28
- for proj in $(cat .sillyspec/config.yaml | grep -oP 'path:\s*\K.*'); do
29
- echo "=== $(basename $proj) ==="
30
- cat "$proj/.sillyspec/STATE.md" 2>/dev/null
31
- ls "$proj/.sillyspec/changes/" 2>/dev/null | grep -v archive
32
- done
33
- ```
34
-
35
- **探测结果推断:**
36
-
37
- | 探测到的文件 | 推断阶段 | 建议操作 |
38
- |---|---|---|
39
- | 无 .sillyspec/ 内容 | 未开始 | `/sillyspec:init` 或 `/sillyspec:scan` |
40
- | 有 SCAN-RAW.md 或 codebase 文档不全 | 扫描中断 | `/sillyspec:scan`(断点续扫) |
41
- | codebase 文档齐全无 changes/ | 已扫描未开始需求 | `/sillyspec:brainstorm` |
42
- | 有 REQUIREMENTS.md 无 changes/ | 绿地有需求 | `/sillyspec:brainstorm` |
43
- | changes/ 有 design 无 tasks | 待计划 | `/sillyspec:plan` |
44
- | tasks.md 有未完成 checkbox | 执行中 | `/sillyspec:execute` |
45
- | tasks.md 全完成 | 待验证 | `/sillyspec:verify` |
46
-
47
- **同时创建 STATE.md 记录推断状态。**
48
-
49
- ### 关键原则
50
-
51
- - STATE.md 是唯一恢复数据源(不需要 HANDOFF.json)
52
- - STATE.md 不需要 Git 提交(可加入 `.gitignore`)
53
- - 每次命令执行完自动更新
@@ -1,49 +0,0 @@
1
- ## 交互规范
2
- **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
3
-
4
- > 本模板由 `/sillyspec:scan --quick` 触发。如需完整深度扫描,使用 `/sillyspec:scan`。
5
-
6
- ## 核心约束(必须遵守)
7
- - ❌ 修改任何代码
8
- - ❌ 编造文件路径或代码模式(必须包含真实路径)
9
- - ❌ 读源码文件(快扫只读配置和目录)
10
-
11
- ## 快速扫描流程
12
-
13
- ### Step 1: 检查工作区模式
14
-
15
- ```bash
16
- cat .sillyspec/config.yaml 2>/dev/null
17
- ```
18
-
19
- 有 `projects` 字段 → 工作区模式:逐个子项目快扫。
20
-
21
- ### Step 2: 读配置文件
22
-
23
- ```bash
24
- cat package.json tsconfig.json requirements.txt Cargo.toml go.mod pom.xml build.gradle 2>/dev/null
25
- find . -maxdepth 2 -name "*.config.*" -not -path "*/node_modules/*" -not -path "*/.git/*" | head -20 | xargs cat 2>/dev/null
26
- ```
27
-
28
- ### Step 3: 生成文档
29
-
30
- `mkdir -p .sillyspec/codebase`,生成 4 份文档:
31
-
32
- 1. **ARCHITECTURE.md** — 架构 + 技术栈(合并原 STACK.md)
33
- 2. **STRUCTURE.md** — 目录结构(`find . -type f | head -200`)
34
- 3. **CONVENTIONS.md** — 空骨架文件,含章节标题(注意事项、代码风格等),供后续 quick/execute 追加
35
- 4. **PROJECT.md** — 项目概览
36
-
37
- ### Step 4: 暂存修改
38
-
39
- ```bash
40
- git add .sillyspec/
41
- ```
42
-
43
- 工作区模式在每个子项目分别暂存。
44
-
45
- 💡 扫描产出已暂存。准备好后用 `/sillyspec:commit` 提交。
46
-
47
- ### 完成
48
-
49
- 提示用户:快扫只提取基础信息。如需完整代码规范(框架规则、实体继承、代码风格),执行 `/sillyspec:scan` 进行深度扫描。