sillyspec 3.20.2 → 3.20.4

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 (133) hide show
  1. package/.claude/skills/sillyspec-archive/SKILL.md +21 -21
  2. package/.claude/skills/sillyspec-auto/SKILL.md +83 -83
  3. package/.claude/skills/sillyspec-brainstorm/SKILL.md +44 -44
  4. package/.claude/skills/sillyspec-commit/SKILL.md +106 -106
  5. package/.claude/skills/sillyspec-continue/SKILL.md +45 -45
  6. package/.claude/skills/sillyspec-doctor/SKILL.md +31 -31
  7. package/.claude/skills/sillyspec-execute/SKILL.md +30 -30
  8. package/.claude/skills/sillyspec-explore/SKILL.md +109 -109
  9. package/.claude/skills/sillyspec-knowledge/SKILL.md +269 -269
  10. package/.claude/skills/sillyspec-plan/SKILL.md +21 -21
  11. package/.claude/skills/sillyspec-propose/SKILL.md +21 -21
  12. package/.claude/skills/sillyspec-quick/SKILL.md +21 -21
  13. package/.claude/skills/sillyspec-resume/SKILL.md +68 -68
  14. package/.claude/skills/sillyspec-scan/SKILL.md +21 -21
  15. package/.claude/skills/sillyspec-state/SKILL.md +54 -54
  16. package/.claude/skills/sillyspec-status/SKILL.md +21 -21
  17. package/.claude/skills/sillyspec-verify/SKILL.md +21 -21
  18. package/.claude/skills/sillyspec-workspace/SKILL.md +157 -157
  19. package/.husky/pre-push +13 -13
  20. package/CLAUDE.md +18 -18
  21. package/README.md +198 -188
  22. package/SKILL.md +90 -91
  23. package/bin/sillyspec.js +2 -2
  24. package/docs/brainstorm-plan-contract.md +64 -64
  25. package/docs/plan-execute-contract.md +123 -123
  26. package/docs/platform-scan-protocol.md +298 -298
  27. package/docs/revision-mode.md +115 -115
  28. package/docs/sillyspec/file-lifecycle/known-implementation-gaps.md +99 -99
  29. package/docs/sillyspec/file-lifecycle/platform-workflows-sync.md +218 -218
  30. package/docs/sillyspec/file-lifecycle/stage-artifacts.md +167 -167
  31. package/docs/sillyspec/file-lifecycle/storage-and-state.md +148 -148
  32. package/docs/sillyspec/file-lifecycle/worktree-and-guard.md +211 -193
  33. package/docs/sillyspec/file-lifecycle.md +125 -125
  34. package/docs/workflow-contract-regression.md +106 -106
  35. package/docs/worktree-isolation.md +252 -252
  36. package/package.json +40 -40
  37. package/packages/dashboard/dist/assets/index-Bq_Z2hne.js +7446 -7446
  38. package/packages/dashboard/dist/assets/index-O2W5RV4z.css +1 -1
  39. package/packages/dashboard/dist/index.html +16 -16
  40. package/packages/dashboard/index.html +15 -15
  41. package/packages/dashboard/package-lock.json +2384 -2384
  42. package/packages/dashboard/package.json +25 -25
  43. package/packages/dashboard/server/executor.js +86 -86
  44. package/packages/dashboard/server/index.js +588 -588
  45. package/packages/dashboard/server/parser.js +526 -526
  46. package/packages/dashboard/server/watcher.js +344 -344
  47. package/packages/dashboard/src/App.vue +558 -558
  48. package/packages/dashboard/src/components/ActionBar.vue +93 -93
  49. package/packages/dashboard/src/components/CommandPalette.vue +96 -96
  50. package/packages/dashboard/src/components/DetailPanel.vue +137 -137
  51. package/packages/dashboard/src/components/LogStream.vue +65 -65
  52. package/packages/dashboard/src/components/PipelineStage.vue +95 -95
  53. package/packages/dashboard/src/components/PipelineView.vue +156 -156
  54. package/packages/dashboard/src/components/ProjectList.vue +210 -210
  55. package/packages/dashboard/src/components/StageBadge.vue +67 -67
  56. package/packages/dashboard/src/components/StepCard.vue +94 -94
  57. package/packages/dashboard/src/components/detail/DocsDetail.vue +48 -48
  58. package/packages/dashboard/src/components/detail/GitDetail.vue +61 -61
  59. package/packages/dashboard/src/components/detail/TechDetail.vue +43 -43
  60. package/packages/dashboard/src/composables/useDashboard.js +170 -170
  61. package/packages/dashboard/src/composables/useKeyboard.js +119 -119
  62. package/packages/dashboard/src/composables/useWebSocket.js +129 -129
  63. package/packages/dashboard/src/main.js +8 -8
  64. package/packages/dashboard/src/style.css +132 -132
  65. package/packages/dashboard/vite.config.js +18 -18
  66. package/src/brainstorm-postcheck.js +158 -158
  67. package/src/change-list.js +52 -52
  68. package/src/change-risk-profile.js +352 -352
  69. package/src/classify-change.js +73 -73
  70. package/src/constants.js +70 -70
  71. package/src/contract-matrix.js +278 -278
  72. package/src/db.js +201 -201
  73. package/src/endpoint-extractor.js +315 -315
  74. package/src/hooks/claude-pre-tool-use.cjs +125 -125
  75. package/src/hooks/worktree-guard.js +653 -653
  76. package/src/index.js +922 -900
  77. package/src/init.js +431 -431
  78. package/src/knowledge-match.js +130 -130
  79. package/src/migrate.js +117 -117
  80. package/src/modules.js +482 -482
  81. package/src/progress.js +1734 -1734
  82. package/src/run.js +3465 -3358
  83. package/src/scan-postcheck.js +387 -383
  84. package/src/setup.js +398 -398
  85. package/src/stage-contract.js +700 -700
  86. package/src/stages/archive.js +160 -160
  87. package/src/stages/brainstorm-auto.js +229 -229
  88. package/src/stages/brainstorm.js +645 -645
  89. package/src/stages/doctor.js +365 -365
  90. package/src/stages/execute.js +625 -625
  91. package/src/stages/explore.js +34 -34
  92. package/src/stages/index.js +29 -29
  93. package/src/stages/knowledge.js +498 -498
  94. package/src/stages/plan-postcheck.js +511 -513
  95. package/src/stages/plan.js +582 -582
  96. package/src/stages/propose.js +174 -174
  97. package/src/stages/quick.js +82 -82
  98. package/src/stages/scan.js +558 -558
  99. package/src/stages/status.js +65 -65
  100. package/src/stages/verify.js +322 -322
  101. package/src/sync.js +497 -497
  102. package/src/task-review.js +346 -346
  103. package/src/workflow.js +785 -785
  104. package/src/worktree-apply.js +549 -549
  105. package/src/worktree-deps.js +185 -0
  106. package/src/worktree.js +982 -932
  107. package/templates/workflows/archive-impact.yaml +79 -79
  108. package/templates/workflows/scan-docs.yaml +132 -132
  109. package/test/brainstorm-plan-contract.test.mjs +273 -273
  110. package/test/check-syntax.mjs +26 -26
  111. package/test/contract-artifacts.test.mjs +323 -323
  112. package/test/decision-supersede.test.mjs +277 -277
  113. package/test/knowledge-match.test.mjs +231 -231
  114. package/test/plan-execute-contract.test.mjs +330 -330
  115. package/test/plan-optimization.test.mjs +572 -572
  116. package/test/platform-artifacts.test.mjs +166 -166
  117. package/test/platform-failure-samples.test.mjs +199 -199
  118. package/test/platform-recovery-chain.test.mjs +167 -167
  119. package/test/platform-recovery.test.mjs +136 -136
  120. package/test/platform-scan-p0.test.mjs +168 -168
  121. package/test/revision-v1.test.mjs +1145 -1145
  122. package/test/run-scan-project-parse.test.mjs +200 -200
  123. package/test/run-tests.mjs +48 -48
  124. package/test/scan-knowledge.test.mjs +175 -175
  125. package/test/scan-paths.test.mjs +68 -68
  126. package/test/scan-postcheck.test.mjs +197 -197
  127. package/test/spec-dir.test.mjs +206 -206
  128. package/test/stage-contract.test.mjs +299 -299
  129. package/test/stage-definitions.test.mjs +39 -39
  130. package/test/wait-gates.test.mjs +496 -496
  131. package/test/worktree-deps-provision.test.mjs +148 -0
  132. package/test/worktree-guard.test.mjs +71 -71
  133. package/test/worktree-native-overlay.test.mjs +188 -188
@@ -1,157 +1,157 @@
1
- ---
2
- name: sillyspec:workspace
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
- ### Step 1: 检查工作区配置
23
-
24
- ```bash
25
- ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
26
- ```
27
-
28
- 如果不存在 → 这是一个尚未配置工作区的项目。询问用户:
29
- 1. 初始化工作区
30
- 2. 跳过
31
-
32
- ### Step 2: 解析指令
33
-
34
- 根据 `$ARGUMENTS` 或默认行为:
35
-
36
- - **无参数 / `status`** → 显示工作区状态
37
- - **`add`** → 添加子项目
38
- - **`remove`** → 移除子项目
39
- - **`info`** → 显示某个子项目详情
40
- - 无参数且 projects/*.yaml 不存在 → 初始化工作区
41
-
42
- ### Step 3: 执行对应操作
43
-
44
- #### 3a. 初始化工作区(projects/ 不存在时)
45
-
46
- 1. 询问工作区名称(默认用当前目录名)
47
- 2. 逐个添加子项目:
48
- - 询问子项目名称(如 `frontend`、`backend`)
49
- - 询问子项目路径(相对于工作区根目录,如 `./frontend`)
50
- - 询问子项目角色描述(如 `前端 - Vue3 + TypeScript`)
51
- - 询问仓库地址(可选)
52
- - 验证路径存在
53
- 添加完后询问:
54
- > 1. 继续添加子项目
55
- > 2. 完成,配置共享规范
56
- 3. 询问共享规范文件
57
- 4. 为每个子项目创建 `.sillyspec/projects/<name>.yaml`:
58
- ```yaml
59
- name: <name>
60
- path: <relative-path>
61
- status: active
62
- ```
63
- > ⚠️ `sillyspec init` 只会写入 `name`、`path`、`status` 三个字段。
64
- > `role` 和 `repo` 由 `/sillyspec:workspace add` 追加。
65
- 5. 创建 `.sillyspec/shared/` 目录
66
-
67
- #### 3b. 添加子项目(`add`)
68
-
69
- 1. 询问名称、路径、角色
70
- 2. 验证路径存在
71
- 3. 创建/更新 `.sillyspec/projects/<name>.yaml`
72
- 4. Git 提交
73
-
74
- #### 3c. 移除子项目(`remove`)
75
-
76
- 1. 显示当前所有子项目列表
77
- 2. 询问要移除哪个:
78
- > 1. (列出子项目名称)
79
- > 2. 取消
80
- 3. 删除 `.sillyspec/projects/<name>.yaml`
81
- 4. Git 提交
82
-
83
- #### 3d. 工作区状态(`status`,默认)
84
-
85
- 读取所有 `projects/*.yaml`,对每个子项目检查:
86
-
87
- ```bash
88
- # 读取子项目列表
89
- for f in .sillyspec/projects/*.yaml; do
90
- [ -f "$f" ] || continue
91
- proj_name=$(basename "$f" .yaml)
92
- proj_path=$(grep '^path:' "$f" | head -1 | sed 's/^path:[[:space:]]*//')
93
- proj_role=$(grep '^role:' "$f" | head -1 | sed 's/^role:[[:space:]]*//')
94
- # 检查子项目状态
95
- cd "$proj_path"
96
- ls .sillyspec/ 2>/dev/null
97
- cat .sillyspec/PROJECT.md 2>/dev/null
98
- ls .sillyspec/docs/${proj_name}/scan/ 2>/dev/null | wc -l
99
- cd -
100
- done
101
- ```
102
-
103
- 输出格式:
104
-
105
- ```
106
- 🏢 工作区:<workspace-name>
107
-
108
- 📦 子项目(N 个):
109
- ✅ frontend ./frontend 前端 - Vue3 + TypeScript 已扫描(7 份文档)
110
- ⚠️ backend ./backend 后端 - Node.js 已初始化(未扫描)
111
- ❌ miniprogram ./miniprogram 小程序 - Taro 未初始化
112
-
113
- 📄 共享规范:2 份
114
- - api-contract.md
115
- - data-models.md
116
-
117
- 💡 操作:
118
- /sillyspec:workspace add — 添加子项目
119
- /sillyspec:workspace remove — 移除子项目
120
- /sillyspec:init — 初始化子项目
121
- /sillyspec:scan — 扫描子项目
122
- ```
123
-
124
- #### 3e. 子项目详情(`info <name>`)
125
-
126
- 显示指定子项目的详细信息,包括 PROJECT.md、REQUIREMENTS.md 内容摘要、扫描文档列表。
127
-
128
- ### Step 4: projects/*.yaml 格式
129
-
130
- 每个子项目对应 `.sillyspec/projects/<name>.yaml`:
131
-
132
- **sillyspec init 创建的格式(3 字段):**
133
- ```yaml
134
- name: frontend
135
- path: ./frontend
136
- status: active
137
- ```
138
-
139
- **workspace add 扩展的格式(最多 5 字段):**
140
- ```yaml
141
- name: frontend
142
- path: ./frontend
143
- status: active
144
- role: 前端 - Vue3 + TypeScript
145
- repo: https://github.com/xxx/frontend.git # 可选
146
- ```
147
-
148
- ### 最后说:
149
-
150
- > 工作区已更新。
151
- > 下一步:对子项目运行 `/sillyspec:init` 或 `/sillyspec:scan`。
152
-
153
- ## 绝对规则
154
- - 不修改子项目目录下的任何文件
155
- - projects/*.yaml 必须是合法 YAML
156
- - 子项目路径必须是相对于工作区根目录的相对路径
157
- - 路径必须验证存在性
1
+ ---
2
+ name: sillyspec:workspace
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
+ ### Step 1: 检查工作区配置
23
+
24
+ ```bash
25
+ ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
26
+ ```
27
+
28
+ 如果不存在 → 这是一个尚未配置工作区的项目。询问用户:
29
+ 1. 初始化工作区
30
+ 2. 跳过
31
+
32
+ ### Step 2: 解析指令
33
+
34
+ 根据 `$ARGUMENTS` 或默认行为:
35
+
36
+ - **无参数 / `status`** → 显示工作区状态
37
+ - **`add`** → 添加子项目
38
+ - **`remove`** → 移除子项目
39
+ - **`info`** → 显示某个子项目详情
40
+ - 无参数且 projects/*.yaml 不存在 → 初始化工作区
41
+
42
+ ### Step 3: 执行对应操作
43
+
44
+ #### 3a. 初始化工作区(projects/ 不存在时)
45
+
46
+ 1. 询问工作区名称(默认用当前目录名)
47
+ 2. 逐个添加子项目:
48
+ - 询问子项目名称(如 `frontend`、`backend`)
49
+ - 询问子项目路径(相对于工作区根目录,如 `./frontend`)
50
+ - 询问子项目角色描述(如 `前端 - Vue3 + TypeScript`)
51
+ - 询问仓库地址(可选)
52
+ - 验证路径存在
53
+ 添加完后询问:
54
+ > 1. 继续添加子项目
55
+ > 2. 完成,配置共享规范
56
+ 3. 询问共享规范文件
57
+ 4. 为每个子项目创建 `.sillyspec/projects/<name>.yaml`:
58
+ ```yaml
59
+ name: <name>
60
+ path: <relative-path>
61
+ status: active
62
+ ```
63
+ > ⚠️ `sillyspec init` 只会写入 `name`、`path`、`status` 三个字段。
64
+ > `role` 和 `repo` 由 `/sillyspec:workspace add` 追加。
65
+ 5. 创建 `.sillyspec/shared/` 目录
66
+
67
+ #### 3b. 添加子项目(`add`)
68
+
69
+ 1. 询问名称、路径、角色
70
+ 2. 验证路径存在
71
+ 3. 创建/更新 `.sillyspec/projects/<name>.yaml`
72
+ 4. Git 提交
73
+
74
+ #### 3c. 移除子项目(`remove`)
75
+
76
+ 1. 显示当前所有子项目列表
77
+ 2. 询问要移除哪个:
78
+ > 1. (列出子项目名称)
79
+ > 2. 取消
80
+ 3. 删除 `.sillyspec/projects/<name>.yaml`
81
+ 4. Git 提交
82
+
83
+ #### 3d. 工作区状态(`status`,默认)
84
+
85
+ 读取所有 `projects/*.yaml`,对每个子项目检查:
86
+
87
+ ```bash
88
+ # 读取子项目列表
89
+ for f in .sillyspec/projects/*.yaml; do
90
+ [ -f "$f" ] || continue
91
+ proj_name=$(basename "$f" .yaml)
92
+ proj_path=$(grep '^path:' "$f" | head -1 | sed 's/^path:[[:space:]]*//')
93
+ proj_role=$(grep '^role:' "$f" | head -1 | sed 's/^role:[[:space:]]*//')
94
+ # 检查子项目状态
95
+ cd "$proj_path"
96
+ ls .sillyspec/ 2>/dev/null
97
+ cat .sillyspec/PROJECT.md 2>/dev/null
98
+ ls .sillyspec/docs/${proj_name}/scan/ 2>/dev/null | wc -l
99
+ cd -
100
+ done
101
+ ```
102
+
103
+ 输出格式:
104
+
105
+ ```
106
+ 🏢 工作区:<workspace-name>
107
+
108
+ 📦 子项目(N 个):
109
+ ✅ frontend ./frontend 前端 - Vue3 + TypeScript 已扫描(7 份文档)
110
+ ⚠️ backend ./backend 后端 - Node.js 已初始化(未扫描)
111
+ ❌ miniprogram ./miniprogram 小程序 - Taro 未初始化
112
+
113
+ 📄 共享规范:2 份
114
+ - api-contract.md
115
+ - data-models.md
116
+
117
+ 💡 操作:
118
+ /sillyspec:workspace add — 添加子项目
119
+ /sillyspec:workspace remove — 移除子项目
120
+ /sillyspec:init — 初始化子项目
121
+ /sillyspec:scan — 扫描子项目
122
+ ```
123
+
124
+ #### 3e. 子项目详情(`info <name>`)
125
+
126
+ 显示指定子项目的详细信息,包括 PROJECT.md、REQUIREMENTS.md 内容摘要、扫描文档列表。
127
+
128
+ ### Step 4: projects/*.yaml 格式
129
+
130
+ 每个子项目对应 `.sillyspec/projects/<name>.yaml`:
131
+
132
+ **sillyspec init 创建的格式(3 字段):**
133
+ ```yaml
134
+ name: frontend
135
+ path: ./frontend
136
+ status: active
137
+ ```
138
+
139
+ **workspace add 扩展的格式(最多 5 字段):**
140
+ ```yaml
141
+ name: frontend
142
+ path: ./frontend
143
+ status: active
144
+ role: 前端 - Vue3 + TypeScript
145
+ repo: https://github.com/xxx/frontend.git # 可选
146
+ ```
147
+
148
+ ### 最后说:
149
+
150
+ > 工作区已更新。
151
+ > 下一步:对子项目运行 `/sillyspec:init` 或 `/sillyspec:scan`。
152
+
153
+ ## 绝对规则
154
+ - 不修改子项目目录下的任何文件
155
+ - projects/*.yaml 必须是合法 YAML
156
+ - 子项目路径必须是相对于工作区根目录的相对路径
157
+ - 路径必须验证存在性
package/.husky/pre-push CHANGED
@@ -1,13 +1,13 @@
1
- #!/bin/sh
2
- echo "🔧 pre-push: running lint + test..."
3
- npm run lint --silent 2>&1
4
- if [ $? -ne 0 ]; then
5
- echo "❌ pre-push: lint failed, aborting push"
6
- exit 1
7
- fi
8
- npm test --silent 2>&1
9
- if [ $? -ne 0 ]; then
10
- echo "❌ pre-push: test failed, aborting push"
11
- exit 1
12
- fi
13
- echo "✅ pre-push: lint + test passed"
1
+ #!/bin/sh
2
+ echo "🔧 pre-push: running lint + test..."
3
+ npm run lint --silent 2>&1
4
+ if [ $? -ne 0 ]; then
5
+ echo "❌ pre-push: lint failed, aborting push"
6
+ exit 1
7
+ fi
8
+ npm test --silent 2>&1
9
+ if [ $? -ne 0 ]; then
10
+ echo "❌ pre-push: test failed, aborting push"
11
+ exit 1
12
+ fi
13
+ echo "✅ pre-push: lint + test passed"
package/CLAUDE.md CHANGED
@@ -1,18 +1,18 @@
1
- # Claude Code 指引
2
-
3
- ## 文件生命周期文档同步
4
- 每次修改 `src/stages/` 下的阶段定义(prompt、步骤、输出文件名等)或 `src/run.js`、`src/progress.js` 等影响文件生命周期的代码后,**必须同步更新** `docs/sillyspec/file-lifecycle.md`,确保文档与代码一致。
5
-
6
- ### 触发更新的典型改动
7
- - 新增/删除/重命名阶段步骤
8
- - 修改步骤 prompt 中的输出文件名(如 verify-result.md)
9
- - 修改阶段间的流转逻辑(如 archive 归档方式)
10
- - 新增/删除运行时文件类型(如 gate-status.json)
11
- - 修改 ProgressManager 的数据存储方式(如 SQLite 表结构变更)
12
-
13
- ### 更新检查清单
14
- - [ ] 文件名引用一致(prompt 输出的文件名 == validateFileLocations 期望的文件名)
15
- - [ ] 阶段步骤描述与 `src/stages/*.js` 一致
16
- - [ ] 归档/清理流程描述与实际代码逻辑一致
17
- - [ ] 数据库 Schema 描述与 `src/db.js` 一致
18
- - [ ] 更新文档头部 `updated_at` 时间戳
1
+ # Claude Code 指引
2
+
3
+ ## 文件生命周期文档同步
4
+ 每次修改 `src/stages/` 下的阶段定义(prompt、步骤、输出文件名等)或 `src/run.js`、`src/progress.js` 等影响文件生命周期的代码后,**必须同步更新** `docs/sillyspec/file-lifecycle.md`,确保文档与代码一致。
5
+
6
+ ### 触发更新的典型改动
7
+ - 新增/删除/重命名阶段步骤
8
+ - 修改步骤 prompt 中的输出文件名(如 verify-result.md)
9
+ - 修改阶段间的流转逻辑(如 archive 归档方式)
10
+ - 新增/删除运行时文件类型(如 gate-status.json)
11
+ - 修改 ProgressManager 的数据存储方式(如 SQLite 表结构变更)
12
+
13
+ ### 更新检查清单
14
+ - [ ] 文件名引用一致(prompt 输出的文件名 == validateFileLocations 期望的文件名)
15
+ - [ ] 阶段步骤描述与 `src/stages/*.js` 一致
16
+ - [ ] 归档/清理流程描述与实际代码逻辑一致
17
+ - [ ] 数据库 Schema 描述与 `src/db.js` 一致
18
+ - [ ] 更新文档头部 `updated_at` 时间戳