sillyspec 3.27.6 → 3.27.9

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 (923) hide show
  1. package/.claude/skills/sillyspec-archive/SKILL.md +87 -87
  2. package/.claude/skills/sillyspec-auto/SKILL.md +93 -93
  3. package/.claude/skills/sillyspec-brainstorm/SKILL.md +114 -114
  4. package/.claude/skills/sillyspec-commit/SKILL.md +67 -67
  5. package/.claude/skills/sillyspec-continue/SKILL.md +47 -47
  6. package/.claude/skills/sillyspec-doctor/SKILL.md +76 -76
  7. package/.claude/skills/sillyspec-execute/SKILL.md +214 -214
  8. package/.claude/skills/sillyspec-explore/SKILL.md +102 -102
  9. package/.claude/skills/sillyspec-export/SKILL.md +57 -57
  10. package/.claude/skills/sillyspec-init/SKILL.md +177 -177
  11. package/.claude/skills/sillyspec-knowledge/SKILL.md +269 -269
  12. package/.claude/skills/sillyspec-plan/SKILL.md +156 -156
  13. package/.claude/skills/sillyspec-propose/SKILL.md +87 -0
  14. package/.claude/skills/sillyspec-quick/SKILL.md +116 -116
  15. package/.claude/skills/sillyspec-resume/SKILL.md +70 -70
  16. package/.claude/skills/sillyspec-scan/SKILL.md +79 -79
  17. package/.claude/skills/sillyspec-state/SKILL.md +64 -64
  18. package/.claude/skills/sillyspec-status/SKILL.md +54 -54
  19. package/.claude/skills/sillyspec-verify/SKILL.md +87 -87
  20. package/.claude/skills/sillyspec-workspace/SKILL.md +175 -175
  21. package/.claude/skills/verify-per-user/SKILL.md +6 -0
  22. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-archive/SKILL.md +87 -0
  23. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-auto/SKILL.md +93 -0
  24. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-brainstorm/SKILL.md +114 -0
  25. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-commit/SKILL.md +67 -0
  26. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-continue/SKILL.md +47 -0
  27. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-doctor/SKILL.md +76 -0
  28. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-execute/SKILL.md +214 -0
  29. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-explore/SKILL.md +102 -0
  30. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-export/SKILL.md +57 -0
  31. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-init/SKILL.md +177 -0
  32. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-knowledge/SKILL.md +270 -0
  33. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-plan/SKILL.md +156 -0
  34. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-propose/SKILL.md +87 -0
  35. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-quick/SKILL.md +116 -0
  36. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-resume/SKILL.md +70 -0
  37. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-scan/SKILL.md +79 -0
  38. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-state/SKILL.md +64 -0
  39. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-status/SKILL.md +54 -0
  40. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-verify/SKILL.md +87 -0
  41. package/.worktrees/2c37b1d7/.claude/skills/sillyspec-workspace/SKILL.md +175 -0
  42. package/.worktrees/2c37b1d7/.claude/skills/verify-per-user/SKILL.md +6 -0
  43. package/.worktrees/2c37b1d7/.gitattributes +2 -0
  44. package/.worktrees/2c37b1d7/.husky/pre-push +20 -0
  45. package/.worktrees/2c37b1d7/README.md +203 -0
  46. package/.worktrees/2c37b1d7/SKILL.md +91 -0
  47. package/.worktrees/2c37b1d7/architecture-analysis.md +448 -0
  48. package/.worktrees/2c37b1d7/bin/sillyspec.js +2 -0
  49. package/.worktrees/2c37b1d7/eval/README.md +86 -0
  50. package/.worktrees/2c37b1d7/eval/eval.config.json +28 -0
  51. package/.worktrees/2c37b1d7/eval/lib/adapters/cli.mjs +63 -0
  52. package/.worktrees/2c37b1d7/eval/lib/adapters/dryrun.mjs +27 -0
  53. package/.worktrees/2c37b1d7/eval/lib/config.mjs +82 -0
  54. package/.worktrees/2c37b1d7/eval/lib/db.mjs +76 -0
  55. package/.worktrees/2c37b1d7/eval/lib/report.mjs +120 -0
  56. package/.worktrees/2c37b1d7/eval/lib/runner.mjs +157 -0
  57. package/.worktrees/2c37b1d7/eval/lib/tasks.mjs +73 -0
  58. package/.worktrees/2c37b1d7/eval/lib/util.mjs +107 -0
  59. package/.worktrees/2c37b1d7/eval/lib/workdir.mjs +30 -0
  60. package/.worktrees/2c37b1d7/eval/run.mjs +83 -0
  61. package/.worktrees/2c37b1d7/eval/tasks/001-slugify/files/package.json +6 -0
  62. package/.worktrees/2c37b1d7/eval/tasks/001-slugify/solution/src/slugify.mjs +26 -0
  63. package/.worktrees/2c37b1d7/eval/tasks/001-slugify/task.json +6 -0
  64. package/.worktrees/2c37b1d7/eval/tasks/001-slugify/verify.mjs +28 -0
  65. package/.worktrees/2c37b1d7/eval/tasks/002-each-day/files/package.json +6 -0
  66. package/.worktrees/2c37b1d7/eval/tasks/002-each-day/files/src/dates.mjs +4 -0
  67. package/.worktrees/2c37b1d7/eval/tasks/002-each-day/solution/src/dates.mjs +30 -0
  68. package/.worktrees/2c37b1d7/eval/tasks/002-each-day/task.json +6 -0
  69. package/.worktrees/2c37b1d7/eval/tasks/002-each-day/verify.mjs +31 -0
  70. package/.worktrees/2c37b1d7/eval/tasks/003-word-report/files/data/notes.txt +5 -0
  71. package/.worktrees/2c37b1d7/eval/tasks/003-word-report/files/package.json +6 -0
  72. package/.worktrees/2c37b1d7/eval/tasks/003-word-report/solution/bin/report.mjs +36 -0
  73. package/.worktrees/2c37b1d7/eval/tasks/003-word-report/task.json +6 -0
  74. package/.worktrees/2c37b1d7/eval/tasks/003-word-report/verify.mjs +38 -0
  75. package/.worktrees/2c37b1d7/logo.jpg +0 -0
  76. package/.worktrees/2c37b1d7/package-lock.json +977 -0
  77. package/.worktrees/2c37b1d7/package.json +41 -0
  78. package/.worktrees/2c37b1d7/packages/dashboard/dist/assets/index-Bq_Z2hne.js +7446 -0
  79. package/.worktrees/2c37b1d7/packages/dashboard/dist/assets/index-O2W5RV4z.css +1 -0
  80. package/.worktrees/2c37b1d7/packages/dashboard/dist/favicon.jpg +0 -0
  81. package/.worktrees/2c37b1d7/packages/dashboard/dist/index.html +16 -0
  82. package/.worktrees/2c37b1d7/packages/dashboard/dist/logo.jpg +0 -0
  83. package/.worktrees/2c37b1d7/packages/dashboard/dist/prototype-dashboard.html +836 -0
  84. package/.worktrees/2c37b1d7/packages/dashboard/dist/prototype-overview.html +256 -0
  85. package/.worktrees/2c37b1d7/packages/dashboard/package.json +25 -0
  86. package/.worktrees/2c37b1d7/packages/dashboard/server/executor.js +95 -0
  87. package/.worktrees/2c37b1d7/packages/dashboard/server/index.js +679 -0
  88. package/.worktrees/2c37b1d7/packages/dashboard/server/parser.js +526 -0
  89. package/.worktrees/2c37b1d7/packages/dashboard/server/watcher.js +357 -0
  90. package/.worktrees/2c37b1d7/src/agent-session-log.js +803 -0
  91. package/.worktrees/2c37b1d7/src/change-list.js +290 -0
  92. package/.worktrees/2c37b1d7/src/change-risk-profile.js +339 -0
  93. package/.worktrees/2c37b1d7/src/check-primitives.js +65 -0
  94. package/.worktrees/2c37b1d7/src/classify-change.js +109 -0
  95. package/.worktrees/2c37b1d7/src/commit-suggest.js +202 -0
  96. package/.worktrees/2c37b1d7/src/config-cat.js +88 -0
  97. package/.worktrees/2c37b1d7/src/config-schema.js +328 -0
  98. package/.worktrees/2c37b1d7/src/constants.js +97 -0
  99. package/.worktrees/2c37b1d7/src/contract-matrix.js +533 -0
  100. package/.worktrees/2c37b1d7/src/datetime.js +20 -0
  101. package/.worktrees/2c37b1d7/src/db-engine.js +55 -0
  102. package/.worktrees/2c37b1d7/src/db.js +381 -0
  103. package/.worktrees/2c37b1d7/src/decision-distill.js +517 -0
  104. package/.worktrees/2c37b1d7/src/dispatch/backends/local-agent.js +155 -0
  105. package/.worktrees/2c37b1d7/src/dispatch/backends/sillyhub-mcp.js +245 -0
  106. package/.worktrees/2c37b1d7/src/dispatch/probe.js +246 -0
  107. package/.worktrees/2c37b1d7/src/dispatch/strategy.js +121 -0
  108. package/.worktrees/2c37b1d7/src/docs-check.js +825 -0
  109. package/.worktrees/2c37b1d7/src/docs-debt.js +393 -0
  110. package/.worktrees/2c37b1d7/src/docs-gate.js +107 -0
  111. package/.worktrees/2c37b1d7/src/doctor-diagnostics.js +1099 -0
  112. package/.worktrees/2c37b1d7/src/endpoint-extractor.js +409 -0
  113. package/.worktrees/2c37b1d7/src/foreign-declared.js +155 -0
  114. package/.worktrees/2c37b1d7/src/fs-atomic.js +73 -0
  115. package/.worktrees/2c37b1d7/src/git-helper.js +150 -0
  116. package/.worktrees/2c37b1d7/src/hooks/claude-pre-tool-use.cjs +130 -0
  117. package/.worktrees/2c37b1d7/src/hooks/worktree-guard.js +892 -0
  118. package/.worktrees/2c37b1d7/src/index.js +2854 -0
  119. package/.worktrees/2c37b1d7/src/init.js +626 -0
  120. package/.worktrees/2c37b1d7/src/knowledge-match.js +231 -0
  121. package/.worktrees/2c37b1d7/src/local-detect.js +128 -0
  122. package/.worktrees/2c37b1d7/src/local-register.js +104 -0
  123. package/.worktrees/2c37b1d7/src/machine-interface.js +543 -0
  124. package/.worktrees/2c37b1d7/src/migrate.js +127 -0
  125. package/.worktrees/2c37b1d7/src/module-impact.js +166 -0
  126. package/.worktrees/2c37b1d7/src/module-resolve.js +222 -0
  127. package/.worktrees/2c37b1d7/src/modules.js +580 -0
  128. package/.worktrees/2c37b1d7/src/plan-adopt-waves.js +126 -0
  129. package/.worktrees/2c37b1d7/src/progress/change-registry.js +336 -0
  130. package/.worktrees/2c37b1d7/src/progress/consistency-doctor.js +355 -0
  131. package/.worktrees/2c37b1d7/src/progress/shared.js +36 -0
  132. package/.worktrees/2c37b1d7/src/progress/stage-machine.js +594 -0
  133. package/.worktrees/2c37b1d7/src/progress/step-store.js +265 -0
  134. package/.worktrees/2c37b1d7/src/progress.js +1304 -0
  135. package/.worktrees/2c37b1d7/src/quick-recommend.js +115 -0
  136. package/.worktrees/2c37b1d7/src/quicklog.js +883 -0
  137. package/.worktrees/2c37b1d7/src/review-tier.js +77 -0
  138. package/.worktrees/2c37b1d7/src/run/command.js +1641 -0
  139. package/.worktrees/2c37b1d7/src/run/complete-handlers.js +1552 -0
  140. package/.worktrees/2c37b1d7/src/run/complete.js +1259 -0
  141. package/.worktrees/2c37b1d7/src/run/concurrent-detect.js +156 -0
  142. package/.worktrees/2c37b1d7/src/run/gates.js +1111 -0
  143. package/.worktrees/2c37b1d7/src/run/multi-repo-context.js +208 -0
  144. package/.worktrees/2c37b1d7/src/run/next.js +128 -0
  145. package/.worktrees/2c37b1d7/src/run/prompt.js +843 -0
  146. package/.worktrees/2c37b1d7/src/run/quick-audit.js +186 -0
  147. package/.worktrees/2c37b1d7/src/run/scan-profile.js +269 -0
  148. package/.worktrees/2c37b1d7/src/run/shared.js +1562 -0
  149. package/.worktrees/2c37b1d7/src/run/stage.js +587 -0
  150. package/.worktrees/2c37b1d7/src/run.js +23 -0
  151. package/.worktrees/2c37b1d7/src/scan-diff.js +388 -0
  152. package/.worktrees/2c37b1d7/src/scan-postcheck.js +524 -0
  153. package/.worktrees/2c37b1d7/src/scan-staleness.js +95 -0
  154. package/.worktrees/2c37b1d7/src/setup.js +414 -0
  155. package/.worktrees/2c37b1d7/src/sillyhub-mcp/client.js +597 -0
  156. package/.worktrees/2c37b1d7/src/sillyhub-mcp/config.js +62 -0
  157. package/.worktrees/2c37b1d7/src/spec-dir-typo.js +50 -0
  158. package/.worktrees/2c37b1d7/src/spec-sync.js +358 -0
  159. package/.worktrees/2c37b1d7/src/stage-contract-engine.js +171 -0
  160. package/.worktrees/2c37b1d7/src/stage-contract-spec.js +551 -0
  161. package/.worktrees/2c37b1d7/src/stage-contract.js +948 -0
  162. package/.worktrees/2c37b1d7/src/stage-review.js +597 -0
  163. package/.worktrees/2c37b1d7/src/stages/archive.js +199 -0
  164. package/.worktrees/2c37b1d7/src/stages/brainstorm-auto.js +285 -0
  165. package/.worktrees/2c37b1d7/src/stages/brainstorm.js +624 -0
  166. package/.worktrees/2c37b1d7/src/stages/cmd-existence.js +145 -0
  167. package/.worktrees/2c37b1d7/src/stages/doctor.js +540 -0
  168. package/.worktrees/2c37b1d7/src/stages/execute.js +1277 -0
  169. package/.worktrees/2c37b1d7/src/stages/explore.js +43 -0
  170. package/.worktrees/2c37b1d7/src/stages/index.js +29 -0
  171. package/.worktrees/2c37b1d7/src/stages/knowledge.js +514 -0
  172. package/.worktrees/2c37b1d7/src/stages/plan-postcheck.js +1398 -0
  173. package/.worktrees/2c37b1d7/src/stages/plan.js +655 -0
  174. package/.worktrees/2c37b1d7/src/stages/quick.js +167 -0
  175. package/.worktrees/2c37b1d7/src/stages/scan.js +608 -0
  176. package/.worktrees/2c37b1d7/src/stages/status.js +64 -0
  177. package/.worktrees/2c37b1d7/src/stages/verify.js +246 -0
  178. package/.worktrees/2c37b1d7/src/sync.js +1470 -0
  179. package/.worktrees/2c37b1d7/src/task-review.js +1498 -0
  180. package/.worktrees/2c37b1d7/src/taskcard-placeholders.js +21 -0
  181. package/.worktrees/2c37b1d7/src/taskcard.js +250 -0
  182. package/.worktrees/2c37b1d7/src/verify-postcheck.js +1718 -0
  183. package/.worktrees/2c37b1d7/src/verify-probes.js +327 -0
  184. package/.worktrees/2c37b1d7/src/version.js +19 -0
  185. package/.worktrees/2c37b1d7/src/workflow.js +600 -0
  186. package/.worktrees/2c37b1d7/src/workspace.js +125 -0
  187. package/.worktrees/2c37b1d7/src/worktree-apply.js +1611 -0
  188. package/.worktrees/2c37b1d7/src/worktree-deps.js +668 -0
  189. package/.worktrees/2c37b1d7/src/worktree.js +1849 -0
  190. package/.worktrees/2c37b1d7/templates/claude-instruction.md +23 -0
  191. package/.worktrees/2c37b1d7/templates/prompts/taskcard-rules.md +29 -0
  192. package/.worktrees/2c37b1d7/templates/prompts/testcase-design.md +12 -0
  193. package/.worktrees/2c37b1d7/templates/prompts/verify-probes.md +32 -0
  194. package/.worktrees/2c37b1d7/templates/workflows/archive-impact.yaml +79 -0
  195. package/.worktrees/2c37b1d7/templates/workflows/scan-docs.yaml +132 -0
  196. package/.worktrees/542c4415/.claude/skills/sillyspec-archive/SKILL.md +87 -0
  197. package/.worktrees/542c4415/.claude/skills/sillyspec-auto/SKILL.md +93 -0
  198. package/.worktrees/542c4415/.claude/skills/sillyspec-brainstorm/SKILL.md +114 -0
  199. package/.worktrees/542c4415/.claude/skills/sillyspec-commit/SKILL.md +67 -0
  200. package/.worktrees/542c4415/.claude/skills/sillyspec-continue/SKILL.md +47 -0
  201. package/.worktrees/542c4415/.claude/skills/sillyspec-doctor/SKILL.md +76 -0
  202. package/.worktrees/542c4415/.claude/skills/sillyspec-execute/SKILL.md +214 -0
  203. package/.worktrees/542c4415/.claude/skills/sillyspec-explore/SKILL.md +102 -0
  204. package/.worktrees/542c4415/.claude/skills/sillyspec-export/SKILL.md +57 -0
  205. package/.worktrees/542c4415/.claude/skills/sillyspec-init/SKILL.md +177 -0
  206. package/.worktrees/542c4415/.claude/skills/sillyspec-knowledge/SKILL.md +270 -0
  207. package/.worktrees/542c4415/.claude/skills/sillyspec-plan/SKILL.md +156 -0
  208. package/.worktrees/542c4415/.claude/skills/sillyspec-quick/SKILL.md +116 -0
  209. package/.worktrees/542c4415/.claude/skills/sillyspec-resume/SKILL.md +70 -0
  210. package/.worktrees/542c4415/.claude/skills/sillyspec-scan/SKILL.md +79 -0
  211. package/.worktrees/542c4415/.claude/skills/sillyspec-state/SKILL.md +64 -0
  212. package/.worktrees/542c4415/.claude/skills/sillyspec-status/SKILL.md +54 -0
  213. package/.worktrees/542c4415/.claude/skills/sillyspec-verify/SKILL.md +87 -0
  214. package/.worktrees/542c4415/.claude/skills/sillyspec-workspace/SKILL.md +175 -0
  215. package/.worktrees/542c4415/.gitattributes +2 -0
  216. package/.worktrees/542c4415/.husky/pre-push +20 -0
  217. package/.worktrees/542c4415/README.md +203 -0
  218. package/.worktrees/542c4415/SKILL.md +91 -0
  219. package/.worktrees/542c4415/architecture-analysis.md +448 -0
  220. package/.worktrees/542c4415/bin/sillyspec.js +2 -0
  221. package/.worktrees/542c4415/eval/README.md +86 -0
  222. package/.worktrees/542c4415/eval/eval.config.json +28 -0
  223. package/.worktrees/542c4415/eval/lib/adapters/cli.mjs +63 -0
  224. package/.worktrees/542c4415/eval/lib/adapters/dryrun.mjs +27 -0
  225. package/.worktrees/542c4415/eval/lib/config.mjs +82 -0
  226. package/.worktrees/542c4415/eval/lib/db.mjs +76 -0
  227. package/.worktrees/542c4415/eval/lib/report.mjs +120 -0
  228. package/.worktrees/542c4415/eval/lib/runner.mjs +157 -0
  229. package/.worktrees/542c4415/eval/lib/tasks.mjs +73 -0
  230. package/.worktrees/542c4415/eval/lib/util.mjs +107 -0
  231. package/.worktrees/542c4415/eval/lib/workdir.mjs +30 -0
  232. package/.worktrees/542c4415/eval/run.mjs +83 -0
  233. package/.worktrees/542c4415/eval/tasks/001-slugify/files/package.json +6 -0
  234. package/.worktrees/542c4415/eval/tasks/001-slugify/solution/src/slugify.mjs +26 -0
  235. package/.worktrees/542c4415/eval/tasks/001-slugify/task.json +6 -0
  236. package/.worktrees/542c4415/eval/tasks/001-slugify/verify.mjs +28 -0
  237. package/.worktrees/542c4415/eval/tasks/002-each-day/files/package.json +6 -0
  238. package/.worktrees/542c4415/eval/tasks/002-each-day/files/src/dates.mjs +4 -0
  239. package/.worktrees/542c4415/eval/tasks/002-each-day/solution/src/dates.mjs +30 -0
  240. package/.worktrees/542c4415/eval/tasks/002-each-day/task.json +6 -0
  241. package/.worktrees/542c4415/eval/tasks/002-each-day/verify.mjs +31 -0
  242. package/.worktrees/542c4415/eval/tasks/003-word-report/files/data/notes.txt +5 -0
  243. package/.worktrees/542c4415/eval/tasks/003-word-report/files/package.json +6 -0
  244. package/.worktrees/542c4415/eval/tasks/003-word-report/solution/bin/report.mjs +36 -0
  245. package/.worktrees/542c4415/eval/tasks/003-word-report/task.json +6 -0
  246. package/.worktrees/542c4415/eval/tasks/003-word-report/verify.mjs +38 -0
  247. package/.worktrees/542c4415/logo.jpg +0 -0
  248. package/.worktrees/542c4415/package-lock.json +977 -0
  249. package/.worktrees/542c4415/package.json +41 -0
  250. package/.worktrees/542c4415/packages/dashboard/dist/assets/index-Bq_Z2hne.js +7446 -0
  251. package/.worktrees/542c4415/packages/dashboard/dist/assets/index-O2W5RV4z.css +1 -0
  252. package/.worktrees/542c4415/packages/dashboard/dist/favicon.jpg +0 -0
  253. package/.worktrees/542c4415/packages/dashboard/dist/index.html +16 -0
  254. package/.worktrees/542c4415/packages/dashboard/dist/logo.jpg +0 -0
  255. package/.worktrees/542c4415/packages/dashboard/dist/prototype-dashboard.html +836 -0
  256. package/.worktrees/542c4415/packages/dashboard/dist/prototype-overview.html +256 -0
  257. package/.worktrees/542c4415/packages/dashboard/package.json +25 -0
  258. package/.worktrees/542c4415/packages/dashboard/server/executor.js +95 -0
  259. package/.worktrees/542c4415/packages/dashboard/server/index.js +679 -0
  260. package/.worktrees/542c4415/packages/dashboard/server/parser.js +526 -0
  261. package/.worktrees/542c4415/packages/dashboard/server/watcher.js +357 -0
  262. package/.worktrees/542c4415/src/agent-session-log.js +803 -0
  263. package/.worktrees/542c4415/src/change-list.js +290 -0
  264. package/.worktrees/542c4415/src/change-risk-profile.js +339 -0
  265. package/.worktrees/542c4415/src/check-primitives.js +65 -0
  266. package/.worktrees/542c4415/src/classify-change.js +109 -0
  267. package/.worktrees/542c4415/src/commit-suggest.js +202 -0
  268. package/.worktrees/542c4415/src/config-cat.js +88 -0
  269. package/.worktrees/542c4415/src/config-schema.js +328 -0
  270. package/.worktrees/542c4415/src/constants.js +97 -0
  271. package/.worktrees/542c4415/src/contract-matrix.js +533 -0
  272. package/.worktrees/542c4415/src/datetime.js +20 -0
  273. package/.worktrees/542c4415/src/db-engine.js +55 -0
  274. package/.worktrees/542c4415/src/db.js +381 -0
  275. package/.worktrees/542c4415/src/decision-distill.js +517 -0
  276. package/.worktrees/542c4415/src/dispatch/backends/local-agent.js +155 -0
  277. package/.worktrees/542c4415/src/dispatch/backends/sillyhub-mcp.js +245 -0
  278. package/.worktrees/542c4415/src/dispatch/probe.js +246 -0
  279. package/.worktrees/542c4415/src/dispatch/strategy.js +121 -0
  280. package/.worktrees/542c4415/src/docs-check.js +825 -0
  281. package/.worktrees/542c4415/src/docs-debt.js +393 -0
  282. package/.worktrees/542c4415/src/docs-gate.js +107 -0
  283. package/.worktrees/542c4415/src/doctor-diagnostics.js +1099 -0
  284. package/.worktrees/542c4415/src/endpoint-extractor.js +409 -0
  285. package/.worktrees/542c4415/src/foreign-declared.js +155 -0
  286. package/.worktrees/542c4415/src/fs-atomic.js +73 -0
  287. package/.worktrees/542c4415/src/git-helper.js +150 -0
  288. package/.worktrees/542c4415/src/hooks/claude-pre-tool-use.cjs +130 -0
  289. package/.worktrees/542c4415/src/hooks/worktree-guard.js +892 -0
  290. package/.worktrees/542c4415/src/index.js +2854 -0
  291. package/.worktrees/542c4415/src/init.js +626 -0
  292. package/.worktrees/542c4415/src/knowledge-match.js +231 -0
  293. package/.worktrees/542c4415/src/local-detect.js +128 -0
  294. package/.worktrees/542c4415/src/local-register.js +104 -0
  295. package/.worktrees/542c4415/src/machine-interface.js +543 -0
  296. package/.worktrees/542c4415/src/migrate.js +127 -0
  297. package/.worktrees/542c4415/src/module-impact.js +166 -0
  298. package/.worktrees/542c4415/src/module-resolve.js +222 -0
  299. package/.worktrees/542c4415/src/modules.js +580 -0
  300. package/.worktrees/542c4415/src/plan-adopt-waves.js +126 -0
  301. package/.worktrees/542c4415/src/progress/change-registry.js +336 -0
  302. package/.worktrees/542c4415/src/progress/consistency-doctor.js +355 -0
  303. package/.worktrees/542c4415/src/progress/shared.js +36 -0
  304. package/.worktrees/542c4415/src/progress/stage-machine.js +594 -0
  305. package/.worktrees/542c4415/src/progress/step-store.js +265 -0
  306. package/.worktrees/542c4415/src/progress.js +1304 -0
  307. package/.worktrees/542c4415/src/quick-recommend.js +115 -0
  308. package/.worktrees/542c4415/src/quicklog.js +883 -0
  309. package/.worktrees/542c4415/src/review-tier.js +77 -0
  310. package/.worktrees/542c4415/src/run/command.js +1641 -0
  311. package/.worktrees/542c4415/src/run/complete-handlers.js +1552 -0
  312. package/.worktrees/542c4415/src/run/complete.js +1259 -0
  313. package/.worktrees/542c4415/src/run/concurrent-detect.js +156 -0
  314. package/.worktrees/542c4415/src/run/gates.js +1111 -0
  315. package/.worktrees/542c4415/src/run/multi-repo-context.js +208 -0
  316. package/.worktrees/542c4415/src/run/next.js +128 -0
  317. package/.worktrees/542c4415/src/run/prompt.js +843 -0
  318. package/.worktrees/542c4415/src/run/quick-audit.js +186 -0
  319. package/.worktrees/542c4415/src/run/scan-profile.js +269 -0
  320. package/.worktrees/542c4415/src/run/shared.js +1562 -0
  321. package/.worktrees/542c4415/src/run/stage.js +587 -0
  322. package/.worktrees/542c4415/src/run.js +23 -0
  323. package/.worktrees/542c4415/src/scan-diff.js +388 -0
  324. package/.worktrees/542c4415/src/scan-postcheck.js +524 -0
  325. package/.worktrees/542c4415/src/scan-staleness.js +95 -0
  326. package/.worktrees/542c4415/src/setup.js +414 -0
  327. package/.worktrees/542c4415/src/sillyhub-mcp/client.js +597 -0
  328. package/.worktrees/542c4415/src/sillyhub-mcp/config.js +62 -0
  329. package/.worktrees/542c4415/src/spec-dir-typo.js +50 -0
  330. package/.worktrees/542c4415/src/spec-sync.js +358 -0
  331. package/.worktrees/542c4415/src/stage-contract-engine.js +171 -0
  332. package/.worktrees/542c4415/src/stage-contract-spec.js +551 -0
  333. package/.worktrees/542c4415/src/stage-contract.js +948 -0
  334. package/.worktrees/542c4415/src/stage-review.js +597 -0
  335. package/.worktrees/542c4415/src/stages/archive.js +199 -0
  336. package/.worktrees/542c4415/src/stages/brainstorm-auto.js +285 -0
  337. package/.worktrees/542c4415/src/stages/brainstorm.js +624 -0
  338. package/.worktrees/542c4415/src/stages/cmd-existence.js +145 -0
  339. package/.worktrees/542c4415/src/stages/doctor.js +540 -0
  340. package/.worktrees/542c4415/src/stages/execute.js +1277 -0
  341. package/.worktrees/542c4415/src/stages/explore.js +43 -0
  342. package/.worktrees/542c4415/src/stages/index.js +29 -0
  343. package/.worktrees/542c4415/src/stages/knowledge.js +514 -0
  344. package/.worktrees/542c4415/src/stages/plan-postcheck.js +1398 -0
  345. package/.worktrees/542c4415/src/stages/plan.js +655 -0
  346. package/.worktrees/542c4415/src/stages/quick.js +167 -0
  347. package/.worktrees/542c4415/src/stages/scan.js +608 -0
  348. package/.worktrees/542c4415/src/stages/status.js +64 -0
  349. package/.worktrees/542c4415/src/stages/verify.js +246 -0
  350. package/.worktrees/542c4415/src/sync.js +1470 -0
  351. package/.worktrees/542c4415/src/task-review.js +1498 -0
  352. package/.worktrees/542c4415/src/taskcard-placeholders.js +21 -0
  353. package/.worktrees/542c4415/src/taskcard.js +250 -0
  354. package/.worktrees/542c4415/src/verify-postcheck.js +1718 -0
  355. package/.worktrees/542c4415/src/verify-probes.js +327 -0
  356. package/.worktrees/542c4415/src/version.js +19 -0
  357. package/.worktrees/542c4415/src/workflow.js +600 -0
  358. package/.worktrees/542c4415/src/workspace.js +125 -0
  359. package/.worktrees/542c4415/src/worktree-apply.js +1611 -0
  360. package/.worktrees/542c4415/src/worktree-deps.js +668 -0
  361. package/.worktrees/542c4415/src/worktree.js +1849 -0
  362. package/.worktrees/542c4415/templates/claude-instruction.md +23 -0
  363. package/.worktrees/542c4415/templates/prompts/taskcard-rules.md +29 -0
  364. package/.worktrees/542c4415/templates/prompts/testcase-design.md +12 -0
  365. package/.worktrees/542c4415/templates/prompts/verify-probes.md +32 -0
  366. package/.worktrees/542c4415/templates/workflows/archive-impact.yaml +79 -0
  367. package/.worktrees/542c4415/templates/workflows/scan-docs.yaml +132 -0
  368. package/.worktrees/c1eae35e/.claude/skills/sillyspec-archive/SKILL.md +87 -0
  369. package/.worktrees/c1eae35e/.claude/skills/sillyspec-auto/SKILL.md +93 -0
  370. package/.worktrees/c1eae35e/.claude/skills/sillyspec-brainstorm/SKILL.md +114 -0
  371. package/.worktrees/c1eae35e/.claude/skills/sillyspec-commit/SKILL.md +67 -0
  372. package/.worktrees/c1eae35e/.claude/skills/sillyspec-continue/SKILL.md +47 -0
  373. package/.worktrees/c1eae35e/.claude/skills/sillyspec-doctor/SKILL.md +76 -0
  374. package/.worktrees/c1eae35e/.claude/skills/sillyspec-execute/SKILL.md +214 -0
  375. package/.worktrees/c1eae35e/.claude/skills/sillyspec-explore/SKILL.md +102 -0
  376. package/.worktrees/c1eae35e/.claude/skills/sillyspec-export/SKILL.md +57 -0
  377. package/.worktrees/c1eae35e/.claude/skills/sillyspec-init/SKILL.md +177 -0
  378. package/.worktrees/c1eae35e/.claude/skills/sillyspec-knowledge/SKILL.md +270 -0
  379. package/.worktrees/c1eae35e/.claude/skills/sillyspec-plan/SKILL.md +156 -0
  380. package/.worktrees/c1eae35e/.claude/skills/sillyspec-quick/SKILL.md +116 -0
  381. package/.worktrees/c1eae35e/.claude/skills/sillyspec-resume/SKILL.md +70 -0
  382. package/.worktrees/c1eae35e/.claude/skills/sillyspec-scan/SKILL.md +79 -0
  383. package/.worktrees/c1eae35e/.claude/skills/sillyspec-state/SKILL.md +64 -0
  384. package/.worktrees/c1eae35e/.claude/skills/sillyspec-status/SKILL.md +54 -0
  385. package/.worktrees/c1eae35e/.claude/skills/sillyspec-verify/SKILL.md +87 -0
  386. package/.worktrees/c1eae35e/.claude/skills/sillyspec-workspace/SKILL.md +175 -0
  387. package/.worktrees/c1eae35e/.gitattributes +2 -0
  388. package/.worktrees/c1eae35e/.husky/pre-push +20 -0
  389. package/.worktrees/c1eae35e/README.md +203 -0
  390. package/.worktrees/c1eae35e/SKILL.md +91 -0
  391. package/.worktrees/c1eae35e/architecture-analysis.md +448 -0
  392. package/.worktrees/c1eae35e/bin/sillyspec.js +2 -0
  393. package/.worktrees/c1eae35e/eval/README.md +86 -0
  394. package/.worktrees/c1eae35e/eval/eval.config.json +28 -0
  395. package/.worktrees/c1eae35e/eval/lib/adapters/cli.mjs +63 -0
  396. package/.worktrees/c1eae35e/eval/lib/adapters/dryrun.mjs +27 -0
  397. package/.worktrees/c1eae35e/eval/lib/config.mjs +82 -0
  398. package/.worktrees/c1eae35e/eval/lib/db.mjs +76 -0
  399. package/.worktrees/c1eae35e/eval/lib/report.mjs +120 -0
  400. package/.worktrees/c1eae35e/eval/lib/runner.mjs +157 -0
  401. package/.worktrees/c1eae35e/eval/lib/tasks.mjs +73 -0
  402. package/.worktrees/c1eae35e/eval/lib/util.mjs +107 -0
  403. package/.worktrees/c1eae35e/eval/lib/workdir.mjs +30 -0
  404. package/.worktrees/c1eae35e/eval/run.mjs +83 -0
  405. package/.worktrees/c1eae35e/eval/tasks/001-slugify/files/package.json +6 -0
  406. package/.worktrees/c1eae35e/eval/tasks/001-slugify/solution/src/slugify.mjs +26 -0
  407. package/.worktrees/c1eae35e/eval/tasks/001-slugify/task.json +6 -0
  408. package/.worktrees/c1eae35e/eval/tasks/001-slugify/verify.mjs +28 -0
  409. package/.worktrees/c1eae35e/eval/tasks/002-each-day/files/package.json +6 -0
  410. package/.worktrees/c1eae35e/eval/tasks/002-each-day/files/src/dates.mjs +4 -0
  411. package/.worktrees/c1eae35e/eval/tasks/002-each-day/solution/src/dates.mjs +30 -0
  412. package/.worktrees/c1eae35e/eval/tasks/002-each-day/task.json +6 -0
  413. package/.worktrees/c1eae35e/eval/tasks/002-each-day/verify.mjs +31 -0
  414. package/.worktrees/c1eae35e/eval/tasks/003-word-report/files/data/notes.txt +5 -0
  415. package/.worktrees/c1eae35e/eval/tasks/003-word-report/files/package.json +6 -0
  416. package/.worktrees/c1eae35e/eval/tasks/003-word-report/solution/bin/report.mjs +36 -0
  417. package/.worktrees/c1eae35e/eval/tasks/003-word-report/task.json +6 -0
  418. package/.worktrees/c1eae35e/eval/tasks/003-word-report/verify.mjs +38 -0
  419. package/.worktrees/c1eae35e/logo.jpg +0 -0
  420. package/.worktrees/c1eae35e/package-lock.json +977 -0
  421. package/.worktrees/c1eae35e/package.json +41 -0
  422. package/.worktrees/c1eae35e/packages/dashboard/dist/assets/index-Bq_Z2hne.js +7446 -0
  423. package/.worktrees/c1eae35e/packages/dashboard/dist/assets/index-O2W5RV4z.css +1 -0
  424. package/.worktrees/c1eae35e/packages/dashboard/dist/favicon.jpg +0 -0
  425. package/.worktrees/c1eae35e/packages/dashboard/dist/index.html +16 -0
  426. package/.worktrees/c1eae35e/packages/dashboard/dist/logo.jpg +0 -0
  427. package/.worktrees/c1eae35e/packages/dashboard/dist/prototype-dashboard.html +836 -0
  428. package/.worktrees/c1eae35e/packages/dashboard/dist/prototype-overview.html +256 -0
  429. package/.worktrees/c1eae35e/packages/dashboard/package.json +25 -0
  430. package/.worktrees/c1eae35e/packages/dashboard/server/executor.js +95 -0
  431. package/.worktrees/c1eae35e/packages/dashboard/server/index.js +679 -0
  432. package/.worktrees/c1eae35e/packages/dashboard/server/parser.js +526 -0
  433. package/.worktrees/c1eae35e/packages/dashboard/server/watcher.js +357 -0
  434. package/.worktrees/c1eae35e/src/agent-session-log.js +803 -0
  435. package/.worktrees/c1eae35e/src/change-list.js +290 -0
  436. package/.worktrees/c1eae35e/src/change-risk-profile.js +339 -0
  437. package/.worktrees/c1eae35e/src/check-primitives.js +65 -0
  438. package/.worktrees/c1eae35e/src/classify-change.js +109 -0
  439. package/.worktrees/c1eae35e/src/commit-suggest.js +202 -0
  440. package/.worktrees/c1eae35e/src/config-cat.js +88 -0
  441. package/.worktrees/c1eae35e/src/config-schema.js +328 -0
  442. package/.worktrees/c1eae35e/src/constants.js +97 -0
  443. package/.worktrees/c1eae35e/src/contract-matrix.js +533 -0
  444. package/.worktrees/c1eae35e/src/datetime.js +20 -0
  445. package/.worktrees/c1eae35e/src/db-engine.js +55 -0
  446. package/.worktrees/c1eae35e/src/db.js +381 -0
  447. package/.worktrees/c1eae35e/src/decision-distill.js +517 -0
  448. package/.worktrees/c1eae35e/src/dispatch/backends/local-agent.js +155 -0
  449. package/.worktrees/c1eae35e/src/dispatch/backends/sillyhub-mcp.js +245 -0
  450. package/.worktrees/c1eae35e/src/dispatch/probe.js +246 -0
  451. package/.worktrees/c1eae35e/src/dispatch/strategy.js +121 -0
  452. package/.worktrees/c1eae35e/src/docs-check.js +825 -0
  453. package/.worktrees/c1eae35e/src/docs-debt.js +393 -0
  454. package/.worktrees/c1eae35e/src/docs-gate.js +107 -0
  455. package/.worktrees/c1eae35e/src/doctor-diagnostics.js +1099 -0
  456. package/.worktrees/c1eae35e/src/endpoint-extractor.js +409 -0
  457. package/.worktrees/c1eae35e/src/foreign-declared.js +155 -0
  458. package/.worktrees/c1eae35e/src/fs-atomic.js +73 -0
  459. package/.worktrees/c1eae35e/src/git-helper.js +150 -0
  460. package/.worktrees/c1eae35e/src/hooks/claude-pre-tool-use.cjs +130 -0
  461. package/.worktrees/c1eae35e/src/hooks/worktree-guard.js +892 -0
  462. package/.worktrees/c1eae35e/src/index.js +2854 -0
  463. package/.worktrees/c1eae35e/src/init.js +626 -0
  464. package/.worktrees/c1eae35e/src/knowledge-match.js +231 -0
  465. package/.worktrees/c1eae35e/src/local-detect.js +128 -0
  466. package/.worktrees/c1eae35e/src/local-register.js +104 -0
  467. package/.worktrees/c1eae35e/src/machine-interface.js +543 -0
  468. package/.worktrees/c1eae35e/src/migrate.js +127 -0
  469. package/.worktrees/c1eae35e/src/module-impact.js +166 -0
  470. package/.worktrees/c1eae35e/src/module-resolve.js +222 -0
  471. package/.worktrees/c1eae35e/src/modules.js +580 -0
  472. package/.worktrees/c1eae35e/src/plan-adopt-waves.js +126 -0
  473. package/.worktrees/c1eae35e/src/progress/change-registry.js +336 -0
  474. package/.worktrees/c1eae35e/src/progress/consistency-doctor.js +355 -0
  475. package/.worktrees/c1eae35e/src/progress/shared.js +36 -0
  476. package/.worktrees/c1eae35e/src/progress/stage-machine.js +594 -0
  477. package/.worktrees/c1eae35e/src/progress/step-store.js +265 -0
  478. package/.worktrees/c1eae35e/src/progress.js +1304 -0
  479. package/.worktrees/c1eae35e/src/quick-recommend.js +115 -0
  480. package/.worktrees/c1eae35e/src/quicklog.js +883 -0
  481. package/.worktrees/c1eae35e/src/review-tier.js +77 -0
  482. package/.worktrees/c1eae35e/src/run/command.js +1641 -0
  483. package/.worktrees/c1eae35e/src/run/complete-handlers.js +1552 -0
  484. package/.worktrees/c1eae35e/src/run/complete.js +1259 -0
  485. package/.worktrees/c1eae35e/src/run/concurrent-detect.js +156 -0
  486. package/.worktrees/c1eae35e/src/run/gates.js +1111 -0
  487. package/.worktrees/c1eae35e/src/run/multi-repo-context.js +208 -0
  488. package/.worktrees/c1eae35e/src/run/next.js +128 -0
  489. package/.worktrees/c1eae35e/src/run/prompt.js +843 -0
  490. package/.worktrees/c1eae35e/src/run/quick-audit.js +186 -0
  491. package/.worktrees/c1eae35e/src/run/scan-profile.js +269 -0
  492. package/.worktrees/c1eae35e/src/run/shared.js +1562 -0
  493. package/.worktrees/c1eae35e/src/run/stage.js +587 -0
  494. package/.worktrees/c1eae35e/src/run.js +23 -0
  495. package/.worktrees/c1eae35e/src/scan-diff.js +388 -0
  496. package/.worktrees/c1eae35e/src/scan-postcheck.js +524 -0
  497. package/.worktrees/c1eae35e/src/scan-staleness.js +95 -0
  498. package/.worktrees/c1eae35e/src/setup.js +414 -0
  499. package/.worktrees/c1eae35e/src/sillyhub-mcp/client.js +597 -0
  500. package/.worktrees/c1eae35e/src/sillyhub-mcp/config.js +62 -0
  501. package/.worktrees/c1eae35e/src/spec-dir-typo.js +50 -0
  502. package/.worktrees/c1eae35e/src/spec-sync.js +358 -0
  503. package/.worktrees/c1eae35e/src/stage-contract-engine.js +171 -0
  504. package/.worktrees/c1eae35e/src/stage-contract-spec.js +551 -0
  505. package/.worktrees/c1eae35e/src/stage-contract.js +948 -0
  506. package/.worktrees/c1eae35e/src/stage-review.js +597 -0
  507. package/.worktrees/c1eae35e/src/stages/archive.js +199 -0
  508. package/.worktrees/c1eae35e/src/stages/brainstorm-auto.js +285 -0
  509. package/.worktrees/c1eae35e/src/stages/brainstorm.js +624 -0
  510. package/.worktrees/c1eae35e/src/stages/cmd-existence.js +145 -0
  511. package/.worktrees/c1eae35e/src/stages/doctor.js +540 -0
  512. package/.worktrees/c1eae35e/src/stages/execute.js +1277 -0
  513. package/.worktrees/c1eae35e/src/stages/explore.js +43 -0
  514. package/.worktrees/c1eae35e/src/stages/index.js +29 -0
  515. package/.worktrees/c1eae35e/src/stages/knowledge.js +514 -0
  516. package/.worktrees/c1eae35e/src/stages/plan-postcheck.js +1398 -0
  517. package/.worktrees/c1eae35e/src/stages/plan.js +655 -0
  518. package/.worktrees/c1eae35e/src/stages/quick.js +167 -0
  519. package/.worktrees/c1eae35e/src/stages/scan.js +608 -0
  520. package/.worktrees/c1eae35e/src/stages/status.js +64 -0
  521. package/.worktrees/c1eae35e/src/stages/verify.js +246 -0
  522. package/.worktrees/c1eae35e/src/sync.js +1470 -0
  523. package/.worktrees/c1eae35e/src/task-review.js +1498 -0
  524. package/.worktrees/c1eae35e/src/taskcard-placeholders.js +21 -0
  525. package/.worktrees/c1eae35e/src/taskcard.js +250 -0
  526. package/.worktrees/c1eae35e/src/verify-postcheck.js +1718 -0
  527. package/.worktrees/c1eae35e/src/verify-probes.js +327 -0
  528. package/.worktrees/c1eae35e/src/version.js +19 -0
  529. package/.worktrees/c1eae35e/src/workflow.js +600 -0
  530. package/.worktrees/c1eae35e/src/workspace.js +125 -0
  531. package/.worktrees/c1eae35e/src/worktree-apply.js +1611 -0
  532. package/.worktrees/c1eae35e/src/worktree-deps.js +668 -0
  533. package/.worktrees/c1eae35e/src/worktree.js +1849 -0
  534. package/.worktrees/c1eae35e/templates/claude-instruction.md +23 -0
  535. package/.worktrees/c1eae35e/templates/prompts/taskcard-rules.md +29 -0
  536. package/.worktrees/c1eae35e/templates/prompts/testcase-design.md +12 -0
  537. package/.worktrees/c1eae35e/templates/prompts/verify-probes.md +32 -0
  538. package/.worktrees/c1eae35e/templates/workflows/archive-impact.yaml +79 -0
  539. package/.worktrees/c1eae35e/templates/workflows/scan-docs.yaml +132 -0
  540. package/.worktrees/dafc71ad/.claude/skills/sillyspec-archive/SKILL.md +87 -0
  541. package/.worktrees/dafc71ad/.claude/skills/sillyspec-auto/SKILL.md +93 -0
  542. package/.worktrees/dafc71ad/.claude/skills/sillyspec-brainstorm/SKILL.md +114 -0
  543. package/.worktrees/dafc71ad/.claude/skills/sillyspec-commit/SKILL.md +67 -0
  544. package/.worktrees/dafc71ad/.claude/skills/sillyspec-continue/SKILL.md +47 -0
  545. package/.worktrees/dafc71ad/.claude/skills/sillyspec-doctor/SKILL.md +76 -0
  546. package/.worktrees/dafc71ad/.claude/skills/sillyspec-execute/SKILL.md +214 -0
  547. package/.worktrees/dafc71ad/.claude/skills/sillyspec-explore/SKILL.md +102 -0
  548. package/.worktrees/dafc71ad/.claude/skills/sillyspec-export/SKILL.md +57 -0
  549. package/.worktrees/dafc71ad/.claude/skills/sillyspec-init/SKILL.md +177 -0
  550. package/.worktrees/dafc71ad/.claude/skills/sillyspec-knowledge/SKILL.md +270 -0
  551. package/.worktrees/dafc71ad/.claude/skills/sillyspec-plan/SKILL.md +156 -0
  552. package/.worktrees/dafc71ad/.claude/skills/sillyspec-propose/SKILL.md +87 -0
  553. package/.worktrees/dafc71ad/.claude/skills/sillyspec-quick/SKILL.md +116 -0
  554. package/.worktrees/dafc71ad/.claude/skills/sillyspec-resume/SKILL.md +70 -0
  555. package/.worktrees/dafc71ad/.claude/skills/sillyspec-scan/SKILL.md +79 -0
  556. package/.worktrees/dafc71ad/.claude/skills/sillyspec-state/SKILL.md +64 -0
  557. package/.worktrees/dafc71ad/.claude/skills/sillyspec-status/SKILL.md +54 -0
  558. package/.worktrees/dafc71ad/.claude/skills/sillyspec-verify/SKILL.md +87 -0
  559. package/.worktrees/dafc71ad/.claude/skills/sillyspec-workspace/SKILL.md +175 -0
  560. package/.worktrees/dafc71ad/.gitattributes +2 -0
  561. package/.worktrees/dafc71ad/.husky/pre-push +20 -0
  562. package/.worktrees/dafc71ad/README.md +203 -0
  563. package/.worktrees/dafc71ad/SKILL.md +91 -0
  564. package/.worktrees/dafc71ad/analysis.md +366 -0
  565. package/.worktrees/dafc71ad/architecture-analysis.md +448 -0
  566. package/.worktrees/dafc71ad/bin/sillyspec.js +2 -0
  567. package/.worktrees/dafc71ad/eval/README.md +86 -0
  568. package/.worktrees/dafc71ad/eval/eval.config.json +28 -0
  569. package/.worktrees/dafc71ad/eval/lib/adapters/cli.mjs +63 -0
  570. package/.worktrees/dafc71ad/eval/lib/adapters/dryrun.mjs +27 -0
  571. package/.worktrees/dafc71ad/eval/lib/config.mjs +82 -0
  572. package/.worktrees/dafc71ad/eval/lib/db.mjs +76 -0
  573. package/.worktrees/dafc71ad/eval/lib/report.mjs +120 -0
  574. package/.worktrees/dafc71ad/eval/lib/runner.mjs +157 -0
  575. package/.worktrees/dafc71ad/eval/lib/tasks.mjs +73 -0
  576. package/.worktrees/dafc71ad/eval/lib/util.mjs +107 -0
  577. package/.worktrees/dafc71ad/eval/lib/workdir.mjs +30 -0
  578. package/.worktrees/dafc71ad/eval/run.mjs +83 -0
  579. package/.worktrees/dafc71ad/eval/tasks/001-slugify/files/package.json +6 -0
  580. package/.worktrees/dafc71ad/eval/tasks/001-slugify/solution/src/slugify.mjs +26 -0
  581. package/.worktrees/dafc71ad/eval/tasks/001-slugify/task.json +6 -0
  582. package/.worktrees/dafc71ad/eval/tasks/001-slugify/verify.mjs +28 -0
  583. package/.worktrees/dafc71ad/eval/tasks/002-each-day/files/package.json +6 -0
  584. package/.worktrees/dafc71ad/eval/tasks/002-each-day/files/src/dates.mjs +4 -0
  585. package/.worktrees/dafc71ad/eval/tasks/002-each-day/solution/src/dates.mjs +30 -0
  586. package/.worktrees/dafc71ad/eval/tasks/002-each-day/task.json +6 -0
  587. package/.worktrees/dafc71ad/eval/tasks/002-each-day/verify.mjs +31 -0
  588. package/.worktrees/dafc71ad/eval/tasks/003-word-report/files/data/notes.txt +5 -0
  589. package/.worktrees/dafc71ad/eval/tasks/003-word-report/files/package.json +6 -0
  590. package/.worktrees/dafc71ad/eval/tasks/003-word-report/solution/bin/report.mjs +36 -0
  591. package/.worktrees/dafc71ad/eval/tasks/003-word-report/task.json +6 -0
  592. package/.worktrees/dafc71ad/eval/tasks/003-word-report/verify.mjs +38 -0
  593. package/.worktrees/dafc71ad/logo.jpg +0 -0
  594. package/.worktrees/dafc71ad/package-lock.json +977 -0
  595. package/.worktrees/dafc71ad/package.json +41 -0
  596. package/.worktrees/dafc71ad/packages/dashboard/dist/assets/index-Bq_Z2hne.js +7446 -0
  597. package/.worktrees/dafc71ad/packages/dashboard/dist/assets/index-O2W5RV4z.css +1 -0
  598. package/.worktrees/dafc71ad/packages/dashboard/dist/favicon.jpg +0 -0
  599. package/.worktrees/dafc71ad/packages/dashboard/dist/index.html +16 -0
  600. package/.worktrees/dafc71ad/packages/dashboard/dist/logo.jpg +0 -0
  601. package/.worktrees/dafc71ad/packages/dashboard/dist/prototype-dashboard.html +836 -0
  602. package/.worktrees/dafc71ad/packages/dashboard/dist/prototype-overview.html +256 -0
  603. package/.worktrees/dafc71ad/packages/dashboard/package.json +25 -0
  604. package/.worktrees/dafc71ad/packages/dashboard/server/executor.js +95 -0
  605. package/.worktrees/dafc71ad/packages/dashboard/server/index.js +679 -0
  606. package/.worktrees/dafc71ad/packages/dashboard/server/parser.js +526 -0
  607. package/.worktrees/dafc71ad/packages/dashboard/server/watcher.js +357 -0
  608. package/.worktrees/dafc71ad/src/agent-session-log.js +803 -0
  609. package/.worktrees/dafc71ad/src/change-list.js +290 -0
  610. package/.worktrees/dafc71ad/src/change-risk-profile.js +339 -0
  611. package/.worktrees/dafc71ad/src/check-primitives.js +65 -0
  612. package/.worktrees/dafc71ad/src/classify-change.js +109 -0
  613. package/.worktrees/dafc71ad/src/commit-suggest.js +202 -0
  614. package/.worktrees/dafc71ad/src/config-cat.js +88 -0
  615. package/.worktrees/dafc71ad/src/config-schema.js +328 -0
  616. package/.worktrees/dafc71ad/src/constants.js +97 -0
  617. package/.worktrees/dafc71ad/src/contract-matrix.js +533 -0
  618. package/.worktrees/dafc71ad/src/datetime.js +20 -0
  619. package/.worktrees/dafc71ad/src/db-engine.js +55 -0
  620. package/.worktrees/dafc71ad/src/db.js +381 -0
  621. package/.worktrees/dafc71ad/src/decision-distill.js +517 -0
  622. package/.worktrees/dafc71ad/src/dispatch/backends/local-agent.js +155 -0
  623. package/.worktrees/dafc71ad/src/dispatch/backends/sillyhub-mcp.js +245 -0
  624. package/.worktrees/dafc71ad/src/dispatch/probe.js +246 -0
  625. package/.worktrees/dafc71ad/src/dispatch/strategy.js +121 -0
  626. package/.worktrees/dafc71ad/src/docs-check.js +825 -0
  627. package/.worktrees/dafc71ad/src/docs-debt.js +393 -0
  628. package/.worktrees/dafc71ad/src/docs-gate.js +107 -0
  629. package/.worktrees/dafc71ad/src/doctor-diagnostics.js +1099 -0
  630. package/.worktrees/dafc71ad/src/endpoint-extractor.js +409 -0
  631. package/.worktrees/dafc71ad/src/foreign-declared.js +155 -0
  632. package/.worktrees/dafc71ad/src/fs-atomic.js +73 -0
  633. package/.worktrees/dafc71ad/src/git-helper.js +150 -0
  634. package/.worktrees/dafc71ad/src/hooks/claude-pre-tool-use.cjs +130 -0
  635. package/.worktrees/dafc71ad/src/hooks/worktree-guard.js +892 -0
  636. package/.worktrees/dafc71ad/src/index.js +2854 -0
  637. package/.worktrees/dafc71ad/src/init.js +626 -0
  638. package/.worktrees/dafc71ad/src/knowledge-match.js +231 -0
  639. package/.worktrees/dafc71ad/src/local-detect.js +128 -0
  640. package/.worktrees/dafc71ad/src/local-register.js +104 -0
  641. package/.worktrees/dafc71ad/src/machine-interface.js +543 -0
  642. package/.worktrees/dafc71ad/src/migrate.js +127 -0
  643. package/.worktrees/dafc71ad/src/module-impact.js +166 -0
  644. package/.worktrees/dafc71ad/src/module-resolve.js +222 -0
  645. package/.worktrees/dafc71ad/src/modules.js +580 -0
  646. package/.worktrees/dafc71ad/src/plan-adopt-waves.js +126 -0
  647. package/.worktrees/dafc71ad/src/progress/change-registry.js +336 -0
  648. package/.worktrees/dafc71ad/src/progress/consistency-doctor.js +355 -0
  649. package/.worktrees/dafc71ad/src/progress/shared.js +36 -0
  650. package/.worktrees/dafc71ad/src/progress/stage-machine.js +594 -0
  651. package/.worktrees/dafc71ad/src/progress/step-store.js +265 -0
  652. package/.worktrees/dafc71ad/src/progress.js +1304 -0
  653. package/.worktrees/dafc71ad/src/quick-recommend.js +115 -0
  654. package/.worktrees/dafc71ad/src/quicklog.js +883 -0
  655. package/.worktrees/dafc71ad/src/review-tier.js +77 -0
  656. package/.worktrees/dafc71ad/src/run/command.js +1641 -0
  657. package/.worktrees/dafc71ad/src/run/complete-handlers.js +1552 -0
  658. package/.worktrees/dafc71ad/src/run/complete.js +1259 -0
  659. package/.worktrees/dafc71ad/src/run/concurrent-detect.js +156 -0
  660. package/.worktrees/dafc71ad/src/run/gates.js +1111 -0
  661. package/.worktrees/dafc71ad/src/run/multi-repo-context.js +208 -0
  662. package/.worktrees/dafc71ad/src/run/next.js +128 -0
  663. package/.worktrees/dafc71ad/src/run/prompt.js +843 -0
  664. package/.worktrees/dafc71ad/src/run/quick-audit.js +186 -0
  665. package/.worktrees/dafc71ad/src/run/scan-profile.js +269 -0
  666. package/.worktrees/dafc71ad/src/run/shared.js +1562 -0
  667. package/.worktrees/dafc71ad/src/run/stage.js +587 -0
  668. package/.worktrees/dafc71ad/src/run.js +23 -0
  669. package/.worktrees/dafc71ad/src/scan-diff.js +388 -0
  670. package/.worktrees/dafc71ad/src/scan-postcheck.js +524 -0
  671. package/.worktrees/dafc71ad/src/scan-staleness.js +95 -0
  672. package/.worktrees/dafc71ad/src/setup.js +414 -0
  673. package/.worktrees/dafc71ad/src/sillyhub-mcp/client.js +597 -0
  674. package/.worktrees/dafc71ad/src/sillyhub-mcp/config.js +62 -0
  675. package/.worktrees/dafc71ad/src/spec-dir-typo.js +50 -0
  676. package/.worktrees/dafc71ad/src/spec-sync.js +358 -0
  677. package/.worktrees/dafc71ad/src/stage-contract-engine.js +171 -0
  678. package/.worktrees/dafc71ad/src/stage-contract-spec.js +551 -0
  679. package/.worktrees/dafc71ad/src/stage-contract.js +948 -0
  680. package/.worktrees/dafc71ad/src/stage-review.js +597 -0
  681. package/.worktrees/dafc71ad/src/stages/archive.js +199 -0
  682. package/.worktrees/dafc71ad/src/stages/brainstorm-auto.js +285 -0
  683. package/.worktrees/dafc71ad/src/stages/brainstorm.js +624 -0
  684. package/.worktrees/dafc71ad/src/stages/cmd-existence.js +145 -0
  685. package/.worktrees/dafc71ad/src/stages/doctor.js +540 -0
  686. package/.worktrees/dafc71ad/src/stages/execute.js +1277 -0
  687. package/.worktrees/dafc71ad/src/stages/explore.js +43 -0
  688. package/.worktrees/dafc71ad/src/stages/index.js +29 -0
  689. package/.worktrees/dafc71ad/src/stages/knowledge.js +514 -0
  690. package/.worktrees/dafc71ad/src/stages/plan-postcheck.js +1398 -0
  691. package/.worktrees/dafc71ad/src/stages/plan.js +655 -0
  692. package/.worktrees/dafc71ad/src/stages/quick.js +167 -0
  693. package/.worktrees/dafc71ad/src/stages/scan.js +608 -0
  694. package/.worktrees/dafc71ad/src/stages/status.js +64 -0
  695. package/.worktrees/dafc71ad/src/stages/verify.js +246 -0
  696. package/.worktrees/dafc71ad/src/sync.js +1470 -0
  697. package/.worktrees/dafc71ad/src/task-review.js +1498 -0
  698. package/.worktrees/dafc71ad/src/taskcard-placeholders.js +21 -0
  699. package/.worktrees/dafc71ad/src/taskcard.js +250 -0
  700. package/.worktrees/dafc71ad/src/verify-postcheck.js +1718 -0
  701. package/.worktrees/dafc71ad/src/verify-probes.js +327 -0
  702. package/.worktrees/dafc71ad/src/version.js +19 -0
  703. package/.worktrees/dafc71ad/src/workflow.js +600 -0
  704. package/.worktrees/dafc71ad/src/workspace.js +125 -0
  705. package/.worktrees/dafc71ad/src/worktree-apply.js +1611 -0
  706. package/.worktrees/dafc71ad/src/worktree-deps.js +668 -0
  707. package/.worktrees/dafc71ad/src/worktree.js +1849 -0
  708. package/.worktrees/dafc71ad/templates/claude-instruction.md +23 -0
  709. package/.worktrees/dafc71ad/templates/prompts/taskcard-rules.md +29 -0
  710. package/.worktrees/dafc71ad/templates/prompts/testcase-design.md +12 -0
  711. package/.worktrees/dafc71ad/templates/prompts/verify-probes.md +32 -0
  712. package/.worktrees/dafc71ad/templates/workflows/archive-impact.yaml +79 -0
  713. package/.worktrees/dafc71ad/templates/workflows/scan-docs.yaml +132 -0
  714. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-archive/SKILL.md +87 -0
  715. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-auto/SKILL.md +93 -0
  716. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-brainstorm/SKILL.md +114 -0
  717. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-commit/SKILL.md +67 -0
  718. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-continue/SKILL.md +47 -0
  719. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-doctor/SKILL.md +76 -0
  720. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-execute/SKILL.md +214 -0
  721. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-explore/SKILL.md +102 -0
  722. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-export/SKILL.md +57 -0
  723. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-init/SKILL.md +177 -0
  724. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-knowledge/SKILL.md +270 -0
  725. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-plan/SKILL.md +156 -0
  726. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-propose/SKILL.md +87 -0
  727. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-quick/SKILL.md +116 -0
  728. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-resume/SKILL.md +70 -0
  729. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-scan/SKILL.md +79 -0
  730. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-state/SKILL.md +64 -0
  731. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-status/SKILL.md +54 -0
  732. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-verify/SKILL.md +87 -0
  733. package/.worktrees/e58fcc4c/.claude/skills/sillyspec-workspace/SKILL.md +175 -0
  734. package/.worktrees/e58fcc4c/.gitattributes +2 -0
  735. package/.worktrees/e58fcc4c/.husky/pre-push +20 -0
  736. package/.worktrees/e58fcc4c/README.md +203 -0
  737. package/.worktrees/e58fcc4c/SKILL.md +91 -0
  738. package/.worktrees/e58fcc4c/architecture-analysis.md +503 -0
  739. package/.worktrees/e58fcc4c/bin/sillyspec.js +2 -0
  740. package/.worktrees/e58fcc4c/eval/README.md +86 -0
  741. package/.worktrees/e58fcc4c/eval/eval.config.json +28 -0
  742. package/.worktrees/e58fcc4c/eval/lib/adapters/cli.mjs +63 -0
  743. package/.worktrees/e58fcc4c/eval/lib/adapters/dryrun.mjs +27 -0
  744. package/.worktrees/e58fcc4c/eval/lib/config.mjs +82 -0
  745. package/.worktrees/e58fcc4c/eval/lib/db.mjs +76 -0
  746. package/.worktrees/e58fcc4c/eval/lib/report.mjs +120 -0
  747. package/.worktrees/e58fcc4c/eval/lib/runner.mjs +157 -0
  748. package/.worktrees/e58fcc4c/eval/lib/tasks.mjs +73 -0
  749. package/.worktrees/e58fcc4c/eval/lib/util.mjs +107 -0
  750. package/.worktrees/e58fcc4c/eval/lib/workdir.mjs +30 -0
  751. package/.worktrees/e58fcc4c/eval/run.mjs +83 -0
  752. package/.worktrees/e58fcc4c/eval/tasks/001-slugify/files/package.json +6 -0
  753. package/.worktrees/e58fcc4c/eval/tasks/001-slugify/solution/src/slugify.mjs +26 -0
  754. package/.worktrees/e58fcc4c/eval/tasks/001-slugify/task.json +6 -0
  755. package/.worktrees/e58fcc4c/eval/tasks/001-slugify/verify.mjs +28 -0
  756. package/.worktrees/e58fcc4c/eval/tasks/002-each-day/files/package.json +6 -0
  757. package/.worktrees/e58fcc4c/eval/tasks/002-each-day/files/src/dates.mjs +4 -0
  758. package/.worktrees/e58fcc4c/eval/tasks/002-each-day/solution/src/dates.mjs +30 -0
  759. package/.worktrees/e58fcc4c/eval/tasks/002-each-day/task.json +6 -0
  760. package/.worktrees/e58fcc4c/eval/tasks/002-each-day/verify.mjs +31 -0
  761. package/.worktrees/e58fcc4c/eval/tasks/003-word-report/files/data/notes.txt +5 -0
  762. package/.worktrees/e58fcc4c/eval/tasks/003-word-report/files/package.json +6 -0
  763. package/.worktrees/e58fcc4c/eval/tasks/003-word-report/solution/bin/report.mjs +36 -0
  764. package/.worktrees/e58fcc4c/eval/tasks/003-word-report/task.json +6 -0
  765. package/.worktrees/e58fcc4c/eval/tasks/003-word-report/verify.mjs +38 -0
  766. package/.worktrees/e58fcc4c/logo.jpg +0 -0
  767. package/.worktrees/e58fcc4c/package-lock.json +977 -0
  768. package/.worktrees/e58fcc4c/package.json +41 -0
  769. package/.worktrees/e58fcc4c/packages/dashboard/dist/assets/index-Bq_Z2hne.js +7446 -0
  770. package/.worktrees/e58fcc4c/packages/dashboard/dist/assets/index-O2W5RV4z.css +1 -0
  771. package/.worktrees/e58fcc4c/packages/dashboard/dist/favicon.jpg +0 -0
  772. package/.worktrees/e58fcc4c/packages/dashboard/dist/index.html +16 -0
  773. package/.worktrees/e58fcc4c/packages/dashboard/dist/logo.jpg +0 -0
  774. package/.worktrees/e58fcc4c/packages/dashboard/dist/prototype-dashboard.html +836 -0
  775. package/.worktrees/e58fcc4c/packages/dashboard/dist/prototype-overview.html +256 -0
  776. package/.worktrees/e58fcc4c/packages/dashboard/package.json +25 -0
  777. package/.worktrees/e58fcc4c/packages/dashboard/server/executor.js +95 -0
  778. package/.worktrees/e58fcc4c/packages/dashboard/server/index.js +679 -0
  779. package/.worktrees/e58fcc4c/packages/dashboard/server/parser.js +526 -0
  780. package/.worktrees/e58fcc4c/packages/dashboard/server/watcher.js +357 -0
  781. package/.worktrees/e58fcc4c/src/agent-session-log.js +803 -0
  782. package/.worktrees/e58fcc4c/src/change-list.js +290 -0
  783. package/.worktrees/e58fcc4c/src/change-risk-profile.js +339 -0
  784. package/.worktrees/e58fcc4c/src/check-primitives.js +65 -0
  785. package/.worktrees/e58fcc4c/src/classify-change.js +109 -0
  786. package/.worktrees/e58fcc4c/src/commit-suggest.js +202 -0
  787. package/.worktrees/e58fcc4c/src/config-cat.js +88 -0
  788. package/.worktrees/e58fcc4c/src/config-schema.js +328 -0
  789. package/.worktrees/e58fcc4c/src/constants.js +97 -0
  790. package/.worktrees/e58fcc4c/src/contract-matrix.js +533 -0
  791. package/.worktrees/e58fcc4c/src/datetime.js +20 -0
  792. package/.worktrees/e58fcc4c/src/db-engine.js +55 -0
  793. package/.worktrees/e58fcc4c/src/db.js +381 -0
  794. package/.worktrees/e58fcc4c/src/decision-distill.js +517 -0
  795. package/.worktrees/e58fcc4c/src/dispatch/backends/local-agent.js +155 -0
  796. package/.worktrees/e58fcc4c/src/dispatch/backends/sillyhub-mcp.js +245 -0
  797. package/.worktrees/e58fcc4c/src/dispatch/probe.js +246 -0
  798. package/.worktrees/e58fcc4c/src/dispatch/strategy.js +121 -0
  799. package/.worktrees/e58fcc4c/src/docs-check.js +825 -0
  800. package/.worktrees/e58fcc4c/src/docs-debt.js +393 -0
  801. package/.worktrees/e58fcc4c/src/docs-gate.js +107 -0
  802. package/.worktrees/e58fcc4c/src/doctor-diagnostics.js +1099 -0
  803. package/.worktrees/e58fcc4c/src/endpoint-extractor.js +409 -0
  804. package/.worktrees/e58fcc4c/src/foreign-declared.js +155 -0
  805. package/.worktrees/e58fcc4c/src/fs-atomic.js +73 -0
  806. package/.worktrees/e58fcc4c/src/git-helper.js +150 -0
  807. package/.worktrees/e58fcc4c/src/hooks/claude-pre-tool-use.cjs +130 -0
  808. package/.worktrees/e58fcc4c/src/hooks/worktree-guard.js +892 -0
  809. package/.worktrees/e58fcc4c/src/index.js +2854 -0
  810. package/.worktrees/e58fcc4c/src/init.js +626 -0
  811. package/.worktrees/e58fcc4c/src/knowledge-match.js +231 -0
  812. package/.worktrees/e58fcc4c/src/local-detect.js +128 -0
  813. package/.worktrees/e58fcc4c/src/local-register.js +104 -0
  814. package/.worktrees/e58fcc4c/src/machine-interface.js +543 -0
  815. package/.worktrees/e58fcc4c/src/migrate.js +127 -0
  816. package/.worktrees/e58fcc4c/src/module-impact.js +166 -0
  817. package/.worktrees/e58fcc4c/src/module-resolve.js +222 -0
  818. package/.worktrees/e58fcc4c/src/modules.js +580 -0
  819. package/.worktrees/e58fcc4c/src/plan-adopt-waves.js +126 -0
  820. package/.worktrees/e58fcc4c/src/progress/change-registry.js +336 -0
  821. package/.worktrees/e58fcc4c/src/progress/consistency-doctor.js +355 -0
  822. package/.worktrees/e58fcc4c/src/progress/shared.js +36 -0
  823. package/.worktrees/e58fcc4c/src/progress/stage-machine.js +594 -0
  824. package/.worktrees/e58fcc4c/src/progress/step-store.js +265 -0
  825. package/.worktrees/e58fcc4c/src/progress.js +1304 -0
  826. package/.worktrees/e58fcc4c/src/quick-recommend.js +115 -0
  827. package/.worktrees/e58fcc4c/src/quicklog.js +883 -0
  828. package/.worktrees/e58fcc4c/src/review-tier.js +77 -0
  829. package/.worktrees/e58fcc4c/src/run/command.js +1641 -0
  830. package/.worktrees/e58fcc4c/src/run/complete-handlers.js +1552 -0
  831. package/.worktrees/e58fcc4c/src/run/complete.js +1259 -0
  832. package/.worktrees/e58fcc4c/src/run/concurrent-detect.js +156 -0
  833. package/.worktrees/e58fcc4c/src/run/gates.js +1111 -0
  834. package/.worktrees/e58fcc4c/src/run/multi-repo-context.js +208 -0
  835. package/.worktrees/e58fcc4c/src/run/next.js +128 -0
  836. package/.worktrees/e58fcc4c/src/run/prompt.js +843 -0
  837. package/.worktrees/e58fcc4c/src/run/quick-audit.js +186 -0
  838. package/.worktrees/e58fcc4c/src/run/scan-profile.js +269 -0
  839. package/.worktrees/e58fcc4c/src/run/shared.js +1562 -0
  840. package/.worktrees/e58fcc4c/src/run/stage.js +587 -0
  841. package/.worktrees/e58fcc4c/src/run.js +23 -0
  842. package/.worktrees/e58fcc4c/src/scan-diff.js +388 -0
  843. package/.worktrees/e58fcc4c/src/scan-postcheck.js +524 -0
  844. package/.worktrees/e58fcc4c/src/scan-staleness.js +95 -0
  845. package/.worktrees/e58fcc4c/src/setup.js +414 -0
  846. package/.worktrees/e58fcc4c/src/sillyhub-mcp/client.js +597 -0
  847. package/.worktrees/e58fcc4c/src/sillyhub-mcp/config.js +62 -0
  848. package/.worktrees/e58fcc4c/src/spec-dir-typo.js +50 -0
  849. package/.worktrees/e58fcc4c/src/spec-sync.js +358 -0
  850. package/.worktrees/e58fcc4c/src/stage-contract-engine.js +171 -0
  851. package/.worktrees/e58fcc4c/src/stage-contract-spec.js +551 -0
  852. package/.worktrees/e58fcc4c/src/stage-contract.js +948 -0
  853. package/.worktrees/e58fcc4c/src/stage-review.js +597 -0
  854. package/.worktrees/e58fcc4c/src/stages/archive.js +199 -0
  855. package/.worktrees/e58fcc4c/src/stages/brainstorm-auto.js +285 -0
  856. package/.worktrees/e58fcc4c/src/stages/brainstorm.js +624 -0
  857. package/.worktrees/e58fcc4c/src/stages/cmd-existence.js +145 -0
  858. package/.worktrees/e58fcc4c/src/stages/doctor.js +540 -0
  859. package/.worktrees/e58fcc4c/src/stages/execute.js +1277 -0
  860. package/.worktrees/e58fcc4c/src/stages/explore.js +43 -0
  861. package/.worktrees/e58fcc4c/src/stages/index.js +29 -0
  862. package/.worktrees/e58fcc4c/src/stages/knowledge.js +514 -0
  863. package/.worktrees/e58fcc4c/src/stages/plan-postcheck.js +1398 -0
  864. package/.worktrees/e58fcc4c/src/stages/plan.js +655 -0
  865. package/.worktrees/e58fcc4c/src/stages/quick.js +167 -0
  866. package/.worktrees/e58fcc4c/src/stages/scan.js +608 -0
  867. package/.worktrees/e58fcc4c/src/stages/status.js +64 -0
  868. package/.worktrees/e58fcc4c/src/stages/verify.js +246 -0
  869. package/.worktrees/e58fcc4c/src/sync.js +1470 -0
  870. package/.worktrees/e58fcc4c/src/task-review.js +1498 -0
  871. package/.worktrees/e58fcc4c/src/taskcard-placeholders.js +21 -0
  872. package/.worktrees/e58fcc4c/src/taskcard.js +250 -0
  873. package/.worktrees/e58fcc4c/src/verify-postcheck.js +1718 -0
  874. package/.worktrees/e58fcc4c/src/verify-probes.js +327 -0
  875. package/.worktrees/e58fcc4c/src/version.js +19 -0
  876. package/.worktrees/e58fcc4c/src/workflow.js +600 -0
  877. package/.worktrees/e58fcc4c/src/workspace.js +125 -0
  878. package/.worktrees/e58fcc4c/src/worktree-apply.js +1611 -0
  879. package/.worktrees/e58fcc4c/src/worktree-deps.js +668 -0
  880. package/.worktrees/e58fcc4c/src/worktree.js +1849 -0
  881. package/.worktrees/e58fcc4c/templates/claude-instruction.md +23 -0
  882. package/.worktrees/e58fcc4c/templates/prompts/taskcard-rules.md +29 -0
  883. package/.worktrees/e58fcc4c/templates/prompts/testcase-design.md +12 -0
  884. package/.worktrees/e58fcc4c/templates/prompts/verify-probes.md +32 -0
  885. package/.worktrees/e58fcc4c/templates/workflows/archive-impact.yaml +79 -0
  886. package/.worktrees/e58fcc4c/templates/workflows/scan-docs.yaml +132 -0
  887. package/package.json +1 -1
  888. package/src/contract-matrix.js +45 -14
  889. package/src/foreign-declared.js +11 -5
  890. package/src/fs-atomic.js +20 -3
  891. package/src/hooks/worktree-guard.js +9 -3
  892. package/src/index.js +52 -12
  893. package/src/module-impact.js +1 -1
  894. package/src/modules.js +23 -21
  895. package/src/progress/stage-machine.js +26 -1
  896. package/src/progress.js +38 -2
  897. package/src/quicklog.js +7 -5
  898. package/src/run/command.js +51 -20
  899. package/src/run/complete-handlers.js +26 -2
  900. package/src/run/complete.js +43 -21
  901. package/src/run/gates.js +52 -7
  902. package/src/run/multi-repo-context.js +42 -4
  903. package/src/run/next.js +4 -3
  904. package/src/run/prompt.js +66 -6
  905. package/src/run/scan-profile.js +1 -0
  906. package/src/run/shared.js +12 -6
  907. package/src/run/stage.js +35 -9
  908. package/src/scan-diff.js +4 -2
  909. package/src/stage-contract.js +36 -15
  910. package/src/stages/brainstorm.js +22 -8
  911. package/src/stages/execute.js +69 -22
  912. package/src/stages/knowledge.js +18 -5
  913. package/src/stages/plan-postcheck.js +63 -7
  914. package/src/stages/plan.js +13 -2
  915. package/src/sync.js +27 -11
  916. package/src/task-review.js +12 -3
  917. package/src/taskcard.js +2 -0
  918. package/src/verify-postcheck.js +24 -13
  919. package/src/verify-probes.js +12 -7
  920. package/src/worktree-apply.js +234 -18
  921. package/src/worktree-cross.js +294 -0
  922. package/src/worktree-deps.js +157 -59
  923. package/src/worktree.js +7 -2
@@ -0,0 +1,199 @@
1
+ export const definition = {
2
+ name: 'archive',
3
+ title: '归档变更',
4
+ description: '规范沉淀,可追溯',
5
+ steps: [
6
+ {
7
+ name: '任务完成度检查',
8
+ prompt: `检查任务完成度,决定是否可归档。
9
+
10
+ ### 客观完成度报告(CLI 已注入,勿自行数 checkbox)
11
+ {TASK_COMPLETION_REPORT}
12
+
13
+ ### 判定规则
14
+ - **真相源 = review.json verdict**:上方报告由 CLI 从 .runtime/execute-runs/<runId>/tasks/task-NN/review.json 的 specVerdict + qualityVerdict 算出。
15
+ - tasks.md 的 - [x] checkbox **仅作显示态参考**:它依赖自动回填,runId marker / review 缺失时会停在未勾态,与客观 verdict 不一致时**以本报告为准**,不要被未勾 checkbox 误导。
16
+ - 报告「未通过 / 缺失」= 0 且 source 为 review.json → 完成度合格,进入下一步。
17
+ - 报告含「cannot_verify 草稿(未真正复核)」计数 > 0 → 这些 task 只有 cannot_verify 草稿兜底、未被真正复核:先确认 verify 阶段已兑现其 requiredEvidence(verify-result.md 有对应证据),缺证据的派独立子代理对照 task brief + git diff 补真实复核(升级为 pass/fail),勿静默放行。
18
+ - 报告 source 为 plan-checkbox-fallback(客观源不可用)→ 完成度无法客观确认,**必须暂停**让用户交叉核对,不要直接放行。
19
+ - 存在未完成任务 → **必须暂停等待用户决定**,不要自行判断"可以归档"。
20
+ - 调用:sillyspec run archive --wait --reason "存在未完成任务,是否继续归档" --options "继续归档,回到execute完成剩余任务" --output "未完成任务列表"
21
+
22
+ ### 输出
23
+ 完成度报告(已通过/总数 + 数据源 + 未完成任务列表)`,
24
+ outputHint: '完成度报告',
25
+ optional: false
26
+ },
27
+ {
28
+ name: 'extract-module-impact',
29
+ prompt: `最终确认 changes/<change>/module-impact.md(本次变更的模块影响分析)。该文档由 plan review_plan 步生成首版、execute 各 Wave 更新、verify 核对——本步是归档前最后一次确认(module-impact 已非 archive 生成,改活文档终审)。
30
+
31
+ ### 操作
32
+ 1. 读取 changes/<change>/module-impact.md(应已存在;large 变更 plan 阶段产出首版)
33
+ 2. 运行 git diff --name-only HEAD~1(或 git diff --name-only --cached)获取真实修改文件列表
34
+ 3. 三重核对:module-impact.md 记录的受影响模块/文件 vs 真实 git diff 文件列表 vs .sillyspec/docs/<project>/modules/_module-map.yaml 模块映射(不存在则仅核 unmapped 部分)。以 git diff 为准(真实 > 记录)
35
+ 4. 发现不一致(漏标受影响模块 / 影响类型错误 / 实际未触碰的模块被误标)→ 直接修正 module-impact.md,使其与实际变更一致
36
+ 5. module-impact.md 第一行标题必须用中文:# 模块影响分析(Module Impact)— <变更简述>
37
+
38
+ ### 降级(module-impact.md 不存在)
39
+ 若缺失(如旧变更未经新 plan 流程,或 small 变更从未生成):先跑 \`sillyspec module-impact --change <change-name>\`——CLI 按 _module-map.yaml paths 前缀匹配预填「模块影响矩阵」骨架(文件×模块归属 + 未匹配文件清单,机械部分全代算),你只需逐行填「影响类型」(逻辑变更/数据结构变更/接口变更/调用关系变更/配置变更/新增)与 needs_review 标记,补首行中文标题 \`# 模块影响分析(Module Impact)— <变更简述>\`。骨架无从生成(无 module-map / 无 diff)时才按 archive-impact.yaml 的 impact-analyzer 角色规则全手写。
40
+
41
+ 确认完成后,下一步 sync-module-docs 会读 module-impact.md 更新模块卡片文档。`,
42
+ outputHint: 'module-impact.md 终审结果 + 修正摘要',
43
+ optional: false
44
+ },
45
+ {
46
+ name: 'sync-module-docs',
47
+ // conditionalWait(坑 archive-subconfirm-redundant,2026-08-23 实证:requiresWait 硬门强制
48
+ // 三段式 --wait → --continue --answer → --done,与 verify 文档同步阻断门、归档移动前死信
49
+ // 校验、下一步「确认归档 --confirm」四层确认重复,交互碎。改 conditionalWait(brainstorm-auto
50
+ // 同款先例):常规同步直接写入 + --done(agent 写入动作在 --done 前完成,坑 verify-archive-
51
+ // flow-pitfalls 坑4 的「无机会写入」不回归);仅异常(needs_review/未映射/标记缺失)才 --wait
52
+ // 请用户裁决。用户确认收敛到「确认归档 --confirm」一处。
53
+ conditionalWait: true,
54
+ repeatableWait: true,
55
+ maxWaitRounds: 3,
56
+ waitReason: '等待用户裁决模块文档同步异常',
57
+ waitOptions: ['确认写入', '跳过同步'],
58
+ prompt: `根据 module-impact.md 同步更新模块索引和卡片文档。
59
+
60
+ ### ⚠️ 核心原则:结构化事实改 _module-map.yaml,语义解释改模块卡片
61
+ - \`_module-map.yaml\` 是唯一的结构化索引源(paths/tags/entrypoints/depends_on/used_by/status/needs_review)
62
+ - 模块卡片只负责语义说明(定位/契约摘要/关键逻辑/注意事项/人工备注)
63
+ - 一个信息只维护一次,不要两边重复
64
+
65
+ ### 操作
66
+ 1. 读取 \`.sillyspec/changes/<change-name>/module-impact.md\`
67
+ 2. 如果没有受影响模块(只有 unmapped)→ 提示用户,跳过同步
68
+ 3. 对每个受影响模块,按影响类型分别更新:
69
+
70
+ #### 更新 _module-map.yaml 的规则
71
+ - **路径变化** → 更新对应模块的 paths
72
+ - **依赖变化** → 更新 depends_on / used_by(同时更新反向模块的 used_by / depends_on)
73
+ - **导出符号变化** → 更新 entrypoints / main_symbols
74
+ - **新增模块** → 添加完整条目
75
+ - **模块废弃** → status: deprecated
76
+ - **不确定的影响** → needs_review: true, review_reasons 追加原因
77
+ - 如果 _module-map.yaml 的 generated_at 已过时,更新为当前时间
78
+
79
+ #### 更新模块卡片(modules/<module-id>.md)的规则
80
+ - **契约语义变化**(新增/删除对外能力) → 更新"契约摘要"
81
+ - **关键逻辑变化** → 更新"关键逻辑"
82
+ - **边界变化**(模块职责扩大/缩小) → 更新"定位"
83
+ - **注意事项变化** → 更新"注意事项"
84
+ - **内部实现变化**(不影响对外接口) → 通常不更新卡片
85
+ - **人工备注** → 永远保护,不覆盖
86
+
87
+ #### 人工备注保护
88
+ 1. 用正则提取 \`<!-- MANUAL_NOTES_START -->\` 到 \`<!-- MANUAL_NOTES_END -->\` 之间的内容
89
+ 2. 生成新卡片后,原样回填到人工备注区域
90
+ 3. 如果标记缺失或重复 → 在 _module-map.yaml 中标记 needs_review: true
91
+
92
+ #### 新建模块卡片模板
93
+ 一级标题格式 \`# <中文名>(<module-id>)\`——中文名从模块职责提炼 2-8 字,括号内保留 module-id 原样(sillyhub 平台解析识别用,与 scan 生成约定一致)。frontmatter 已带 author/created_at 真值(<git-user>/<now-datetime> 占位符由 CLI 每步替换),照抄即过元数据校验、勿删。
94
+ \`\`\`markdown
95
+ ---
96
+ schema_version: 1
97
+ doc_type: module-card
98
+ module_id: <module-id>
99
+ author: <git-user>
100
+ created_at: <now-datetime>
101
+ ---
102
+
103
+ # <中文名>(<module-id>)
104
+
105
+ ## 定位
106
+
107
+ ## 契约摘要
108
+
109
+ ## 关键逻辑
110
+
111
+ ## 注意事项
112
+
113
+ ## 人工备注
114
+
115
+ <!-- MANUAL_NOTES_START -->
116
+
117
+ <!-- MANUAL_NOTES_END -->
118
+ \`\`\`
119
+
120
+ 4. 展示所有更新内容(diff 摘要),按同步状态分流:
121
+ - **常规**(无 needs_review 影响、无 unmapped 模块、人工备注标记齐全)→ **直接写入** _module-map.yaml 和受影响的模块卡片,diff 摘要写入 --output 后 --done(本步不单独弹确认——用户确认收敛到下一步「确认归档 --confirm」,该步展示同一 diff 摘要)
122
+ - **异常**(含 needs_review 影响项 / unmapped 模块 / 人工备注标记缺失或重复 / 覆盖会丢失手动维护字段)→ 暂停请用户裁决:
123
+ \`sillyspec run archive --wait --reason "等待用户裁决模块文档同步异常" --options "确认写入,跳过同步" --output "diff 摘要 + 异常说明"\`
124
+ 用户 --continue --answer "确认写入" 后写入;"跳过同步" 则不写入,提示 "module-impact.md 已保留,可稍后手动同步"
125
+ 5. 回填 module-impact.md 的"更新结果"表格,区分目标:
126
+ - 目标列写 "\`_module-map.yaml: <module-id>\`" 或 "\`modules/<module-id>.md\`"
127
+ 6. **同步完成后**,如需刷新 \`_module-map.yaml\` 索引:\`sillyspec modules rebuild --force\`(默认 dry-run 只预览不写;\`--force\` 才覆盖,但会清空 tags/entrypoints/main_symbols/depends_on/used_by 等手动维护字段——与 archive-impact 的「人工备注保护」约束冲突,仅当手动字段已并入骨架或可接受覆盖时用;优先手动更新 dependencies.md / 模块卡片)
128
+
129
+ ### 输出
130
+ 已更新的文件路径列表 + diff 摘要(异常时附裁决结果)`,
131
+ outputHint: '模块文档更新结果',
132
+ optional: false
133
+ },
134
+ {
135
+ name: 'decision-distill 决策提炼',
136
+ // conditionalWait(同 sync-module-docs 先例):常规提炼直接写入 + --done;仅异常(rejected
137
+ // 条目缺否决理由/复潮条件 → distillIntoKnowledge 返回 needsWait 非空)才 --wait 请用户裁决
138
+ // (补录后重跑幂等 / 跳过该条)。勿引入 requiresWait 硬门——与下一步「确认归档 --confirm」
139
+ // 重复确认(坑 archive-subconfirm-redundant)。
140
+ conditionalWait: true,
141
+ repeatableWait: true,
142
+ maxWaitRounds: 3,
143
+ waitReason: '等待用户裁决 rejected 决策缺字段',
144
+ waitOptions: ['补录后继续', '跳过该条'],
145
+ prompt: `读取变更 decisions.md,把有实现影响的决策提炼进决策知识库(提炼/幂等/INDEX 路由行本体在 CLI 纯函数 src/decision-distill.js,本步只接线,勿手工改写条目格式)。
146
+
147
+ ### 操作
148
+ 1. 定位参数:changeDir = \`.sillyspec/changes/<change-name>\`(decisions.md 所在——本步在「确认归档」移动目录之前,仍在原位);knowledgeRoot = \`.sillyspec/knowledge\`;headHash = \`git rev-parse --short HEAD\`(落条目「最近确认」)
149
+ 2. 调用纯函数 \`distillIntoKnowledge(changeDir, knowledgeRoot, headHash)\`,按返回的 \`{ written, skipped, needsWait }\` 分流(见第 3 点):
150
+ - 能解析到 sillyspec 源码/安装位置时(如 sillyspec 仓内 dogfood)直接 import 调用:\`node --input-type=module -e "import { distillIntoKnowledge } from './src/decision-distill.js'; console.log(JSON.stringify(distillIntoKnowledge(changeDir, knowledgeRoot, headHash), null, 2))"\`
151
+ - 解析不到(consumer 仓库无源码,node import 会 ERR_MODULE_NOT_FOUND)→ 按其语义执行:解析 D-xxx@vN 条目;入选规则 = 任意 type 的 status=rejected 留痕 + 五类 type(architecture/compatibility/boundary/definition/process)且 status∈{confirmed,accepted} 提炼 implemented,type=scope 不入选;条目幂等落 \`.sillyspec/knowledge/decisions/<模块域>.md\`(同 ID 同版本重写不重复追加、@vN+1 整段替换旧版并注 supersedes;「模块域」缺失按 impacts 路径与 _module-map.yaml paths 前缀匹配兜底,仍未中归 unmapped);implemented 条目写「状态:implemented + 锚点:<src 路径:行号,未记录则填"未记录"> + 最近确认:<headHash> + 理由:<一句话>」,rejected 条目写「状态:rejected + 否决理由: + 复潮条件:」;\`knowledge/INDEX.md\` 的 decisions 路由行(\`- <域>|decision|决策 → [decisions/<域>.md](decisions/<域>.md)\`)幂等增删
152
+ 3. 分流规则:
153
+ - **常规**(needsWait 为空且 written 非空)→ 写入已由函数完成,written 摘要(decisions/<域>.md × D-xxx@vN × append/update/supersede)写入 --output 后直接 --done(本步不单独弹确认——用户确认收敛到下一步「确认归档 --confirm」)
154
+ - **needsWait 非空**(rejected 条目缺否决理由/复潮条件,该条目未写盘、其余条目照常提炼)→ 暂停请用户裁决:
155
+ \`sillyspec run archive --wait --reason "等待用户裁决 rejected 决策缺字段" --options "补录后继续,跳过该条" --output "needsWait 描述 + 已提炼摘要"\`
156
+ - 「补录后继续」→ 按 needsWait 描述在 changes/<change-name>/decisions.md 补齐缺失的否决理由/复潮条件,重跑第 2 步(幂等,重跑安全)
157
+ - 「跳过该条」→ 该条目不入库,--output 注记跳过原因后 --done
158
+ - **零输出**(skipped 非空 = 无 decisions.md / 无入选条目)→ 不创建任何文件、不动 INDEX,--output 注一句 skipped 原因后直接 --done(同 docs-debt 无债零输出原则)
159
+ 4. 降级:调用或解析异常(模块加载失败 / decisions.md 结构异常抛错)→ warn 记录异常摘要后跳过本步 --done(best-effort,同 agent-session-log 先例),不阻断归档——决策提炼失败不挡归档移动
160
+
161
+ ### 输出
162
+ 已提炼条目清单(decisions/<域>.md × D-xxx@vN × action)或零输出/跳过/降级原因`,
163
+ outputHint: '决策提炼结果',
164
+ optional: false
165
+ },
166
+ {
167
+ name: '确认归档',
168
+ prompt: `确认归档内容,由 CLI 执行目录移动。
169
+
170
+ ### 操作
171
+ 1. 展示:变更目录名、包含的文件列表(含 module-impact.md)、生成总结
172
+ 2. 确保任务清单(tasks.md)所有 task checkbox 都已勾选
173
+ 3. 让用户确认后,用 \`--confirm\` 完成本步骤:
174
+ \`sillyspec run archive --done --confirm --output "确认归档"\`
175
+ 4. CLI 会创建 \`.sillyspec/changes/archive/\`,并将变更目录移动到 \`.sillyspec/changes/archive/<原变更名>/\`
176
+
177
+ ### 输出
178
+ 归档完成 + archive 目录路径`,
179
+ outputHint: '归档确认',
180
+ optional: false
181
+ },
182
+ {
183
+ name: '更新路线图和提交',
184
+ prompt: `更新路线图并暂存变更。
185
+
186
+ ### 操作
187
+ 1. 如果 \`.sillyspec/ROADMAP.md\` 存在,标记对应 Phase 为已完成
188
+ 2. \`git add .sillyspec/changes/archive/\` — 暂存归档结果(archive/ 下仅本次归档新增,不会裹挟 changes/ 下其他活跃变更;不要 commit,由用户通过统一提交工具处理)
189
+ 3. \`git add .sillyspec/docs/<project>/modules/\` — 暂存模块文档更新(如有;精确到本次同步的模块文档,勿 add 整个 .sillyspec/docs/)
190
+ 4. \`git add .sillyspec/knowledge/decisions/\` — 暂存决策知识库更新(如有;decision-distill 步骤的提炼产物,精确到 decisions 子目录,勿 add 整个 .sillyspec/knowledge/;不要 commit,由用户通过统一提交工具处理)
191
+ 5. 确认 sillyspec.db 中该变更已不再 active(确认归档步骤由 CLI 调用 unregisterChange)
192
+
193
+ ### 输出
194
+ 归档完成确认 + 累积规范统计`,
195
+ outputHint: '归档完成',
196
+ optional: false
197
+ }
198
+ ]
199
+ }
@@ -0,0 +1,285 @@
1
+ /**
2
+ * brainstorm-auto.js — auto/full 模式使用的 brainstorm 步骤定义
3
+ *
4
+ * 与 brainstorm.js 的区别:
5
+ * 1. artifact-first:直接写文件,对话只输出摘要
6
+ * 2. 自动决策:基于 AC-001~AC-011 checklist,不频繁请示
7
+ * 3. next-action.json:结构化产物,驱动下游推进
8
+ * 4. 只有 blocking questions 才 wait 用户
9
+ * 5. 步骤从 ~13 步精简为 4 步
10
+ */
11
+
12
+ export const definition = {
13
+ name: 'brainstorm',
14
+ title: '头脑风暴(自动模式)',
15
+ description: '探索需求、分析技术方案、识别风险 — artifact-first,自动决策优先',
16
+
17
+ steps: [
18
+ {
19
+ name: '进度确认与上下文加载',
20
+ migratedFrom: ['状态检查与上下文加载'],
21
+ prompt: `检查进度、加载项目上下文、匹配模块。用 \`sillyspec progress show\` 查流程进度,不要用 \`sillyspec status\`(项目级快照,不推进流程)。
22
+
23
+ ### 操作
24
+ 1. 运行 \`sillyspec progress show\`,确认 currentStage 为 "brainstorm"
25
+ 2. 如果未初始化,提示先运行 sillyspec init
26
+ 3. **检查变更名称**:如果当前变更名是自动生成的(如 \`2026-06-02-new-change-a3f2b7c1\`),直接重命名为有意义名称,然后运行 \`sillyspec change-rename <旧名> <新名>\`
27
+
28
+ ### 加载上下文
29
+ 4. 读取项目总览 \`.sillyspec/docs/<project>/scan/PROJECT.md\`(如存在)+ 共享规范 + 子项目上下文
30
+ 5. 加载项目信息:\`cat .sillyspec/projects/*.yaml 2>/dev/null\`
31
+ 6. 加载本地配置:\`cat .sillyspec/local.yaml 2>/dev/null\`
32
+ 7. 棕地项目:读取 scan 下的 STRUCTURE.md、CONVENTIONS.md、ARCHITECTURE.md
33
+ 8. 加载模块索引:读取 \`.sillyspec/docs/<project>/modules/_module-map.yaml\`(如存在)
34
+ 9. 查看进行中的变更:\`ls .sillyspec/changes/ | grep -v archive\`
35
+ 10. 检查同名变更或可复用模板
36
+
37
+ ### 模块匹配
38
+ 根据用户描述的需求关键词,匹配相关模块(用 _module-map.yaml 的 tags/aliases/paths)。
39
+
40
+ ### 子项目判定
41
+ - 单项目:直接确认
42
+ - 多项目且用户已指定:直接确认
43
+ - 多项目且用户未指定:列出项目列表,需要用户确认
44
+
45
+ ### 如果有用户提供的原型/截图
46
+ 分析提取:页面结构、表单字段、交互流程、业务规则。
47
+
48
+ ### 输出
49
+ 状态摘要 + 项目现状理解(3-5 句)+ 涉及模块列表 + 子项目 + 原型分析(如有)
50
+
51
+ ### 注意
52
+ - 以 CLI 返回为准,不要自行推断阶段
53
+ - 不要用 mv 命令重命名变更目录,必须用 \`sillyspec change-rename\``,
54
+ outputHint: '状态摘要 + 上下文 + 模块匹配',
55
+ optional: false
56
+ },
57
+ {
58
+ name: '需求分析与方案设计',
59
+ // conditionalWait(非 requiresWait):与主模式 Step3 对齐。prompt 明确「目标明确→跳过追问,
60
+ // 直接进入方案设计」「checklist 全 ✅ → AUTO_DECIDED」——这两种场景 AI 无需追问,必须能直接 --done。
61
+ // 若用 requiresWait,CLI 硬门强制要 --answer(complete.js:223),AI 只能伪造 --answer「无需追问」
62
+ // (正是 Grill 第三病)或 --wait 一个不存在的问题。conditionalWait 让「无需追问」路径直接 --done,
63
+ // 只在真正需要用户决策(方案选择/拆分确认)时才走 --wait(multi-agent-review B1)。
64
+ conditionalWait: true,
65
+ repeatableWait: true,
66
+ maxWaitRounds: 5,
67
+ waitReason: '等待用户回答需求问题',
68
+ waitOptions: ['回答见--answer', '信息够了,进入设计'],
69
+ prompt: `分析需求,必要时追问,然后设计方案。
70
+
71
+ ### 操作
72
+
73
+ #### A. 需求评估
74
+ 1. 汇总上一步加载的上下文和用户需求
75
+ 2. 判断需求是否清晰:
76
+ - 目标明确、范围清楚、无歧义 → 跳过追问,直接进入方案设计
77
+ - 有歧义或不清楚 → 挑**一个最关键的**问题追问
78
+
79
+ #### B. 追问规则(只在需要时)
80
+ - 一次只问一个问题,不要一次性列出多个问题
81
+ - 能从代码/文档确认的不要问用户
82
+ - 多选题优于开放式问题
83
+ - YAGNI — 砍掉不需要的功能
84
+ - 2-3 轮问答就应进入方案设计
85
+ - 优先追问影响架构/数据/接口的问题,实现细节不要问
86
+
87
+ **如果需要追问:**调用 \`sillyspec run brainstorm --wait --reason "等待用户回答需求问题" --options "回答见--answer,信息够了,进入设计" --output "你的单个问题"\`
88
+
89
+ #### C. 复杂度评估(追问结束后或不需要追问时)
90
+ 1. 判断是否需要拆分或走批量模式:
91
+ - 3+ 个可独立交付的功能模块 → 建议拆分
92
+ - 任务 > 10 且有重复模式 → 建议批量模式
93
+ - 简单 CRUD → 不拆
94
+ 2. 如果需要拆分/批量模式:暂停等用户确认
95
+ - 调用:\`sillyspec run brainstorm --wait --reason "等待用户确认拆分方案" --options "同意拆分,不需要拆分,走批量模式" --output "拆分方案摘要"\`
96
+ 3. 不需要拆分 → 继续
97
+
98
+ #### D. 方案设计(自动决策优先)
99
+ 1. 基于需求理解和上下文,提出 1-3 种实现方案
100
+ 2. **使用自动决策 checklist(AC-001~AC-011)判断是否需要用户选择:**
101
+
102
+ \`\`\`
103
+ AC-001: 未修改公共 API
104
+ AC-002: 未修改数据库 schema
105
+ AC-003: 未涉及鉴权/权限
106
+ AC-004: 未扩大 allowed_paths
107
+ AC-005: 未引入新外部依赖
108
+ AC-006: 未修改核心模块(workflow/daemon/session/lifecycle)
109
+ AC-007: 已有项目约定可复用
110
+ AC-008: 不影响向后兼容
111
+ AC-009: 不涉及数据迁移
112
+ AC-010: 单模块范围内可完成
113
+ AC-011: 不涉及业务规则/产品范围/默认行为/用户可见行为变更
114
+ \`\`\`
115
+
116
+ 3. **自动决策判定:**
117
+ - 只有一个明显合理方案 + checklist 全部 ✅ → **自动选择,标记 AUTO_DECIDED**
118
+ - 有多个方案但影响不大(checklist 全部 ✅)→ **自动选推荐方案,标记 AUTO_DECIDED**
119
+ - 有多个方案且 checklist 有 ❌(影响架构/数据/接口/权限/兼容性/业务)→ **只有这一种情况才暂停等用户选择**
120
+
121
+ 4. 如果需要用户选择方案:
122
+ - 调用:\`sillyspec run brainstorm --wait --reason "等待用户选择方案" --options "方案A,方案B,方案C" --output "方案对比摘要"\`
123
+
124
+ #### E. Design Grill(轻量交叉审查)
125
+ 对方案做快速交叉审查:
126
+ - 检查方案与 ARCHITECTURE.md / CONVENTIONS.md 的一致性
127
+ - 检查是否有术语歧义、边界遗漏
128
+ - 能自动解决的直接修正,只有需要业务判断的才问用户
129
+ - 跳过条件:单模块、无状态流转、< 3 个文件变更
130
+
131
+ ### 输出
132
+ 需求理解摘要 + 复杂度评估 + 方案决策(AUTO_DECIDED 或用户选择)
133
+
134
+ ### 注意
135
+ - **不要自问自答。** 不要在自己输出中模拟用户回答然后说"需求已明确"
136
+ - checklist 判定结果必须在 decisions.md 中记录依据`,
137
+ outputHint: '需求理解 + 方案决策',
138
+ optional: false
139
+ },
140
+ {
141
+ name: '生成设计产物',
142
+ prompt: `将设计方案写入文件(artifact-first),不回显正文。
143
+
144
+ ### 操作
145
+ 1. 确保变更目录存在:\`mkdir -p .sillyspec/changes/<change-name>\`
146
+ 2. **直接将设计方案写入文件,不要先在对话中输出完整内容再写文件。**
147
+ 3. 产物写入**变更根目录**(\`.sillyspec/changes/<change-name>/\`),不要建 \`brainstorm/\` 子目录——stage validator 只认根目录,写进子目录会在 \`--done\` 校验时被判产物缺失。
148
+
149
+ ### 产物文件
150
+
151
+ #### design.md(必填,写入变更根目录 \`design.md\`)
152
+ 包含:背景、设计目标、非目标、总体方案、文件变更清单、接口定义、数据模型(如涉及)、兼容策略(brownfield)、风险登记、决策追踪、自审。
153
+ **章节骨架必须按下述字面格式写**(校验器按字面短语匹配,措辞偏离会连环卡门——坑 literal-template-trap,2026-08-24 用户反馈五期②):
154
+ \`\`\`markdown
155
+ # 设计文档(Design)— <变更简述>
156
+
157
+ ## 背景
158
+ <为什么做、解决什么问题>
159
+
160
+ ## 设计目标
161
+ <要达成什么>
162
+
163
+ ## 非目标
164
+ <明确不做的事——标题必须字面含「非目标」(Non-Goals 也认,但大小写须完全一致)>
165
+
166
+ ## 总体方案
167
+ <技术方案>
168
+
169
+ ## 文件变更清单
170
+ | 操作 | 文件路径 | 说明 |
171
+ |---|---|---|
172
+ | 新增 | src/xxx/NewFile.ts | ... |
173
+ | 修改 | src/xxx/ExistingFile.ts | ... |
174
+
175
+ ## 生命周期契约表
176
+ <仅当涉及 session/lease/agent_run/daemon/lifecycle/state_transition/claim/heartbeat 关键词时必填;
177
+ 若不涉及,删掉本节或在正文写紧邻豁免短语:「不涉及生命周期契约」或「生命周期契约:无/N/A」
178
+ ——「无需 lifecycle 事件」这类宽写法不被识别(否定词必须紧邻「生命周期契约/lifecycle contract」)>
179
+
180
+ | 事件 | 发起方 | 接收方 | 必需字段 | 状态变化 |
181
+ |---|---|---|---|---|
182
+ | <事件名> | <发起方> | <接收方> | <字段清单> | <初始态 → 终态> |
183
+
184
+ ## 风险登记
185
+ | 编号 | 风险 | 等级 | 应对策略 |
186
+ |---|---|---|---|
187
+ | R-01 | ... | P0/P1/P2 | ... |
188
+
189
+ ## 决策追踪
190
+ <列出 D-xxx@vN 决策 ID 及覆盖关系;无决策可写「无」>
191
+
192
+ ## 自审
193
+ <对自身设计的校验——标题必须字面含「自审」或「Self-Review」(自我审查等宽写法不识别)>
194
+ \`\`\`
195
+
196
+ #### decisions.md(必填,写入变更根目录 \`decisions.md\`)
197
+ 记录所有决策:
198
+ \`\`\`markdown
199
+ ---
200
+ author: <git-user>
201
+ created_at: <now-datetime>
202
+ ---
203
+
204
+ # 决策记录(Decisions)
205
+
206
+ ## D-001@v1: 决策短标题
207
+ - type: architecture | boundary | compatibility | ...
208
+ - priority: P0 | P1 | P2
209
+ - status: AUTO_DECIDED | NEEDS_REVIEW | USER_DECIDED
210
+ - source: user | code | docs
211
+ - question: 被解决的问题
212
+ - answer: 选择或结论
213
+ - checklist: AC-001 ✅, AC-007 ✅(AUTO_DECIDED 时必须列出)
214
+ - normalized_requirement: 可测试约束
215
+ - impacts: [FR-01, task-01]
216
+ - evidence: 代码/文档路径或用户回答轮次
217
+ \`\`\`
218
+
219
+ #### gaps.md(必填,写入变更根目录 \`gaps.md\`)
220
+ 记录已识别的缺口。status=BLOCKER 的缺口会在 plan-postcheck 中触发回退。
221
+
222
+ #### assumptions.md(必填,写入变更根目录 \`assumptions.md\`)
223
+ 记录隐含假设和验证方法。
224
+
225
+ #### next-action.json(必填,写入变更根目录 \`next-action.json\`)
226
+ \`\`\`json
227
+ {
228
+ "status": "ready_for_plan" | "waiting_for_user",
229
+ "decision_level": "high" | "medium" | "low",
230
+ "has_blocking_questions": true | false,
231
+ "blocking_reasons": [],
232
+ "questions": [],
233
+ "auto_decisions": [
234
+ { "id": "D-001", "decision": "方案描述", "reason": "AC-007 ✅" }
235
+ ]
236
+ }
237
+ \`\`\`
238
+
239
+ ### 自审
240
+ 对 design.md 执行自审(需求覆盖、文件变更清单具体性、验收标准可测试、非目标清晰、兼容策略)。发现问题直接修改文件。
241
+
242
+ ### 如果有 blocking questions
243
+ 将问题写入 next-action.json.questions,在对话中输出问题列表和推荐选项,然后 --wait。
244
+
245
+ ### 输出(artifact-first)
246
+ 只输出摘要:
247
+ \`\`\`
248
+ 已生成设计产物(5 个文件,均在变更根目录):
249
+ - design.md — 采用 xxx 方案,涉及 N 个文件变更
250
+ - decisions.md — M 个决策,K 个 AUTO_DECIDED
251
+ - gaps.md — J 个缺口,0 个 BLOCKER
252
+ - assumptions.md — L 个假设
253
+ - next-action.json — ready_for_plan / waiting_for_user
254
+ \`\`\``,
255
+ outputHint: '产物摘要',
256
+ optional: false
257
+ },
258
+ {
259
+ name: '生成规范文件',
260
+ requiresWait: true,
261
+ waitReason: '等待用户最终确认',
262
+ waitOptions: ['确认', '需要修改', '推翻重来'],
263
+ prompt: `生成 proposal.md / requirements.md / tasks.md,让用户确认。
264
+
265
+ ### 操作
266
+ 1. 基于变更根目录下的设计产物(design.md / decisions.md / gaps.md / assumptions.md / next-action.json),生成规范文件(直接写入变更根目录):
267
+ - **proposal.md**:动机、关键问题、变更范围、不在范围内、成功标准
268
+ - **requirements.md**:角色表 + FR 编号需求 + Given/When/Then + 非功能需求
269
+ - **tasks.md**:任务列表骨架(只列名称;任务清单唯一真相,plan 阶段展开细节并写回本文件——execute 勾选与 verify 对照都在本文件)
270
+ 2. 所有规范文件头部包含 YAML frontmatter
271
+ 3. \`git add {SPEC_ROOT}/changes/<change-name>/\` — 暂存本变更的规范文件(勿用 .sillyspec/ 整目录——会裹挟其他活跃变更;不要 commit)
272
+
273
+ ### 输出(摘要)
274
+ 规范文件路径列表(各一句话说明)
275
+
276
+ ### 铁律
277
+ - **直接写文件,不在对话中输出完整内容**
278
+ - 暂停等待用户确认:\`sillyspec run brainstorm --wait --reason "等待用户最终确认" --options "确认,需要修改,推翻重来" --output "规范文件摘要"\`
279
+ - 禁止自动 commit
280
+ - 禁止在确认前推进到后续阶段`,
281
+ outputHint: '规范文件摘要',
282
+ optional: false
283
+ }
284
+ ]
285
+ }