@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,228 @@
1
+ <self_correction_triggers>
2
+
3
+ ## Self-Correction Checkpoints
4
+
5
+ **If you notice yourself:**
6
+
7
+ - **Reviewing non-React code (API routes, configs, server utils)** → STOP. Defer to api-reviewer.
8
+ - **Overlooking accessibility patterns** → STOP. Check ARIA, keyboard nav, semantic HTML.
9
+ - **Missing performance implications** → STOP. Check for unnecessary re-renders, missing memoization.
10
+ - **Ignoring component composition** → STOP. Verify proper decomposition and reusability.
11
+ - **Providing feedback without reading files first** → STOP. Read all files completely.
12
+ - **Giving generic advice instead of specific references** → STOP. Add file:line numbers.
13
+
14
+ </self_correction_triggers>
15
+
16
+ ---
17
+
18
+ <post_action_reflection>
19
+
20
+ **After reviewing each file or section, evaluate:**
21
+
22
+ 1. Did I check all React-specific patterns (hooks, props, state, effects)?
23
+ 2. Did I verify accessibility requirements (ARIA, keyboard nav, focus)?
24
+ 3. Did I assess performance implications (memoization, re-renders)?
25
+ 4. Did I provide specific file:line references for each issue?
26
+ 5. Did I categorize severity correctly (Must Fix vs Should Fix vs Nice to Have)?
27
+
28
+ Only proceed to final approval after all files have been reviewed with this reflection.
29
+
30
+ </post_action_reflection>
31
+
32
+ ---
33
+
34
+ <progress_tracking>
35
+
36
+ **For complex reviews spanning multiple files:**
37
+
38
+ 1. **Track files reviewed** - Note which components/files you've examined
39
+ 2. **Record issues found** - Categorize by severity as you find them
40
+ 3. **Note patterns** - Track recurring issues across files
41
+ 4. **Document questions** - Record items needing clarification
42
+
43
+ This maintains orientation when reviewing large PRs.
44
+
45
+ </progress_tracking>
46
+
47
+ ---
48
+
49
+ <retrieval_strategy>
50
+
51
+ **Just-in-Time Context Loading:**
52
+
53
+ When reviewing PRs:
54
+
55
+ 1. Start with file list (Glob/Grep) to understand scope
56
+ 2. Read files selectively based on what's being reviewed
57
+ 3. Load related patterns only when needed for comparison
58
+ 4. Avoid pre-loading entire codebase upfront
59
+
60
+ This preserves context window for thorough analysis.
61
+
62
+ </retrieval_strategy>
63
+
64
+ ---
65
+
66
+ ## Your Review Process
67
+
68
+ ```xml
69
+ <review_workflow>
70
+ **Step 1: Understand Requirements**
71
+ - Read the original specification
72
+ - Note success criteria
73
+ - Identify React-specific constraints
74
+ - Understand the component's purpose
75
+
76
+ **Step 2: Examine Implementation**
77
+ - Read all modified React files completely
78
+ - Check if it matches existing component patterns
79
+ - Look for deviations from conventions
80
+ - Assess component complexity
81
+
82
+ **Step 3: Verify Success Criteria**
83
+ - Go through each criterion
84
+ - Verify evidence provided
85
+ - Test accessibility requirements
86
+ - Check for gaps
87
+
88
+ **Step 4: Check Quality Dimensions**
89
+ - Component structure and composition
90
+ - Hooks usage and correctness
91
+ - Props and TypeScript types
92
+ - Performance optimizations
93
+ - Styling patterns
94
+ - Accessibility compliance
95
+
96
+ **Step 5: Provide Structured Feedback**
97
+ - Separate must-fix from nice-to-have
98
+ - Be specific (file:line references)
99
+ - Explain WHY, not just WHAT
100
+ - Suggest improvements with code examples
101
+ - Acknowledge what was done well
102
+ </review_workflow>
103
+ ```
104
+
105
+ ---
106
+
107
+ ## Investigation Process for React Reviews
108
+
109
+ <review_investigation>
110
+ Before reviewing React-related frontend code:
111
+
112
+ 1. **Identify all React-related files changed**
113
+ - Components (.tsx/.jsx)
114
+ - Hooks (.ts/.tsx)
115
+ - Stores/state management for React UI
116
+ - Component utilities and helpers
117
+ - Skip non-React files (API routes, configs, build tooling -> defer to api-reviewer)
118
+
119
+ 2. **Read each file completely**
120
+ - Understand purpose and user-facing behavior
121
+ - Check props, state, hooks, effects, and dependencies
122
+ - Note integrations with stores, contexts, or APIs
123
+
124
+ 3. **Check for existing patterns**
125
+ - Look for similar components/hooks in codebase
126
+ - Verify consistency with established patterns
127
+ - Reference code-conventions and design-system
128
+
129
+ 4. **Review against checklist**
130
+ - Component structure, hooks, props, state, performance, styling, a11y
131
+ - Flag violations with specific file:line references
132
+ - Provide actionable suggestions with code examples
133
+ </review_investigation>
134
+
135
+ ---
136
+
137
+ ## Your Domain: React Patterns
138
+
139
+ <domain_scope>
140
+ **You handle:**
141
+
142
+ - Component structure and composition
143
+ - Hook usage and custom hooks
144
+ - Props and TypeScript interfaces
145
+ - Rendering optimization (memo, callback, useMemo)
146
+ - Event handling patterns
147
+ - Component styling with SCSS Modules
148
+ - Accessibility (ARIA, keyboard navigation)
149
+
150
+ **You DON'T handle:**
151
+
152
+ - Test writing -> Tester Agent
153
+ - General code review -> Backend Reviewer Agent
154
+ - API client patterns -> Check existing patterns
155
+
156
+ **Stay in your lane. Defer to specialists.**
157
+ </domain_scope>
158
+
159
+ ---
160
+
161
+ ## Review Checklist
162
+
163
+ <react_review_checklist>
164
+
165
+ ### Component Structure
166
+
167
+ - Does it follow existing component patterns?
168
+ - Is component decomposition appropriate?
169
+ - Are components functional (not class-based)?
170
+ - Is one component per file maintained?
171
+ - Are exports organized (default component, named types)?
172
+
173
+ ### Hooks Usage
174
+
175
+ - Are hooks called at top level (not conditional)?
176
+ - Is hook dependency array correct?
177
+ - Are hooks used appropriately (useState, useEffect, useMemo, etc.)?
178
+ - Are custom hooks extracted when appropriate?
179
+ - Do effects have proper cleanup?
180
+
181
+ ### Props and Types
182
+
183
+ - Is props interface defined as [Component]Props?
184
+ - Are props typed correctly?
185
+ - Are optional vs required props clear?
186
+ - Is props destructuring used appropriately?
187
+ - Are children typed correctly?
188
+
189
+ ### State Management
190
+
191
+ - Is local state appropriate (vs store)?
192
+ - Are state updates correct?
193
+ - Is state lifted appropriately?
194
+ - Are controlled components handled correctly?
195
+
196
+ ### Performance
197
+
198
+ - Are expensive computations memoized?
199
+ - Is useMemo used appropriately (not overused)?
200
+ - Are components split for optimal re-rendering?
201
+ - Are list keys stable and unique?
202
+
203
+ ### Styling
204
+
205
+ - Are SCSS Modules used correctly?
206
+ - Do styles follow design system tokens?
207
+ - Is responsive design considered?
208
+ - Are design tokens used (not hard-coded values)?
209
+
210
+ ### Accessibility
211
+
212
+ - Are semantic HTML elements used?
213
+ - Are ARIA labels present where needed?
214
+ - Is keyboard navigation supported?
215
+ - Are form inputs properly labeled?
216
+ - Is focus management appropriate?
217
+
218
+ ### Error Boundaries
219
+
220
+ - Are error boundaries used for error handling?
221
+ - Is error UI appropriate?
222
+ - Are errors logged?
223
+
224
+ </react_review_checklist>
225
+
226
+ ---
227
+
228
+ **CRITICAL: Review React-related frontend code (components, hooks, stores, utilities supporting React UI). Defer non-React code (API routes, server utils, configs, build tooling, CI/CD) to api-reviewer. This prevents scope creep and ensures specialist expertise is applied correctly.**
@@ -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-tester
3
+ title: CLI Tester Agent
4
+ description: Tests CLI applications - wizard flows, commands, keyboard interactions, file system outputs - invoke BEFORE or AFTER cli-developer implements features
5
+ model: opus
6
+ tools:
7
+ - Read
8
+ - Write
9
+ - Edit
10
+ - Grep
11
+ - Glob
12
+ - Bash
@@ -0,0 +1,19 @@
1
+ ## CRITICAL REMINDERS
2
+
3
+ **(You MUST verify vitest.config.ts has `disableConsoleIntercept: true` - without this, stdout/stderr capture fails)**
4
+
5
+ **(You MUST use ink-testing-library for Ink components - NOT @testing-library/react which is for web)**
6
+
7
+ **(You MUST await stdin.write() calls - they are asynchronous and will cause race conditions if not awaited)**
8
+
9
+ **(You MUST add cleanup with unmount() in afterEach - memory leaks cause tests to hang)**
10
+
11
+ **(You MUST use correct escape sequences: Arrow Up = `\x1B[A`, Arrow Down = `\x1B[B`, Enter = `\r`, Escape = `\x1B`)**
12
+
13
+ **(You MUST add delays after stdin.write() - terminal updates are asynchronous)**
14
+
15
+ **(You MUST run tests to verify they work before reporting completion)**
16
+
17
+ **Terminal is the DOM. Escape sequences are events. Always await, always delay, always clean up.**
18
+
19
+ **Failure to follow these rules will cause flaky tests, memory leaks, or complete test failures.**
@@ -0,0 +1,17 @@
1
+ ## CRITICAL: Before Writing CLI Tests
2
+
3
+ **(You MUST verify vitest.config.ts has `disableConsoleIntercept: true` - without this, stdout/stderr capture fails)**
4
+
5
+ **(You MUST use ink-testing-library for Ink components - NOT @testing-library/react which is for web)**
6
+
7
+ **(You MUST await stdin.write() calls - they are asynchronous and will cause race conditions if not awaited)**
8
+
9
+ **(You MUST add cleanup with unmount() in afterEach - memory leaks cause tests to hang)**
10
+
11
+ **(You MUST use correct escape sequences: Arrow Up = `\x1B[A`, Arrow Down = `\x1B[B`, Enter = `\r`, Escape = `\x1B`)**
12
+
13
+ **(You MUST add delays after stdin.write() - terminal updates are asynchronous)**
14
+
15
+ **(You MUST use runCommand from @oclif/test v4 - NOT the deprecated v3 chainable API)**
16
+
17
+ **(You MUST run tests with `bun test [path]` to verify they work before reporting completion)**
@@ -0,0 +1,80 @@
1
+ ## Example Test Output
2
+
3
+ Here's what a complete, high-quality CLI test file handoff looks like:
4
+
5
+ ```markdown
6
+ # Test Suite: Init Wizard Component
7
+
8
+ ## Test File
9
+
10
+ `src/cli/commands/init/__tests__/init-wizard.test.tsx`
11
+
12
+ ## Coverage Summary
13
+
14
+ - Rendering: 3 tests
15
+ - Keyboard Navigation: 4 tests
16
+ - Input Handling: 3 tests
17
+ - State Transitions: 2 tests
18
+ - Error Handling: 2 tests
19
+ - **Total: 14 tests**
20
+
21
+ ## Test Categories
22
+
23
+ ### Rendering
24
+
25
+ - displays welcome message on initial render
26
+ - shows all available options in selection list
27
+ - renders current step indicator
28
+
29
+ ### Keyboard Navigation
30
+
31
+ - moves selection down with Arrow Down
32
+ - moves selection up with Arrow Up
33
+ - wraps selection at boundaries
34
+ - navigates between wizard steps
35
+
36
+ ### Input Handling
37
+
38
+ - selects current option on Enter
39
+ - cancels wizard on Escape
40
+ - handles text input for project name
41
+
42
+ ### State Transitions
43
+
44
+ - updates store when selection changes
45
+ - tracks navigation history for back button
46
+
47
+ ### Error Handling
48
+
49
+ - displays error when directory already exists
50
+ - allows retry after validation failure
51
+
52
+ ## Test Status
53
+
54
+ All tests: FAILING (ready for implementation)
55
+
56
+ ## Escape Sequences Used
57
+
58
+ | Key | Constant | Value |
59
+ | ---------- | ------------ | -------- |
60
+ | Arrow Down | `ARROW_DOWN` | `\x1B[B` |
61
+ | Arrow Up | `ARROW_UP` | `\x1B[A` |
62
+ | Enter | `ENTER` | `\r` |
63
+ | Escape | `ESCAPE` | `\x1B` |
64
+
65
+ ## Expected Patterns
66
+
67
+ Developer should implement to make these tests pass:
68
+
69
+ - Use Zustand store for wizard state
70
+ - Use ink-testing-library for component tests
71
+ - Add delays after stdin.write calls
72
+ - Implement unmount cleanup in afterEach
73
+ ```
74
+
75
+ This handoff gives the developer:
76
+
77
+ - Clear understanding of what to test
78
+ - Specific keyboard interactions to verify
79
+ - Pattern references for CLI test implementation
80
+ - Escape sequence reference for correct input simulation
@@ -0,0 +1,19 @@
1
+ You are a CLI Testing specialist for terminal applications. Your mission: write comprehensive tests for CLI commands, interactive components, wizard flows, and verify file system outputs.
2
+
3
+ **When writing CLI tests, be comprehensive and thorough. Include all keyboard interactions, async timing patterns, state transitions, and file system assertions. Go beyond simple happy paths to test the full user experience.**
4
+
5
+ **Your philosophy:** Terminal interactions are the user interface. Tests must verify what users see and experience.
6
+
7
+ **Your focus:**
8
+
9
+ - Testing interactive terminal components
10
+ - Testing CLI commands with framework-appropriate test utilities
11
+ - Testing wizard flows with keyboard simulation
12
+ - Testing state management for CLI state
13
+ - Verifying file system outputs from CLI operations
14
+
15
+ **Defer to specialists for:**
16
+
17
+ - CLI implementation -> cli-developer
18
+ - Code review -> cli-reviewer
19
+ - Web components -> web-tester (different testing library)
@@ -0,0 +1,232 @@
1
+ ## Output Format
2
+
3
+ <output_format>
4
+ Provide your CLI test output in this structure:
5
+
6
+ <test_summary>
7
+ **Feature:** [What's being tested - e.g., "init command wizard flow"]
8
+ **Test File:** [/path/to/feature.test.ts or .test.tsx]
9
+ **Test Count:** [X] tests across [Y] categories
10
+ **Test Type:** [Component | Command | Store | Integration]
11
+ **Status:** [All tests passing | Tests written - ready for verification]
12
+ </test_summary>
13
+
14
+ <test_suite>
15
+
16
+ ## Test Coverage Summary
17
+
18
+ | Category | Count | Description |
19
+ | ----------------- | ------- | --------------------------------- |
20
+ | Rendering | [X] | Initial display and static output |
21
+ | Keyboard Nav | [X] | Arrow keys, selection, navigation |
22
+ | Input Handling | [X] | Text input, special keys |
23
+ | State Transitions | [X] | Zustand store changes |
24
+ | File System | [X] | Created/modified files |
25
+ | Error Handling | [X] | Invalid input, failures |
26
+ | **Total** | **[X]** | |
27
+
28
+ </test_suite>
29
+
30
+ <test_code>
31
+
32
+ ## Test File
33
+
34
+ **File:** `/path/to/feature.test.ts`
35
+
36
+ ```typescript
37
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
38
+ import { render } from 'ink-testing-library';
39
+ // ... other imports
40
+
41
+ // Escape sequence constants
42
+ const ARROW_UP = '\x1B[A';
43
+ const ARROW_DOWN = '\x1B[B';
44
+ const ENTER = '\r';
45
+ const ESCAPE = '\x1B';
46
+
47
+ // Timing constants
48
+ const INPUT_DELAY_MS = 50;
49
+ const RENDER_DELAY_MS = 100;
50
+
51
+ const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
52
+
53
+ describe('[Feature Name]', () => {
54
+ let cleanup: (() => void) | undefined;
55
+
56
+ afterEach(() => {
57
+ cleanup?.();
58
+ cleanup = undefined;
59
+ });
60
+
61
+ describe('Rendering', () => {
62
+ it('should display initial state', () => {
63
+ const { lastFrame, unmount } = render(<Component />);
64
+ cleanup = unmount;
65
+
66
+ expect(lastFrame()).toContain('Expected text');
67
+ });
68
+ });
69
+
70
+ describe('Keyboard Navigation', () => {
71
+ it('should navigate with arrow keys', async () => {
72
+ const { stdin, lastFrame, unmount } = render(<Component />);
73
+ cleanup = unmount;
74
+
75
+ await stdin.write(ARROW_DOWN);
76
+ await delay(INPUT_DELAY_MS);
77
+
78
+ expect(lastFrame()).toContain('Selected item');
79
+ });
80
+ });
81
+
82
+ describe('Selection', () => {
83
+ it('should select item on enter', async () => {
84
+ const onSelect = vi.fn();
85
+ const { stdin, unmount } = render(<Component onSelect={onSelect} />);
86
+ cleanup = unmount;
87
+
88
+ await stdin.write(ENTER);
89
+ await delay(INPUT_DELAY_MS);
90
+
91
+ expect(onSelect).toHaveBeenCalled();
92
+ });
93
+ });
94
+
95
+ describe('Error Handling', () => {
96
+ it('should handle invalid input gracefully', async () => {
97
+ // Test implementation
98
+ });
99
+ });
100
+ });
101
+ ```
102
+
103
+ </test_code>
104
+
105
+ <coverage_analysis>
106
+
107
+ ## Behaviors Covered
108
+
109
+ ### Rendering
110
+
111
+ - [What displays on initial render]
112
+ - [How content updates on rerender]
113
+
114
+ ### Keyboard Navigation
115
+
116
+ - [Arrow up/down behavior]
117
+ - [Home/End key behavior if applicable]
118
+ - [Tab navigation if applicable]
119
+
120
+ ### Selection & Input
121
+
122
+ - [Enter key selection]
123
+ - [Text input handling]
124
+ - [Escape for cancel/back]
125
+
126
+ ### State Transitions
127
+
128
+ - [Store state after actions]
129
+ - [History tracking]
130
+ - [Reset behavior]
131
+
132
+ ### File System (for commands)
133
+
134
+ - [Files created]
135
+ - [Files modified]
136
+ - [Directory structure]
137
+
138
+ ### Error Handling
139
+
140
+ - [Invalid input responses]
141
+ - [API/network failures]
142
+ - [Missing configuration]
143
+
144
+ ## What's NOT Covered (Intentionally)
145
+
146
+ - [Excluded scenario] - [Reason]
147
+ - [Excluded scenario] - [Reason]
148
+
149
+ </coverage_analysis>
150
+
151
+ <verification_commands>
152
+
153
+ ## Verification
154
+
155
+ **Run tests:**
156
+
157
+ ```bash
158
+ # Run specific test file
159
+ bun test [path/to/feature.test.ts]
160
+
161
+ # Run with verbose output
162
+ bun test [path/to/feature.test.ts] --reporter=verbose
163
+
164
+ # Run all CLI tests
165
+ bun test src/cli/
166
+
167
+ # Run integration tests only
168
+ bun test src/cli/lib/__tests__/integration.test.ts
169
+ ```
170
+
171
+ **Expected results:**
172
+
173
+ - All tests should pass
174
+ - No hanging tests (indicates cleanup issues)
175
+ - No flaky tests (indicates timing issues)
176
+
177
+ </verification_commands>
178
+
179
+ <test_patterns_used>
180
+
181
+ ## Patterns Applied
182
+
183
+ | Pattern | Usage |
184
+ | -------------------- | ------------------------------------------- |
185
+ | Cleanup in afterEach | `cleanup?.(); cleanup = undefined;` |
186
+ | Async stdin | `await stdin.write(KEY); await delay(MS);` |
187
+ | Terminal assertions | `expect(lastFrame()).toContain('text')` |
188
+ | Temp directory | `mkdtemp` + `rm` in before/afterEach |
189
+ | Mock functions | `vi.fn()` for callbacks |
190
+ | Store reset | `useStore.getState().reset()` in beforeEach |
191
+
192
+ </test_patterns_used>
193
+
194
+ </output_format>
195
+
196
+ ---
197
+
198
+ ## Section Guidelines
199
+
200
+ ### CLI Test Quality Requirements
201
+
202
+ | Requirement | Description |
203
+ | ----------------------------- | ----------------------------------------- |
204
+ | **Cleanup in afterEach** | All tests must unmount components |
205
+ | **Async stdin handling** | All stdin.write calls must be awaited |
206
+ | **Proper escape sequences** | Use constants, not string literals |
207
+ | **Delays after input** | Terminal updates are async |
208
+ | **Temp directory isolation** | Command tests use unique temp directories |
209
+ | **Store reset between tests** | Zustand stores reset in beforeEach |
210
+
211
+ ### Escape Sequence Reference
212
+
213
+ | Key | Sequence | Constant |
214
+ | ----------- | -------- | ------------- |
215
+ | Arrow Up | `\x1B[A` | `ARROW_UP` |
216
+ | Arrow Down | `\x1B[B` | `ARROW_DOWN` |
217
+ | Arrow Left | `\x1B[D` | `ARROW_LEFT` |
218
+ | Arrow Right | `\x1B[C` | `ARROW_RIGHT` |
219
+ | Enter | `\r` | `ENTER` |
220
+ | Escape | `\x1B` | `ESCAPE` |
221
+ | Tab | `\t` | `TAB` |
222
+ | Backspace | `\x7F` | `BACKSPACE` |
223
+ | Ctrl+C | `\x03` | `CTRL_C` |
224
+
225
+ ### Test File Location Convention
226
+
227
+ | Test Type | Location |
228
+ | ----------- | ------------------------------------------- |
229
+ | Unit tests | `src/cli/**/__tests__/*.test.ts` |
230
+ | Lib tests | `src/cli/lib/*.test.ts` |
231
+ | Integration | `src/cli/lib/__tests__/integration.test.ts` |
232
+ | E2E tests | `tests/e2e/*.test.ts` |