@dedesfr/prompter 0.6.15 → 0.7.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 (375) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/cli/index.js +144 -12
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/archive.d.ts +11 -0
  5. package/dist/commands/archive.d.ts.map +1 -0
  6. package/dist/commands/archive.js +280 -0
  7. package/dist/commands/archive.js.map +1 -0
  8. package/dist/commands/change.d.ts +35 -0
  9. package/dist/commands/change.d.ts.map +1 -0
  10. package/dist/commands/change.js +277 -0
  11. package/dist/commands/change.js.map +1 -0
  12. package/dist/commands/config.d.ts +8 -0
  13. package/dist/commands/config.d.ts.map +1 -0
  14. package/dist/commands/config.js +198 -0
  15. package/dist/commands/config.js.map +1 -0
  16. package/dist/commands/list.d.ts +2 -2
  17. package/dist/commands/list.d.ts.map +1 -1
  18. package/dist/commands/list.js +153 -47
  19. package/dist/commands/list.js.map +1 -1
  20. package/dist/commands/show.d.ts +14 -0
  21. package/dist/commands/show.d.ts.map +1 -0
  22. package/dist/commands/show.js +132 -0
  23. package/dist/commands/show.js.map +1 -0
  24. package/dist/commands/spec.d.ts +15 -0
  25. package/dist/commands/spec.d.ts.map +1 -0
  26. package/dist/commands/spec.js +225 -0
  27. package/dist/commands/spec.js.map +1 -0
  28. package/dist/commands/validate.d.ts +24 -0
  29. package/dist/commands/validate.d.ts.map +1 -0
  30. package/dist/commands/validate.js +294 -0
  31. package/dist/commands/validate.js.map +1 -0
  32. package/dist/core/artifact-graph/graph.d.ts +56 -0
  33. package/dist/core/artifact-graph/graph.d.ts.map +1 -0
  34. package/dist/core/artifact-graph/graph.js +141 -0
  35. package/dist/core/artifact-graph/graph.js.map +1 -0
  36. package/dist/core/artifact-graph/index.d.ts +7 -0
  37. package/dist/core/artifact-graph/index.d.ts.map +1 -0
  38. package/dist/core/artifact-graph/index.js +13 -0
  39. package/dist/core/artifact-graph/index.js.map +1 -0
  40. package/dist/core/artifact-graph/instruction-loader.d.ts +130 -0
  41. package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -0
  42. package/dist/core/artifact-graph/instruction-loader.js +173 -0
  43. package/dist/core/artifact-graph/instruction-loader.js.map +1 -0
  44. package/dist/core/artifact-graph/resolver.d.ts +61 -0
  45. package/dist/core/artifact-graph/resolver.d.ts.map +1 -0
  46. package/dist/core/artifact-graph/resolver.js +187 -0
  47. package/dist/core/artifact-graph/resolver.js.map +1 -0
  48. package/dist/core/artifact-graph/schema.d.ts +13 -0
  49. package/dist/core/artifact-graph/schema.d.ts.map +1 -0
  50. package/dist/core/artifact-graph/schema.js +108 -0
  51. package/dist/core/artifact-graph/schema.js.map +1 -0
  52. package/dist/core/artifact-graph/state.d.ts +12 -0
  53. package/dist/core/artifact-graph/state.d.ts.map +1 -0
  54. package/dist/core/artifact-graph/state.js +54 -0
  55. package/dist/core/artifact-graph/state.js.map +1 -0
  56. package/dist/core/artifact-graph/types.d.ts +45 -0
  57. package/dist/core/artifact-graph/types.d.ts.map +1 -0
  58. package/dist/core/artifact-graph/types.js +43 -0
  59. package/dist/core/artifact-graph/types.js.map +1 -0
  60. package/dist/core/completions/command-registry.d.ts +7 -0
  61. package/dist/core/completions/command-registry.d.ts.map +1 -0
  62. package/dist/core/completions/command-registry.js +380 -0
  63. package/dist/core/completions/command-registry.js.map +1 -0
  64. package/dist/core/completions/completion-provider.d.ts +60 -0
  65. package/dist/core/completions/completion-provider.d.ts.map +1 -0
  66. package/dist/core/completions/completion-provider.js +102 -0
  67. package/dist/core/completions/completion-provider.js.map +1 -0
  68. package/dist/core/completions/generators/bash-generator.d.ts +32 -0
  69. package/dist/core/completions/generators/bash-generator.d.ts.map +1 -0
  70. package/dist/core/completions/generators/bash-generator.js +174 -0
  71. package/dist/core/completions/generators/bash-generator.js.map +1 -0
  72. package/dist/core/completions/generators/fish-generator.d.ts +32 -0
  73. package/dist/core/completions/generators/fish-generator.d.ts.map +1 -0
  74. package/dist/core/completions/generators/fish-generator.js +157 -0
  75. package/dist/core/completions/generators/fish-generator.js.map +1 -0
  76. package/dist/core/completions/generators/powershell-generator.d.ts +33 -0
  77. package/dist/core/completions/generators/powershell-generator.d.ts.map +1 -0
  78. package/dist/core/completions/generators/powershell-generator.js +207 -0
  79. package/dist/core/completions/generators/powershell-generator.js.map +1 -0
  80. package/dist/core/completions/generators/zsh-generator.d.ts +44 -0
  81. package/dist/core/completions/generators/zsh-generator.d.ts.map +1 -0
  82. package/dist/core/completions/generators/zsh-generator.js +250 -0
  83. package/dist/core/completions/generators/zsh-generator.js.map +1 -0
  84. package/dist/core/completions/templates/bash-templates.d.ts +6 -0
  85. package/dist/core/completions/templates/bash-templates.d.ts.map +1 -0
  86. package/dist/core/completions/templates/bash-templates.js +24 -0
  87. package/dist/core/completions/templates/bash-templates.js.map +1 -0
  88. package/dist/core/completions/templates/fish-templates.d.ts +7 -0
  89. package/dist/core/completions/templates/fish-templates.d.ts.map +1 -0
  90. package/dist/core/completions/templates/fish-templates.js +39 -0
  91. package/dist/core/completions/templates/fish-templates.js.map +1 -0
  92. package/dist/core/completions/templates/powershell-templates.d.ts +6 -0
  93. package/dist/core/completions/templates/powershell-templates.d.ts.map +1 -0
  94. package/dist/core/completions/templates/powershell-templates.js +25 -0
  95. package/dist/core/completions/templates/powershell-templates.js.map +1 -0
  96. package/dist/core/completions/templates/zsh-templates.d.ts +6 -0
  97. package/dist/core/completions/templates/zsh-templates.d.ts.map +1 -0
  98. package/dist/core/completions/templates/zsh-templates.js +36 -0
  99. package/dist/core/completions/templates/zsh-templates.js.map +1 -0
  100. package/dist/core/completions/types.d.ts +78 -0
  101. package/dist/core/completions/types.d.ts.map +1 -0
  102. package/dist/core/completions/types.js +2 -0
  103. package/dist/core/completions/types.js.map +1 -0
  104. package/dist/core/config-schema.d.ts +76 -0
  105. package/dist/core/config-schema.d.ts.map +1 -0
  106. package/dist/core/config-schema.js +200 -0
  107. package/dist/core/config-schema.js.map +1 -0
  108. package/dist/core/config.d.ts.map +1 -1
  109. package/dist/core/config.js +18 -0
  110. package/dist/core/config.js.map +1 -1
  111. package/dist/core/configurators/slash/antigravity.d.ts.map +1 -1
  112. package/dist/core/configurators/slash/antigravity.js +6 -0
  113. package/dist/core/configurators/slash/antigravity.js.map +1 -1
  114. package/dist/core/configurators/slash/base.js +1 -1
  115. package/dist/core/configurators/slash/base.js.map +1 -1
  116. package/dist/core/configurators/slash/claude.d.ts.map +1 -1
  117. package/dist/core/configurators/slash/claude.js +6 -0
  118. package/dist/core/configurators/slash/claude.js.map +1 -1
  119. package/dist/core/configurators/slash/codex.d.ts.map +1 -1
  120. package/dist/core/configurators/slash/codex.js +6 -0
  121. package/dist/core/configurators/slash/codex.js.map +1 -1
  122. package/dist/core/configurators/slash/github-copilot.d.ts.map +1 -1
  123. package/dist/core/configurators/slash/github-copilot.js +6 -0
  124. package/dist/core/configurators/slash/github-copilot.js.map +1 -1
  125. package/dist/core/configurators/slash/kilocode.d.ts.map +1 -1
  126. package/dist/core/configurators/slash/kilocode.js +6 -0
  127. package/dist/core/configurators/slash/kilocode.js.map +1 -1
  128. package/dist/core/configurators/slash/opencode.d.ts.map +1 -1
  129. package/dist/core/configurators/slash/opencode.js +6 -0
  130. package/dist/core/configurators/slash/opencode.js.map +1 -1
  131. package/dist/core/converters/json-converter.d.ts +6 -0
  132. package/dist/core/converters/json-converter.d.ts.map +1 -0
  133. package/dist/core/converters/json-converter.js +51 -0
  134. package/dist/core/converters/json-converter.js.map +1 -0
  135. package/dist/core/global-config.d.ts +39 -0
  136. package/dist/core/global-config.d.ts.map +1 -0
  137. package/dist/core/global-config.js +115 -0
  138. package/dist/core/global-config.js.map +1 -0
  139. package/dist/core/parsers/change-parser.d.ts +13 -0
  140. package/dist/core/parsers/change-parser.d.ts.map +1 -0
  141. package/dist/core/parsers/change-parser.js +193 -0
  142. package/dist/core/parsers/change-parser.js.map +1 -0
  143. package/dist/core/parsers/markdown-parser.d.ts +22 -0
  144. package/dist/core/parsers/markdown-parser.d.ts.map +1 -0
  145. package/dist/core/parsers/markdown-parser.js +187 -0
  146. package/dist/core/parsers/markdown-parser.js.map +1 -0
  147. package/dist/core/parsers/requirement-blocks.d.ts +37 -0
  148. package/dist/core/parsers/requirement-blocks.d.ts.map +1 -0
  149. package/dist/core/parsers/requirement-blocks.js +201 -0
  150. package/dist/core/parsers/requirement-blocks.js.map +1 -0
  151. package/dist/core/prompt-templates.d.ts +3 -0
  152. package/dist/core/prompt-templates.d.ts.map +1 -1
  153. package/dist/core/prompt-templates.js +66 -0
  154. package/dist/core/prompt-templates.js.map +1 -1
  155. package/dist/core/schemas/base.schema.d.ts +13 -0
  156. package/dist/core/schemas/base.schema.d.ts.map +1 -0
  157. package/dist/core/schemas/base.schema.js +13 -0
  158. package/dist/core/schemas/base.schema.js.map +1 -0
  159. package/dist/core/schemas/change.schema.d.ts +73 -0
  160. package/dist/core/schemas/change.schema.d.ts.map +1 -0
  161. package/dist/core/schemas/change.schema.js +31 -0
  162. package/dist/core/schemas/change.schema.js.map +1 -0
  163. package/dist/core/schemas/index.d.ts +4 -0
  164. package/dist/core/schemas/index.d.ts.map +1 -0
  165. package/dist/core/schemas/index.js +4 -0
  166. package/dist/core/schemas/index.js.map +1 -0
  167. package/dist/core/schemas/spec.schema.d.ts +18 -0
  168. package/dist/core/schemas/spec.schema.d.ts.map +1 -0
  169. package/dist/core/schemas/spec.schema.js +15 -0
  170. package/dist/core/schemas/spec.schema.js.map +1 -0
  171. package/dist/core/specs-apply.d.ts +73 -0
  172. package/dist/core/specs-apply.d.ts.map +1 -0
  173. package/dist/core/specs-apply.js +384 -0
  174. package/dist/core/specs-apply.js.map +1 -0
  175. package/dist/core/styles/palette.d.ts +7 -0
  176. package/dist/core/styles/palette.d.ts.map +1 -0
  177. package/dist/core/styles/palette.js +8 -0
  178. package/dist/core/styles/palette.js.map +1 -0
  179. package/dist/core/templates/slash-command-templates.d.ts +1 -1
  180. package/dist/core/templates/slash-command-templates.d.ts.map +1 -1
  181. package/dist/core/templates/slash-command-templates.js +4 -1
  182. package/dist/core/templates/slash-command-templates.js.map +1 -1
  183. package/dist/core/validation/constants.d.ts +34 -0
  184. package/dist/core/validation/constants.d.ts.map +1 -0
  185. package/dist/core/validation/constants.js +40 -0
  186. package/dist/core/validation/constants.js.map +1 -0
  187. package/dist/core/validation/types.d.ts +18 -0
  188. package/dist/core/validation/types.d.ts.map +1 -0
  189. package/dist/core/validation/types.js +2 -0
  190. package/dist/core/validation/types.js.map +1 -0
  191. package/dist/core/validation/validator.d.ts +33 -0
  192. package/dist/core/validation/validator.d.ts.map +1 -0
  193. package/dist/core/validation/validator.js +409 -0
  194. package/dist/core/validation/validator.js.map +1 -0
  195. package/dist/core/view.d.ts +8 -0
  196. package/dist/core/view.d.ts.map +1 -0
  197. package/dist/core/view.js +168 -0
  198. package/dist/core/view.js.map +1 -0
  199. package/dist/utils/change-metadata.d.ts +47 -0
  200. package/dist/utils/change-metadata.d.ts.map +1 -0
  201. package/dist/utils/change-metadata.js +130 -0
  202. package/dist/utils/change-metadata.js.map +1 -0
  203. package/dist/utils/change-utils.d.ts +51 -0
  204. package/dist/utils/change-utils.d.ts.map +1 -0
  205. package/dist/utils/change-utils.js +100 -0
  206. package/dist/utils/change-utils.js.map +1 -0
  207. package/dist/utils/file-system.d.ts +25 -0
  208. package/dist/utils/file-system.d.ts.map +1 -0
  209. package/dist/utils/file-system.js +218 -0
  210. package/dist/utils/file-system.js.map +1 -0
  211. package/dist/utils/index.d.ts +4 -0
  212. package/dist/utils/index.d.ts.map +1 -0
  213. package/dist/utils/index.js +5 -0
  214. package/dist/utils/index.js.map +1 -0
  215. package/dist/utils/interactive.d.ts +18 -0
  216. package/dist/utils/interactive.d.ts.map +1 -0
  217. package/dist/utils/interactive.js +21 -0
  218. package/dist/utils/interactive.js.map +1 -0
  219. package/dist/utils/item-discovery.d.ts +4 -0
  220. package/dist/utils/item-discovery.d.ts.map +1 -0
  221. package/dist/utils/item-discovery.js +72 -0
  222. package/dist/utils/item-discovery.js.map +1 -0
  223. package/dist/utils/match.d.ts +3 -0
  224. package/dist/utils/match.d.ts.map +1 -0
  225. package/dist/utils/match.js +22 -0
  226. package/dist/utils/match.js.map +1 -0
  227. package/dist/utils/shell-detection.d.ts +20 -0
  228. package/dist/utils/shell-detection.d.ts.map +1 -0
  229. package/dist/utils/shell-detection.js +41 -0
  230. package/dist/utils/shell-detection.js.map +1 -0
  231. package/dist/utils/task-progress.d.ts +8 -0
  232. package/dist/utils/task-progress.d.ts.map +1 -0
  233. package/dist/utils/task-progress.js +36 -0
  234. package/dist/utils/task-progress.js.map +1 -0
  235. package/docs/tasks.md +1 -1
  236. package/package.json +6 -2
  237. package/prompt/apply.md +17 -0
  238. package/prompt/archive.md +21 -0
  239. package/prompt/proposal.md +22 -0
  240. package/src/cli/index.ts +151 -16
  241. package/src/commands/archive.ts +302 -0
  242. package/src/commands/change.ts +292 -0
  243. package/src/commands/config.ts +233 -0
  244. package/src/commands/list.ts +176 -66
  245. package/src/commands/show.ts +138 -0
  246. package/src/commands/spec.ts +251 -0
  247. package/src/commands/validate.ts +326 -0
  248. package/src/core/artifact-graph/graph.ts +167 -0
  249. package/src/core/artifact-graph/index.ts +44 -0
  250. package/src/core/artifact-graph/instruction-loader.ts +302 -0
  251. package/src/core/artifact-graph/resolver.ts +226 -0
  252. package/src/core/artifact-graph/schema.ts +124 -0
  253. package/src/core/artifact-graph/state.ts +64 -0
  254. package/src/core/artifact-graph/types.ts +65 -0
  255. package/src/core/completions/command-registry.ts +382 -0
  256. package/src/core/completions/completion-provider.ts +128 -0
  257. package/src/core/completions/generators/bash-generator.ts +191 -0
  258. package/src/core/completions/generators/fish-generator.ts +188 -0
  259. package/src/core/completions/generators/powershell-generator.ts +223 -0
  260. package/src/core/completions/generators/zsh-generator.ts +281 -0
  261. package/src/core/completions/templates/bash-templates.ts +24 -0
  262. package/src/core/completions/templates/fish-templates.ts +40 -0
  263. package/src/core/completions/templates/powershell-templates.ts +25 -0
  264. package/src/core/completions/templates/zsh-templates.ts +36 -0
  265. package/src/core/completions/types.ts +90 -0
  266. package/src/core/config-schema.ts +230 -0
  267. package/src/core/config.ts +18 -0
  268. package/src/core/configurators/slash/antigravity.ts +6 -0
  269. package/src/core/configurators/slash/base.ts +1 -1
  270. package/src/core/configurators/slash/claude.ts +6 -0
  271. package/src/core/configurators/slash/codex.ts +6 -0
  272. package/src/core/configurators/slash/github-copilot.ts +6 -0
  273. package/src/core/configurators/slash/kilocode.ts +6 -0
  274. package/src/core/configurators/slash/opencode.ts +6 -0
  275. package/src/core/converters/json-converter.ts +62 -0
  276. package/src/core/global-config.ts +136 -0
  277. package/src/core/parsers/change-parser.ts +234 -0
  278. package/src/core/parsers/markdown-parser.ts +237 -0
  279. package/src/core/parsers/requirement-blocks.ts +234 -0
  280. package/src/core/prompt-templates.ts +69 -0
  281. package/src/core/schemas/base.schema.ts +20 -0
  282. package/src/core/schemas/change.schema.ts +42 -0
  283. package/src/core/schemas/index.ts +20 -0
  284. package/src/core/schemas/spec.schema.ts +17 -0
  285. package/src/core/specs-apply.ts +483 -0
  286. package/src/core/styles/palette.ts +8 -0
  287. package/src/core/templates/slash-command-templates.ts +7 -1
  288. package/src/core/validation/constants.ts +48 -0
  289. package/src/core/validation/types.ts +19 -0
  290. package/src/core/validation/validator.ts +449 -0
  291. package/src/core/view.ts +219 -0
  292. package/src/utils/change-metadata.ts +171 -0
  293. package/src/utils/change-utils.ts +131 -0
  294. package/src/utils/file-system.ts +252 -0
  295. package/src/utils/index.ts +12 -0
  296. package/src/utils/interactive.ts +29 -0
  297. package/src/utils/item-discovery.ts +66 -0
  298. package/src/utils/match.ts +26 -0
  299. package/src/utils/shell-detection.ts +62 -0
  300. package/src/utils/task-progress.ts +43 -0
  301. package/dist/commands/ai-humanizer.d.ts +0 -11
  302. package/dist/commands/ai-humanizer.d.ts.map +0 -1
  303. package/dist/commands/ai-humanizer.js +0 -97
  304. package/dist/commands/ai-humanizer.js.map +0 -1
  305. package/dist/commands/api-contract-generator.d.ts +0 -11
  306. package/dist/commands/api-contract-generator.d.ts.map +0 -1
  307. package/dist/commands/api-contract-generator.js +0 -97
  308. package/dist/commands/api-contract-generator.js.map +0 -1
  309. package/dist/commands/design-system.d.ts +0 -11
  310. package/dist/commands/design-system.d.ts.map +0 -1
  311. package/dist/commands/design-system.js +0 -97
  312. package/dist/commands/design-system.js.map +0 -1
  313. package/dist/commands/document-explainer.d.ts +0 -11
  314. package/dist/commands/document-explainer.d.ts.map +0 -1
  315. package/dist/commands/document-explainer.js +0 -97
  316. package/dist/commands/document-explainer.js.map +0 -1
  317. package/dist/commands/epic-generator.d.ts +0 -11
  318. package/dist/commands/epic-generator.d.ts.map +0 -1
  319. package/dist/commands/epic-generator.js +0 -97
  320. package/dist/commands/epic-generator.js.map +0 -1
  321. package/dist/commands/erd-generator.d.ts +0 -11
  322. package/dist/commands/erd-generator.d.ts.map +0 -1
  323. package/dist/commands/erd-generator.js +0 -97
  324. package/dist/commands/erd-generator.js.map +0 -1
  325. package/dist/commands/fsd-generator.d.ts +0 -11
  326. package/dist/commands/fsd-generator.d.ts.map +0 -1
  327. package/dist/commands/fsd-generator.js +0 -97
  328. package/dist/commands/fsd-generator.js.map +0 -1
  329. package/dist/commands/prd-agent-generator.d.ts +0 -11
  330. package/dist/commands/prd-agent-generator.d.ts.map +0 -1
  331. package/dist/commands/prd-agent-generator.js +0 -95
  332. package/dist/commands/prd-agent-generator.js.map +0 -1
  333. package/dist/commands/prd-generator.d.ts +0 -11
  334. package/dist/commands/prd-generator.d.ts.map +0 -1
  335. package/dist/commands/prd-generator.js +0 -97
  336. package/dist/commands/prd-generator.js.map +0 -1
  337. package/dist/commands/product-brief.d.ts +0 -11
  338. package/dist/commands/product-brief.d.ts.map +0 -1
  339. package/dist/commands/product-brief.js +0 -97
  340. package/dist/commands/product-brief.js.map +0 -1
  341. package/dist/commands/skill-creator.d.ts +0 -11
  342. package/dist/commands/skill-creator.d.ts.map +0 -1
  343. package/dist/commands/skill-creator.js +0 -101
  344. package/dist/commands/skill-creator.js.map +0 -1
  345. package/dist/commands/story-generator.d.ts +0 -11
  346. package/dist/commands/story-generator.d.ts.map +0 -1
  347. package/dist/commands/story-generator.js +0 -97
  348. package/dist/commands/story-generator.js.map +0 -1
  349. package/dist/commands/tdd-generator.d.ts +0 -11
  350. package/dist/commands/tdd-generator.d.ts.map +0 -1
  351. package/dist/commands/tdd-generator.js +0 -97
  352. package/dist/commands/tdd-generator.js.map +0 -1
  353. package/dist/commands/tdd-lite-generator.d.ts +0 -11
  354. package/dist/commands/tdd-lite-generator.d.ts.map +0 -1
  355. package/dist/commands/tdd-lite-generator.js +0 -97
  356. package/dist/commands/tdd-lite-generator.js.map +0 -1
  357. package/dist/commands/wireframe-generator.d.ts +0 -11
  358. package/dist/commands/wireframe-generator.d.ts.map +0 -1
  359. package/dist/commands/wireframe-generator.js +0 -97
  360. package/dist/commands/wireframe-generator.js.map +0 -1
  361. package/src/commands/ai-humanizer.ts +0 -118
  362. package/src/commands/api-contract-generator.ts +0 -118
  363. package/src/commands/design-system.ts +0 -118
  364. package/src/commands/document-explainer.ts +0 -118
  365. package/src/commands/epic-generator.ts +0 -118
  366. package/src/commands/erd-generator.ts +0 -118
  367. package/src/commands/fsd-generator.ts +0 -118
  368. package/src/commands/prd-agent-generator.ts +0 -115
  369. package/src/commands/prd-generator.ts +0 -118
  370. package/src/commands/product-brief.ts +0 -118
  371. package/src/commands/skill-creator.ts +0 -123
  372. package/src/commands/story-generator.ts +0 -118
  373. package/src/commands/tdd-generator.ts +0 -118
  374. package/src/commands/tdd-lite-generator.ts +0 -118
  375. package/src/commands/wireframe-generator.ts +0 -118
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Static template strings for Bash completion scripts.
3
+ * These are Bash-specific helper functions that never change.
4
+ */
5
+
6
+ export const BASH_DYNAMIC_HELPERS = `# Dynamic completion helpers
7
+
8
+ _prompter_complete_changes() {
9
+ local changes
10
+ changes=$(prompter __complete changes 2>/dev/null | cut -f1)
11
+ COMPREPLY=($(compgen -W "$changes" -- "$cur"))
12
+ }
13
+
14
+ _prompter_complete_specs() {
15
+ local specs
16
+ specs=$(prompter __complete specs 2>/dev/null | cut -f1)
17
+ COMPREPLY=($(compgen -W "$specs" -- "$cur"))
18
+ }
19
+
20
+ _prompter_complete_items() {
21
+ local items
22
+ items=$(prompter __complete changes 2>/dev/null | cut -f1; prompter __complete specs 2>/dev/null | cut -f1)
23
+ COMPREPLY=($(compgen -W "$items" -- "$cur"))
24
+ }`;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Static template strings for Fish completion scripts.
3
+ * These are Fish-specific helper functions that never change.
4
+ */
5
+
6
+ export const FISH_STATIC_HELPERS = `# Helper function to check if a subcommand is present
7
+ function __fish_prompter_using_subcommand
8
+ set -l cmd (commandline -opc)
9
+ set -e cmd[1]
10
+ for i in $argv
11
+ if contains -- $i $cmd
12
+ return 0
13
+ end
14
+ end
15
+ return 1
16
+ end
17
+
18
+ function __fish_prompter_no_subcommand
19
+ set -l cmd (commandline -opc)
20
+ test (count $cmd) -eq 1
21
+ end`;
22
+
23
+ export const FISH_DYNAMIC_HELPERS = `# Dynamic completion helpers
24
+
25
+ function __fish_prompter_changes
26
+ prompter __complete changes 2>/dev/null | while read -l id desc
27
+ printf '%s\\t%s\\n' "$id" "$desc"
28
+ end
29
+ end
30
+
31
+ function __fish_prompter_specs
32
+ prompter __complete specs 2>/dev/null | while read -l id desc
33
+ printf '%s\\t%s\\n' "$id" "$desc"
34
+ end
35
+ end
36
+
37
+ function __fish_prompter_items
38
+ __fish_prompter_changes
39
+ __fish_prompter_specs
40
+ end`;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Static template strings for PowerShell completion scripts.
3
+ * These are PowerShell-specific helper functions that never change.
4
+ */
5
+
6
+ export const POWERSHELL_DYNAMIC_HELPERS = `# Dynamic completion helpers
7
+
8
+ function Get-PrompterChanges {
9
+ $output = prompter __complete changes 2>$null
10
+ if ($output) {
11
+ $output | ForEach-Object {
12
+ ($_ -split "\\t")[0]
13
+ }
14
+ }
15
+ }
16
+
17
+ function Get-PrompterSpecs {
18
+ $output = prompter __complete specs 2>$null
19
+ if ($output) {
20
+ $output | ForEach-Object {
21
+ ($_ -split "\\t")[0]
22
+ }
23
+ }
24
+ }
25
+ `;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Static template strings for Zsh completion scripts.
3
+ * These are Zsh-specific helper functions that never change.
4
+ */
5
+
6
+ export const ZSH_DYNAMIC_HELPERS = `# Dynamic completion helpers
7
+
8
+ # Use prompter __complete to get available changes
9
+ _prompter_complete_changes() {
10
+ local -a changes
11
+ while IFS=$'\\t' read -r id desc; do
12
+ changes+=("$id:$desc")
13
+ done < <(prompter __complete changes 2>/dev/null)
14
+ _describe "change" changes
15
+ }
16
+
17
+ # Use prompter __complete to get available specs
18
+ _prompter_complete_specs() {
19
+ local -a specs
20
+ while IFS=$'\\t' read -r id desc; do
21
+ specs+=("$id:$desc")
22
+ done < <(prompter __complete specs 2>/dev/null)
23
+ _describe "spec" specs
24
+ }
25
+
26
+ # Get both changes and specs
27
+ _prompter_complete_items() {
28
+ local -a items
29
+ while IFS=$'\\t' read -r id desc; do
30
+ items+=("$id:$desc")
31
+ done < <(prompter __complete changes 2>/dev/null)
32
+ while IFS=$'\\t' read -r id desc; do
33
+ items+=("$id:$desc")
34
+ done < <(prompter __complete specs 2>/dev/null)
35
+ _describe "item" items
36
+ }`;
@@ -0,0 +1,90 @@
1
+ import { SupportedShell } from '../../utils/shell-detection.js';
2
+
3
+ /**
4
+ * Definition of a command-line flag/option
5
+ */
6
+ export interface FlagDefinition {
7
+ /**
8
+ * Flag name without dashes (e.g., "json", "strict", "no-interactive")
9
+ */
10
+ name: string;
11
+
12
+ /**
13
+ * Short flag name without dash (e.g., "y" for "-y")
14
+ */
15
+ short?: string;
16
+
17
+ /**
18
+ * Human-readable description of what the flag does
19
+ */
20
+ description: string;
21
+
22
+ /**
23
+ * Whether the flag takes an argument value
24
+ */
25
+ takesValue?: boolean;
26
+
27
+ /**
28
+ * Possible values for the flag (for completion suggestions)
29
+ */
30
+ values?: string[];
31
+ }
32
+
33
+ /**
34
+ * Definition of a CLI command
35
+ */
36
+ export interface CommandDefinition {
37
+ /**
38
+ * Command name (e.g., "init", "validate", "show")
39
+ */
40
+ name: string;
41
+
42
+ /**
43
+ * Human-readable description of the command
44
+ */
45
+ description: string;
46
+
47
+ /**
48
+ * Flags/options supported by this command
49
+ */
50
+ flags: FlagDefinition[];
51
+
52
+ /**
53
+ * Subcommands (e.g., "change show", "spec validate")
54
+ */
55
+ subcommands?: CommandDefinition[];
56
+
57
+ /**
58
+ * Whether this command accepts a positional argument (e.g., item name, path)
59
+ */
60
+ acceptsPositional?: boolean;
61
+
62
+ /**
63
+ * Type of positional argument for dynamic completion
64
+ * - 'change-id': Complete with active change IDs
65
+ * - 'spec-id': Complete with spec IDs
66
+ * - 'change-or-spec-id': Complete with both changes and specs
67
+ * - 'path': Complete with file paths
68
+ * - 'shell': Complete with supported shell names
69
+ * - undefined: No specific completion
70
+ */
71
+ positionalType?: 'change-id' | 'spec-id' | 'change-or-spec-id' | 'path' | 'shell';
72
+ }
73
+
74
+ /**
75
+ * Interface for shell-specific completion script generators
76
+ */
77
+ export interface CompletionGenerator {
78
+ /**
79
+ * The shell type this generator targets
80
+ */
81
+ readonly shell: SupportedShell;
82
+
83
+ /**
84
+ * Generate the completion script content
85
+ *
86
+ * @param commands - Command definitions to generate completions for
87
+ * @returns The shell-specific completion script as a string
88
+ */
89
+ generate(commands: CommandDefinition[]): string;
90
+ }
@@ -0,0 +1,230 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Zod schema for global Prompter configuration.
5
+ * Uses passthrough() to preserve unknown fields for forward compatibility.
6
+ */
7
+ export const GlobalConfigSchema = z
8
+ .object({
9
+ featureFlags: z
10
+ .record(z.string(), z.boolean())
11
+ .optional()
12
+ .default({}),
13
+ })
14
+ .passthrough();
15
+
16
+ export type GlobalConfigType = z.infer<typeof GlobalConfigSchema>;
17
+
18
+ /**
19
+ * Default configuration values.
20
+ */
21
+ export const DEFAULT_CONFIG: GlobalConfigType = {
22
+ featureFlags: {},
23
+ };
24
+
25
+ const KNOWN_TOP_LEVEL_KEYS = new Set(Object.keys(DEFAULT_CONFIG));
26
+
27
+ /**
28
+ * Validate a config key path for CLI set operations.
29
+ * Unknown top-level keys are rejected unless explicitly allowed by the caller.
30
+ */
31
+ export function validateConfigKeyPath(path: string): { valid: boolean; reason?: string } {
32
+ const rawKeys = path.split('.');
33
+
34
+ if (rawKeys.length === 0 || rawKeys.some((key) => key.trim() === '')) {
35
+ return { valid: false, reason: 'Key path must not be empty' };
36
+ }
37
+
38
+ const rootKey = rawKeys[0];
39
+ if (!KNOWN_TOP_LEVEL_KEYS.has(rootKey)) {
40
+ return { valid: false, reason: `Unknown top-level key "${rootKey}"` };
41
+ }
42
+
43
+ if (rootKey === 'featureFlags') {
44
+ if (rawKeys.length > 2) {
45
+ return { valid: false, reason: 'featureFlags values are booleans and do not support nested keys' };
46
+ }
47
+ return { valid: true };
48
+ }
49
+
50
+ if (rawKeys.length > 1) {
51
+ return { valid: false, reason: `"${rootKey}" does not support nested keys` };
52
+ }
53
+
54
+ return { valid: true };
55
+ }
56
+
57
+ /**
58
+ * Get a nested value from an object using dot notation.
59
+ *
60
+ * @param obj - The object to access
61
+ * @param path - Dot-separated path (e.g., "featureFlags.someFlag")
62
+ * @returns The value at the path, or undefined if not found
63
+ */
64
+ export function getNestedValue(obj: Record<string, unknown>, path: string): unknown {
65
+ const keys = path.split('.');
66
+ let current: unknown = obj;
67
+
68
+ for (const key of keys) {
69
+ if (current === null || current === undefined) {
70
+ return undefined;
71
+ }
72
+ if (typeof current !== 'object') {
73
+ return undefined;
74
+ }
75
+ current = (current as Record<string, unknown>)[key];
76
+ }
77
+
78
+ return current;
79
+ }
80
+
81
+ /**
82
+ * Set a nested value in an object using dot notation.
83
+ * Creates intermediate objects as needed.
84
+ *
85
+ * @param obj - The object to modify (mutated in place)
86
+ * @param path - Dot-separated path (e.g., "featureFlags.someFlag")
87
+ * @param value - The value to set
88
+ */
89
+ export function setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): void {
90
+ const keys = path.split('.');
91
+ let current: Record<string, unknown> = obj;
92
+
93
+ for (let i = 0; i < keys.length - 1; i++) {
94
+ const key = keys[i];
95
+ if (current[key] === undefined || current[key] === null || typeof current[key] !== 'object') {
96
+ current[key] = {};
97
+ }
98
+ current = current[key] as Record<string, unknown>;
99
+ }
100
+
101
+ const lastKey = keys[keys.length - 1];
102
+ current[lastKey] = value;
103
+ }
104
+
105
+ /**
106
+ * Delete a nested value from an object using dot notation.
107
+ *
108
+ * @param obj - The object to modify (mutated in place)
109
+ * @param path - Dot-separated path (e.g., "featureFlags.someFlag")
110
+ * @returns true if the key existed and was deleted, false otherwise
111
+ */
112
+ export function deleteNestedValue(obj: Record<string, unknown>, path: string): boolean {
113
+ const keys = path.split('.');
114
+ let current: Record<string, unknown> = obj;
115
+
116
+ for (let i = 0; i < keys.length - 1; i++) {
117
+ const key = keys[i];
118
+ if (current[key] === undefined || current[key] === null || typeof current[key] !== 'object') {
119
+ return false;
120
+ }
121
+ current = current[key] as Record<string, unknown>;
122
+ }
123
+
124
+ const lastKey = keys[keys.length - 1];
125
+ if (lastKey in current) {
126
+ delete current[lastKey];
127
+ return true;
128
+ }
129
+ return false;
130
+ }
131
+
132
+ /**
133
+ * Coerce a string value to its appropriate type.
134
+ * - "true" / "false" -> boolean
135
+ * - Numeric strings -> number
136
+ * - Everything else -> string
137
+ *
138
+ * @param value - The string value to coerce
139
+ * @param forceString - If true, always return the value as a string
140
+ * @returns The coerced value
141
+ */
142
+ export function coerceValue(value: string, forceString: boolean = false): string | number | boolean {
143
+ if (forceString) {
144
+ return value;
145
+ }
146
+
147
+ // Boolean coercion
148
+ if (value === 'true') {
149
+ return true;
150
+ }
151
+ if (value === 'false') {
152
+ return false;
153
+ }
154
+
155
+ // Number coercion - must be a valid finite number
156
+ const num = Number(value);
157
+ if (!isNaN(num) && isFinite(num) && value.trim() !== '') {
158
+ return num;
159
+ }
160
+
161
+ return value;
162
+ }
163
+
164
+ /**
165
+ * Format a value for YAML-like display.
166
+ *
167
+ * @param value - The value to format
168
+ * @param indent - Current indentation level
169
+ * @returns Formatted string
170
+ */
171
+ export function formatValueYaml(value: unknown, indent: number = 0): string {
172
+ const indentStr = ' '.repeat(indent);
173
+
174
+ if (value === null || value === undefined) {
175
+ return 'null';
176
+ }
177
+
178
+ if (typeof value === 'boolean' || typeof value === 'number') {
179
+ return String(value);
180
+ }
181
+
182
+ if (typeof value === 'string') {
183
+ return value;
184
+ }
185
+
186
+ if (Array.isArray(value)) {
187
+ if (value.length === 0) {
188
+ return '[]';
189
+ }
190
+ return value.map((item) => `${indentStr}- ${formatValueYaml(item, indent + 1)}`).join('\n');
191
+ }
192
+
193
+ if (typeof value === 'object') {
194
+ const entries = Object.entries(value as Record<string, unknown>);
195
+ if (entries.length === 0) {
196
+ return '{}';
197
+ }
198
+ return entries
199
+ .map(([key, val]) => {
200
+ const formattedVal = formatValueYaml(val, indent + 1);
201
+ if (typeof val === 'object' && val !== null && Object.keys(val).length > 0) {
202
+ return `${indentStr}${key}:\n${formattedVal}`;
203
+ }
204
+ return `${indentStr}${key}: ${formattedVal}`;
205
+ })
206
+ .join('\n');
207
+ }
208
+
209
+ return String(value);
210
+ }
211
+
212
+ /**
213
+ * Validate a configuration object against the schema.
214
+ *
215
+ * @param config - The configuration to validate
216
+ * @returns Validation result with success status and optional error message
217
+ */
218
+ export function validateConfig(config: unknown): { success: boolean; error?: string } {
219
+ try {
220
+ GlobalConfigSchema.parse(config);
221
+ return { success: true };
222
+ } catch (error) {
223
+ if (error instanceof z.ZodError) {
224
+ const zodError = error as z.ZodError;
225
+ const messages = zodError.issues.map((e) => `${e.path.join('.')}: ${e.message}`);
226
+ return { success: false, error: messages.join('; ') };
227
+ }
228
+ return { success: false, error: 'Unknown validation error' };
229
+ }
230
+ }
@@ -44,6 +44,18 @@ export const AVAILABLE_PROMPTS: PromptChoice[] = [
44
44
  description: 'Generate OpenAPI specification from FSD and ERD',
45
45
  sourceFile: 'api-contract-generator.md'
46
46
  },
47
+ {
48
+ name: 'Apply',
49
+ value: 'apply',
50
+ description: 'Implement and apply an approved change proposal',
51
+ sourceFile: 'apply.md'
52
+ },
53
+ {
54
+ name: 'Archive',
55
+ value: 'archive',
56
+ description: 'Archive a completed change and update specs',
57
+ sourceFile: 'archive.md'
58
+ },
47
59
  {
48
60
  name: 'Design System',
49
61
  value: 'design-system',
@@ -98,6 +110,12 @@ export const AVAILABLE_PROMPTS: PromptChoice[] = [
98
110
  description: 'Create concise product brief documents',
99
111
  sourceFile: 'product-brief.md'
100
112
  },
113
+ {
114
+ name: 'Proposal',
115
+ value: 'proposal',
116
+ description: 'Create a new change proposal with spec deltas',
117
+ sourceFile: 'proposal.md'
118
+ },
101
119
  {
102
120
  name: 'QA Test Scenario',
103
121
  value: 'qa-test-scenario',
@@ -14,9 +14,12 @@ const FILE_PATHS: Record<SlashCommandId, string> = {
14
14
  'skill-creator': '.agent/workflows/skill-creator.md',
15
15
  'ai-humanizer': '.agent/workflows/ai-humanizer.md',
16
16
  'api-contract-generator': '.agent/workflows/api-contract-generator.md',
17
+ 'apply': '.agent/workflows/apply.md',
18
+ 'archive': '.agent/workflows/archive.md',
17
19
  'design-system': '.agent/workflows/design-system.md',
18
20
  'erd-generator': '.agent/workflows/erd-generator.md',
19
21
  'fsd-generator': '.agent/workflows/fsd-generator.md',
22
+ 'proposal': '.agent/workflows/proposal.md',
20
23
  'tdd-generator': '.agent/workflows/tdd-generator.md',
21
24
  'tdd-lite-generator': '.agent/workflows/tdd-lite-generator.md',
22
25
  'wireframe-generator': '.agent/workflows/wireframe-generator.md',
@@ -36,9 +39,12 @@ const DESCRIPTIONS: Record<SlashCommandId, string> = {
36
39
  'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
37
40
  'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
38
41
  'api-contract-generator': 'Generate OpenAPI specification from FSD and ERD',
42
+ 'apply': 'Implement and apply an approved change proposal',
43
+ 'archive': 'Archive a completed change and update specs',
39
44
  'design-system': 'Generate comprehensive design system documentation for components and tokens',
40
45
  'erd-generator': 'Generate Entity Relationship Diagram from FSD',
41
46
  'fsd-generator': 'Generate Functional Specification Document from PRD',
47
+ 'proposal': 'Create a new change proposal with spec deltas',
42
48
  'tdd-generator': 'Generate comprehensive Technical Design Document',
43
49
  'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
44
50
  'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
@@ -9,7 +9,7 @@ export interface SlashCommandTarget {
9
9
  kind: 'slash';
10
10
  }
11
11
 
12
- const ALL_COMMANDS: SlashCommandId[] = ['enhance', 'prd-generator', 'prd-agent-generator', 'product-brief', 'epic-single', 'epic-generator', 'story-single', 'story-generator', 'qa-test-scenario', 'skill-creator', 'ai-humanizer', 'api-contract-generator', 'design-system', 'erd-generator', 'fsd-generator', 'tdd-generator', 'tdd-lite-generator', 'wireframe-generator', 'document-explainer'];
12
+ const ALL_COMMANDS: SlashCommandId[] = ['enhance', 'prd-generator', 'prd-agent-generator', 'product-brief', 'epic-single', 'epic-generator', 'story-single', 'story-generator', 'qa-test-scenario', 'skill-creator', 'ai-humanizer', 'api-contract-generator', 'apply', 'archive', 'design-system', 'erd-generator', 'fsd-generator', 'proposal', 'tdd-generator', 'tdd-lite-generator', 'wireframe-generator', 'document-explainer'];
13
13
 
14
14
  export abstract class SlashCommandConfigurator {
15
15
  abstract readonly toolId: string;
@@ -14,9 +14,12 @@ const FILE_PATHS: Record<SlashCommandId, string> = {
14
14
  'skill-creator': '.claude/commands/prompter/skill-creator.md',
15
15
  'ai-humanizer': '.claude/commands/prompter/ai-humanizer.md',
16
16
  'api-contract-generator': '.claude/commands/prompter/api-contract-generator.md',
17
+ 'apply': '.claude/commands/prompter/apply.md',
18
+ 'archive': '.claude/commands/prompter/archive.md',
17
19
  'design-system': '.claude/commands/prompter/design-system.md',
18
20
  'erd-generator': '.claude/commands/prompter/erd-generator.md',
19
21
  'fsd-generator': '.claude/commands/prompter/fsd-generator.md',
22
+ 'proposal': '.claude/commands/prompter/proposal.md',
20
23
  'tdd-generator': '.claude/commands/prompter/tdd-generator.md',
21
24
  'tdd-lite-generator': '.claude/commands/prompter/tdd-lite-generator.md',
22
25
  'wireframe-generator': '.claude/commands/prompter/wireframe-generator.md',
@@ -36,9 +39,12 @@ const DESCRIPTIONS: Record<SlashCommandId, string> = {
36
39
  'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
37
40
  'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
38
41
  'api-contract-generator': 'Generate OpenAPI specification from FSD and ERD',
42
+ 'apply': 'Implement and apply an approved change proposal',
43
+ 'archive': 'Archive a completed change and update specs',
39
44
  'design-system': 'Generate comprehensive design system documentation for components and tokens',
40
45
  'erd-generator': 'Generate Entity Relationship Diagram from FSD',
41
46
  'fsd-generator': 'Generate Functional Specification Document from PRD',
47
+ 'proposal': 'Create a new change proposal with spec deltas',
42
48
  'tdd-generator': 'Generate comprehensive Technical Design Document',
43
49
  'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
44
50
  'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
@@ -14,9 +14,12 @@ const FILE_PATHS: Record<SlashCommandId, string> = {
14
14
  'skill-creator': '.codex/prompts/skill-creator.md',
15
15
  'ai-humanizer': '.codex/prompts/ai-humanizer.md',
16
16
  'api-contract-generator': '.codex/prompts/api-contract-generator.md',
17
+ 'apply': '.codex/prompts/apply.md',
18
+ 'archive': '.codex/prompts/archive.md',
17
19
  'design-system': '.codex/prompts/design-system.md',
18
20
  'erd-generator': '.codex/prompts/erd-generator.md',
19
21
  'fsd-generator': '.codex/prompts/fsd-generator.md',
22
+ 'proposal': '.codex/prompts/proposal.md',
20
23
  'tdd-generator': '.codex/prompts/tdd-generator.md',
21
24
  'tdd-lite-generator': '.codex/prompts/tdd-lite-generator.md',
22
25
  'wireframe-generator': '.codex/prompts/wireframe-generator.md',
@@ -36,9 +39,12 @@ const DESCRIPTIONS: Record<SlashCommandId, string> = {
36
39
  'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
37
40
  'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
38
41
  'api-contract-generator': 'Generate OpenAPI specification from FSD and ERD',
42
+ 'apply': 'Implement and apply an approved change proposal',
43
+ 'archive': 'Archive a completed change and update specs',
39
44
  'design-system': 'Generate comprehensive design system documentation for components and tokens',
40
45
  'erd-generator': 'Generate Entity Relationship Diagram from FSD',
41
46
  'fsd-generator': 'Generate Functional Specification Document from PRD',
47
+ 'proposal': 'Create a new change proposal with spec deltas',
42
48
  'tdd-generator': 'Generate comprehensive Technical Design Document',
43
49
  'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
44
50
  'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
@@ -17,9 +17,12 @@ const FILE_PATHS: Record<SlashCommandId, string> = {
17
17
  'skill-creator': '.github/prompts/skill-creator.prompt.md',
18
18
  'ai-humanizer': '.github/prompts/ai-humanizer.prompt.md',
19
19
  'api-contract-generator': '.github/prompts/api-contract-generator.prompt.md',
20
+ 'apply': '.github/prompts/apply.prompt.md',
21
+ 'archive': '.github/prompts/archive.prompt.md',
20
22
  'design-system': '.github/prompts/design-system.prompt.md',
21
23
  'erd-generator': '.github/prompts/erd-generator.prompt.md',
22
24
  'fsd-generator': '.github/prompts/fsd-generator.prompt.md',
25
+ 'proposal': '.github/prompts/proposal.prompt.md',
23
26
  'tdd-generator': '.github/prompts/tdd-generator.prompt.md',
24
27
  'tdd-lite-generator': '.github/prompts/tdd-lite-generator.prompt.md',
25
28
  'wireframe-generator': '.github/prompts/wireframe-generator.prompt.md',
@@ -39,9 +42,12 @@ const DESCRIPTIONS: Record<SlashCommandId, string> = {
39
42
  'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
40
43
  'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
41
44
  'api-contract-generator': 'Generate OpenAPI specification from FSD and ERD',
45
+ 'apply': 'Implement and apply an approved change proposal',
46
+ 'archive': 'Archive a completed change and update specs',
42
47
  'design-system': 'Generate comprehensive design system documentation for components and tokens',
43
48
  'erd-generator': 'Generate Entity Relationship Diagram from FSD',
44
49
  'fsd-generator': 'Generate Functional Specification Document from PRD',
50
+ 'proposal': 'Create a new change proposal with spec deltas',
45
51
  'tdd-generator': 'Generate comprehensive Technical Design Document',
46
52
  'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
47
53
  'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
@@ -14,9 +14,12 @@ const FILE_PATHS: Record<SlashCommandId, string> = {
14
14
  'skill-creator': '.kilocode/workflows/skill-creator.md',
15
15
  'ai-humanizer': '.kilocode/workflows/ai-humanizer.md',
16
16
  'api-contract-generator': '.kilocode/workflows/api-contract-generator.md',
17
+ 'apply': '.kilocode/workflows/apply.md',
18
+ 'archive': '.kilocode/workflows/archive.md',
17
19
  'design-system': '.kilocode/workflows/design-system.md',
18
20
  'erd-generator': '.kilocode/workflows/erd-generator.md',
19
21
  'fsd-generator': '.kilocode/workflows/fsd-generator.md',
22
+ 'proposal': '.kilocode/workflows/proposal.md',
20
23
  'tdd-generator': '.kilocode/workflows/tdd-generator.md',
21
24
  'tdd-lite-generator': '.kilocode/workflows/tdd-lite-generator.md',
22
25
  'wireframe-generator': '.kilocode/workflows/wireframe-generator.md',
@@ -36,9 +39,12 @@ const DESCRIPTIONS: Record<SlashCommandId, string> = {
36
39
  'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
37
40
  'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
38
41
  'api-contract-generator': 'Generate OpenAPI specification from FSD and ERD',
42
+ 'apply': 'Implement and apply an approved change proposal',
43
+ 'archive': 'Archive a completed change and update specs',
39
44
  'design-system': 'Generate comprehensive design system documentation for components and tokens',
40
45
  'erd-generator': 'Generate Entity Relationship Diagram from FSD',
41
46
  'fsd-generator': 'Generate Functional Specification Document from PRD',
47
+ 'proposal': 'Create a new change proposal with spec deltas',
42
48
  'tdd-generator': 'Generate comprehensive Technical Design Document',
43
49
  'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
44
50
  'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
@@ -14,9 +14,12 @@ const FILE_PATHS: Record<SlashCommandId, string> = {
14
14
  'skill-creator': '.opencode/command/skill-creator.md',
15
15
  'ai-humanizer': '.opencode/command/ai-humanizer.md',
16
16
  'api-contract-generator': '.opencode/command/api-contract-generator.md',
17
+ 'apply': '.opencode/command/apply.md',
18
+ 'archive': '.opencode/command/archive.md',
17
19
  'design-system': '.opencode/command/design-system.md',
18
20
  'erd-generator': '.opencode/command/erd-generator.md',
19
21
  'fsd-generator': '.opencode/command/fsd-generator.md',
22
+ 'proposal': '.opencode/command/proposal.md',
20
23
  'tdd-generator': '.opencode/command/tdd-generator.md',
21
24
  'tdd-lite-generator': '.opencode/command/tdd-lite-generator.md',
22
25
  'wireframe-generator': '.opencode/command/wireframe-generator.md',
@@ -36,9 +39,12 @@ const DESCRIPTIONS: Record<SlashCommandId, string> = {
36
39
  'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
37
40
  'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
38
41
  'api-contract-generator': 'Generate OpenAPI specification from FSD and ERD',
42
+ 'apply': 'Implement and apply an approved change proposal',
43
+ 'archive': 'Archive a completed change and update specs',
39
44
  'design-system': 'Generate comprehensive design system documentation for components and tokens',
40
45
  'erd-generator': 'Generate Entity Relationship Diagram from FSD',
41
46
  'fsd-generator': 'Generate Functional Specification Document from PRD',
47
+ 'proposal': 'Create a new change proposal with spec deltas',
42
48
  'tdd-generator': 'Generate comprehensive Technical Design Document',
43
49
  'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
44
50
  'wireframe-generator': 'Generate UI/UX wireframes from technical specs',