@specship/specship 0.11.0

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 (879) hide show
  1. package/.claude-plugin/plugin.json +6 -0
  2. package/LICENSE +21 -0
  3. package/README.md +583 -0
  4. package/agents/specship-explorer.md +29 -0
  5. package/commands/ss-behaviour.md +116 -0
  6. package/commands/ss-check.md +43 -0
  7. package/commands/ss-design-implement.md +84 -0
  8. package/commands/ss-design-loop.md +125 -0
  9. package/commands/ss-explore.md +43 -0
  10. package/commands/ss-spec.md +118 -0
  11. package/dist/activation/starter-prompt.d.ts +57 -0
  12. package/dist/activation/starter-prompt.d.ts.map +1 -0
  13. package/dist/activation/starter-prompt.js +164 -0
  14. package/dist/activation/starter-prompt.js.map +1 -0
  15. package/dist/analytics/specship-impact.d.ts +72 -0
  16. package/dist/analytics/specship-impact.d.ts.map +1 -0
  17. package/dist/analytics/specship-impact.js +216 -0
  18. package/dist/analytics/specship-impact.js.map +1 -0
  19. package/dist/behaviour/behaviour-surface.d.ts +59 -0
  20. package/dist/behaviour/behaviour-surface.d.ts.map +1 -0
  21. package/dist/behaviour/behaviour-surface.js +112 -0
  22. package/dist/behaviour/behaviour-surface.js.map +1 -0
  23. package/dist/bin/node-version-check.d.ts +37 -0
  24. package/dist/bin/node-version-check.d.ts.map +1 -0
  25. package/dist/bin/node-version-check.js +79 -0
  26. package/dist/bin/node-version-check.js.map +1 -0
  27. package/dist/bin/specship.d.ts +25 -0
  28. package/dist/bin/specship.d.ts.map +1 -0
  29. package/dist/bin/specship.js +2823 -0
  30. package/dist/bin/specship.js.map +1 -0
  31. package/dist/bin/uninstall.d.ts +13 -0
  32. package/dist/bin/uninstall.d.ts.map +1 -0
  33. package/dist/bin/uninstall.js +35 -0
  34. package/dist/bin/uninstall.js.map +1 -0
  35. package/dist/context/formatter.d.ts +30 -0
  36. package/dist/context/formatter.d.ts.map +1 -0
  37. package/dist/context/formatter.js +263 -0
  38. package/dist/context/formatter.js.map +1 -0
  39. package/dist/context/index.d.ts +119 -0
  40. package/dist/context/index.d.ts.map +1 -0
  41. package/dist/context/index.js +1289 -0
  42. package/dist/context/index.js.map +1 -0
  43. package/dist/context/markers.d.ts +19 -0
  44. package/dist/context/markers.d.ts.map +1 -0
  45. package/dist/context/markers.js +22 -0
  46. package/dist/context/markers.js.map +1 -0
  47. package/dist/db/index.d.ts +103 -0
  48. package/dist/db/index.d.ts.map +1 -0
  49. package/dist/db/index.js +279 -0
  50. package/dist/db/index.js.map +1 -0
  51. package/dist/db/migrations.d.ts +44 -0
  52. package/dist/db/migrations.d.ts.map +1 -0
  53. package/dist/db/migrations.js +503 -0
  54. package/dist/db/migrations.js.map +1 -0
  55. package/dist/db/queries.d.ts +357 -0
  56. package/dist/db/queries.d.ts.map +1 -0
  57. package/dist/db/queries.js +1504 -0
  58. package/dist/db/queries.js.map +1 -0
  59. package/dist/db/schema.sql +451 -0
  60. package/dist/db/spec-queries.d.ts +130 -0
  61. package/dist/db/spec-queries.d.ts.map +1 -0
  62. package/dist/db/spec-queries.js +738 -0
  63. package/dist/db/spec-queries.js.map +1 -0
  64. package/dist/db/sqlite-adapter.d.ts +65 -0
  65. package/dist/db/sqlite-adapter.d.ts.map +1 -0
  66. package/dist/db/sqlite-adapter.js +214 -0
  67. package/dist/db/sqlite-adapter.js.map +1 -0
  68. package/dist/designer/artifact-store.js +54 -0
  69. package/dist/designer/browser.js +141 -0
  70. package/dist/designer/cdp-ensure.js +60 -0
  71. package/dist/designer/cdp-env.js +18 -0
  72. package/dist/designer/cdp-trace.js +599 -0
  73. package/dist/designer/cross-platform.js +74 -0
  74. package/dist/designer/designer-controller.js +1413 -0
  75. package/dist/designer/file-panel.js +39 -0
  76. package/dist/designer/interstitials.js +97 -0
  77. package/dist/designer/oopif-reader.js +176 -0
  78. package/dist/designer/package-meta.js +18 -0
  79. package/dist/designer/preview-host.js +50 -0
  80. package/dist/designer/repo-root.js +31 -0
  81. package/dist/designer/run-state.js +353 -0
  82. package/dist/designer/session-store.js +59 -0
  83. package/dist/designer/ui-anchors.js +651 -0
  84. package/dist/directory.d.ts +67 -0
  85. package/dist/directory.d.ts.map +1 -0
  86. package/dist/directory.js +267 -0
  87. package/dist/directory.js.map +1 -0
  88. package/dist/enforce/enforce.d.ts +70 -0
  89. package/dist/enforce/enforce.d.ts.map +1 -0
  90. package/dist/enforce/enforce.js +125 -0
  91. package/dist/enforce/enforce.js.map +1 -0
  92. package/dist/errors.d.ts +136 -0
  93. package/dist/errors.d.ts.map +1 -0
  94. package/dist/errors.js +219 -0
  95. package/dist/errors.js.map +1 -0
  96. package/dist/extraction/dfm-extractor.d.ts +31 -0
  97. package/dist/extraction/dfm-extractor.d.ts.map +1 -0
  98. package/dist/extraction/dfm-extractor.js +151 -0
  99. package/dist/extraction/dfm-extractor.js.map +1 -0
  100. package/dist/extraction/generated-detection.d.ts +30 -0
  101. package/dist/extraction/generated-detection.d.ts.map +1 -0
  102. package/dist/extraction/generated-detection.js +80 -0
  103. package/dist/extraction/generated-detection.js.map +1 -0
  104. package/dist/extraction/grammars.d.ts +100 -0
  105. package/dist/extraction/grammars.d.ts.map +1 -0
  106. package/dist/extraction/grammars.js +426 -0
  107. package/dist/extraction/grammars.js.map +1 -0
  108. package/dist/extraction/index.d.ts +138 -0
  109. package/dist/extraction/index.d.ts.map +1 -0
  110. package/dist/extraction/index.js +1394 -0
  111. package/dist/extraction/index.js.map +1 -0
  112. package/dist/extraction/languages/c-cpp.d.ts +4 -0
  113. package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
  114. package/dist/extraction/languages/c-cpp.js +171 -0
  115. package/dist/extraction/languages/c-cpp.js.map +1 -0
  116. package/dist/extraction/languages/csharp.d.ts +3 -0
  117. package/dist/extraction/languages/csharp.d.ts.map +1 -0
  118. package/dist/extraction/languages/csharp.js +73 -0
  119. package/dist/extraction/languages/csharp.js.map +1 -0
  120. package/dist/extraction/languages/dart.d.ts +3 -0
  121. package/dist/extraction/languages/dart.d.ts.map +1 -0
  122. package/dist/extraction/languages/dart.js +192 -0
  123. package/dist/extraction/languages/dart.js.map +1 -0
  124. package/dist/extraction/languages/go.d.ts +3 -0
  125. package/dist/extraction/languages/go.d.ts.map +1 -0
  126. package/dist/extraction/languages/go.js +74 -0
  127. package/dist/extraction/languages/go.js.map +1 -0
  128. package/dist/extraction/languages/index.d.ts +10 -0
  129. package/dist/extraction/languages/index.d.ts.map +1 -0
  130. package/dist/extraction/languages/index.js +51 -0
  131. package/dist/extraction/languages/index.js.map +1 -0
  132. package/dist/extraction/languages/java.d.ts +3 -0
  133. package/dist/extraction/languages/java.d.ts.map +1 -0
  134. package/dist/extraction/languages/java.js +70 -0
  135. package/dist/extraction/languages/java.js.map +1 -0
  136. package/dist/extraction/languages/javascript.d.ts +3 -0
  137. package/dist/extraction/languages/javascript.d.ts.map +1 -0
  138. package/dist/extraction/languages/javascript.js +90 -0
  139. package/dist/extraction/languages/javascript.js.map +1 -0
  140. package/dist/extraction/languages/kotlin.d.ts +3 -0
  141. package/dist/extraction/languages/kotlin.d.ts.map +1 -0
  142. package/dist/extraction/languages/kotlin.js +259 -0
  143. package/dist/extraction/languages/kotlin.js.map +1 -0
  144. package/dist/extraction/languages/lua.d.ts +3 -0
  145. package/dist/extraction/languages/lua.d.ts.map +1 -0
  146. package/dist/extraction/languages/lua.js +150 -0
  147. package/dist/extraction/languages/lua.js.map +1 -0
  148. package/dist/extraction/languages/luau.d.ts +3 -0
  149. package/dist/extraction/languages/luau.d.ts.map +1 -0
  150. package/dist/extraction/languages/luau.js +37 -0
  151. package/dist/extraction/languages/luau.js.map +1 -0
  152. package/dist/extraction/languages/objc.d.ts +3 -0
  153. package/dist/extraction/languages/objc.d.ts.map +1 -0
  154. package/dist/extraction/languages/objc.js +133 -0
  155. package/dist/extraction/languages/objc.js.map +1 -0
  156. package/dist/extraction/languages/pascal.d.ts +3 -0
  157. package/dist/extraction/languages/pascal.d.ts.map +1 -0
  158. package/dist/extraction/languages/pascal.js +66 -0
  159. package/dist/extraction/languages/pascal.js.map +1 -0
  160. package/dist/extraction/languages/php.d.ts +3 -0
  161. package/dist/extraction/languages/php.d.ts.map +1 -0
  162. package/dist/extraction/languages/php.js +107 -0
  163. package/dist/extraction/languages/php.js.map +1 -0
  164. package/dist/extraction/languages/python.d.ts +3 -0
  165. package/dist/extraction/languages/python.d.ts.map +1 -0
  166. package/dist/extraction/languages/python.js +56 -0
  167. package/dist/extraction/languages/python.js.map +1 -0
  168. package/dist/extraction/languages/ruby.d.ts +3 -0
  169. package/dist/extraction/languages/ruby.d.ts.map +1 -0
  170. package/dist/extraction/languages/ruby.js +114 -0
  171. package/dist/extraction/languages/ruby.js.map +1 -0
  172. package/dist/extraction/languages/rust.d.ts +3 -0
  173. package/dist/extraction/languages/rust.d.ts.map +1 -0
  174. package/dist/extraction/languages/rust.js +109 -0
  175. package/dist/extraction/languages/rust.js.map +1 -0
  176. package/dist/extraction/languages/scala.d.ts +3 -0
  177. package/dist/extraction/languages/scala.d.ts.map +1 -0
  178. package/dist/extraction/languages/scala.js +139 -0
  179. package/dist/extraction/languages/scala.js.map +1 -0
  180. package/dist/extraction/languages/swift.d.ts +3 -0
  181. package/dist/extraction/languages/swift.d.ts.map +1 -0
  182. package/dist/extraction/languages/swift.js +91 -0
  183. package/dist/extraction/languages/swift.js.map +1 -0
  184. package/dist/extraction/languages/typescript.d.ts +3 -0
  185. package/dist/extraction/languages/typescript.d.ts.map +1 -0
  186. package/dist/extraction/languages/typescript.js +129 -0
  187. package/dist/extraction/languages/typescript.js.map +1 -0
  188. package/dist/extraction/liquid-extractor.d.ts +52 -0
  189. package/dist/extraction/liquid-extractor.d.ts.map +1 -0
  190. package/dist/extraction/liquid-extractor.js +313 -0
  191. package/dist/extraction/liquid-extractor.js.map +1 -0
  192. package/dist/extraction/mybatis-extractor.d.ts +48 -0
  193. package/dist/extraction/mybatis-extractor.d.ts.map +1 -0
  194. package/dist/extraction/mybatis-extractor.js +198 -0
  195. package/dist/extraction/mybatis-extractor.js.map +1 -0
  196. package/dist/extraction/parse-worker.d.ts +8 -0
  197. package/dist/extraction/parse-worker.d.ts.map +1 -0
  198. package/dist/extraction/parse-worker.js +94 -0
  199. package/dist/extraction/parse-worker.js.map +1 -0
  200. package/dist/extraction/specs/markdown-spec-extractor.d.ts +114 -0
  201. package/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -0
  202. package/dist/extraction/specs/markdown-spec-extractor.js +699 -0
  203. package/dist/extraction/specs/markdown-spec-extractor.js.map +1 -0
  204. package/dist/extraction/specs/types.d.ts +39 -0
  205. package/dist/extraction/specs/types.d.ts.map +1 -0
  206. package/dist/extraction/specs/types.js +8 -0
  207. package/dist/extraction/specs/types.js.map +1 -0
  208. package/dist/extraction/svelte-extractor.d.ts +56 -0
  209. package/dist/extraction/svelte-extractor.d.ts.map +1 -0
  210. package/dist/extraction/svelte-extractor.js +272 -0
  211. package/dist/extraction/svelte-extractor.js.map +1 -0
  212. package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
  213. package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
  214. package/dist/extraction/tree-sitter-helpers.js +103 -0
  215. package/dist/extraction/tree-sitter-helpers.js.map +1 -0
  216. package/dist/extraction/tree-sitter-types.d.ts +193 -0
  217. package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
  218. package/dist/extraction/tree-sitter-types.js +10 -0
  219. package/dist/extraction/tree-sitter-types.js.map +1 -0
  220. package/dist/extraction/tree-sitter.d.ts +317 -0
  221. package/dist/extraction/tree-sitter.d.ts.map +1 -0
  222. package/dist/extraction/tree-sitter.js +3092 -0
  223. package/dist/extraction/tree-sitter.js.map +1 -0
  224. package/dist/extraction/vue-extractor.d.ts +51 -0
  225. package/dist/extraction/vue-extractor.d.ts.map +1 -0
  226. package/dist/extraction/vue-extractor.js +251 -0
  227. package/dist/extraction/vue-extractor.js.map +1 -0
  228. package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
  229. package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
  230. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  231. package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
  232. package/dist/extraction/wasm-runtime-flags.d.ts +38 -0
  233. package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
  234. package/dist/extraction/wasm-runtime-flags.js +106 -0
  235. package/dist/extraction/wasm-runtime-flags.js.map +1 -0
  236. package/dist/fitness/fitness.d.ts +75 -0
  237. package/dist/fitness/fitness.d.ts.map +1 -0
  238. package/dist/fitness/fitness.js +204 -0
  239. package/dist/fitness/fitness.js.map +1 -0
  240. package/dist/graph/index.d.ts +8 -0
  241. package/dist/graph/index.d.ts.map +1 -0
  242. package/dist/graph/index.js +13 -0
  243. package/dist/graph/index.js.map +1 -0
  244. package/dist/graph/maintainability.d.ts +115 -0
  245. package/dist/graph/maintainability.d.ts.map +1 -0
  246. package/dist/graph/maintainability.js +299 -0
  247. package/dist/graph/maintainability.js.map +1 -0
  248. package/dist/graph/queries.d.ts +106 -0
  249. package/dist/graph/queries.d.ts.map +1 -0
  250. package/dist/graph/queries.js +366 -0
  251. package/dist/graph/queries.js.map +1 -0
  252. package/dist/graph/traversal.d.ts +127 -0
  253. package/dist/graph/traversal.d.ts.map +1 -0
  254. package/dist/graph/traversal.js +531 -0
  255. package/dist/graph/traversal.js.map +1 -0
  256. package/dist/health/smoke-check.d.ts +85 -0
  257. package/dist/health/smoke-check.d.ts.map +1 -0
  258. package/dist/health/smoke-check.js +246 -0
  259. package/dist/health/smoke-check.js.map +1 -0
  260. package/dist/index.d.ts +674 -0
  261. package/dist/index.d.ts.map +1 -0
  262. package/dist/index.js +1473 -0
  263. package/dist/index.js.map +1 -0
  264. package/dist/installer/config-writer.d.ts +28 -0
  265. package/dist/installer/config-writer.d.ts.map +1 -0
  266. package/dist/installer/config-writer.js +91 -0
  267. package/dist/installer/config-writer.js.map +1 -0
  268. package/dist/installer/index.d.ts +100 -0
  269. package/dist/installer/index.d.ts.map +1 -0
  270. package/dist/installer/index.js +442 -0
  271. package/dist/installer/index.js.map +1 -0
  272. package/dist/installer/init-offer.d.ts +31 -0
  273. package/dist/installer/init-offer.d.ts.map +1 -0
  274. package/dist/installer/init-offer.js +30 -0
  275. package/dist/installer/init-offer.js.map +1 -0
  276. package/dist/installer/instructions-template.d.ts +36 -0
  277. package/dist/installer/instructions-template.d.ts.map +1 -0
  278. package/dist/installer/instructions-template.js +57 -0
  279. package/dist/installer/instructions-template.js.map +1 -0
  280. package/dist/installer/targets/claude.d.ts +146 -0
  281. package/dist/installer/targets/claude.d.ts.map +1 -0
  282. package/dist/installer/targets/claude.js +864 -0
  283. package/dist/installer/targets/claude.js.map +1 -0
  284. package/dist/installer/targets/registry.d.ts +19 -0
  285. package/dist/installer/targets/registry.d.ts.map +1 -0
  286. package/dist/installer/targets/registry.js +31 -0
  287. package/dist/installer/targets/registry.js.map +1 -0
  288. package/dist/installer/targets/shared.d.ts +76 -0
  289. package/dist/installer/targets/shared.d.ts.map +1 -0
  290. package/dist/installer/targets/shared.js +260 -0
  291. package/dist/installer/targets/shared.js.map +1 -0
  292. package/dist/installer/targets/types.d.ts +95 -0
  293. package/dist/installer/targets/types.d.ts.map +1 -0
  294. package/dist/installer/targets/types.js +12 -0
  295. package/dist/installer/targets/types.js.map +1 -0
  296. package/dist/isolation/worktree.d.ts +65 -0
  297. package/dist/isolation/worktree.d.ts.map +1 -0
  298. package/dist/isolation/worktree.js +231 -0
  299. package/dist/isolation/worktree.js.map +1 -0
  300. package/dist/mcp/daemon-paths.d.ts +46 -0
  301. package/dist/mcp/daemon-paths.d.ts.map +1 -0
  302. package/dist/mcp/daemon-paths.js +125 -0
  303. package/dist/mcp/daemon-paths.js.map +1 -0
  304. package/dist/mcp/daemon.d.ts +161 -0
  305. package/dist/mcp/daemon.d.ts.map +1 -0
  306. package/dist/mcp/daemon.js +403 -0
  307. package/dist/mcp/daemon.js.map +1 -0
  308. package/dist/mcp/designer-tools.d.ts +33 -0
  309. package/dist/mcp/designer-tools.d.ts.map +1 -0
  310. package/dist/mcp/designer-tools.js +313 -0
  311. package/dist/mcp/designer-tools.js.map +1 -0
  312. package/dist/mcp/engine.d.ts +105 -0
  313. package/dist/mcp/engine.d.ts.map +1 -0
  314. package/dist/mcp/engine.js +270 -0
  315. package/dist/mcp/engine.js.map +1 -0
  316. package/dist/mcp/fitness-tool.d.ts +12 -0
  317. package/dist/mcp/fitness-tool.d.ts.map +1 -0
  318. package/dist/mcp/fitness-tool.js +46 -0
  319. package/dist/mcp/fitness-tool.js.map +1 -0
  320. package/dist/mcp/index.d.ts +112 -0
  321. package/dist/mcp/index.d.ts.map +1 -0
  322. package/dist/mcp/index.js +477 -0
  323. package/dist/mcp/index.js.map +1 -0
  324. package/dist/mcp/maintainability-tool.d.ts +13 -0
  325. package/dist/mcp/maintainability-tool.d.ts.map +1 -0
  326. package/dist/mcp/maintainability-tool.js +64 -0
  327. package/dist/mcp/maintainability-tool.js.map +1 -0
  328. package/dist/mcp/proxy.d.ts +81 -0
  329. package/dist/mcp/proxy.d.ts.map +1 -0
  330. package/dist/mcp/proxy.js +510 -0
  331. package/dist/mcp/proxy.js.map +1 -0
  332. package/dist/mcp/server-instructions.d.ts +18 -0
  333. package/dist/mcp/server-instructions.d.ts.map +1 -0
  334. package/dist/mcp/server-instructions.js +79 -0
  335. package/dist/mcp/server-instructions.js.map +1 -0
  336. package/dist/mcp/session.d.ts +77 -0
  337. package/dist/mcp/session.d.ts.map +1 -0
  338. package/dist/mcp/session.js +294 -0
  339. package/dist/mcp/session.js.map +1 -0
  340. package/dist/mcp/spec-tools.d.ts +39 -0
  341. package/dist/mcp/spec-tools.d.ts.map +1 -0
  342. package/dist/mcp/spec-tools.js +534 -0
  343. package/dist/mcp/spec-tools.js.map +1 -0
  344. package/dist/mcp/tools.d.ts +417 -0
  345. package/dist/mcp/tools.d.ts.map +1 -0
  346. package/dist/mcp/tools.js +3179 -0
  347. package/dist/mcp/tools.js.map +1 -0
  348. package/dist/mcp/transport.d.ts +188 -0
  349. package/dist/mcp/transport.d.ts.map +1 -0
  350. package/dist/mcp/transport.js +343 -0
  351. package/dist/mcp/transport.js.map +1 -0
  352. package/dist/mcp/version.d.ts +19 -0
  353. package/dist/mcp/version.d.ts.map +1 -0
  354. package/dist/mcp/version.js +71 -0
  355. package/dist/mcp/version.js.map +1 -0
  356. package/dist/reflect/apply.d.ts +31 -0
  357. package/dist/reflect/apply.d.ts.map +1 -0
  358. package/dist/reflect/apply.js +286 -0
  359. package/dist/reflect/apply.js.map +1 -0
  360. package/dist/reflect/hash.d.ts +20 -0
  361. package/dist/reflect/hash.d.ts.map +1 -0
  362. package/dist/reflect/hash.js +36 -0
  363. package/dist/reflect/hash.js.map +1 -0
  364. package/dist/reflect/index.d.ts +16 -0
  365. package/dist/reflect/index.d.ts.map +1 -0
  366. package/dist/reflect/index.js +43 -0
  367. package/dist/reflect/index.js.map +1 -0
  368. package/dist/reflect/miner.d.ts +21 -0
  369. package/dist/reflect/miner.d.ts.map +1 -0
  370. package/dist/reflect/miner.js +463 -0
  371. package/dist/reflect/miner.js.map +1 -0
  372. package/dist/reflect/store.d.ts +31 -0
  373. package/dist/reflect/store.d.ts.map +1 -0
  374. package/dist/reflect/store.js +101 -0
  375. package/dist/reflect/store.js.map +1 -0
  376. package/dist/reflect/sweep.d.ts +26 -0
  377. package/dist/reflect/sweep.d.ts.map +1 -0
  378. package/dist/reflect/sweep.js +42 -0
  379. package/dist/reflect/sweep.js.map +1 -0
  380. package/dist/reflect/targets.d.ts +52 -0
  381. package/dist/reflect/targets.d.ts.map +1 -0
  382. package/dist/reflect/targets.js +192 -0
  383. package/dist/reflect/targets.js.map +1 -0
  384. package/dist/reflect/types.d.ts +96 -0
  385. package/dist/reflect/types.d.ts.map +1 -0
  386. package/dist/reflect/types.js +13 -0
  387. package/dist/reflect/types.js.map +1 -0
  388. package/dist/resolution/brief-link-resolver.d.ts +114 -0
  389. package/dist/resolution/brief-link-resolver.d.ts.map +1 -0
  390. package/dist/resolution/brief-link-resolver.js +261 -0
  391. package/dist/resolution/brief-link-resolver.js.map +1 -0
  392. package/dist/resolution/callback-synthesizer.d.ts +10 -0
  393. package/dist/resolution/callback-synthesizer.d.ts.map +1 -0
  394. package/dist/resolution/callback-synthesizer.js +1300 -0
  395. package/dist/resolution/callback-synthesizer.js.map +1 -0
  396. package/dist/resolution/domain-gap-seed.d.ts +60 -0
  397. package/dist/resolution/domain-gap-seed.d.ts.map +1 -0
  398. package/dist/resolution/domain-gap-seed.js +87 -0
  399. package/dist/resolution/domain-gap-seed.js.map +1 -0
  400. package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
  401. package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
  402. package/dist/resolution/frameworks/cargo-workspace.js +225 -0
  403. package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
  404. package/dist/resolution/frameworks/csharp.d.ts +8 -0
  405. package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
  406. package/dist/resolution/frameworks/csharp.js +241 -0
  407. package/dist/resolution/frameworks/csharp.js.map +1 -0
  408. package/dist/resolution/frameworks/drupal.d.ts +51 -0
  409. package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
  410. package/dist/resolution/frameworks/drupal.js +367 -0
  411. package/dist/resolution/frameworks/drupal.js.map +1 -0
  412. package/dist/resolution/frameworks/expo-modules.d.ts +3 -0
  413. package/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
  414. package/dist/resolution/frameworks/expo-modules.js +143 -0
  415. package/dist/resolution/frameworks/expo-modules.js.map +1 -0
  416. package/dist/resolution/frameworks/express.d.ts +8 -0
  417. package/dist/resolution/frameworks/express.d.ts.map +1 -0
  418. package/dist/resolution/frameworks/express.js +308 -0
  419. package/dist/resolution/frameworks/express.js.map +1 -0
  420. package/dist/resolution/frameworks/fabric.d.ts +3 -0
  421. package/dist/resolution/frameworks/fabric.d.ts.map +1 -0
  422. package/dist/resolution/frameworks/fabric.js +354 -0
  423. package/dist/resolution/frameworks/fabric.js.map +1 -0
  424. package/dist/resolution/frameworks/go.d.ts +8 -0
  425. package/dist/resolution/frameworks/go.d.ts.map +1 -0
  426. package/dist/resolution/frameworks/go.js +161 -0
  427. package/dist/resolution/frameworks/go.js.map +1 -0
  428. package/dist/resolution/frameworks/index.d.ts +48 -0
  429. package/dist/resolution/frameworks/index.d.ts.map +1 -0
  430. package/dist/resolution/frameworks/index.js +161 -0
  431. package/dist/resolution/frameworks/index.js.map +1 -0
  432. package/dist/resolution/frameworks/java.d.ts +8 -0
  433. package/dist/resolution/frameworks/java.d.ts.map +1 -0
  434. package/dist/resolution/frameworks/java.js +504 -0
  435. package/dist/resolution/frameworks/java.js.map +1 -0
  436. package/dist/resolution/frameworks/laravel.d.ts +13 -0
  437. package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
  438. package/dist/resolution/frameworks/laravel.js +257 -0
  439. package/dist/resolution/frameworks/laravel.js.map +1 -0
  440. package/dist/resolution/frameworks/nestjs.d.ts +26 -0
  441. package/dist/resolution/frameworks/nestjs.d.ts.map +1 -0
  442. package/dist/resolution/frameworks/nestjs.js +698 -0
  443. package/dist/resolution/frameworks/nestjs.js.map +1 -0
  444. package/dist/resolution/frameworks/play.d.ts +19 -0
  445. package/dist/resolution/frameworks/play.d.ts.map +1 -0
  446. package/dist/resolution/frameworks/play.js +111 -0
  447. package/dist/resolution/frameworks/play.js.map +1 -0
  448. package/dist/resolution/frameworks/python.d.ts +10 -0
  449. package/dist/resolution/frameworks/python.d.ts.map +1 -0
  450. package/dist/resolution/frameworks/python.js +396 -0
  451. package/dist/resolution/frameworks/python.js.map +1 -0
  452. package/dist/resolution/frameworks/react-native.d.ts +3 -0
  453. package/dist/resolution/frameworks/react-native.d.ts.map +1 -0
  454. package/dist/resolution/frameworks/react-native.js +360 -0
  455. package/dist/resolution/frameworks/react-native.js.map +1 -0
  456. package/dist/resolution/frameworks/react.d.ts +8 -0
  457. package/dist/resolution/frameworks/react.d.ts.map +1 -0
  458. package/dist/resolution/frameworks/react.js +365 -0
  459. package/dist/resolution/frameworks/react.js.map +1 -0
  460. package/dist/resolution/frameworks/ruby.d.ts +8 -0
  461. package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
  462. package/dist/resolution/frameworks/ruby.js +302 -0
  463. package/dist/resolution/frameworks/ruby.js.map +1 -0
  464. package/dist/resolution/frameworks/rust.d.ts +8 -0
  465. package/dist/resolution/frameworks/rust.d.ts.map +1 -0
  466. package/dist/resolution/frameworks/rust.js +304 -0
  467. package/dist/resolution/frameworks/rust.js.map +1 -0
  468. package/dist/resolution/frameworks/svelte.d.ts +9 -0
  469. package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
  470. package/dist/resolution/frameworks/svelte.js +249 -0
  471. package/dist/resolution/frameworks/svelte.js.map +1 -0
  472. package/dist/resolution/frameworks/swift-objc.d.ts +37 -0
  473. package/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
  474. package/dist/resolution/frameworks/swift-objc.js +252 -0
  475. package/dist/resolution/frameworks/swift-objc.js.map +1 -0
  476. package/dist/resolution/frameworks/swift.d.ts +10 -0
  477. package/dist/resolution/frameworks/swift.d.ts.map +1 -0
  478. package/dist/resolution/frameworks/swift.js +400 -0
  479. package/dist/resolution/frameworks/swift.js.map +1 -0
  480. package/dist/resolution/frameworks/vue.d.ts +9 -0
  481. package/dist/resolution/frameworks/vue.d.ts.map +1 -0
  482. package/dist/resolution/frameworks/vue.js +306 -0
  483. package/dist/resolution/frameworks/vue.js.map +1 -0
  484. package/dist/resolution/go-module.d.ts +26 -0
  485. package/dist/resolution/go-module.d.ts.map +1 -0
  486. package/dist/resolution/go-module.js +78 -0
  487. package/dist/resolution/go-module.js.map +1 -0
  488. package/dist/resolution/import-resolver.d.ts +68 -0
  489. package/dist/resolution/import-resolver.d.ts.map +1 -0
  490. package/dist/resolution/import-resolver.js +1275 -0
  491. package/dist/resolution/import-resolver.js.map +1 -0
  492. package/dist/resolution/index.d.ts +117 -0
  493. package/dist/resolution/index.d.ts.map +1 -0
  494. package/dist/resolution/index.js +895 -0
  495. package/dist/resolution/index.js.map +1 -0
  496. package/dist/resolution/lru-cache.d.ts +24 -0
  497. package/dist/resolution/lru-cache.d.ts.map +1 -0
  498. package/dist/resolution/lru-cache.js +62 -0
  499. package/dist/resolution/lru-cache.js.map +1 -0
  500. package/dist/resolution/name-matcher.d.ts +32 -0
  501. package/dist/resolution/name-matcher.d.ts.map +1 -0
  502. package/dist/resolution/name-matcher.js +596 -0
  503. package/dist/resolution/name-matcher.js.map +1 -0
  504. package/dist/resolution/path-aliases.d.ts +68 -0
  505. package/dist/resolution/path-aliases.d.ts.map +1 -0
  506. package/dist/resolution/path-aliases.js +238 -0
  507. package/dist/resolution/path-aliases.js.map +1 -0
  508. package/dist/resolution/spec-link-resolver.d.ts +148 -0
  509. package/dist/resolution/spec-link-resolver.d.ts.map +1 -0
  510. package/dist/resolution/spec-link-resolver.js +337 -0
  511. package/dist/resolution/spec-link-resolver.js.map +1 -0
  512. package/dist/resolution/strip-comments.d.ts +27 -0
  513. package/dist/resolution/strip-comments.d.ts.map +1 -0
  514. package/dist/resolution/strip-comments.js +441 -0
  515. package/dist/resolution/strip-comments.js.map +1 -0
  516. package/dist/resolution/swift-objc-bridge.d.ts +134 -0
  517. package/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
  518. package/dist/resolution/swift-objc-bridge.js +256 -0
  519. package/dist/resolution/swift-objc-bridge.js.map +1 -0
  520. package/dist/resolution/types.d.ts +216 -0
  521. package/dist/resolution/types.d.ts.map +1 -0
  522. package/dist/resolution/types.js +8 -0
  523. package/dist/resolution/types.js.map +1 -0
  524. package/dist/resolution/workspace-packages.d.ts +48 -0
  525. package/dist/resolution/workspace-packages.d.ts.map +1 -0
  526. package/dist/resolution/workspace-packages.js +208 -0
  527. package/dist/resolution/workspace-packages.js.map +1 -0
  528. package/dist/search/query-parser.d.ts +57 -0
  529. package/dist/search/query-parser.d.ts.map +1 -0
  530. package/dist/search/query-parser.js +177 -0
  531. package/dist/search/query-parser.js.map +1 -0
  532. package/dist/search/query-utils.d.ts +71 -0
  533. package/dist/search/query-utils.d.ts.map +1 -0
  534. package/dist/search/query-utils.js +380 -0
  535. package/dist/search/query-utils.js.map +1 -0
  536. package/dist/server/cli.js +152 -0
  537. package/dist/server/index.js +12 -0
  538. package/dist/server/ingest/impact-backfill.js +69 -0
  539. package/dist/server/ingest/impact-query.js +343 -0
  540. package/dist/server/ingest/index.js +19 -0
  541. package/dist/server/ingest/ingestor.js +541 -0
  542. package/dist/server/ingest/parser.js +104 -0
  543. package/dist/server/ingest/pricing.js +78 -0
  544. package/dist/server/ingest/specship-classify.js +153 -0
  545. package/dist/server/ingest/types.js +9 -0
  546. package/dist/server/ingest/watcher.js +77 -0
  547. package/dist/server/package.json +3 -0
  548. package/dist/server/project-registry.js +101 -0
  549. package/dist/server/routes/claude.js +907 -0
  550. package/dist/server/routes/domain.js +0 -0
  551. package/dist/server/routes/events.js +134 -0
  552. package/dist/server/routes/graph.js +248 -0
  553. package/dist/server/routes/maintainability.js +18 -0
  554. package/dist/server/routes/memory.js +272 -0
  555. package/dist/server/routes/projects.js +197 -0
  556. package/dist/server/routes/reflect.js +93 -0
  557. package/dist/server/routes/spec.js +373 -0
  558. package/dist/server/routes/status.js +112 -0
  559. package/dist/server/routes/workflow.js +253 -0
  560. package/dist/server/server.js +238 -0
  561. package/dist/server/static-handler.js +87 -0
  562. package/dist/statusline/active-run.d.ts +16 -0
  563. package/dist/statusline/active-run.d.ts.map +1 -0
  564. package/dist/statusline/active-run.js +73 -0
  565. package/dist/statusline/active-run.js.map +1 -0
  566. package/dist/statusline/cache.d.ts +21 -0
  567. package/dist/statusline/cache.d.ts.map +1 -0
  568. package/dist/statusline/cache.js +34 -0
  569. package/dist/statusline/cache.js.map +1 -0
  570. package/dist/statusline/index.d.ts +24 -0
  571. package/dist/statusline/index.d.ts.map +1 -0
  572. package/dist/statusline/index.js +128 -0
  573. package/dist/statusline/index.js.map +1 -0
  574. package/dist/statusline/paths.d.ts +27 -0
  575. package/dist/statusline/paths.d.ts.map +1 -0
  576. package/dist/statusline/paths.js +101 -0
  577. package/dist/statusline/paths.js.map +1 -0
  578. package/dist/statusline/render.d.ts +25 -0
  579. package/dist/statusline/render.d.ts.map +1 -0
  580. package/dist/statusline/render.js +72 -0
  581. package/dist/statusline/render.js.map +1 -0
  582. package/dist/statusline/session-marker.d.ts +30 -0
  583. package/dist/statusline/session-marker.d.ts.map +1 -0
  584. package/dist/statusline/session-marker.js +71 -0
  585. package/dist/statusline/session-marker.js.map +1 -0
  586. package/dist/statusline/types.d.ts +67 -0
  587. package/dist/statusline/types.d.ts.map +1 -0
  588. package/dist/statusline/types.js +16 -0
  589. package/dist/statusline/types.js.map +1 -0
  590. package/dist/sync/git-hooks.d.ts +45 -0
  591. package/dist/sync/git-hooks.d.ts.map +1 -0
  592. package/dist/sync/git-hooks.js +225 -0
  593. package/dist/sync/git-hooks.js.map +1 -0
  594. package/dist/sync/index.d.ts +19 -0
  595. package/dist/sync/index.d.ts.map +1 -0
  596. package/dist/sync/index.js +35 -0
  597. package/dist/sync/index.js.map +1 -0
  598. package/dist/sync/watch-policy.d.ts +48 -0
  599. package/dist/sync/watch-policy.d.ts.map +1 -0
  600. package/dist/sync/watch-policy.js +124 -0
  601. package/dist/sync/watch-policy.js.map +1 -0
  602. package/dist/sync/watcher.d.ts +283 -0
  603. package/dist/sync/watcher.d.ts.map +1 -0
  604. package/dist/sync/watcher.js +606 -0
  605. package/dist/sync/watcher.js.map +1 -0
  606. package/dist/sync/worktree.d.ts +54 -0
  607. package/dist/sync/worktree.d.ts.map +1 -0
  608. package/dist/sync/worktree.js +137 -0
  609. package/dist/sync/worktree.js.map +1 -0
  610. package/dist/types.d.ts +625 -0
  611. package/dist/types.d.ts.map +1 -0
  612. package/dist/types.js +118 -0
  613. package/dist/types.js.map +1 -0
  614. package/dist/ui/glyphs.d.ts +42 -0
  615. package/dist/ui/glyphs.d.ts.map +1 -0
  616. package/dist/ui/glyphs.js +78 -0
  617. package/dist/ui/glyphs.js.map +1 -0
  618. package/dist/ui/shimmer-progress.d.ts +11 -0
  619. package/dist/ui/shimmer-progress.d.ts.map +1 -0
  620. package/dist/ui/shimmer-progress.js +90 -0
  621. package/dist/ui/shimmer-progress.js.map +1 -0
  622. package/dist/ui/shimmer-worker.d.ts +2 -0
  623. package/dist/ui/shimmer-worker.d.ts.map +1 -0
  624. package/dist/ui/shimmer-worker.js +118 -0
  625. package/dist/ui/shimmer-worker.js.map +1 -0
  626. package/dist/ui/types.d.ts +17 -0
  627. package/dist/ui/types.d.ts.map +1 -0
  628. package/dist/ui/types.js +3 -0
  629. package/dist/ui/types.js.map +1 -0
  630. package/dist/utils.d.ts +205 -0
  631. package/dist/utils.d.ts.map +1 -0
  632. package/dist/utils.js +549 -0
  633. package/dist/utils.js.map +1 -0
  634. package/dist/web/chunk-2AJCHB7P.js +1 -0
  635. package/dist/web/chunk-2CPLUFCH.js +2 -0
  636. package/dist/web/chunk-2I7L37NS.js +1 -0
  637. package/dist/web/chunk-2NAWAJB5.js +1 -0
  638. package/dist/web/chunk-2OJBIPE4.js +1 -0
  639. package/dist/web/chunk-372AYXK6.js +17 -0
  640. package/dist/web/chunk-3E2WB6D5.js +1 -0
  641. package/dist/web/chunk-3EBFYSCH.js +2 -0
  642. package/dist/web/chunk-3QCQ4BXS.js +1 -0
  643. package/dist/web/chunk-42XVAQ6I.js +1 -0
  644. package/dist/web/chunk-4IMMPEYM.js +1 -0
  645. package/dist/web/chunk-4JYHAP7B.js +1 -0
  646. package/dist/web/chunk-4TJQJPCZ.js +1 -0
  647. package/dist/web/chunk-4WZIHTPC.js +1 -0
  648. package/dist/web/chunk-4YVSYOSD.js +1 -0
  649. package/dist/web/chunk-52PO6IMB.js +2 -0
  650. package/dist/web/chunk-54D6RFSW.js +1 -0
  651. package/dist/web/chunk-5BQIOYKW.js +1 -0
  652. package/dist/web/chunk-5HGWHUJA.js +1 -0
  653. package/dist/web/chunk-5XRUOPZE.js +1 -0
  654. package/dist/web/chunk-5Y244R4G.js +1 -0
  655. package/dist/web/chunk-6O7Z3P2M.js +1 -0
  656. package/dist/web/chunk-6QXULGLG.js +1 -0
  657. package/dist/web/chunk-6RRDPT5Z.js +1 -0
  658. package/dist/web/chunk-6VKB2ZWM.js +1 -0
  659. package/dist/web/chunk-7DMFVTU4.js +1 -0
  660. package/dist/web/chunk-7P5CVBJZ.js +1 -0
  661. package/dist/web/chunk-7SMPKVEP.js +1 -0
  662. package/dist/web/chunk-AHLX543M.js +1 -0
  663. package/dist/web/chunk-AMGJBO7D.js +3 -0
  664. package/dist/web/chunk-AZJVTPLU.js +1 -0
  665. package/dist/web/chunk-B3CWIVBW.js +1 -0
  666. package/dist/web/chunk-BLBRMCN2.js +1 -0
  667. package/dist/web/chunk-BMIAXD2V.js +2 -0
  668. package/dist/web/chunk-BPCJLNBS.js +47 -0
  669. package/dist/web/chunk-BRHEUDLY.js +6 -0
  670. package/dist/web/chunk-BUXWEHIY.js +1 -0
  671. package/dist/web/chunk-CD5IZM7Y.js +1 -0
  672. package/dist/web/chunk-DLQPZWSI.css +1 -0
  673. package/dist/web/chunk-DSGNOCKQ.js +1 -0
  674. package/dist/web/chunk-DT5LJYFX.js +1 -0
  675. package/dist/web/chunk-DYRFLPJA.js +1 -0
  676. package/dist/web/chunk-E3J3CXR5.js +1 -0
  677. package/dist/web/chunk-E73OX2P7.js +1 -0
  678. package/dist/web/chunk-EAXRKDLV.js +1 -0
  679. package/dist/web/chunk-EBKKDHYI.js +1 -0
  680. package/dist/web/chunk-EE7V7Q5P.js +1 -0
  681. package/dist/web/chunk-EKY2FUHU.js +1 -0
  682. package/dist/web/chunk-EP6XOPXH.js +1 -0
  683. package/dist/web/chunk-ESGDLJOJ.js +1 -0
  684. package/dist/web/chunk-ETJG7NCY.js +1 -0
  685. package/dist/web/chunk-EUUEFEDI.js +1 -0
  686. package/dist/web/chunk-EX4ZHR4F.js +1 -0
  687. package/dist/web/chunk-F5UNCSXP.js +1 -0
  688. package/dist/web/chunk-FFGJXUHI.js +1 -0
  689. package/dist/web/chunk-FGNZDHTL.js +11 -0
  690. package/dist/web/chunk-FIJW2UNJ.js +1 -0
  691. package/dist/web/chunk-FMV5PXRC.js +5 -0
  692. package/dist/web/chunk-G7VZT5KB.js +3 -0
  693. package/dist/web/chunk-GCOM4JPR.js +2 -0
  694. package/dist/web/chunk-GEIIDO6C.js +1 -0
  695. package/dist/web/chunk-GRZYXPSO.js +7 -0
  696. package/dist/web/chunk-GWBABPZ5.js +1 -0
  697. package/dist/web/chunk-GYGPS3AN.js +1 -0
  698. package/dist/web/chunk-H4GLRD3Q.js +1 -0
  699. package/dist/web/chunk-H5TWEFYX.js +1 -0
  700. package/dist/web/chunk-H7AF7YS4.js +1 -0
  701. package/dist/web/chunk-HCB2N2KH.js +1 -0
  702. package/dist/web/chunk-HDZDQILN.js +1 -0
  703. package/dist/web/chunk-HMK6UO6N.js +1 -0
  704. package/dist/web/chunk-HVVXPI4D.js +1 -0
  705. package/dist/web/chunk-IHEE5NYJ.js +1 -0
  706. package/dist/web/chunk-IPB746BT.js +1 -0
  707. package/dist/web/chunk-ISNEBICW.js +1 -0
  708. package/dist/web/chunk-J2GZVLHH.js +1 -0
  709. package/dist/web/chunk-JTFXTIPE.js +903 -0
  710. package/dist/web/chunk-KHU5M2AL.js +1 -0
  711. package/dist/web/chunk-KW3DHCFV.js +1 -0
  712. package/dist/web/chunk-LB6JPLX2.js +1 -0
  713. package/dist/web/chunk-LBXLFPVN.js +1 -0
  714. package/dist/web/chunk-LGNSHRCE.js +1 -0
  715. package/dist/web/chunk-LNSVDHCI.js +1 -0
  716. package/dist/web/chunk-LVGIY3SO.js +1 -0
  717. package/dist/web/chunk-LXLHIHEN.js +1 -0
  718. package/dist/web/chunk-MFHO2F2U.js +4 -0
  719. package/dist/web/chunk-N5OSSQFZ.js +1 -0
  720. package/dist/web/chunk-N6SS4G6S.js +1 -0
  721. package/dist/web/chunk-NAJYJNHS.js +1 -0
  722. package/dist/web/chunk-NHD66NOI.js +1 -0
  723. package/dist/web/chunk-NNLJ55MY.js +1 -0
  724. package/dist/web/chunk-NTBJG6SJ.js +1 -0
  725. package/dist/web/chunk-NUDB3Q2Y.js +3 -0
  726. package/dist/web/chunk-OM7JVWQQ.js +1 -0
  727. package/dist/web/chunk-OXEF5E3E.js +1 -0
  728. package/dist/web/chunk-PGGJPDJG.js +1 -0
  729. package/dist/web/chunk-PUYSJNJR.js +1 -0
  730. package/dist/web/chunk-Q2RVFS45.js +1 -0
  731. package/dist/web/chunk-Q7L6LLAK.js +1 -0
  732. package/dist/web/chunk-QCMKJIWY.js +1 -0
  733. package/dist/web/chunk-QEQRY4QQ.js +1 -0
  734. package/dist/web/chunk-QH6CF3M3.js +1 -0
  735. package/dist/web/chunk-QQ5LD7PI.js +1 -0
  736. package/dist/web/chunk-QR6L3KAC.js +1 -0
  737. package/dist/web/chunk-QXJS6F3U.js +1 -0
  738. package/dist/web/chunk-R2DLK4HO.js +1 -0
  739. package/dist/web/chunk-RD6TVPOT.js +1 -0
  740. package/dist/web/chunk-RKY4EJYJ.js +1 -0
  741. package/dist/web/chunk-RONYWVY7.js +1 -0
  742. package/dist/web/chunk-RSZZWGGC.js +1 -0
  743. package/dist/web/chunk-RXKXYF2C.js +1 -0
  744. package/dist/web/chunk-SCNDZRN2.js +1 -0
  745. package/dist/web/chunk-SH6UVHQC.js +1 -0
  746. package/dist/web/chunk-SWKJRNYY.js +1 -0
  747. package/dist/web/chunk-T7AZ65JP.js +1 -0
  748. package/dist/web/chunk-TCZDVOHD.js +1 -0
  749. package/dist/web/chunk-TF5TF6IP.js +1 -0
  750. package/dist/web/chunk-TPTITA3V.js +1 -0
  751. package/dist/web/chunk-TR335633.js +1 -0
  752. package/dist/web/chunk-UR5KDXPX.js +1 -0
  753. package/dist/web/chunk-UR6O2GEH.js +1 -0
  754. package/dist/web/chunk-UTNMGWTP.js +1 -0
  755. package/dist/web/chunk-VECWMHJP.js +1 -0
  756. package/dist/web/chunk-VUACT35R.js +3 -0
  757. package/dist/web/chunk-VZI7H4SZ.js +1 -0
  758. package/dist/web/chunk-W22AVG3N.js +1 -0
  759. package/dist/web/chunk-W6NGHRHX.js +1 -0
  760. package/dist/web/chunk-WB6YHOD4.js +1 -0
  761. package/dist/web/chunk-WBT64AWV.js +1 -0
  762. package/dist/web/chunk-WFXJIXZE.js +4 -0
  763. package/dist/web/chunk-WTGYRH3Z.js +298 -0
  764. package/dist/web/chunk-WXTCVDTP.js +1 -0
  765. package/dist/web/chunk-XCDHWLVH.js +1 -0
  766. package/dist/web/chunk-Y3H6FFUZ.js +1 -0
  767. package/dist/web/chunk-Y4F5ULGJ.js +1 -0
  768. package/dist/web/chunk-YEGKAAEE.js +1 -0
  769. package/dist/web/chunk-YM2KU57F.js +1 -0
  770. package/dist/web/chunk-YRERBP6T.js +1 -0
  771. package/dist/web/chunk-ZLV4VCDG.js +3 -0
  772. package/dist/web/chunk-ZQUJMA5K.js +4 -0
  773. package/dist/web/chunk-ZTVI5KFF.js +1 -0
  774. package/dist/web/favicon-16.png +0 -0
  775. package/dist/web/favicon-180.png +0 -0
  776. package/dist/web/favicon-32.png +0 -0
  777. package/dist/web/favicon-512.png +0 -0
  778. package/dist/web/favicon-small.svg +15 -0
  779. package/dist/web/favicon.ico +0 -0
  780. package/dist/web/favicon.svg +20 -0
  781. package/dist/web/icon-192.png +0 -0
  782. package/dist/web/icon-512.png +0 -0
  783. package/dist/web/index.html +146 -0
  784. package/dist/web/main-ESADRXN2.css +1 -0
  785. package/dist/web/main-SQFUMVQA.js +1 -0
  786. package/dist/web/manifest.webmanifest +15 -0
  787. package/dist/web/media/codicon-LN6W7LCM.ttf +0 -0
  788. package/dist/web/styles-KSOPUVDA.css +1 -0
  789. package/dist/web/sw.js +69 -0
  790. package/dist/workflows/condition-evaluator.d.ts +75 -0
  791. package/dist/workflows/condition-evaluator.d.ts.map +1 -0
  792. package/dist/workflows/condition-evaluator.js +282 -0
  793. package/dist/workflows/condition-evaluator.js.map +1 -0
  794. package/dist/workflows/defaults/claude-design-implement.yaml +336 -0
  795. package/dist/workflows/defaults/index.d.ts +26 -0
  796. package/dist/workflows/defaults/index.d.ts.map +1 -0
  797. package/dist/workflows/defaults/index.js +94 -0
  798. package/dist/workflows/defaults/index.js.map +1 -0
  799. package/dist/workflows/defaults/spec-author.yaml +214 -0
  800. package/dist/workflows/defaults/spec-fix.yaml +110 -0
  801. package/dist/workflows/defaults/spec-implement.yaml +150 -0
  802. package/dist/workflows/defaults/spec-relink.yaml +81 -0
  803. package/dist/workflows/defaults/spec-verify.yaml +51 -0
  804. package/dist/workflows/discovery.d.ts +46 -0
  805. package/dist/workflows/discovery.d.ts.map +1 -0
  806. package/dist/workflows/discovery.js +193 -0
  807. package/dist/workflows/discovery.js.map +1 -0
  808. package/dist/workflows/executor.d.ts +98 -0
  809. package/dist/workflows/executor.d.ts.map +1 -0
  810. package/dist/workflows/executor.js +664 -0
  811. package/dist/workflows/executor.js.map +1 -0
  812. package/dist/workflows/runners/approval.d.ts +18 -0
  813. package/dist/workflows/runners/approval.d.ts.map +1 -0
  814. package/dist/workflows/runners/approval.js +34 -0
  815. package/dist/workflows/runners/approval.js.map +1 -0
  816. package/dist/workflows/runners/bash.d.ts +13 -0
  817. package/dist/workflows/runners/bash.d.ts.map +1 -0
  818. package/dist/workflows/runners/bash.js +143 -0
  819. package/dist/workflows/runners/bash.js.map +1 -0
  820. package/dist/workflows/runners/cancel.d.ts +10 -0
  821. package/dist/workflows/runners/cancel.d.ts.map +1 -0
  822. package/dist/workflows/runners/cancel.js +19 -0
  823. package/dist/workflows/runners/cancel.js.map +1 -0
  824. package/dist/workflows/runners/prompt.d.ts +51 -0
  825. package/dist/workflows/runners/prompt.d.ts.map +1 -0
  826. package/dist/workflows/runners/prompt.js +306 -0
  827. package/dist/workflows/runners/prompt.js.map +1 -0
  828. package/dist/workflows/runners/script.d.ts +17 -0
  829. package/dist/workflows/runners/script.d.ts.map +1 -0
  830. package/dist/workflows/runners/script.js +155 -0
  831. package/dist/workflows/runners/script.js.map +1 -0
  832. package/dist/workflows/runners/types.d.ts +57 -0
  833. package/dist/workflows/runners/types.d.ts.map +1 -0
  834. package/dist/workflows/runners/types.js +13 -0
  835. package/dist/workflows/runners/types.js.map +1 -0
  836. package/dist/workflows/schemas/workflow.d.ts +166 -0
  837. package/dist/workflows/schemas/workflow.d.ts.map +1 -0
  838. package/dist/workflows/schemas/workflow.js +437 -0
  839. package/dist/workflows/schemas/workflow.js.map +1 -0
  840. package/hooks/hooks.json +38 -0
  841. package/package.json +78 -0
  842. package/scripts/add-lang/bench.sh +60 -0
  843. package/scripts/add-lang/check-grammar.mjs +75 -0
  844. package/scripts/add-lang/dump-ast.mjs +103 -0
  845. package/scripts/add-lang/verify-extraction.mjs +70 -0
  846. package/scripts/agent-eval/arms-F.sh +21 -0
  847. package/scripts/agent-eval/arms-matrix.sh +37 -0
  848. package/scripts/agent-eval/audit.sh +68 -0
  849. package/scripts/agent-eval/bench-readme.sh +28 -0
  850. package/scripts/agent-eval/bench-why-repo.sh +22 -0
  851. package/scripts/agent-eval/block-read-hook.sh +19 -0
  852. package/scripts/agent-eval/hook-settings.json +15 -0
  853. package/scripts/agent-eval/itrun.sh +120 -0
  854. package/scripts/agent-eval/parse-arms.mjs +116 -0
  855. package/scripts/agent-eval/parse-bench-readme.mjs +84 -0
  856. package/scripts/agent-eval/parse-run.mjs +45 -0
  857. package/scripts/agent-eval/parse-session.mjs +93 -0
  858. package/scripts/agent-eval/probe-context.mjs +21 -0
  859. package/scripts/agent-eval/probe-explore.mjs +40 -0
  860. package/scripts/agent-eval/probe-node.mjs +20 -0
  861. package/scripts/agent-eval/probe-sweep.mjs +119 -0
  862. package/scripts/agent-eval/probe-trace.mjs +20 -0
  863. package/scripts/agent-eval/run-agent.sh +34 -0
  864. package/scripts/agent-eval/run-all.sh +67 -0
  865. package/scripts/agent-eval/run-arms.sh +56 -0
  866. package/scripts/agent-eval/seq-matrix.mjs +137 -0
  867. package/scripts/build-bundle.sh +118 -0
  868. package/scripts/build-server-bundle.mjs +80 -0
  869. package/scripts/build-web-bundle.mjs +66 -0
  870. package/scripts/extract-release-notes.mjs +130 -0
  871. package/scripts/local-install.sh +41 -0
  872. package/scripts/npm-sdk.js +75 -0
  873. package/scripts/npm-shim.js +246 -0
  874. package/scripts/offline-install.ps1 +148 -0
  875. package/scripts/offline-install.sh +149 -0
  876. package/scripts/pack-npm.sh +119 -0
  877. package/scripts/prepare-release.mjs +270 -0
  878. package/scripts/sync-shim-version.mjs +64 -0
  879. package/selectors.json +41 -0
@@ -0,0 +1,116 @@
1
+ ---
2
+ description: Author end-to-end tests for a requirement from its acceptance criteria — a Playwright UI test and/or a backend/batch API test per criterion — preview and confirm before writing, link each test to its .A<N> criterion, then run them and record pass/fail into the spec→test→verify chain.
3
+ argument-hint: <REQ-ID>
4
+ allowed-tools: Read, Edit, Write, Bash, mcp__specship__specship_spec, mcp__specship__specship_explore, mcp__specship__specship_search, mcp__specship__specship_node, mcp__specship__specship_link_assert, mcp__specship__specship_link_verify
5
+ ---
6
+
7
+ # SpecShip Behaviour: `$ARGUMENTS`
8
+
9
+ Turn a requirement's **acceptance criteria** into runnable **end-to-end tests** —
10
+ a Playwright UI journey and/or a backend/batch API test for each criterion — and
11
+ feed the results into the spec→test→verify chain that `specship check` gates on.
12
+
13
+ You author and run the tests; SpecShip supplies the flow map and records the
14
+ verification state; **the human gates the write**. This is distinct from
15
+ `/ss-implement` (which writes the *feature* code) — `/ss-behaviour` writes the
16
+ *tests* that prove the requirement behaves.
17
+
18
+ **Governing principle — propose, never auto-apply.** Test files reach disk ONLY
19
+ after explicit human confirmation (step 4). Running them afterwards is
20
+ non-destructive and proceeds automatically. If the human does not confirm, you
21
+ write **nothing**.
22
+
23
+ If `$ARGUMENTS` is empty, ask which requirement to test (or use `specship_spec`
24
+ with a `query` to find it).
25
+
26
+ ## 1. Load the requirement + its criteria
27
+
28
+ Call `mcp__specship__specship_spec` with the `spec_id`. Read the requirement and
29
+ its **acceptance criteria** (the `.A<N>` children) — each criterion is one
30
+ behaviour to test (REQ-BEHAVIOUR-002.A1).
31
+
32
+ ## 2. Get the behaviour surface
33
+
34
+ Call `mcp__specship__specship_spec` with the `spec_id` **and
35
+ `behaviour_surface: true`**. It returns the requirement's linked code plus the
36
+ surrounding routes / components / handlers, grouped into:
37
+
38
+ - a **UI tier** — Playwright targets, and
39
+ - a **backend / batch tier** — API / job test targets.
40
+
41
+ An empty UI tier means the project (or this requirement) has no UI surface — you
42
+ will author backend/batch tests only (REQ-BEHAVIOUR-002.A4). Use
43
+ `specship_explore` / `specship_node` on any surface element whose flow you need
44
+ to understand before writing the test.
45
+
46
+ ## 3. Detect the project's test conventions
47
+
48
+ Before writing anything, ground in how this repo already tests, and **mirror it**
49
+ (REQ-BEHAVIOUR-002.A3) — never impose a stack:
50
+
51
+ - UI: look for a Playwright config / an `e2e/` dir and its file naming.
52
+ - Backend: find the runner in use (vitest / jest / pytest / go test / …) and the
53
+ test file layout.
54
+
55
+ Use `specship_explore` on existing test files (e.g. `*.spec.ts`, `*.test.*`,
56
+ `e2e/`) and read a couple to match their style, fixtures, and import paths.
57
+
58
+ ## 4. Plan, preview, confirm — then write + link
59
+
60
+ For **each acceptance criterion**, plan the end-to-end test(s)
61
+ (REQ-BEHAVIOUR-002.A1 / A2):
62
+
63
+ - If the criterion touches a **UI flow** → a Playwright test exercising it.
64
+ - If it touches a **backend/batch path** → an API/batch test.
65
+ - If it touches **both** → one of each.
66
+
67
+ Each test's title and file must name the `.A<N>` criterion it covers, so a
68
+ failure is traceable to a criterion.
69
+
70
+ **Preview the exact test files** (path + full contents) you will create and ask
71
+ for explicit confirmation, offering `confirm` / `edit` / `cancel`
72
+ (REQ-BEHAVIOUR-003.A1). **Write nothing until confirmed.**
73
+
74
+ On confirmation:
75
+ 1. Write the test files (mirroring the detected conventions). A re-run of
76
+ `/ss-behaviour` on the same requirement **refreshes** existing tests rather
77
+ than duplicating them (REQ-BEHAVIOUR-003.A3).
78
+ 2. For each test, call `mcp__specship__specship_link_assert` with
79
+ `kind: "tests"`, targeting the **`.A<N>` criterion** it covers
80
+ (REQ-BEHAVIOUR-003.A2). Keep the returned `link_id` for step 5.
81
+ 3. Run `specship sync` and confirm the criteria + links index cleanly
82
+ (REQ-BEHAVIOUR-003.A4).
83
+
84
+ ## 5. Run the tests, record the outcome
85
+
86
+ Run the relevant suite(s) with the project's runner (via `Bash`), then record
87
+ each result through `mcp__specship__specship_link_verify` (REQ-BEHAVIOUR-004):
88
+
89
+ - a test that **runs and passes** → `result: "pass"` (link → `verified`),
90
+ - a test that **runs and fails** → `result: "fail"` with the failure in `reason`
91
+ (link → `broken`),
92
+ - a suite that **could not be executed** (missing dependency, no dev server,
93
+ wrong environment) → **report it as unrun and do NOT call link_verify** for
94
+ those tests — leaving the link state unchanged. A test that didn't run is never
95
+ recorded as `broken` (REQ-BEHAVIOUR-004.A2).
96
+
97
+ ## 6. Hand off
98
+
99
+ Summarize: which criteria now have `verified` / `broken` / unrun tests, and the
100
+ behaviour-gate status. The links now feed `specship check`'s behaviour gate
101
+ unchanged (REQ-BEHAVIOUR-004.A3): a `broken` link fails the gate when behaviour
102
+ gating is on; a requirement with no `verified` test is reported as unverified.
103
+ For a failing behaviour, fix the feature with `/ss-implement`, then re-run
104
+ `/ss-behaviour` (or just re-run the test and `specship_link_verify`).
105
+
106
+ ## Anti-patterns
107
+
108
+ - **Writing test files before confirmation** — the one hard rule (step 4).
109
+ - **Marking a test `broken` when it never ran** — that false-fails the CI gate
110
+ (step 5).
111
+ - **Imposing a test stack** the repo doesn't use — mirror the existing
112
+ conventions (step 3).
113
+ - **Writing feature code** — that's `/ss-implement`. `/ss-behaviour` writes
114
+ tests, runs them, and records the result.
115
+ - **Generating Playwright tests when there's no UI** — the UI tier will be empty;
116
+ author backend/batch tests only.
@@ -0,0 +1,43 @@
1
+ ---
2
+ description: Gate & health door — run the enforcement gate, review the drift queue, repair a drifted/broken/orphaned link, or see code-health. No arg = the gate; `drifted`/`fix`/`relink`/`health` run the matching flow.
3
+ argument-hint: "(no arg = gate) | drifted | fix <SPEC_ID> | relink <SPEC_ID> | health"
4
+ allowed-tools: Bash, mcp__specship__specship_drifted, mcp__specship__specship_spec, mcp__specship__specship_link_verify
5
+ ---
6
+
7
+ # SpecShip Check: `$ARGUMENTS`
8
+
9
+ The **gate & health door** — verify intent against code and keep the spec↔code
10
+ links honest. Route on the first token of `$ARGUMENTS`.
11
+
12
+ ## Dispatch
13
+
14
+ - **(no argument)** → run the enforcement gate:
15
+ ```bash
16
+ specship check
17
+ ```
18
+ Composes spec↔code drift, architecture fitness, maintainability, and the
19
+ spec→test→verify behaviour chain. Strictly opt-in gating — with no `enforce`
20
+ config it only advises and exits 0. Summarize the gated failures, if any.
21
+ - **`drifted`** → the review queue: call `mcp__specship__specship_drifted`
22
+ (optional `state` filter) for links that are drifted (spec or code changed),
23
+ broken (verification failed), or orphaned (target symbol gone).
24
+ - **`fix <SPEC_ID>`** → repair a drifted/broken link via the bundled workflow:
25
+ ```bash
26
+ specship workflow run spec-fix --input SPEC_ID=<ID>
27
+ ```
28
+ Diagnoses (spec hash vs code signature vs failing test) → approve → apply →
29
+ `specship_link_verify` back to `verified`.
30
+ - **`relink <SPEC_ID>`** → for an **orphaned** link (the target symbol no longer
31
+ exists): re-point it at the symbol's new location/name, then re-assert.
32
+ - **`health`** → graph-derived code health:
33
+ ```bash
34
+ specship maintainability
35
+ ```
36
+ Shows the high-precision findings (oversized symbols, god files, dependency
37
+ cycles), ranked and capped. Add `--deep` for the lower-confidence dead-code and
38
+ coupling findings; `--json` for the full tagged set (CI).
39
+
40
+ ## After running tests against a spec link
41
+
42
+ Report the outcome with `mcp__specship__specship_link_verify`
43
+ (`result: "pass" | "fail"`) so the link moves to `verified` (or `broken`).
@@ -0,0 +1,84 @@
1
+ ---
2
+ description: Import a Claude Design (or Figma) file, snapshot it for zero-loss reference, draft a SpecShip spec, and hand off to /ss-spec implement.
3
+ argument-hint: <Claude-Design-URL> [SLUG]
4
+ allowed-tools: Read, Write, Edit, Bash, mcp__specship__specship_explore, mcp__specship__specship_search, mcp__specship__specship_node, mcp__specship__specship_spec, mcp__specship__specship_files
5
+ ---
6
+
7
+ # SpecShip Design → Spec → Implement: `$ARGUMENTS`
8
+
9
+ > **Already settled on a design?** This command imports it by URL. If you instead want to *run
10
+ > the taste loop first* — iterate variants with the human via the `designer` MCP and only then
11
+ > spec the chosen one — use **`/ss-design-loop`**, which drives the loop and hands the resulting
12
+ > bundle to this same workflow via its `HANDOFF_DIR` input.
13
+
14
+ Run the bundled `claude-design-implement` workflow against the Claude Design URL in `$ARGUMENTS`. The workflow:
15
+
16
+ 1. **Snapshots** the design source byte-for-byte into `specs/<slug>/snapshot.html` (zero-loss fidelity layer).
17
+ 2. **Records the import** in `specs/<slug>/source.md` (audit trail — URL, project ID, date, original prompt verbatim).
18
+ 3. **Extracts design tokens** into `specs/<slug>/tokens.css`, mapped onto your project's existing token system where possible.
19
+ 4. **Drafts a spec** at `specs/<slug>.md` covering behavioural contract, accessibility, responsive, interaction states, and data shape — **without** pixel values or hex colors (those stay in the snapshot + tokens).
20
+ 5. **Pauses at an approval gate** for you to walk the `[needs review]` markers and gap-fill questions.
21
+ 6. **Writes the spec** and `specship sync`s it into the graph.
22
+ 7. **Hands off** with the next command: `/ss-spec implement <first REQ ID>`.
23
+
24
+ ## How to invoke
25
+
26
+ Parse `$ARGUMENTS`. The first token must be a Claude Design URL of the form:
27
+
28
+ ```
29
+ https://claude.ai/design/p/<project-id>/?file=<File+Name>.html
30
+ ```
31
+
32
+ Optional second token is the slug (kebab-case directory name). If omitted, derive from the `file=` query param (e.g. `Data+Flow.html` → `data-flow`).
33
+
34
+ Then run:
35
+
36
+ ```bash
37
+ specship workflow run claude-design-implement \
38
+ --input CONNECTOR_URL="<URL>" \
39
+ --input FILE_LABEL="<File Name>" \
40
+ --input SLUG="<slug>"
41
+ ```
42
+
43
+ (Add `--input OWNER="<team>"` and `--input PRIORITY="high|medium|low"` if you want them populated in the spec frontmatter; otherwise they're marked `[needs review]` and surfaced in the gap-fill step.)
44
+
45
+ ## Why the four-file pattern
46
+
47
+ The workflow produces four files in `specs/<slug>/` rather than a single spec. This is deliberate:
48
+
49
+ | File | Role | Drift-tracked? |
50
+ |---|---|---|
51
+ | `snapshot.html` | Byte-for-byte design capture | No (frozen reference) |
52
+ | `source.md` | Import audit record | No (metadata) |
53
+ | `tokens.css` | Design tokens — CSS variables | No (reference data) |
54
+ | `specs/<slug>.md` | Contract: REQs, acceptance criteria | **Yes — drift gate on this** |
55
+
56
+ Specs that name pixel values flag drift on every theme tweak; specs that name token symbols (`MUST use --error`) survive token-value changes silently. The split keeps the drift queue meaningful.
57
+
58
+ ## After the workflow finishes
59
+
60
+ You get a hand-off message listing the REQs. Run:
61
+
62
+ ```
63
+ /ss-spec implement <REQ-XXX-001>
64
+ ```
65
+
66
+ The implementation phase reads:
67
+ - `specs/<slug>.md` for what to build
68
+ - `specs/<slug>/snapshot.html` for how it should look
69
+ - `specs/<slug>/tokens.css` for which design tokens to wire up
70
+
71
+ This is what preserves visual fidelity — the snapshot is on disk and the implementer reads it directly. The spec layer enforces contract; the snapshot layer guarantees fidelity.
72
+
73
+ ## When the designer iterates
74
+
75
+ Re-run `/ss-design-implement` with the same URL. The workflow re-snapshots, re-drafts, re-prompts for approval — keeping existing REQ IDs stable so any in-flight implementation work survives the iteration. `git diff` on the snapshot tells you exactly what changed visually; `git diff` on `specs/<slug>.md` tells you what changed contractually.
76
+
77
+ ## Anti-patterns
78
+
79
+ - **Don't put hex codes in the spec.** Reference tokens by name. The values live in `tokens.css`.
80
+ - **Don't delete the snapshot after implementation.** It's the durable reference if the Claude Design URL ever goes 404.
81
+ - **Don't paraphrase the snapshot.** Save byte-for-byte. Summarising loses detail that the implementation step would otherwise have used.
82
+ - **Don't skip the approval gate.** The workflow's value is the gap-fill questions surfaced there — answering them is what closes the "no details lost" gap on the things a static design can't show (failure modes, real-time updates, keyboard order).
83
+
84
+ If `$ARGUMENTS` is empty or doesn't look like a Claude Design URL, ask the user for the URL before running the workflow.
@@ -0,0 +1,125 @@
1
+ ---
2
+ description: Run the full design→code loop — taste a claude.ai/design with the human via the designer MCP, then snapshot → spec → review → hand off to /ss-spec implement. Two human gates.
3
+ argument-hint: [intent — what you want to design]
4
+ allowed-tools: Read, Write, Edit, Bash, mcp__specship__designer_session, mcp__specship__designer_prompt, mcp__specship__designer_ask, mcp__specship__designer_list, mcp__specship__designer_snapshot, mcp__specship__designer_handoff, mcp__specship__specship_explore, mcp__specship__specship_search, mcp__specship__specship_node, mcp__specship__specship_spec, mcp__specship__specship_files
5
+ ---
6
+
7
+ # SpecShip Design Loop: `$ARGUMENTS`
8
+
9
+ One continuous pipeline: **intent → taste → design → handoff → spec → `/ss-spec implement`**.
10
+ You (the orchestrator) drive `claude.ai/design` through the `designer` MCP while the
11
+ **human tastes** the variants, then promote the chosen design into a SpecShip spec via the
12
+ bundled `claude-design-implement` workflow. Two human gates:
13
+
14
+ - **Gate 1 (aesthetic):** the human says *"that's it"* in the taste loop. Driven here, conversationally.
15
+ - **Gate 2 (contract):** the human walks the spec's `[needs review]` markers at the workflow's approval gate.
16
+
17
+ This is the deeper companion to `/ss-design-implement` — that command imports a design you've
18
+ *already* settled on (by URL); this one runs the taste loop first, then hands the resulting
19
+ bundle to the same workflow. `$ARGUMENTS` is the human's opening intent (optional).
20
+
21
+ ## Preflight
22
+
23
+ 1. **Designer runtime ready?** The designer tools are part of SpecShip's MCP now
24
+ (`mcp__specship__designer_*`), so they're always present. Probe the *runtime* with
25
+ `designer_session({ action: "status" })`: a clean status means you're ready. If it errors
26
+ with "CDP not up" or "Not signed in", the one-time Chrome setup hasn't run — tell the human to
27
+ run `designer setup` (creates the debug-Chrome profile + login) and stop. Do NOT fall back to a
28
+ blind fetch; the taste loop needs the live browser.
29
+ 2. **SpecShip initialized?** `specship status` should succeed. If not, `specship init -i` first.
30
+
31
+ ## Phase A — Taste loop (Gate 1)
32
+
33
+ Follow the **`designer-loop` skill** (`~/.claude/skills/designer-loop/SKILL.md`) — it is the
34
+ authority on this loop. The condensed version, if the skill isn't installed:
35
+
36
+ > The human is the designer; Claude Design has taste; you are translation + plumbing. Don't
37
+ > propose your own variants, don't interview about aesthetics — scope questions only.
38
+
39
+ 1. **Read the room — capabilities drive the design.** Before relaying any intent, survey the
40
+ target repo for what it actually *does* and feed that into the prompt verbatim. Use
41
+ `specship_explore` / `specship_search` to pull: entities + their fields, operations /
42
+ endpoints, states (loading / empty / error / success), failure modes, hard constraints
43
+ (auth, rate limits), and existing design tokens. The human's intent tells Claude *how*; the
44
+ codebase tells it *what*. Transfer capability facts unabridged — summarizing is filtering.
45
+ 2. **Create / resume the session.** `designer_session({ key: "<slug>", action: "create",
46
+ name: "<seed intent>", fidelity: "highfi" })`. Reuse a stable `key` derived from the intent
47
+ so parallel loops don't collide.
48
+ 3. **Relay a minimal, faithful prompt.** `designer_prompt({ key, prompt })` — intent +
49
+ capability facts; let Claude's taste make the aesthetic calls. Ask for the variant shape you
50
+ want ("3 full-page files", "states as toggles") and lock any hard brand tokens explicitly.
51
+ 4. **Hand the human the URL** returned in `url`. That live surface has working tweak sliders and
52
+ the variant switcher — it is the default taste path. Ask *"what do you think?"*, not
53
+ "accept or reject?".
54
+ 5. **Interpret + iterate.** Translate each reaction into the next `designer_prompt` (or a cheap
55
+ `designer_ask` to consult Claude on a small adjustment). Repeat 3–4 until the human says
56
+ **"that's it."** Capture their final reaction verbatim — it goes in the record.
57
+
58
+ Stay in the loop until Gate 1 is explicitly passed. "Almost" is not "yes."
59
+
60
+ ## Bridge — promote the chosen design
61
+
62
+ 1. `designer_handoff({ key, openFile: "<chosen variant>.html" })`. This fetches the project
63
+ export zip into `./artifacts/<key>/handoff-<ts>/` — `project/*` (all variants + assets) plus
64
+ `decision-record.md` (the verbatim transcript + the human's final reaction). Note the
65
+ **absolute path** of that `handoff-<ts>/` directory and the **chosen variant filename**.
66
+ 2. Derive `FILE_LABEL` (human label) and `SLUG` (kebab-case) from the chosen file / intent. If
67
+ the slug is ambiguous, ask the human — one scope question, not an interview.
68
+
69
+ ## Phase B — Spec pipeline (Gate 2)
70
+
71
+ Run the bundled workflow against the bundle on disk (no re-fetch, no CDP):
72
+
73
+ ```bash
74
+ specship workflow run claude-design-implement \
75
+ --input HANDOFF_DIR="<absolute path to handoff-<ts>/>" \
76
+ --input CHOSEN_FILE="<chosen variant>.html" \
77
+ --input FILE_LABEL="<File Label>" \
78
+ --input SLUG="<slug>" \
79
+ --json
80
+ ```
81
+
82
+ (Add `--input OWNER="<team>"` / `--input PRIORITY="high|medium|low"` to populate frontmatter;
83
+ otherwise they default to empty and surface as `[needs review]`.)
84
+
85
+ The workflow runs headless to its approval gate, then **pauses** (status `paused`). It:
86
+ snapshots `project/<chosen>.html` byte-for-byte into `specs/<slug>/snapshot.html`, folds
87
+ `decision-record.md` into `specs/<slug>/source.md`, extracts `specs/<slug>/tokens.css`, and
88
+ drafts the spec.
89
+
90
+ **At the pause (Gate 2):** read the run's approval message / the drafted spec artifact, present
91
+ it to the human, and walk the `[needs review]` markers + gap-fill questions together. Then:
92
+
93
+ - **Approve:** `specship workflow approve <runId> --comment "<gap-fill answers>"` then
94
+ `specship workflow resume <runId>`. The answers are captured into the spec.
95
+ - **Needs changes:** collect the feedback and re-run the workflow (a reject cancels the run;
96
+ existing REQ IDs are preserved across re-imports, so in-flight work survives).
97
+
98
+ ## Phase C — Hand off to implementation
99
+
100
+ When the workflow completes it prints the bridge message. Relay it to the human:
101
+ - the spec path `specs/<slug>.md` and its REQ IDs,
102
+ - the reference files (`snapshot.html`, `tokens.css`, `source.md`),
103
+ - the exact next step: **`/ss-spec implement <first REQ ID>`**.
104
+
105
+ Remind them: the implementer reads `snapshot.html` for visual fidelity — the spec is
106
+ contract-only.
107
+
108
+ ## Anti-patterns
109
+
110
+ - **Skipping the capability survey.** Designing before reading what the repo *does* produces
111
+ designs that look good and don't fit. Phase A step 1 is load-bearing.
112
+ - **Proposing your own variants / interviewing about taste.** Claude Design proposes; you relay.
113
+ Scope questions only.
114
+ - **Auto-promoting.** Don't `designer_handoff` on every iteration — only once Gate 1 passes.
115
+ - **Re-fetching in the workflow.** Always pass `HANDOFF_DIR` (the bundle you just fetched), never
116
+ `CONNECTOR_URL` — that re-drives Chrome from a headless subprocess and is fragile. The URL path
117
+ is what `/ss-design-implement` is for.
118
+ - **Putting hex/pixels in the spec.** Reference tokens by name; values live in `tokens.css`.
119
+ - **Skipping Gate 2.** The gap-fill questions are where the static design's blind spots (failure
120
+ modes, real-time updates, keyboard order) get closed.
121
+
122
+ If `designer_session` errors with a CDP / sign-in problem, stop and route the human to
123
+ `designer setup` (debug-Chrome profile + login) — this command cannot run the taste loop without
124
+ the live browser. To import a design you've already settled on by URL, use
125
+ `/ss-design-implement <url>` instead.
@@ -0,0 +1,43 @@
1
+ ---
2
+ description: Reads door — explore a codebase region, trace a flow, or get a change's blast radius. Name the symbols you care about; for a flow name both ends; for impact ask "what breaks if I change X".
3
+ argument-hint: <symbols | flow from→to | "impact of X">
4
+ allowed-tools: mcp__specship__specship_explore, mcp__specship__specship_node, mcp__specship__specship_search, mcp__specship__specship_callers, mcp__specship__specship_callees, mcp__specship__specship_impact
5
+ ---
6
+
7
+ # SpecShip Explore: `$ARGUMENTS`
8
+
9
+ The **reads door** — one entry for every "understand the code" question. Pick the
10
+ behaviour from what `$ARGUMENTS` describes; you do not need a separate command.
11
+
12
+ ## With no arguments — a flow worth trying first
13
+
14
+ When `$ARGUMENTS` is empty, first run `specship starter-prompt`. If it prints a
15
+ line, surface it to the user as **"A flow worth trying in this repo: `<line>`"** —
16
+ a concrete starter question they can ask to see retrieval in action — then show
17
+ the guidance below. If it prints nothing, just show the guidance below. (It
18
+ deliberately prints nothing once you've already used retrieval this session.)
19
+
20
+ ## Explore an area / "how does X work" (default)
21
+
22
+ Call `mcp__specship__specship_explore` with `$ARGUMENTS` as a bag of symbol names
23
+ (include `Class.method` qualified forms when given). It returns the relevant
24
+ symbols' source grouped by file, plus any flow it can synthesize between them.
25
+ Treat the returned source as already Read — do NOT re-Read files. If a god-file
26
+ truncates, run `specship_explore` again with a tighter symbol bag rather than
27
+ reaching for Read. For one symbol's full body (or an overloaded name), call
28
+ `mcp__specship__specship_node` — it returns every overload in one call.
29
+
30
+ ## Trace a flow — "how does X reach Y / the path from X to Y"
31
+
32
+ Call `specship_explore` naming the symbols that span the flow (e.g.
33
+ `mutateElement renderScene`). It surfaces the call path among them, riding
34
+ dynamic-dispatch hops (callbacks, React re-render, JSX children) that grep can't
35
+ follow. Use `specship_search` first if you only have a partial name.
36
+
37
+ ## Blast radius — "what breaks if I change X"
38
+
39
+ `mcp__specship__specship_impact` on the symbol for the transitive dependents;
40
+ `specship_callers` / `specship_callees` for one hop in either direction.
41
+
42
+ The index is kept fresh automatically; force a re-index with the `specship sync`
43
+ CLI if a recent edit isn't reflected yet.
@@ -0,0 +1,118 @@
1
+ ---
2
+ description: Intent door — view, author, fast-path, implement, review, or extend a spec. No arg = the spec funnel; a SPEC_ID = that spec's detail; `new`/`fast`/`implement`/`review`/`triage`/`behaviour`/`domain` run the matching flow.
3
+ argument-hint: "<SPEC_ID> | new <desc> | fast <desc> | implement <ID> | review <ID> | triage <prompt> | behaviour <ID> | domain"
4
+ allowed-tools: Read, Edit, Write, Bash, mcp__specship__specship_spec, mcp__specship__specship_node, mcp__specship__specship_explore, mcp__specship__specship_search, mcp__specship__specship_link_assert, mcp__specship__specship_link_verify
5
+ ---
6
+
7
+ # SpecShip Spec: `$ARGUMENTS`
8
+
9
+ The **intent door** — one entry for the whole spec lifecycle. Route on the first
10
+ token of `$ARGUMENTS`; everything the old `ss-spec*` / `ss-implement` / `ss-triage`
11
+ / `ss-behaviour` / `ss-domain` commands did is reachable here, with no capability
12
+ lost.
13
+
14
+ ## Dispatch
15
+
16
+ - **(no argument)** → call `mcp__specship__specship_spec` with no `spec_id`: the
17
+ project's spec lifecycle funnel (brainstormed ideas → specs → implemented).
18
+ - **a bare `SPEC_ID`** (e.g. `REQ-AUTH-005`) → call `specship_spec` with that
19
+ `spec_id`: the body, parent/siblings, and linked code with state. Use this
20
+ before Read-ing the spec file. Jump into linked code via `specship_node`; if
21
+ nothing is linked yet, `specship_explore` on terms from the spec's title.
22
+ - **`new <description>`** → the full, gated authoring loop (see *Author* below).
23
+ Use when the design isn't settled.
24
+ - **`fast <description>`** → the **fast-path** (see below).
25
+ - **`implement <SPEC_ID>`** → run the bundled workflow:
26
+ `specship workflow run spec-implement --input SPEC_ID=<ID>` (plan → approve →
27
+ implement → verify → link, in an isolated worktree).
28
+ - **`review <SPEC_ID>`** → a read-only rubric pass (see *Review* below); no edits.
29
+ - **`triage <prompt>`** → the triage flow (route a bug / error / one-line
30
+ enhancement to the existing spec it belongs to and append to it): see below.
31
+ - **`behaviour <SPEC_ID>`** → author + run E2E tests from the requirement's
32
+ acceptance criteria; see below.
33
+ - **`domain`** → capture a human-confirmed domain fact; see below.
34
+
35
+ ## Author (`new <description>`)
36
+
37
+ The gated authoring loop, run conversationally — diverge, then formalize. Write
38
+ NOTHING to disk until the human explicitly confirms.
39
+
40
+ 1. **Scope + ground.** Confirm it's one feature area (refuse "spec the whole
41
+ app"). Call `specship_explore` on terms from the description to find where
42
+ similar features live and which files the work will touch.
43
+ 2. **Diverge.** Propose 2–3 distinct approaches with trade-offs, lead with a
44
+ recommendation, and clarify the things the graph can't tell you (UX, edge
45
+ cases, non-goals) **one question at a time**. Iterate until the direction is
46
+ settled.
47
+ 3. **Draft + write.** On confirmation, `Write` `specs/<slug>.md` in the
48
+ `spec-author` format: frontmatter (id/title/owner/priority), `<!-- id: -->`
49
+ markers above every heading, an RFC-2119 keyword per requirement title, one
50
+ concern per requirement, `## Acceptance` with `.A<N>` bullets (happy +
51
+ failure). Mark genuinely-unknowable points `[needs review]`.
52
+ 4. **Hand off:** `specship sync`, then `/ss-spec review <ID>` and
53
+ `/ss-spec implement <ID>`.
54
+
55
+ (If a richer authoring skill — e.g. `spec-author` — is available in this
56
+ environment, prefer it; this inline flow is the always-present fallback.)
57
+
58
+ ## Review (`review <SPEC_ID>`)
59
+
60
+ Read-only — do NOT modify the file. Fetch the spec (`specship_spec`), verify each
61
+ `implementations:` path exists (`specship_node`), then walk the rubric and output
62
+ a numbered findings list grouped **STRUCTURAL** (embedded id markers, no stranded
63
+ ids, unique ids, valid frontmatter, valid `implementations:`), **QUALITY**
64
+ (RFC-2119 keywords, no weasel words, no implementation leak, testable acceptance,
65
+ one concern per REQ, failure-path coverage), **HYGIENE** (owner/priority set, no
66
+ stale `[needs review]`/TODO). End with a one-line verdict.
67
+
68
+ ## Fast-path (`fast <description>`)
69
+
70
+ For a solo dev who wants to record intent and move, **without** the brainstorm /
71
+ gap-question interview (REQ-DOORS-002):
72
+
73
+ 1. Ground briefly with `specship_explore` on terms from the description (one call).
74
+ 2. Draft a complete spec in memory following the `spec-author` format — frontmatter
75
+ (id/title/owner/priority), `<!-- id: -->` markers above every heading, an
76
+ RFC-2119 keyword per requirement, `## Acceptance` with `.A<N>` bullets (happy +
77
+ failure). Pick sensible defaults instead of asking; mark only genuinely
78
+ unknowable points `[needs review]`.
79
+ 3. `Write` it to `specs/<slug>.md` and tell the user the path.
80
+ 4. Hand off: `specship sync`, then `/ss-spec implement <ID>` when ready.
81
+
82
+ The fast-path still produces a well-formed spec that indexes cleanly and is ready
83
+ for implementation + linking — it trades the interview for speed, not correctness.
84
+
85
+ ## Triage (`triage <prompt>`)
86
+
87
+ Classify the input (bug / error log / enhancement). Retrieve candidates: prose →
88
+ `specship_spec` with a `query`; an error log → parse the `file:line`/symbol →
89
+ `specship_explore`/`specship_node` → the owning requirement. Present the ranked
90
+ match + recommended target. **Preview the exact diff → confirm** (offer edit /
91
+ new-spec / cancel), then append a new requirement (new concern) or a new `.A<N>`
92
+ acceptance criterion (a regression an existing requirement should have covered),
93
+ auto-deriving the next collision-checked id, and `specship_link_assert` it. When
94
+ nothing clears the match floor, say so and offer `/ss-spec new` instead — never
95
+ auto-create. Write nothing until confirmed.
96
+
97
+ ## Behaviour tests (`behaviour <SPEC_ID>`)
98
+
99
+ Pull the requirement's acceptance criteria and its behaviour surface
100
+ (`specship_spec` with `spec_id` + `behaviour_surface: true` → UI tier / backend
101
+ tier). For **each** acceptance criterion, author a Playwright test when a UI
102
+ exists and/or a backend test, mirroring the repo's existing test conventions.
103
+ **Preview the files → confirm → write**, then `specship_link_assert … kind:tests`
104
+ at the `.A<N>`, run the suite, and `specship_link_verify` each (pass→verified,
105
+ fail→broken; a suite that can't run is reported unrun, never marked broken).
106
+
107
+ ## Domain fact (`domain`)
108
+
109
+ Run `specship domain-gaps --json` for the real undocumented entities/specs, ask
110
+ targeted per-type questions, and **only on explicit confirmation** `Write` a
111
+ `domain`-kind fact under `specs/domain/` (frontmatter `id: DOM-<AREA>-NNN`,
112
+ `type:` one of term/rule/decision/constraint, linked via `depends_on`/`parent_id`).
113
+ Then `specship sync`.
114
+
115
+ ## After editing code for a spec
116
+
117
+ Call `mcp__specship__specship_link_assert` before reporting done — idempotent, and
118
+ it supersedes the `// @implements REQ-X` comment backstop.
@@ -0,0 +1,57 @@
1
+ /**
2
+ * First-run starter-prompt generation (ACTIVATION-DOC).
3
+ *
4
+ * Manufactures one perceivable retrieval moment: a concrete flow/impact question
5
+ * naming real symbols from THIS repo, derived from a flow verified to connect in
6
+ * the graph. A botched first impression is worse than none, so generation never
7
+ * emits a flow whose endpoints don't connect and never sources a flow from a
8
+ * god-file's fan-out; when no good flow exists it falls back to an impact
9
+ * question (which needs only one real symbol and can't fail to connect).
10
+ *
11
+ * Graph access is behind `GraphProbe` so the selection policy is unit-testable;
12
+ * `generateStarterPrompt` wires the real probe over a live `SpecShip` graph.
13
+ */
14
+ import type { SpecShip } from '../index';
15
+ export interface StarterPrompt {
16
+ kind: 'flow' | 'impact';
17
+ /** The ready-to-ask prompt naming real symbols. */
18
+ prompt: string;
19
+ from: string;
20
+ to?: string;
21
+ }
22
+ export interface GraphProbe {
23
+ /** Entry points worth tracing from (routes / high-fan-in), god-files excluded. */
24
+ entryCandidates(): Array<{
25
+ name: string;
26
+ file: string;
27
+ }>;
28
+ /** Trace an entry to a reachable leaf; null if it reaches nothing useful. */
29
+ traceFlow(entry: {
30
+ name: string;
31
+ file: string;
32
+ }): {
33
+ to: string;
34
+ hops: number;
35
+ files: string[];
36
+ synthesized: boolean;
37
+ } | null;
38
+ /** Highest-fan-in non-god-file symbol, for the impact fallback. */
39
+ topFanInSymbol(): {
40
+ name: string;
41
+ file: string;
42
+ } | null;
43
+ }
44
+ /**
45
+ * Choose the starter prompt. Pure: a flow across ≥2 files over a multi-hop path
46
+ * wins; otherwise an impact question on the busiest symbol; otherwise null.
47
+ */
48
+ export declare function selectStarterPrompt(probe: GraphProbe): StarterPrompt | null;
49
+ /** A short or generic name that would make an unconvincing starter prompt. */
50
+ export declare function isNoiseName(name: string): boolean;
51
+ /** Test/fixture/build files — never the source or sink of the manufactured moment. */
52
+ export declare function isUninterestingFile(file: string): boolean;
53
+ /** Build a `GraphProbe` over a live SpecShip graph. */
54
+ export declare function realProbe(cg: SpecShip): GraphProbe;
55
+ /** Generate the starter prompt for a live project, or null if none fits. */
56
+ export declare function generateStarterPrompt(cg: SpecShip): StarterPrompt | null;
57
+ //# sourceMappingURL=starter-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starter-prompt.d.ts","sourceRoot":"","sources":["../../src/activation/starter-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,kFAAkF;IAClF,eAAe,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,6EAA6E;IAC7E,SAAS,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAChD,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,WAAW,EAAE,OAAO,CAAC;KACtB,GAAG,IAAI,CAAC;IACT,mEAAmE;IACnE,cAAc,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACzD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI,CAiB3E;AAiBD,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKzD;AAcD,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,UAAU,CAqFlD;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,GAAG,aAAa,GAAG,IAAI,CAExE"}