@kynetic-ai/spec 0.1.2 → 0.4.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 (540) hide show
  1. package/README.md +250 -17
  2. package/dist/acp/client.d.ts +18 -4
  3. package/dist/acp/client.d.ts.map +1 -1
  4. package/dist/acp/client.js +44 -26
  5. package/dist/acp/client.js.map +1 -1
  6. package/dist/acp/framing.d.ts +2 -2
  7. package/dist/acp/framing.d.ts.map +1 -1
  8. package/dist/acp/framing.js +37 -29
  9. package/dist/acp/framing.js.map +1 -1
  10. package/dist/acp/index.d.ts +6 -7
  11. package/dist/acp/index.d.ts.map +1 -1
  12. package/dist/acp/index.js +3 -3
  13. package/dist/acp/index.js.map +1 -1
  14. package/dist/acp/types.d.ts +5 -5
  15. package/dist/acp/types.d.ts.map +1 -1
  16. package/dist/acp/types.js +18 -18
  17. package/dist/acp/types.js.map +1 -1
  18. package/dist/agents/adapters.d.ts.map +1 -1
  19. package/dist/agents/adapters.js +24 -13
  20. package/dist/agents/adapters.js.map +1 -1
  21. package/dist/agents/index.d.ts +2 -2
  22. package/dist/agents/index.js +2 -2
  23. package/dist/agents/spawner.d.ts +4 -4
  24. package/dist/agents/spawner.d.ts.map +1 -1
  25. package/dist/agents/spawner.js +6 -6
  26. package/dist/agents/spawner.js.map +1 -1
  27. package/dist/cli/batch-context.d.ts +43 -0
  28. package/dist/cli/batch-context.d.ts.map +1 -0
  29. package/dist/cli/batch-context.js +93 -0
  30. package/dist/cli/batch-context.js.map +1 -0
  31. package/dist/cli/batch-exec.d.ts +107 -0
  32. package/dist/cli/batch-exec.d.ts.map +1 -0
  33. package/dist/cli/batch-exec.js +706 -0
  34. package/dist/cli/batch-exec.js.map +1 -0
  35. package/dist/cli/batch.d.ts +4 -2
  36. package/dist/cli/batch.d.ts.map +1 -1
  37. package/dist/cli/batch.js +15 -14
  38. package/dist/cli/batch.js.map +1 -1
  39. package/dist/cli/command-annotations.d.ts +23 -0
  40. package/dist/cli/command-annotations.d.ts.map +1 -0
  41. package/dist/cli/command-annotations.js +27 -0
  42. package/dist/cli/command-annotations.js.map +1 -0
  43. package/dist/cli/commands/agents.d.ts +46 -0
  44. package/dist/cli/commands/agents.d.ts.map +1 -0
  45. package/dist/cli/commands/agents.js +377 -0
  46. package/dist/cli/commands/agents.js.map +1 -0
  47. package/dist/cli/commands/batch.d.ts +20 -0
  48. package/dist/cli/commands/batch.d.ts.map +1 -0
  49. package/dist/cli/commands/batch.js +214 -0
  50. package/dist/cli/commands/batch.js.map +1 -0
  51. package/dist/cli/commands/clone-for-testing.d.ts +1 -1
  52. package/dist/cli/commands/clone-for-testing.d.ts.map +1 -1
  53. package/dist/cli/commands/clone-for-testing.js +37 -47
  54. package/dist/cli/commands/clone-for-testing.js.map +1 -1
  55. package/dist/cli/commands/derive.d.ts +1 -1
  56. package/dist/cli/commands/derive.d.ts.map +1 -1
  57. package/dist/cli/commands/derive.js +141 -88
  58. package/dist/cli/commands/derive.js.map +1 -1
  59. package/dist/cli/commands/doctor.d.ts +11 -0
  60. package/dist/cli/commands/doctor.d.ts.map +1 -0
  61. package/dist/cli/commands/doctor.js +152 -0
  62. package/dist/cli/commands/doctor.js.map +1 -0
  63. package/dist/cli/commands/export.d.ts +12 -0
  64. package/dist/cli/commands/export.d.ts.map +1 -0
  65. package/dist/cli/commands/export.js +134 -0
  66. package/dist/cli/commands/export.js.map +1 -0
  67. package/dist/cli/commands/help.d.ts +1 -1
  68. package/dist/cli/commands/help.d.ts.map +1 -1
  69. package/dist/cli/commands/help.js +163 -37
  70. package/dist/cli/commands/help.js.map +1 -1
  71. package/dist/cli/commands/inbox.d.ts +1 -1
  72. package/dist/cli/commands/inbox.d.ts.map +1 -1
  73. package/dist/cli/commands/inbox.js +178 -56
  74. package/dist/cli/commands/inbox.js.map +1 -1
  75. package/dist/cli/commands/index.d.ts +31 -19
  76. package/dist/cli/commands/index.d.ts.map +1 -1
  77. package/dist/cli/commands/index.js +31 -19
  78. package/dist/cli/commands/index.js.map +1 -1
  79. package/dist/cli/commands/init.d.ts +5 -1
  80. package/dist/cli/commands/init.d.ts.map +1 -1
  81. package/dist/cli/commands/init.js +108 -57
  82. package/dist/cli/commands/init.js.map +1 -1
  83. package/dist/cli/commands/item.d.ts +1 -1
  84. package/dist/cli/commands/item.d.ts.map +1 -1
  85. package/dist/cli/commands/item.js +557 -274
  86. package/dist/cli/commands/item.js.map +1 -1
  87. package/dist/cli/commands/link.d.ts +1 -1
  88. package/dist/cli/commands/link.d.ts.map +1 -1
  89. package/dist/cli/commands/link.js +55 -46
  90. package/dist/cli/commands/link.js.map +1 -1
  91. package/dist/cli/commands/log.d.ts +1 -1
  92. package/dist/cli/commands/log.d.ts.map +1 -1
  93. package/dist/cli/commands/log.js +58 -51
  94. package/dist/cli/commands/log.js.map +1 -1
  95. package/dist/cli/commands/merge-driver.d.ts +19 -0
  96. package/dist/cli/commands/merge-driver.d.ts.map +1 -0
  97. package/dist/cli/commands/merge-driver.js +398 -0
  98. package/dist/cli/commands/merge-driver.js.map +1 -0
  99. package/dist/cli/commands/meta.d.ts +1 -1
  100. package/dist/cli/commands/meta.d.ts.map +1 -1
  101. package/dist/cli/commands/meta.js +534 -399
  102. package/dist/cli/commands/meta.js.map +1 -1
  103. package/dist/cli/commands/module.d.ts +1 -1
  104. package/dist/cli/commands/module.d.ts.map +1 -1
  105. package/dist/cli/commands/module.js +30 -25
  106. package/dist/cli/commands/module.js.map +1 -1
  107. package/dist/cli/commands/plan-import.d.ts +11 -0
  108. package/dist/cli/commands/plan-import.d.ts.map +1 -0
  109. package/dist/cli/commands/plan-import.js +547 -0
  110. package/dist/cli/commands/plan-import.js.map +1 -0
  111. package/dist/cli/commands/plan.d.ts +10 -0
  112. package/dist/cli/commands/plan.d.ts.map +1 -0
  113. package/dist/cli/commands/plan.js +421 -0
  114. package/dist/cli/commands/plan.js.map +1 -0
  115. package/dist/cli/commands/ralph.d.ts +1 -1
  116. package/dist/cli/commands/ralph.d.ts.map +1 -1
  117. package/dist/cli/commands/ralph.js +1109 -170
  118. package/dist/cli/commands/ralph.js.map +1 -1
  119. package/dist/cli/commands/refs.d.ts +13 -0
  120. package/dist/cli/commands/refs.d.ts.map +1 -0
  121. package/dist/cli/commands/refs.js +283 -0
  122. package/dist/cli/commands/refs.js.map +1 -0
  123. package/dist/cli/commands/search.d.ts +1 -1
  124. package/dist/cli/commands/search.d.ts.map +1 -1
  125. package/dist/cli/commands/search.js +199 -37
  126. package/dist/cli/commands/search.js.map +1 -1
  127. package/dist/cli/commands/serve.d.ts +10 -0
  128. package/dist/cli/commands/serve.d.ts.map +1 -0
  129. package/dist/cli/commands/serve.js +491 -0
  130. package/dist/cli/commands/serve.js.map +1 -0
  131. package/dist/cli/commands/session.d.ts +25 -6
  132. package/dist/cli/commands/session.d.ts.map +1 -1
  133. package/dist/cli/commands/session.js +810 -127
  134. package/dist/cli/commands/session.js.map +1 -1
  135. package/dist/cli/commands/setup-seeding.d.ts +81 -0
  136. package/dist/cli/commands/setup-seeding.d.ts.map +1 -0
  137. package/dist/cli/commands/setup-seeding.js +292 -0
  138. package/dist/cli/commands/setup-seeding.js.map +1 -0
  139. package/dist/cli/commands/setup.d.ts +77 -3
  140. package/dist/cli/commands/setup.d.ts.map +1 -1
  141. package/dist/cli/commands/setup.js +1267 -274
  142. package/dist/cli/commands/setup.js.map +1 -1
  143. package/dist/cli/commands/shadow.d.ts +1 -1
  144. package/dist/cli/commands/shadow.d.ts.map +1 -1
  145. package/dist/cli/commands/shadow.js +70 -50
  146. package/dist/cli/commands/shadow.js.map +1 -1
  147. package/dist/cli/commands/skill-crud.d.ts +58 -0
  148. package/dist/cli/commands/skill-crud.d.ts.map +1 -0
  149. package/dist/cli/commands/skill-crud.js +753 -0
  150. package/dist/cli/commands/skill-crud.js.map +1 -0
  151. package/dist/cli/commands/skill-diff.d.ts +27 -0
  152. package/dist/cli/commands/skill-diff.d.ts.map +1 -0
  153. package/dist/cli/commands/skill-diff.js +840 -0
  154. package/dist/cli/commands/skill-diff.js.map +1 -0
  155. package/dist/cli/commands/skill-install.d.ts +56 -0
  156. package/dist/cli/commands/skill-install.d.ts.map +1 -0
  157. package/dist/cli/commands/skill-install.js +509 -0
  158. package/dist/cli/commands/skill-install.js.map +1 -0
  159. package/dist/cli/commands/skill.d.ts +20 -0
  160. package/dist/cli/commands/skill.d.ts.map +1 -0
  161. package/dist/cli/commands/skill.js +36 -0
  162. package/dist/cli/commands/skill.js.map +1 -0
  163. package/dist/cli/commands/task.d.ts +1 -1
  164. package/dist/cli/commands/task.d.ts.map +1 -1
  165. package/dist/cli/commands/task.js +584 -350
  166. package/dist/cli/commands/task.js.map +1 -1
  167. package/dist/cli/commands/tasks.d.ts +26 -1
  168. package/dist/cli/commands/tasks.d.ts.map +1 -1
  169. package/dist/cli/commands/tasks.js +225 -122
  170. package/dist/cli/commands/tasks.js.map +1 -1
  171. package/dist/cli/commands/trait.d.ts +1 -1
  172. package/dist/cli/commands/trait.d.ts.map +1 -1
  173. package/dist/cli/commands/trait.js +166 -101
  174. package/dist/cli/commands/trait.js.map +1 -1
  175. package/dist/cli/commands/triage.d.ts +7 -0
  176. package/dist/cli/commands/triage.d.ts.map +1 -0
  177. package/dist/cli/commands/triage.js +483 -0
  178. package/dist/cli/commands/triage.js.map +1 -0
  179. package/dist/cli/commands/util.d.ts +7 -0
  180. package/dist/cli/commands/util.d.ts.map +1 -0
  181. package/dist/cli/commands/util.js +30 -0
  182. package/dist/cli/commands/util.js.map +1 -0
  183. package/dist/cli/commands/validate.d.ts +1 -1
  184. package/dist/cli/commands/validate.d.ts.map +1 -1
  185. package/dist/cli/commands/validate.js +264 -83
  186. package/dist/cli/commands/validate.js.map +1 -1
  187. package/dist/cli/commands/workflow.d.ts +16 -0
  188. package/dist/cli/commands/workflow.d.ts.map +1 -0
  189. package/dist/cli/commands/workflow.js +851 -0
  190. package/dist/cli/commands/workflow.js.map +1 -0
  191. package/dist/cli/exit-codes.d.ts +7 -0
  192. package/dist/cli/exit-codes.d.ts.map +1 -1
  193. package/dist/cli/exit-codes.js +26 -18
  194. package/dist/cli/exit-codes.js.map +1 -1
  195. package/dist/cli/help/content.d.ts.map +1 -1
  196. package/dist/cli/help/content.js +86 -71
  197. package/dist/cli/help/content.js.map +1 -1
  198. package/dist/cli/index.d.ts +1 -1
  199. package/dist/cli/index.d.ts.map +1 -1
  200. package/dist/cli/index.js +131 -19
  201. package/dist/cli/index.js.map +1 -1
  202. package/dist/cli/introspection.d.ts +6 -2
  203. package/dist/cli/introspection.d.ts.map +1 -1
  204. package/dist/cli/introspection.js +11 -8
  205. package/dist/cli/introspection.js.map +1 -1
  206. package/dist/cli/output.d.ts +64 -4
  207. package/dist/cli/output.d.ts.map +1 -1
  208. package/dist/cli/output.js +237 -85
  209. package/dist/cli/output.js.map +1 -1
  210. package/dist/cli/parse-utils.d.ts +21 -0
  211. package/dist/cli/parse-utils.d.ts.map +1 -0
  212. package/dist/cli/parse-utils.js +32 -0
  213. package/dist/cli/parse-utils.js.map +1 -0
  214. package/dist/cli/pid-utils.d.ts +72 -0
  215. package/dist/cli/pid-utils.d.ts.map +1 -0
  216. package/dist/cli/pid-utils.js +174 -0
  217. package/dist/cli/pid-utils.js.map +1 -0
  218. package/dist/cli/suggest.d.ts.map +1 -1
  219. package/dist/cli/suggest.js +1 -2
  220. package/dist/cli/suggest.js.map +1 -1
  221. package/dist/cli/validators.d.ts +43 -0
  222. package/dist/cli/validators.d.ts.map +1 -0
  223. package/dist/cli/validators.js +84 -0
  224. package/dist/cli/validators.js.map +1 -0
  225. package/dist/daemon/index.ts +52 -0
  226. package/dist/daemon/middleware/project-context.ts +126 -0
  227. package/dist/daemon/pid.ts +179 -0
  228. package/dist/daemon/project-context.ts +343 -0
  229. package/dist/daemon/routes/inbox.ts +164 -0
  230. package/dist/daemon/routes/items.ts +322 -0
  231. package/dist/daemon/routes/meta.ts +118 -0
  232. package/dist/daemon/routes/projects.ts +162 -0
  233. package/dist/daemon/routes/tasks.ts +327 -0
  234. package/dist/daemon/routes/triage.ts +402 -0
  235. package/dist/daemon/routes/validation.ts +248 -0
  236. package/dist/daemon/server.ts +408 -0
  237. package/dist/daemon/watcher.ts +195 -0
  238. package/dist/daemon/websocket/handler.ts +138 -0
  239. package/dist/daemon/websocket/heartbeat.ts +71 -0
  240. package/dist/daemon/websocket/pubsub.ts +125 -0
  241. package/dist/daemon/websocket/types.ts +66 -0
  242. package/dist/export/html.d.ts +19 -0
  243. package/dist/export/html.d.ts.map +1 -0
  244. package/dist/export/html.js +239 -0
  245. package/dist/export/html.js.map +1 -0
  246. package/dist/export/index.d.ts +10 -0
  247. package/dist/export/index.d.ts.map +1 -0
  248. package/dist/export/index.js +10 -0
  249. package/dist/export/index.js.map +1 -0
  250. package/dist/export/json.d.ts +24 -0
  251. package/dist/export/json.d.ts.map +1 -0
  252. package/dist/export/json.js +198 -0
  253. package/dist/export/json.js.map +1 -0
  254. package/dist/export/triage.d.ts +51 -0
  255. package/dist/export/triage.d.ts.map +1 -0
  256. package/dist/export/triage.js +83 -0
  257. package/dist/export/triage.js.map +1 -0
  258. package/dist/export/types.d.ts +122 -0
  259. package/dist/export/types.d.ts.map +1 -0
  260. package/dist/export/types.js +9 -0
  261. package/dist/export/types.js.map +1 -0
  262. package/dist/index.d.ts +2 -2
  263. package/dist/index.js +2 -2
  264. package/dist/lib/claude-plugin-registry.d.ts +66 -0
  265. package/dist/lib/claude-plugin-registry.d.ts.map +1 -0
  266. package/dist/lib/claude-plugin-registry.js +318 -0
  267. package/dist/lib/claude-plugin-registry.js.map +1 -0
  268. package/dist/merge/arrays.d.ts +87 -0
  269. package/dist/merge/arrays.d.ts.map +1 -0
  270. package/dist/merge/arrays.js +164 -0
  271. package/dist/merge/arrays.js.map +1 -0
  272. package/dist/merge/file-type.d.ts +32 -0
  273. package/dist/merge/file-type.d.ts.map +1 -0
  274. package/dist/merge/file-type.js +70 -0
  275. package/dist/merge/file-type.js.map +1 -0
  276. package/dist/merge/index.d.ts +14 -0
  277. package/dist/merge/index.d.ts.map +1 -0
  278. package/dist/merge/index.js +11 -0
  279. package/dist/merge/index.js.map +1 -0
  280. package/dist/merge/objects.d.ts +46 -0
  281. package/dist/merge/objects.d.ts.map +1 -0
  282. package/dist/merge/objects.js +193 -0
  283. package/dist/merge/objects.js.map +1 -0
  284. package/dist/merge/parse.d.ts +23 -0
  285. package/dist/merge/parse.d.ts.map +1 -0
  286. package/dist/merge/parse.js +78 -0
  287. package/dist/merge/parse.js.map +1 -0
  288. package/dist/merge/resolve.d.ts +66 -0
  289. package/dist/merge/resolve.d.ts.map +1 -0
  290. package/dist/merge/resolve.js +189 -0
  291. package/dist/merge/resolve.js.map +1 -0
  292. package/dist/merge/types.d.ts +82 -0
  293. package/dist/merge/types.d.ts.map +1 -0
  294. package/dist/merge/types.js +8 -0
  295. package/dist/merge/types.js.map +1 -0
  296. package/dist/parser/agent-data-sections.d.ts +53 -0
  297. package/dist/parser/agent-data-sections.d.ts.map +1 -0
  298. package/dist/parser/agent-data-sections.js +118 -0
  299. package/dist/parser/agent-data-sections.js.map +1 -0
  300. package/dist/parser/alignment.d.ts +4 -4
  301. package/dist/parser/alignment.d.ts.map +1 -1
  302. package/dist/parser/alignment.js +27 -22
  303. package/dist/parser/alignment.js.map +1 -1
  304. package/dist/parser/assess.d.ts +5 -5
  305. package/dist/parser/assess.d.ts.map +1 -1
  306. package/dist/parser/assess.js +36 -32
  307. package/dist/parser/assess.js.map +1 -1
  308. package/dist/parser/config.d.ts +457 -0
  309. package/dist/parser/config.d.ts.map +1 -0
  310. package/dist/parser/config.js +373 -0
  311. package/dist/parser/config.js.map +1 -0
  312. package/dist/parser/convention-validation.d.ts +1 -1
  313. package/dist/parser/convention-validation.d.ts.map +1 -1
  314. package/dist/parser/convention-validation.js +21 -16
  315. package/dist/parser/convention-validation.js.map +1 -1
  316. package/dist/parser/coverage-cache.d.ts +49 -0
  317. package/dist/parser/coverage-cache.d.ts.map +1 -0
  318. package/dist/parser/coverage-cache.js +123 -0
  319. package/dist/parser/coverage-cache.js.map +1 -0
  320. package/dist/parser/daemon-status.d.ts +37 -0
  321. package/dist/parser/daemon-status.d.ts.map +1 -0
  322. package/dist/parser/daemon-status.js +67 -0
  323. package/dist/parser/daemon-status.js.map +1 -0
  324. package/dist/parser/doctor.d.ts +107 -0
  325. package/dist/parser/doctor.d.ts.map +1 -0
  326. package/dist/parser/doctor.js +366 -0
  327. package/dist/parser/doctor.js.map +1 -0
  328. package/dist/parser/fix.d.ts +1 -1
  329. package/dist/parser/fix.d.ts.map +1 -1
  330. package/dist/parser/fix.js +31 -27
  331. package/dist/parser/fix.js.map +1 -1
  332. package/dist/parser/index.d.ts +16 -11
  333. package/dist/parser/index.d.ts.map +1 -1
  334. package/dist/parser/index.js +16 -11
  335. package/dist/parser/index.js.map +1 -1
  336. package/dist/parser/items.d.ts +8 -2
  337. package/dist/parser/items.d.ts.map +1 -1
  338. package/dist/parser/items.js +71 -35
  339. package/dist/parser/items.js.map +1 -1
  340. package/dist/parser/meta.d.ts +167 -9
  341. package/dist/parser/meta.d.ts.map +1 -1
  342. package/dist/parser/meta.js +379 -46
  343. package/dist/parser/meta.js.map +1 -1
  344. package/dist/parser/plan-document.d.ts +197 -0
  345. package/dist/parser/plan-document.d.ts.map +1 -0
  346. package/dist/parser/plan-document.js +341 -0
  347. package/dist/parser/plan-document.js.map +1 -0
  348. package/dist/parser/plans.d.ts +59 -0
  349. package/dist/parser/plans.d.ts.map +1 -0
  350. package/dist/parser/plans.js +239 -0
  351. package/dist/parser/plans.js.map +1 -0
  352. package/dist/parser/refs.d.ts +22 -9
  353. package/dist/parser/refs.d.ts.map +1 -1
  354. package/dist/parser/refs.js +102 -50
  355. package/dist/parser/refs.js.map +1 -1
  356. package/dist/parser/setup-status.d.ts +71 -0
  357. package/dist/parser/setup-status.d.ts.map +1 -0
  358. package/dist/parser/setup-status.js +269 -0
  359. package/dist/parser/setup-status.js.map +1 -0
  360. package/dist/parser/shadow.d.ts +150 -19
  361. package/dist/parser/shadow.d.ts.map +1 -1
  362. package/dist/parser/shadow.js +548 -187
  363. package/dist/parser/shadow.js.map +1 -1
  364. package/dist/parser/skill-render.d.ts +317 -0
  365. package/dist/parser/skill-render.d.ts.map +1 -0
  366. package/dist/parser/skill-render.js +943 -0
  367. package/dist/parser/skill-render.js.map +1 -0
  368. package/dist/parser/traits.d.ts +3 -3
  369. package/dist/parser/traits.d.ts.map +1 -1
  370. package/dist/parser/traits.js +2 -2
  371. package/dist/parser/traits.js.map +1 -1
  372. package/dist/parser/validate-skills.d.ts +32 -0
  373. package/dist/parser/validate-skills.d.ts.map +1 -0
  374. package/dist/parser/validate-skills.js +202 -0
  375. package/dist/parser/validate-skills.js.map +1 -0
  376. package/dist/parser/validate.d.ts +45 -3
  377. package/dist/parser/validate.d.ts.map +1 -1
  378. package/dist/parser/validate.js +622 -105
  379. package/dist/parser/validate.js.map +1 -1
  380. package/dist/parser/yaml.d.ts +83 -19
  381. package/dist/parser/yaml.d.ts.map +1 -1
  382. package/dist/parser/yaml.js +478 -173
  383. package/dist/parser/yaml.js.map +1 -1
  384. package/dist/ralph/cli-renderer.d.ts +8 -1
  385. package/dist/ralph/cli-renderer.d.ts.map +1 -1
  386. package/dist/ralph/cli-renderer.js +105 -34
  387. package/dist/ralph/cli-renderer.js.map +1 -1
  388. package/dist/ralph/events.d.ts +10 -10
  389. package/dist/ralph/events.d.ts.map +1 -1
  390. package/dist/ralph/events.js +301 -98
  391. package/dist/ralph/events.js.map +1 -1
  392. package/dist/ralph/index.d.ts +5 -2
  393. package/dist/ralph/index.d.ts.map +1 -1
  394. package/dist/ralph/index.js +9 -3
  395. package/dist/ralph/index.js.map +1 -1
  396. package/dist/ralph/loop-errors.d.ts +83 -0
  397. package/dist/ralph/loop-errors.d.ts.map +1 -0
  398. package/dist/ralph/loop-errors.js +150 -0
  399. package/dist/ralph/loop-errors.js.map +1 -0
  400. package/dist/ralph/subagent.d.ts +94 -0
  401. package/dist/ralph/subagent.d.ts.map +1 -0
  402. package/dist/ralph/subagent.js +193 -0
  403. package/dist/ralph/subagent.js.map +1 -0
  404. package/dist/ralph/wrap-up.d.ts +125 -0
  405. package/dist/ralph/wrap-up.d.ts.map +1 -0
  406. package/dist/ralph/wrap-up.js +270 -0
  407. package/dist/ralph/wrap-up.js.map +1 -0
  408. package/dist/schema/batch.d.ts +97 -0
  409. package/dist/schema/batch.d.ts.map +1 -0
  410. package/dist/schema/batch.js +24 -0
  411. package/dist/schema/batch.js.map +1 -0
  412. package/dist/schema/common.d.ts +8 -2
  413. package/dist/schema/common.d.ts.map +1 -1
  414. package/dist/schema/common.js +42 -31
  415. package/dist/schema/common.js.map +1 -1
  416. package/dist/schema/inbox.d.ts +12 -12
  417. package/dist/schema/inbox.js +4 -4
  418. package/dist/schema/inbox.js.map +1 -1
  419. package/dist/schema/index.d.ts +8 -5
  420. package/dist/schema/index.d.ts.map +1 -1
  421. package/dist/schema/index.js +8 -5
  422. package/dist/schema/index.js.map +1 -1
  423. package/dist/schema/meta.d.ts +1454 -27
  424. package/dist/schema/meta.d.ts.map +1 -1
  425. package/dist/schema/meta.js +198 -21
  426. package/dist/schema/meta.js.map +1 -1
  427. package/dist/schema/plan.d.ts +285 -0
  428. package/dist/schema/plan.d.ts.map +1 -0
  429. package/dist/schema/plan.js +81 -0
  430. package/dist/schema/plan.js.map +1 -0
  431. package/dist/schema/spec.d.ts +72 -33
  432. package/dist/schema/spec.d.ts.map +1 -1
  433. package/dist/schema/spec.js +22 -9
  434. package/dist/schema/spec.js.map +1 -1
  435. package/dist/schema/task.d.ts +172 -161
  436. package/dist/schema/task.d.ts.map +1 -1
  437. package/dist/schema/task.js +21 -12
  438. package/dist/schema/task.js.map +1 -1
  439. package/dist/schema/triage.d.ts +266 -0
  440. package/dist/schema/triage.d.ts.map +1 -0
  441. package/dist/schema/triage.js +134 -0
  442. package/dist/schema/triage.js.map +1 -0
  443. package/dist/sessions/index.d.ts +2 -2
  444. package/dist/sessions/index.d.ts.map +1 -1
  445. package/dist/sessions/index.js +3 -3
  446. package/dist/sessions/index.js.map +1 -1
  447. package/dist/sessions/store.d.ts +241 -1
  448. package/dist/sessions/store.d.ts.map +1 -1
  449. package/dist/sessions/store.js +810 -31
  450. package/dist/sessions/store.js.map +1 -1
  451. package/dist/sessions/types.d.ts +10 -10
  452. package/dist/sessions/types.d.ts.map +1 -1
  453. package/dist/sessions/types.js +10 -9
  454. package/dist/sessions/types.js.map +1 -1
  455. package/dist/strings/errors.d.ts +55 -0
  456. package/dist/strings/errors.d.ts.map +1 -1
  457. package/dist/strings/errors.js +138 -106
  458. package/dist/strings/errors.js.map +1 -1
  459. package/dist/strings/guidance.d.ts.map +1 -1
  460. package/dist/strings/guidance.js +16 -16
  461. package/dist/strings/guidance.js.map +1 -1
  462. package/dist/strings/index.d.ts +4 -4
  463. package/dist/strings/index.d.ts.map +1 -1
  464. package/dist/strings/index.js +4 -4
  465. package/dist/strings/index.js.map +1 -1
  466. package/dist/strings/labels.d.ts +4 -0
  467. package/dist/strings/labels.d.ts.map +1 -1
  468. package/dist/strings/labels.js +45 -41
  469. package/dist/strings/labels.js.map +1 -1
  470. package/dist/strings/validation.d.ts.map +1 -1
  471. package/dist/strings/validation.js +71 -71
  472. package/dist/strings/validation.js.map +1 -1
  473. package/dist/triage/actions.d.ts +27 -0
  474. package/dist/triage/actions.d.ts.map +1 -0
  475. package/dist/triage/actions.js +95 -0
  476. package/dist/triage/actions.js.map +1 -0
  477. package/dist/triage/constants.d.ts +6 -0
  478. package/dist/triage/constants.d.ts.map +1 -0
  479. package/dist/triage/constants.js +7 -0
  480. package/dist/triage/constants.js.map +1 -0
  481. package/dist/triage/index.d.ts +3 -0
  482. package/dist/triage/index.d.ts.map +1 -0
  483. package/dist/triage/index.js +3 -0
  484. package/dist/triage/index.js.map +1 -0
  485. package/dist/utils/commit.d.ts +1 -1
  486. package/dist/utils/commit.d.ts.map +1 -1
  487. package/dist/utils/commit.js +28 -26
  488. package/dist/utils/commit.js.map +1 -1
  489. package/dist/utils/git.d.ts +1 -1
  490. package/dist/utils/git.d.ts.map +1 -1
  491. package/dist/utils/git.js +40 -38
  492. package/dist/utils/git.js.map +1 -1
  493. package/dist/utils/grep.js +11 -11
  494. package/dist/utils/grep.js.map +1 -1
  495. package/dist/utils/index.d.ts +7 -7
  496. package/dist/utils/index.d.ts.map +1 -1
  497. package/dist/utils/index.js +4 -4
  498. package/dist/utils/index.js.map +1 -1
  499. package/dist/utils/time.d.ts.map +1 -1
  500. package/dist/utils/time.js +10 -10
  501. package/dist/utils/time.js.map +1 -1
  502. package/package.json +28 -5
  503. package/plugin/.claude-plugin/marketplace.json +17 -0
  504. package/plugin/.claude-plugin/plugin.json +5 -0
  505. package/plugin/plugins/kspec/skills/create-workflow/SKILL.md +235 -0
  506. package/plugin/plugins/kspec/skills/help/SKILL.md +42 -0
  507. package/plugin/plugins/kspec/skills/observations/SKILL.md +143 -0
  508. package/plugin/plugins/kspec/skills/plan/SKILL.md +343 -0
  509. package/plugin/plugins/kspec/skills/reflect/SKILL.md +161 -0
  510. package/plugin/plugins/kspec/skills/review/SKILL.md +193 -0
  511. package/plugin/plugins/kspec/skills/task-work/SKILL.md +303 -0
  512. package/plugin/plugins/kspec/skills/triage/SKILL.md +206 -0
  513. package/plugin/plugins/kspec/skills/triage/docs/automation.md +120 -0
  514. package/plugin/plugins/kspec/skills/triage/docs/inbox.md +144 -0
  515. package/plugin/plugins/kspec/skills/triage/docs/observations.md +85 -0
  516. package/plugin/plugins/kspec/skills/triage-automation/SKILL.md +140 -0
  517. package/plugin/plugins/kspec/skills/triage-inbox/SKILL.md +232 -0
  518. package/plugin/plugins/kspec/skills/writing-specs/SKILL.md +340 -0
  519. package/templates/agents-sections/01-quick-start.md +22 -0
  520. package/templates/agents-sections/02-shadow-branch.md +34 -0
  521. package/templates/agents-sections/03-task-lifecycle.md +48 -0
  522. package/templates/agents-sections/04-pr-workflow.md +17 -0
  523. package/templates/agents-sections/05-commit-convention.md +27 -0
  524. package/templates/agents-sections/06-ralph-loop.md +45 -0
  525. package/templates/hooks/pre-commit +34 -0
  526. package/templates/skills/create-workflow/SKILL.md +228 -0
  527. package/templates/skills/help/SKILL.md +37 -0
  528. package/templates/skills/manifest.yaml +60 -0
  529. package/templates/skills/observations/SKILL.md +137 -0
  530. package/templates/skills/plan/SKILL.md +336 -0
  531. package/templates/skills/reflect/SKILL.md +155 -0
  532. package/templates/skills/review/SKILL.md +186 -0
  533. package/templates/skills/task-work/SKILL.md +296 -0
  534. package/templates/skills/triage/SKILL.md +199 -0
  535. package/templates/skills/triage/docs/automation.md +120 -0
  536. package/templates/skills/triage/docs/inbox.md +144 -0
  537. package/templates/skills/triage/docs/observations.md +85 -0
  538. package/templates/skills/triage-automation/SKILL.md +134 -0
  539. package/templates/skills/triage-inbox/SKILL.md +225 -0
  540. package/templates/skills/writing-specs/SKILL.md +333 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-diff.js","sourceRoot":"","sources":["../../../src/cli/commands/skill-diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Skill core installation and update commands.
3
+ *
4
+ * AC: @core-skill-install ac-1 - meta entries created with origin core
5
+ * AC: @core-skill-install ac-2 - content files copied from templates to .kspec/skills/<id>/
6
+ * AC: @core-skill-install ac-3 - custom skills skipped with message
7
+ * AC: @core-skill-install ac-4 - --force overwrites custom forks
8
+ * AC: @core-skill-install ac-5 - version matches kspec package version
9
+ * AC: @core-skill-install ac-6 - marketplace registration in known_marketplaces.json
10
+ * AC: @core-skill-install ac-7 - plugin enabled in project settings
11
+ * AC: @core-skill-install ac-8 - idempotent marketplace registration
12
+ *
13
+ * AC: @core-skill-update ac-1 - skill content and version updated when version differs
14
+ * AC: @core-skill-update ac-2 - skill skipped when already at current version
15
+ * AC: @core-skill-update ac-3 - skills with origin custom/project not touched
16
+ */
17
+ import type { Command } from "commander";
18
+ /**
19
+ * Core skill definition from manifest
20
+ */
21
+ interface CoreSkillDefinition {
22
+ id: string;
23
+ name: string;
24
+ description?: string;
25
+ platforms?: string[];
26
+ }
27
+ /**
28
+ * Get the kspec package version from package.json
29
+ * AC: @core-skill-install ac-5
30
+ */
31
+ export declare function getKspecPackageVersion(): Promise<string | null>;
32
+ /**
33
+ * Load core skills manifest from templates/skills/manifest.yaml
34
+ * AC: @core-skill-install ac-1, ac-2
35
+ */
36
+ export declare function loadCoreSkillsManifest(): Promise<CoreSkillDefinition[]>;
37
+ /**
38
+ * Load SKILL.md content for a core skill from templates
39
+ * AC: @core-skill-install ac-2
40
+ */
41
+ export declare function loadCoreSkillContent(skillId: string): Promise<string | null>;
42
+ /**
43
+ * Copy all files for a core skill from templates to .kspec/skills/<id>/.
44
+ * Copies SKILL.md and any supporting directories (docs/, references/, etc.).
45
+ * Skips writing files when content is unchanged to avoid unnecessary git diffs.
46
+ * AC: @core-skill-install ac-2
47
+ */
48
+ export declare function copyCoreSkillFiles(skillId: string, targetDir: string): Promise<{
49
+ changed: boolean;
50
+ }>;
51
+ /**
52
+ * Register skill install/update commands (install-core, update)
53
+ */
54
+ export declare function registerSkillInstallCommands(skill: Command): void;
55
+ export {};
56
+ //# sourceMappingURL=skill-install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skill-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4CzC;;GAEG;AACH,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAMD;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAYrE;AAaD;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAoB7E;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQlF;AA0DD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAuD/B;AAMD;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CA6WjE"}
@@ -0,0 +1,509 @@
1
+ /**
2
+ * Skill core installation and update commands.
3
+ *
4
+ * AC: @core-skill-install ac-1 - meta entries created with origin core
5
+ * AC: @core-skill-install ac-2 - content files copied from templates to .kspec/skills/<id>/
6
+ * AC: @core-skill-install ac-3 - custom skills skipped with message
7
+ * AC: @core-skill-install ac-4 - --force overwrites custom forks
8
+ * AC: @core-skill-install ac-5 - version matches kspec package version
9
+ * AC: @core-skill-install ac-6 - marketplace registration in known_marketplaces.json
10
+ * AC: @core-skill-install ac-7 - plugin enabled in project settings
11
+ * AC: @core-skill-install ac-8 - idempotent marketplace registration
12
+ *
13
+ * AC: @core-skill-update ac-1 - skill content and version updated when version differs
14
+ * AC: @core-skill-update ac-2 - skill skipped when already at current version
15
+ * AC: @core-skill-update ac-3 - skills with origin custom/project not touched
16
+ */
17
+ import * as fs from "node:fs/promises";
18
+ import * as path from "node:path";
19
+ import chalk from "chalk";
20
+ import { ulid } from "ulid";
21
+ import yaml from "yaml";
22
+ import { markMutating } from "../command-annotations.js";
23
+ import { getSkillContentPath, initContext, loadMetaContext, saveMetaItem, } from "../../parser/index.js";
24
+ import { commitIfShadow } from "../../parser/shadow.js";
25
+ import { SkillSchema } from "../../schema/index.js";
26
+ import { errors } from "../../strings/errors.js";
27
+ import { EXIT_CODES } from "../exit-codes.js";
28
+ import { error, output, success } from "../output.js";
29
+ // ============================================================================
30
+ // Template Management Helpers
31
+ // ============================================================================
32
+ /**
33
+ * Get the kspec package version from package.json
34
+ * AC: @core-skill-install ac-5
35
+ */
36
+ export async function getKspecPackageVersion() {
37
+ try {
38
+ // Try to find package.json relative to this module
39
+ const packagePath = path.resolve(import.meta.dirname || path.dirname(new URL(import.meta.url).pathname), "../../../package.json");
40
+ const packageJson = JSON.parse(await fs.readFile(packagePath, "utf-8"));
41
+ return packageJson.version || null;
42
+ }
43
+ catch {
44
+ return null;
45
+ }
46
+ }
47
+ /**
48
+ * Get the templates directory path
49
+ */
50
+ function getTemplatesDir() {
51
+ // Templates are at <package-root>/templates/skills/
52
+ return path.resolve(import.meta.dirname || path.dirname(new URL(import.meta.url).pathname), "../../../templates/skills");
53
+ }
54
+ /**
55
+ * Load core skills manifest from templates/skills/manifest.yaml
56
+ * AC: @core-skill-install ac-1, ac-2
57
+ */
58
+ export async function loadCoreSkillsManifest() {
59
+ try {
60
+ const templatesDir = getTemplatesDir();
61
+ const manifestPath = path.join(templatesDir, "manifest.yaml");
62
+ const content = await fs.readFile(manifestPath, "utf-8");
63
+ const parsed = yaml.parse(content);
64
+ if (!parsed || !Array.isArray(parsed.skills)) {
65
+ return [];
66
+ }
67
+ return parsed.skills.map((s) => ({
68
+ id: String(s.id || ""),
69
+ name: String(s.name || s.id || ""),
70
+ description: s.description ? String(s.description) : undefined,
71
+ platforms: Array.isArray(s.platforms) ? s.platforms.map(String) : undefined,
72
+ })).filter((s) => s.id);
73
+ }
74
+ catch {
75
+ return [];
76
+ }
77
+ }
78
+ /**
79
+ * Load SKILL.md content for a core skill from templates
80
+ * AC: @core-skill-install ac-2
81
+ */
82
+ export async function loadCoreSkillContent(skillId) {
83
+ try {
84
+ const templatesDir = getTemplatesDir();
85
+ const skillMdPath = path.join(templatesDir, skillId, "SKILL.md");
86
+ return await fs.readFile(skillMdPath, "utf-8");
87
+ }
88
+ catch {
89
+ return null;
90
+ }
91
+ }
92
+ /** Supporting directory names that may accompany a skill template. */
93
+ const SKILL_SUPPORTING_DIRS = ["docs", "references", "scripts", "assets"];
94
+ /**
95
+ * Recursively copy a directory tree.
96
+ * Only copies files; creates directories as needed.
97
+ */
98
+ async function copyDirRecursive(src, dest) {
99
+ const entries = await fs.readdir(src, { withFileTypes: true });
100
+ await fs.mkdir(dest, { recursive: true });
101
+ for (const entry of entries) {
102
+ const srcPath = path.join(src, entry.name);
103
+ const destPath = path.join(dest, entry.name);
104
+ if (entry.isDirectory()) {
105
+ await copyDirRecursive(srcPath, destPath);
106
+ }
107
+ else if (entry.isFile()) {
108
+ await fs.copyFile(srcPath, destPath);
109
+ }
110
+ }
111
+ }
112
+ /**
113
+ * Check if all source entries exist in dest with identical content.
114
+ * Uses subset comparison: extra files in dest are ignored since
115
+ * copyDirRecursive is an overlay copy that doesn't delete extra files.
116
+ */
117
+ async function sourceMatchesDest(src, dest) {
118
+ try {
119
+ const srcEntries = await fs.readdir(src);
120
+ const destEntries = new Set(await fs.readdir(dest));
121
+ for (const name of srcEntries) {
122
+ if (!destEntries.has(name))
123
+ return false;
124
+ const srcPath = path.join(src, name);
125
+ const destPath = path.join(dest, name);
126
+ const srcStat = await fs.stat(srcPath);
127
+ const destStat = await fs.stat(destPath);
128
+ if (srcStat.isDirectory() && destStat.isDirectory()) {
129
+ if (!(await sourceMatchesDest(srcPath, destPath)))
130
+ return false;
131
+ }
132
+ else if (srcStat.isFile() && destStat.isFile()) {
133
+ // Use Buffer comparison for binary safety (assets/ may contain images)
134
+ const srcBuf = await fs.readFile(srcPath);
135
+ const destBuf = await fs.readFile(destPath);
136
+ if (!srcBuf.equals(destBuf))
137
+ return false;
138
+ }
139
+ else {
140
+ return false; // Type mismatch
141
+ }
142
+ }
143
+ return true;
144
+ }
145
+ catch (_err) {
146
+ return false;
147
+ }
148
+ }
149
+ /**
150
+ * Copy all files for a core skill from templates to .kspec/skills/<id>/.
151
+ * Copies SKILL.md and any supporting directories (docs/, references/, etc.).
152
+ * Skips writing files when content is unchanged to avoid unnecessary git diffs.
153
+ * AC: @core-skill-install ac-2
154
+ */
155
+ export async function copyCoreSkillFiles(skillId, targetDir) {
156
+ const templatesDir = getTemplatesDir();
157
+ const sourceDir = path.join(templatesDir, skillId);
158
+ let changed = false;
159
+ // Copy SKILL.md — skip if template doesn't exist, propagate real errors
160
+ const skillMdPath = path.join(sourceDir, "SKILL.md");
161
+ let content;
162
+ try {
163
+ content = await fs.readFile(skillMdPath, "utf-8");
164
+ }
165
+ catch (err) {
166
+ if (err instanceof Error && "code" in err && err.code === "ENOENT") {
167
+ return { changed: false }; // No SKILL.md means nothing to copy
168
+ }
169
+ throw err;
170
+ }
171
+ // Compare before writing to avoid unnecessary git diffs
172
+ const targetSkillMd = path.join(targetDir, "SKILL.md");
173
+ let existingContent = null;
174
+ try {
175
+ existingContent = await fs.readFile(targetSkillMd, "utf-8");
176
+ }
177
+ catch {
178
+ // Target doesn't exist yet
179
+ }
180
+ if (existingContent !== content) {
181
+ await fs.mkdir(targetDir, { recursive: true });
182
+ await fs.writeFile(targetSkillMd, content, "utf-8");
183
+ changed = true;
184
+ }
185
+ // Copy supporting directories recursively, skipping when unchanged
186
+ for (const dirName of SKILL_SUPPORTING_DIRS) {
187
+ const srcSubDir = path.join(sourceDir, dirName);
188
+ try {
189
+ await fs.access(srcSubDir);
190
+ }
191
+ catch (err) {
192
+ // ENOENT: directory doesn't exist in template, skip
193
+ if (err instanceof Error && "code" in err && err.code === "ENOENT") {
194
+ continue;
195
+ }
196
+ throw err; // Propagate real I/O errors
197
+ }
198
+ const destSubDir = path.join(targetDir, dirName);
199
+ if (await sourceMatchesDest(srcSubDir, destSubDir)) {
200
+ continue; // Content unchanged, skip copy
201
+ }
202
+ await copyDirRecursive(srcSubDir, destSubDir);
203
+ changed = true;
204
+ }
205
+ return { changed };
206
+ }
207
+ // ============================================================================
208
+ // Command Registration
209
+ // ============================================================================
210
+ /**
211
+ * Register skill install/update commands (install-core, update)
212
+ */
213
+ export function registerSkillInstallCommands(skill) {
214
+ // AC: @core-skill-install - kspec skill install-core
215
+ markMutating(skill.command("install-core"))
216
+ .description("Install core skills from kspec package templates")
217
+ .option("--force", "Overwrite custom forks with core versions")
218
+ .option("--dry-run", "Show what would be installed without making changes")
219
+ .action(async (options) => {
220
+ try {
221
+ const ctx = await initContext();
222
+ if (!ctx.manifestPath) {
223
+ error(errors.project.noKspecProject);
224
+ console.log(chalk.gray("Try: kspec init to initialize a kspec project"));
225
+ process.exit(EXIT_CODES.ERROR);
226
+ }
227
+ const metaCtx = await loadMetaContext(ctx);
228
+ const dryRun = options.dryRun || false;
229
+ const force = options.force || false;
230
+ const results = [];
231
+ // Load core skills manifest
232
+ const coreSkills = await loadCoreSkillsManifest();
233
+ if (coreSkills.length === 0) {
234
+ console.log(chalk.yellow("No core skills found in kspec package templates"));
235
+ return;
236
+ }
237
+ // Get kspec package version
238
+ // AC: @cross-platform-and-version-robustness ac-3
239
+ const kspecVersion = await getKspecPackageVersion();
240
+ if (!kspecVersion) {
241
+ console.log(chalk.yellow("Warning: Could not determine kspec version — skills installed without version tracking"));
242
+ }
243
+ // Process each core skill
244
+ for (const coreSkill of coreSkills) {
245
+ // AC: @core-skill-install ac-3 - Check if skill exists with custom origin
246
+ const existingSkill = metaCtx.skills.find((s) => s.id === coreSkill.id);
247
+ if (existingSkill) {
248
+ // Check origin - if "custom" or "project" and not forcing, skip
249
+ if (existingSkill.origin !== "core" && !force) {
250
+ results.push({
251
+ id: coreSkill.id,
252
+ action: "skipped",
253
+ reason: `existing ${existingSkill.origin} skill (use --force to overwrite)`,
254
+ });
255
+ continue;
256
+ }
257
+ }
258
+ // AC: @core-skill-install ac-1 - Create/update meta entry with origin core
259
+ // AC: @core-skill-install ac-5 - Version matches kspec package version
260
+ // Schema provides defaults for platforms, depends_on
261
+ const skillData = {
262
+ _ulid: existingSkill?._ulid || ulid(),
263
+ id: coreSkill.id,
264
+ name: coreSkill.name,
265
+ description: coreSkill.description,
266
+ origin: "core",
267
+ ...(kspecVersion && { version: kspecVersion }),
268
+ ...(coreSkill.platforms && { platforms: coreSkill.platforms }),
269
+ allowed_tools: [],
270
+ tags: ["core"],
271
+ };
272
+ // Validate with schema
273
+ const parsed = SkillSchema.safeParse(skillData);
274
+ if (!parsed.success) {
275
+ const issues = parsed.error.issues
276
+ .map((i) => `${i.path.join(".")}: ${i.message}`)
277
+ .join("; ");
278
+ results.push({
279
+ id: coreSkill.id,
280
+ action: "failed",
281
+ reason: `validation error: ${issues}`,
282
+ });
283
+ continue;
284
+ }
285
+ const skill = { ...parsed.data };
286
+ // Save meta entry (if not dry run)
287
+ if (!dryRun) {
288
+ await saveMetaItem(ctx, skill, "skill");
289
+ // AC: @core-skill-install ac-2 - Copy skill files (SKILL.md + supporting dirs)
290
+ const targetDir = path.dirname(getSkillContentPath(ctx, skill.id));
291
+ await copyCoreSkillFiles(coreSkill.id, targetDir);
292
+ }
293
+ results.push({
294
+ id: coreSkill.id,
295
+ action: existingSkill ? "updated" : "created",
296
+ version: kspecVersion ?? undefined,
297
+ });
298
+ }
299
+ // Commit changes if not dry run
300
+ if (!dryRun && results.some((r) => r.action === "created" || r.action === "updated")) {
301
+ await commitIfShadow(ctx.shadow, "skill-install-core", `${results.filter((r) => r.action !== "skipped" && r.action !== "failed").length} core skills`);
302
+ }
303
+ // AC: @core-skill-install ac-6, ac-7 - Register marketplace and enable plugin
304
+ const { registerCorePluginMarketplace, enablePluginInProject } = await import("../../lib/claude-plugin-registry.js");
305
+ const marketplaceResult = await registerCorePluginMarketplace({ dryRun });
306
+ const enableResult = await enablePluginInProject(ctx.rootDir, { dryRun });
307
+ // Output results
308
+ output({
309
+ dry_run: dryRun,
310
+ results,
311
+ marketplace: marketplaceResult,
312
+ pluginEnabled: enableResult,
313
+ }, () => {
314
+ if (dryRun) {
315
+ console.log(chalk.yellow("DRY RUN - No changes made"));
316
+ console.log();
317
+ }
318
+ const created = results.filter((r) => r.action === "created");
319
+ const updated = results.filter((r) => r.action === "updated");
320
+ const skipped = results.filter((r) => r.action === "skipped");
321
+ const failed = results.filter((r) => r.action === "failed");
322
+ if (created.length > 0) {
323
+ console.log(chalk.green(`Created: ${created.length} skill(s)`));
324
+ for (const r of created) {
325
+ console.log(` ${chalk.green("+")} ${r.id}${r.version ? ` (v${r.version})` : ""}`);
326
+ }
327
+ }
328
+ if (updated.length > 0) {
329
+ console.log(chalk.blue(`Updated: ${updated.length} skill(s)`));
330
+ for (const r of updated) {
331
+ console.log(` ${chalk.blue("~")} ${r.id}${r.version ? ` (v${r.version})` : ""}`);
332
+ }
333
+ }
334
+ if (skipped.length > 0) {
335
+ console.log(chalk.yellow(`Skipped: ${skipped.length} skill(s)`));
336
+ for (const r of skipped) {
337
+ console.log(` ${chalk.yellow("!")} ${r.id}: ${r.reason}`);
338
+ }
339
+ }
340
+ if (failed.length > 0) {
341
+ console.log(chalk.red(`Failed: ${failed.length} skill(s)`));
342
+ for (const r of failed) {
343
+ console.log(` ${chalk.red("x")} ${r.id}: ${r.reason}`);
344
+ }
345
+ }
346
+ console.log();
347
+ if (dryRun) {
348
+ console.log(chalk.yellow("No changes were made. Run without --dry-run to apply."));
349
+ }
350
+ else {
351
+ const changedCount = created.length + updated.length;
352
+ if (changedCount > 0) {
353
+ success(`Installed ${changedCount} core skill(s)`);
354
+ }
355
+ else if (skipped.length > 0) {
356
+ console.log(chalk.gray("No skills installed (all skipped or failed)"));
357
+ }
358
+ }
359
+ // AC: @core-skill-install ac-6 - Report marketplace registration
360
+ if (marketplaceResult.success && marketplaceResult.action !== "skipped") {
361
+ console.log(chalk.green(`Plugin marketplace ${marketplaceResult.action}`));
362
+ }
363
+ else if (!marketplaceResult.success) {
364
+ console.log(chalk.red(`Marketplace registration failed: ${marketplaceResult.message}`));
365
+ }
366
+ // AC: @core-skill-install ac-7 - Report plugin enablement
367
+ if (enableResult.success && enableResult.action === "enabled") {
368
+ console.log(chalk.green("Plugin enabled in project settings"));
369
+ }
370
+ else if (!enableResult.success) {
371
+ console.log(chalk.red(`Plugin enablement failed: ${enableResult.message}`));
372
+ }
373
+ });
374
+ // Exit non-zero if plugin registration or enablement failed
375
+ if (!marketplaceResult.success || !enableResult.success) {
376
+ process.exit(EXIT_CODES.ERROR);
377
+ }
378
+ }
379
+ catch (err) {
380
+ error("Failed to install core skills", err);
381
+ process.exit(EXIT_CODES.ERROR);
382
+ }
383
+ });
384
+ // AC: @core-skill-update - kspec skill update
385
+ markMutating(skill.command("update"))
386
+ .description("Update core skills to match the installed kspec package version")
387
+ .option("--dry-run", "Show what would be updated without making changes")
388
+ .action(async (options) => {
389
+ try {
390
+ const ctx = await initContext();
391
+ if (!ctx.manifestPath) {
392
+ error(errors.project.noKspecProject);
393
+ console.log(chalk.gray("Try: kspec init to initialize a kspec project"));
394
+ process.exit(EXIT_CODES.ERROR);
395
+ }
396
+ const metaCtx = await loadMetaContext(ctx);
397
+ const dryRun = options.dryRun || false;
398
+ const results = [];
399
+ // Get kspec package version
400
+ // AC: @cross-platform-and-version-robustness ac-3
401
+ const kspecVersion = await getKspecPackageVersion();
402
+ if (!kspecVersion) {
403
+ console.log(chalk.yellow("Warning: Could not determine kspec version — updating based on content changes only"));
404
+ }
405
+ // Load core skills manifest to get current content
406
+ const coreSkillsManifest = await loadCoreSkillsManifest();
407
+ const coreSkillsMap = new Map(coreSkillsManifest.map((s) => [s.id, s]));
408
+ // AC: @core-skill-update ac-3 - Only process skills with origin core
409
+ const coreSkills = metaCtx.skills.filter((s) => s.origin === "core");
410
+ for (const skill of coreSkills) {
411
+ // AC: @core-skill-update ac-2 - Skip if already at current version
412
+ // If kspecVersion is null or skill has no version, always update
413
+ if (kspecVersion && skill.version === kspecVersion) {
414
+ results.push({
415
+ id: skill.id,
416
+ action: "skipped",
417
+ reason: "already at current version",
418
+ currentVersion: skill.version,
419
+ });
420
+ continue;
421
+ }
422
+ // Check if skill exists in core manifest
423
+ const coreSkill = coreSkillsMap.get(skill.id);
424
+ if (!coreSkill) {
425
+ results.push({
426
+ id: skill.id,
427
+ action: "skipped",
428
+ reason: "not found in core skills manifest",
429
+ currentVersion: skill.version,
430
+ });
431
+ continue;
432
+ }
433
+ // AC: @core-skill-update ac-1 - Update content and version
434
+ const oldVersion = skill.version;
435
+ if (!dryRun) {
436
+ // Clone before mutating to protect against partial save failure
437
+ const updated = structuredClone(skill);
438
+ if (kspecVersion) {
439
+ updated.version = kspecVersion;
440
+ }
441
+ updated.name = coreSkill.name;
442
+ if (coreSkill.description) {
443
+ updated.description = coreSkill.description;
444
+ }
445
+ if (coreSkill.platforms) {
446
+ updated.platforms = coreSkill.platforms;
447
+ }
448
+ // Save updated metadata
449
+ await saveMetaItem(ctx, updated, "skill");
450
+ // Update skill files from templates (SKILL.md + supporting dirs)
451
+ const targetDir = path.dirname(getSkillContentPath(ctx, skill.id));
452
+ await copyCoreSkillFiles(skill.id, targetDir);
453
+ }
454
+ results.push({
455
+ id: skill.id,
456
+ action: "updated",
457
+ previousVersion: oldVersion,
458
+ newVersion: kspecVersion ?? undefined,
459
+ });
460
+ }
461
+ // Commit changes if not dry run and there are updates
462
+ if (!dryRun && results.some((r) => r.action === "updated")) {
463
+ await commitIfShadow(ctx.shadow, "skill-update", `${results.filter((r) => r.action === "updated").length} core skills`);
464
+ }
465
+ // Output results
466
+ output({
467
+ dry_run: dryRun,
468
+ kspec_version: kspecVersion,
469
+ results,
470
+ }, () => {
471
+ if (dryRun) {
472
+ console.log(chalk.yellow("DRY RUN - No changes made"));
473
+ console.log();
474
+ }
475
+ console.log(`kspec version: ${kspecVersion ?? "unavailable"}`);
476
+ console.log();
477
+ const updated = results.filter((r) => r.action === "updated");
478
+ const skipped = results.filter((r) => r.action === "skipped");
479
+ if (updated.length > 0) {
480
+ console.log(chalk.green(`Updated: ${updated.length} skill(s)`));
481
+ for (const r of updated) {
482
+ console.log(` ${chalk.green("~")} ${r.id}: ${r.previousVersion || "unknown"} → ${r.newVersion || "unavailable"}`);
483
+ }
484
+ }
485
+ if (skipped.length > 0) {
486
+ console.log(chalk.gray(`Skipped: ${skipped.length} skill(s)`));
487
+ for (const r of skipped) {
488
+ console.log(` ${chalk.gray("-")} ${r.id}: ${r.reason}${r.currentVersion ? ` (v${r.currentVersion})` : ""}`);
489
+ }
490
+ }
491
+ console.log();
492
+ if (dryRun) {
493
+ console.log(chalk.yellow("No changes were made. Run without --dry-run to apply."));
494
+ }
495
+ else if (updated.length > 0) {
496
+ success(`Updated ${updated.length} core skill(s)`);
497
+ }
498
+ else {
499
+ console.log(chalk.gray("No skills needed updating"));
500
+ }
501
+ });
502
+ }
503
+ catch (err) {
504
+ error("Failed to update core skills", err);
505
+ process.exit(EXIT_CODES.ERROR);
506
+ }
507
+ });
508
+ }
509
+ //# sourceMappingURL=skill-install.js.map