@selvakumaresra/specship 0.1.3 → 0.3.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 (694) hide show
  1. package/README.md +2 -2
  2. package/commands/ss-design-implement.md +79 -0
  3. package/commands/{cg-drifted.md → ss-drifted.md} +2 -2
  4. package/commands/{cg-fix.md → ss-fix.md} +1 -1
  5. package/commands/{cg-implement.md → ss-implement.md} +1 -1
  6. package/commands/ss-spec-author.md +43 -0
  7. package/commands/ss-spec-review.md +48 -0
  8. package/dist/bin/node-version-check.d.ts +37 -0
  9. package/dist/bin/node-version-check.d.ts.map +1 -0
  10. package/dist/bin/node-version-check.js +79 -0
  11. package/dist/bin/node-version-check.js.map +1 -0
  12. package/dist/bin/specship.d.ts +25 -0
  13. package/dist/bin/specship.d.ts.map +1 -0
  14. package/dist/bin/specship.js +2019 -0
  15. package/dist/bin/specship.js.map +1 -0
  16. package/dist/bin/uninstall.d.ts +13 -0
  17. package/dist/bin/uninstall.d.ts.map +1 -0
  18. package/dist/bin/uninstall.js +35 -0
  19. package/dist/bin/uninstall.js.map +1 -0
  20. package/dist/context/formatter.d.ts +30 -0
  21. package/dist/context/formatter.d.ts.map +1 -0
  22. package/dist/context/formatter.js +263 -0
  23. package/dist/context/formatter.js.map +1 -0
  24. package/dist/context/index.d.ts +119 -0
  25. package/dist/context/index.d.ts.map +1 -0
  26. package/dist/context/index.js +1289 -0
  27. package/dist/context/index.js.map +1 -0
  28. package/dist/context/markers.d.ts +19 -0
  29. package/dist/context/markers.d.ts.map +1 -0
  30. package/dist/context/markers.js +22 -0
  31. package/dist/context/markers.js.map +1 -0
  32. package/dist/db/index.d.ts +103 -0
  33. package/dist/db/index.d.ts.map +1 -0
  34. package/dist/db/index.js +279 -0
  35. package/dist/db/index.js.map +1 -0
  36. package/dist/db/migrations.d.ts +44 -0
  37. package/dist/db/migrations.d.ts.map +1 -0
  38. package/dist/db/migrations.js +462 -0
  39. package/dist/db/migrations.js.map +1 -0
  40. package/dist/db/queries.d.ts +357 -0
  41. package/dist/db/queries.d.ts.map +1 -0
  42. package/dist/db/queries.js +1504 -0
  43. package/dist/db/queries.js.map +1 -0
  44. package/dist/db/schema.sql +419 -0
  45. package/dist/db/spec-queries.d.ts +101 -0
  46. package/dist/db/spec-queries.d.ts.map +1 -0
  47. package/dist/db/spec-queries.js +675 -0
  48. package/dist/db/spec-queries.js.map +1 -0
  49. package/dist/db/sqlite-adapter.d.ts +65 -0
  50. package/dist/db/sqlite-adapter.d.ts.map +1 -0
  51. package/dist/db/sqlite-adapter.js +214 -0
  52. package/dist/db/sqlite-adapter.js.map +1 -0
  53. package/dist/directory.d.ts +67 -0
  54. package/dist/directory.d.ts.map +1 -0
  55. package/dist/directory.js +267 -0
  56. package/dist/directory.js.map +1 -0
  57. package/dist/errors.d.ts +136 -0
  58. package/dist/errors.d.ts.map +1 -0
  59. package/dist/errors.js +219 -0
  60. package/dist/errors.js.map +1 -0
  61. package/dist/extraction/dfm-extractor.d.ts +31 -0
  62. package/dist/extraction/dfm-extractor.d.ts.map +1 -0
  63. package/dist/extraction/dfm-extractor.js +151 -0
  64. package/dist/extraction/dfm-extractor.js.map +1 -0
  65. package/dist/extraction/generated-detection.d.ts +30 -0
  66. package/dist/extraction/generated-detection.d.ts.map +1 -0
  67. package/dist/extraction/generated-detection.js +80 -0
  68. package/dist/extraction/generated-detection.js.map +1 -0
  69. package/dist/extraction/grammars.d.ts +100 -0
  70. package/dist/extraction/grammars.d.ts.map +1 -0
  71. package/dist/extraction/grammars.js +426 -0
  72. package/dist/extraction/grammars.js.map +1 -0
  73. package/dist/extraction/index.d.ts +138 -0
  74. package/dist/extraction/index.d.ts.map +1 -0
  75. package/dist/extraction/index.js +1394 -0
  76. package/dist/extraction/index.js.map +1 -0
  77. package/dist/extraction/languages/c-cpp.d.ts +4 -0
  78. package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
  79. package/dist/extraction/languages/c-cpp.js +171 -0
  80. package/dist/extraction/languages/c-cpp.js.map +1 -0
  81. package/dist/extraction/languages/csharp.d.ts +3 -0
  82. package/dist/extraction/languages/csharp.d.ts.map +1 -0
  83. package/dist/extraction/languages/csharp.js +73 -0
  84. package/dist/extraction/languages/csharp.js.map +1 -0
  85. package/dist/extraction/languages/dart.d.ts +3 -0
  86. package/dist/extraction/languages/dart.d.ts.map +1 -0
  87. package/dist/extraction/languages/dart.js +192 -0
  88. package/dist/extraction/languages/dart.js.map +1 -0
  89. package/dist/extraction/languages/go.d.ts +3 -0
  90. package/dist/extraction/languages/go.d.ts.map +1 -0
  91. package/dist/extraction/languages/go.js +74 -0
  92. package/dist/extraction/languages/go.js.map +1 -0
  93. package/dist/extraction/languages/index.d.ts +10 -0
  94. package/dist/extraction/languages/index.d.ts.map +1 -0
  95. package/dist/extraction/languages/index.js +51 -0
  96. package/dist/extraction/languages/index.js.map +1 -0
  97. package/dist/extraction/languages/java.d.ts +3 -0
  98. package/dist/extraction/languages/java.d.ts.map +1 -0
  99. package/dist/extraction/languages/java.js +70 -0
  100. package/dist/extraction/languages/java.js.map +1 -0
  101. package/dist/extraction/languages/javascript.d.ts +3 -0
  102. package/dist/extraction/languages/javascript.d.ts.map +1 -0
  103. package/dist/extraction/languages/javascript.js +90 -0
  104. package/dist/extraction/languages/javascript.js.map +1 -0
  105. package/dist/extraction/languages/kotlin.d.ts +3 -0
  106. package/dist/extraction/languages/kotlin.d.ts.map +1 -0
  107. package/dist/extraction/languages/kotlin.js +259 -0
  108. package/dist/extraction/languages/kotlin.js.map +1 -0
  109. package/dist/extraction/languages/lua.d.ts +3 -0
  110. package/dist/extraction/languages/lua.d.ts.map +1 -0
  111. package/dist/extraction/languages/lua.js +150 -0
  112. package/dist/extraction/languages/lua.js.map +1 -0
  113. package/dist/extraction/languages/luau.d.ts +3 -0
  114. package/dist/extraction/languages/luau.d.ts.map +1 -0
  115. package/dist/extraction/languages/luau.js +37 -0
  116. package/dist/extraction/languages/luau.js.map +1 -0
  117. package/dist/extraction/languages/objc.d.ts +3 -0
  118. package/dist/extraction/languages/objc.d.ts.map +1 -0
  119. package/dist/extraction/languages/objc.js +133 -0
  120. package/dist/extraction/languages/objc.js.map +1 -0
  121. package/dist/extraction/languages/pascal.d.ts +3 -0
  122. package/dist/extraction/languages/pascal.d.ts.map +1 -0
  123. package/dist/extraction/languages/pascal.js +66 -0
  124. package/dist/extraction/languages/pascal.js.map +1 -0
  125. package/dist/extraction/languages/php.d.ts +3 -0
  126. package/dist/extraction/languages/php.d.ts.map +1 -0
  127. package/dist/extraction/languages/php.js +107 -0
  128. package/dist/extraction/languages/php.js.map +1 -0
  129. package/dist/extraction/languages/python.d.ts +3 -0
  130. package/dist/extraction/languages/python.d.ts.map +1 -0
  131. package/dist/extraction/languages/python.js +56 -0
  132. package/dist/extraction/languages/python.js.map +1 -0
  133. package/dist/extraction/languages/ruby.d.ts +3 -0
  134. package/dist/extraction/languages/ruby.d.ts.map +1 -0
  135. package/dist/extraction/languages/ruby.js +114 -0
  136. package/dist/extraction/languages/ruby.js.map +1 -0
  137. package/dist/extraction/languages/rust.d.ts +3 -0
  138. package/dist/extraction/languages/rust.d.ts.map +1 -0
  139. package/dist/extraction/languages/rust.js +109 -0
  140. package/dist/extraction/languages/rust.js.map +1 -0
  141. package/dist/extraction/languages/scala.d.ts +3 -0
  142. package/dist/extraction/languages/scala.d.ts.map +1 -0
  143. package/dist/extraction/languages/scala.js +139 -0
  144. package/dist/extraction/languages/scala.js.map +1 -0
  145. package/dist/extraction/languages/swift.d.ts +3 -0
  146. package/dist/extraction/languages/swift.d.ts.map +1 -0
  147. package/dist/extraction/languages/swift.js +91 -0
  148. package/dist/extraction/languages/swift.js.map +1 -0
  149. package/dist/extraction/languages/typescript.d.ts +3 -0
  150. package/dist/extraction/languages/typescript.d.ts.map +1 -0
  151. package/dist/extraction/languages/typescript.js +129 -0
  152. package/dist/extraction/languages/typescript.js.map +1 -0
  153. package/dist/extraction/liquid-extractor.d.ts +52 -0
  154. package/dist/extraction/liquid-extractor.d.ts.map +1 -0
  155. package/dist/extraction/liquid-extractor.js +313 -0
  156. package/dist/extraction/liquid-extractor.js.map +1 -0
  157. package/dist/extraction/mybatis-extractor.d.ts +48 -0
  158. package/dist/extraction/mybatis-extractor.d.ts.map +1 -0
  159. package/dist/extraction/mybatis-extractor.js +198 -0
  160. package/dist/extraction/mybatis-extractor.js.map +1 -0
  161. package/dist/extraction/parse-worker.d.ts +8 -0
  162. package/dist/extraction/parse-worker.d.ts.map +1 -0
  163. package/dist/extraction/parse-worker.js +94 -0
  164. package/dist/extraction/parse-worker.js.map +1 -0
  165. package/dist/extraction/specs/markdown-spec-extractor.d.ts +59 -0
  166. package/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -0
  167. package/dist/extraction/specs/markdown-spec-extractor.js +327 -0
  168. package/dist/extraction/specs/markdown-spec-extractor.js.map +1 -0
  169. package/dist/extraction/specs/types.d.ts +39 -0
  170. package/dist/extraction/specs/types.d.ts.map +1 -0
  171. package/dist/extraction/specs/types.js +8 -0
  172. package/dist/extraction/specs/types.js.map +1 -0
  173. package/dist/extraction/svelte-extractor.d.ts +56 -0
  174. package/dist/extraction/svelte-extractor.d.ts.map +1 -0
  175. package/dist/extraction/svelte-extractor.js +272 -0
  176. package/dist/extraction/svelte-extractor.js.map +1 -0
  177. package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
  178. package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
  179. package/dist/extraction/tree-sitter-helpers.js +103 -0
  180. package/dist/extraction/tree-sitter-helpers.js.map +1 -0
  181. package/dist/extraction/tree-sitter-types.d.ts +193 -0
  182. package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
  183. package/dist/extraction/tree-sitter-types.js +10 -0
  184. package/dist/extraction/tree-sitter-types.js.map +1 -0
  185. package/dist/extraction/tree-sitter.d.ts +317 -0
  186. package/dist/extraction/tree-sitter.d.ts.map +1 -0
  187. package/dist/extraction/tree-sitter.js +3092 -0
  188. package/dist/extraction/tree-sitter.js.map +1 -0
  189. package/dist/extraction/vue-extractor.d.ts +51 -0
  190. package/dist/extraction/vue-extractor.d.ts.map +1 -0
  191. package/dist/extraction/vue-extractor.js +251 -0
  192. package/dist/extraction/vue-extractor.js.map +1 -0
  193. package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
  194. package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
  195. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  196. package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
  197. package/dist/extraction/wasm-runtime-flags.d.ts +38 -0
  198. package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
  199. package/dist/extraction/wasm-runtime-flags.js +106 -0
  200. package/dist/extraction/wasm-runtime-flags.js.map +1 -0
  201. package/dist/graph/index.d.ts +8 -0
  202. package/dist/graph/index.d.ts.map +1 -0
  203. package/dist/graph/index.js +13 -0
  204. package/dist/graph/index.js.map +1 -0
  205. package/dist/graph/queries.d.ts +106 -0
  206. package/dist/graph/queries.d.ts.map +1 -0
  207. package/dist/graph/queries.js +366 -0
  208. package/dist/graph/queries.js.map +1 -0
  209. package/dist/graph/traversal.d.ts +127 -0
  210. package/dist/graph/traversal.d.ts.map +1 -0
  211. package/dist/graph/traversal.js +531 -0
  212. package/dist/graph/traversal.js.map +1 -0
  213. package/dist/index.d.ts +551 -0
  214. package/dist/index.d.ts.map +1 -0
  215. package/dist/index.js +1165 -0
  216. package/dist/index.js.map +1 -0
  217. package/dist/installer/config-writer.d.ts +28 -0
  218. package/dist/installer/config-writer.d.ts.map +1 -0
  219. package/dist/installer/config-writer.js +91 -0
  220. package/dist/installer/config-writer.js.map +1 -0
  221. package/dist/installer/index.d.ts +87 -0
  222. package/dist/installer/index.d.ts.map +1 -0
  223. package/dist/installer/index.js +415 -0
  224. package/dist/installer/index.js.map +1 -0
  225. package/dist/installer/instructions-template.d.ts +18 -0
  226. package/dist/installer/instructions-template.d.ts.map +1 -0
  227. package/dist/installer/instructions-template.js +21 -0
  228. package/dist/installer/instructions-template.js.map +1 -0
  229. package/dist/installer/targets/claude.d.ts +98 -0
  230. package/dist/installer/targets/claude.d.ts.map +1 -0
  231. package/dist/installer/targets/claude.js +639 -0
  232. package/dist/installer/targets/claude.js.map +1 -0
  233. package/dist/installer/targets/registry.d.ts +19 -0
  234. package/dist/installer/targets/registry.d.ts.map +1 -0
  235. package/dist/installer/targets/registry.js +31 -0
  236. package/dist/installer/targets/registry.js.map +1 -0
  237. package/dist/installer/targets/shared.d.ts +62 -0
  238. package/dist/installer/targets/shared.d.ts.map +1 -0
  239. package/dist/installer/targets/shared.js +207 -0
  240. package/dist/installer/targets/shared.js.map +1 -0
  241. package/dist/installer/targets/types.d.ts +76 -0
  242. package/dist/installer/targets/types.d.ts.map +1 -0
  243. package/dist/installer/targets/types.js +12 -0
  244. package/dist/installer/targets/types.js.map +1 -0
  245. package/dist/isolation/worktree.d.ts +65 -0
  246. package/dist/isolation/worktree.d.ts.map +1 -0
  247. package/dist/isolation/worktree.js +231 -0
  248. package/dist/isolation/worktree.js.map +1 -0
  249. package/dist/mcp/daemon-paths.d.ts +46 -0
  250. package/dist/mcp/daemon-paths.d.ts.map +1 -0
  251. package/dist/mcp/daemon-paths.js +125 -0
  252. package/dist/mcp/daemon-paths.js.map +1 -0
  253. package/dist/mcp/daemon.d.ts +161 -0
  254. package/dist/mcp/daemon.d.ts.map +1 -0
  255. package/dist/mcp/daemon.js +403 -0
  256. package/dist/mcp/daemon.js.map +1 -0
  257. package/dist/mcp/engine.d.ts +105 -0
  258. package/dist/mcp/engine.d.ts.map +1 -0
  259. package/dist/mcp/engine.js +270 -0
  260. package/dist/mcp/engine.js.map +1 -0
  261. package/dist/mcp/index.d.ts +112 -0
  262. package/dist/mcp/index.d.ts.map +1 -0
  263. package/dist/mcp/index.js +477 -0
  264. package/dist/mcp/index.js.map +1 -0
  265. package/dist/mcp/proxy.d.ts +81 -0
  266. package/dist/mcp/proxy.d.ts.map +1 -0
  267. package/dist/mcp/proxy.js +510 -0
  268. package/dist/mcp/proxy.js.map +1 -0
  269. package/dist/mcp/server-instructions.d.ts +18 -0
  270. package/dist/mcp/server-instructions.d.ts.map +1 -0
  271. package/dist/mcp/server-instructions.js +77 -0
  272. package/dist/mcp/server-instructions.js.map +1 -0
  273. package/dist/mcp/session.d.ts +77 -0
  274. package/dist/mcp/session.d.ts.map +1 -0
  275. package/dist/mcp/session.js +294 -0
  276. package/dist/mcp/session.js.map +1 -0
  277. package/dist/mcp/spec-tools.d.ts +39 -0
  278. package/dist/mcp/spec-tools.d.ts.map +1 -0
  279. package/dist/mcp/spec-tools.js +326 -0
  280. package/dist/mcp/spec-tools.js.map +1 -0
  281. package/dist/mcp/tools.d.ts +404 -0
  282. package/dist/mcp/tools.d.ts.map +1 -0
  283. package/dist/mcp/tools.js +3066 -0
  284. package/dist/mcp/tools.js.map +1 -0
  285. package/dist/mcp/transport.d.ts +188 -0
  286. package/dist/mcp/transport.d.ts.map +1 -0
  287. package/dist/mcp/transport.js +343 -0
  288. package/dist/mcp/transport.js.map +1 -0
  289. package/dist/mcp/version.d.ts +19 -0
  290. package/dist/mcp/version.d.ts.map +1 -0
  291. package/dist/mcp/version.js +71 -0
  292. package/dist/mcp/version.js.map +1 -0
  293. package/dist/resolution/callback-synthesizer.d.ts +10 -0
  294. package/dist/resolution/callback-synthesizer.d.ts.map +1 -0
  295. package/dist/resolution/callback-synthesizer.js +1300 -0
  296. package/dist/resolution/callback-synthesizer.js.map +1 -0
  297. package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
  298. package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
  299. package/dist/resolution/frameworks/cargo-workspace.js +225 -0
  300. package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
  301. package/dist/resolution/frameworks/csharp.d.ts +8 -0
  302. package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
  303. package/dist/resolution/frameworks/csharp.js +241 -0
  304. package/dist/resolution/frameworks/csharp.js.map +1 -0
  305. package/dist/resolution/frameworks/drupal.d.ts +51 -0
  306. package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
  307. package/dist/resolution/frameworks/drupal.js +367 -0
  308. package/dist/resolution/frameworks/drupal.js.map +1 -0
  309. package/dist/resolution/frameworks/expo-modules.d.ts +3 -0
  310. package/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
  311. package/dist/resolution/frameworks/expo-modules.js +143 -0
  312. package/dist/resolution/frameworks/expo-modules.js.map +1 -0
  313. package/dist/resolution/frameworks/express.d.ts +8 -0
  314. package/dist/resolution/frameworks/express.d.ts.map +1 -0
  315. package/dist/resolution/frameworks/express.js +308 -0
  316. package/dist/resolution/frameworks/express.js.map +1 -0
  317. package/dist/resolution/frameworks/fabric.d.ts +3 -0
  318. package/dist/resolution/frameworks/fabric.d.ts.map +1 -0
  319. package/dist/resolution/frameworks/fabric.js +354 -0
  320. package/dist/resolution/frameworks/fabric.js.map +1 -0
  321. package/dist/resolution/frameworks/go.d.ts +8 -0
  322. package/dist/resolution/frameworks/go.d.ts.map +1 -0
  323. package/dist/resolution/frameworks/go.js +161 -0
  324. package/dist/resolution/frameworks/go.js.map +1 -0
  325. package/dist/resolution/frameworks/index.d.ts +48 -0
  326. package/dist/resolution/frameworks/index.d.ts.map +1 -0
  327. package/dist/resolution/frameworks/index.js +161 -0
  328. package/dist/resolution/frameworks/index.js.map +1 -0
  329. package/dist/resolution/frameworks/java.d.ts +8 -0
  330. package/dist/resolution/frameworks/java.d.ts.map +1 -0
  331. package/dist/resolution/frameworks/java.js +504 -0
  332. package/dist/resolution/frameworks/java.js.map +1 -0
  333. package/dist/resolution/frameworks/laravel.d.ts +13 -0
  334. package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
  335. package/dist/resolution/frameworks/laravel.js +257 -0
  336. package/dist/resolution/frameworks/laravel.js.map +1 -0
  337. package/dist/resolution/frameworks/nestjs.d.ts +26 -0
  338. package/dist/resolution/frameworks/nestjs.d.ts.map +1 -0
  339. package/dist/resolution/frameworks/nestjs.js +698 -0
  340. package/dist/resolution/frameworks/nestjs.js.map +1 -0
  341. package/dist/resolution/frameworks/play.d.ts +19 -0
  342. package/dist/resolution/frameworks/play.d.ts.map +1 -0
  343. package/dist/resolution/frameworks/play.js +111 -0
  344. package/dist/resolution/frameworks/play.js.map +1 -0
  345. package/dist/resolution/frameworks/python.d.ts +10 -0
  346. package/dist/resolution/frameworks/python.d.ts.map +1 -0
  347. package/dist/resolution/frameworks/python.js +396 -0
  348. package/dist/resolution/frameworks/python.js.map +1 -0
  349. package/dist/resolution/frameworks/react-native.d.ts +3 -0
  350. package/dist/resolution/frameworks/react-native.d.ts.map +1 -0
  351. package/dist/resolution/frameworks/react-native.js +360 -0
  352. package/dist/resolution/frameworks/react-native.js.map +1 -0
  353. package/dist/resolution/frameworks/react.d.ts +8 -0
  354. package/dist/resolution/frameworks/react.d.ts.map +1 -0
  355. package/dist/resolution/frameworks/react.js +365 -0
  356. package/dist/resolution/frameworks/react.js.map +1 -0
  357. package/dist/resolution/frameworks/ruby.d.ts +8 -0
  358. package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
  359. package/dist/resolution/frameworks/ruby.js +302 -0
  360. package/dist/resolution/frameworks/ruby.js.map +1 -0
  361. package/dist/resolution/frameworks/rust.d.ts +8 -0
  362. package/dist/resolution/frameworks/rust.d.ts.map +1 -0
  363. package/dist/resolution/frameworks/rust.js +304 -0
  364. package/dist/resolution/frameworks/rust.js.map +1 -0
  365. package/dist/resolution/frameworks/svelte.d.ts +9 -0
  366. package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
  367. package/dist/resolution/frameworks/svelte.js +249 -0
  368. package/dist/resolution/frameworks/svelte.js.map +1 -0
  369. package/dist/resolution/frameworks/swift-objc.d.ts +37 -0
  370. package/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
  371. package/dist/resolution/frameworks/swift-objc.js +252 -0
  372. package/dist/resolution/frameworks/swift-objc.js.map +1 -0
  373. package/dist/resolution/frameworks/swift.d.ts +10 -0
  374. package/dist/resolution/frameworks/swift.d.ts.map +1 -0
  375. package/dist/resolution/frameworks/swift.js +400 -0
  376. package/dist/resolution/frameworks/swift.js.map +1 -0
  377. package/dist/resolution/frameworks/vue.d.ts +9 -0
  378. package/dist/resolution/frameworks/vue.d.ts.map +1 -0
  379. package/dist/resolution/frameworks/vue.js +306 -0
  380. package/dist/resolution/frameworks/vue.js.map +1 -0
  381. package/dist/resolution/go-module.d.ts +26 -0
  382. package/dist/resolution/go-module.d.ts.map +1 -0
  383. package/dist/resolution/go-module.js +78 -0
  384. package/dist/resolution/go-module.js.map +1 -0
  385. package/dist/resolution/import-resolver.d.ts +68 -0
  386. package/dist/resolution/import-resolver.d.ts.map +1 -0
  387. package/dist/resolution/import-resolver.js +1275 -0
  388. package/dist/resolution/import-resolver.js.map +1 -0
  389. package/dist/resolution/index.d.ts +117 -0
  390. package/dist/resolution/index.d.ts.map +1 -0
  391. package/dist/resolution/index.js +895 -0
  392. package/dist/resolution/index.js.map +1 -0
  393. package/dist/resolution/lru-cache.d.ts +24 -0
  394. package/dist/resolution/lru-cache.d.ts.map +1 -0
  395. package/dist/resolution/lru-cache.js +62 -0
  396. package/dist/resolution/lru-cache.js.map +1 -0
  397. package/dist/resolution/name-matcher.d.ts +32 -0
  398. package/dist/resolution/name-matcher.d.ts.map +1 -0
  399. package/dist/resolution/name-matcher.js +596 -0
  400. package/dist/resolution/name-matcher.js.map +1 -0
  401. package/dist/resolution/path-aliases.d.ts +68 -0
  402. package/dist/resolution/path-aliases.d.ts.map +1 -0
  403. package/dist/resolution/path-aliases.js +238 -0
  404. package/dist/resolution/path-aliases.js.map +1 -0
  405. package/dist/resolution/spec-link-resolver.d.ts +103 -0
  406. package/dist/resolution/spec-link-resolver.d.ts.map +1 -0
  407. package/dist/resolution/spec-link-resolver.js +259 -0
  408. package/dist/resolution/spec-link-resolver.js.map +1 -0
  409. package/dist/resolution/strip-comments.d.ts +27 -0
  410. package/dist/resolution/strip-comments.d.ts.map +1 -0
  411. package/dist/resolution/strip-comments.js +441 -0
  412. package/dist/resolution/strip-comments.js.map +1 -0
  413. package/dist/resolution/swift-objc-bridge.d.ts +134 -0
  414. package/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
  415. package/dist/resolution/swift-objc-bridge.js +256 -0
  416. package/dist/resolution/swift-objc-bridge.js.map +1 -0
  417. package/dist/resolution/types.d.ts +216 -0
  418. package/dist/resolution/types.d.ts.map +1 -0
  419. package/dist/resolution/types.js +8 -0
  420. package/dist/resolution/types.js.map +1 -0
  421. package/dist/resolution/workspace-packages.d.ts +48 -0
  422. package/dist/resolution/workspace-packages.d.ts.map +1 -0
  423. package/dist/resolution/workspace-packages.js +208 -0
  424. package/dist/resolution/workspace-packages.js.map +1 -0
  425. package/dist/search/query-parser.d.ts +57 -0
  426. package/dist/search/query-parser.d.ts.map +1 -0
  427. package/dist/search/query-parser.js +177 -0
  428. package/dist/search/query-parser.js.map +1 -0
  429. package/dist/search/query-utils.d.ts +71 -0
  430. package/dist/search/query-utils.d.ts.map +1 -0
  431. package/dist/search/query-utils.js +380 -0
  432. package/dist/search/query-utils.js.map +1 -0
  433. package/dist/server/cli.js +152 -0
  434. package/dist/server/index.js +12 -0
  435. package/dist/server/ingest/index.js +18 -0
  436. package/dist/server/ingest/ingestor.js +506 -0
  437. package/dist/server/ingest/parser.js +104 -0
  438. package/dist/server/ingest/pricing.js +78 -0
  439. package/dist/server/ingest/types.js +9 -0
  440. package/dist/server/ingest/watcher.js +77 -0
  441. package/dist/server/package.json +3 -0
  442. package/dist/server/project-registry.js +101 -0
  443. package/dist/server/routes/claude.js +868 -0
  444. package/dist/server/routes/graph.js +211 -0
  445. package/dist/server/routes/memory.js +272 -0
  446. package/dist/server/routes/projects.js +197 -0
  447. package/dist/server/routes/spec.js +265 -0
  448. package/dist/server/routes/status.js +112 -0
  449. package/dist/server/routes/workflow.js +212 -0
  450. package/dist/server/server.js +206 -0
  451. package/dist/server/static-handler.js +87 -0
  452. package/dist/sync/git-hooks.d.ts +45 -0
  453. package/dist/sync/git-hooks.d.ts.map +1 -0
  454. package/dist/sync/git-hooks.js +225 -0
  455. package/dist/sync/git-hooks.js.map +1 -0
  456. package/dist/sync/index.d.ts +19 -0
  457. package/dist/sync/index.d.ts.map +1 -0
  458. package/dist/sync/index.js +35 -0
  459. package/dist/sync/index.js.map +1 -0
  460. package/dist/sync/watch-policy.d.ts +48 -0
  461. package/dist/sync/watch-policy.d.ts.map +1 -0
  462. package/dist/sync/watch-policy.js +124 -0
  463. package/dist/sync/watch-policy.js.map +1 -0
  464. package/dist/sync/watcher.d.ts +283 -0
  465. package/dist/sync/watcher.d.ts.map +1 -0
  466. package/dist/sync/watcher.js +606 -0
  467. package/dist/sync/watcher.js.map +1 -0
  468. package/dist/sync/worktree.d.ts +54 -0
  469. package/dist/sync/worktree.d.ts.map +1 -0
  470. package/dist/sync/worktree.js +137 -0
  471. package/dist/sync/worktree.js.map +1 -0
  472. package/dist/types.d.ts +623 -0
  473. package/dist/types.d.ts.map +1 -0
  474. package/dist/types.js +108 -0
  475. package/dist/types.js.map +1 -0
  476. package/dist/ui/glyphs.d.ts +42 -0
  477. package/dist/ui/glyphs.d.ts.map +1 -0
  478. package/dist/ui/glyphs.js +78 -0
  479. package/dist/ui/glyphs.js.map +1 -0
  480. package/dist/ui/shimmer-progress.d.ts +11 -0
  481. package/dist/ui/shimmer-progress.d.ts.map +1 -0
  482. package/dist/ui/shimmer-progress.js +90 -0
  483. package/dist/ui/shimmer-progress.js.map +1 -0
  484. package/dist/ui/shimmer-worker.d.ts +2 -0
  485. package/dist/ui/shimmer-worker.d.ts.map +1 -0
  486. package/dist/ui/shimmer-worker.js +118 -0
  487. package/dist/ui/shimmer-worker.js.map +1 -0
  488. package/dist/ui/types.d.ts +17 -0
  489. package/dist/ui/types.d.ts.map +1 -0
  490. package/dist/ui/types.js +3 -0
  491. package/dist/ui/types.js.map +1 -0
  492. package/dist/utils.d.ts +205 -0
  493. package/dist/utils.d.ts.map +1 -0
  494. package/dist/utils.js +549 -0
  495. package/dist/utils.js.map +1 -0
  496. package/dist/web/chunk-2AJCHB7P.js +1 -0
  497. package/dist/web/chunk-2CPLUFCH.js +2 -0
  498. package/dist/web/chunk-2DHIGIOI.js +1 -0
  499. package/dist/web/chunk-2GBEK2GM.js +1 -0
  500. package/dist/web/chunk-2I7L37NS.js +1 -0
  501. package/dist/web/chunk-2NAWAJB5.js +1 -0
  502. package/dist/web/chunk-2OJBIPE4.js +1 -0
  503. package/dist/web/chunk-2OKMB4KX.js +2 -0
  504. package/dist/web/chunk-3E2WB6D5.js +1 -0
  505. package/dist/web/chunk-3EBFYSCH.js +2 -0
  506. package/dist/web/chunk-3QCQ4BXS.js +1 -0
  507. package/dist/web/chunk-3SEJX2BK.js +1 -0
  508. package/dist/web/chunk-42XVAQ6I.js +1 -0
  509. package/dist/web/chunk-4IMMPEYM.js +1 -0
  510. package/dist/web/chunk-4N5DWG46.js +1 -0
  511. package/dist/web/chunk-4TJQJPCZ.js +1 -0
  512. package/dist/web/chunk-4WZIHTPC.js +1 -0
  513. package/dist/web/chunk-4YVSYOSD.js +1 -0
  514. package/dist/web/chunk-5BQIOYKW.js +1 -0
  515. package/dist/web/chunk-5HGWHUJA.js +1 -0
  516. package/dist/web/chunk-5Y244R4G.js +1 -0
  517. package/dist/web/chunk-6RRDPT5Z.js +1 -0
  518. package/dist/web/chunk-6VKB2ZWM.js +1 -0
  519. package/dist/web/chunk-7DMFVTU4.js +1 -0
  520. package/dist/web/chunk-7RNS77UP.js +1 -0
  521. package/dist/web/chunk-7SMPKVEP.js +1 -0
  522. package/dist/web/chunk-AZJVTPLU.js +1 -0
  523. package/dist/web/chunk-BCZM5AXU.js +1 -0
  524. package/dist/web/chunk-BLBRMCN2.js +1 -0
  525. package/dist/web/chunk-BMIAXD2V.js +2 -0
  526. package/dist/web/chunk-BPECIDVO.js +1 -0
  527. package/dist/web/chunk-BUXWEHIY.js +1 -0
  528. package/dist/web/chunk-BYZFQSM6.js +1 -0
  529. package/dist/web/chunk-DA6SNNAF.js +1 -0
  530. package/dist/web/chunk-DLQPZWSI.css +1 -0
  531. package/dist/web/chunk-DTRN7FZR.js +1 -0
  532. package/dist/web/chunk-DYRFLPJA.js +1 -0
  533. package/dist/web/chunk-E3J3CXR5.js +1 -0
  534. package/dist/web/chunk-E44X4RH2.js +1 -0
  535. package/dist/web/chunk-E73OX2P7.js +1 -0
  536. package/dist/web/chunk-EAXRKDLV.js +1 -0
  537. package/dist/web/chunk-EBKKDHYI.js +1 -0
  538. package/dist/web/chunk-EE7V7Q5P.js +1 -0
  539. package/dist/web/chunk-EKY2FUHU.js +1 -0
  540. package/dist/web/chunk-EMGMOEVR.js +1 -0
  541. package/dist/web/chunk-EP6XOPXH.js +1 -0
  542. package/dist/web/chunk-ESGDLJOJ.js +1 -0
  543. package/dist/web/chunk-ETJG7NCY.js +1 -0
  544. package/dist/web/chunk-EUUEFEDI.js +1 -0
  545. package/dist/web/chunk-FGNZDHTL.js +11 -0
  546. package/dist/web/chunk-FIJW2UNJ.js +1 -0
  547. package/dist/web/chunk-FMV5PXRC.js +5 -0
  548. package/dist/web/chunk-G7VZT5KB.js +3 -0
  549. package/dist/web/chunk-GRZYXPSO.js +7 -0
  550. package/dist/web/chunk-GYGPS3AN.js +1 -0
  551. package/dist/web/chunk-H7AF7YS4.js +1 -0
  552. package/dist/web/chunk-HDZDQILN.js +1 -0
  553. package/dist/web/chunk-HMK6UO6N.js +1 -0
  554. package/dist/web/chunk-HZA6NEAB.js +1 -0
  555. package/dist/web/chunk-IHEE5NYJ.js +1 -0
  556. package/dist/web/chunk-ISNEBICW.js +1 -0
  557. package/dist/web/chunk-J2GZVLHH.js +1 -0
  558. package/dist/web/chunk-JFYVCXK3.js +1 -0
  559. package/dist/web/chunk-JN6W7HCN.js +17 -0
  560. package/dist/web/chunk-JT7P3DEK.js +6 -0
  561. package/dist/web/chunk-JTFXTIPE.js +903 -0
  562. package/dist/web/chunk-L37MTFSG.js +3 -0
  563. package/dist/web/chunk-LB6JPLX2.js +1 -0
  564. package/dist/web/chunk-LNSVDHCI.js +1 -0
  565. package/dist/web/chunk-LV4G6QFG.js +2 -0
  566. package/dist/web/chunk-LVGIY3SO.js +1 -0
  567. package/dist/web/chunk-LXLHIHEN.js +1 -0
  568. package/dist/web/chunk-MC4DFIHG.js +1 -0
  569. package/dist/web/chunk-MVOMVPYB.js +1 -0
  570. package/dist/web/chunk-N6SS4G6S.js +1 -0
  571. package/dist/web/chunk-NTBJG6SJ.js +1 -0
  572. package/dist/web/chunk-NUDB3Q2Y.js +3 -0
  573. package/dist/web/chunk-OXEF5E3E.js +1 -0
  574. package/dist/web/chunk-PDN6QYGJ.js +4 -0
  575. package/dist/web/chunk-PGGJPDJG.js +1 -0
  576. package/dist/web/chunk-PUYSJNJR.js +1 -0
  577. package/dist/web/chunk-Q2RVFS45.js +1 -0
  578. package/dist/web/chunk-Q7L6LLAK.js +1 -0
  579. package/dist/web/chunk-QCMKJIWY.js +1 -0
  580. package/dist/web/chunk-QH6CF3M3.js +1 -0
  581. package/dist/web/chunk-QQ5LD7PI.js +1 -0
  582. package/dist/web/chunk-QR6L3KAC.js +1 -0
  583. package/dist/web/chunk-R2DLK4HO.js +1 -0
  584. package/dist/web/chunk-R5W2MDZN.js +1 -0
  585. package/dist/web/chunk-RAAMPHPJ.js +1 -0
  586. package/dist/web/chunk-RD6TVPOT.js +1 -0
  587. package/dist/web/chunk-RKY4EJYJ.js +1 -0
  588. package/dist/web/chunk-RONYWVY7.js +1 -0
  589. package/dist/web/chunk-RXKXYF2C.js +1 -0
  590. package/dist/web/chunk-SBWU7JFC.js +1 -0
  591. package/dist/web/chunk-SEXBRGYK.js +1 -0
  592. package/dist/web/chunk-SHPTC4RL.js +1 -0
  593. package/dist/web/chunk-SUZYBYDW.js +1 -0
  594. package/dist/web/chunk-SWKJRNYY.js +1 -0
  595. package/dist/web/chunk-T66XVKGB.js +1 -0
  596. package/dist/web/chunk-T7AZ65JP.js +1 -0
  597. package/dist/web/chunk-TCZDVOHD.js +1 -0
  598. package/dist/web/chunk-TPTITA3V.js +1 -0
  599. package/dist/web/chunk-TR335633.js +1 -0
  600. package/dist/web/chunk-TWXZK6XM.js +1 -0
  601. package/dist/web/chunk-UR5KDXPX.js +1 -0
  602. package/dist/web/chunk-UR6O2GEH.js +1 -0
  603. package/dist/web/chunk-UTNMGWTP.js +1 -0
  604. package/dist/web/chunk-UYC52MBC.js +1 -0
  605. package/dist/web/chunk-VECWMHJP.js +1 -0
  606. package/dist/web/chunk-VUACT35R.js +3 -0
  607. package/dist/web/chunk-VZI7H4SZ.js +1 -0
  608. package/dist/web/chunk-WAI2JMZP.js +1 -0
  609. package/dist/web/chunk-WB6YHOD4.js +1 -0
  610. package/dist/web/chunk-WBT64AWV.js +1 -0
  611. package/dist/web/chunk-WDU3WICG.js +1 -0
  612. package/dist/web/chunk-WFXJIXZE.js +4 -0
  613. package/dist/web/chunk-WTGYRH3Z.js +298 -0
  614. package/dist/web/chunk-WXTCVDTP.js +1 -0
  615. package/dist/web/chunk-X2HTISHL.js +1 -0
  616. package/dist/web/chunk-XCDHWLVH.js +1 -0
  617. package/dist/web/chunk-Y3H6FFUZ.js +1 -0
  618. package/dist/web/chunk-Y4F5ULGJ.js +1 -0
  619. package/dist/web/chunk-YAWCRPHV.js +1 -0
  620. package/dist/web/chunk-YEGKAAEE.js +1 -0
  621. package/dist/web/chunk-YM2KU57F.js +1 -0
  622. package/dist/web/chunk-YRERBP6T.js +1 -0
  623. package/dist/web/chunk-ZLV4VCDG.js +3 -0
  624. package/dist/web/chunk-ZTVI5KFF.js +1 -0
  625. package/dist/web/favicon-16.png +0 -0
  626. package/dist/web/favicon-180.png +0 -0
  627. package/dist/web/favicon-32.png +0 -0
  628. package/dist/web/favicon-512.png +0 -0
  629. package/dist/web/favicon-small.svg +15 -0
  630. package/dist/web/favicon.ico +0 -0
  631. package/dist/web/favicon.svg +20 -0
  632. package/dist/web/index.html +145 -0
  633. package/dist/web/main-ESADRXN2.css +1 -0
  634. package/dist/web/main-WVI3YTDU.js +1 -0
  635. package/dist/web/media/codicon-LN6W7LCM.ttf +0 -0
  636. package/dist/web/styles-KSOPUVDA.css +1 -0
  637. package/dist/workflows/condition-evaluator.d.ts +75 -0
  638. package/dist/workflows/condition-evaluator.d.ts.map +1 -0
  639. package/dist/workflows/condition-evaluator.js +282 -0
  640. package/dist/workflows/condition-evaluator.js.map +1 -0
  641. package/dist/workflows/defaults/claude-design-implement.yaml +247 -0
  642. package/dist/workflows/defaults/index.d.ts +26 -0
  643. package/dist/workflows/defaults/index.d.ts.map +1 -0
  644. package/dist/workflows/defaults/index.js +94 -0
  645. package/dist/workflows/defaults/index.js.map +1 -0
  646. package/dist/workflows/defaults/spec-author.yaml +214 -0
  647. package/dist/workflows/defaults/spec-fix.yaml +110 -0
  648. package/dist/workflows/defaults/spec-implement.yaml +150 -0
  649. package/dist/workflows/defaults/spec-relink.yaml +81 -0
  650. package/dist/workflows/defaults/spec-verify.yaml +51 -0
  651. package/dist/workflows/discovery.d.ts +46 -0
  652. package/dist/workflows/discovery.d.ts.map +1 -0
  653. package/dist/workflows/discovery.js +193 -0
  654. package/dist/workflows/discovery.js.map +1 -0
  655. package/dist/workflows/executor.d.ts +83 -0
  656. package/dist/workflows/executor.d.ts.map +1 -0
  657. package/dist/workflows/executor.js +624 -0
  658. package/dist/workflows/executor.js.map +1 -0
  659. package/dist/workflows/runners/approval.d.ts +18 -0
  660. package/dist/workflows/runners/approval.d.ts.map +1 -0
  661. package/dist/workflows/runners/approval.js +34 -0
  662. package/dist/workflows/runners/approval.js.map +1 -0
  663. package/dist/workflows/runners/bash.d.ts +13 -0
  664. package/dist/workflows/runners/bash.d.ts.map +1 -0
  665. package/dist/workflows/runners/bash.js +143 -0
  666. package/dist/workflows/runners/bash.js.map +1 -0
  667. package/dist/workflows/runners/cancel.d.ts +10 -0
  668. package/dist/workflows/runners/cancel.d.ts.map +1 -0
  669. package/dist/workflows/runners/cancel.js +19 -0
  670. package/dist/workflows/runners/cancel.js.map +1 -0
  671. package/dist/workflows/runners/prompt.d.ts +28 -0
  672. package/dist/workflows/runners/prompt.d.ts.map +1 -0
  673. package/dist/workflows/runners/prompt.js +212 -0
  674. package/dist/workflows/runners/prompt.js.map +1 -0
  675. package/dist/workflows/runners/script.d.ts +17 -0
  676. package/dist/workflows/runners/script.d.ts.map +1 -0
  677. package/dist/workflows/runners/script.js +155 -0
  678. package/dist/workflows/runners/script.js.map +1 -0
  679. package/dist/workflows/runners/types.d.ts +51 -0
  680. package/dist/workflows/runners/types.d.ts.map +1 -0
  681. package/dist/workflows/runners/types.js +13 -0
  682. package/dist/workflows/runners/types.js.map +1 -0
  683. package/dist/workflows/schemas/workflow.d.ts +166 -0
  684. package/dist/workflows/schemas/workflow.d.ts.map +1 -0
  685. package/dist/workflows/schemas/workflow.js +437 -0
  686. package/dist/workflows/schemas/workflow.js.map +1 -0
  687. package/package.json +1 -1
  688. package/scripts/offline-install.sh +19 -6
  689. /package/commands/{cg-explore.md → ss-explore.md} +0 -0
  690. /package/commands/{cg-impact.md → ss-impact.md} +0 -0
  691. /package/commands/{cg-relink.md → ss-relink.md} +0 -0
  692. /package/commands/{cg-spec.md → ss-spec.md} +0 -0
  693. /package/commands/{cg-sync.md → ss-sync.md} +0 -0
  694. /package/commands/{cg-trace.md → ss-trace.md} +0 -0
package/README.md CHANGED
@@ -101,7 +101,7 @@ A YAML workflow engine (`specship workflow run <name>`) drives the agent through
101
101
  - `spec-verify` — run tests, promote `implemented` links to `verified`
102
102
  - `spec-relink` — re-attach an orphan after a refactor
103
103
 
104
- Customize by dropping your own `<project>/.specship/workflows/<name>.yaml` (project tier overrides bundled defaults). The matching slash commands `/cg-spec`, `/cg-implement`, `/cg-drifted`, `/cg-fix`, `/cg-relink` are installed into Claude Code by `specship install`.
104
+ Customize by dropping your own `<project>/.specship/workflows/<name>.yaml` (project tier overrides bundled defaults). The matching slash commands `/ss-spec`, `/ss-implement`, `/ss-drifted`, `/ss-fix`, `/ss-relink` are installed into Claude Code by `specship install`.
105
105
 
106
106
  ---
107
107
 
@@ -156,7 +156,7 @@ The handful of cases where manual `specship sync` makes sense: the watcher is di
156
156
 
157
157
  `specship serve --ui` boots a single-process Fastify + Angular SPA on `http://127.0.0.1:4242/`. One port serves both the API and the desktop UI. No Electron, no auth — loopback only.
158
158
 
159
- ![SpecShip Desktop dashboard — stat tiles, recent neighborhood mini-graph, tips, tool-call heatmap and recent-prompt rollup at a glance](assets/screenshots/dashboard.png?v=1)
159
+ ![SpecShip Desktop dashboard — stat tiles, recent neighborhood mini-graph, tips, tool-call heatmap and recent-prompt rollup at a glance](https://raw.githubusercontent.com/selvakumarEsra/specship/main/assets/screenshots/dashboard.png?v=1)
160
160
 
161
161
  The dashboard is designed to answer four questions in one glance — **what is the structural state of my codebase, what needs attention, what did my last session cost, and what should I do about it.** The zones, top-to-bottom:
162
162
 
@@ -0,0 +1,79 @@
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-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
+ Run the bundled `claude-design-implement` workflow against the Claude Design URL in `$ARGUMENTS`. The workflow:
10
+
11
+ 1. **Snapshots** the design source byte-for-byte into `specs/<slug>/snapshot.html` (zero-loss fidelity layer).
12
+ 2. **Records the import** in `specs/<slug>/source.md` (audit trail — URL, project ID, date, original prompt verbatim).
13
+ 3. **Extracts design tokens** into `specs/<slug>/tokens.css`, mapped onto your project's existing token system where possible.
14
+ 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).
15
+ 5. **Pauses at an approval gate** for you to walk the `[needs review]` markers and gap-fill questions.
16
+ 6. **Writes the spec** and `specship sync`s it into the graph.
17
+ 7. **Hands off** with the next command: `/ss-implement <first REQ ID>`.
18
+
19
+ ## How to invoke
20
+
21
+ Parse `$ARGUMENTS`. The first token must be a Claude Design URL of the form:
22
+
23
+ ```
24
+ https://claude.ai/design/p/<project-id>/?file=<File+Name>.html
25
+ ```
26
+
27
+ 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`).
28
+
29
+ Then run:
30
+
31
+ ```bash
32
+ specship workflow run claude-design-implement \
33
+ --input CONNECTOR_URL="<URL>" \
34
+ --input FILE_LABEL="<File Name>" \
35
+ --input SLUG="<slug>"
36
+ ```
37
+
38
+ (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.)
39
+
40
+ ## Why the four-file pattern
41
+
42
+ The workflow produces four files in `specs/<slug>/` rather than a single spec. This is deliberate:
43
+
44
+ | File | Role | Drift-tracked? |
45
+ |---|---|---|
46
+ | `snapshot.html` | Byte-for-byte design capture | No (frozen reference) |
47
+ | `source.md` | Import audit record | No (metadata) |
48
+ | `tokens.css` | Design tokens — CSS variables | No (reference data) |
49
+ | `specs/<slug>.md` | Contract: REQs, acceptance criteria | **Yes — drift gate on this** |
50
+
51
+ 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.
52
+
53
+ ## After the workflow finishes
54
+
55
+ You get a hand-off message listing the REQs. Run:
56
+
57
+ ```
58
+ /ss-implement <REQ-XXX-001>
59
+ ```
60
+
61
+ The implementation phase reads:
62
+ - `specs/<slug>.md` for what to build
63
+ - `specs/<slug>/snapshot.html` for how it should look
64
+ - `specs/<slug>/tokens.css` for which design tokens to wire up
65
+
66
+ 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.
67
+
68
+ ## When the designer iterates
69
+
70
+ 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.
71
+
72
+ ## Anti-patterns
73
+
74
+ - **Don't put hex codes in the spec.** Reference tokens by name. The values live in `tokens.css`.
75
+ - **Don't delete the snapshot after implementation.** It's the durable reference if the Claude Design URL ever goes 404.
76
+ - **Don't paraphrase the snapshot.** Save byte-for-byte. Summarising loses detail that the implementation step would otherwise have used.
77
+ - **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).
78
+
79
+ If `$ARGUMENTS` is empty or doesn't look like a Claude Design URL, ask the user for the URL before running the workflow.
@@ -17,7 +17,7 @@ specship drifted $ARGUMENTS
17
17
  Add `--fail-on=broken,drifted,orphaned` to make it exit non-zero — useful as a pre-commit or CI gate.
18
18
 
19
19
  For each link returned:
20
- - **drifted (drift_axis=spec)**: spec body changed; the code may be stale. Run `/cg-fix <SPEC_ID>` to investigate.
20
+ - **drifted (drift_axis=spec)**: spec body changed; the code may be stale. Run `/ss-fix <SPEC_ID>` to investigate.
21
21
  - **drifted (drift_axis=code)**: code's signature changed since the link was set. Re-verify with `mcp__specship__specship_link_verify` if behavior is still correct.
22
22
  - **broken**: verification failed. Open the spec, find the failing test, fix the code.
23
- - **orphaned**: target symbol no longer exists. Use `/cg-relink <SPEC_ID>` to re-attach.
23
+ - **orphaned**: target symbol no longer exists. Use `/ss-relink <SPEC_ID>` to re-attach.
@@ -18,4 +18,4 @@ This:
18
18
  3. Pauses for you to approve the proposed fix.
19
19
  4. Applies the fix, runs tests, calls `specship_link_verify` to promote the link back to "verified".
20
20
 
21
- Use `/cg-relink` instead if the link is `orphaned` (target symbol no longer exists).
21
+ Use `/ss-relink` instead if the link is `orphaned` (target symbol no longer exists).
@@ -18,6 +18,6 @@ This:
18
18
  3. PAUSES at an approval gate — you review the plan, then run `specship workflow approve <runId>` and `specship workflow resume <runId>`.
19
19
  4. Implements, runs tests, asserts spec→code links, pauses for a final review.
20
20
 
21
- If you just want to view the spec without implementing, use `/cg-spec` instead.
21
+ If you just want to view the spec without implementing, use `/ss-spec` instead.
22
22
 
23
23
  After the workflow completes, the worktree is left for inspection — merge it into your branch when ready, or clean up with `specship workflow cancel <runId>`.
@@ -0,0 +1,43 @@
1
+ ---
2
+ description: Draft a new SpecShip spec from a one-line feature description. Walks gap-filling questions, runs a quality review, writes the file.
3
+ argument-hint: <one-line feature description>
4
+ allowed-tools: Read, Write, Edit, Bash, mcp__specship__specship_explore, mcp__specship__specship_search, mcp__specship__specship_node, mcp__specship__specship_files, mcp__specship__specship_spec
5
+ ---
6
+
7
+ # SpecShip Author Spec: `$ARGUMENTS`
8
+
9
+ Author a new spec for the feature `$ARGUMENTS` using the `spec-author` skill loop. Read the skill first if you haven't already — it lives at `~/.claude/skills/spec-author/SKILL.md` with references for format, quality rubric, gap-filling questions, and the review checklist.
10
+
11
+ Run the loop conversationally:
12
+
13
+ 1. **Scope check.** Confirm whether this is one requirement under an existing doc, a new document with N children, or a refinement of a draft the user already has. Refuse "spec the whole app" — pick a feature area.
14
+
15
+ 2. **Ground in code.** Call `mcp__specship__specship_explore` on terms drawn from `$ARGUMENTS` to find where similar features live, what conventions to mirror, and which files the implementation will likely touch. Skip for clearly-greenfield work.
16
+
17
+ 3. **Draft.** Produce a complete spec body in memory following `~/.claude/skills/spec-author/references/format.md`:
18
+ - YAML frontmatter (id, title, owner, priority)
19
+ - Embedded `<!-- id: -->` markers above every heading
20
+ - RFC 2119 keyword (MUST/SHOULD/MAY) in each requirement title
21
+ - One concern per requirement
22
+ - `## Acceptance` with `.A<N>`-ID'd bullets, happy + failure paths
23
+ - Optional `implementations:` block populated from grounding
24
+ - `[needs user confirmation]` markers wherever the description didn't tell you something
25
+
26
+ 4. **Gap-fill.** Walk `~/.claude/skills/spec-author/references/gap-questions.md` against the draft and ask the user the 3–5 most important unanswered questions. Mark the rest as `[needs review]`. Phrase questions so they can answer in one line each.
27
+
28
+ 5. **Review.** Run `~/.claude/skills/spec-author/references/review-checklist.md` and surface a numbered findings list. Be sharp.
29
+
30
+ 6. **Write.** Use the `Write` tool against `specs/<slug>.md` at the project root. Slug is kebab-case from the feature name, NO date prefix. If a file with that name exists, APPEND the new REQs to it rather than overwriting; tell the user.
31
+
32
+ 7. **Hand off.** Tell the user:
33
+ - The file path you wrote
34
+ - Run `specship sync` to index it
35
+ - Run `/ss-implement <REQ-ID>` when ready to build
36
+
37
+ If the user wants the more disciplined path with formal approval gates and worktree isolation, point them at:
38
+
39
+ ```
40
+ specship workflow run spec-author --input DESCRIPTION="$ARGUMENTS"
41
+ ```
42
+
43
+ But the default for this slash command is the conversational loop above — lighter weight, no workflow overhead.
@@ -0,0 +1,48 @@
1
+ ---
2
+ description: Review an existing spec against the SpecShip quality rubric. Read-only — produces a numbered findings list without modifying the file.
3
+ argument-hint: <SPEC_ID | path/to/spec.md>
4
+ allowed-tools: Read, mcp__specship__specship_spec, mcp__specship__specship_explore, mcp__specship__specship_node, mcp__specship__specship_search
5
+ ---
6
+
7
+ # SpecShip Review Spec: `$ARGUMENTS`
8
+
9
+ Review the spec referred to by `$ARGUMENTS` (either a spec ID like `REQ-AUTH-005`, or a file path like `specs/auth.md`) against the rubric defined in the `spec-author` skill. **This is read-only — do NOT modify any files.**
10
+
11
+ If you haven't loaded the skill yet, read `~/.claude/skills/spec-author/SKILL.md` and especially `~/.claude/skills/spec-author/references/review-checklist.md`.
12
+
13
+ ## How to do it
14
+
15
+ 1. **Resolve the target.** If `$ARGUMENTS` looks like a spec ID, call `mcp__specship__specship_spec` to fetch its source path. If it looks like a file path, read the file directly.
16
+
17
+ 2. **Verify code grounding** (when applicable). For each entry in the spec's `implementations:` block, confirm via `mcp__specship__specship_node` or `mcp__specship__specship_explore` that the referenced file + symbol actually exists. Greenfield specs (empty `implementations:`) skip this step.
18
+
19
+ 3. **Run the checklist.** Walk `references/review-checklist.md` in order:
20
+ - **STRUCTURAL** (S1–S5): embedded ID markers, no stranded IDs, unique IDs, well-formed frontmatter, valid `implementations:` syntax. These block the file from indexing — flag any breakage as critical.
21
+ - **QUALITY** (Q1–Q7): RFC 2119 keywords, no weasel words, no implementation leak, testable acceptance, one concern per REQ, failure-path coverage, grounded `implementations:` paths.
22
+ - **HYGIENE** (H1–H4): owner + priority set, no stale `[needs review]` markers, no TODO/FIXME, body conciseness.
23
+
24
+ 4. **Output as a numbered findings list**, grouped by category:
25
+
26
+ ```
27
+ STRUCTURAL — N findings:
28
+ 1. Line N: ...
29
+
30
+ QUALITY — N findings:
31
+ 1. Line N: ...
32
+
33
+ HYGIENE — N findings:
34
+ 1. Line N: ...
35
+
36
+ Net: <summary>. Address structural items before re-indexing.
37
+ ```
38
+
39
+ 5. **End with a one-line verdict**: "Spec is ready to ship", "Needs the structural fixes before it can index", or "Has quality issues worth addressing before /ss-implement runs."
40
+
41
+ ## Anti-patterns to avoid
42
+
43
+ - **Don't modify the file.** Even if the issues are obvious. The user runs `/ss-spec-author` for that flow.
44
+ - **Don't paraphrase the checklist.** Reference specific items (S1, Q3, etc.) when you flag a finding so the user can cross-reference.
45
+ - **Don't be polite about real problems.** Implementation leak ("MUST use bcrypt") and untestable bullets ("handles errors gracefully") are pickup-line-quality findings — say so directly.
46
+ - **Don't review the wrong file.** If the path is ambiguous (e.g. multiple specs at similar paths), ask the user which one before reading.
47
+
48
+ If `$ARGUMENTS` is empty, ask the user which spec to review (by ID or path).
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Node.js version compatibility check.
3
+ *
4
+ * Node 25.x has a V8 turboshaft WASM JIT Zone allocator bug that
5
+ * reliably crashes SpecShip with `Fatal process out of memory: Zone`
6
+ * during tree-sitter grammar compilation. This module owns the
7
+ * user-facing banner shown before exit. Kept side-effect-free so it's
8
+ * safe to import from tests without triggering CLI bootstrap.
9
+ */
10
+ /**
11
+ * Build the bordered banner shown when SpecShip detects an
12
+ * unsupported Node.js major version (currently 25+). Pinned via unit
13
+ * test so the recovery commands and override instructions can't be
14
+ * silently stripped by future edits.
15
+ *
16
+ * Uses ASCII glyphs to stay readable on Windows OEM-codepage consoles
17
+ * (see ../ui/glyphs.ts for the rationale).
18
+ */
19
+ export declare function buildNode25BlockBanner(nodeVersion: string): string;
20
+ /**
21
+ * Lowest supported Node.js major version. Matches the `engines` floor in
22
+ * package.json. Below this, SpecShip relies on language features / native APIs
23
+ * that aren't present, and the combination is untested. `engines` alone only
24
+ * *warns* on install (unless the user set `engine-strict`), so the CLI bootstrap
25
+ * also hard-blocks here to actually enforce the floor.
26
+ */
27
+ export declare const MIN_NODE_MAJOR = 20;
28
+ /**
29
+ * Build the bordered banner shown when SpecShip detects a Node.js major below
30
+ * {@link MIN_NODE_MAJOR}. Pinned via unit test so the recovery commands and the
31
+ * override env var can't be silently stripped by future edits.
32
+ *
33
+ * Uses ASCII glyphs to stay readable on Windows OEM-codepage consoles
34
+ * (see ../ui/glyphs.ts for the rationale).
35
+ */
36
+ export declare function buildNodeTooOldBanner(nodeVersion: string): string;
37
+ //# sourceMappingURL=node-version-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-version-check.d.ts","sourceRoot":"","sources":["../../src/bin/node-version-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAmBlE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAkBjE"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ /**
3
+ * Node.js version compatibility check.
4
+ *
5
+ * Node 25.x has a V8 turboshaft WASM JIT Zone allocator bug that
6
+ * reliably crashes SpecShip with `Fatal process out of memory: Zone`
7
+ * during tree-sitter grammar compilation. This module owns the
8
+ * user-facing banner shown before exit. Kept side-effect-free so it's
9
+ * safe to import from tests without triggering CLI bootstrap.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MIN_NODE_MAJOR = void 0;
13
+ exports.buildNode25BlockBanner = buildNode25BlockBanner;
14
+ exports.buildNodeTooOldBanner = buildNodeTooOldBanner;
15
+ /**
16
+ * Build the bordered banner shown when SpecShip detects an
17
+ * unsupported Node.js major version (currently 25+). Pinned via unit
18
+ * test so the recovery commands and override instructions can't be
19
+ * silently stripped by future edits.
20
+ *
21
+ * Uses ASCII glyphs to stay readable on Windows OEM-codepage consoles
22
+ * (see ../ui/glyphs.ts for the rationale).
23
+ */
24
+ function buildNode25BlockBanner(nodeVersion) {
25
+ const sep = '-'.repeat(72);
26
+ return [
27
+ sep,
28
+ `[SpecShip] Unsupported Node.js version: ${nodeVersion}`,
29
+ sep,
30
+ 'Node.js 25.x has a V8 WASM JIT (turboshaft) Zone allocator bug that',
31
+ 'crashes with `Fatal process out of memory: Zone` when SpecShip',
32
+ 'compiles tree-sitter grammars. SpecShip WILL crash on this Node',
33
+ 'version mid-indexing. See https://github.com/selvakumarEsra/specship/issues/81',
34
+ '',
35
+ 'Fix: install Node.js 22 LTS:',
36
+ ' nvm install 22 && nvm use 22 # nvm',
37
+ ' brew install node@22 && brew link --overwrite --force node@22 # Homebrew',
38
+ '',
39
+ 'To override (NOT recommended - you will likely OOM):',
40
+ ' SPECSHIP_ALLOW_UNSAFE_NODE=1 specship ...',
41
+ sep,
42
+ ].join('\n');
43
+ }
44
+ /**
45
+ * Lowest supported Node.js major version. Matches the `engines` floor in
46
+ * package.json. Below this, SpecShip relies on language features / native APIs
47
+ * that aren't present, and the combination is untested. `engines` alone only
48
+ * *warns* on install (unless the user set `engine-strict`), so the CLI bootstrap
49
+ * also hard-blocks here to actually enforce the floor.
50
+ */
51
+ exports.MIN_NODE_MAJOR = 20;
52
+ /**
53
+ * Build the bordered banner shown when SpecShip detects a Node.js major below
54
+ * {@link MIN_NODE_MAJOR}. Pinned via unit test so the recovery commands and the
55
+ * override env var can't be silently stripped by future edits.
56
+ *
57
+ * Uses ASCII glyphs to stay readable on Windows OEM-codepage consoles
58
+ * (see ../ui/glyphs.ts for the rationale).
59
+ */
60
+ function buildNodeTooOldBanner(nodeVersion) {
61
+ const sep = '-'.repeat(72);
62
+ return [
63
+ sep,
64
+ `[SpecShip] Unsupported Node.js version: ${nodeVersion}`,
65
+ sep,
66
+ `SpecShip requires Node.js ${exports.MIN_NODE_MAJOR} or newer. Older versions lack`,
67
+ 'language features and native APIs SpecShip depends on, and are not',
68
+ 'tested or supported.',
69
+ '',
70
+ 'Fix: install Node.js 22 LTS:',
71
+ ' nvm install 22 && nvm use 22 # nvm',
72
+ ' brew install node@22 && brew link --overwrite --force node@22 # Homebrew',
73
+ '',
74
+ 'To override (NOT recommended - unsupported):',
75
+ ' SPECSHIP_ALLOW_UNSAFE_NODE=1 specship ...',
76
+ sep,
77
+ ].join('\n');
78
+ }
79
+ //# sourceMappingURL=node-version-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-version-check.js","sourceRoot":"","sources":["../../src/bin/node-version-check.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAWH,wDAmBC;AAmBD,sDAkBC;AAjED;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAAC,WAAmB;IACxD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,OAAO;QACL,GAAG;QACH,2CAA2C,WAAW,EAAE;QACxD,GAAG;QACH,qEAAqE;QACrE,gEAAgE;QAChE,iEAAiE;QACjE,gFAAgF;QAChF,EAAE;QACF,8BAA8B;QAC9B,+DAA+D;QAC/D,6EAA6E;QAC7E,EAAE;QACF,sDAAsD;QACtD,6CAA6C;QAC7C,GAAG;KACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,EAAE,CAAC;AAEjC;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CAAC,WAAmB;IACvD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,OAAO;QACL,GAAG;QACH,2CAA2C,WAAW,EAAE;QACxD,GAAG;QACH,6BAA6B,sBAAc,gCAAgC;QAC3E,oEAAoE;QACpE,sBAAsB;QACtB,EAAE;QACF,8BAA8B;QAC9B,+DAA+D;QAC/D,6EAA6E;QAC7E,EAAE;QACF,8CAA8C;QAC9C,6CAA6C;QAC7C,GAAG;KACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * SpecShip CLI
4
+ *
5
+ * Command-line interface for SpecShip code intelligence.
6
+ *
7
+ * Usage:
8
+ * specship Run interactive installer (when no args)
9
+ * specship install Run interactive installer
10
+ * specship uninstall Remove SpecShip from your agents
11
+ * specship init [path] Initialize SpecShip in a project
12
+ * specship uninit [path] Remove SpecShip from a project
13
+ * specship index [path] Index all files in the project
14
+ * specship sync [path] Sync changes since last index
15
+ * specship status [path] Show index status
16
+ * specship query <search> Search for symbols
17
+ * specship files [options] Show project file structure
18
+ * specship context <task> Build context for a task
19
+ * specship callers <symbol> Find what calls a function/method
20
+ * specship callees <symbol> Find what a function/method calls
21
+ * specship impact <symbol> Analyze what code is affected by changing a symbol
22
+ * specship affected [files] Find test files affected by changes
23
+ */
24
+ export {};
25
+ //# sourceMappingURL=specship.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specship.d.ts","sourceRoot":"","sources":["../../src/bin/specship.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG"}