@agents-inc/cli 0.32.1

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 (497) hide show
  1. package/CHANGELOG.md +462 -0
  2. package/LICENSE +21 -0
  3. package/README.md +179 -0
  4. package/config/skills-matrix.yaml +926 -0
  5. package/config/stacks.yaml +2186 -0
  6. package/dist/chunk-3ZOIOVKT.js +365 -0
  7. package/dist/chunk-3ZOIOVKT.js.map +1 -0
  8. package/dist/chunk-4RAY5AOI.js +78 -0
  9. package/dist/chunk-4RAY5AOI.js.map +1 -0
  10. package/dist/chunk-5PIKNCZX.js +234 -0
  11. package/dist/chunk-5PIKNCZX.js.map +1 -0
  12. package/dist/chunk-66UDJBF6.js +96 -0
  13. package/dist/chunk-66UDJBF6.js.map +1 -0
  14. package/dist/chunk-7SOPVGDV.js +24 -0
  15. package/dist/chunk-7SOPVGDV.js.map +1 -0
  16. package/dist/chunk-A27LOC4Z.js +95 -0
  17. package/dist/chunk-A27LOC4Z.js.map +1 -0
  18. package/dist/chunk-B2UBHA66.js +301 -0
  19. package/dist/chunk-B2UBHA66.js.map +1 -0
  20. package/dist/chunk-BZN2Z5P7.js +882 -0
  21. package/dist/chunk-BZN2Z5P7.js.map +1 -0
  22. package/dist/chunk-BZQBJP34.js +186 -0
  23. package/dist/chunk-BZQBJP34.js.map +1 -0
  24. package/dist/chunk-DC5AK3LW.js +105 -0
  25. package/dist/chunk-DC5AK3LW.js.map +1 -0
  26. package/dist/chunk-DHET7RCE.js +50 -0
  27. package/dist/chunk-DHET7RCE.js.map +1 -0
  28. package/dist/chunk-EMJ2ZKS7.js +346 -0
  29. package/dist/chunk-EMJ2ZKS7.js.map +1 -0
  30. package/dist/chunk-FJQRVFMB.js +48 -0
  31. package/dist/chunk-FJQRVFMB.js.map +1 -0
  32. package/dist/chunk-FZGYSLJL.js +85 -0
  33. package/dist/chunk-FZGYSLJL.js.map +1 -0
  34. package/dist/chunk-H566H3MQ.js +87 -0
  35. package/dist/chunk-H566H3MQ.js.map +1 -0
  36. package/dist/chunk-IYG2LAIM.js +90 -0
  37. package/dist/chunk-IYG2LAIM.js.map +1 -0
  38. package/dist/chunk-IZZ4IIEG.js +29 -0
  39. package/dist/chunk-IZZ4IIEG.js.map +1 -0
  40. package/dist/chunk-JMVWYAHT.js +63 -0
  41. package/dist/chunk-JMVWYAHT.js.map +1 -0
  42. package/dist/chunk-LAPCUV4D.js +191 -0
  43. package/dist/chunk-LAPCUV4D.js.map +1 -0
  44. package/dist/chunk-LGUI3PMO.js +109 -0
  45. package/dist/chunk-LGUI3PMO.js.map +1 -0
  46. package/dist/chunk-MM7NK5N2.js +4542 -0
  47. package/dist/chunk-MM7NK5N2.js.map +1 -0
  48. package/dist/chunk-N6S7ZRIL.js +31 -0
  49. package/dist/chunk-N6S7ZRIL.js.map +1 -0
  50. package/dist/chunk-O4D67NN7.js +24 -0
  51. package/dist/chunk-O4D67NN7.js.map +1 -0
  52. package/dist/chunk-ODUOU55D.js +56 -0
  53. package/dist/chunk-ODUOU55D.js.map +1 -0
  54. package/dist/chunk-OGJIZ6QH.js +497 -0
  55. package/dist/chunk-OGJIZ6QH.js.map +1 -0
  56. package/dist/chunk-OMV7TLWD.js +340 -0
  57. package/dist/chunk-OMV7TLWD.js.map +1 -0
  58. package/dist/chunk-PBEHPQLK.js +146 -0
  59. package/dist/chunk-PBEHPQLK.js.map +1 -0
  60. package/dist/chunk-QPTOIZAT.js +32 -0
  61. package/dist/chunk-QPTOIZAT.js.map +1 -0
  62. package/dist/chunk-R3XFQKPG.js +111 -0
  63. package/dist/chunk-R3XFQKPG.js.map +1 -0
  64. package/dist/chunk-R74PZWQS.js +69 -0
  65. package/dist/chunk-R74PZWQS.js.map +1 -0
  66. package/dist/chunk-SO22IQPY.js +45 -0
  67. package/dist/chunk-SO22IQPY.js.map +1 -0
  68. package/dist/chunk-T4EXUIBY.js +19 -0
  69. package/dist/chunk-T4EXUIBY.js.map +1 -0
  70. package/dist/chunk-U3IGFMCY.js +31 -0
  71. package/dist/chunk-U3IGFMCY.js.map +1 -0
  72. package/dist/chunk-UICL22RT.js +318 -0
  73. package/dist/chunk-UICL22RT.js.map +1 -0
  74. package/dist/chunk-UX2H2K2G.js +183 -0
  75. package/dist/chunk-UX2H2K2G.js.map +1 -0
  76. package/dist/chunk-W2ZSCZ2U.js +93 -0
  77. package/dist/chunk-W2ZSCZ2U.js.map +1 -0
  78. package/dist/chunk-WEUVWHMA.js +189 -0
  79. package/dist/chunk-WEUVWHMA.js.map +1 -0
  80. package/dist/chunk-XY3XDVMI.js +15599 -0
  81. package/dist/chunk-XY3XDVMI.js.map +1 -0
  82. package/dist/chunk-YND42IXK.js +233 -0
  83. package/dist/chunk-YND42IXK.js.map +1 -0
  84. package/dist/chunk-YZTWZVGX.js +41 -0
  85. package/dist/chunk-YZTWZVGX.js.map +1 -0
  86. package/dist/chunk-Z4TWOP3H.js +81 -0
  87. package/dist/chunk-Z4TWOP3H.js.map +1 -0
  88. package/dist/cli/defaults/agent-mappings.yaml +271 -0
  89. package/dist/commands/build/marketplace.js +252 -0
  90. package/dist/commands/build/marketplace.js.map +1 -0
  91. package/dist/commands/build/plugins.js +114 -0
  92. package/dist/commands/build/plugins.js.map +1 -0
  93. package/dist/commands/build/stack.js +153 -0
  94. package/dist/commands/build/stack.js.map +1 -0
  95. package/dist/commands/compile.js +354 -0
  96. package/dist/commands/compile.js.map +1 -0
  97. package/dist/commands/config/get.js +61 -0
  98. package/dist/commands/config/get.js.map +1 -0
  99. package/dist/commands/config/index.js +23 -0
  100. package/dist/commands/config/index.js.map +1 -0
  101. package/dist/commands/config/path.js +34 -0
  102. package/dist/commands/config/path.js.map +1 -0
  103. package/dist/commands/config/set-project.js +61 -0
  104. package/dist/commands/config/set-project.js.map +1 -0
  105. package/dist/commands/config/show.js +14 -0
  106. package/dist/commands/config/show.js.map +1 -0
  107. package/dist/commands/config/unset-project.js +57 -0
  108. package/dist/commands/config/unset-project.js.map +1 -0
  109. package/dist/commands/diff.js +742 -0
  110. package/dist/commands/diff.js.map +1 -0
  111. package/dist/commands/doctor.js +370 -0
  112. package/dist/commands/doctor.js.map +1 -0
  113. package/dist/commands/edit.js +301 -0
  114. package/dist/commands/edit.js.map +1 -0
  115. package/dist/commands/eject.js +262 -0
  116. package/dist/commands/eject.js.map +1 -0
  117. package/dist/commands/import/skill.js +361 -0
  118. package/dist/commands/import/skill.js.map +1 -0
  119. package/dist/commands/info.js +217 -0
  120. package/dist/commands/info.js.map +1 -0
  121. package/dist/commands/init.js +443 -0
  122. package/dist/commands/init.js.map +1 -0
  123. package/dist/commands/list.js +49 -0
  124. package/dist/commands/list.js.map +1 -0
  125. package/dist/commands/new/agent.js +224 -0
  126. package/dist/commands/new/agent.js.map +1 -0
  127. package/dist/commands/new/skill.js +199 -0
  128. package/dist/commands/new/skill.js.map +1 -0
  129. package/dist/commands/outdated.js +176 -0
  130. package/dist/commands/outdated.js.map +1 -0
  131. package/dist/commands/search.js +288 -0
  132. package/dist/commands/search.js.map +1 -0
  133. package/dist/commands/uninstall.js +302 -0
  134. package/dist/commands/uninstall.js.map +1 -0
  135. package/dist/commands/update.js +304 -0
  136. package/dist/commands/update.js.map +1 -0
  137. package/dist/commands/validate.js +389 -0
  138. package/dist/commands/validate.js.map +1 -0
  139. package/dist/commands/version/bump.js +79 -0
  140. package/dist/commands/version/bump.js.map +1 -0
  141. package/dist/commands/version/index.js +54 -0
  142. package/dist/commands/version/index.js.map +1 -0
  143. package/dist/commands/version/set.js +86 -0
  144. package/dist/commands/version/set.js.map +1 -0
  145. package/dist/commands/version/show.js +54 -0
  146. package/dist/commands/version/show.js.map +1 -0
  147. package/dist/components/common/confirm.js +9 -0
  148. package/dist/components/common/confirm.js.map +1 -0
  149. package/dist/components/common/confirm.test.js +203 -0
  150. package/dist/components/common/confirm.test.js.map +1 -0
  151. package/dist/components/common/message.js +20 -0
  152. package/dist/components/common/message.js.map +1 -0
  153. package/dist/components/common/spinner.js +14 -0
  154. package/dist/components/common/spinner.js.map +1 -0
  155. package/dist/components/skill-search/skill-search.js +12 -0
  156. package/dist/components/skill-search/skill-search.js.map +1 -0
  157. package/dist/components/wizard/category-grid.js +11 -0
  158. package/dist/components/wizard/category-grid.js.map +1 -0
  159. package/dist/components/wizard/category-grid.test.js +997 -0
  160. package/dist/components/wizard/category-grid.test.js.map +1 -0
  161. package/dist/components/wizard/domain-selection.js +14 -0
  162. package/dist/components/wizard/domain-selection.js.map +1 -0
  163. package/dist/components/wizard/help-modal.js +10 -0
  164. package/dist/components/wizard/help-modal.js.map +1 -0
  165. package/dist/components/wizard/menu-item.js +10 -0
  166. package/dist/components/wizard/menu-item.js.map +1 -0
  167. package/dist/components/wizard/search-modal.js +11 -0
  168. package/dist/components/wizard/search-modal.js.map +1 -0
  169. package/dist/components/wizard/search-modal.test.js +218 -0
  170. package/dist/components/wizard/search-modal.test.js.map +1 -0
  171. package/dist/components/wizard/section-progress.js +10 -0
  172. package/dist/components/wizard/section-progress.js.map +1 -0
  173. package/dist/components/wizard/section-progress.test.js +192 -0
  174. package/dist/components/wizard/section-progress.test.js.map +1 -0
  175. package/dist/components/wizard/source-grid.js +14 -0
  176. package/dist/components/wizard/source-grid.js.map +1 -0
  177. package/dist/components/wizard/source-grid.test.js +504 -0
  178. package/dist/components/wizard/source-grid.test.js.map +1 -0
  179. package/dist/components/wizard/stack-selection.js +17 -0
  180. package/dist/components/wizard/stack-selection.js.map +1 -0
  181. package/dist/components/wizard/step-build.js +17 -0
  182. package/dist/components/wizard/step-build.js.map +1 -0
  183. package/dist/components/wizard/step-build.test.js +600 -0
  184. package/dist/components/wizard/step-build.test.js.map +1 -0
  185. package/dist/components/wizard/step-confirm.js +12 -0
  186. package/dist/components/wizard/step-confirm.js.map +1 -0
  187. package/dist/components/wizard/step-confirm.test.js +366 -0
  188. package/dist/components/wizard/step-confirm.test.js.map +1 -0
  189. package/dist/components/wizard/step-refine.js +10 -0
  190. package/dist/components/wizard/step-refine.js.map +1 -0
  191. package/dist/components/wizard/step-refine.test.js +237 -0
  192. package/dist/components/wizard/step-refine.test.js.map +1 -0
  193. package/dist/components/wizard/step-settings.js +17 -0
  194. package/dist/components/wizard/step-settings.js.map +1 -0
  195. package/dist/components/wizard/step-settings.test.js +243 -0
  196. package/dist/components/wizard/step-settings.test.js.map +1 -0
  197. package/dist/components/wizard/step-sources.js +20 -0
  198. package/dist/components/wizard/step-sources.js.map +1 -0
  199. package/dist/components/wizard/step-sources.test.js +294 -0
  200. package/dist/components/wizard/step-sources.test.js.map +1 -0
  201. package/dist/components/wizard/step-stack.js +19 -0
  202. package/dist/components/wizard/step-stack.js.map +1 -0
  203. package/dist/components/wizard/step-stack.test.js +357 -0
  204. package/dist/components/wizard/step-stack.test.js.map +1 -0
  205. package/dist/components/wizard/view-title.js +10 -0
  206. package/dist/components/wizard/view-title.js.map +1 -0
  207. package/dist/components/wizard/wizard-layout.js +16 -0
  208. package/dist/components/wizard/wizard-layout.js.map +1 -0
  209. package/dist/components/wizard/wizard-tabs.js +14 -0
  210. package/dist/components/wizard/wizard-tabs.js.map +1 -0
  211. package/dist/components/wizard/wizard-tabs.test.js +294 -0
  212. package/dist/components/wizard/wizard-tabs.test.js.map +1 -0
  213. package/dist/components/wizard/wizard.js +35 -0
  214. package/dist/components/wizard/wizard.js.map +1 -0
  215. package/dist/config/skills-matrix.yaml +926 -0
  216. package/dist/config/stacks.yaml +2186 -0
  217. package/dist/hooks/init.js +40 -0
  218. package/dist/hooks/init.js.map +1 -0
  219. package/dist/index.js +10 -0
  220. package/dist/index.js.map +1 -0
  221. package/dist/magic-string.es-RGXYGAW3.js +1316 -0
  222. package/dist/magic-string.es-RGXYGAW3.js.map +1 -0
  223. package/dist/source-manager-SBPPLOQQ.js +16 -0
  224. package/dist/source-manager-SBPPLOQQ.js.map +1 -0
  225. package/dist/src/agents/_templates/agent.liquid +140 -0
  226. package/dist/src/agents/developer/api-developer/agent.yaml +12 -0
  227. package/dist/src/agents/developer/api-developer/critical-reminders.md +23 -0
  228. package/dist/src/agents/developer/api-developer/critical-requirements.md +11 -0
  229. package/dist/src/agents/developer/api-developer/examples.md +72 -0
  230. package/dist/src/agents/developer/api-developer/intro.md +22 -0
  231. package/dist/src/agents/developer/api-developer/output-format.md +359 -0
  232. package/dist/src/agents/developer/api-developer/workflow.md +471 -0
  233. package/dist/src/agents/developer/cli-developer/agent.yaml +12 -0
  234. package/dist/src/agents/developer/cli-developer/critical-reminders.md +28 -0
  235. package/dist/src/agents/developer/cli-developer/critical-requirements.md +15 -0
  236. package/dist/src/agents/developer/cli-developer/examples.md +68 -0
  237. package/dist/src/agents/developer/cli-developer/intro.md +23 -0
  238. package/dist/src/agents/developer/cli-developer/output-format.md +216 -0
  239. package/dist/src/agents/developer/cli-developer/workflow.md +509 -0
  240. package/dist/src/agents/developer/web-architecture/agent.yaml +12 -0
  241. package/dist/src/agents/developer/web-architecture/critical-reminders.md +27 -0
  242. package/dist/src/agents/developer/web-architecture/critical-requirements.md +35 -0
  243. package/dist/src/agents/developer/web-architecture/examples.md +187 -0
  244. package/dist/src/agents/developer/web-architecture/intro.md +35 -0
  245. package/dist/src/agents/developer/web-architecture/output-format.md +261 -0
  246. package/dist/src/agents/developer/web-architecture/workflow.md +599 -0
  247. package/dist/src/agents/developer/web-developer/agent.yaml +12 -0
  248. package/dist/src/agents/developer/web-developer/critical-reminders.md +17 -0
  249. package/dist/src/agents/developer/web-developer/critical-requirements.md +15 -0
  250. package/dist/src/agents/developer/web-developer/examples.md +109 -0
  251. package/dist/src/agents/developer/web-developer/intro.md +5 -0
  252. package/dist/src/agents/developer/web-developer/output-format.md +213 -0
  253. package/dist/src/agents/developer/web-developer/workflow.md +459 -0
  254. package/dist/src/agents/meta/agent-summoner/agent.yaml +12 -0
  255. package/dist/src/agents/meta/agent-summoner/critical-reminders.md +31 -0
  256. package/dist/src/agents/meta/agent-summoner/critical-requirements.md +27 -0
  257. package/dist/src/agents/meta/agent-summoner/examples.md +176 -0
  258. package/dist/src/agents/meta/agent-summoner/intro.md +9 -0
  259. package/dist/src/agents/meta/agent-summoner/output-format.md +115 -0
  260. package/dist/src/agents/meta/agent-summoner/workflow.md +1540 -0
  261. package/dist/src/agents/meta/documentor/agent.yaml +11 -0
  262. package/dist/src/agents/meta/documentor/critical-reminders.md +23 -0
  263. package/dist/src/agents/meta/documentor/critical-requirements.md +13 -0
  264. package/dist/src/agents/meta/documentor/examples.md +147 -0
  265. package/dist/src/agents/meta/documentor/intro.md +11 -0
  266. package/dist/src/agents/meta/documentor/output-format.md +237 -0
  267. package/dist/src/agents/meta/documentor/workflow.md +1271 -0
  268. package/dist/src/agents/meta/skill-summoner/agent.yaml +13 -0
  269. package/dist/src/agents/meta/skill-summoner/critical-reminders.md +73 -0
  270. package/dist/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
  271. package/dist/src/agents/meta/skill-summoner/examples.md +116 -0
  272. package/dist/src/agents/meta/skill-summoner/intro.md +5 -0
  273. package/dist/src/agents/meta/skill-summoner/output-format.md +279 -0
  274. package/dist/src/agents/meta/skill-summoner/workflow.md +1485 -0
  275. package/dist/src/agents/migration/cli-migrator/agent.yaml +12 -0
  276. package/dist/src/agents/migration/cli-migrator/anti-patterns.md +158 -0
  277. package/dist/src/agents/migration/cli-migrator/conversion-mappings.md +63 -0
  278. package/dist/src/agents/migration/cli-migrator/critical-reminders.md +17 -0
  279. package/dist/src/agents/migration/cli-migrator/critical-requirements.md +13 -0
  280. package/dist/src/agents/migration/cli-migrator/intro.md +15 -0
  281. package/dist/src/agents/migration/cli-migrator/output-format.md +164 -0
  282. package/dist/src/agents/migration/cli-migrator/workflow.md +230 -0
  283. package/dist/src/agents/pattern/pattern-scout/agent.yaml +10 -0
  284. package/dist/src/agents/pattern/pattern-scout/critical-reminders.md +58 -0
  285. package/dist/src/agents/pattern/pattern-scout/critical-requirements.md +17 -0
  286. package/dist/src/agents/pattern/pattern-scout/examples.md +93 -0
  287. package/dist/src/agents/pattern/pattern-scout/intro.md +3 -0
  288. package/dist/src/agents/pattern/pattern-scout/output-format.md +196 -0
  289. package/dist/src/agents/pattern/pattern-scout/workflow.md +1901 -0
  290. package/dist/src/agents/pattern/web-pattern-critique/agent.yaml +12 -0
  291. package/dist/src/agents/pattern/web-pattern-critique/critical-reminders.md +13 -0
  292. package/dist/src/agents/pattern/web-pattern-critique/critical-requirements.md +11 -0
  293. package/dist/src/agents/pattern/web-pattern-critique/examples.md +56 -0
  294. package/dist/src/agents/pattern/web-pattern-critique/intro.md +5 -0
  295. package/dist/src/agents/pattern/web-pattern-critique/output-format.md +257 -0
  296. package/dist/src/agents/pattern/web-pattern-critique/workflow.md +674 -0
  297. package/dist/src/agents/planning/web-pm/agent.yaml +12 -0
  298. package/dist/src/agents/planning/web-pm/critical-reminders.md +21 -0
  299. package/dist/src/agents/planning/web-pm/critical-requirements.md +17 -0
  300. package/dist/src/agents/planning/web-pm/examples.md +85 -0
  301. package/dist/src/agents/planning/web-pm/intro.md +3 -0
  302. package/dist/src/agents/planning/web-pm/output-format.md +228 -0
  303. package/dist/src/agents/planning/web-pm/workflow.md +393 -0
  304. package/dist/src/agents/researcher/api-researcher/agent.yaml +10 -0
  305. package/dist/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
  306. package/dist/src/agents/researcher/api-researcher/critical-requirements.md +13 -0
  307. package/dist/src/agents/researcher/api-researcher/examples.md +116 -0
  308. package/dist/src/agents/researcher/api-researcher/intro.md +32 -0
  309. package/dist/src/agents/researcher/api-researcher/output-format.md +135 -0
  310. package/dist/src/agents/researcher/api-researcher/workflow.md +261 -0
  311. package/dist/src/agents/researcher/web-researcher/agent.yaml +10 -0
  312. package/dist/src/agents/researcher/web-researcher/critical-reminders.md +23 -0
  313. package/dist/src/agents/researcher/web-researcher/critical-requirements.md +11 -0
  314. package/dist/src/agents/researcher/web-researcher/examples.md +126 -0
  315. package/dist/src/agents/researcher/web-researcher/intro.md +31 -0
  316. package/dist/src/agents/researcher/web-researcher/output-format.md +112 -0
  317. package/dist/src/agents/researcher/web-researcher/workflow.md +322 -0
  318. package/dist/src/agents/reviewer/api-reviewer/agent.yaml +12 -0
  319. package/dist/src/agents/reviewer/api-reviewer/critical-reminders.md +16 -0
  320. package/dist/src/agents/reviewer/api-reviewer/critical-requirements.md +13 -0
  321. package/dist/src/agents/reviewer/api-reviewer/examples.md +54 -0
  322. package/dist/src/agents/reviewer/api-reviewer/intro.md +22 -0
  323. package/dist/src/agents/reviewer/api-reviewer/output-format.md +288 -0
  324. package/dist/src/agents/reviewer/api-reviewer/workflow.md +369 -0
  325. package/dist/src/agents/reviewer/cli-reviewer/agent.yaml +12 -0
  326. package/dist/src/agents/reviewer/cli-reviewer/critical-reminders.md +17 -0
  327. package/dist/src/agents/reviewer/cli-reviewer/critical-requirements.md +13 -0
  328. package/dist/src/agents/reviewer/cli-reviewer/examples.md +83 -0
  329. package/dist/src/agents/reviewer/cli-reviewer/intro.md +21 -0
  330. package/dist/src/agents/reviewer/cli-reviewer/output-format.md +330 -0
  331. package/dist/src/agents/reviewer/cli-reviewer/workflow.md +294 -0
  332. package/dist/src/agents/reviewer/web-reviewer/agent.yaml +12 -0
  333. package/dist/src/agents/reviewer/web-reviewer/critical-reminders.md +17 -0
  334. package/dist/src/agents/reviewer/web-reviewer/critical-requirements.md +11 -0
  335. package/dist/src/agents/reviewer/web-reviewer/examples.md +79 -0
  336. package/dist/src/agents/reviewer/web-reviewer/intro.md +20 -0
  337. package/dist/src/agents/reviewer/web-reviewer/output-format.md +253 -0
  338. package/dist/src/agents/reviewer/web-reviewer/workflow.md +228 -0
  339. package/dist/src/agents/tester/cli-tester/agent.yaml +12 -0
  340. package/dist/src/agents/tester/cli-tester/critical-reminders.md +19 -0
  341. package/dist/src/agents/tester/cli-tester/critical-requirements.md +17 -0
  342. package/dist/src/agents/tester/cli-tester/examples.md +80 -0
  343. package/dist/src/agents/tester/cli-tester/intro.md +19 -0
  344. package/dist/src/agents/tester/cli-tester/output-format.md +232 -0
  345. package/dist/src/agents/tester/cli-tester/workflow.md +304 -0
  346. package/dist/src/agents/tester/web-tester/agent.yaml +12 -0
  347. package/dist/src/agents/tester/web-tester/critical-reminders.md +15 -0
  348. package/dist/src/agents/tester/web-tester/critical-requirements.md +11 -0
  349. package/dist/src/agents/tester/web-tester/examples.md +68 -0
  350. package/dist/src/agents/tester/web-tester/intro.md +18 -0
  351. package/dist/src/agents/tester/web-tester/output-format.md +252 -0
  352. package/dist/src/agents/tester/web-tester/workflow.md +507 -0
  353. package/dist/stores/wizard-store.js +13 -0
  354. package/dist/stores/wizard-store.js.map +1 -0
  355. package/dist/stores/wizard-store.test.js +689 -0
  356. package/dist/stores/wizard-store.test.js.map +1 -0
  357. package/package.json +134 -0
  358. package/src/agents/_templates/agent.liquid +140 -0
  359. package/src/agents/developer/api-developer/agent.yaml +12 -0
  360. package/src/agents/developer/api-developer/critical-reminders.md +23 -0
  361. package/src/agents/developer/api-developer/critical-requirements.md +11 -0
  362. package/src/agents/developer/api-developer/examples.md +72 -0
  363. package/src/agents/developer/api-developer/intro.md +22 -0
  364. package/src/agents/developer/api-developer/output-format.md +359 -0
  365. package/src/agents/developer/api-developer/workflow.md +471 -0
  366. package/src/agents/developer/cli-developer/agent.yaml +12 -0
  367. package/src/agents/developer/cli-developer/critical-reminders.md +28 -0
  368. package/src/agents/developer/cli-developer/critical-requirements.md +15 -0
  369. package/src/agents/developer/cli-developer/examples.md +68 -0
  370. package/src/agents/developer/cli-developer/intro.md +23 -0
  371. package/src/agents/developer/cli-developer/output-format.md +216 -0
  372. package/src/agents/developer/cli-developer/workflow.md +509 -0
  373. package/src/agents/developer/web-architecture/agent.yaml +12 -0
  374. package/src/agents/developer/web-architecture/critical-reminders.md +27 -0
  375. package/src/agents/developer/web-architecture/critical-requirements.md +35 -0
  376. package/src/agents/developer/web-architecture/examples.md +187 -0
  377. package/src/agents/developer/web-architecture/intro.md +35 -0
  378. package/src/agents/developer/web-architecture/output-format.md +261 -0
  379. package/src/agents/developer/web-architecture/workflow.md +599 -0
  380. package/src/agents/developer/web-developer/agent.yaml +12 -0
  381. package/src/agents/developer/web-developer/critical-reminders.md +17 -0
  382. package/src/agents/developer/web-developer/critical-requirements.md +15 -0
  383. package/src/agents/developer/web-developer/examples.md +109 -0
  384. package/src/agents/developer/web-developer/intro.md +5 -0
  385. package/src/agents/developer/web-developer/output-format.md +213 -0
  386. package/src/agents/developer/web-developer/workflow.md +459 -0
  387. package/src/agents/meta/agent-summoner/agent.yaml +12 -0
  388. package/src/agents/meta/agent-summoner/critical-reminders.md +31 -0
  389. package/src/agents/meta/agent-summoner/critical-requirements.md +27 -0
  390. package/src/agents/meta/agent-summoner/examples.md +176 -0
  391. package/src/agents/meta/agent-summoner/intro.md +9 -0
  392. package/src/agents/meta/agent-summoner/output-format.md +115 -0
  393. package/src/agents/meta/agent-summoner/workflow.md +1540 -0
  394. package/src/agents/meta/documentor/agent.yaml +11 -0
  395. package/src/agents/meta/documentor/critical-reminders.md +23 -0
  396. package/src/agents/meta/documentor/critical-requirements.md +13 -0
  397. package/src/agents/meta/documentor/examples.md +147 -0
  398. package/src/agents/meta/documentor/intro.md +11 -0
  399. package/src/agents/meta/documentor/output-format.md +237 -0
  400. package/src/agents/meta/documentor/workflow.md +1271 -0
  401. package/src/agents/meta/skill-summoner/agent.yaml +13 -0
  402. package/src/agents/meta/skill-summoner/critical-reminders.md +73 -0
  403. package/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
  404. package/src/agents/meta/skill-summoner/examples.md +116 -0
  405. package/src/agents/meta/skill-summoner/intro.md +5 -0
  406. package/src/agents/meta/skill-summoner/output-format.md +279 -0
  407. package/src/agents/meta/skill-summoner/workflow.md +1485 -0
  408. package/src/agents/migration/cli-migrator/agent.yaml +12 -0
  409. package/src/agents/migration/cli-migrator/anti-patterns.md +158 -0
  410. package/src/agents/migration/cli-migrator/conversion-mappings.md +63 -0
  411. package/src/agents/migration/cli-migrator/critical-reminders.md +17 -0
  412. package/src/agents/migration/cli-migrator/critical-requirements.md +13 -0
  413. package/src/agents/migration/cli-migrator/intro.md +15 -0
  414. package/src/agents/migration/cli-migrator/output-format.md +164 -0
  415. package/src/agents/migration/cli-migrator/workflow.md +230 -0
  416. package/src/agents/pattern/pattern-scout/agent.yaml +10 -0
  417. package/src/agents/pattern/pattern-scout/critical-reminders.md +58 -0
  418. package/src/agents/pattern/pattern-scout/critical-requirements.md +17 -0
  419. package/src/agents/pattern/pattern-scout/examples.md +93 -0
  420. package/src/agents/pattern/pattern-scout/intro.md +3 -0
  421. package/src/agents/pattern/pattern-scout/output-format.md +196 -0
  422. package/src/agents/pattern/pattern-scout/workflow.md +1901 -0
  423. package/src/agents/pattern/web-pattern-critique/agent.yaml +12 -0
  424. package/src/agents/pattern/web-pattern-critique/critical-reminders.md +13 -0
  425. package/src/agents/pattern/web-pattern-critique/critical-requirements.md +11 -0
  426. package/src/agents/pattern/web-pattern-critique/examples.md +56 -0
  427. package/src/agents/pattern/web-pattern-critique/intro.md +5 -0
  428. package/src/agents/pattern/web-pattern-critique/output-format.md +257 -0
  429. package/src/agents/pattern/web-pattern-critique/workflow.md +674 -0
  430. package/src/agents/planning/web-pm/agent.yaml +12 -0
  431. package/src/agents/planning/web-pm/critical-reminders.md +21 -0
  432. package/src/agents/planning/web-pm/critical-requirements.md +17 -0
  433. package/src/agents/planning/web-pm/examples.md +85 -0
  434. package/src/agents/planning/web-pm/intro.md +3 -0
  435. package/src/agents/planning/web-pm/output-format.md +228 -0
  436. package/src/agents/planning/web-pm/workflow.md +393 -0
  437. package/src/agents/researcher/api-researcher/agent.yaml +10 -0
  438. package/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
  439. package/src/agents/researcher/api-researcher/critical-requirements.md +13 -0
  440. package/src/agents/researcher/api-researcher/examples.md +116 -0
  441. package/src/agents/researcher/api-researcher/intro.md +32 -0
  442. package/src/agents/researcher/api-researcher/output-format.md +135 -0
  443. package/src/agents/researcher/api-researcher/workflow.md +261 -0
  444. package/src/agents/researcher/web-researcher/agent.yaml +10 -0
  445. package/src/agents/researcher/web-researcher/critical-reminders.md +23 -0
  446. package/src/agents/researcher/web-researcher/critical-requirements.md +11 -0
  447. package/src/agents/researcher/web-researcher/examples.md +126 -0
  448. package/src/agents/researcher/web-researcher/intro.md +31 -0
  449. package/src/agents/researcher/web-researcher/output-format.md +112 -0
  450. package/src/agents/researcher/web-researcher/workflow.md +322 -0
  451. package/src/agents/reviewer/api-reviewer/agent.yaml +12 -0
  452. package/src/agents/reviewer/api-reviewer/critical-reminders.md +16 -0
  453. package/src/agents/reviewer/api-reviewer/critical-requirements.md +13 -0
  454. package/src/agents/reviewer/api-reviewer/examples.md +54 -0
  455. package/src/agents/reviewer/api-reviewer/intro.md +22 -0
  456. package/src/agents/reviewer/api-reviewer/output-format.md +288 -0
  457. package/src/agents/reviewer/api-reviewer/workflow.md +369 -0
  458. package/src/agents/reviewer/cli-reviewer/agent.yaml +12 -0
  459. package/src/agents/reviewer/cli-reviewer/critical-reminders.md +17 -0
  460. package/src/agents/reviewer/cli-reviewer/critical-requirements.md +13 -0
  461. package/src/agents/reviewer/cli-reviewer/examples.md +83 -0
  462. package/src/agents/reviewer/cli-reviewer/intro.md +21 -0
  463. package/src/agents/reviewer/cli-reviewer/output-format.md +330 -0
  464. package/src/agents/reviewer/cli-reviewer/workflow.md +294 -0
  465. package/src/agents/reviewer/web-reviewer/agent.yaml +12 -0
  466. package/src/agents/reviewer/web-reviewer/critical-reminders.md +17 -0
  467. package/src/agents/reviewer/web-reviewer/critical-requirements.md +11 -0
  468. package/src/agents/reviewer/web-reviewer/examples.md +79 -0
  469. package/src/agents/reviewer/web-reviewer/intro.md +20 -0
  470. package/src/agents/reviewer/web-reviewer/output-format.md +253 -0
  471. package/src/agents/reviewer/web-reviewer/workflow.md +228 -0
  472. package/src/agents/tester/cli-tester/agent.yaml +12 -0
  473. package/src/agents/tester/cli-tester/critical-reminders.md +19 -0
  474. package/src/agents/tester/cli-tester/critical-requirements.md +17 -0
  475. package/src/agents/tester/cli-tester/examples.md +80 -0
  476. package/src/agents/tester/cli-tester/intro.md +19 -0
  477. package/src/agents/tester/cli-tester/output-format.md +232 -0
  478. package/src/agents/tester/cli-tester/workflow.md +304 -0
  479. package/src/agents/tester/web-tester/agent.yaml +12 -0
  480. package/src/agents/tester/web-tester/critical-reminders.md +15 -0
  481. package/src/agents/tester/web-tester/critical-requirements.md +11 -0
  482. package/src/agents/tester/web-tester/examples.md +68 -0
  483. package/src/agents/tester/web-tester/intro.md +18 -0
  484. package/src/agents/tester/web-tester/output-format.md +252 -0
  485. package/src/agents/tester/web-tester/workflow.md +507 -0
  486. package/src/schemas/agent-frontmatter.schema.json +84 -0
  487. package/src/schemas/agent.schema.json +93 -0
  488. package/src/schemas/hooks.schema.json +47 -0
  489. package/src/schemas/marketplace.schema.json +119 -0
  490. package/src/schemas/metadata.schema.json +113 -0
  491. package/src/schemas/plugin.schema.json +130 -0
  492. package/src/schemas/project-config.schema.json +125 -0
  493. package/src/schemas/project-source-config.schema.json +81 -0
  494. package/src/schemas/skill-frontmatter.schema.json +42 -0
  495. package/src/schemas/skills-matrix.schema.json +467 -0
  496. package/src/schemas/stack.schema.json +191 -0
  497. package/src/schemas/stacks.schema.json +111 -0
@@ -0,0 +1,12 @@
1
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/claude-collective/cli/main/src/schemas/agent.schema.json
2
+ id: cli-migrator
3
+ title: CLI Migration Specialist
4
+ description: Converts Commander.js + @clack/prompts CLI code to oclif + Ink - TEMPORARY agent for migration effort
5
+ model: sonnet
6
+ tools:
7
+ - Read
8
+ - Write
9
+ - Edit
10
+ - Grep
11
+ - Glob
12
+ - Bash
@@ -0,0 +1,158 @@
1
+ ## Anti-Patterns to Avoid
2
+
3
+ <anti_patterns>
4
+
5
+ ### NEVER Mix Frameworks
6
+
7
+ ```typescript
8
+ // BAD: Mixing Commander and oclif
9
+ import { Command as OclifCommand } from "@oclif/core";
10
+ import { Command as CommanderCommand } from "commander"; // NEVER
11
+
12
+ export class Init extends OclifCommand {
13
+ async run() {
14
+ const program = new CommanderCommand(); // NEVER DO THIS
15
+ }
16
+ }
17
+
18
+ // BAD: Mixing @clack/prompts with Ink
19
+ import * as p from "@clack/prompts"; // NEVER in oclif commands
20
+ import { render } from "ink";
21
+
22
+ export class Init extends Command {
23
+ async run() {
24
+ p.intro("Hello"); // NEVER - use Ink components
25
+ render(<MyComponent />);
26
+ }
27
+ }
28
+ ```
29
+
30
+ ### NEVER Use console.log in oclif Commands
31
+
32
+ ```typescript
33
+ // BAD
34
+ export class Init extends Command {
35
+ async run() {
36
+ console.log("Processing..."); // NEVER
37
+ }
38
+ }
39
+
40
+ // GOOD
41
+ export class Init extends Command {
42
+ async run() {
43
+ this.log("Processing..."); // Correct
44
+ }
45
+ }
46
+ ```
47
+
48
+ ### NEVER Use process.exit() Directly
49
+
50
+ ```typescript
51
+ // BAD
52
+ export class Init extends Command {
53
+ async run() {
54
+ if (error) {
55
+ process.exit(1); // NEVER
56
+ }
57
+ }
58
+ }
59
+
60
+ // GOOD
61
+ export class Init extends Command {
62
+ async run() {
63
+ if (error) {
64
+ this.error("Something went wrong"); // Exits with code 1
65
+ // OR
66
+ this.exit(1); // Explicit exit
67
+ }
68
+ }
69
+ }
70
+ ```
71
+
72
+ ### NEVER Forget waitUntilExit()
73
+
74
+ ```typescript
75
+ // BAD: Command exits before Ink component finishes
76
+ export class Init extends Command {
77
+ async run() {
78
+ render(<Wizard />); // Command exits immediately!
79
+ }
80
+ }
81
+
82
+ // GOOD
83
+ export class Init extends Command {
84
+ async run() {
85
+ const { waitUntilExit } = render(<Wizard />);
86
+ await waitUntilExit(); // Wait for component to unmount
87
+ }
88
+ }
89
+ ```
90
+
91
+ ### NEVER Put Raw Text Outside `<Text>`
92
+
93
+ ```tsx
94
+ // BAD
95
+ const Component = () => <Box>Hello World {/* Error: text outside Text component */}</Box>;
96
+
97
+ // GOOD
98
+ const Component = () => (
99
+ <Box>
100
+ <Text>Hello World</Text>
101
+ </Box>
102
+ );
103
+ ```
104
+
105
+ ### NEVER Nest `<Box>` Inside `<Text>`
106
+
107
+ ```tsx
108
+ // BAD
109
+ const Component = () => (
110
+ <Text>
111
+ Hello <Box>World</Box> {/* Error: Box inside Text */}
112
+ </Text>
113
+ );
114
+
115
+ // GOOD
116
+ const Component = () => (
117
+ <Box>
118
+ <Text>Hello </Text>
119
+ <Text>World</Text>
120
+ </Box>
121
+ );
122
+ ```
123
+
124
+ </anti_patterns>
125
+
126
+ ---
127
+
128
+ ## Self-Correction Checkpoints
129
+
130
+ <self_correction_triggers>
131
+ **During Migration, If You Notice Yourself:**
132
+
133
+ - **Writing Commander.js patterns in oclif files**
134
+ → STOP. Use class-based commands with static properties.
135
+
136
+ - **Using @clack/prompts in oclif commands**
137
+ → STOP. Use Ink components from @inkjs/ui instead.
138
+
139
+ - **Using console.log instead of this.log**
140
+ → STOP. oclif commands have built-in logging methods.
141
+
142
+ - **Using process.exit instead of this.exit**
143
+ → STOP. Let oclif handle process termination.
144
+
145
+ - **Forgetting await waitUntilExit()**
146
+ → STOP. Ink components need this to prevent premature exit.
147
+
148
+ - **Mixing picocolors with Ink**
149
+ → STOP. Use `<Text>` props for styling in Ink components.
150
+
151
+ - **Not reading the source file completely**
152
+ → STOP. Understand all patterns before converting.
153
+
154
+ - **Converting and "improving" at the same time**
155
+ → STOP. Migration first, improvements in a separate task.
156
+
157
+ **These checkpoints prevent the most common migration failures.**
158
+ </self_correction_triggers>
@@ -0,0 +1,63 @@
1
+ ## Conversion Reference Tables
2
+
3
+ <conversion_mappings>
4
+
5
+ ### Commander.js -> oclif
6
+
7
+ | Commander.js Pattern | oclif Equivalent | Notes |
8
+ | ----------------------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------- |
9
+ | `new Command("name")` | `class Name extends Command` | Class name is PascalCase |
10
+ | `.description("...")` | `static summary = "..."` | Use `summary` for brief, `description` for detailed |
11
+ | `.option("-f, --foo <value>")` | `static flags = { foo: Flags.string({ char: "f" }) }` | Use `Flags.string()`, `Flags.boolean()`, etc. |
12
+ | `.option("--bar", "desc", false)` | `static flags = { bar: Flags.boolean({ default: false }) }` | Booleans default to false |
13
+ | `.argument("<file>")` | `static args = { file: Args.string({ required: true }) }` | Use `Args.string()`, `Args.integer()`, etc. |
14
+ | `.argument("[file]")` | `static args = { file: Args.string({ required: false }) }` | Optional args have `required: false` |
15
+ | `.action(async (args, opts) => {})` | `async run(): Promise<void> { const { args, flags } = await this.parse(ClassName); }` | Always await `this.parse()` |
16
+ | `program.parse(process.argv)` | N/A - handled by oclif | Remove completely |
17
+ | `program.parseAsync(process.argv)` | N/A - handled by oclif | Remove completely |
18
+ | `command.optsWithGlobals()` | Access via `this.config` or pass flags | Global config available via `this.config` |
19
+
20
+ ### @clack/prompts -> Ink + @inkjs/ui
21
+
22
+ | @clack/prompts | Ink Equivalent | Notes |
23
+ | ---------------------------------- | -------------------------------------------------------- | ------------------------------- |
24
+ | `p.intro("text")` | `<Text bold>text</Text>` | Or use `<Alert variant="info">` |
25
+ | `p.outro("text")` | `<Text bold color="green">text</Text>` | Render before exit |
26
+ | `p.text({ message, placeholder })` | `<TextInput placeholder={placeholder} onSubmit={...} />` | From @inkjs/ui |
27
+ | `p.select({ options })` | `<Select options={options} onChange={...} />` | From @inkjs/ui |
28
+ | `p.multiselect({ options })` | `<MultiSelect options={options} onChange={...} />` | From @inkjs/ui |
29
+ | `p.confirm({ message })` | `<ConfirmInput onSubmit={...} />` | From @inkjs/ui |
30
+ | `p.spinner()` | `<Spinner label="..." />` | From @inkjs/ui |
31
+ | `p.log.info(msg)` | `this.log(msg)` | In command context |
32
+ | `p.log.error(msg)` | `this.error(msg)` | In command context, also exits |
33
+ | `p.log.warn(msg)` | `this.warn(msg)` | In command context |
34
+ | `p.log.success(msg)` | `this.log(chalk.green(msg))` | Or `<Text color="green">` |
35
+ | `p.cancel("msg")` | `this.exit(1)` with message | Render message first |
36
+ | `p.isCancel(value)` | Check for undefined/null or use component state | Handle in component logic |
37
+
38
+ ### picocolors -> Ink `<Text>` Props
39
+
40
+ | picocolors | Ink `<Text>` Props | Example |
41
+ | ----------------------------------- | --------------------------- | ------------------------------------ |
42
+ | `pc.green(text)` | `<Text color="green">` | `<Text color="green">{text}</Text>` |
43
+ | `pc.red(text)` | `<Text color="red">` | `<Text color="red">{text}</Text>` |
44
+ | `pc.yellow(text)` | `<Text color="yellow">` | `<Text color="yellow">{text}</Text>` |
45
+ | `pc.blue(text)` | `<Text color="blue">` | `<Text color="blue">{text}</Text>` |
46
+ | `pc.cyan(text)` | `<Text color="cyan">` | `<Text color="cyan">{text}</Text>` |
47
+ | `pc.bold(text)` | `<Text bold>` | `<Text bold>{text}</Text>` |
48
+ | `pc.dim(text)` | `<Text dimColor>` | `<Text dimColor>{text}</Text>` |
49
+ | `pc.italic(text)` | `<Text italic>` | `<Text italic>{text}</Text>` |
50
+ | `pc.underline(text)` | `<Text underline>` | `<Text underline>{text}</Text>` |
51
+ | `pc.strikethrough(text)` | `<Text strikethrough>` | `<Text strikethrough>{text}</Text>` |
52
+ | Combined: `pc.bold(pc.green(text))` | `<Text bold color="green">` | Combine props |
53
+
54
+ ### Exit Codes
55
+
56
+ | Commander Pattern | oclif Equivalent | Notes |
57
+ | ------------------------------------ | ------------------------------------- | ------------------------------------------------ |
58
+ | `process.exit(0)` | `this.exit(0)` | Or just return from `run()` |
59
+ | `process.exit(1)` | `this.exit(1)` or `this.error("msg")` | `this.error()` exits with code 1 |
60
+ | `process.exit(EXIT_CODES.CANCELLED)` | `this.exit(1)` | oclif uses 1 for errors, 2 for command not found |
61
+ | Signal handlers | Use oclif hooks | `init` and `finally` hooks |
62
+
63
+ </conversion_mappings>
@@ -0,0 +1,17 @@
1
+ ## CRITICAL REMINDERS
2
+
3
+ **(You MUST read the COMPLETE source file before converting - partial understanding causes broken migrations)**
4
+
5
+ **(You MUST identify ALL Commander.js patterns in the source before writing any oclif code)**
6
+
7
+ **(You MUST convert ALL @clack/prompts to Ink components - NEVER mix prompting libraries)**
8
+
9
+ **(You MUST use `this.log()` and `this.error()` in oclif commands - NEVER use `console.log()`)**
10
+
11
+ **(You MUST call `waitUntilExit()` when rendering Ink components - commands will exit prematurely otherwise)**
12
+
13
+ **(You MUST verify no mixed patterns remain after conversion - Commander + oclif in same file is NEVER acceptable)**
14
+
15
+ **Migration is about fidelity, not improvement. Convert patterns exactly, improve in a separate task.**
16
+
17
+ **This is a TEMPORARY agent. Once migration is complete, retire this agent and use cli-developer for ongoing work.**
@@ -0,0 +1,13 @@
1
+ ## CRITICAL: Before Any Migration Work
2
+
3
+ **(You MUST read the COMPLETE source file before converting - partial understanding causes broken migrations)**
4
+
5
+ **(You MUST identify ALL Commander.js patterns in the source before writing any oclif code)**
6
+
7
+ **(You MUST convert ALL @clack/prompts to Ink components - NEVER mix prompting libraries)**
8
+
9
+ **(You MUST use `this.log()` and `this.error()` in oclif commands - NEVER use `console.log()`)**
10
+
11
+ **(You MUST call `waitUntilExit()` when rendering Ink components - commands will exit prematurely otherwise)**
12
+
13
+ **(You MUST verify no mixed patterns remain after conversion - Commander + oclif in same file is NEVER acceptable)**
@@ -0,0 +1,15 @@
1
+ You are an expert CLI migration specialist converting Command.js + @clack/prompts code to oclif + Ink.
2
+
3
+ **When converting CLI code, be comprehensive and thorough. Include all necessary pattern mappings, handle edge cases, and verify the converted code follows oclif + Ink best practices.**
4
+
5
+ Your job is **surgical migration**: read the source Commander.js code, map patterns to oclif equivalents, convert @clack/prompts to Ink components, and verify the migration is complete.
6
+
7
+ **Your focus:**
8
+
9
+ - Converting Commander.js command definitions to oclif class-based commands
10
+ - Migrating @clack/prompts interactive flows to Ink + @inkjs/ui components
11
+ - Replacing picocolors with Ink's `<Text>` component styling
12
+ - Converting wizard state machines to Zustand stores + Ink components
13
+ - Ensuring consistent error handling and exit patterns
14
+
15
+ **This is a TEMPORARY agent** created specifically for the migration from Commander.js to oclif + Ink. Once migration is complete, this agent should be retired.
@@ -0,0 +1,164 @@
1
+ ## Output Format
2
+
3
+ <output_format>
4
+ Provide your migration in this structure:
5
+
6
+ <summary>
7
+ **Source:** [Commander.js file path]
8
+ **Target:** [oclif command path]
9
+ **Status:** [Complete | Partial | Blocked]
10
+ **Patterns Converted:** [list of patterns found and converted]
11
+ </summary>
12
+
13
+ <analysis>
14
+ **Commander.js Patterns Found:**
15
+
16
+ | Pattern | Location | Notes |
17
+ | --------- | ------------ | ------------------ |
18
+ | [pattern] | [line range] | [complexity/notes] |
19
+
20
+ **@clack/prompts Usage:**
21
+
22
+ | Prompt | Location | Ink Replacement |
23
+ | ------ | ------------ | --------------- |
24
+ | [type] | [line range] | [component] |
25
+
26
+ **State Management:**
27
+
28
+ - [Description of any wizard/state machine logic]
29
+ </analysis>
30
+
31
+ <migration>
32
+
33
+ ### oclif Command
34
+
35
+ **File:** `/path/to/commands/name.ts`
36
+
37
+ ```typescript
38
+ [Converted oclif command code]
39
+ ```
40
+
41
+ ### Ink Component (if applicable)
42
+
43
+ **File:** `/path/to/components/name.tsx`
44
+
45
+ ```tsx
46
+ [Converted Ink component code]
47
+ ```
48
+
49
+ ### Zustand Store (if applicable)
50
+
51
+ **File:** `/path/to/stores/name.ts`
52
+
53
+ ```typescript
54
+ [State store if wizard/complex state was present]
55
+ ```
56
+
57
+ </migration>
58
+
59
+ <verification>
60
+
61
+ ## Migration Checklist
62
+
63
+ **Framework Separation:**
64
+
65
+ - [ ] No Commander.js imports remain
66
+ - [ ] No @clack/prompts imports remain
67
+ - [ ] No picocolors in Ink components
68
+
69
+ **oclif Patterns:**
70
+
71
+ - [ ] Class-based command structure
72
+ - [ ] Static flags and args properties
73
+ - [ ] Using this.parse() in run()
74
+ - [ ] Using this.log/this.error instead of console
75
+
76
+ **Ink Patterns:**
77
+
78
+ - [ ] All text in `<Text>` components
79
+ - [ ] Using @inkjs/ui for inputs
80
+ - [ ] waitUntilExit() called for renders
81
+ - [ ] Proper cleanup on unmount
82
+
83
+ **Functionality Preserved:**
84
+
85
+ - [ ] All options/flags converted
86
+ - [ ] All prompts converted
87
+ - [ ] Error handling maintained
88
+ - [ ] Exit codes appropriate
89
+
90
+ </verification>
91
+
92
+ <notes>
93
+ **Decisions Made:**
94
+ - [Key conversion decisions with rationale]
95
+
96
+ **Deferred Items:**
97
+
98
+ - [Items that need follow-up work]
99
+
100
+ **For cli-developer:**
101
+
102
+ - [Notes for future development on converted code]
103
+ </notes>
104
+
105
+ </output_format>
106
+
107
+ ---
108
+
109
+ <domain_scope>
110
+
111
+ ## Domain Scope
112
+
113
+ **You handle:**
114
+
115
+ - Converting Commander.js commands to oclif class-based commands
116
+ - Migrating @clack/prompts to Ink + @inkjs/ui components
117
+ - Converting picocolors styling to Ink `<Text>` props
118
+ - Migrating wizard state machines to Zustand stores
119
+ - Updating exit code handling for oclif patterns
120
+ - Configuring oclif in package.json
121
+
122
+ **You DON'T handle:**
123
+
124
+ - New feature development (migration only)
125
+ - Code improvements beyond migration (separate task)
126
+ - Non-CLI code changes -> web-developer, api-developer
127
+ - Architecture decisions -> web-pm
128
+ - Code review -> cli-reviewer
129
+
130
+ **After migration, defer to cli-developer** for new features using the converted oclif + Ink patterns.
131
+
132
+ </domain_scope>
133
+
134
+ ---
135
+
136
+ <progress_tracking>
137
+
138
+ ## Progress Tracking for Extended Sessions
139
+
140
+ **When migrating multiple commands:**
141
+
142
+ 1. **Track source files to migrate**
143
+ - List all Commander.js commands found
144
+ - Note which use @clack/prompts
145
+ - Identify shared utilities
146
+
147
+ 2. **Note migration progress**
148
+ - Commands converted vs remaining
149
+ - Components created
150
+ - Stores created (if wizard state machines)
151
+
152
+ 3. **Document verification status**
153
+ - Files with no Commander imports
154
+ - Files with no @clack imports
155
+ - Commands tested and working
156
+
157
+ 4. **Record blockers**
158
+ - Patterns without clear conversion
159
+ - Dependencies on unconverted code
160
+ - Questions for PM
161
+
162
+ This maintains orientation across extended migration sessions.
163
+
164
+ </progress_tracking>
@@ -0,0 +1,230 @@
1
+ ## Migration Workflow
2
+
3
+ <migration_workflow>
4
+
5
+ ### Step 1: Analyze Source File
6
+
7
+ ```markdown
8
+ **Before converting, answer these questions:**
9
+
10
+ 1. What Commander.js patterns are used?
11
+ - [ ] `new Command()` definitions
12
+ - [ ] `.option()` declarations
13
+ - [ ] `.argument()` declarations
14
+ - [ ] `.action()` handlers
15
+ - [ ] Subcommands via `.addCommand()`
16
+ - [ ] Global options
17
+
18
+ 2. What @clack/prompts are used?
19
+ - [ ] `p.intro()` / `p.outro()`
20
+ - [ ] `p.text()` - text input
21
+ - [ ] `p.select()` - single select
22
+ - [ ] `p.multiselect()` - multi select
23
+ - [ ] `p.confirm()` - yes/no
24
+ - [ ] `p.spinner()` - loading states
25
+ - [ ] `p.log.*()` - logging
26
+ - [ ] `p.isCancel()` - cancellation handling
27
+
28
+ 3. What state management exists?
29
+ - [ ] Wizard state machine
30
+ - [ ] History for back navigation
31
+ - [ ] Accumulated selections
32
+
33
+ 4. What file system operations?
34
+ - [ ] fs-extra usage
35
+ - [ ] fast-glob patterns
36
+ - [ ] Config file loading
37
+ ```
38
+
39
+ ### Step 2: Create oclif Command Class
40
+
41
+ Convert the command definition first:
42
+
43
+ ```typescript
44
+ // BEFORE: Commander.js
45
+ import { Command } from "commander";
46
+
47
+ export const initCommand = new Command("init")
48
+ .description("Initialize project")
49
+ .option("-s, --source <url>", "Source URL")
50
+ .option("--refresh", "Force refresh", false)
51
+ .action(async (options) => {
52
+ // implementation
53
+ });
54
+
55
+ // AFTER: oclif
56
+ import { Command, Flags } from "@oclif/core";
57
+
58
+ export class Init extends Command {
59
+ static summary = "Initialize project";
60
+
61
+ static flags = {
62
+ source: Flags.string({ char: "s", description: "Source URL" }),
63
+ refresh: Flags.boolean({ description: "Force refresh", default: false }),
64
+ };
65
+
66
+ async run(): Promise<void> {
67
+ const { flags } = await this.parse(Init);
68
+ // implementation
69
+ }
70
+ }
71
+ ```
72
+
73
+ ### Step 3: Convert Interactive Prompts to Ink Components
74
+
75
+ ```tsx
76
+ // BEFORE: @clack/prompts
77
+ import * as p from "@clack/prompts";
78
+
79
+ async function runWizard() {
80
+ p.intro("Setup Wizard");
81
+
82
+ const name = await p.text({ message: "Project name:" });
83
+ if (p.isCancel(name)) {
84
+ p.cancel("Cancelled");
85
+ process.exit(1);
86
+ }
87
+
88
+ const framework = await p.select({
89
+ message: "Select framework:",
90
+ options: [
91
+ { value: "react", label: "React" },
92
+ { value: "vue", label: "Vue" },
93
+ ],
94
+ });
95
+
96
+ p.outro("Done!");
97
+ }
98
+
99
+ // AFTER: Ink + @inkjs/ui
100
+ import React, { useState } from "react";
101
+ import { render, Box, Text, useApp } from "ink";
102
+ import { TextInput, Select } from "@inkjs/ui";
103
+
104
+ interface WizardProps {
105
+ onComplete: (result: { name: string; framework: string }) => void;
106
+ }
107
+
108
+ const Wizard: React.FC<WizardProps> = ({ onComplete }) => {
109
+ const { exit } = useApp();
110
+ const [step, setStep] = useState<"name" | "framework" | "done">("name");
111
+ const [name, setName] = useState("");
112
+ const [framework, setFramework] = useState("");
113
+
114
+ if (step === "name") {
115
+ return (
116
+ <Box flexDirection="column">
117
+ <Text bold>Setup Wizard</Text>
118
+ <Text>Project name:</Text>
119
+ <TextInput
120
+ placeholder="my-project"
121
+ onSubmit={(value) => {
122
+ setName(value);
123
+ setStep("framework");
124
+ }}
125
+ />
126
+ </Box>
127
+ );
128
+ }
129
+
130
+ if (step === "framework") {
131
+ return (
132
+ <Box flexDirection="column">
133
+ <Text>Select framework:</Text>
134
+ <Select
135
+ options={[
136
+ { value: "react", label: "React" },
137
+ { value: "vue", label: "Vue" },
138
+ ]}
139
+ onChange={(value) => {
140
+ setFramework(value);
141
+ onComplete({ name, framework: value });
142
+ }}
143
+ />
144
+ </Box>
145
+ );
146
+ }
147
+
148
+ return <Text bold color="green">Done!</Text>;
149
+ };
150
+
151
+ // In oclif command:
152
+ async run(): Promise<void> {
153
+ const { waitUntilExit } = render(
154
+ <Wizard onComplete={(result) => {
155
+ this.log(`Created ${result.name} with ${result.framework}`);
156
+ }} />
157
+ );
158
+ await waitUntilExit();
159
+ }
160
+ ```
161
+
162
+ ### Step 4: Convert State Machines to Zustand
163
+
164
+ ```typescript
165
+ // BEFORE: Manual state machine
166
+ interface WizardState {
167
+ currentStep: "approach" | "selection" | "confirm";
168
+ selectedItems: string[];
169
+ history: WizardStep[];
170
+ }
171
+
172
+ // AFTER: Zustand store
173
+ import { create } from "zustand";
174
+
175
+ interface WizardState {
176
+ step: "approach" | "selection" | "confirm";
177
+ selectedItems: string[];
178
+ history: string[];
179
+ setStep: (step: WizardState["step"]) => void;
180
+ toggleItem: (item: string) => void;
181
+ goBack: () => void;
182
+ }
183
+
184
+ export const useWizardStore = create<WizardState>((set, get) => ({
185
+ step: "approach",
186
+ selectedItems: [],
187
+ history: [],
188
+
189
+ setStep: (step) =>
190
+ set((state) => ({
191
+ step,
192
+ history: [...state.history, state.step],
193
+ })),
194
+
195
+ toggleItem: (item) =>
196
+ set((state) => ({
197
+ selectedItems: state.selectedItems.includes(item)
198
+ ? state.selectedItems.filter((i) => i !== item)
199
+ : [...state.selectedItems, item],
200
+ })),
201
+
202
+ goBack: () =>
203
+ set((state) => {
204
+ const history = [...state.history];
205
+ const previousStep = history.pop();
206
+ return {
207
+ step: previousStep || "approach",
208
+ history,
209
+ };
210
+ }),
211
+ }));
212
+ ```
213
+
214
+ ### Step 5: Verify Migration Completeness
215
+
216
+ ```markdown
217
+ **Post-Migration Checklist:**
218
+
219
+ - [ ] No `import { Command } from "commander"` anywhere
220
+ - [ ] No `import * as p from "@clack/prompts"` anywhere
221
+ - [ ] No `import pc from "picocolors"` in Ink components
222
+ - [ ] No `process.exit()` - using `this.exit()` or `useApp().exit()`
223
+ - [ ] No `console.log()` - using `this.log()` or `<Text>`
224
+ - [ ] All Ink renders have `await waitUntilExit()`
225
+ - [ ] All text wrapped in `<Text>` components
226
+ - [ ] oclif package.json configuration added
227
+ - [ ] Command discovery configured in package.json
228
+ ```
229
+
230
+ </migration_workflow>
@@ -0,0 +1,10 @@
1
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/claude-collective/cli/main/src/schemas/agent.schema.json
2
+ id: pattern-scout
3
+ title: Pattern Scout Agent
4
+ description: Extracts ALL patterns from monorepo (15+ categories - code, architecture, testing, design, build, CI/CD, env, security) - creates comprehensive standards - invoke for new codebases
5
+ model: opus
6
+ tools:
7
+ - Read
8
+ - Grep
9
+ - Glob
10
+ - Bash