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,382 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ validateKebabCaseName
4
+ } from "./chunk-PG4G4IIK.js";
5
+ import {
6
+ FEATURE_FLAGS,
7
+ featureDisabledError
8
+ } from "./chunk-IHO75PMZ.js";
9
+ import {
10
+ BaseCommand,
11
+ EXIT_CODES
12
+ } from "./chunk-7QIHKQL5.js";
13
+ import {
14
+ LOCAL_DEFAULTS,
15
+ computeSkillFolderHash,
16
+ detectInstallation,
17
+ loadConfig,
18
+ loadConfigTypesDataInBackground,
19
+ resolveAuthor,
20
+ toTitleCase,
21
+ writeScaffoldedEntityTypes,
22
+ yamlSchemaComment
23
+ } from "./chunk-TVHRMRD3.js";
24
+ import {
25
+ ensureDir,
26
+ fileExists,
27
+ getErrorMessage,
28
+ skillCategoriesFileSchema,
29
+ verbose,
30
+ writeFile
31
+ } from "./chunk-3LIU2ZEF.js";
32
+ import {
33
+ CLI_INVOKE_COMMAND,
34
+ DEFAULT_VERSION,
35
+ LOCAL_SKILLS_PATH,
36
+ SCHEMA_PATHS,
37
+ SKILLS_DIR_PATH,
38
+ SKILL_CATEGORIES_PATH,
39
+ SKILL_RULES_PATH,
40
+ STANDARD_FILES,
41
+ marketplaceManifestPath
42
+ } from "./chunk-O5ASLZ2K.js";
43
+ import {
44
+ init_esm_shims
45
+ } from "./chunk-P56WJ5FA.js";
46
+
47
+ // src/cli/commands/new/skill.ts
48
+ init_esm_shims();
49
+ import { Args, Flags } from "@oclif/core";
50
+ import path from "path";
51
+
52
+ // src/cli/lib/skills/generators.ts
53
+ init_esm_shims();
54
+ var DEFAULT_CATEGORY_ORDER = 99;
55
+ var CATEGORIES_TS_COMMENT = "// Skill category definitions";
56
+ var RULES_TS_COMMENT = "// Skill rules configuration";
57
+ function formatTsExport(comment, data) {
58
+ const body = JSON.stringify(data, null, 2);
59
+ return `${comment}
60
+ export default ${body};
61
+ `;
62
+ }
63
+ function buildCategoryEntry(category, domain) {
64
+ const categoryPart = category.includes("-") ? category.slice(category.indexOf("-") + 1) : category;
65
+ return {
66
+ id: category,
67
+ displayName: toTitleCase(categoryPart),
68
+ description: `Skills for ${toTitleCase(categoryPart)}`,
69
+ exclusive: true,
70
+ required: false,
71
+ order: DEFAULT_CATEGORY_ORDER,
72
+ custom: true,
73
+ domain
74
+ };
75
+ }
76
+ function generateSkillCategoriesTs(category, domain) {
77
+ const entry = buildCategoryEntry(category, domain);
78
+ const data = {
79
+ version: DEFAULT_VERSION,
80
+ categories: {
81
+ [category]: entry
82
+ }
83
+ };
84
+ return formatTsExport(CATEGORIES_TS_COMMENT, data);
85
+ }
86
+ function generateSkillRulesTs() {
87
+ const data = {
88
+ version: DEFAULT_VERSION,
89
+ relationships: {
90
+ conflicts: [],
91
+ discourages: [],
92
+ recommends: [],
93
+ requires: [],
94
+ alternatives: []
95
+ }
96
+ };
97
+ return formatTsExport(RULES_TS_COMMENT, data);
98
+ }
99
+
100
+ // src/cli/commands/new/skill.ts
101
+ var NewSkill = class _NewSkill extends BaseCommand {
102
+ static summary = "Create a new local skill with proper structure";
103
+ static description = "Create a new local skill scaffold with SKILL.md and metadata.yaml files";
104
+ static examples = [
105
+ {
106
+ description: "Scaffold a skill in the local marketplace",
107
+ command: "<%= config.bin %> <%= command.id %> my-skill"
108
+ },
109
+ {
110
+ description: "Scaffold with explicit category and domain",
111
+ command: "<%= config.bin %> <%= command.id %> my-skill --category web/forms --domain web"
112
+ },
113
+ {
114
+ description: "Overwrite an existing skill",
115
+ command: "<%= config.bin %> <%= command.id %> my-skill --force"
116
+ }
117
+ ];
118
+ static args = {
119
+ name: Args.string({
120
+ description: "Name of the skill to create (kebab-case)",
121
+ required: true
122
+ })
123
+ };
124
+ // Override parent baseFlags to drop --source (new skill auto-detects marketplace context)
125
+ static baseFlags = {};
126
+ static flags = {
127
+ author: Flags.string({
128
+ char: "a",
129
+ description: "Author identifier (e.g., @myhandle)",
130
+ required: false
131
+ }),
132
+ category: Flags.string({
133
+ char: "c",
134
+ description: "Skill category",
135
+ default: LOCAL_DEFAULTS.CATEGORY
136
+ }),
137
+ domain: Flags.string({
138
+ char: "d",
139
+ description: "Domain for the skill (e.g., web, api, cli)",
140
+ required: false
141
+ }),
142
+ force: Flags.boolean({
143
+ char: "f",
144
+ description: "Overwrite existing skill",
145
+ default: false
146
+ })
147
+ };
148
+ async run() {
149
+ if (!FEATURE_FLAGS.NEW_SKILL_COMMAND) {
150
+ this.error(featureDisabledError("new skill"), {
151
+ exit: EXIT_CODES.ERROR
152
+ });
153
+ }
154
+ const { args, flags } = await this.parse(_NewSkill);
155
+ const projectDir = process.cwd();
156
+ await this.ensureInstallation(projectDir);
157
+ const configTypesReady = loadConfigTypesDataInBackground(void 0, projectDir);
158
+ this.printHeader();
159
+ this.validateName(args.name);
160
+ const author = await resolveAuthorOrDefault(flags.author, projectDir);
161
+ const category = flags.category;
162
+ const domain = flags.domain ?? LOCAL_DEFAULTS.DOMAIN;
163
+ const skillsBasePath = await this.resolveSkillsBasePath(projectDir);
164
+ const skillDir = path.join(skillsBasePath, args.name);
165
+ await this.checkExistingDir(skillDir, flags.force);
166
+ this.logSkillInfo(args.name, author, category, skillDir);
167
+ await this.createSkillFiles(
168
+ args.name,
169
+ author,
170
+ category,
171
+ domain,
172
+ skillDir,
173
+ projectDir,
174
+ configTypesReady
175
+ );
176
+ }
177
+ async ensureInstallation(projectDir) {
178
+ const installation = await detectInstallation(projectDir);
179
+ if (!installation) {
180
+ this.error(`No installation found. Run '${CLI_INVOKE_COMMAND} init' first.`, {
181
+ exit: EXIT_CODES.ERROR
182
+ });
183
+ }
184
+ }
185
+ printHeader() {
186
+ this.log("");
187
+ this.log("Create New Skill");
188
+ this.log("");
189
+ }
190
+ validateName(name) {
191
+ const validationError = validateKebabCaseName(name, "Skill");
192
+ if (validationError) {
193
+ this.error(validationError, { exit: EXIT_CODES.INVALID_ARGS });
194
+ }
195
+ }
196
+ async resolveSkillsBasePath(projectDir) {
197
+ const marketplacePath = marketplaceManifestPath(projectDir);
198
+ if (await fileExists(marketplacePath)) {
199
+ this.log(`Detected marketplace context, creating skill in ${SKILLS_DIR_PATH}/`);
200
+ return path.join(projectDir, SKILLS_DIR_PATH);
201
+ }
202
+ return path.join(projectDir, LOCAL_SKILLS_PATH);
203
+ }
204
+ async checkExistingDir(skillDir, force) {
205
+ await this.ensureDirOverwritable(skillDir, force, {
206
+ exists: `Skill directory already exists: ${skillDir}`,
207
+ overwriting: `Overwriting existing skill at ${skillDir}`
208
+ });
209
+ }
210
+ logSkillInfo(name, author, category, skillDir) {
211
+ this.log(`Skill name: ${name}`);
212
+ this.log(`Author: ${author}`);
213
+ this.log(`Category: ${category}`);
214
+ this.log(`Directory: ${skillDir}`);
215
+ this.log("");
216
+ }
217
+ async createSkillFiles(name, author, category, domain, skillDir, projectDir, configTypesReady) {
218
+ this.log("Creating skill files...");
219
+ try {
220
+ const result = await scaffoldSkillFiles({
221
+ name,
222
+ author,
223
+ category,
224
+ domain,
225
+ skillDir
226
+ });
227
+ this.log("");
228
+ this.logSuccess(`Created ${STANDARD_FILES.SKILL_MD} at ${result.skillMdPath}`);
229
+ this.logSuccess(`Created ${STANDARD_FILES.METADATA_YAML} at ${result.metadataPath}`);
230
+ const marketplacePath = marketplaceManifestPath(projectDir);
231
+ if (await fileExists(marketplacePath)) {
232
+ try {
233
+ await updateSkillRegistryConfig({ projectRoot: projectDir, category, domain });
234
+ } catch (error) {
235
+ this.warn(`Could not update config files: ${getErrorMessage(error)}`);
236
+ }
237
+ }
238
+ try {
239
+ await writeScaffoldedEntityTypes(projectDir, configTypesReady, {
240
+ extraSkillIds: [name],
241
+ extraDomains: [domain],
242
+ extraCategories: [category]
243
+ });
244
+ } catch (error) {
245
+ this.warn(`Could not update ${STANDARD_FILES.CONFIG_TYPES_TS}: ${getErrorMessage(error)}`);
246
+ }
247
+ this.log("");
248
+ this.log(
249
+ `Skill created successfully! Run '${CLI_INVOKE_COMMAND} compile' to include it in your agents.`
250
+ );
251
+ this.log("");
252
+ } catch (error) {
253
+ this.handleError(error);
254
+ }
255
+ }
256
+ };
257
+ async function resolveAuthorOrDefault(authorFlag, projectDir) {
258
+ if (authorFlag) return authorFlag;
259
+ return await resolveAuthor(projectDir) || LOCAL_DEFAULTS.AUTHOR;
260
+ }
261
+ function generateSkillMd(name) {
262
+ const titleName = toTitleCase(name);
263
+ return `---
264
+ name: ${name}
265
+ description: Brief description of this skill
266
+ ---
267
+
268
+ # ${titleName}
269
+
270
+ > **Quick Guide:** Add a brief summary of what this skill teaches.
271
+
272
+ ---
273
+
274
+ <critical_requirements>
275
+
276
+ ## CRITICAL: Before Using This Skill
277
+
278
+ **(Add critical requirements here)**
279
+
280
+ </critical_requirements>
281
+
282
+ ---
283
+
284
+ **When to use:**
285
+
286
+ - Add use cases here
287
+
288
+ **Key patterns covered:**
289
+
290
+ - Add patterns here
291
+
292
+ ---
293
+
294
+ <patterns>
295
+
296
+ ## Core Patterns
297
+
298
+ ### Pattern 1: Example Pattern
299
+
300
+ Add your patterns here.
301
+
302
+ </patterns>
303
+
304
+ ---
305
+
306
+ <critical_reminders>
307
+
308
+ ## CRITICAL REMINDERS
309
+
310
+ **(Repeat critical requirements here)**
311
+
312
+ </critical_reminders>
313
+ `;
314
+ }
315
+ function generateMetadataYaml(name, author, category, contentHash, domain) {
316
+ const titleName = toTitleCase(name);
317
+ return `${yamlSchemaComment(SCHEMA_PATHS.customMetadata)}
318
+ custom: true
319
+ domain: ${domain}
320
+ category: ${category}
321
+ author: "${author}"
322
+ displayName: ${titleName}
323
+ slug: ${name}
324
+ cliDescription: Brief description
325
+ usageGuidance: Use when <guidance>.
326
+ contentHash: ${contentHash}
327
+ `;
328
+ }
329
+ async function scaffoldSkillFiles(options) {
330
+ const { name, author, category, domain, skillDir } = options;
331
+ const skillMdContent = generateSkillMd(name);
332
+ const skillMdPath = path.join(skillDir, STANDARD_FILES.SKILL_MD);
333
+ const metadataPath = path.join(skillDir, STANDARD_FILES.METADATA_YAML);
334
+ await writeFile(skillMdPath, skillMdContent);
335
+ const contentHash = await computeSkillFolderHash(skillDir);
336
+ const metadataContent = generateMetadataYaml(name, author, category, contentHash, domain);
337
+ await writeFile(metadataPath, metadataContent);
338
+ return { skillMdPath, metadataPath, contentHash };
339
+ }
340
+ async function updateSkillRegistryConfig(options) {
341
+ const { projectRoot, category, domain } = options;
342
+ const categoriesPath = path.join(projectRoot, SKILL_CATEGORIES_PATH);
343
+ const rulesPath = path.join(projectRoot, SKILL_RULES_PATH);
344
+ if (await fileExists(categoriesPath)) {
345
+ const parsed = await loadConfig(categoriesPath, skillCategoriesFileSchema);
346
+ if (!parsed) {
347
+ throw new Error(
348
+ `Config at ${categoriesPath} has no default export \u2014 delete the file or add \`export default { version, categories: {} }\``
349
+ );
350
+ }
351
+ const categories = parsed.categories;
352
+ if (!categories[category]) {
353
+ const updated = {
354
+ ...parsed,
355
+ categories: { ...categories, [category]: buildCategoryEntry(category, domain) }
356
+ };
357
+ await writeFile(categoriesPath, formatTsExport(CATEGORIES_TS_COMMENT2, updated));
358
+ verbose(`Added category '${category}' to ${SKILL_CATEGORIES_PATH}`);
359
+ }
360
+ } else {
361
+ await ensureDir(path.dirname(categoriesPath));
362
+ await writeFile(categoriesPath, generateSkillCategoriesTs(category, domain));
363
+ verbose(`Created ${SKILL_CATEGORIES_PATH}`);
364
+ }
365
+ if (!await fileExists(rulesPath)) {
366
+ await ensureDir(path.dirname(rulesPath));
367
+ await writeFile(rulesPath, generateSkillRulesTs());
368
+ verbose(`Created ${SKILL_RULES_PATH}`);
369
+ }
370
+ }
371
+ var CATEGORIES_TS_COMMENT2 = "// Skill category definitions";
372
+
373
+ export {
374
+ generateSkillCategoriesTs,
375
+ generateSkillRulesTs,
376
+ NewSkill,
377
+ resolveAuthorOrDefault,
378
+ generateSkillMd,
379
+ generateMetadataYaml,
380
+ scaffoldSkillFiles
381
+ };
382
+ //# sourceMappingURL=chunk-PV2HNW4I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/new/skill.ts","../src/cli/lib/skills/generators.ts"],"sourcesContent":["import { Args, Flags } from \"@oclif/core\";\nimport path from \"path\";\nimport { BaseCommand } from \"../../base-command.js\";\nimport { resolveAuthor } from \"../../lib/configuration/index.js\";\nimport { loadConfig } from \"../../lib/configuration/config-loader.js\";\nimport { skillCategoriesFileSchema } from \"../../lib/schemas.js\";\nimport { loadConfigTypesDataInBackground } from \"../../lib/configuration/config-types-writer.js\";\nimport { writeScaffoldedEntityTypes } from \"../../lib/config-gate/index.js\";\nimport { fileExists, writeFile, ensureDir } from \"../../utils/fs.js\";\nimport { getErrorMessage } from \"../../utils/errors.js\";\nimport { verbose } from \"../../utils/logger.js\";\nimport { computeSkillFolderHash } from \"../../lib/versioning.js\";\nimport { validateKebabCaseName } from \"../../lib/validate-kebab-name.js\";\nimport {\n CLI_INVOKE_COMMAND,\n LOCAL_SKILLS_PATH,\n marketplaceManifestPath,\n SCHEMA_PATHS,\n SKILL_CATEGORIES_PATH,\n SKILL_RULES_PATH,\n SKILLS_DIR_PATH,\n STANDARD_FILES,\n} from \"../../consts.js\";\nimport { EXIT_CODES } from \"../../lib/exit-codes.js\";\nimport { FEATURE_FLAGS, featureDisabledError } from \"../../lib/feature-flags.js\";\nimport { yamlSchemaComment } from \"../../utils/yaml-schema.js\";\nimport { detectInstallation } from \"../../lib/installation/index.js\";\nimport { LOCAL_DEFAULTS } from \"../../lib/metadata-keys.js\";\nimport type { CategoryDefinition, CategoryPath } from \"../../types/index.js\";\nimport {\n generateSkillCategoriesTs,\n generateSkillRulesTs,\n buildCategoryEntry,\n formatTsExport,\n} from \"../../lib/skills/generators.js\";\nimport { toTitleCase } from \"../../utils/string.js\";\n\nexport default class NewSkill extends BaseCommand {\n static summary = \"Create a new local skill with proper structure\";\n static description = \"Create a new local skill scaffold with SKILL.md and metadata.yaml files\";\n\n static examples = [\n {\n description: \"Scaffold a skill in the local marketplace\",\n command: \"<%= config.bin %> <%= command.id %> my-skill\",\n },\n {\n description: \"Scaffold with explicit category and domain\",\n command: \"<%= config.bin %> <%= command.id %> my-skill --category web/forms --domain web\",\n },\n {\n description: \"Overwrite an existing skill\",\n command: \"<%= config.bin %> <%= command.id %> my-skill --force\",\n },\n ];\n\n static args = {\n name: Args.string({\n description: \"Name of the skill to create (kebab-case)\",\n required: true,\n }),\n };\n\n // Override parent baseFlags to drop --source (new skill auto-detects marketplace context)\n static baseFlags = {} as (typeof BaseCommand)[\"baseFlags\"];\n\n static flags = {\n author: Flags.string({\n char: \"a\",\n description: \"Author identifier (e.g., @myhandle)\",\n required: false,\n }),\n category: Flags.string({\n char: \"c\",\n description: \"Skill category\",\n default: LOCAL_DEFAULTS.CATEGORY,\n }),\n domain: Flags.string({\n char: \"d\",\n description: \"Domain for the skill (e.g., web, api, cli)\",\n required: false,\n }),\n force: Flags.boolean({\n char: \"f\",\n description: \"Overwrite existing skill\",\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n if (!FEATURE_FLAGS.NEW_SKILL_COMMAND) {\n this.error(featureDisabledError(\"new skill\"), {\n exit: EXIT_CODES.ERROR,\n });\n }\n\n const { args, flags } = await this.parse(NewSkill);\n const projectDir = process.cwd();\n\n await this.ensureInstallation(projectDir);\n const configTypesReady = loadConfigTypesDataInBackground(undefined, projectDir);\n\n this.printHeader();\n this.validateName(args.name);\n\n const author = await resolveAuthorOrDefault(flags.author, projectDir);\n // Boundary cast: CLI flag accepts custom category values not in the generated union\n const category = flags.category as CategoryPath;\n const domain = flags.domain ?? LOCAL_DEFAULTS.DOMAIN;\n const skillsBasePath = await this.resolveSkillsBasePath(projectDir);\n const skillDir = path.join(skillsBasePath, args.name);\n\n await this.checkExistingDir(skillDir, flags.force);\n this.logSkillInfo(args.name, author, category, skillDir);\n await this.createSkillFiles(\n args.name,\n author,\n category,\n domain,\n skillDir,\n projectDir,\n configTypesReady,\n );\n }\n\n private async ensureInstallation(projectDir: string): Promise<void> {\n const installation = await detectInstallation(projectDir);\n if (!installation) {\n this.error(`No installation found. Run '${CLI_INVOKE_COMMAND} init' first.`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n }\n\n private printHeader(): void {\n this.log(\"\");\n this.log(\"Create New Skill\");\n this.log(\"\");\n }\n\n private validateName(name: string): void {\n const validationError = validateKebabCaseName(name, \"Skill\");\n if (validationError) {\n this.error(validationError, { exit: EXIT_CODES.INVALID_ARGS });\n }\n }\n\n private async resolveSkillsBasePath(projectDir: string): Promise<string> {\n const marketplacePath = marketplaceManifestPath(projectDir);\n if (await fileExists(marketplacePath)) {\n this.log(`Detected marketplace context, creating skill in ${SKILLS_DIR_PATH}/`);\n return path.join(projectDir, SKILLS_DIR_PATH);\n }\n return path.join(projectDir, LOCAL_SKILLS_PATH);\n }\n\n private async checkExistingDir(skillDir: string, force: boolean): Promise<void> {\n await this.ensureDirOverwritable(skillDir, force, {\n exists: `Skill directory already exists: ${skillDir}`,\n overwriting: `Overwriting existing skill at ${skillDir}`,\n });\n }\n\n private logSkillInfo(\n name: string,\n author: string,\n category: CategoryPath,\n skillDir: string,\n ): void {\n this.log(`Skill name: ${name}`);\n this.log(`Author: ${author}`);\n this.log(`Category: ${category}`);\n this.log(`Directory: ${skillDir}`);\n this.log(\"\");\n }\n\n private async createSkillFiles(\n name: string,\n author: string,\n category: CategoryPath,\n domain: string,\n skillDir: string,\n projectDir: string,\n configTypesReady: ReturnType<typeof loadConfigTypesDataInBackground>,\n ): Promise<void> {\n this.log(\"Creating skill files...\");\n\n try {\n const result = await scaffoldSkillFiles({\n name,\n author,\n category,\n domain,\n skillDir,\n });\n\n this.log(\"\");\n this.logSuccess(`Created ${STANDARD_FILES.SKILL_MD} at ${result.skillMdPath}`);\n this.logSuccess(`Created ${STANDARD_FILES.METADATA_YAML} at ${result.metadataPath}`);\n\n const marketplacePath = marketplaceManifestPath(projectDir);\n if (await fileExists(marketplacePath)) {\n try {\n await updateSkillRegistryConfig({ projectRoot: projectDir, category, domain });\n } catch (error) {\n this.warn(`Could not update config files: ${getErrorMessage(error)}`);\n }\n }\n\n try {\n await writeScaffoldedEntityTypes(projectDir, configTypesReady, {\n extraSkillIds: [name],\n extraDomains: [domain],\n extraCategories: [category],\n });\n } catch (error) {\n this.warn(`Could not update ${STANDARD_FILES.CONFIG_TYPES_TS}: ${getErrorMessage(error)}`);\n }\n\n this.log(\"\");\n this.log(\n `Skill created successfully! Run '${CLI_INVOKE_COMMAND} compile' to include it in your agents.`,\n );\n this.log(\"\");\n } catch (error) {\n this.handleError(error);\n }\n }\n}\n\ntype ScaffoldSkillOptions = {\n name: string;\n author: string;\n category: CategoryPath;\n domain: string;\n skillDir: string;\n};\n\ntype ScaffoldSkillResult = {\n skillMdPath: string;\n metadataPath: string;\n contentHash: string;\n};\n\ntype RegistryUpdateOptions = {\n projectRoot: string;\n category: CategoryPath;\n domain: string;\n};\n\nexport async function resolveAuthorOrDefault(\n authorFlag: string | undefined,\n projectDir: string,\n): Promise<string> {\n if (authorFlag) return authorFlag;\n return (await resolveAuthor(projectDir)) || LOCAL_DEFAULTS.AUTHOR;\n}\n\nexport function generateSkillMd(name: string): string {\n const titleName = toTitleCase(name);\n\n return `---\nname: ${name}\ndescription: Brief description of this skill\n---\n\n# ${titleName}\n\n> **Quick Guide:** Add a brief summary of what this skill teaches.\n\n---\n\n<critical_requirements>\n\n## CRITICAL: Before Using This Skill\n\n**(Add critical requirements here)**\n\n</critical_requirements>\n\n---\n\n**When to use:**\n\n- Add use cases here\n\n**Key patterns covered:**\n\n- Add patterns here\n\n---\n\n<patterns>\n\n## Core Patterns\n\n### Pattern 1: Example Pattern\n\nAdd your patterns here.\n\n</patterns>\n\n---\n\n<critical_reminders>\n\n## CRITICAL REMINDERS\n\n**(Repeat critical requirements here)**\n\n</critical_reminders>\n`;\n}\n\nexport function generateMetadataYaml(\n name: string,\n author: string,\n category: CategoryPath,\n contentHash: string,\n domain: string,\n): string {\n const titleName = toTitleCase(name);\n\n return `${yamlSchemaComment(SCHEMA_PATHS.customMetadata)}\ncustom: true\ndomain: ${domain}\ncategory: ${category}\nauthor: \"${author}\"\ndisplayName: ${titleName}\nslug: ${name}\ncliDescription: Brief description\nusageGuidance: Use when <guidance>.\ncontentHash: ${contentHash}\n`;\n}\n\nexport async function scaffoldSkillFiles(\n options: ScaffoldSkillOptions,\n): Promise<ScaffoldSkillResult> {\n const { name, author, category, domain, skillDir } = options;\n\n const skillMdContent = generateSkillMd(name);\n const skillMdPath = path.join(skillDir, STANDARD_FILES.SKILL_MD);\n const metadataPath = path.join(skillDir, STANDARD_FILES.METADATA_YAML);\n\n await writeFile(skillMdPath, skillMdContent);\n\n const contentHash = await computeSkillFolderHash(skillDir);\n const metadataContent = generateMetadataYaml(name, author, category, contentHash, domain);\n await writeFile(metadataPath, metadataContent);\n\n return { skillMdPath, metadataPath, contentHash };\n}\n\nasync function updateSkillRegistryConfig(options: RegistryUpdateOptions): Promise<void> {\n const { projectRoot, category, domain } = options;\n\n const categoriesPath = path.join(projectRoot, SKILL_CATEGORIES_PATH);\n const rulesPath = path.join(projectRoot, SKILL_RULES_PATH);\n\n if (await fileExists(categoriesPath)) {\n const parsed = await loadConfig(categoriesPath, skillCategoriesFileSchema);\n if (!parsed) {\n throw new Error(\n `Config at ${categoriesPath} has no default export — delete the file or add \\`export default { version, categories: {} }\\``,\n );\n }\n // Boundary cast: CategoryMap keys are strict Category; CLI flag may introduce custom category IDs\n const categories = parsed.categories as Record<string, CategoryDefinition>;\n if (!categories[category]) {\n const updated = {\n ...parsed,\n categories: { ...categories, [category]: buildCategoryEntry(category, domain) },\n };\n await writeFile(categoriesPath, formatTsExport(CATEGORIES_TS_COMMENT, updated));\n verbose(`Added category '${category}' to ${SKILL_CATEGORIES_PATH}`);\n }\n } else {\n await ensureDir(path.dirname(categoriesPath));\n await writeFile(categoriesPath, generateSkillCategoriesTs(category, domain));\n verbose(`Created ${SKILL_CATEGORIES_PATH}`);\n }\n\n if (!(await fileExists(rulesPath))) {\n await ensureDir(path.dirname(rulesPath));\n await writeFile(rulesPath, generateSkillRulesTs());\n verbose(`Created ${SKILL_RULES_PATH}`);\n }\n}\n\nconst CATEGORIES_TS_COMMENT = \"// Skill category definitions\";\n","import { DEFAULT_VERSION } from \"../../consts\";\nimport { toTitleCase } from \"../../utils/string\";\nimport type { CategoryPath } from \"../../types/index\";\n\nconst DEFAULT_CATEGORY_ORDER = 99;\n\nconst CATEGORIES_TS_COMMENT = \"// Skill category definitions\";\nconst RULES_TS_COMMENT = \"// Skill rules configuration\";\n\nexport function formatTsExport(comment: string, data: unknown): string {\n const body = JSON.stringify(data, null, 2);\n return `${comment}\\nexport default ${body};\\n`;\n}\n\nexport function buildCategoryEntry(\n category: CategoryPath,\n domain: string,\n): Record<string, unknown> {\n const categoryPart = category.includes(\"-\")\n ? category.slice(category.indexOf(\"-\") + 1)\n : category;\n return {\n id: category,\n displayName: toTitleCase(categoryPart),\n description: `Skills for ${toTitleCase(categoryPart)}`,\n exclusive: true,\n required: false,\n order: DEFAULT_CATEGORY_ORDER,\n custom: true,\n domain,\n };\n}\n\nexport function generateSkillCategoriesTs(category: CategoryPath, domain: string): string {\n const entry = buildCategoryEntry(category, domain);\n const data = {\n version: DEFAULT_VERSION,\n categories: {\n [category]: entry,\n },\n };\n return formatTsExport(CATEGORIES_TS_COMMENT, data);\n}\n\nexport function generateSkillRulesTs(): string {\n const data = {\n version: DEFAULT_VERSION,\n relationships: {\n conflicts: [],\n discourages: [],\n recommends: [],\n requires: [],\n alternatives: [],\n },\n };\n return formatTsExport(RULES_TS_COMMENT, data);\n}\n"],"mappings":"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","names":["CATEGORIES_TS_COMMENT"]}
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ CLI_COLORS,
4
+ UI_SYMBOLS
5
+ } from "./chunk-O5ASLZ2K.js";
6
+ import {
7
+ init_esm_shims
8
+ } from "./chunk-P56WJ5FA.js";
9
+
10
+ // src/cli/components/wizard/selection-card.tsx
11
+ init_esm_shims();
12
+ import { Box, Text } from "ink";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ var SelectionCard = ({
15
+ label,
16
+ description,
17
+ isFocused,
18
+ marginBottom
19
+ }) => {
20
+ const descriptionLines = Array.isArray(description) ? description : [description];
21
+ return /* @__PURE__ */ jsx(
22
+ Box,
23
+ {
24
+ borderStyle: "round",
25
+ borderColor: isFocused ? CLI_COLORS.PRIMARY : CLI_COLORS.NEUTRAL,
26
+ paddingX: 2,
27
+ paddingY: 1,
28
+ marginBottom,
29
+ width: "100%",
30
+ children: /* @__PURE__ */ jsxs(Box, { flexDirection: "column", gap: 1, children: [
31
+ /* @__PURE__ */ jsx(Text, { color: isFocused ? CLI_COLORS.PRIMARY : void 0, bold: isFocused, children: isFocused ? `${UI_SYMBOLS.CHEVRON} ${label}` : label }),
32
+ descriptionLines.map((line, index) => /* @__PURE__ */ jsx(Text, { dimColor: true, children: line }, index))
33
+ ] })
34
+ }
35
+ );
36
+ };
37
+
38
+ export {
39
+ SelectionCard
40
+ };
41
+ //# sourceMappingURL=chunk-QQLRX4KI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/wizard/selection-card.tsx"],"sourcesContent":["import { Box, Text } from \"ink\";\nimport React from \"react\";\nimport { CLI_COLORS, UI_SYMBOLS } from \"../../consts.js\";\n\ntype SelectionCardProps = {\n label: string;\n description: string | string[];\n isFocused: boolean;\n marginBottom?: number;\n};\n\nexport const SelectionCard: React.FC<SelectionCardProps> = ({\n label,\n description,\n isFocused,\n marginBottom,\n}) => {\n const descriptionLines = Array.isArray(description) ? description : [description];\n\n return (\n <Box\n borderStyle=\"round\"\n borderColor={isFocused ? CLI_COLORS.PRIMARY : CLI_COLORS.NEUTRAL}\n paddingX={2}\n paddingY={1}\n marginBottom={marginBottom}\n width=\"100%\"\n >\n <Box flexDirection=\"column\" gap={1}>\n <Text color={isFocused ? CLI_COLORS.PRIMARY : undefined} bold={isFocused}>\n {isFocused ? `${UI_SYMBOLS.CHEVRON} ${label}` : label}\n </Text>\n {descriptionLines.map((line, index) => (\n <Text key={index} dimColor>\n {line}\n </Text>\n ))}\n </Box>\n </Box>\n );\n};\n"],"mappings":";;;;;;;;;;AAAA;AAAA,SAAS,KAAK,YAAY;AA4BpB,SACE,KADF;AAjBC,IAAM,gBAA8C,CAAC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,mBAAmB,MAAM,QAAQ,WAAW,IAAI,cAAc,CAAC,WAAW;AAEhF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAY;AAAA,MACZ,aAAa,YAAY,WAAW,UAAU,WAAW;AAAA,MACzD,UAAU;AAAA,MACV,UAAU;AAAA,MACV;AAAA,MACA,OAAM;AAAA,MAEN,+BAAC,OAAI,eAAc,UAAS,KAAK,GAC/B;AAAA,4BAAC,QAAK,OAAO,YAAY,WAAW,UAAU,QAAW,MAAM,WAC5D,sBAAY,GAAG,WAAW,OAAO,IAAI,KAAK,KAAK,OAClD;AAAA,QACC,iBAAiB,IAAI,CAAC,MAAM,UAC3B,oBAAC,QAAiB,UAAQ,MACvB,kBADQ,KAEX,CACD;AAAA,SACH;AAAA;AAAA,EACF;AAEJ;","names":[]}