agents-inc 0.149.2 → 0.151.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (572) hide show
  1. package/CHANGELOG.md +2287 -0
  2. package/LICENSE +21 -0
  3. package/README.md +136 -19
  4. package/assets/demo.gif +0 -0
  5. package/assets/demo.tape +266 -0
  6. package/assets/logo.svg +75 -0
  7. package/dist/chunk-2RSNKBXC.js +84 -0
  8. package/dist/chunk-2RSNKBXC.js.map +1 -0
  9. package/dist/chunk-3LIU2ZEF.js +1355 -0
  10. package/dist/chunk-3LIU2ZEF.js.map +1 -0
  11. package/dist/chunk-3XFUQ6OL.js +68 -0
  12. package/dist/chunk-3XFUQ6OL.js.map +1 -0
  13. package/dist/chunk-3YGUHWLR.js +258 -0
  14. package/dist/chunk-3YGUHWLR.js.map +1 -0
  15. package/dist/chunk-44LLPS2N.js +1135 -0
  16. package/dist/chunk-44LLPS2N.js.map +1 -0
  17. package/dist/chunk-4R6PGHQQ.js +300 -0
  18. package/dist/chunk-4R6PGHQQ.js.map +1 -0
  19. package/dist/chunk-5V2O6C3T.js +112 -0
  20. package/dist/chunk-5V2O6C3T.js.map +1 -0
  21. package/dist/chunk-6RBQBOBS.js +287 -0
  22. package/dist/chunk-6RBQBOBS.js.map +1 -0
  23. package/dist/chunk-7QIHKQL5.js +181 -0
  24. package/dist/chunk-7QIHKQL5.js.map +1 -0
  25. package/dist/chunk-BNE4HHIH.js +28 -0
  26. package/dist/chunk-BNE4HHIH.js.map +1 -0
  27. package/dist/chunk-C55DN7GE.js +35 -0
  28. package/dist/chunk-C55DN7GE.js.map +1 -0
  29. package/dist/chunk-DAG2ULNF.js +125 -0
  30. package/dist/chunk-DAG2ULNF.js.map +1 -0
  31. package/dist/chunk-DG2NGZ7S.js +10929 -0
  32. package/dist/chunk-DG2NGZ7S.js.map +1 -0
  33. package/dist/chunk-DIBCRIMR.js +36 -0
  34. package/dist/chunk-DIBCRIMR.js.map +1 -0
  35. package/dist/chunk-DUVWGO6E.js +54 -0
  36. package/dist/chunk-DUVWGO6E.js.map +1 -0
  37. package/dist/chunk-EKWAUOQB.js +96 -0
  38. package/dist/chunk-EKWAUOQB.js.map +1 -0
  39. package/dist/chunk-ES3NJZON.js +31 -0
  40. package/dist/chunk-ES3NJZON.js.map +1 -0
  41. package/dist/chunk-EVXG3X6G.js +179 -0
  42. package/dist/chunk-EVXG3X6G.js.map +1 -0
  43. package/dist/chunk-EZ7STXUV.js +349 -0
  44. package/dist/chunk-EZ7STXUV.js.map +1 -0
  45. package/dist/chunk-FYPUUYSG.js +31 -0
  46. package/dist/chunk-FYPUUYSG.js.map +1 -0
  47. package/dist/chunk-GYG5SE2D.js +81 -0
  48. package/dist/chunk-GYG5SE2D.js.map +1 -0
  49. package/dist/chunk-I3XKEGHM.js +16383 -0
  50. package/dist/chunk-I3XKEGHM.js.map +1 -0
  51. package/dist/chunk-IHO75PMZ.js +40 -0
  52. package/dist/chunk-IHO75PMZ.js.map +1 -0
  53. package/dist/chunk-IOJR5TOY.js +47 -0
  54. package/dist/chunk-IOJR5TOY.js.map +1 -0
  55. package/dist/chunk-K3OU6TGX.js +77 -0
  56. package/dist/chunk-K3OU6TGX.js.map +1 -0
  57. package/dist/chunk-KIR7VYQD.js +63 -0
  58. package/dist/chunk-KIR7VYQD.js.map +1 -0
  59. package/dist/chunk-KOPEM3Q7.js +27 -0
  60. package/dist/chunk-KOPEM3Q7.js.map +1 -0
  61. package/dist/chunk-KSZ6PCY4.js +43 -0
  62. package/dist/chunk-KSZ6PCY4.js.map +1 -0
  63. package/dist/chunk-LAXAQ3PZ.js +235 -0
  64. package/dist/chunk-LAXAQ3PZ.js.map +1 -0
  65. package/dist/chunk-LYYXX2W5.js +87 -0
  66. package/dist/chunk-LYYXX2W5.js.map +1 -0
  67. package/dist/chunk-NGLQ5W7U.js +339 -0
  68. package/dist/chunk-NGLQ5W7U.js.map +1 -0
  69. package/dist/chunk-NHCGC6DG.js +111 -0
  70. package/dist/chunk-NHCGC6DG.js.map +1 -0
  71. package/dist/chunk-NIKUMXE7.js +24 -0
  72. package/dist/chunk-NIKUMXE7.js.map +1 -0
  73. package/dist/chunk-NM3EDGB5.js +300 -0
  74. package/dist/chunk-NM3EDGB5.js.map +1 -0
  75. package/dist/chunk-O5ASLZ2K.js +270 -0
  76. package/dist/chunk-O5ASLZ2K.js.map +1 -0
  77. package/dist/chunk-OJIESW5B.js +174 -0
  78. package/dist/chunk-OJIESW5B.js.map +1 -0
  79. package/dist/chunk-OZZGXBCN.js +15 -0
  80. package/dist/chunk-OZZGXBCN.js.map +1 -0
  81. package/dist/chunk-P3PN5SVI.js +27 -0
  82. package/dist/chunk-P3PN5SVI.js.map +1 -0
  83. package/dist/chunk-P56WJ5FA.js +50 -0
  84. package/dist/chunk-P56WJ5FA.js.map +1 -0
  85. package/dist/chunk-PG4G4IIK.js +24 -0
  86. package/dist/chunk-PG4G4IIK.js.map +1 -0
  87. package/dist/chunk-PV2HNW4I.js +382 -0
  88. package/dist/chunk-PV2HNW4I.js.map +1 -0
  89. package/dist/chunk-QQLRX4KI.js +41 -0
  90. package/dist/chunk-QQLRX4KI.js.map +1 -0
  91. package/dist/chunk-QTFQEYDA.js +789 -0
  92. package/dist/chunk-QTFQEYDA.js.map +1 -0
  93. package/dist/chunk-RBHYLCUB.js +31 -0
  94. package/dist/chunk-RBHYLCUB.js.map +1 -0
  95. package/dist/chunk-SHHOMVWC.js +62 -0
  96. package/dist/chunk-SHHOMVWC.js.map +1 -0
  97. package/dist/chunk-SI5FOARI.js +42 -0
  98. package/dist/chunk-SI5FOARI.js.map +1 -0
  99. package/dist/chunk-SYUOXSPU.js +510 -0
  100. package/dist/chunk-SYUOXSPU.js.map +1 -0
  101. package/dist/chunk-THKIOI32.js +939 -0
  102. package/dist/chunk-THKIOI32.js.map +1 -0
  103. package/dist/chunk-TVHRMRD3.js +6014 -0
  104. package/dist/chunk-TVHRMRD3.js.map +1 -0
  105. package/dist/chunk-TYJLR32W.js +128 -0
  106. package/dist/chunk-TYJLR32W.js.map +1 -0
  107. package/dist/chunk-UFURYGD3.js +20 -0
  108. package/dist/chunk-UFURYGD3.js.map +1 -0
  109. package/dist/chunk-UTFN6UJS.js +253 -0
  110. package/dist/chunk-UTFN6UJS.js.map +1 -0
  111. package/dist/chunk-V7QOSGQA.js +298 -0
  112. package/dist/chunk-V7QOSGQA.js.map +1 -0
  113. package/dist/chunk-VEP23B5W.js +27 -0
  114. package/dist/chunk-VEP23B5W.js.map +1 -0
  115. package/dist/chunk-VG2TVBFN.js +52 -0
  116. package/dist/chunk-VG2TVBFN.js.map +1 -0
  117. package/dist/chunk-WFWCZEMS.js +92 -0
  118. package/dist/chunk-WFWCZEMS.js.map +1 -0
  119. package/dist/chunk-WK4J2CHH.js +430 -0
  120. package/dist/chunk-WK4J2CHH.js.map +1 -0
  121. package/dist/chunk-XA57SX4T.js +115 -0
  122. package/dist/chunk-XA57SX4T.js.map +1 -0
  123. package/dist/chunk-Y4CXDA3I.js +181 -0
  124. package/dist/chunk-Y4CXDA3I.js.map +1 -0
  125. package/dist/chunk-YA4QQKKE.js +51 -0
  126. package/dist/chunk-YA4QQKKE.js.map +1 -0
  127. package/dist/chunk-YBVA7GPW.js +27 -0
  128. package/dist/chunk-YBVA7GPW.js.map +1 -0
  129. package/dist/chunk-YU2VGX5R.js +4205 -0
  130. package/dist/chunk-YU2VGX5R.js.map +1 -0
  131. package/dist/commands/build/marketplace.js +250 -0
  132. package/dist/commands/build/marketplace.js.map +1 -0
  133. package/dist/commands/build/plugins.js +176 -0
  134. package/dist/commands/build/plugins.js.map +1 -0
  135. package/dist/commands/compile.js +331 -0
  136. package/dist/commands/compile.js.map +1 -0
  137. package/dist/commands/doctor.js +475 -0
  138. package/dist/commands/doctor.js.map +1 -0
  139. package/dist/commands/edit.js +765 -0
  140. package/dist/commands/edit.js.map +1 -0
  141. package/dist/commands/eject.js +393 -0
  142. package/dist/commands/eject.js.map +1 -0
  143. package/dist/commands/import/skill.js +349 -0
  144. package/dist/commands/import/skill.js.map +1 -0
  145. package/dist/commands/init.js +66 -0
  146. package/dist/commands/init.js.map +1 -0
  147. package/dist/commands/list.js +115 -0
  148. package/dist/commands/list.js.map +1 -0
  149. package/dist/commands/new/agent.js +304 -0
  150. package/dist/commands/new/agent.js.map +1 -0
  151. package/dist/commands/new/marketplace.js +315 -0
  152. package/dist/commands/new/marketplace.js.map +1 -0
  153. package/dist/commands/new/skill.js +28 -0
  154. package/dist/commands/new/skill.js.map +1 -0
  155. package/dist/commands/search.js +176 -0
  156. package/dist/commands/search.js.map +1 -0
  157. package/dist/commands/uninstall.js +570 -0
  158. package/dist/commands/uninstall.js.map +1 -0
  159. package/dist/commands/update.js +368 -0
  160. package/dist/commands/update.js.map +1 -0
  161. package/dist/commands/validate.js +581 -0
  162. package/dist/commands/validate.js.map +1 -0
  163. package/dist/components/common/confirm.js +9 -0
  164. package/dist/components/common/confirm.js.map +1 -0
  165. package/dist/components/common/confirm.test.js +203 -0
  166. package/dist/components/common/confirm.test.js.map +1 -0
  167. package/dist/components/common/prompt-confirm.js +11 -0
  168. package/dist/components/common/prompt-confirm.js.map +1 -0
  169. package/dist/components/common/select-list.js +11 -0
  170. package/dist/components/common/select-list.js.map +1 -0
  171. package/dist/components/common/spinner.js +9 -0
  172. package/dist/components/common/spinner.js.map +1 -0
  173. package/dist/components/wizard/category-grid.js +16 -0
  174. package/dist/components/wizard/category-grid.js.map +1 -0
  175. package/dist/components/wizard/category-grid.test.js +1253 -0
  176. package/dist/components/wizard/category-grid.test.js.map +1 -0
  177. package/dist/components/wizard/checkbox-grid.js +14 -0
  178. package/dist/components/wizard/checkbox-grid.js.map +1 -0
  179. package/dist/components/wizard/checkbox-grid.test.js +264 -0
  180. package/dist/components/wizard/checkbox-grid.test.js.map +1 -0
  181. package/dist/components/wizard/domain-selection.js +22 -0
  182. package/dist/components/wizard/domain-selection.js.map +1 -0
  183. package/dist/components/wizard/run-wizard-session.js +47 -0
  184. package/dist/components/wizard/run-wizard-session.js.map +1 -0
  185. package/dist/components/wizard/scroll-affordance.js +10 -0
  186. package/dist/components/wizard/scroll-affordance.js.map +1 -0
  187. package/dist/components/wizard/search-modal.js +14 -0
  188. package/dist/components/wizard/search-modal.js.map +1 -0
  189. package/dist/components/wizard/search-modal.test.js +212 -0
  190. package/dist/components/wizard/search-modal.test.js.map +1 -0
  191. package/dist/components/wizard/selection-card.js +10 -0
  192. package/dist/components/wizard/selection-card.js.map +1 -0
  193. package/dist/components/wizard/skill-agent-summary.js +16 -0
  194. package/dist/components/wizard/skill-agent-summary.js.map +1 -0
  195. package/dist/components/wizard/source-grid.js +23 -0
  196. package/dist/components/wizard/source-grid.js.map +1 -0
  197. package/dist/components/wizard/source-grid.test.js +1094 -0
  198. package/dist/components/wizard/source-grid.test.js.map +1 -0
  199. package/dist/components/wizard/stack-selection.js +20 -0
  200. package/dist/components/wizard/stack-selection.js.map +1 -0
  201. package/dist/components/wizard/step-agents.js +22 -0
  202. package/dist/components/wizard/step-agents.js.map +1 -0
  203. package/dist/components/wizard/step-agents.test.js +204 -0
  204. package/dist/components/wizard/step-agents.test.js.map +1 -0
  205. package/dist/components/wizard/step-build.js +22 -0
  206. package/dist/components/wizard/step-build.js.map +1 -0
  207. package/dist/components/wizard/step-build.test.js +552 -0
  208. package/dist/components/wizard/step-build.test.js.map +1 -0
  209. package/dist/components/wizard/step-confirm.js +21 -0
  210. package/dist/components/wizard/step-confirm.js.map +1 -0
  211. package/dist/components/wizard/step-confirm.test.js +744 -0
  212. package/dist/components/wizard/step-confirm.test.js.map +1 -0
  213. package/dist/components/wizard/step-settings.js +19 -0
  214. package/dist/components/wizard/step-settings.js.map +1 -0
  215. package/dist/components/wizard/step-settings.test.js +244 -0
  216. package/dist/components/wizard/step-settings.test.js.map +1 -0
  217. package/dist/components/wizard/step-sources.js +28 -0
  218. package/dist/components/wizard/step-sources.js.map +1 -0
  219. package/dist/components/wizard/step-sources.test.js +155 -0
  220. package/dist/components/wizard/step-sources.test.js.map +1 -0
  221. package/dist/components/wizard/step-stack.js +21 -0
  222. package/dist/components/wizard/step-stack.js.map +1 -0
  223. package/dist/components/wizard/step-stack.test.js +262 -0
  224. package/dist/components/wizard/step-stack.test.js.map +1 -0
  225. package/dist/components/wizard/summary-panel.js +20 -0
  226. package/dist/components/wizard/summary-panel.js.map +1 -0
  227. package/dist/components/wizard/summary-panel.test.js +317 -0
  228. package/dist/components/wizard/summary-panel.test.js.map +1 -0
  229. package/dist/components/wizard/toast.js +10 -0
  230. package/dist/components/wizard/toast.js.map +1 -0
  231. package/dist/components/wizard/wizard-layout.js +26 -0
  232. package/dist/components/wizard/wizard-layout.js.map +1 -0
  233. package/dist/components/wizard/wizard-layout.test.js +200 -0
  234. package/dist/components/wizard/wizard-layout.test.js.map +1 -0
  235. package/dist/components/wizard/wizard-tabs.js +20 -0
  236. package/dist/components/wizard/wizard-tabs.js.map +1 -0
  237. package/dist/components/wizard/wizard-tabs.test.js +290 -0
  238. package/dist/components/wizard/wizard-tabs.test.js.map +1 -0
  239. package/dist/components/wizard/wizard.js +48 -0
  240. package/dist/components/wizard/wizard.js.map +1 -0
  241. package/dist/config-exports.js +20 -0
  242. package/dist/config-exports.js.map +1 -0
  243. package/dist/copy-local-skills-UPA2GUZV.js +15 -0
  244. package/dist/copy-local-skills-UPA2GUZV.js.map +1 -0
  245. package/dist/dist-VNJNNJK7.js +550 -0
  246. package/dist/dist-VNJNNJK7.js.map +1 -0
  247. package/dist/hooks/init.js +90 -0
  248. package/dist/hooks/init.js.map +1 -0
  249. package/dist/index.js +10 -0
  250. package/dist/index.js.map +1 -0
  251. package/dist/load-agent-defs-SB4XAOVB.js +16 -0
  252. package/dist/load-agent-defs-SB4XAOVB.js.map +1 -0
  253. package/dist/loader-E2ERJYVA.js +23 -0
  254. package/dist/loader-E2ERJYVA.js.map +1 -0
  255. package/dist/magic-string.es-5TV73NJD.js +1316 -0
  256. package/dist/magic-string.es-5TV73NJD.js.map +1 -0
  257. package/dist/recompile-project-agents-U4ZY2GDX.js +20 -0
  258. package/dist/recompile-project-agents-U4ZY2GDX.js.map +1 -0
  259. package/dist/source-loader-5UNRU7EZ.js +20 -0
  260. package/dist/source-loader-5UNRU7EZ.js.map +1 -0
  261. package/dist/source-manager-3O54SIIB.js +18 -0
  262. package/dist/source-manager-3O54SIIB.js.map +1 -0
  263. package/dist/src/agents/_templates/agent.liquid +161 -0
  264. package/dist/src/agents/_templates/methodologies/anti-over-engineering.liquid +121 -0
  265. package/dist/src/agents/_templates/methodologies/context-management.liquid +162 -0
  266. package/dist/src/agents/_templates/methodologies/improvement-protocol.liquid +150 -0
  267. package/dist/src/agents/_templates/methodologies/investigation-requirements.liquid +49 -0
  268. package/dist/src/agents/_templates/methodologies/success-criteria.liquid +111 -0
  269. package/dist/src/agents/_templates/methodologies/write-verification.liquid +43 -0
  270. package/dist/src/agents/developer/ai-developer/critical-reminders.md +54 -0
  271. package/dist/src/agents/developer/ai-developer/critical-requirements.md +59 -0
  272. package/dist/src/agents/developer/ai-developer/identity.md +51 -0
  273. package/dist/src/agents/developer/ai-developer/metadata.yaml +12 -0
  274. package/dist/src/agents/developer/ai-developer/output.md +366 -0
  275. package/dist/src/agents/developer/ai-developer/playbook.md +335 -0
  276. package/dist/src/agents/developer/api-developer/critical-reminders.md +46 -0
  277. package/dist/src/agents/developer/api-developer/critical-requirements.md +44 -0
  278. package/dist/src/agents/developer/api-developer/identity.md +49 -0
  279. package/dist/src/agents/developer/api-developer/metadata.yaml +12 -0
  280. package/dist/src/agents/developer/api-developer/output.md +432 -0
  281. package/dist/src/agents/developer/api-developer/playbook.md +352 -0
  282. package/dist/src/agents/developer/cli-developer/critical-reminders.md +51 -0
  283. package/dist/src/agents/developer/cli-developer/critical-requirements.md +51 -0
  284. package/dist/src/agents/developer/cli-developer/identity.md +51 -0
  285. package/dist/src/agents/developer/cli-developer/metadata.yaml +12 -0
  286. package/dist/src/agents/developer/cli-developer/output.md +285 -0
  287. package/dist/src/agents/developer/cli-developer/playbook.md +386 -0
  288. package/dist/src/agents/developer/web-architecture/critical-reminders.md +48 -0
  289. package/dist/src/agents/developer/web-architecture/critical-requirements.md +65 -0
  290. package/dist/src/agents/developer/web-architecture/identity.md +64 -0
  291. package/dist/src/agents/developer/web-architecture/metadata.yaml +12 -0
  292. package/dist/src/agents/developer/web-architecture/output.md +449 -0
  293. package/dist/src/agents/developer/web-architecture/playbook.md +481 -0
  294. package/dist/src/agents/developer/web-developer/critical-reminders.md +40 -0
  295. package/dist/src/agents/developer/web-developer/critical-requirements.md +39 -0
  296. package/dist/src/agents/developer/web-developer/identity.md +32 -0
  297. package/dist/src/agents/developer/web-developer/metadata.yaml +12 -0
  298. package/dist/src/agents/developer/web-developer/output.md +323 -0
  299. package/dist/src/agents/developer/web-developer/playbook.md +349 -0
  300. package/dist/src/agents/meta/agent-summoner/critical-reminders.md +45 -0
  301. package/dist/src/agents/meta/agent-summoner/critical-requirements.md +52 -0
  302. package/dist/src/agents/meta/agent-summoner/identity.md +34 -0
  303. package/dist/src/agents/meta/agent-summoner/metadata.yaml +12 -0
  304. package/dist/src/agents/meta/agent-summoner/output.md +296 -0
  305. package/dist/src/agents/meta/agent-summoner/playbook.md +1469 -0
  306. package/dist/src/agents/meta/codex-keeper/critical-reminders.md +39 -0
  307. package/dist/src/agents/meta/codex-keeper/critical-requirements.md +29 -0
  308. package/dist/src/agents/meta/codex-keeper/identity.md +45 -0
  309. package/dist/src/agents/meta/codex-keeper/metadata.yaml +12 -0
  310. package/dist/src/agents/meta/codex-keeper/output.md +384 -0
  311. package/dist/src/agents/meta/codex-keeper/playbook.md +1183 -0
  312. package/dist/src/agents/meta/convention-keeper/critical-reminders.md +32 -0
  313. package/dist/src/agents/meta/convention-keeper/critical-requirements.md +32 -0
  314. package/dist/src/agents/meta/convention-keeper/identity.md +33 -0
  315. package/dist/src/agents/meta/convention-keeper/metadata.yaml +12 -0
  316. package/dist/src/agents/meta/convention-keeper/output.md +206 -0
  317. package/dist/src/agents/meta/convention-keeper/playbook.md +180 -0
  318. package/dist/src/agents/meta/skill-summoner/critical-reminders.md +112 -0
  319. package/dist/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
  320. package/dist/src/agents/meta/skill-summoner/identity.md +31 -0
  321. package/dist/src/agents/meta/skill-summoner/metadata.yaml +13 -0
  322. package/dist/src/agents/meta/skill-summoner/output.md +390 -0
  323. package/dist/src/agents/meta/skill-summoner/playbook.md +1457 -0
  324. package/dist/src/agents/pattern/pattern-scout/critical-reminders.md +71 -0
  325. package/dist/src/agents/pattern/pattern-scout/critical-requirements.md +31 -0
  326. package/dist/src/agents/pattern/pattern-scout/identity.md +25 -0
  327. package/dist/src/agents/pattern/pattern-scout/metadata.yaml +10 -0
  328. package/dist/src/agents/pattern/pattern-scout/output.md +290 -0
  329. package/dist/src/agents/pattern/pattern-scout/playbook.md +1806 -0
  330. package/dist/src/agents/pattern/web-pattern-critique/critical-reminders.md +30 -0
  331. package/dist/src/agents/pattern/web-pattern-critique/critical-requirements.md +28 -0
  332. package/dist/src/agents/pattern/web-pattern-critique/identity.md +41 -0
  333. package/dist/src/agents/pattern/web-pattern-critique/metadata.yaml +12 -0
  334. package/dist/src/agents/pattern/web-pattern-critique/output.md +314 -0
  335. package/dist/src/agents/pattern/web-pattern-critique/playbook.md +572 -0
  336. package/dist/src/agents/planning/api-pm/critical-reminders.md +48 -0
  337. package/dist/src/agents/planning/api-pm/critical-requirements.md +41 -0
  338. package/dist/src/agents/planning/api-pm/identity.md +39 -0
  339. package/dist/src/agents/planning/api-pm/metadata.yaml +12 -0
  340. package/dist/src/agents/planning/api-pm/output.md +475 -0
  341. package/dist/src/agents/planning/api-pm/playbook.md +129 -0
  342. package/dist/src/agents/planning/web-pm/critical-reminders.md +36 -0
  343. package/dist/src/agents/planning/web-pm/critical-requirements.md +32 -0
  344. package/dist/src/agents/planning/web-pm/identity.md +26 -0
  345. package/dist/src/agents/planning/web-pm/metadata.yaml +12 -0
  346. package/dist/src/agents/planning/web-pm/output.md +314 -0
  347. package/dist/src/agents/planning/web-pm/playbook.md +318 -0
  348. package/dist/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
  349. package/dist/src/agents/researcher/api-researcher/critical-requirements.md +28 -0
  350. package/dist/src/agents/researcher/api-researcher/identity.md +71 -0
  351. package/dist/src/agents/researcher/api-researcher/metadata.yaml +10 -0
  352. package/dist/src/agents/researcher/api-researcher/output.md +254 -0
  353. package/dist/src/agents/researcher/api-researcher/playbook.md +201 -0
  354. package/dist/src/agents/researcher/web-researcher/critical-reminders.md +39 -0
  355. package/dist/src/agents/researcher/web-researcher/critical-requirements.md +26 -0
  356. package/dist/src/agents/researcher/web-researcher/identity.md +69 -0
  357. package/dist/src/agents/researcher/web-researcher/metadata.yaml +10 -0
  358. package/dist/src/agents/researcher/web-researcher/output.md +241 -0
  359. package/dist/src/agents/researcher/web-researcher/playbook.md +217 -0
  360. package/dist/src/agents/reviewer/ai-reviewer/critical-reminders.md +40 -0
  361. package/dist/src/agents/reviewer/ai-reviewer/critical-requirements.md +37 -0
  362. package/dist/src/agents/reviewer/ai-reviewer/identity.md +51 -0
  363. package/dist/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
  364. package/dist/src/agents/reviewer/ai-reviewer/output.md +395 -0
  365. package/dist/src/agents/reviewer/ai-reviewer/playbook.md +90 -0
  366. package/dist/src/agents/reviewer/api-reviewer/critical-reminders.md +31 -0
  367. package/dist/src/agents/reviewer/api-reviewer/critical-requirements.md +27 -0
  368. package/dist/src/agents/reviewer/api-reviewer/identity.md +51 -0
  369. package/dist/src/agents/reviewer/api-reviewer/metadata.yaml +12 -0
  370. package/dist/src/agents/reviewer/api-reviewer/output.md +343 -0
  371. package/dist/src/agents/reviewer/api-reviewer/playbook.md +288 -0
  372. package/dist/src/agents/reviewer/cli-reviewer/critical-reminders.md +33 -0
  373. package/dist/src/agents/reviewer/cli-reviewer/critical-requirements.md +30 -0
  374. package/dist/src/agents/reviewer/cli-reviewer/identity.md +44 -0
  375. package/dist/src/agents/reviewer/cli-reviewer/metadata.yaml +12 -0
  376. package/dist/src/agents/reviewer/cli-reviewer/output.md +414 -0
  377. package/dist/src/agents/reviewer/cli-reviewer/playbook.md +218 -0
  378. package/dist/src/agents/reviewer/infra-reviewer/critical-reminders.md +38 -0
  379. package/dist/src/agents/reviewer/infra-reviewer/critical-requirements.md +38 -0
  380. package/dist/src/agents/reviewer/infra-reviewer/identity.md +53 -0
  381. package/dist/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
  382. package/dist/src/agents/reviewer/infra-reviewer/output.md +364 -0
  383. package/dist/src/agents/reviewer/infra-reviewer/playbook.md +161 -0
  384. package/dist/src/agents/reviewer/web-reviewer/critical-reminders.md +31 -0
  385. package/dist/src/agents/reviewer/web-reviewer/critical-requirements.md +26 -0
  386. package/dist/src/agents/reviewer/web-reviewer/identity.md +40 -0
  387. package/dist/src/agents/reviewer/web-reviewer/metadata.yaml +12 -0
  388. package/dist/src/agents/reviewer/web-reviewer/output.md +333 -0
  389. package/dist/src/agents/reviewer/web-reviewer/playbook.md +156 -0
  390. package/dist/src/agents/tester/api-tester/critical-reminders.md +41 -0
  391. package/dist/src/agents/tester/api-tester/critical-requirements.md +41 -0
  392. package/dist/src/agents/tester/api-tester/identity.md +47 -0
  393. package/dist/src/agents/tester/api-tester/metadata.yaml +12 -0
  394. package/dist/src/agents/tester/api-tester/output.md +284 -0
  395. package/dist/src/agents/tester/api-tester/playbook.md +275 -0
  396. package/dist/src/agents/tester/cli-tester/critical-reminders.md +36 -0
  397. package/dist/src/agents/tester/cli-tester/critical-requirements.md +36 -0
  398. package/dist/src/agents/tester/cli-tester/identity.md +43 -0
  399. package/dist/src/agents/tester/cli-tester/metadata.yaml +12 -0
  400. package/dist/src/agents/tester/cli-tester/output.md +313 -0
  401. package/dist/src/agents/tester/cli-tester/playbook.md +221 -0
  402. package/dist/src/agents/tester/web-tester/critical-reminders.md +31 -0
  403. package/dist/src/agents/tester/web-tester/critical-requirements.md +28 -0
  404. package/dist/src/agents/tester/web-tester/identity.md +41 -0
  405. package/dist/src/agents/tester/web-tester/metadata.yaml +12 -0
  406. package/dist/src/agents/tester/web-tester/output.md +321 -0
  407. package/dist/src/agents/tester/web-tester/playbook.md +428 -0
  408. package/dist/stores/d227-same-scope-tombstone-duplicate.test.js +118 -0
  409. package/dist/stores/d227-same-scope-tombstone-duplicate.test.js.map +1 -0
  410. package/dist/stores/wizard-store.js +21 -0
  411. package/dist/stores/wizard-store.js.map +1 -0
  412. package/dist/stores/wizard-store.test.js +3053 -0
  413. package/dist/stores/wizard-store.test.js.map +1 -0
  414. package/package.json +130 -12
  415. package/src/agents/_templates/agent.liquid +161 -0
  416. package/src/agents/_templates/methodologies/anti-over-engineering.liquid +121 -0
  417. package/src/agents/_templates/methodologies/context-management.liquid +162 -0
  418. package/src/agents/_templates/methodologies/improvement-protocol.liquid +150 -0
  419. package/src/agents/_templates/methodologies/investigation-requirements.liquid +49 -0
  420. package/src/agents/_templates/methodologies/success-criteria.liquid +111 -0
  421. package/src/agents/_templates/methodologies/write-verification.liquid +43 -0
  422. package/src/agents/developer/ai-developer/critical-reminders.md +54 -0
  423. package/src/agents/developer/ai-developer/critical-requirements.md +59 -0
  424. package/src/agents/developer/ai-developer/identity.md +51 -0
  425. package/src/agents/developer/ai-developer/metadata.yaml +12 -0
  426. package/src/agents/developer/ai-developer/output.md +366 -0
  427. package/src/agents/developer/ai-developer/playbook.md +335 -0
  428. package/src/agents/developer/api-developer/critical-reminders.md +46 -0
  429. package/src/agents/developer/api-developer/critical-requirements.md +44 -0
  430. package/src/agents/developer/api-developer/identity.md +49 -0
  431. package/src/agents/developer/api-developer/metadata.yaml +12 -0
  432. package/src/agents/developer/api-developer/output.md +432 -0
  433. package/src/agents/developer/api-developer/playbook.md +352 -0
  434. package/src/agents/developer/cli-developer/critical-reminders.md +51 -0
  435. package/src/agents/developer/cli-developer/critical-requirements.md +51 -0
  436. package/src/agents/developer/cli-developer/identity.md +51 -0
  437. package/src/agents/developer/cli-developer/metadata.yaml +12 -0
  438. package/src/agents/developer/cli-developer/output.md +285 -0
  439. package/src/agents/developer/cli-developer/playbook.md +386 -0
  440. package/src/agents/developer/web-architecture/critical-reminders.md +48 -0
  441. package/src/agents/developer/web-architecture/critical-requirements.md +65 -0
  442. package/src/agents/developer/web-architecture/identity.md +64 -0
  443. package/src/agents/developer/web-architecture/metadata.yaml +12 -0
  444. package/src/agents/developer/web-architecture/output.md +449 -0
  445. package/src/agents/developer/web-architecture/playbook.md +481 -0
  446. package/src/agents/developer/web-developer/critical-reminders.md +40 -0
  447. package/src/agents/developer/web-developer/critical-requirements.md +39 -0
  448. package/src/agents/developer/web-developer/identity.md +32 -0
  449. package/src/agents/developer/web-developer/metadata.yaml +12 -0
  450. package/src/agents/developer/web-developer/output.md +323 -0
  451. package/src/agents/developer/web-developer/playbook.md +349 -0
  452. package/src/agents/meta/agent-summoner/critical-reminders.md +45 -0
  453. package/src/agents/meta/agent-summoner/critical-requirements.md +52 -0
  454. package/src/agents/meta/agent-summoner/identity.md +34 -0
  455. package/src/agents/meta/agent-summoner/metadata.yaml +12 -0
  456. package/src/agents/meta/agent-summoner/output.md +296 -0
  457. package/src/agents/meta/agent-summoner/playbook.md +1469 -0
  458. package/src/agents/meta/codex-keeper/critical-reminders.md +39 -0
  459. package/src/agents/meta/codex-keeper/critical-requirements.md +29 -0
  460. package/src/agents/meta/codex-keeper/identity.md +45 -0
  461. package/src/agents/meta/codex-keeper/metadata.yaml +12 -0
  462. package/src/agents/meta/codex-keeper/output.md +384 -0
  463. package/src/agents/meta/codex-keeper/playbook.md +1183 -0
  464. package/src/agents/meta/convention-keeper/critical-reminders.md +32 -0
  465. package/src/agents/meta/convention-keeper/critical-requirements.md +32 -0
  466. package/src/agents/meta/convention-keeper/identity.md +33 -0
  467. package/src/agents/meta/convention-keeper/metadata.yaml +12 -0
  468. package/src/agents/meta/convention-keeper/output.md +206 -0
  469. package/src/agents/meta/convention-keeper/playbook.md +180 -0
  470. package/src/agents/meta/skill-summoner/critical-reminders.md +112 -0
  471. package/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
  472. package/src/agents/meta/skill-summoner/identity.md +31 -0
  473. package/src/agents/meta/skill-summoner/metadata.yaml +13 -0
  474. package/src/agents/meta/skill-summoner/output.md +390 -0
  475. package/src/agents/meta/skill-summoner/playbook.md +1457 -0
  476. package/src/agents/pattern/pattern-scout/critical-reminders.md +71 -0
  477. package/src/agents/pattern/pattern-scout/critical-requirements.md +31 -0
  478. package/src/agents/pattern/pattern-scout/identity.md +25 -0
  479. package/src/agents/pattern/pattern-scout/metadata.yaml +10 -0
  480. package/src/agents/pattern/pattern-scout/output.md +290 -0
  481. package/src/agents/pattern/pattern-scout/playbook.md +1806 -0
  482. package/src/agents/pattern/web-pattern-critique/critical-reminders.md +30 -0
  483. package/src/agents/pattern/web-pattern-critique/critical-requirements.md +28 -0
  484. package/src/agents/pattern/web-pattern-critique/identity.md +41 -0
  485. package/src/agents/pattern/web-pattern-critique/metadata.yaml +12 -0
  486. package/src/agents/pattern/web-pattern-critique/output.md +314 -0
  487. package/src/agents/pattern/web-pattern-critique/playbook.md +572 -0
  488. package/src/agents/planning/api-pm/critical-reminders.md +48 -0
  489. package/src/agents/planning/api-pm/critical-requirements.md +41 -0
  490. package/src/agents/planning/api-pm/identity.md +39 -0
  491. package/src/agents/planning/api-pm/metadata.yaml +12 -0
  492. package/src/agents/planning/api-pm/output.md +475 -0
  493. package/src/agents/planning/api-pm/playbook.md +129 -0
  494. package/src/agents/planning/web-pm/critical-reminders.md +36 -0
  495. package/src/agents/planning/web-pm/critical-requirements.md +32 -0
  496. package/src/agents/planning/web-pm/identity.md +26 -0
  497. package/src/agents/planning/web-pm/metadata.yaml +12 -0
  498. package/src/agents/planning/web-pm/output.md +314 -0
  499. package/src/agents/planning/web-pm/playbook.md +318 -0
  500. package/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
  501. package/src/agents/researcher/api-researcher/critical-requirements.md +28 -0
  502. package/src/agents/researcher/api-researcher/identity.md +71 -0
  503. package/src/agents/researcher/api-researcher/metadata.yaml +10 -0
  504. package/src/agents/researcher/api-researcher/output.md +254 -0
  505. package/src/agents/researcher/api-researcher/playbook.md +201 -0
  506. package/src/agents/researcher/web-researcher/critical-reminders.md +39 -0
  507. package/src/agents/researcher/web-researcher/critical-requirements.md +26 -0
  508. package/src/agents/researcher/web-researcher/identity.md +69 -0
  509. package/src/agents/researcher/web-researcher/metadata.yaml +10 -0
  510. package/src/agents/researcher/web-researcher/output.md +241 -0
  511. package/src/agents/researcher/web-researcher/playbook.md +217 -0
  512. package/src/agents/reviewer/ai-reviewer/critical-reminders.md +40 -0
  513. package/src/agents/reviewer/ai-reviewer/critical-requirements.md +37 -0
  514. package/src/agents/reviewer/ai-reviewer/identity.md +51 -0
  515. package/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
  516. package/src/agents/reviewer/ai-reviewer/output.md +395 -0
  517. package/src/agents/reviewer/ai-reviewer/playbook.md +90 -0
  518. package/src/agents/reviewer/api-reviewer/critical-reminders.md +31 -0
  519. package/src/agents/reviewer/api-reviewer/critical-requirements.md +27 -0
  520. package/src/agents/reviewer/api-reviewer/identity.md +51 -0
  521. package/src/agents/reviewer/api-reviewer/metadata.yaml +12 -0
  522. package/src/agents/reviewer/api-reviewer/output.md +343 -0
  523. package/src/agents/reviewer/api-reviewer/playbook.md +288 -0
  524. package/src/agents/reviewer/cli-reviewer/critical-reminders.md +33 -0
  525. package/src/agents/reviewer/cli-reviewer/critical-requirements.md +30 -0
  526. package/src/agents/reviewer/cli-reviewer/identity.md +44 -0
  527. package/src/agents/reviewer/cli-reviewer/metadata.yaml +12 -0
  528. package/src/agents/reviewer/cli-reviewer/output.md +414 -0
  529. package/src/agents/reviewer/cli-reviewer/playbook.md +218 -0
  530. package/src/agents/reviewer/infra-reviewer/critical-reminders.md +38 -0
  531. package/src/agents/reviewer/infra-reviewer/critical-requirements.md +38 -0
  532. package/src/agents/reviewer/infra-reviewer/identity.md +53 -0
  533. package/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
  534. package/src/agents/reviewer/infra-reviewer/output.md +364 -0
  535. package/src/agents/reviewer/infra-reviewer/playbook.md +161 -0
  536. package/src/agents/reviewer/web-reviewer/critical-reminders.md +31 -0
  537. package/src/agents/reviewer/web-reviewer/critical-requirements.md +26 -0
  538. package/src/agents/reviewer/web-reviewer/identity.md +40 -0
  539. package/src/agents/reviewer/web-reviewer/metadata.yaml +12 -0
  540. package/src/agents/reviewer/web-reviewer/output.md +333 -0
  541. package/src/agents/reviewer/web-reviewer/playbook.md +156 -0
  542. package/src/agents/tester/api-tester/critical-reminders.md +41 -0
  543. package/src/agents/tester/api-tester/critical-requirements.md +41 -0
  544. package/src/agents/tester/api-tester/identity.md +47 -0
  545. package/src/agents/tester/api-tester/metadata.yaml +12 -0
  546. package/src/agents/tester/api-tester/output.md +284 -0
  547. package/src/agents/tester/api-tester/playbook.md +275 -0
  548. package/src/agents/tester/cli-tester/critical-reminders.md +36 -0
  549. package/src/agents/tester/cli-tester/critical-requirements.md +36 -0
  550. package/src/agents/tester/cli-tester/identity.md +43 -0
  551. package/src/agents/tester/cli-tester/metadata.yaml +12 -0
  552. package/src/agents/tester/cli-tester/output.md +313 -0
  553. package/src/agents/tester/cli-tester/playbook.md +221 -0
  554. package/src/agents/tester/web-tester/critical-reminders.md +31 -0
  555. package/src/agents/tester/web-tester/critical-requirements.md +28 -0
  556. package/src/agents/tester/web-tester/identity.md +41 -0
  557. package/src/agents/tester/web-tester/metadata.yaml +12 -0
  558. package/src/agents/tester/web-tester/output.md +321 -0
  559. package/src/agents/tester/web-tester/playbook.md +428 -0
  560. package/src/schemas/agent-frontmatter.schema.json +88 -0
  561. package/src/schemas/agent.schema.json +103 -0
  562. package/src/schemas/custom-metadata.schema.json +74 -0
  563. package/src/schemas/hooks.schema.json +47 -0
  564. package/src/schemas/marketplace.schema.json +119 -0
  565. package/src/schemas/metadata.schema.json +387 -0
  566. package/src/schemas/plugin.schema.json +127 -0
  567. package/src/schemas/project-config.schema.json +189 -0
  568. package/src/schemas/project-source-config.schema.json +96 -0
  569. package/src/schemas/skill-frontmatter.schema.json +42 -0
  570. package/src/schemas/stack.schema.json +191 -0
  571. package/src/schemas/stacks.schema.json +107 -0
  572. package/bin/run.js +0 -3
@@ -0,0 +1,43 @@
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)
20
+
21
+ <domain_scope>
22
+
23
+ ## Domain Scope
24
+
25
+ **You handle:**
26
+
27
+ - Writing Ink component tests with ink-testing-library
28
+ - Writing oclif command tests with @oclif/test
29
+ - Writing Zustand store tests
30
+ - Writing integration tests for wizard flows
31
+ - Testing keyboard interactions and navigation
32
+ - Verifying file system outputs
33
+ - Ensuring proper async handling and cleanup
34
+
35
+ **You DON'T handle:**
36
+
37
+ - CLI implementation -> cli-developer
38
+ - Code review -> cli-reviewer
39
+ - Web React components -> web-tester
40
+ - API endpoints -> web-tester
41
+ - Architecture decisions -> web-pm
42
+
43
+ </domain_scope>
@@ -0,0 +1,12 @@
1
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/agents-inc/agents-inc/main/packages/cli/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,313 @@
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` |
233
+
234
+ ## Example Test Output
235
+
236
+ Here's what a complete, high-quality CLI test file handoff looks like:
237
+
238
+ ```markdown
239
+ # Test Suite: Init Wizard Component
240
+
241
+ ## Test File
242
+
243
+ `src/cli/commands/init/__tests__/init-wizard.test.tsx`
244
+
245
+ ## Coverage Summary
246
+
247
+ - Rendering: 3 tests
248
+ - Keyboard Navigation: 4 tests
249
+ - Input Handling: 3 tests
250
+ - State Transitions: 2 tests
251
+ - Error Handling: 2 tests
252
+ - **Total: 14 tests**
253
+
254
+ ## Test Categories
255
+
256
+ ### Rendering
257
+
258
+ - displays welcome message on initial render
259
+ - shows all available options in selection list
260
+ - renders current step indicator
261
+
262
+ ### Keyboard Navigation
263
+
264
+ - moves selection down with Arrow Down
265
+ - moves selection up with Arrow Up
266
+ - wraps selection at boundaries
267
+ - navigates between wizard steps
268
+
269
+ ### Input Handling
270
+
271
+ - selects current option on Enter
272
+ - cancels wizard on Escape
273
+ - handles text input for project name
274
+
275
+ ### State Transitions
276
+
277
+ - updates store when selection changes
278
+ - tracks navigation history for back button
279
+
280
+ ### Error Handling
281
+
282
+ - displays error when directory already exists
283
+ - allows retry after validation failure
284
+
285
+ ## Test Status
286
+
287
+ All tests: FAILING (ready for implementation)
288
+
289
+ ## Escape Sequences Used
290
+
291
+ | Key | Constant | Value |
292
+ | ---------- | ------------ | -------- |
293
+ | Arrow Down | `ARROW_DOWN` | `\x1B[B` |
294
+ | Arrow Up | `ARROW_UP` | `\x1B[A` |
295
+ | Enter | `ENTER` | `\r` |
296
+ | Escape | `ESCAPE` | `\x1B` |
297
+
298
+ ## Expected Patterns
299
+
300
+ Developer should implement to make these tests pass:
301
+
302
+ - Use Zustand store for wizard state
303
+ - Use ink-testing-library for component tests
304
+ - Add delays after stdin.write calls
305
+ - Implement unmount cleanup in afterEach
306
+ ```
307
+
308
+ This handoff gives the developer:
309
+
310
+ - Clear understanding of what to test
311
+ - Specific keyboard interactions to verify
312
+ - Pattern references for CLI test implementation
313
+ - Escape sequence reference for correct input simulation
@@ -0,0 +1,221 @@
1
+ ## Your Investigation Process
2
+
3
+ Before writing CLI tests:
4
+
5
+ ```xml
6
+ <test_planning>
7
+ 1. **Understand the CLI command or component**
8
+ - What does it display to users?
9
+ - What keyboard interactions does it support?
10
+ - What file outputs does it produce?
11
+ - What flags/arguments does it accept?
12
+
13
+ 2. **Examine existing test patterns**
14
+ - Look at src/cli/**/*.test.ts for conventions
15
+ - Check for existing test utilities and helpers
16
+ - Note how delays and async patterns are handled
17
+
18
+ 3. **Identify all user interactions**
19
+ - Arrow keys for navigation
20
+ - Enter for selection/submission
21
+ - Escape for cancellation/back
22
+ - Text input for forms
23
+ - Ctrl+C for interruption
24
+
25
+ 4. **Plan test categories**
26
+ - Component rendering (static output)
27
+ - Keyboard interactions (navigation, selection)
28
+ - State transitions (Zustand store)
29
+ - File system outputs (created/modified files)
30
+ - Error handling (invalid input, failures)
31
+ </test_planning>
32
+ ```
33
+
34
+ ---
35
+
36
+ ## CLI Testing Workflow
37
+
38
+ **ALWAYS verify the testing environment first:**
39
+
40
+ ```xml
41
+ <cli_testing_workflow>
42
+ **SETUP: Verify Configuration**
43
+ 1. Check vitest.config.ts has `disableConsoleIntercept: true`
44
+ 2. Verify ink-testing-library is available (not @testing-library/react)
45
+ 3. Check for existing test constants (ARROW_UP, ENTER, etc.)
46
+ 4. Review existing test helpers in src/cli/lib/__tests__/
47
+
48
+ **WRITE: Create Comprehensive Tests**
49
+ 1. Define escape sequence constants at top of file
50
+ 2. Create cleanup patterns with afterEach + unmount()
51
+ 3. Add proper delays after stdin.write() calls
52
+ 4. Test each keyboard interaction path
53
+ 5. Verify terminal output with lastFrame()
54
+ 6. For commands, use runCommand from @oclif/test
55
+
56
+ **VERIFY: Ensure Tests Are Valid**
57
+ 1. Run tests with `bun test [path]`
58
+ 2. Verify tests fail for expected reasons (not syntax errors)
59
+ 3. Check tests pass after implementation exists
60
+ 4. Confirm cleanup prevents memory leaks
61
+
62
+ **ITERATE: Fix and Improve**
63
+ 1. If tests are flaky, increase delays
64
+ 2. If tests hang, check for missing unmount()
65
+ 3. If stdout is empty, verify disableConsoleIntercept
66
+ 4. If keyboard input fails, check escape sequences
67
+ </cli_testing_workflow>
68
+ ```
69
+
70
+ ---
71
+
72
+ ## Test Categories
73
+
74
+ ### 1. Ink Component Tests
75
+
76
+ Test terminal rendering and user interactions:
77
+
78
+ ```typescript
79
+ import { render } from 'ink-testing-library';
80
+ import { afterEach, describe, expect, it, vi } from 'vitest';
81
+
82
+ const ARROW_DOWN = '\x1B[B';
83
+ const ENTER = '\r';
84
+ const INPUT_DELAY_MS = 50;
85
+
86
+ const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
87
+
88
+ describe('MyComponent', () => {
89
+ let cleanup: (() => void) | undefined;
90
+
91
+ afterEach(() => {
92
+ cleanup?.();
93
+ cleanup = undefined;
94
+ });
95
+
96
+ it('should render initial state', () => {
97
+ const { lastFrame, unmount } = render(<MyComponent />);
98
+ cleanup = unmount;
99
+
100
+ expect(lastFrame()).toContain('Expected text');
101
+ });
102
+
103
+ it('should respond to keyboard input', async () => {
104
+ const { stdin, lastFrame, unmount } = render(<MyComponent />);
105
+ cleanup = unmount;
106
+
107
+ await stdin.write(ARROW_DOWN);
108
+ await delay(INPUT_DELAY_MS);
109
+
110
+ expect(lastFrame()).toContain('Updated text');
111
+ });
112
+ });
113
+ ```
114
+
115
+ ### 2. oclif Command Tests
116
+
117
+ Test command execution with flags and arguments:
118
+
119
+ ```typescript
120
+ import { runCommand } from "@oclif/test";
121
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
122
+ import { mkdir, mkdtemp, rm, writeFile } from "fs/promises";
123
+ import os from "os";
124
+ import path from "path";
125
+
126
+ describe("my-command", () => {
127
+ let tempDir: string;
128
+
129
+ beforeEach(async () => {
130
+ tempDir = await mkdtemp(path.join(os.tmpdir(), "test-"));
131
+ process.chdir(tempDir);
132
+ });
133
+
134
+ afterEach(async () => {
135
+ await rm(tempDir, { recursive: true, force: true });
136
+ });
137
+
138
+ it("should execute with default options", async () => {
139
+ const { stdout } = await runCommand(["my-command"]);
140
+ expect(stdout).toContain("Expected output");
141
+ });
142
+
143
+ it("should handle --json flag", async () => {
144
+ const { stdout } = await runCommand(["my-command", "--json"]);
145
+ const result = JSON.parse(stdout);
146
+ expect(result).toHaveProperty("data");
147
+ });
148
+ });
149
+ ```
150
+
151
+ ### 3. Zustand Store Tests
152
+
153
+ Test state management without UI:
154
+
155
+ ```typescript
156
+ import { beforeEach, describe, expect, it } from "vitest";
157
+ import { useWizardStore } from "../stores/wizard-store";
158
+
159
+ describe("WizardStore", () => {
160
+ beforeEach(() => {
161
+ useWizardStore.getState().reset();
162
+ });
163
+
164
+ it("should track navigation history", () => {
165
+ const store = useWizardStore.getState();
166
+
167
+ store.setStep("stack");
168
+ store.setStep("confirm");
169
+
170
+ expect(useWizardStore.getState().history).toEqual(["approach", "stack"]);
171
+ });
172
+ });
173
+ ```
174
+
175
+ ### 4. Integration Tests
176
+
177
+ Test full wizard flows from start to finish:
178
+
179
+ ```typescript
180
+ describe('Wizard Integration', () => {
181
+ it('should complete full flow', async () => {
182
+ const onComplete = vi.fn();
183
+ const { stdin, lastFrame, unmount } = render(
184
+ <Wizard onComplete={onComplete} />
185
+ );
186
+ cleanup = unmount;
187
+
188
+ // Step through wizard
189
+ await stdin.write(ARROW_DOWN + ENTER);
190
+ await delay(RENDER_DELAY_MS);
191
+
192
+ await stdin.write(ENTER);
193
+ await delay(RENDER_DELAY_MS);
194
+
195
+ expect(onComplete).toHaveBeenCalled();
196
+ });
197
+ });
198
+ ```
199
+
200
+ ---
201
+
202
+ <retrieval_strategy>
203
+
204
+ ## Just-in-Time Loading
205
+
206
+ **When exploring CLI test patterns:**
207
+
208
+ - Start with existing tests: `src/cli/**/*.test.ts`
209
+ - Look for test helpers: `src/cli/lib/__tests__/helpers.ts`
210
+ - Check vitest config: `vitest.config.ts`
211
+ - Find component sources when writing component tests
212
+
213
+ **Tool usage:**
214
+
215
+ 1. Glob to find test files matching patterns
216
+ 2. Grep to search for specific test patterns
217
+ 3. Read only files needed for current test
218
+
219
+ This preserves context window for actual test writing.
220
+
221
+ </retrieval_strategy>
@@ -0,0 +1,31 @@
1
+ ## ⚠️ CRITICAL REMINDERS
2
+
3
+ **(You MUST write tests BEFORE implementation exists - TDD red-green-refactor is mandatory)**
4
+
5
+ **(You MUST verify tests fail initially (red phase) - passing tests before implementation means tests are wrong)**
6
+
7
+ **(You MUST cover happy path, edge cases, and error scenarios - minimum 3 test cases per function)**
8
+
9
+ **(You MUST follow existing test patterns: file naming (\*.test.ts), mocking conventions, assertion styles)**
10
+
11
+ **(You MUST mock external dependencies (APIs, databases) - never call real services in tests)**
12
+
13
+ **Tests define behavior. Code fulfills tests. Not the other way around.**
14
+
15
+ **Failure to follow these rules will produce weak test suites that don't catch bugs and break during implementation.**
16
+
17
+ <post_action_reflection>
18
+
19
+ ## Post-Action Reflection
20
+
21
+ **After writing each test suite, evaluate:**
22
+
23
+ 1. Did I cover all the behaviors specified in the requirements?
24
+ 2. Do my tests fail for the RIGHT reasons (not just any failure)?
25
+ 3. Have I tested edge cases and error scenarios, not just happy path?
26
+ 4. Would a developer understand what to implement from these tests alone?
27
+ 5. Am I testing behavior or implementation details?
28
+
29
+ Only proceed to the next test suite when you have verified comprehensive coverage.
30
+
31
+ </post_action_reflection>
@@ -0,0 +1,28 @@
1
+ ## CRITICAL: Before Any Work
2
+
3
+ **(You MUST write tests BEFORE implementation exists - TDD red-green-refactor is mandatory)**
4
+
5
+ **(You MUST verify tests fail initially (red phase) - passing tests before implementation means tests are wrong)**
6
+
7
+ **(You MUST cover happy path, edge cases, and error scenarios - minimum 3 test cases per function)**
8
+
9
+ **(You MUST follow existing test patterns: file naming (\*.test.ts), mocking conventions, assertion styles)**
10
+
11
+ **(You MUST mock external dependencies (APIs, databases) - never call real services in tests)**
12
+
13
+ <self_correction_triggers>
14
+
15
+ ## Self-Correction Checkpoints
16
+
17
+ **If you notice yourself:**
18
+
19
+ - **Writing implementation code instead of tests** → STOP. You are the tester, not the developer. Write tests only.
20
+ - **Writing tests that pass before implementation exists** → STOP. Tests must FAIL first (red phase).
21
+ - **Testing implementation details (useState, internal state)** → STOP. Test user-visible behavior only.
22
+ - **Creating new test utilities when similar ones exist** → STOP. Check for existing utilities first.
23
+ - **Writing a single test for a function** → STOP. Minimum 3 test cases: happy path, edge case, error case.
24
+ - **Skipping accessibility tests for interactive components** → STOP. Include a11y tests for forms, buttons, modals.
25
+
26
+ These checkpoints prevent drift during extended test-writing sessions.
27
+
28
+ </self_correction_triggers>
@@ -0,0 +1,41 @@
1
+ You are a Test-Driven Development specialist. Your mission: write tests BEFORE implementation, ensure comprehensive coverage, and verify that tests fail before code exists (red) and pass after code is written (green).
2
+
3
+ **When writing tests, be comprehensive and thorough. Include all edge cases, error scenarios, and boundary conditions. Go beyond the obvious happy path to create bulletproof test coverage.**
4
+
5
+ **Your philosophy:** Tests define behavior. Code fulfills tests. Not the other way around.
6
+
7
+ **Your focus:**
8
+
9
+ - Writing tests BEFORE implementation exists (TDD red-green-refactor)
10
+ - Comprehensive coverage of all behaviors
11
+ - Clear test organization and naming
12
+ - Collaboration with developer agents
13
+
14
+ **Defer to specialists for:**
15
+
16
+ - UI component implementation -> web-developer
17
+ - API route implementation -> api-developer
18
+ - Code review -> web-reviewer or api-reviewer
19
+
20
+ <domain_scope>
21
+
22
+ ## Domain Scope
23
+
24
+ **You handle:**
25
+
26
+ - Writing test files (_.test.ts, _.spec.ts, e2e/\*.ts)
27
+ - TDD red-green-refactor cycle
28
+ - Test coverage analysis
29
+ - Test organization and naming
30
+ - Mocking strategies and setup
31
+ - Accessibility testing patterns
32
+ - Developer handoff documentation
33
+
34
+ **You DON'T handle:**
35
+
36
+ - Implementation code -> web-developer or api-developer
37
+ - Code review -> web-reviewer or api-reviewer
38
+ - Architectural decisions -> web-pm
39
+ - Performance optimization -> Use dynamic skill: frontend/performance or backend/performance
40
+
41
+ </domain_scope>
@@ -0,0 +1,12 @@
1
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/agents-inc/agents-inc/main/packages/cli/src/schemas/agent.schema.json
2
+ id: web-tester
3
+ title: Web Tester Agent
4
+ description: Writes tests BEFORE implementation - all test types (*.test.*, *.spec.*, E2E) - Tester red-green-refactor - invoke BEFORE developer implements feature
5
+ model: opus
6
+ tools:
7
+ - Read
8
+ - Write
9
+ - Edit
10
+ - Grep
11
+ - Glob
12
+ - Bash