@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,144 @@
1
+ # Inbox Triage
2
+
3
+ Process inbox items systematically using the **record → act** pattern: record a decision with reasoning, then execute it.
4
+
5
+ ## Workflow
6
+
7
+ ### 1. Gather Context
8
+
9
+ ```bash
10
+ kspec session start --full
11
+ kspec inbox list
12
+ ```
13
+
14
+ ### 2. Categorize Items
15
+
16
+ Group inbox items by type:
17
+ - **Bugs** - implementation issues, errors
18
+ - **Spec gaps** - missing or incomplete specs
19
+ - **Quick wins** - small, well-defined improvements
20
+ - **Larger features** - need plan mode to design
21
+ - **Process/workflow** - meta improvements
22
+ - **Delete candidates** - outdated, duplicates, already done
23
+
24
+ Present categories to user for alignment.
25
+
26
+ ### 3. Triage Each Item
27
+
28
+ **Interactive mode** (recommended for multiple items):
29
+
30
+ ```bash
31
+ kspec triage start
32
+ # Presents untriaged items one by one
33
+ # Prompts for action + reasoning
34
+ # Ctrl+C preserves all previously committed records
35
+ ```
36
+
37
+ **Individual recording** (for targeted decisions):
38
+
39
+ ```bash
40
+ kspec triage record @ref --action promote --reasoning "Clear feature request with spec coverage"
41
+ kspec triage record @ref --action delete --reasoning "Already implemented in PR #123"
42
+ kspec triage record @ref --action defer --reasoning "Depends on auth system redesign"
43
+ kspec triage record @ref --action spec-gap --reasoning "No spec covers error handling for this flow"
44
+ kspec triage record @ref --action duplicate --reasoning "Covered by @existing-spec"
45
+ ```
46
+
47
+ ### 4. Review and Execute Decisions
48
+
49
+ ```bash
50
+ # Review what was recorded
51
+ kspec triage list --status triaged
52
+
53
+ # Preview before executing
54
+ kspec triage act @triage-ref --dry-run
55
+
56
+ # Execute decisions
57
+ kspec triage act @triage-ref
58
+ ```
59
+
60
+ ### 5. Override If Needed
61
+
62
+ If a decision needs changing before or after execution:
63
+
64
+ ```bash
65
+ # Override changes the action while preserving the audit trail
66
+ kspec triage override @triage-ref --action defer --reasoning "Reconsidered - not ready"
67
+
68
+ # Then act on the updated decision
69
+ kspec triage act @triage-ref
70
+ ```
71
+
72
+ ### 6. Spec-First Processing
73
+
74
+ For behavior changes, check spec coverage before promoting:
75
+
76
+ 1. **Check coverage**: `kspec item list | grep <relevant>`
77
+ 2. **Identify gaps**: Does spec have description AND acceptance criteria?
78
+ 3. **Update spec**:
79
+ ```bash
80
+ kspec item set @ref --description "..."
81
+ kspec item ac add @ref --given "..." --when "..." --then "..."
82
+ ```
83
+ 4. **Record and act**:
84
+ ```bash
85
+ kspec triage record @inbox-ref --action promote --reasoning "Spec updated" --evidence @spec-ref
86
+ kspec triage act @triage-ref
87
+ ```
88
+
89
+ ### 7. Plan Mode for Larger Items
90
+
91
+ When an item needs design work:
92
+
93
+ 1. Enter plan mode
94
+ 2. Explore codebase for patterns/context
95
+ 3. Design spec structure and implementation approach
96
+ 4. Write plan, exit for approval
97
+ 5. Execute: create spec, add AC, derive task
98
+
99
+ ## Export for Context
100
+
101
+ Share triage decisions with other agents or sessions:
102
+
103
+ ```bash
104
+ # Markdown context blocks (for agent handoff)
105
+ kspec triage export --format context
106
+
107
+ # Full structured data
108
+ kspec triage export --format json
109
+ ```
110
+
111
+ ## Bulk Processing with Batch
112
+
113
+ When triaging many items, use `kspec batch` to record decisions in bulk:
114
+
115
+ ```bash
116
+ # Record multiple decisions atomically
117
+ kspec batch --commands '[
118
+ {"command":"triage record","args":{"ref":"@ref1","action":"delete","reasoning":"Stale"}},
119
+ {"command":"triage record","args":{"ref":"@ref2","action":"promote","reasoning":"Clear scope"}}
120
+ ]'
121
+ ```
122
+
123
+ Use `--dry-run` to preview. See `/kspec:help` for full batch documentation.
124
+
125
+ ## Common Patterns
126
+
127
+ | Pattern | Action |
128
+ |---------|--------|
129
+ | Already implemented | Verify impl exists → check spec gaps → record delete |
130
+ | Duplicate of existing | Verify original covers scope → record duplicate |
131
+ | Small flag/option | Update spec + AC → record promote |
132
+ | New command | Plan mode → design spec → record promote with evidence |
133
+ | Bug report | Check spec coverage → update spec → record promote |
134
+ | Vague idea | Record defer, or leave untriaged for later |
135
+ | Missing spec | Record spec-gap → creates observation for follow-up |
136
+
137
+ ## Key Principles
138
+
139
+ - **Record before act** - Decisions are separated from execution
140
+ - **Ask one question at a time** - Use AskUserQuestion for decisions
141
+ - **Spec before task** - Fill spec gaps before promoting to tasks
142
+ - **AC is required** - Specs without acceptance criteria are incomplete
143
+ - **Use CLI, not YAML** - All changes through kspec commands
144
+ - **Delete freely** - Outdated or duplicate items should go
@@ -0,0 +1,85 @@
1
+ # Observations Triage
2
+
3
+ Process pending observations: evaluate, resolve, or promote to tasks.
4
+
5
+ ## Workflow
6
+
7
+ ### 1. List Pending Observations
8
+
9
+ ```bash
10
+ kspec meta observations --pending-resolution
11
+ ```
12
+
13
+ ### 2. Process by Type
14
+
15
+ | Type | How to Process |
16
+ |------|----------------|
17
+ | **friction** | Does it reveal a spec gap? → Create spec or inbox item. If already addressed → resolve |
18
+ | **success** | Document in relevant spec or AGENTS.md if broadly useful → resolve |
19
+ | **question** | Answer it if you can. If needs investigation → promote to task |
20
+ | **idea** | Evaluate scope. Clear → inbox or task. Unclear → leave or delete |
21
+
22
+ ### 3. Processing Commands
23
+
24
+ ```bash
25
+ # Promote observation to task (when actionable work is clear)
26
+ kspec meta observations promote @ref --title "Add bulk AC command" --priority 2
27
+
28
+ # Resolve observation (when addressed or no longer relevant)
29
+ kspec meta resolve @ref "Resolution notes"
30
+ kspec meta resolve @ref1 @ref2 "Batch resolution"
31
+
32
+ # Convert inbox item to observation (if it's friction, not a task)
33
+ kspec meta observe --from-inbox @ref
34
+ ```
35
+
36
+ ## When to Use Which
37
+
38
+ - **Inbox** = future work that becomes tasks
39
+ - **Observations** = systemic patterns that inform improvements
40
+ - **Tasks** = clear, actionable implementation work
41
+
42
+ ## Decision Flow
43
+
44
+ ```
45
+ For each observation:
46
+ ├─ Still relevant?
47
+ │ ├─ No → resolve with note
48
+ │ └─ Yes → Does it need action?
49
+ │ ├─ No (just learning) → resolve after documenting
50
+ │ └─ Yes → Is scope clear?
51
+ │ ├─ Yes → promote to task
52
+ │ └─ No → add to inbox for later triage
53
+ ```
54
+
55
+ ## Bulk Resolution with Batch
56
+
57
+ When resolving many observations at once, use `kspec batch`:
58
+
59
+ ```bash
60
+ kspec batch --commands '[
61
+ {"command":"meta resolve","args":{"ref":"@obs1","resolution":"Fixed in PR #100"}},
62
+ {"command":"meta resolve","args":{"ref":"@obs2","resolution":"No longer relevant"}},
63
+ {"command":"meta resolve","args":{"refs":["@obs3","@obs4"],"resolution":"Addressed by new workflow"}}
64
+ ]'
65
+ ```
66
+
67
+ Use `--dry-run` to preview. See `/kspec:help` for full batch documentation.
68
+
69
+ ## Common Patterns
70
+
71
+ | Pattern | Action |
72
+ |---------|--------|
73
+ | Friction already fixed | Verify fix → resolve with note |
74
+ | Friction needs work | Check spec → create if needed → promote or inbox |
75
+ | Success pattern | Document in AGENTS.md or relevant spec → resolve |
76
+ | Open question | Answer if possible → resolve. If needs investigation → promote |
77
+ | Idea with clear scope | Promote to task or inbox |
78
+ | Vague idea | Leave or delete if stale |
79
+
80
+ ## Key Principles
81
+
82
+ - **Observations capture learning** - Not just todos
83
+ - **Friction informs improvement** - Turn pain points into better specs
84
+ - **Success patterns are worth documenting** - Help future sessions
85
+ - **Questions should get answers** - Don't let them linger
@@ -0,0 +1,140 @@
1
+ ---
2
+ name: triage-automation
3
+ description: Assess and prepare tasks for automation eligibility. Verify spec
4
+ coverage, acceptance criteria, and task readiness for automated agents.
5
+ ---
6
+ <!-- kspec-managed -->
7
+ # Automation Triage
8
+
9
+ Assess and prepare tasks for automation eligibility. Goal: make tasks self-contained so they can be worked on by automated agents.
10
+
11
+ ## When to Use
12
+
13
+ - During a triage session focused on automation readiness
14
+ - When new tasks need eligibility assessment
15
+ - Before starting an automated work loop (to ensure eligible tasks exist)
16
+
17
+ ## Philosophy
18
+
19
+ - **Eligible is the goal** — Manual-only should be the exception
20
+ - **Criteria are for visibility** — Help identify what's missing, not auto-approve
21
+ - **Fix issues, don't just assess** — Guide toward making tasks automatable
22
+
23
+ ## Eligibility Criteria
24
+
25
+ A task is ready for automation when:
26
+
27
+ 1. Has `spec_ref` pointing to a resolvable spec
28
+ 2. Spec has acceptance criteria (testable outcomes)
29
+ 3. Task type is not `spike` (spikes output knowledge, not code)
30
+
31
+ **Having spec + ACs is necessary but not sufficient** — you must also verify the spec is appropriate and ACs are adequate for the task.
32
+
33
+ **Task type does not determine automation eligibility.** Any non-spike task can be `automation: eligible` — including design tasks, refactoring tasks, documentation tasks, etc. The `automation` field is the definitive source. Once a task is marked `eligible`, do not second-guess it based on type, title, or description.
34
+
35
+ ## Workflow
36
+
37
+ ### 1. Get Assessment Overview
38
+
39
+ ```bash
40
+ # Show unassessed pending tasks with criteria status
41
+ kspec tasks assess automation
42
+
43
+ # See what auto mode would change
44
+ kspec tasks assess automation --auto --dry-run
45
+ ```
46
+
47
+ ### 2. Process Each Task
48
+
49
+ For each task shown:
50
+
51
+ **If spike:**
52
+ - Mark `manual_only` — spikes are inherently human work
53
+ - `kspec task set @ref --automation manual_only --reason "Spike - output is knowledge"`
54
+
55
+ **If missing spec_ref or no ACs:**
56
+ - Ask: "Fix now or mark for later?"
57
+ - **Fix now:**
58
+ 1. Create or find appropriate spec: `kspec item add --under @parent --title "..."`
59
+ 2. Add acceptance criteria: `kspec item ac add @spec --given "..." --when "..." --then "..."`
60
+ 3. Link task to spec: `kspec task set @ref --spec-ref @spec`
61
+ 4. Re-assess and mark eligible if appropriate
62
+ - **Mark for later:**
63
+ - `kspec task set @ref --automation needs_review --reason "Missing spec - needs spec creation"`
64
+
65
+ **If has spec + ACs:**
66
+ - Review for eligibility:
67
+ - Is the spec appropriate for this task?
68
+ - Are the ACs adequate and testable?
69
+ - Does the task have sufficient context?
70
+ - If yes: `kspec task set @ref --automation eligible`
71
+ - If no: Fix issues or mark `needs_review` with specific reason
72
+
73
+ ### 3. Batch Processing with Auto Mode
74
+
75
+ For fast triage of obvious cases:
76
+
77
+ ```bash
78
+ # Apply auto mode (spikes → manual_only, missing → needs_review)
79
+ kspec tasks assess automation --auto
80
+
81
+ # Then manually review the "review_for_eligible" tasks
82
+ kspec tasks ready --unassessed
83
+ ```
84
+
85
+ Auto mode is conservative:
86
+ - Spikes → `manual_only`
87
+ - Missing spec/ACs → `needs_review`
88
+ - Has spec + ACs → **NOT auto-marked** (requires review)
89
+
90
+ ## Commands Reference
91
+
92
+ ```bash
93
+ # Assessment
94
+ kspec tasks assess automation # Show unassessed with criteria
95
+ kspec tasks assess automation @ref # Single task
96
+ kspec tasks assess automation --all # Include already-assessed
97
+ kspec tasks assess automation --auto # Apply obvious cases
98
+ kspec tasks assess automation --dry-run # Preview changes
99
+
100
+ # Setting automation status
101
+ kspec task set @ref --automation eligible
102
+ kspec task set @ref --automation needs_review --reason "Why"
103
+ kspec task set @ref --automation manual_only --reason "Why"
104
+ kspec task set @ref --no-automation # Clear to unassessed
105
+
106
+ # Filtering tasks
107
+ kspec tasks ready --unassessed # Tasks needing assessment
108
+ kspec tasks ready --eligible # Automation-ready tasks
109
+ kspec tasks ready --needs-review # Tasks needing human triage
110
+ ```
111
+
112
+ ## Assessment Output
113
+
114
+ ```
115
+ @task-slug "Task title"
116
+ spec_ref: ✓ @feature-slug
117
+ has_acs: ✓ 3 acceptance criteria
118
+ not_spike: ✓ type: task
119
+ → review_for_eligible (verify spec/AC adequacy)
120
+ ```
121
+
122
+ | Recommendation | Meaning | Auto Mode Action |
123
+ |----------------|---------|------------------|
124
+ | `review_for_eligible` | Passes criteria, needs review | No change (manual review) |
125
+ | `needs_review` | Missing spec or ACs | Sets `needs_review` with reason |
126
+ | `manual_only` | Spike task | Sets `manual_only` |
127
+
128
+ ## Key Principles
129
+
130
+ - **CLI doesn't auto-mark eligible** — Requires agent/human review
131
+ - **Agents CAN mark eligible** — When reviewing based on user instruction
132
+ - **Add notes when setting status** — Document the "why"
133
+ - **Re-assess after fixes** — After adding spec/ACs, check again
134
+ - **Task type is not destiny** — Any non-spike task can be eligible
135
+
136
+ ## Integration
137
+
138
+ - **`/kspec:triage-inbox`** — Inbox triage may promote items to tasks needing assessment
139
+ - **`kspec tasks ready --eligible`** — Used by task-work loop to find automatable work
140
+ - **Ralph loop** — Consumes eligible tasks; automation assessment feeds the pipeline
@@ -0,0 +1,232 @@
1
+ ---
2
+ name: triage-inbox
3
+ description: Process inbox items using the record-act pattern. Categorize,
4
+ promote to spec/task, merge duplicates, defer, or delete stale items with full
5
+ audit trail.
6
+ ---
7
+ <!-- kspec-managed -->
8
+ # Inbox Triage
9
+
10
+ Systematically process inbox items using the **record → act** pattern. Records decisions with audit trail, then executes actions.
11
+
12
+ ## When to Use
13
+
14
+ - Processing accumulated inbox items
15
+ - During a triage session (`kspec workflow start @inbox-triage`)
16
+ - When inbox count is growing and needs attention
17
+
18
+ ## Core Concept: Record → Act
19
+
20
+ Triage separates **decision-making** from **execution**:
21
+
22
+ 1. **Record** the decision (what to do + why)
23
+ 2. **Act** on the decision (execute it)
24
+
25
+ This enables review, override, and audit trails.
26
+
27
+ ```bash
28
+ # Step 1: Record what you want to do
29
+ kspec triage record @inbox-ref --action promote --reasoning "Clear feature request"
30
+
31
+ # Step 2: Execute the decision
32
+ kspec triage act @triage-ref
33
+ ```
34
+
35
+ ### Actions
36
+
37
+ | Action | What `act` does |
38
+ |--------|-----------------|
39
+ | `promote` | Creates task from inbox item snapshot |
40
+ | `delete` | Deletes the inbox item |
41
+ | `defer` | Records deferral, no side effect |
42
+ | `spec-gap` | Creates observation tagged spec-gap |
43
+ | `duplicate` | Deletes the inbox item |
44
+
45
+ ### Lifecycle
46
+
47
+ ```
48
+ record (with action) override (optional) act
49
+ → triaged → triaged → acted_on
50
+ ```
51
+
52
+ ## Workflow
53
+
54
+ ### 1. Gather Context
55
+
56
+ ```bash
57
+ kspec session start --full
58
+ kspec inbox list
59
+ ```
60
+
61
+ ### 2. Categorize Items
62
+
63
+ Group inbox items by type:
64
+ - **Bugs** — implementation issues, errors
65
+ - **Spec gaps** — missing or incomplete specs
66
+ - **Quick wins** — small, well-defined improvements
67
+ - **Larger features** — need plan mode to design
68
+ - **Process/workflow** — meta improvements
69
+ - **Delete candidates** — outdated, duplicates, already done
70
+
71
+ Present categories to user for alignment.
72
+
73
+ ### 3. Triage Each Item
74
+
75
+ **Interactive mode** (recommended for multiple items):
76
+
77
+ ```bash
78
+ kspec triage start
79
+ # Presents untriaged items one by one
80
+ # Prompts for action + reasoning
81
+ # Ctrl+C preserves all previously committed records
82
+ ```
83
+
84
+ **Individual recording** (for targeted decisions):
85
+
86
+ ```bash
87
+ kspec triage record @ref --action promote --reasoning "Clear feature request with spec coverage"
88
+ kspec triage record @ref --action delete --reasoning "Already implemented in PR #123"
89
+ kspec triage record @ref --action defer --reasoning "Depends on auth system redesign"
90
+ kspec triage record @ref --action spec-gap --reasoning "No spec covers error handling for this flow"
91
+ kspec triage record @ref --action duplicate --reasoning "Covered by @existing-spec"
92
+ ```
93
+
94
+ ### 4. Review and Execute Decisions
95
+
96
+ ```bash
97
+ # Review what was recorded
98
+ kspec triage list --status triaged
99
+
100
+ # Preview before executing
101
+ kspec triage act @triage-ref --dry-run
102
+
103
+ # Execute decisions
104
+ kspec triage act @triage-ref
105
+ ```
106
+
107
+ ### 5. Override If Needed
108
+
109
+ ```bash
110
+ # Override changes the action while preserving the audit trail
111
+ kspec triage override @triage-ref --action defer --reasoning "Reconsidered - not ready"
112
+
113
+ # Then act on the updated decision
114
+ kspec triage act @triage-ref
115
+ ```
116
+
117
+ ## Spec-First Processing
118
+
119
+ For behavior changes, check spec coverage before promoting:
120
+
121
+ 1. **Check coverage**: `kspec item list | grep <relevant>`
122
+ 2. **Identify gaps**: Does spec have description AND acceptance criteria?
123
+ 3. **Update spec**:
124
+ ```bash
125
+ kspec item set @ref --description "..."
126
+ kspec item ac add @ref --given "..." --when "..." --then "..."
127
+ ```
128
+ 4. **Record and act**:
129
+ ```bash
130
+ kspec triage record @inbox-ref --action promote --reasoning "Spec updated" --evidence @spec-ref
131
+ kspec triage act @triage-ref
132
+ ```
133
+
134
+ ## Plan Mode for Larger Items
135
+
136
+ When an item needs design work:
137
+
138
+ 1. Enter plan mode
139
+ 2. Explore codebase for patterns/context
140
+ 3. Design spec structure and implementation approach
141
+ 4. Write plan, exit for approval
142
+ 5. Execute: create spec, add AC, derive task
143
+
144
+ ## Observation Processing
145
+
146
+ During triage sessions, you may also process pending observations:
147
+
148
+ ```bash
149
+ kspec meta observations --pending-resolution
150
+ ```
151
+
152
+ For each observation:
153
+
154
+ | Type | How to Process |
155
+ |------|----------------|
156
+ | **friction** | Reveals spec gap? → Create spec or inbox item. Already addressed? → Resolve |
157
+ | **success** | Document in relevant spec or AGENTS.md if broadly useful → Resolve |
158
+ | **question** | Answer if you can. Needs investigation? → Promote to task |
159
+ | **idea** | Clear scope? → Inbox or task. Unclear? → Leave or delete if stale |
160
+
161
+ ```bash
162
+ # Promote observation to task
163
+ kspec meta promote @ref --title "Add bulk AC command" --priority 2
164
+
165
+ # Resolve observation
166
+ kspec meta resolve @ref "Resolution notes"
167
+ kspec meta resolve --refs @ref1 @ref2 --resolution "Batch resolution"
168
+
169
+ # Convert inbox item to observation (if it's a pattern, not a task)
170
+ kspec meta observe --from-inbox @ref
171
+ ```
172
+
173
+ ## Export for Context
174
+
175
+ Share triage decisions with other agents or sessions:
176
+
177
+ ```bash
178
+ # Markdown context blocks (for agent handoff)
179
+ kspec triage export --format context
180
+
181
+ # Full structured data
182
+ kspec triage export --format json
183
+ ```
184
+
185
+ ## Bulk Operations with Batch
186
+
187
+ When triaging many items, use `kspec batch` for atomic operations:
188
+
189
+ ```bash
190
+ kspec batch --commands '[
191
+ {"command":"triage record","args":{"ref":"@ref1","action":"delete","reasoning":"Stale"}},
192
+ {"command":"triage record","args":{"ref":"@ref2","action":"promote","reasoning":"Clear scope"}}
193
+ ]'
194
+ ```
195
+
196
+ Use `--dry-run` to preview. See `/kspec:help` for full batch documentation.
197
+
198
+ ## Common Patterns
199
+
200
+ | Pattern | Action |
201
+ |---------|--------|
202
+ | Already implemented | Verify impl exists → check spec gaps → record delete |
203
+ | Duplicate of existing | Verify original covers scope → record duplicate |
204
+ | Small flag/option | Update spec + AC → record promote |
205
+ | New command | Plan mode → design spec → record promote with evidence |
206
+ | Bug report | Check spec coverage → update spec → record promote |
207
+ | Vague idea | Record defer, or leave untriaged for later |
208
+ | Missing spec | Record spec-gap → creates observation for follow-up |
209
+
210
+ ## Key Principles
211
+
212
+ - **Record before act** — Separate decisions from execution for audit trail
213
+ - **Ask one question at a time** — Don't batch decisions in interactive mode
214
+ - **Spec before task** — Fill spec gaps before promoting to tasks
215
+ - **AC is required** — Specs without acceptance criteria are incomplete
216
+ - **Use CLI, not YAML** — All changes through kspec commands
217
+ - **Delete freely** — Outdated or duplicate items should go
218
+
219
+ ## Progress Tracking
220
+
221
+ At session end, provide summary:
222
+ - Items triaged (recorded decisions)
223
+ - Actions executed (promoted, deleted, deferred, spec-gap, duplicate)
224
+ - Tasks created/updated
225
+ - Observations resolved
226
+ - Remaining items
227
+
228
+ ## Integration
229
+
230
+ - **`/kspec:reflect`** — Session reflection may generate inbox items for triage
231
+ - **`/kspec:observations`** — Captures systemic patterns found during triage
232
+ - **`kspec session start`** — Shows inbox count for triage awareness