agents-inc 0.149.1 → 0.150.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 +2277 -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-4GL2F5AB.js +222 -0
  12. package/dist/chunk-4GL2F5AB.js.map +1 -0
  13. package/dist/chunk-4LPJZNT7.js +382 -0
  14. package/dist/chunk-4LPJZNT7.js.map +1 -0
  15. package/dist/chunk-5K5RBRTD.js +62 -0
  16. package/dist/chunk-5K5RBRTD.js.map +1 -0
  17. package/dist/chunk-6I6RZHYP.js +789 -0
  18. package/dist/chunk-6I6RZHYP.js.map +1 -0
  19. package/dist/chunk-7URSGJLE.js +430 -0
  20. package/dist/chunk-7URSGJLE.js.map +1 -0
  21. package/dist/chunk-C55DN7GE.js +35 -0
  22. package/dist/chunk-C55DN7GE.js.map +1 -0
  23. package/dist/chunk-CDMHSHBN.js +68 -0
  24. package/dist/chunk-CDMHSHBN.js.map +1 -0
  25. package/dist/chunk-CFQT72MJ.js +92 -0
  26. package/dist/chunk-CFQT72MJ.js.map +1 -0
  27. package/dist/chunk-DAG2ULNF.js +125 -0
  28. package/dist/chunk-DAG2ULNF.js.map +1 -0
  29. package/dist/chunk-DDG4F3FE.js +181 -0
  30. package/dist/chunk-DDG4F3FE.js.map +1 -0
  31. package/dist/chunk-DIBCRIMR.js +36 -0
  32. package/dist/chunk-DIBCRIMR.js.map +1 -0
  33. package/dist/chunk-DJAZE4PD.js +10929 -0
  34. package/dist/chunk-DJAZE4PD.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-E4FT2KFV.js +174 -0
  38. package/dist/chunk-E4FT2KFV.js.map +1 -0
  39. package/dist/chunk-EKWAUOQB.js +96 -0
  40. package/dist/chunk-EKWAUOQB.js.map +1 -0
  41. package/dist/chunk-EN2GCPW7.js +300 -0
  42. package/dist/chunk-EN2GCPW7.js.map +1 -0
  43. package/dist/chunk-ES3NJZON.js +31 -0
  44. package/dist/chunk-ES3NJZON.js.map +1 -0
  45. package/dist/chunk-F3756A5B.js +20 -0
  46. package/dist/chunk-F3756A5B.js.map +1 -0
  47. package/dist/chunk-FWT3CBLL.js +51 -0
  48. package/dist/chunk-FWT3CBLL.js.map +1 -0
  49. package/dist/chunk-FYPUUYSG.js +31 -0
  50. package/dist/chunk-FYPUUYSG.js.map +1 -0
  51. package/dist/chunk-GRPSDKIS.js +112 -0
  52. package/dist/chunk-GRPSDKIS.js.map +1 -0
  53. package/dist/chunk-GYG5SE2D.js +81 -0
  54. package/dist/chunk-GYG5SE2D.js.map +1 -0
  55. package/dist/chunk-HIPGKIT3.js +287 -0
  56. package/dist/chunk-HIPGKIT3.js.map +1 -0
  57. package/dist/chunk-I3XKEGHM.js +16383 -0
  58. package/dist/chunk-I3XKEGHM.js.map +1 -0
  59. package/dist/chunk-IHO75PMZ.js +40 -0
  60. package/dist/chunk-IHO75PMZ.js.map +1 -0
  61. package/dist/chunk-IOJR5TOY.js +47 -0
  62. package/dist/chunk-IOJR5TOY.js.map +1 -0
  63. package/dist/chunk-K3OU6TGX.js +77 -0
  64. package/dist/chunk-K3OU6TGX.js.map +1 -0
  65. package/dist/chunk-KH7MOIM5.js +6010 -0
  66. package/dist/chunk-KH7MOIM5.js.map +1 -0
  67. package/dist/chunk-KIR7VYQD.js +63 -0
  68. package/dist/chunk-KIR7VYQD.js.map +1 -0
  69. package/dist/chunk-KOPEM3Q7.js +27 -0
  70. package/dist/chunk-KOPEM3Q7.js.map +1 -0
  71. package/dist/chunk-KSZ6PCY4.js +43 -0
  72. package/dist/chunk-KSZ6PCY4.js.map +1 -0
  73. package/dist/chunk-LRYNF3J7.js +111 -0
  74. package/dist/chunk-LRYNF3J7.js.map +1 -0
  75. package/dist/chunk-LYYXX2W5.js +87 -0
  76. package/dist/chunk-LYYXX2W5.js.map +1 -0
  77. package/dist/chunk-MC5DUZ3V.js +1135 -0
  78. package/dist/chunk-MC5DUZ3V.js.map +1 -0
  79. package/dist/chunk-N4IZ6GBO.js +300 -0
  80. package/dist/chunk-N4IZ6GBO.js.map +1 -0
  81. package/dist/chunk-NIKUMXE7.js +24 -0
  82. package/dist/chunk-NIKUMXE7.js.map +1 -0
  83. package/dist/chunk-NUIZ6ZUO.js +42 -0
  84. package/dist/chunk-NUIZ6ZUO.js.map +1 -0
  85. package/dist/chunk-O5ASLZ2K.js +270 -0
  86. package/dist/chunk-O5ASLZ2K.js.map +1 -0
  87. package/dist/chunk-OA5SUEQD.js +181 -0
  88. package/dist/chunk-OA5SUEQD.js.map +1 -0
  89. package/dist/chunk-OZZGXBCN.js +15 -0
  90. package/dist/chunk-OZZGXBCN.js.map +1 -0
  91. package/dist/chunk-P3PN5SVI.js +27 -0
  92. package/dist/chunk-P3PN5SVI.js.map +1 -0
  93. package/dist/chunk-P56WJ5FA.js +50 -0
  94. package/dist/chunk-P56WJ5FA.js.map +1 -0
  95. package/dist/chunk-PG4G4IIK.js +24 -0
  96. package/dist/chunk-PG4G4IIK.js.map +1 -0
  97. package/dist/chunk-QQLRX4KI.js +41 -0
  98. package/dist/chunk-QQLRX4KI.js.map +1 -0
  99. package/dist/chunk-RBHYLCUB.js +31 -0
  100. package/dist/chunk-RBHYLCUB.js.map +1 -0
  101. package/dist/chunk-RJN7W2C7.js +349 -0
  102. package/dist/chunk-RJN7W2C7.js.map +1 -0
  103. package/dist/chunk-RP7R73JO.js +179 -0
  104. package/dist/chunk-RP7R73JO.js.map +1 -0
  105. package/dist/chunk-SYUOXSPU.js +510 -0
  106. package/dist/chunk-SYUOXSPU.js.map +1 -0
  107. package/dist/chunk-THKIOI32.js +939 -0
  108. package/dist/chunk-THKIOI32.js.map +1 -0
  109. package/dist/chunk-UZRISDBZ.js +28 -0
  110. package/dist/chunk-UZRISDBZ.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-VIFZ6NFH.js +27 -0
  118. package/dist/chunk-VIFZ6NFH.js.map +1 -0
  119. package/dist/chunk-XA57SX4T.js +115 -0
  120. package/dist/chunk-XA57SX4T.js.map +1 -0
  121. package/dist/chunk-YKKIJHZB.js +339 -0
  122. package/dist/chunk-YKKIJHZB.js.map +1 -0
  123. package/dist/chunk-YU2VGX5R.js +4205 -0
  124. package/dist/chunk-YU2VGX5R.js.map +1 -0
  125. package/dist/chunk-ZDLTLNU2.js +258 -0
  126. package/dist/chunk-ZDLTLNU2.js.map +1 -0
  127. package/dist/chunk-ZHTXPFDK.js +128 -0
  128. package/dist/chunk-ZHTXPFDK.js.map +1 -0
  129. package/dist/chunk-ZKJAJWK6.js +253 -0
  130. package/dist/chunk-ZKJAJWK6.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-CA7P73RZ.js +15 -0
  244. package/dist/copy-local-skills-CA7P73RZ.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-6MAY5ABI.js +16 -0
  252. package/dist/load-agent-defs-6MAY5ABI.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-VYQJ6UZB.js +20 -0
  258. package/dist/recompile-project-agents-VYQJ6UZB.js.map +1 -0
  259. package/dist/source-loader-VVHMQEX5.js +20 -0
  260. package/dist/source-loader-VVHMQEX5.js.map +1 -0
  261. package/dist/source-manager-TPDXV5FO.js +18 -0
  262. package/dist/source-manager-TPDXV5FO.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 +131 -13
  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,304 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ promptValue
4
+ } from "../../chunk-C55DN7GE.js";
5
+ import {
6
+ FEATURE_FLAGS,
7
+ featureDisabledError
8
+ } from "../../chunk-IHO75PMZ.js";
9
+ import {
10
+ getAgentDefinitions
11
+ } from "../../chunk-YKKIJHZB.js";
12
+ import {
13
+ BaseCommand,
14
+ EXIT_CODES
15
+ } from "../../chunk-OA5SUEQD.js";
16
+ import "../../chunk-SYUOXSPU.js";
17
+ import "../../chunk-P3PN5SVI.js";
18
+ import {
19
+ isClaudeCLIAvailable,
20
+ loadConfigTypesDataInBackground,
21
+ resolveInstallPaths,
22
+ resolveSource,
23
+ writeScaffoldedEntityTypes
24
+ } from "../../chunk-KH7MOIM5.js";
25
+ import {
26
+ fileExists,
27
+ getErrorMessage,
28
+ modelNameSchema,
29
+ readFile
30
+ } from "../../chunk-3LIU2ZEF.js";
31
+ import "../../chunk-DJAZE4PD.js";
32
+ import "../../chunk-VEP23B5W.js";
33
+ import {
34
+ CLAUDE_DIR,
35
+ CLI_COLORS,
36
+ STANDARD_DIRS,
37
+ STANDARD_FILES
38
+ } from "../../chunk-O5ASLZ2K.js";
39
+ import "../../chunk-YU2VGX5R.js";
40
+ import {
41
+ init_esm_shims
42
+ } from "../../chunk-P56WJ5FA.js";
43
+
44
+ // src/cli/commands/new/agent.tsx
45
+ init_esm_shims();
46
+ import { useState } from "react";
47
+ import { Args, Flags } from "@oclif/core";
48
+ import { TextInput } from "@inkjs/ui";
49
+ import { spawn } from "child_process";
50
+ import matter from "gray-matter";
51
+ import { z } from "zod";
52
+ import { Box, Text, useApp, useInput } from "ink";
53
+ import path from "path";
54
+ import { jsx, jsxs } from "react/jsx-runtime";
55
+ var SEPARATOR_WIDTH = 60;
56
+ var PurposeInput = ({ onSubmit, onCancel }) => {
57
+ const { exit } = useApp();
58
+ const [error, setError] = useState(null);
59
+ useInput((_input, key) => {
60
+ if (key.escape) {
61
+ onCancel();
62
+ exit();
63
+ }
64
+ });
65
+ const handleSubmit = (value) => {
66
+ const trimmed = value.trim();
67
+ if (!trimmed) {
68
+ setError("Purpose is required");
69
+ return;
70
+ }
71
+ onSubmit(trimmed);
72
+ exit();
73
+ };
74
+ return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
75
+ /* @__PURE__ */ jsx(Text, { bold: true, children: "Create New Agent" }),
76
+ /* @__PURE__ */ jsx(Text, { children: "What should this agent do?" }),
77
+ /* @__PURE__ */ jsx(Text, { dimColor: true, children: "e.g., Manages database migrations with rollback support" }),
78
+ /* @__PURE__ */ jsx(Text, { children: " " }),
79
+ /* @__PURE__ */ jsx(TextInput, { placeholder: "Enter agent purpose...", onSubmit: handleSubmit }),
80
+ error && /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(Text, { color: CLI_COLORS.ERROR, children: error }) })
81
+ ] });
82
+ };
83
+ var NewAgent = class _NewAgent extends BaseCommand {
84
+ static summary = "Create a new custom agent using AI generation";
85
+ static description = "Uses the agent-summoner meta-agent to scaffold a new agent with proper structure and documentation.";
86
+ static examples = [
87
+ {
88
+ description: "Scaffold an agent (interactive prompt)",
89
+ command: "<%= config.bin %> <%= command.id %> my-agent"
90
+ },
91
+ {
92
+ description: "Scaffold with purpose provided up front",
93
+ command: '<%= config.bin %> <%= command.id %> my-agent --purpose "Manage DB migrations"'
94
+ },
95
+ {
96
+ description: "Overwrite an existing agent",
97
+ command: "<%= config.bin %> <%= command.id %> my-agent --force"
98
+ }
99
+ ];
100
+ static args = {
101
+ name: Args.string({
102
+ description: "Name of the agent to create",
103
+ required: true
104
+ })
105
+ };
106
+ static flags = {
107
+ ...BaseCommand.baseFlags,
108
+ purpose: Flags.string({
109
+ char: "p",
110
+ description: "Purpose/description of the agent",
111
+ required: false
112
+ }),
113
+ force: Flags.boolean({
114
+ char: "f",
115
+ description: "Overwrite existing agent",
116
+ default: false
117
+ })
118
+ };
119
+ async run() {
120
+ if (!FEATURE_FLAGS.NEW_AGENT_COMMAND) {
121
+ this.error(featureDisabledError("new agent"), {
122
+ exit: EXIT_CODES.ERROR
123
+ });
124
+ }
125
+ const { args, flags } = await this.parse(_NewAgent);
126
+ const projectDir = process.cwd();
127
+ const configTypesReady = loadConfigTypesDataInBackground(flags.source, projectDir);
128
+ await this.ensureClaudeCliAvailable();
129
+ const purpose = flags.purpose ?? await this.promptForPurpose();
130
+ const outputDir = path.join(resolveInstallPaths(projectDir, "project").agentsDir, "_custom");
131
+ await this.checkExistingDir(path.join(outputDir, args.name), flags.force);
132
+ this.logAgentPlan(args.name, purpose, outputDir);
133
+ await this.generateAgent(args.name, purpose, outputDir, flags, projectDir);
134
+ await this.updateConfigTypes(projectDir, configTypesReady, args.name);
135
+ this.log("");
136
+ this.log("\u2500".repeat(SEPARATOR_WIDTH));
137
+ this.logSuccess("Agent creation complete!");
138
+ }
139
+ async checkExistingDir(agentDir, force) {
140
+ await this.ensureDirOverwritable(agentDir, force, {
141
+ exists: `Agent directory already exists: ${agentDir}`,
142
+ overwriting: `Overwriting existing agent at ${agentDir}`
143
+ });
144
+ }
145
+ async ensureClaudeCliAvailable() {
146
+ const cliAvailable = await isClaudeCLIAvailable();
147
+ if (!cliAvailable) {
148
+ this.error(
149
+ "Claude CLI not found. Please install it first:\n npm install -g @anthropic-ai/claude-code",
150
+ { exit: EXIT_CODES.ERROR }
151
+ );
152
+ }
153
+ }
154
+ async promptForPurpose() {
155
+ const outcome = await promptValue(
156
+ (resolve) => /* @__PURE__ */ jsx(
157
+ PurposeInput,
158
+ {
159
+ onSubmit: (value) => resolve({ status: "submitted", purpose: value }),
160
+ onCancel: () => resolve({ status: "cancelled" })
161
+ }
162
+ ),
163
+ { onExit: { status: "cancelled" } }
164
+ );
165
+ if (outcome.status === "cancelled") {
166
+ this.log("Cancelled");
167
+ this.exit(EXIT_CODES.CANCELLED);
168
+ throw new Error("unreachable");
169
+ }
170
+ return outcome.purpose;
171
+ }
172
+ logAgentPlan(name, purpose, outputDir) {
173
+ this.log("");
174
+ this.log(`Agent name: ${name}`);
175
+ this.log(`Purpose: ${purpose}`);
176
+ this.log(`Output: ${outputDir}`);
177
+ this.log("");
178
+ }
179
+ async generateAgent(name, purpose, outputDir, flags, projectDir) {
180
+ this.log("Fetching agent-summoner from source...");
181
+ try {
182
+ const sourceConfig = await resolveSource(flags.source, projectDir);
183
+ const agentDef = await loadMetaAgent({
184
+ projectDir,
185
+ source: sourceConfig.source
186
+ });
187
+ this.log("Meta-agent loaded");
188
+ this.log("");
189
+ const agentPrompt = buildAgentPrompt(name, purpose, outputDir);
190
+ this.log("Invoking agent-summoner to create your agent...");
191
+ this.log("\u2500".repeat(SEPARATOR_WIDTH));
192
+ this.log("");
193
+ await invokeMetaAgent({
194
+ agentDef,
195
+ prompt: agentPrompt
196
+ });
197
+ } catch (error) {
198
+ this.handleError(error);
199
+ }
200
+ }
201
+ async updateConfigTypes(projectDir, configTypesReady, agentName) {
202
+ try {
203
+ await writeScaffoldedEntityTypes(projectDir, configTypesReady, {
204
+ extraAgentNames: [agentName]
205
+ });
206
+ } catch (error) {
207
+ this.warn(`Could not update ${STANDARD_FILES.CONFIG_TYPES_TS}: ${getErrorMessage(error)}`);
208
+ }
209
+ }
210
+ };
211
+ var META_AGENT_NAME = "agent-summoner";
212
+ var metaAgentFrontmatterSchema = z.object({
213
+ description: z.string().optional(),
214
+ tools: z.union([z.string(), z.array(z.string())]).optional(),
215
+ model: modelNameSchema.optional()
216
+ });
217
+ function parseCompiledAgent(content) {
218
+ const { data, content: body } = matter(content);
219
+ const frontmatter = metaAgentFrontmatterSchema.parse(data);
220
+ const tools = typeof frontmatter.tools === "string" ? frontmatter.tools.split(",").map((t) => t.trim()) : frontmatter.tools;
221
+ return {
222
+ description: frontmatter.description || "Creates new agents",
223
+ prompt: body.trim(),
224
+ model: frontmatter.model,
225
+ tools
226
+ };
227
+ }
228
+ async function loadMetaAgent(options) {
229
+ const { projectDir, source } = options;
230
+ const compiledFileName = `${META_AGENT_NAME}.md`;
231
+ const localAgentPath = path.join(
232
+ resolveInstallPaths(projectDir, "project").agentsDir,
233
+ compiledFileName
234
+ );
235
+ if (await fileExists(localAgentPath)) {
236
+ return parseCompiledAgent(await readFile(localAgentPath));
237
+ }
238
+ try {
239
+ const agentPaths = await getAgentDefinitions(source, { projectDir });
240
+ const remoteAgentPath = path.join(
241
+ agentPaths.sourcePath,
242
+ CLAUDE_DIR,
243
+ STANDARD_DIRS.AGENTS,
244
+ compiledFileName
245
+ );
246
+ if (await fileExists(remoteAgentPath)) {
247
+ return parseCompiledAgent(await readFile(remoteAgentPath));
248
+ }
249
+ } catch {
250
+ }
251
+ throw new Error(
252
+ `Agent '${META_AGENT_NAME}' not found.
253
+
254
+ Run 'compile' first to generate agents.`
255
+ );
256
+ }
257
+ function buildAgentPrompt(agentName, purpose, outputDir) {
258
+ return `Create a new Claude Code agent named "${agentName}" in the directory "${outputDir}".
259
+
260
+ Agent Purpose: ${purpose}
261
+
262
+ Requirements:
263
+ 1. Create the agent directory structure at ${outputDir}/${agentName}/
264
+ 2. Create metadata.yaml with appropriate configuration
265
+ 3. Create identity.md with the agent's role and context
266
+ 4. Create playbook.md with the agent's operational process
267
+ 5. Optionally create output.md if output format guidance would help
268
+ 6. Optionally create critical-requirements.md for important rules
269
+ 7. Include \`custom: true\` in the metadata.yaml configuration
270
+
271
+ Follow the existing agent patterns in the codebase. Keep the agent focused and practical.`;
272
+ }
273
+ async function invokeMetaAgent(options) {
274
+ const { agentDef, prompt } = options;
275
+ const agentsJson = JSON.stringify({
276
+ [META_AGENT_NAME]: {
277
+ description: agentDef.description,
278
+ prompt: agentDef.prompt,
279
+ model: agentDef.model,
280
+ tools: agentDef.tools
281
+ }
282
+ });
283
+ const args = ["--agents", agentsJson, "--agent", META_AGENT_NAME, "--prompt", prompt];
284
+ return new Promise((resolve, reject) => {
285
+ const child = spawn("claude", args, {
286
+ stdio: "inherit"
287
+ });
288
+ child.on("error", (error) => {
289
+ reject(new Error(`Failed to spawn claude CLI: ${error.message}`));
290
+ });
291
+ child.on("close", (code) => {
292
+ if (code === 0) {
293
+ resolve();
294
+ } else {
295
+ reject(new Error(`Claude CLI exited with code ${code}`));
296
+ }
297
+ });
298
+ });
299
+ }
300
+ export {
301
+ buildAgentPrompt,
302
+ NewAgent as default
303
+ };
304
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cli/commands/new/agent.tsx"],"sourcesContent":["import React, { useState } from \"react\";\n\nimport { Args, Flags } from \"@oclif/core\";\nimport { TextInput } from \"@inkjs/ui\";\nimport { spawn } from \"child_process\";\nimport matter from \"gray-matter\";\nimport { z } from \"zod\";\nimport { Box, Text, useApp, useInput } from \"ink\";\nimport path from \"path\";\n\nimport { BaseCommand } from \"../../base-command.js\";\nimport { promptValue } from \"../../components/common/prompt-confirm.js\";\nimport { CLAUDE_DIR, CLI_COLORS, STANDARD_DIRS, STANDARD_FILES } from \"../../consts.js\";\nimport { resolveInstallPaths } from \"../../lib/installation/index.js\";\nimport { resolveSource } from \"../../lib/configuration/index.js\";\nimport {\n type ConfigTypesBackgroundData,\n loadConfigTypesDataInBackground,\n} from \"../../lib/configuration/config-types-writer.js\";\nimport { writeScaffoldedEntityTypes } from \"../../lib/config-gate/index.js\";\nimport { EXIT_CODES } from \"../../lib/exit-codes.js\";\nimport { FEATURE_FLAGS, featureDisabledError } from \"../../lib/feature-flags.js\";\nimport { modelNameSchema } from \"../../lib/schemas.js\";\nimport { getAgentDefinitions } from \"../../lib/agents/index.js\";\nimport type { ModelName } from \"../../types/index.js\";\nimport { getErrorMessage } from \"../../utils/errors.js\";\nimport { isClaudeCLIAvailable } from \"../../utils/exec.js\";\nimport { fileExists, readFile } from \"../../utils/fs.js\";\n\nconst SEPARATOR_WIDTH = 60;\n\ntype PurposeInputProps = {\n onSubmit: (purpose: string) => void;\n onCancel: () => void;\n};\n\ntype PurposeOutcome = { status: \"submitted\"; purpose: string } | { status: \"cancelled\" };\n\nconst PurposeInput: React.FC<PurposeInputProps> = ({ onSubmit, onCancel }) => {\n const { exit } = useApp();\n const [error, setError] = useState<string | null>(null);\n\n useInput((_input, key) => {\n if (key.escape) {\n onCancel();\n exit();\n }\n });\n\n const handleSubmit = (value: string) => {\n const trimmed = value.trim();\n if (!trimmed) {\n setError(\"Purpose is required\");\n return;\n }\n onSubmit(trimmed);\n exit();\n };\n\n return (\n <Box flexDirection=\"column\">\n <Text bold>Create New Agent</Text>\n <Text>What should this agent do?</Text>\n <Text dimColor>e.g., Manages database migrations with rollback support</Text>\n <Text> </Text>\n <TextInput placeholder=\"Enter agent purpose...\" onSubmit={handleSubmit} />\n {error && (\n <Box marginTop={1}>\n <Text color={CLI_COLORS.ERROR}>{error}</Text>\n </Box>\n )}\n </Box>\n );\n};\n\nexport default class NewAgent extends BaseCommand {\n static summary = \"Create a new custom agent using AI generation\";\n static description =\n \"Uses the agent-summoner meta-agent to scaffold a new agent with proper structure and documentation.\";\n\n static examples = [\n {\n description: \"Scaffold an agent (interactive prompt)\",\n command: \"<%= config.bin %> <%= command.id %> my-agent\",\n },\n {\n description: \"Scaffold with purpose provided up front\",\n command: '<%= config.bin %> <%= command.id %> my-agent --purpose \"Manage DB migrations\"',\n },\n {\n description: \"Overwrite an existing agent\",\n command: \"<%= config.bin %> <%= command.id %> my-agent --force\",\n },\n ];\n\n static args = {\n name: Args.string({\n description: \"Name of the agent to create\",\n required: true,\n }),\n };\n\n static flags = {\n ...BaseCommand.baseFlags,\n purpose: Flags.string({\n char: \"p\",\n description: \"Purpose/description of the agent\",\n required: false,\n }),\n force: Flags.boolean({\n char: \"f\",\n description: \"Overwrite existing agent\",\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n if (!FEATURE_FLAGS.NEW_AGENT_COMMAND) {\n this.error(featureDisabledError(\"new agent\"), {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n const { args, flags } = await this.parse(NewAgent);\n const projectDir = process.cwd();\n\n const configTypesReady = loadConfigTypesDataInBackground(flags.source, projectDir);\n await this.ensureClaudeCliAvailable();\n\n const purpose = flags.purpose ?? (await this.promptForPurpose());\n const outputDir = path.join(resolveInstallPaths(projectDir, \"project\").agentsDir, \"_custom\");\n\n await this.checkExistingDir(path.join(outputDir, args.name), flags.force);\n this.logAgentPlan(args.name, purpose, outputDir);\n await this.generateAgent(args.name, purpose, outputDir, flags, projectDir);\n await this.updateConfigTypes(projectDir, configTypesReady, args.name);\n\n this.log(\"\");\n this.log(\"─\".repeat(SEPARATOR_WIDTH));\n this.logSuccess(\"Agent creation complete!\");\n }\n\n private async checkExistingDir(agentDir: string, force: boolean): Promise<void> {\n await this.ensureDirOverwritable(agentDir, force, {\n exists: `Agent directory already exists: ${agentDir}`,\n overwriting: `Overwriting existing agent at ${agentDir}`,\n });\n }\n\n private async ensureClaudeCliAvailable(): Promise<void> {\n const cliAvailable = await isClaudeCLIAvailable();\n if (!cliAvailable) {\n this.error(\n \"Claude CLI not found. Please install it first:\\n\" +\n \" npm install -g @anthropic-ai/claude-code\",\n { exit: EXIT_CODES.ERROR },\n );\n }\n }\n\n private async promptForPurpose(): Promise<string> {\n const outcome = await promptValue<PurposeOutcome>(\n (resolve) => (\n <PurposeInput\n onSubmit={(value) => resolve({ status: \"submitted\", purpose: value })}\n onCancel={() => resolve({ status: \"cancelled\" })}\n />\n ),\n { onExit: { status: \"cancelled\" } },\n );\n\n if (outcome.status === \"cancelled\") {\n this.log(\"Cancelled\");\n this.exit(EXIT_CODES.CANCELLED);\n throw new Error(\"unreachable\");\n }\n\n return outcome.purpose;\n }\n\n private logAgentPlan(name: string, purpose: string, outputDir: string): void {\n this.log(\"\");\n this.log(`Agent name: ${name}`);\n this.log(`Purpose: ${purpose}`);\n this.log(`Output: ${outputDir}`);\n this.log(\"\");\n }\n\n private async generateAgent(\n name: string,\n purpose: string,\n outputDir: string,\n flags: { source: string | undefined },\n projectDir: string,\n ): Promise<void> {\n this.log(\"Fetching agent-summoner from source...\");\n\n try {\n const sourceConfig = await resolveSource(flags.source, projectDir);\n const agentDef = await loadMetaAgent({\n projectDir,\n source: sourceConfig.source,\n });\n this.log(\"Meta-agent loaded\");\n this.log(\"\");\n\n const agentPrompt = buildAgentPrompt(name, purpose, outputDir);\n\n this.log(\"Invoking agent-summoner to create your agent...\");\n this.log(\"─\".repeat(SEPARATOR_WIDTH));\n this.log(\"\");\n\n await invokeMetaAgent({\n agentDef,\n prompt: agentPrompt,\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n private async updateConfigTypes(\n projectDir: string,\n configTypesReady: Promise<ConfigTypesBackgroundData>,\n agentName: string,\n ): Promise<void> {\n try {\n await writeScaffoldedEntityTypes(projectDir, configTypesReady, {\n extraAgentNames: [agentName],\n });\n } catch (error) {\n this.warn(`Could not update ${STANDARD_FILES.CONFIG_TYPES_TS}: ${getErrorMessage(error)}`);\n }\n }\n}\n\nconst META_AGENT_NAME = \"agent-summoner\";\n\ntype NewAgentInput = {\n description: string;\n prompt: string;\n model?: ModelName;\n tools?: string[];\n};\n\n/** Frontmatter shape of the compiled agent-summoner.md read at the matter() parse boundary. */\nconst metaAgentFrontmatterSchema = z.object({\n description: z.string().optional(),\n tools: z.union([z.string(), z.array(z.string())]).optional(),\n model: modelNameSchema.optional(),\n});\n\ntype LoadMetaAgentOptions = {\n projectDir: string;\n source: string;\n};\n\ntype InvokeMetaAgentOptions = {\n agentDef: NewAgentInput;\n prompt: string;\n};\n\nfunction parseCompiledAgent(content: string): NewAgentInput {\n const { data, content: body } = matter(content);\n const frontmatter = metaAgentFrontmatterSchema.parse(data);\n const tools =\n typeof frontmatter.tools === \"string\"\n ? frontmatter.tools.split(\",\").map((t) => t.trim())\n : frontmatter.tools;\n\n return {\n description: frontmatter.description || \"Creates new agents\",\n prompt: body.trim(),\n model: frontmatter.model,\n tools,\n };\n}\n\nasync function loadMetaAgent(options: LoadMetaAgentOptions): Promise<NewAgentInput> {\n const { projectDir, source } = options;\n const compiledFileName = `${META_AGENT_NAME}.md`;\n\n const localAgentPath = path.join(\n resolveInstallPaths(projectDir, \"project\").agentsDir,\n compiledFileName,\n );\n if (await fileExists(localAgentPath)) {\n return parseCompiledAgent(await readFile(localAgentPath));\n }\n\n try {\n const agentPaths = await getAgentDefinitions(source, { projectDir });\n const remoteAgentPath = path.join(\n agentPaths.sourcePath,\n CLAUDE_DIR,\n STANDARD_DIRS.AGENTS,\n compiledFileName,\n );\n if (await fileExists(remoteAgentPath)) {\n return parseCompiledAgent(await readFile(remoteAgentPath));\n }\n } catch {\n // Source does not contain agents — fall through to error\n }\n\n throw new Error(\n `Agent '${META_AGENT_NAME}' not found.\\n\\n` + `Run 'compile' first to generate agents.`,\n );\n}\n\nexport function buildAgentPrompt(agentName: string, purpose: string, outputDir: string): string {\n return `Create a new Claude Code agent named \"${agentName}\" in the directory \"${outputDir}\".\n\nAgent Purpose: ${purpose}\n\nRequirements:\n1. Create the agent directory structure at ${outputDir}/${agentName}/\n2. Create metadata.yaml with appropriate configuration\n3. Create identity.md with the agent's role and context\n4. Create playbook.md with the agent's operational process\n5. Optionally create output.md if output format guidance would help\n6. Optionally create critical-requirements.md for important rules\n7. Include \\`custom: true\\` in the metadata.yaml configuration\n\nFollow the existing agent patterns in the codebase. Keep the agent focused and practical.`;\n}\n\nasync function invokeMetaAgent(options: InvokeMetaAgentOptions): Promise<void> {\n const { agentDef, prompt } = options;\n\n const agentsJson = JSON.stringify({\n [META_AGENT_NAME]: {\n description: agentDef.description,\n prompt: agentDef.prompt,\n model: agentDef.model,\n tools: agentDef.tools,\n },\n });\n\n const args = [\"--agents\", agentsJson, \"--agent\", META_AGENT_NAME, \"--prompt\", prompt];\n\n return new Promise((resolve, reject) => {\n const child = spawn(\"claude\", args, {\n stdio: \"inherit\",\n });\n\n child.on(\"error\", (error) => {\n reject(new Error(`Failed to spawn claude CLI: ${error.message}`));\n });\n\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`Claude CLI exited with code ${code}`));\n }\n });\n });\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,315 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ generateMarketplace,
4
+ writeMarketplace
5
+ } from "../../chunk-CFQT72MJ.js";
6
+ import {
7
+ generateSkillCategoriesTs,
8
+ generateSkillRulesTs,
9
+ resolveAuthorOrDefault,
10
+ scaffoldSkillFiles
11
+ } from "../../chunk-4LPJZNT7.js";
12
+ import {
13
+ validateKebabCaseName
14
+ } from "../../chunk-PG4G4IIK.js";
15
+ import {
16
+ FEATURE_FLAGS,
17
+ featureDisabledError
18
+ } from "../../chunk-IHO75PMZ.js";
19
+ import {
20
+ BaseCommand,
21
+ EXIT_CODES
22
+ } from "../../chunk-OA5SUEQD.js";
23
+ import "../../chunk-SYUOXSPU.js";
24
+ import "../../chunk-P3PN5SVI.js";
25
+ import {
26
+ LOCAL_DEFAULTS,
27
+ compileAllSkillPlugins,
28
+ loadConfigTypesDataInBackground,
29
+ writeMarketplaceScaffoldConfig,
30
+ writeScaffoldedEntityTypes
31
+ } from "../../chunk-KH7MOIM5.js";
32
+ import {
33
+ ensureDir,
34
+ getErrorMessage,
35
+ writeFile
36
+ } from "../../chunk-3LIU2ZEF.js";
37
+ import "../../chunk-DJAZE4PD.js";
38
+ import "../../chunk-VEP23B5W.js";
39
+ import {
40
+ CLAUDE_SRC_DIR,
41
+ CLI_INVOKE_COMMAND,
42
+ EJECT_SOURCE,
43
+ MARKETPLACE_JSON,
44
+ PLUGINS_DIST_PATH,
45
+ PLUGIN_MANIFEST_DIR,
46
+ SKILLS_DIR_PATH,
47
+ SKILL_CATEGORIES_PATH,
48
+ SKILL_RULES_PATH,
49
+ STACKS_FILE_PATH,
50
+ STANDARD_FILES,
51
+ marketplaceManifestPath
52
+ } from "../../chunk-O5ASLZ2K.js";
53
+ import "../../chunk-YU2VGX5R.js";
54
+ import {
55
+ init_esm_shims
56
+ } from "../../chunk-P56WJ5FA.js";
57
+
58
+ // src/cli/commands/new/marketplace.ts
59
+ init_esm_shims();
60
+ import { Args, Flags } from "@oclif/core";
61
+ import path from "path";
62
+ function generateStacksTs(name) {
63
+ const data = {
64
+ stacks: [
65
+ {
66
+ id: "dummy-stack",
67
+ name: "Dummy Stack",
68
+ description: `Default stack for ${name}`,
69
+ agents: {
70
+ "web-developer": {
71
+ "dummy-category": "dummy-skill"
72
+ }
73
+ },
74
+ philosophy: "Ship fast, iterate faster"
75
+ }
76
+ ]
77
+ };
78
+ const body = JSON.stringify(data, null, 2);
79
+ return `// Stack definitions for ${name}
80
+ export default ${body};
81
+ `;
82
+ }
83
+ function generateReadme(name) {
84
+ return `# ${name}
85
+
86
+ Private marketplace for custom skills and stacks.
87
+
88
+ ## Directory Structure
89
+
90
+ \`\`\`
91
+ ${STACKS_FILE_PATH} # Stack definitions (agent groupings with skill mappings)
92
+ ${SKILLS_DIR_PATH}/ # Custom skill definitions
93
+ \`\`\`
94
+
95
+ ## Creating Skills
96
+
97
+ \`\`\`bash
98
+ ${CLI_INVOKE_COMMAND} new skill <name> --category <category-name>
99
+ \`\`\`
100
+
101
+ Each skill lives in \`${SKILLS_DIR_PATH}/<skill-name>/\` with:
102
+ - \`${STANDARD_FILES.SKILL_MD}\` -- Skill content (what the skill teaches)
103
+ - \`${STANDARD_FILES.METADATA_YAML}\` -- Skill metadata (category, author, description, custom: true)
104
+
105
+ ## Using This Marketplace
106
+
107
+ Point the CLI at this marketplace as a source:
108
+
109
+ \`\`\`bash
110
+ # Local development
111
+ ${CLI_INVOKE_COMMAND} init --source /path/to/${name}
112
+
113
+ # From a git repository
114
+ ${CLI_INVOKE_COMMAND} init --source github:your-org/${name}
115
+ \`\`\`
116
+
117
+ ## How It Works
118
+
119
+ The CLI auto-discovers skills from the \`${SKILLS_DIR_PATH}/\` directory
120
+ and stacks from \`${STACKS_FILE_PATH}\`.
121
+ Custom categories are discovered from skill \`${STANDARD_FILES.METADATA_YAML}\` files with \`custom: true\`.
122
+ Custom skills appear alongside built-in ones in the wizard. No manual registration needed.
123
+ `;
124
+ }
125
+ var NewMarketplace = class _NewMarketplace extends BaseCommand {
126
+ static summary = "Scaffold a new private marketplace project";
127
+ static description = "Create a new private marketplace directory with the required structure for custom skills and stacks.";
128
+ static examples = [
129
+ {
130
+ description: "Create a new marketplace",
131
+ command: "<%= config.bin %> <%= command.id %> acme-skills"
132
+ },
133
+ {
134
+ description: "Initialize the current directory as a marketplace",
135
+ command: "<%= config.bin %> <%= command.id %> ."
136
+ },
137
+ {
138
+ description: "Overwrite an existing directory",
139
+ command: "<%= config.bin %> <%= command.id %> acme-skills --force"
140
+ }
141
+ ];
142
+ static args = {
143
+ name: Args.string({
144
+ description: 'Name of the marketplace directory (kebab-case), or "." to use the current directory',
145
+ required: true
146
+ })
147
+ };
148
+ static flags = {
149
+ ...BaseCommand.baseFlags,
150
+ force: Flags.boolean({
151
+ char: "f",
152
+ description: "Overwrite existing marketplace directory",
153
+ default: false
154
+ })
155
+ };
156
+ async run() {
157
+ if (!FEATURE_FLAGS.NEW_MARKETPLACE_COMMAND) {
158
+ this.error(featureDisabledError("new marketplace"), {
159
+ exit: EXIT_CODES.ERROR
160
+ });
161
+ }
162
+ const { args, flags } = await this.parse(_NewMarketplace);
163
+ const parentDir = process.cwd();
164
+ const useCurrentDir = args.name === ".";
165
+ const marketplaceName = useCurrentDir ? path.basename(parentDir) : args.name;
166
+ const marketplaceDir = useCurrentDir ? parentDir : path.join(parentDir, args.name);
167
+ this.printHeader();
168
+ this.validateName(marketplaceName, useCurrentDir);
169
+ await this.checkExistingDir(marketplaceDir, useCurrentDir, flags.force);
170
+ this.log(`Marketplace: ${marketplaceName}`);
171
+ this.log(`Directory: ${marketplaceDir}`);
172
+ this.log("");
173
+ try {
174
+ const author = await resolveAuthorOrDefault(void 0, parentDir);
175
+ await this.createMarketplaceFiles(marketplaceName, marketplaceDir, author);
176
+ await this.buildMarketplace(marketplaceDir, marketplaceName);
177
+ this.printNextSteps(marketplaceName, useCurrentDir);
178
+ } catch (error) {
179
+ this.handleError(error);
180
+ }
181
+ }
182
+ printHeader() {
183
+ this.log("");
184
+ this.log("Create New Marketplace");
185
+ this.log("");
186
+ }
187
+ validateName(name, useCurrentDir) {
188
+ const validationError = validateKebabCaseName(name, "Marketplace");
189
+ if (validationError) {
190
+ if (useCurrentDir) {
191
+ this.error(
192
+ `Current directory name '${name}' is not valid kebab-case. Rename it or pass an explicit name.`,
193
+ { exit: EXIT_CODES.INVALID_ARGS }
194
+ );
195
+ }
196
+ this.error(validationError, { exit: EXIT_CODES.INVALID_ARGS });
197
+ }
198
+ }
199
+ async checkExistingDir(dir, useCurrentDir, force) {
200
+ if (useCurrentDir) return;
201
+ await this.ensureDirOverwritable(dir, force, {
202
+ exists: `Directory already exists: ${dir}`,
203
+ overwriting: `Overwriting existing directory at ${dir}`
204
+ });
205
+ }
206
+ async createMarketplaceFiles(marketplaceName, marketplaceDir, author) {
207
+ const skillName = "dummy-skill";
208
+ this.log("Creating marketplace structure...");
209
+ const stacksContent = generateStacksTs(marketplaceName);
210
+ const stacksPath = path.join(marketplaceDir, STACKS_FILE_PATH);
211
+ await ensureDir(path.dirname(stacksPath));
212
+ await writeFile(stacksPath, stacksContent);
213
+ const categoriesContent = generateSkillCategoriesTs(
214
+ LOCAL_DEFAULTS.CATEGORY,
215
+ LOCAL_DEFAULTS.DOMAIN
216
+ );
217
+ const categoriesPath = path.join(marketplaceDir, SKILL_CATEGORIES_PATH);
218
+ await writeFile(categoriesPath, categoriesContent);
219
+ const rulesContent = generateSkillRulesTs();
220
+ const rulesPath = path.join(marketplaceDir, SKILL_RULES_PATH);
221
+ await writeFile(rulesPath, rulesContent);
222
+ const skillsDir = path.join(marketplaceDir, SKILLS_DIR_PATH);
223
+ await scaffoldSkillFiles({
224
+ name: skillName,
225
+ author,
226
+ category: LOCAL_DEFAULTS.CATEGORY,
227
+ domain: LOCAL_DEFAULTS.DOMAIN,
228
+ skillDir: path.join(skillsDir, skillName)
229
+ });
230
+ const readmeContent = generateReadme(marketplaceName);
231
+ const readmePath = path.join(marketplaceDir, "README.md");
232
+ await writeFile(readmePath, readmeContent);
233
+ const configDir = path.join(marketplaceDir, CLAUDE_SRC_DIR);
234
+ await ensureDir(configDir);
235
+ const marketplaceComment = "// Marketplaces house skills only \u2014 agents are defined by consumer projects.\n\n";
236
+ await writeMarketplaceScaffoldConfig(
237
+ marketplaceDir,
238
+ // Boundary cast: custom marketplace dummy skill/category not in standard unions
239
+ {
240
+ name: marketplaceName,
241
+ skills: [{ id: skillName, scope: "project", source: EJECT_SOURCE }],
242
+ agents: [],
243
+ source: ".",
244
+ marketplace: marketplaceName,
245
+ stack: {
246
+ "web-developer": {
247
+ // Boundary cast: dummy-category is not in the generated Category union
248
+ [LOCAL_DEFAULTS.CATEGORY]: [{ id: skillName }]
249
+ }
250
+ }
251
+ },
252
+ marketplaceComment
253
+ );
254
+ this.log("");
255
+ this.logSuccess(`Created ${STACKS_FILE_PATH}`);
256
+ this.logSuccess(`Created ${SKILL_CATEGORIES_PATH}`);
257
+ this.logSuccess(`Created ${SKILL_RULES_PATH}`);
258
+ this.logSuccess("Created README.md");
259
+ this.logSuccess(`Created ${CLAUDE_SRC_DIR}/${STANDARD_FILES.CONFIG_TS}`);
260
+ this.log("");
261
+ }
262
+ printNextSteps(marketplaceName, useCurrentDir) {
263
+ const steps = [
264
+ ...useCurrentDir ? [] : [`cd ${marketplaceName}`],
265
+ `${CLI_INVOKE_COMMAND} new skill <name> --category <category-name>`,
266
+ "Push to a git repository",
267
+ `${CLI_INVOKE_COMMAND} init --source github:your-org/${marketplaceName}`
268
+ ];
269
+ this.log("Marketplace created successfully!");
270
+ this.log("");
271
+ this.log("Next steps:");
272
+ for (const [index, step] of steps.entries()) {
273
+ this.log(` ${index + 1}. ${step}`);
274
+ }
275
+ this.log("");
276
+ }
277
+ async buildMarketplace(marketplaceDir, marketplaceName) {
278
+ const skillsDir = path.resolve(marketplaceDir, SKILLS_DIR_PATH);
279
+ const pluginsOutputDir = path.resolve(marketplaceDir, PLUGINS_DIST_PATH);
280
+ const marketplaceOutputPath = marketplaceManifestPath(marketplaceDir);
281
+ try {
282
+ this.log("Building plugins...");
283
+ const { compiled, failed } = await compileAllSkillPlugins(skillsDir, pluginsOutputDir);
284
+ this.logSuccess(`Built ${compiled.length} skill plugins.`);
285
+ if (failed.length > 0) {
286
+ this.warn(`${failed.length} skill(s) failed to compile: ${failed.join(", ")}`);
287
+ }
288
+ this.log("Generating marketplace.json...");
289
+ const marketplace = await generateMarketplace(pluginsOutputDir, {
290
+ name: marketplaceName,
291
+ ownerName: marketplaceName,
292
+ pluginRoot: `./${PLUGINS_DIST_PATH}`
293
+ });
294
+ await writeMarketplace(marketplaceOutputPath, marketplace);
295
+ this.logSuccess(
296
+ `Generated ${PLUGIN_MANIFEST_DIR}/${MARKETPLACE_JSON} with ${marketplace.plugins.length} plugins.`
297
+ );
298
+ this.log("Generating config-types.ts...");
299
+ const configTypesData = loadConfigTypesDataInBackground(marketplaceDir, marketplaceDir);
300
+ await writeScaffoldedEntityTypes(marketplaceDir, configTypesData);
301
+ this.logSuccess(`Generated ${CLAUDE_SRC_DIR}/${STANDARD_FILES.CONFIG_TYPES_TS}`);
302
+ } catch (error) {
303
+ this.warn(`Build step failed: ${getErrorMessage(error)}`);
304
+ this.warn(
305
+ "The scaffold is still valid. Run 'build plugins' and 'build marketplace' manually."
306
+ );
307
+ }
308
+ }
309
+ };
310
+ export {
311
+ NewMarketplace as default,
312
+ generateReadme,
313
+ generateStacksTs
314
+ };
315
+ //# sourceMappingURL=marketplace.js.map