agents-inc 0.152.1 → 0.154.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.
- package/CHANGELOG.md +57 -0
- package/README.md +31 -35
- package/dist/{chunk-FVDKAVOL.js → chunk-2IMYK4WN.js} +18 -51
- package/dist/chunk-2IMYK4WN.js.map +1 -0
- package/dist/{chunk-PMM2MYMA.js → chunk-4VCWL2IG.js} +649 -357
- package/dist/chunk-4VCWL2IG.js.map +1 -0
- package/dist/{chunk-PZIZNMHK.js → chunk-5MFJ24VM.js} +237 -150
- package/dist/chunk-5MFJ24VM.js.map +1 -0
- package/dist/{chunk-KXYVJGJP.js → chunk-6CNRMCFM.js} +3 -2
- package/dist/{chunk-KXYVJGJP.js.map → chunk-6CNRMCFM.js.map} +1 -1
- package/dist/chunk-7VZV4O6B.js +40 -0
- package/dist/chunk-7VZV4O6B.js.map +1 -0
- package/dist/{chunk-SX5H6TSC.js → chunk-AKQ5QISO.js} +11 -8
- package/dist/chunk-AKQ5QISO.js.map +1 -0
- package/dist/{chunk-BNSRA6HL.js → chunk-AURY6RT6.js} +39 -176
- package/dist/chunk-AURY6RT6.js.map +1 -0
- package/dist/{chunk-LZ52XEPR.js → chunk-B66SC72V.js} +7 -6
- package/dist/chunk-B66SC72V.js.map +1 -0
- package/dist/{chunk-LASI35KT.js → chunk-BZ4CZBOM.js} +14 -28
- package/dist/chunk-BZ4CZBOM.js.map +1 -0
- package/dist/chunk-CBF4ZYV3.js +18540 -0
- package/dist/chunk-CBF4ZYV3.js.map +1 -0
- package/dist/{chunk-5GUOIJSG.js → chunk-CHNA5RVS.js} +3 -15
- package/dist/chunk-CHNA5RVS.js.map +1 -0
- package/dist/{chunk-LDP5ASDM.js → chunk-DRKSYJZ2.js} +2 -19
- package/dist/chunk-DRKSYJZ2.js.map +1 -0
- package/dist/chunk-FMYHWKGG.js +325 -0
- package/dist/chunk-FMYHWKGG.js.map +1 -0
- package/dist/{chunk-SKQWRUPX.js → chunk-GUDGCFSF.js} +59 -33
- package/dist/chunk-GUDGCFSF.js.map +1 -0
- package/dist/{chunk-WKTHWQKM.js → chunk-IPJOMAWC.js} +5070 -6305
- package/dist/chunk-IPJOMAWC.js.map +1 -0
- package/dist/chunk-IXEDSKMH.js +48 -0
- package/dist/chunk-IXEDSKMH.js.map +1 -0
- package/dist/{chunk-TUPYW2IQ.js → chunk-JC7DBPRD.js} +9 -12
- package/dist/chunk-JC7DBPRD.js.map +1 -0
- package/dist/{chunk-ZL7PFNHN.js → chunk-K3O3YQYG.js} +2 -2
- package/dist/{chunk-QRDTLVXG.js → chunk-LA3JPESW.js} +9 -22
- package/dist/chunk-LA3JPESW.js.map +1 -0
- package/dist/{chunk-MWG4VU64.js → chunk-MJFIO5SX.js} +50 -74
- package/dist/chunk-MJFIO5SX.js.map +1 -0
- package/dist/{chunk-L7SZXUBJ.js → chunk-NFH6SA62.js} +7 -6
- package/dist/{chunk-L7SZXUBJ.js.map → chunk-NFH6SA62.js.map} +1 -1
- package/dist/{chunk-GRVKW3CC.js → chunk-NKCY2ULI.js} +3 -2
- package/dist/{chunk-GRVKW3CC.js.map → chunk-NKCY2ULI.js.map} +1 -1
- package/dist/{chunk-TJJPWUMA.js → chunk-NSJ2S7R5.js} +3 -2
- package/dist/{chunk-TJJPWUMA.js.map → chunk-NSJ2S7R5.js.map} +1 -1
- package/dist/{chunk-Q2KG7UV3.js → chunk-OJJLYHM3.js} +2 -1
- package/dist/{chunk-Q2KG7UV3.js.map → chunk-OJJLYHM3.js.map} +1 -1
- package/dist/{chunk-MJ2KHG24.js → chunk-ONWEOS77.js} +6 -6
- package/dist/{chunk-MJ2KHG24.js.map → chunk-ONWEOS77.js.map} +1 -1
- package/dist/{chunk-NR3OZGL4.js → chunk-OZXAJNLA.js} +2 -1
- package/dist/{chunk-NR3OZGL4.js.map → chunk-OZXAJNLA.js.map} +1 -1
- package/dist/{chunk-QZZJFYUQ.js → chunk-PRJD5MMQ.js} +3 -3
- package/dist/chunk-PRJD5MMQ.js.map +1 -0
- package/dist/{chunk-MM7CTTAV.js → chunk-Q5FLW4JG.js} +2 -2
- package/dist/{chunk-MM7CTTAV.js.map → chunk-Q5FLW4JG.js.map} +1 -1
- package/dist/{chunk-5UWKOOIS.js → chunk-QQTYMW7N.js} +131 -209
- package/dist/chunk-QQTYMW7N.js.map +1 -0
- package/dist/{chunk-MVR3SYMN.js → chunk-QUDQTO3O.js} +4 -3
- package/dist/{chunk-MVR3SYMN.js.map → chunk-QUDQTO3O.js.map} +1 -1
- package/dist/{chunk-76ADG7LQ.js → chunk-R54KIGN2.js} +8 -22
- package/dist/chunk-R54KIGN2.js.map +1 -0
- package/dist/{chunk-XHUODHZ4.js → chunk-R7JV22QK.js} +22 -49
- package/dist/chunk-R7JV22QK.js.map +1 -0
- package/dist/{chunk-E5X6RJ4E.js → chunk-TUQF577Z.js} +56 -53
- package/dist/chunk-TUQF577Z.js.map +1 -0
- package/dist/{chunk-IHUY4M22.js → chunk-UW44KSYL.js} +4 -4
- package/dist/{chunk-DTSG5XZB.js → chunk-V3ENMW7G.js} +3 -3
- package/dist/chunk-VZRO7RYT.js +3694 -0
- package/dist/chunk-VZRO7RYT.js.map +1 -0
- package/dist/{chunk-MQ7FLIYS.js → chunk-WRRP47PY.js} +3 -2
- package/dist/{chunk-MQ7FLIYS.js.map → chunk-WRRP47PY.js.map} +1 -1
- package/dist/{chunk-RNJWAKMO.js → chunk-XGMOXMS4.js} +9 -8
- package/dist/chunk-XGMOXMS4.js.map +1 -0
- package/dist/{chunk-STMHDOZD.js → chunk-XMEIVWAS.js} +12 -9
- package/dist/chunk-XMEIVWAS.js.map +1 -0
- package/dist/{chunk-IUQBOCSU.js → chunk-ZBPEFQ4G.js} +2 -1
- package/dist/{chunk-IUQBOCSU.js.map → chunk-ZBPEFQ4G.js.map} +1 -1
- package/dist/chunk-ZU6DAR4S.js +223 -0
- package/dist/chunk-ZU6DAR4S.js.map +1 -0
- package/dist/commands/build/marketplace.js +115 -35
- package/dist/commands/build/marketplace.js.map +1 -1
- package/dist/commands/build/plugins.js +9 -10
- package/dist/commands/build/plugins.js.map +1 -1
- package/dist/commands/compile.js +135 -70
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/doctor.js +793 -64
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/edit.js +231 -236
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +24 -39
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/init.js +41 -46
- package/dist/commands/list.js +10 -12
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/search.js +35 -88
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/uninstall.js +212 -167
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +82 -332
- package/dist/commands/update.js.map +1 -1
- package/dist/components/common/confirm.js +1 -1
- package/dist/components/common/prompt-confirm.js +1 -1
- package/dist/components/common/select-list.js +2 -2
- package/dist/components/common/spinner.js +1 -1
- package/dist/components/wizard/category-grid.js +5 -6
- package/dist/components/wizard/checkbox-grid.js +5 -6
- package/dist/components/wizard/domain-selection.js +12 -13
- package/dist/components/wizard/run-wizard-session.js +30 -36
- package/dist/components/wizard/scroll-affordance.js +2 -2
- package/dist/components/wizard/skill-agent-summary.js +7 -7
- package/dist/components/wizard/source-grid.js +6 -11
- package/dist/components/wizard/stack-selection.js +9 -9
- package/dist/components/wizard/step-agents.js +12 -12
- package/dist/components/wizard/step-build.js +10 -11
- package/dist/components/wizard/step-confirm.js +11 -11
- package/dist/components/wizard/step-sources.js +11 -17
- package/dist/components/wizard/step-stack.js +10 -10
- package/dist/components/wizard/summary-panel.js +10 -10
- package/dist/components/wizard/toast.js +2 -2
- package/dist/components/wizard/wizard-layout.js +15 -16
- package/dist/components/wizard/wizard-tabs.js +6 -12
- package/dist/components/wizard/wizard.js +29 -35
- package/dist/config-exports.js +1 -1
- package/dist/copy-local-skills-WVHJFRPK.js +14 -0
- package/dist/hooks/init.js +49 -48
- package/dist/hooks/init.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/load-agent-defs-5OT54J5M.js +15 -0
- package/dist/{loader-5JP4S7CJ.js → loader-JIZDTR4G.js} +7 -5
- package/dist/recompile-project-agents-VREEPBDV.js +20 -0
- package/dist/{source-loader-MZYCPL2S.js → source-loader-OE6EJFPU.js} +6 -6
- package/dist/src/agents/developer/ai-developer/identity.md +4 -4
- package/dist/src/agents/developer/ai-developer/playbook.md +1 -1
- package/dist/src/agents/developer/api-developer/identity.md +4 -4
- package/dist/src/agents/developer/api-developer/metadata.yaml +1 -1
- package/dist/src/agents/developer/cli-developer/identity.md +4 -4
- package/dist/src/agents/developer/web-developer/identity.md +2 -2
- package/dist/src/agents/developer/web-developer/metadata.yaml +1 -1
- package/dist/src/agents/meta/agent-summoner/identity.md +4 -5
- package/dist/src/agents/meta/agent-summoner/output.md +2 -2
- package/dist/src/agents/meta/agent-summoner/playbook.md +15 -16
- package/dist/src/agents/meta/codex-keeper/identity.md +4 -4
- package/dist/src/agents/meta/codex-keeper/playbook.md +1 -1
- package/dist/src/agents/meta/convention-keeper/identity.md +1 -1
- package/dist/src/agents/meta/skill-summoner/critical-reminders.md +0 -34
- package/dist/src/agents/meta/skill-summoner/critical-requirements.md +27 -3
- package/dist/src/agents/meta/skill-summoner/identity.md +2 -2
- package/{src/agents/planning/web-pm → dist/src/agents/planning/pm}/critical-reminders.md +10 -7
- package/dist/src/agents/planning/{web-pm → pm}/critical-requirements.md +8 -4
- package/dist/src/agents/planning/pm/identity.md +47 -0
- package/dist/src/agents/planning/pm/metadata.yaml +12 -0
- package/dist/src/agents/planning/{web-pm → pm}/output.md +7 -90
- package/dist/src/agents/planning/pm/playbook.md +185 -0
- package/dist/src/agents/researcher/ai-researcher/critical-reminders.md +58 -0
- package/dist/src/agents/researcher/ai-researcher/critical-requirements.md +40 -0
- package/dist/src/agents/researcher/ai-researcher/identity.md +86 -0
- package/dist/src/agents/researcher/ai-researcher/metadata.yaml +10 -0
- package/dist/src/agents/researcher/ai-researcher/output.md +363 -0
- package/dist/src/agents/researcher/ai-researcher/playbook.md +545 -0
- package/dist/src/agents/researcher/api-researcher/critical-reminders.md +16 -0
- package/dist/src/agents/researcher/api-researcher/identity.md +7 -7
- package/dist/src/agents/researcher/cli-researcher/critical-reminders.md +50 -0
- package/dist/src/agents/researcher/cli-researcher/critical-requirements.md +36 -0
- package/dist/src/agents/researcher/cli-researcher/identity.md +87 -0
- package/dist/src/agents/researcher/cli-researcher/metadata.yaml +10 -0
- package/dist/src/agents/researcher/cli-researcher/output.md +343 -0
- package/dist/src/agents/researcher/cli-researcher/playbook.md +370 -0
- package/dist/src/agents/researcher/web-researcher/identity.md +5 -6
- package/dist/src/agents/reviewer/reviewer/critical-reminders.md +29 -0
- package/dist/src/agents/reviewer/reviewer/critical-requirements.md +31 -0
- package/dist/src/agents/reviewer/reviewer/identity.md +41 -0
- package/dist/src/agents/reviewer/reviewer/metadata.yaml +12 -0
- package/dist/src/agents/reviewer/reviewer/output.md +202 -0
- package/dist/src/agents/reviewer/reviewer/playbook.md +141 -0
- package/dist/src/agents/tester/ai-tester/critical-reminders.md +48 -0
- package/dist/src/agents/tester/ai-tester/critical-requirements.md +49 -0
- package/dist/src/agents/tester/ai-tester/identity.md +62 -0
- package/dist/src/agents/tester/ai-tester/metadata.yaml +12 -0
- package/dist/src/agents/tester/ai-tester/output.md +375 -0
- package/dist/src/agents/tester/ai-tester/playbook.md +789 -0
- package/dist/src/agents/tester/api-tester/identity.md +3 -3
- package/dist/src/agents/tester/cli-tester/critical-reminders.md +3 -3
- package/dist/src/agents/tester/cli-tester/critical-requirements.md +2 -2
- package/dist/src/agents/tester/cli-tester/identity.md +3 -3
- package/dist/src/agents/tester/cli-tester/output.md +4 -4
- package/dist/src/agents/tester/cli-tester/playbook.md +3 -3
- package/dist/src/agents/tester/web-tester/identity.md +3 -3
- package/dist/stores/wizard-store.js +8 -6
- package/package.json +13 -2
- package/src/agents/developer/ai-developer/identity.md +4 -4
- package/src/agents/developer/ai-developer/playbook.md +1 -1
- package/src/agents/developer/api-developer/identity.md +4 -4
- package/src/agents/developer/api-developer/metadata.yaml +1 -1
- package/src/agents/developer/cli-developer/identity.md +4 -4
- package/src/agents/developer/web-developer/identity.md +2 -2
- package/src/agents/developer/web-developer/metadata.yaml +1 -1
- package/src/agents/meta/agent-summoner/identity.md +4 -5
- package/src/agents/meta/agent-summoner/output.md +2 -2
- package/src/agents/meta/agent-summoner/playbook.md +15 -16
- package/src/agents/meta/codex-keeper/identity.md +4 -4
- package/src/agents/meta/codex-keeper/playbook.md +1 -1
- package/src/agents/meta/convention-keeper/identity.md +1 -1
- package/src/agents/meta/skill-summoner/critical-reminders.md +0 -34
- package/src/agents/meta/skill-summoner/critical-requirements.md +27 -3
- package/src/agents/meta/skill-summoner/identity.md +2 -2
- package/{dist/src/agents/planning/web-pm → src/agents/planning/pm}/critical-reminders.md +10 -7
- package/src/agents/planning/{web-pm → pm}/critical-requirements.md +8 -4
- package/src/agents/planning/pm/identity.md +47 -0
- package/src/agents/planning/pm/metadata.yaml +12 -0
- package/src/agents/planning/{web-pm → pm}/output.md +7 -90
- package/src/agents/planning/pm/playbook.md +185 -0
- package/src/agents/researcher/ai-researcher/critical-reminders.md +58 -0
- package/src/agents/researcher/ai-researcher/critical-requirements.md +40 -0
- package/src/agents/researcher/ai-researcher/identity.md +86 -0
- package/src/agents/researcher/ai-researcher/metadata.yaml +10 -0
- package/src/agents/researcher/ai-researcher/output.md +363 -0
- package/src/agents/researcher/ai-researcher/playbook.md +545 -0
- package/src/agents/researcher/api-researcher/critical-reminders.md +16 -0
- package/src/agents/researcher/api-researcher/identity.md +7 -7
- package/src/agents/researcher/cli-researcher/critical-reminders.md +50 -0
- package/src/agents/researcher/cli-researcher/critical-requirements.md +36 -0
- package/src/agents/researcher/cli-researcher/identity.md +87 -0
- package/src/agents/researcher/cli-researcher/metadata.yaml +10 -0
- package/src/agents/researcher/cli-researcher/output.md +343 -0
- package/src/agents/researcher/cli-researcher/playbook.md +370 -0
- package/src/agents/researcher/web-researcher/identity.md +5 -6
- package/src/agents/reviewer/reviewer/critical-reminders.md +29 -0
- package/src/agents/reviewer/reviewer/critical-requirements.md +31 -0
- package/src/agents/reviewer/reviewer/identity.md +41 -0
- package/src/agents/reviewer/reviewer/metadata.yaml +12 -0
- package/src/agents/reviewer/reviewer/output.md +202 -0
- package/src/agents/reviewer/reviewer/playbook.md +141 -0
- package/src/agents/tester/ai-tester/critical-reminders.md +48 -0
- package/src/agents/tester/ai-tester/critical-requirements.md +49 -0
- package/src/agents/tester/ai-tester/identity.md +62 -0
- package/src/agents/tester/ai-tester/metadata.yaml +12 -0
- package/src/agents/tester/ai-tester/output.md +375 -0
- package/src/agents/tester/ai-tester/playbook.md +789 -0
- package/src/agents/tester/api-tester/identity.md +3 -3
- package/src/agents/tester/cli-tester/critical-reminders.md +3 -3
- package/src/agents/tester/cli-tester/critical-requirements.md +2 -2
- package/src/agents/tester/cli-tester/identity.md +3 -3
- package/src/agents/tester/cli-tester/output.md +4 -4
- package/src/agents/tester/cli-tester/playbook.md +3 -3
- package/src/agents/tester/web-tester/identity.md +3 -3
- package/src/schemas/metadata.schema.json +31 -2
- package/src/schemas/plugin.schema.json +3 -0
- package/src/schemas/project-config.schema.json +61 -15
- package/src/schemas/project-source-config.schema.json +0 -47
- package/dist/chunk-5GUOIJSG.js.map +0 -1
- package/dist/chunk-5UWKOOIS.js.map +0 -1
- package/dist/chunk-76ADG7LQ.js.map +0 -1
- package/dist/chunk-BNSRA6HL.js.map +0 -1
- package/dist/chunk-E5X6RJ4E.js.map +0 -1
- package/dist/chunk-EEPELKOM.js +0 -5938
- package/dist/chunk-EEPELKOM.js.map +0 -1
- package/dist/chunk-F7T5AFFN.js +0 -20
- package/dist/chunk-F7T5AFFN.js.map +0 -1
- package/dist/chunk-FVDKAVOL.js.map +0 -1
- package/dist/chunk-KFB5CRXZ.js +0 -377
- package/dist/chunk-KFB5CRXZ.js.map +0 -1
- package/dist/chunk-KR65TPKC.js +0 -664
- package/dist/chunk-KR65TPKC.js.map +0 -1
- package/dist/chunk-LASI35KT.js.map +0 -1
- package/dist/chunk-LDP5ASDM.js.map +0 -1
- package/dist/chunk-LZ52XEPR.js.map +0 -1
- package/dist/chunk-M7HO7NBK.js +0 -88
- package/dist/chunk-M7HO7NBK.js.map +0 -1
- package/dist/chunk-MWG4VU64.js.map +0 -1
- package/dist/chunk-ODNDXQH2.js +0 -77
- package/dist/chunk-ODNDXQH2.js.map +0 -1
- package/dist/chunk-P44SXVH3.js +0 -80
- package/dist/chunk-P44SXVH3.js.map +0 -1
- package/dist/chunk-PMM2MYMA.js.map +0 -1
- package/dist/chunk-PZIZNMHK.js.map +0 -1
- package/dist/chunk-Q45ZU6HD.js +0 -37
- package/dist/chunk-Q45ZU6HD.js.map +0 -1
- package/dist/chunk-QRDTLVXG.js.map +0 -1
- package/dist/chunk-QZZJFYUQ.js.map +0 -1
- package/dist/chunk-R5NOI2LP.js +0 -170
- package/dist/chunk-R5NOI2LP.js.map +0 -1
- package/dist/chunk-RNJWAKMO.js.map +0 -1
- package/dist/chunk-SBHBBZKF.js +0 -284
- package/dist/chunk-SBHBBZKF.js.map +0 -1
- package/dist/chunk-SKQWRUPX.js.map +0 -1
- package/dist/chunk-STMHDOZD.js.map +0 -1
- package/dist/chunk-SX5H6TSC.js.map +0 -1
- package/dist/chunk-TUPYW2IQ.js.map +0 -1
- package/dist/chunk-UBEDZ4FD.js +0 -4198
- package/dist/chunk-UBEDZ4FD.js.map +0 -1
- package/dist/chunk-VY6MNOXL.js +0 -20
- package/dist/chunk-VY6MNOXL.js.map +0 -1
- package/dist/chunk-WBCPLH66.js +0 -42
- package/dist/chunk-WBCPLH66.js.map +0 -1
- package/dist/chunk-WKTHWQKM.js.map +0 -1
- package/dist/chunk-XHUODHZ4.js.map +0 -1
- package/dist/chunk-ZPPHXXAP.js +0 -252
- package/dist/chunk-ZPPHXXAP.js.map +0 -1
- package/dist/commands/import/skill.js +0 -344
- package/dist/commands/import/skill.js.map +0 -1
- package/dist/commands/new/agent.js +0 -300
- package/dist/commands/new/agent.js.map +0 -1
- package/dist/commands/new/marketplace.js +0 -310
- package/dist/commands/new/marketplace.js.map +0 -1
- package/dist/commands/new/skill.js +0 -26
- package/dist/commands/validate.js +0 -575
- package/dist/commands/validate.js.map +0 -1
- package/dist/components/wizard/search-modal.js +0 -13
- package/dist/components/wizard/selection-card.js +0 -9
- package/dist/components/wizard/step-settings.js +0 -18
- package/dist/copy-local-skills-6EMVN7RB.js +0 -14
- package/dist/load-agent-defs-BWOUVEAR.js +0 -15
- package/dist/load-agent-defs-BWOUVEAR.js.map +0 -1
- package/dist/loader-5JP4S7CJ.js.map +0 -1
- package/dist/recompile-project-agents-6DL45TDI.js +0 -19
- package/dist/recompile-project-agents-6DL45TDI.js.map +0 -1
- package/dist/source-loader-MZYCPL2S.js.map +0 -1
- package/dist/src/agents/developer/web-architecture/critical-reminders.md +0 -48
- package/dist/src/agents/developer/web-architecture/critical-requirements.md +0 -65
- package/dist/src/agents/developer/web-architecture/identity.md +0 -64
- package/dist/src/agents/developer/web-architecture/metadata.yaml +0 -12
- package/dist/src/agents/developer/web-architecture/output.md +0 -449
- package/dist/src/agents/developer/web-architecture/playbook.md +0 -481
- package/dist/src/agents/pattern/pattern-scout/critical-reminders.md +0 -71
- package/dist/src/agents/pattern/pattern-scout/critical-requirements.md +0 -31
- package/dist/src/agents/pattern/pattern-scout/identity.md +0 -25
- package/dist/src/agents/pattern/pattern-scout/metadata.yaml +0 -10
- package/dist/src/agents/pattern/pattern-scout/output.md +0 -290
- package/dist/src/agents/pattern/pattern-scout/playbook.md +0 -1806
- package/dist/src/agents/pattern/web-pattern-critique/critical-reminders.md +0 -30
- package/dist/src/agents/pattern/web-pattern-critique/critical-requirements.md +0 -28
- package/dist/src/agents/pattern/web-pattern-critique/identity.md +0 -41
- package/dist/src/agents/pattern/web-pattern-critique/metadata.yaml +0 -12
- package/dist/src/agents/pattern/web-pattern-critique/output.md +0 -314
- package/dist/src/agents/pattern/web-pattern-critique/playbook.md +0 -572
- package/dist/src/agents/planning/api-pm/critical-reminders.md +0 -48
- package/dist/src/agents/planning/api-pm/critical-requirements.md +0 -41
- package/dist/src/agents/planning/api-pm/identity.md +0 -39
- package/dist/src/agents/planning/api-pm/metadata.yaml +0 -12
- package/dist/src/agents/planning/api-pm/output.md +0 -475
- package/dist/src/agents/planning/api-pm/playbook.md +0 -129
- package/dist/src/agents/planning/web-pm/identity.md +0 -26
- package/dist/src/agents/planning/web-pm/metadata.yaml +0 -12
- package/dist/src/agents/planning/web-pm/playbook.md +0 -318
- package/dist/src/agents/reviewer/ai-reviewer/critical-reminders.md +0 -40
- package/dist/src/agents/reviewer/ai-reviewer/critical-requirements.md +0 -37
- package/dist/src/agents/reviewer/ai-reviewer/identity.md +0 -51
- package/dist/src/agents/reviewer/ai-reviewer/metadata.yaml +0 -10
- package/dist/src/agents/reviewer/ai-reviewer/output.md +0 -395
- package/dist/src/agents/reviewer/ai-reviewer/playbook.md +0 -90
- package/dist/src/agents/reviewer/api-reviewer/critical-reminders.md +0 -31
- package/dist/src/agents/reviewer/api-reviewer/critical-requirements.md +0 -27
- package/dist/src/agents/reviewer/api-reviewer/identity.md +0 -51
- package/dist/src/agents/reviewer/api-reviewer/metadata.yaml +0 -12
- package/dist/src/agents/reviewer/api-reviewer/output.md +0 -343
- package/dist/src/agents/reviewer/api-reviewer/playbook.md +0 -288
- package/dist/src/agents/reviewer/cli-reviewer/critical-reminders.md +0 -33
- package/dist/src/agents/reviewer/cli-reviewer/critical-requirements.md +0 -30
- package/dist/src/agents/reviewer/cli-reviewer/identity.md +0 -44
- package/dist/src/agents/reviewer/cli-reviewer/metadata.yaml +0 -12
- package/dist/src/agents/reviewer/cli-reviewer/output.md +0 -414
- package/dist/src/agents/reviewer/cli-reviewer/playbook.md +0 -218
- package/dist/src/agents/reviewer/infra-reviewer/critical-reminders.md +0 -38
- package/dist/src/agents/reviewer/infra-reviewer/critical-requirements.md +0 -38
- package/dist/src/agents/reviewer/infra-reviewer/identity.md +0 -53
- package/dist/src/agents/reviewer/infra-reviewer/metadata.yaml +0 -10
- package/dist/src/agents/reviewer/infra-reviewer/output.md +0 -364
- package/dist/src/agents/reviewer/infra-reviewer/playbook.md +0 -161
- package/dist/src/agents/reviewer/web-reviewer/critical-reminders.md +0 -31
- package/dist/src/agents/reviewer/web-reviewer/critical-requirements.md +0 -26
- package/dist/src/agents/reviewer/web-reviewer/identity.md +0 -40
- package/dist/src/agents/reviewer/web-reviewer/metadata.yaml +0 -12
- package/dist/src/agents/reviewer/web-reviewer/output.md +0 -333
- package/dist/src/agents/reviewer/web-reviewer/playbook.md +0 -156
- package/src/agents/developer/web-architecture/critical-reminders.md +0 -48
- package/src/agents/developer/web-architecture/critical-requirements.md +0 -65
- package/src/agents/developer/web-architecture/identity.md +0 -64
- package/src/agents/developer/web-architecture/metadata.yaml +0 -12
- package/src/agents/developer/web-architecture/output.md +0 -449
- package/src/agents/developer/web-architecture/playbook.md +0 -481
- package/src/agents/pattern/pattern-scout/critical-reminders.md +0 -71
- package/src/agents/pattern/pattern-scout/critical-requirements.md +0 -31
- package/src/agents/pattern/pattern-scout/identity.md +0 -25
- package/src/agents/pattern/pattern-scout/metadata.yaml +0 -10
- package/src/agents/pattern/pattern-scout/output.md +0 -290
- package/src/agents/pattern/pattern-scout/playbook.md +0 -1806
- package/src/agents/pattern/web-pattern-critique/critical-reminders.md +0 -30
- package/src/agents/pattern/web-pattern-critique/critical-requirements.md +0 -28
- package/src/agents/pattern/web-pattern-critique/identity.md +0 -41
- package/src/agents/pattern/web-pattern-critique/metadata.yaml +0 -12
- package/src/agents/pattern/web-pattern-critique/output.md +0 -314
- package/src/agents/pattern/web-pattern-critique/playbook.md +0 -572
- package/src/agents/planning/api-pm/critical-reminders.md +0 -48
- package/src/agents/planning/api-pm/critical-requirements.md +0 -41
- package/src/agents/planning/api-pm/identity.md +0 -39
- package/src/agents/planning/api-pm/metadata.yaml +0 -12
- package/src/agents/planning/api-pm/output.md +0 -475
- package/src/agents/planning/api-pm/playbook.md +0 -129
- package/src/agents/planning/web-pm/identity.md +0 -26
- package/src/agents/planning/web-pm/metadata.yaml +0 -12
- package/src/agents/planning/web-pm/playbook.md +0 -318
- package/src/agents/reviewer/ai-reviewer/critical-reminders.md +0 -40
- package/src/agents/reviewer/ai-reviewer/critical-requirements.md +0 -37
- package/src/agents/reviewer/ai-reviewer/identity.md +0 -51
- package/src/agents/reviewer/ai-reviewer/metadata.yaml +0 -10
- package/src/agents/reviewer/ai-reviewer/output.md +0 -395
- package/src/agents/reviewer/ai-reviewer/playbook.md +0 -90
- package/src/agents/reviewer/api-reviewer/critical-reminders.md +0 -31
- package/src/agents/reviewer/api-reviewer/critical-requirements.md +0 -27
- package/src/agents/reviewer/api-reviewer/identity.md +0 -51
- package/src/agents/reviewer/api-reviewer/metadata.yaml +0 -12
- package/src/agents/reviewer/api-reviewer/output.md +0 -343
- package/src/agents/reviewer/api-reviewer/playbook.md +0 -288
- package/src/agents/reviewer/cli-reviewer/critical-reminders.md +0 -33
- package/src/agents/reviewer/cli-reviewer/critical-requirements.md +0 -30
- package/src/agents/reviewer/cli-reviewer/identity.md +0 -44
- package/src/agents/reviewer/cli-reviewer/metadata.yaml +0 -12
- package/src/agents/reviewer/cli-reviewer/output.md +0 -414
- package/src/agents/reviewer/cli-reviewer/playbook.md +0 -218
- package/src/agents/reviewer/infra-reviewer/critical-reminders.md +0 -38
- package/src/agents/reviewer/infra-reviewer/critical-requirements.md +0 -38
- package/src/agents/reviewer/infra-reviewer/identity.md +0 -53
- package/src/agents/reviewer/infra-reviewer/metadata.yaml +0 -10
- package/src/agents/reviewer/infra-reviewer/output.md +0 -364
- package/src/agents/reviewer/infra-reviewer/playbook.md +0 -161
- package/src/agents/reviewer/web-reviewer/critical-reminders.md +0 -31
- package/src/agents/reviewer/web-reviewer/critical-requirements.md +0 -26
- package/src/agents/reviewer/web-reviewer/identity.md +0 -40
- package/src/agents/reviewer/web-reviewer/metadata.yaml +0 -12
- package/src/agents/reviewer/web-reviewer/output.md +0 -333
- package/src/agents/reviewer/web-reviewer/playbook.md +0 -156
- /package/dist/{chunk-ZL7PFNHN.js.map → chunk-K3O3YQYG.js.map} +0 -0
- /package/dist/{chunk-IHUY4M22.js.map → chunk-UW44KSYL.js.map} +0 -0
- /package/dist/{chunk-DTSG5XZB.js.map → chunk-V3ENMW7G.js.map} +0 -0
- /package/dist/{commands/new/skill.js.map → copy-local-skills-WVHJFRPK.js.map} +0 -0
- /package/dist/{components/wizard/search-modal.js.map → load-agent-defs-5OT54J5M.js.map} +0 -0
- /package/dist/{components/wizard/selection-card.js.map → loader-JIZDTR4G.js.map} +0 -0
- /package/dist/{components/wizard/step-settings.js.map → recompile-project-agents-VREEPBDV.js.map} +0 -0
- /package/dist/{copy-local-skills-6EMVN7RB.js.map → source-loader-OE6EJFPU.js.map} +0 -0
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
PROJECT_ROOT,
|
|
12
12
|
STANDARD_DIRS,
|
|
13
13
|
STANDARD_FILES
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-R54KIGN2.js";
|
|
15
15
|
|
|
16
16
|
// src/cli/lib/loading/loader.ts
|
|
17
17
|
import { parse as parseYaml2 } from "yaml";
|
|
@@ -129,6 +129,20 @@ async function ensureDir(dirPath) {
|
|
|
129
129
|
async function remove(filePath) {
|
|
130
130
|
await fs.remove(filePath);
|
|
131
131
|
}
|
|
132
|
+
async function isDirectoryEmpty(dirPath) {
|
|
133
|
+
try {
|
|
134
|
+
const entries = await fs.readdir(dirPath);
|
|
135
|
+
return entries.length === 0;
|
|
136
|
+
} catch {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
async function removeDirIfEmpty(dir) {
|
|
141
|
+
if (!await directoryExists(dir)) return false;
|
|
142
|
+
if (!await isDirectoryEmpty(dir)) return false;
|
|
143
|
+
await remove(dir);
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
132
146
|
async function copy(src, dest) {
|
|
133
147
|
await fs.copy(src, dest);
|
|
134
148
|
}
|
|
@@ -173,10 +187,11 @@ function warn(msg, options) {
|
|
|
173
187
|
}
|
|
174
188
|
|
|
175
189
|
// src/cli/lib/schemas.ts
|
|
176
|
-
import { z } from "zod";
|
|
190
|
+
import { z as z2 } from "zod";
|
|
177
191
|
import { partition } from "remeda";
|
|
178
192
|
|
|
179
193
|
// src/cli/lib/schema-validator.ts
|
|
194
|
+
import "zod";
|
|
180
195
|
function formatZodIssue(issue) {
|
|
181
196
|
const path3 = issue.path.join(".");
|
|
182
197
|
if (issue.code === "unrecognized_keys") {
|
|
@@ -190,10 +205,14 @@ function formatZodErrors(error) {
|
|
|
190
205
|
|
|
191
206
|
// src/cli/types/generated/source-types.ts
|
|
192
207
|
var SKILL_SLUGS = [
|
|
208
|
+
"ai-planning",
|
|
209
|
+
"ai-reviewing",
|
|
193
210
|
"angular-standalone",
|
|
194
211
|
"ant-design",
|
|
195
212
|
"anthropic-sdk",
|
|
196
213
|
"api-performance",
|
|
214
|
+
"api-planning",
|
|
215
|
+
"api-reviewing",
|
|
197
216
|
"apollo-server",
|
|
198
217
|
"app-links",
|
|
199
218
|
"appwrite",
|
|
@@ -201,6 +220,7 @@ var SKILL_SLUGS = [
|
|
|
201
220
|
"auth-security",
|
|
202
221
|
"aws-sdk",
|
|
203
222
|
"axiom-pino-sentry",
|
|
223
|
+
"base-ui",
|
|
204
224
|
"better-auth-drizzle-hono",
|
|
205
225
|
"biome",
|
|
206
226
|
"ble-nfc",
|
|
@@ -212,15 +232,19 @@ var SKILL_SLUGS = [
|
|
|
212
232
|
"claude-vision",
|
|
213
233
|
"clerk",
|
|
214
234
|
"cli-commander",
|
|
235
|
+
"cli-planning",
|
|
215
236
|
"cli-reviewing",
|
|
216
237
|
"cloudflare-workers",
|
|
217
238
|
"cockroachdb",
|
|
218
239
|
"cohere-sdk",
|
|
240
|
+
"component-library",
|
|
241
|
+
"composable-components",
|
|
219
242
|
"css-animations",
|
|
220
243
|
"cva",
|
|
221
244
|
"cypress-e2e",
|
|
222
245
|
"d3",
|
|
223
246
|
"date-fns",
|
|
247
|
+
"design-tokens",
|
|
224
248
|
"detox",
|
|
225
249
|
"dnd-kit",
|
|
226
250
|
"docker",
|
|
@@ -260,6 +284,7 @@ var SKILL_SLUGS = [
|
|
|
260
284
|
"hono",
|
|
261
285
|
"huggingface-inference",
|
|
262
286
|
"image-handling",
|
|
287
|
+
"infra-reviewing",
|
|
263
288
|
"jotai",
|
|
264
289
|
"knex",
|
|
265
290
|
"kubernetes",
|
|
@@ -354,6 +379,7 @@ var SKILL_SLUGS = [
|
|
|
354
379
|
"sqlite-powersync",
|
|
355
380
|
"sse",
|
|
356
381
|
"sst",
|
|
382
|
+
"stack-detect",
|
|
357
383
|
"storybook",
|
|
358
384
|
"strapi",
|
|
359
385
|
"strategies",
|
|
@@ -377,6 +403,7 @@ var SKILL_SLUGS = [
|
|
|
377
403
|
"tauri-plugins",
|
|
378
404
|
"tauri-security",
|
|
379
405
|
"terraform",
|
|
406
|
+
"theming",
|
|
380
407
|
"tiptap",
|
|
381
408
|
"together-ai",
|
|
382
409
|
"tool-use-patterns",
|
|
@@ -395,6 +422,7 @@ var SKILL_SLUGS = [
|
|
|
395
422
|
"vercel-postgres",
|
|
396
423
|
"view-transitions",
|
|
397
424
|
"vision-camera",
|
|
425
|
+
"visual-regression",
|
|
398
426
|
"vite",
|
|
399
427
|
"vitepress",
|
|
400
428
|
"vitest",
|
|
@@ -407,12 +435,255 @@ var SKILL_SLUGS = [
|
|
|
407
435
|
"weaviate",
|
|
408
436
|
"web-accessibility",
|
|
409
437
|
"web-performance",
|
|
438
|
+
"web-planning",
|
|
439
|
+
"web-reviewing",
|
|
410
440
|
"webhooks",
|
|
411
441
|
"websockets",
|
|
442
|
+
"xquik",
|
|
412
443
|
"yoga",
|
|
413
444
|
"zod-validation",
|
|
414
445
|
"zustand"
|
|
415
446
|
];
|
|
447
|
+
var SKILL_IDS = [
|
|
448
|
+
"ai-infrastructure-huggingface-inference",
|
|
449
|
+
"ai-infrastructure-litellm",
|
|
450
|
+
"ai-infrastructure-modal",
|
|
451
|
+
"ai-infrastructure-ollama",
|
|
452
|
+
"ai-infrastructure-replicate",
|
|
453
|
+
"ai-infrastructure-together-ai",
|
|
454
|
+
"ai-observability-langfuse",
|
|
455
|
+
"ai-observability-promptfoo",
|
|
456
|
+
"ai-orchestration-langchain",
|
|
457
|
+
"ai-orchestration-llamaindex",
|
|
458
|
+
"ai-orchestration-vercel-ai-sdk",
|
|
459
|
+
"ai-patterns-tool-use-patterns",
|
|
460
|
+
"ai-provider-anthropic-sdk",
|
|
461
|
+
"ai-provider-claude-vision",
|
|
462
|
+
"ai-provider-cohere-sdk",
|
|
463
|
+
"ai-provider-elevenlabs",
|
|
464
|
+
"ai-provider-google-gemini-sdk",
|
|
465
|
+
"ai-provider-mistral-sdk",
|
|
466
|
+
"ai-provider-openai-sdk",
|
|
467
|
+
"ai-provider-openai-whisper",
|
|
468
|
+
"api-analytics-posthog-analytics",
|
|
469
|
+
"api-analytics-setup-posthog",
|
|
470
|
+
"api-auth-better-auth-drizzle-hono",
|
|
471
|
+
"api-auth-clerk",
|
|
472
|
+
"api-auth-nextauth",
|
|
473
|
+
"api-baas-appwrite",
|
|
474
|
+
"api-baas-firebase",
|
|
475
|
+
"api-baas-neon",
|
|
476
|
+
"api-baas-planetscale",
|
|
477
|
+
"api-baas-supabase",
|
|
478
|
+
"api-baas-turso",
|
|
479
|
+
"api-caching-strategies",
|
|
480
|
+
"api-cms-payload",
|
|
481
|
+
"api-cms-sanity",
|
|
482
|
+
"api-cms-strapi",
|
|
483
|
+
"api-commerce-stripe",
|
|
484
|
+
"api-database-cockroachdb",
|
|
485
|
+
"api-database-drizzle",
|
|
486
|
+
"api-database-edgedb",
|
|
487
|
+
"api-database-knex",
|
|
488
|
+
"api-database-mongodb",
|
|
489
|
+
"api-database-mongoose",
|
|
490
|
+
"api-database-mysql",
|
|
491
|
+
"api-database-postgresql",
|
|
492
|
+
"api-database-prisma",
|
|
493
|
+
"api-database-redis",
|
|
494
|
+
"api-database-sequelize",
|
|
495
|
+
"api-database-surrealdb",
|
|
496
|
+
"api-database-typeorm",
|
|
497
|
+
"api-database-upstash",
|
|
498
|
+
"api-database-vercel-kv",
|
|
499
|
+
"api-database-vercel-postgres",
|
|
500
|
+
"api-email-resend-react-email",
|
|
501
|
+
"api-email-setup-resend",
|
|
502
|
+
"api-flags-posthog-flags",
|
|
503
|
+
"api-framework-elysia",
|
|
504
|
+
"api-framework-express",
|
|
505
|
+
"api-framework-fastify",
|
|
506
|
+
"api-framework-hono",
|
|
507
|
+
"api-framework-nestjs",
|
|
508
|
+
"api-graphql-apollo-server",
|
|
509
|
+
"api-graphql-mercurius",
|
|
510
|
+
"api-graphql-yoga",
|
|
511
|
+
"api-messaging-webhooks",
|
|
512
|
+
"api-observability-axiom-pino-sentry",
|
|
513
|
+
"api-observability-setup-axiom-pino-sentry",
|
|
514
|
+
"api-performance-api-performance",
|
|
515
|
+
"api-queue-bullmq",
|
|
516
|
+
"api-search-elasticsearch",
|
|
517
|
+
"api-search-meilisearch",
|
|
518
|
+
"api-search-xquik",
|
|
519
|
+
"api-specs-openapi",
|
|
520
|
+
"api-vector-db-chroma",
|
|
521
|
+
"api-vector-db-pinecone",
|
|
522
|
+
"api-vector-db-qdrant",
|
|
523
|
+
"api-vector-db-weaviate",
|
|
524
|
+
"cli-framework-cli-commander",
|
|
525
|
+
"cli-framework-oclif-ink",
|
|
526
|
+
"cli-prompts-clack",
|
|
527
|
+
"desktop-backend-tauri",
|
|
528
|
+
"desktop-framework-electron",
|
|
529
|
+
"desktop-framework-tauri",
|
|
530
|
+
"desktop-ipc-electron",
|
|
531
|
+
"desktop-mobile-tauri",
|
|
532
|
+
"desktop-multiwindow-electron",
|
|
533
|
+
"desktop-multiwindow-tauri",
|
|
534
|
+
"desktop-packaging-electron-forge",
|
|
535
|
+
"desktop-packaging-tauri",
|
|
536
|
+
"desktop-plugins-tauri",
|
|
537
|
+
"desktop-security-electron",
|
|
538
|
+
"desktop-security-tauri",
|
|
539
|
+
"desktop-storage-electron",
|
|
540
|
+
"desktop-testing-electron",
|
|
541
|
+
"desktop-ui-electron",
|
|
542
|
+
"desktop-updates-electron-updater",
|
|
543
|
+
"infra-ci-cd-docker",
|
|
544
|
+
"infra-ci-cd-github-actions",
|
|
545
|
+
"infra-ci-cd-turborepo-ci",
|
|
546
|
+
"infra-config-setup-env",
|
|
547
|
+
"infra-containers-kubernetes",
|
|
548
|
+
"infra-iac-pulumi",
|
|
549
|
+
"infra-iac-sst",
|
|
550
|
+
"infra-iac-terraform",
|
|
551
|
+
"infra-platform-aws-sdk",
|
|
552
|
+
"infra-platform-cloudflare-workers",
|
|
553
|
+
"infra-platform-netlify",
|
|
554
|
+
"infra-platform-vercel",
|
|
555
|
+
"meta-config-stack-detect",
|
|
556
|
+
"meta-design-composable-components",
|
|
557
|
+
"meta-design-expressive-typescript",
|
|
558
|
+
"meta-methodology-research-methodology",
|
|
559
|
+
"meta-planning-ai-planning",
|
|
560
|
+
"meta-planning-api-planning",
|
|
561
|
+
"meta-planning-cli-planning",
|
|
562
|
+
"meta-planning-web-planning",
|
|
563
|
+
"meta-reviewing-ai-reviewing",
|
|
564
|
+
"meta-reviewing-api-reviewing",
|
|
565
|
+
"meta-reviewing-cli-reviewing",
|
|
566
|
+
"meta-reviewing-infra-reviewing",
|
|
567
|
+
"meta-reviewing-reviewing",
|
|
568
|
+
"meta-reviewing-web-reviewing",
|
|
569
|
+
"mobile-animation-gesture-handler",
|
|
570
|
+
"mobile-animation-reanimated",
|
|
571
|
+
"mobile-animation-skia",
|
|
572
|
+
"mobile-background-tasks",
|
|
573
|
+
"mobile-camera-vision-camera",
|
|
574
|
+
"mobile-deep-linking-app-links",
|
|
575
|
+
"mobile-deployment-eas",
|
|
576
|
+
"mobile-framework-expo",
|
|
577
|
+
"mobile-framework-react-native",
|
|
578
|
+
"mobile-hardware-ble-nfc",
|
|
579
|
+
"mobile-navigation-expo-router",
|
|
580
|
+
"mobile-navigation-react-navigation",
|
|
581
|
+
"mobile-notifications-push",
|
|
582
|
+
"mobile-performance-react-native",
|
|
583
|
+
"mobile-security-react-native",
|
|
584
|
+
"mobile-storage-mmkv",
|
|
585
|
+
"mobile-storage-sqlite-powersync",
|
|
586
|
+
"mobile-storage-watermelondb",
|
|
587
|
+
"mobile-styling-nativewind",
|
|
588
|
+
"mobile-styling-unistyles",
|
|
589
|
+
"mobile-testing-detox",
|
|
590
|
+
"mobile-testing-maestro",
|
|
591
|
+
"mobile-ui-components-react-native-paper",
|
|
592
|
+
"mobile-ui-components-tamagui",
|
|
593
|
+
"shared-monorepo-nx",
|
|
594
|
+
"shared-monorepo-pnpm-workspaces",
|
|
595
|
+
"shared-monorepo-turborepo",
|
|
596
|
+
"shared-security-auth-security",
|
|
597
|
+
"shared-tooling-biome",
|
|
598
|
+
"shared-tooling-changesets",
|
|
599
|
+
"shared-tooling-eslint-prettier",
|
|
600
|
+
"shared-tooling-git-hooks",
|
|
601
|
+
"shared-tooling-typescript-config",
|
|
602
|
+
"web-3d-react-three-fiber",
|
|
603
|
+
"web-accessibility-web-accessibility",
|
|
604
|
+
"web-animation-css-animations",
|
|
605
|
+
"web-animation-framer-motion",
|
|
606
|
+
"web-animation-view-transitions",
|
|
607
|
+
"web-data-fetching-graphql-apollo",
|
|
608
|
+
"web-data-fetching-graphql-urql",
|
|
609
|
+
"web-data-fetching-swr",
|
|
610
|
+
"web-data-fetching-trpc",
|
|
611
|
+
"web-dataviz-d3",
|
|
612
|
+
"web-dataviz-recharts",
|
|
613
|
+
"web-dnd-dnd-kit",
|
|
614
|
+
"web-editor-lexical",
|
|
615
|
+
"web-editor-tiptap",
|
|
616
|
+
"web-error-handling-error-boundaries",
|
|
617
|
+
"web-error-handling-result-types",
|
|
618
|
+
"web-files-file-upload-patterns",
|
|
619
|
+
"web-files-image-handling",
|
|
620
|
+
"web-forms-react-hook-form",
|
|
621
|
+
"web-forms-tanstack-form",
|
|
622
|
+
"web-forms-vee-validate",
|
|
623
|
+
"web-forms-zod-validation",
|
|
624
|
+
"web-framework-angular-standalone",
|
|
625
|
+
"web-framework-react",
|
|
626
|
+
"web-framework-solidjs",
|
|
627
|
+
"web-framework-svelte",
|
|
628
|
+
"web-framework-vue-composition-api",
|
|
629
|
+
"web-i18n-next-intl",
|
|
630
|
+
"web-i18n-react-intl",
|
|
631
|
+
"web-i18n-vue-i18n",
|
|
632
|
+
"web-maps-leaflet",
|
|
633
|
+
"web-maps-mapbox",
|
|
634
|
+
"web-meta-framework-astro",
|
|
635
|
+
"web-meta-framework-docusaurus",
|
|
636
|
+
"web-meta-framework-nextjs",
|
|
637
|
+
"web-meta-framework-nuxt",
|
|
638
|
+
"web-meta-framework-qwik",
|
|
639
|
+
"web-meta-framework-remix",
|
|
640
|
+
"web-meta-framework-sveltekit",
|
|
641
|
+
"web-meta-framework-vitepress",
|
|
642
|
+
"web-mocks-msw",
|
|
643
|
+
"web-performance-web-performance",
|
|
644
|
+
"web-pwa-offline-first",
|
|
645
|
+
"web-pwa-service-workers",
|
|
646
|
+
"web-realtime-socket-io",
|
|
647
|
+
"web-realtime-sse",
|
|
648
|
+
"web-realtime-websockets",
|
|
649
|
+
"web-routing-react-router",
|
|
650
|
+
"web-routing-tanstack-router",
|
|
651
|
+
"web-server-state-react-query",
|
|
652
|
+
"web-state-jotai",
|
|
653
|
+
"web-state-mobx",
|
|
654
|
+
"web-state-ngrx-signalstore",
|
|
655
|
+
"web-state-pinia",
|
|
656
|
+
"web-state-redux-toolkit",
|
|
657
|
+
"web-state-zustand",
|
|
658
|
+
"web-styling-cva",
|
|
659
|
+
"web-styling-design-tokens",
|
|
660
|
+
"web-styling-scss-modules",
|
|
661
|
+
"web-styling-tailwind",
|
|
662
|
+
"web-styling-theming",
|
|
663
|
+
"web-testing-cypress-e2e",
|
|
664
|
+
"web-testing-playwright-e2e",
|
|
665
|
+
"web-testing-react-testing-library",
|
|
666
|
+
"web-testing-visual-regression",
|
|
667
|
+
"web-testing-vitest",
|
|
668
|
+
"web-testing-vue-test-utils",
|
|
669
|
+
"web-tooling-component-library",
|
|
670
|
+
"web-tooling-storybook",
|
|
671
|
+
"web-tooling-vite",
|
|
672
|
+
"web-ui-ant-design",
|
|
673
|
+
"web-ui-base-ui",
|
|
674
|
+
"web-ui-chakra-ui",
|
|
675
|
+
"web-ui-headless-ui",
|
|
676
|
+
"web-ui-mantine",
|
|
677
|
+
"web-ui-mui",
|
|
678
|
+
"web-ui-radix-ui",
|
|
679
|
+
"web-ui-shadcn-ui",
|
|
680
|
+
"web-ui-tanstack-table",
|
|
681
|
+
"web-ui-vuetify",
|
|
682
|
+
"web-utilities-date-fns",
|
|
683
|
+
"web-utilities-native-js",
|
|
684
|
+
"web-utilities-rxjs",
|
|
685
|
+
"web-utilities-vueuse"
|
|
686
|
+
];
|
|
416
687
|
var CATEGORIES = [
|
|
417
688
|
"ai-infrastructure",
|
|
418
689
|
"ai-observability",
|
|
@@ -426,16 +697,19 @@ var CATEGORIES = [
|
|
|
426
697
|
"api-caching",
|
|
427
698
|
"api-cms",
|
|
428
699
|
"api-commerce",
|
|
429
|
-
"api-
|
|
700
|
+
"api-db-host",
|
|
701
|
+
"api-document",
|
|
430
702
|
"api-email",
|
|
431
|
-
"api-framework",
|
|
432
703
|
"api-graphql",
|
|
704
|
+
"api-kv",
|
|
433
705
|
"api-messaging",
|
|
434
706
|
"api-observability",
|
|
707
|
+
"api-orm",
|
|
435
708
|
"api-performance",
|
|
436
709
|
"api-queue",
|
|
437
710
|
"api-search",
|
|
438
711
|
"api-specs",
|
|
712
|
+
"api-sql-engine",
|
|
439
713
|
"api-vector-db",
|
|
440
714
|
"cli-framework",
|
|
441
715
|
"cli-prompts",
|
|
@@ -458,6 +732,7 @@ var CATEGORIES = [
|
|
|
458
732
|
"infra-platform",
|
|
459
733
|
"meta-design",
|
|
460
734
|
"meta-methodology",
|
|
735
|
+
"meta-planning",
|
|
461
736
|
"meta-reviewing",
|
|
462
737
|
"mobile-animation",
|
|
463
738
|
"mobile-background",
|
|
@@ -474,8 +749,10 @@ var CATEGORIES = [
|
|
|
474
749
|
"mobile-styling",
|
|
475
750
|
"mobile-testing",
|
|
476
751
|
"mobile-ui-components",
|
|
752
|
+
"shared-lint",
|
|
477
753
|
"shared-monorepo",
|
|
478
754
|
"shared-security",
|
|
755
|
+
"shared-task-runner",
|
|
479
756
|
"shared-tooling",
|
|
480
757
|
"web-3d",
|
|
481
758
|
"web-accessibility",
|
|
@@ -483,12 +760,16 @@ var CATEGORIES = [
|
|
|
483
760
|
"web-client-state",
|
|
484
761
|
"web-dataviz",
|
|
485
762
|
"web-dnd",
|
|
763
|
+
"web-docs",
|
|
764
|
+
"web-e2e",
|
|
486
765
|
"web-editor",
|
|
487
766
|
"web-error-handling",
|
|
488
767
|
"web-file-upload",
|
|
489
768
|
"web-files",
|
|
769
|
+
"web-form-library",
|
|
490
770
|
"web-forms",
|
|
491
771
|
"web-framework",
|
|
772
|
+
"web-graphql-client",
|
|
492
773
|
"web-i18n",
|
|
493
774
|
"web-maps",
|
|
494
775
|
"web-meta-framework",
|
|
@@ -497,11 +778,14 @@ var CATEGORIES = [
|
|
|
497
778
|
"web-pwa",
|
|
498
779
|
"web-realtime",
|
|
499
780
|
"web-routing",
|
|
781
|
+
"web-rpc",
|
|
500
782
|
"web-server-state",
|
|
783
|
+
"web-streaming",
|
|
501
784
|
"web-styling",
|
|
502
785
|
"web-testing",
|
|
503
786
|
"web-tooling",
|
|
504
787
|
"web-ui-components",
|
|
788
|
+
"web-ui-kit",
|
|
505
789
|
"web-utilities"
|
|
506
790
|
];
|
|
507
791
|
var DOMAINS = [
|
|
@@ -518,26 +802,21 @@ var DOMAINS = [
|
|
|
518
802
|
var AGENT_NAMES = [
|
|
519
803
|
"agent-summoner",
|
|
520
804
|
"ai-developer",
|
|
521
|
-
"ai-
|
|
805
|
+
"ai-researcher",
|
|
806
|
+
"ai-tester",
|
|
522
807
|
"api-developer",
|
|
523
|
-
"api-pm",
|
|
524
808
|
"api-researcher",
|
|
525
|
-
"api-reviewer",
|
|
526
809
|
"api-tester",
|
|
527
810
|
"cli-developer",
|
|
528
|
-
"cli-
|
|
811
|
+
"cli-researcher",
|
|
529
812
|
"cli-tester",
|
|
530
813
|
"codex-keeper",
|
|
531
814
|
"convention-keeper",
|
|
532
|
-
"
|
|
533
|
-
"
|
|
815
|
+
"pm",
|
|
816
|
+
"reviewer",
|
|
534
817
|
"skill-summoner",
|
|
535
|
-
"web-architecture",
|
|
536
818
|
"web-developer",
|
|
537
|
-
"web-pattern-critique",
|
|
538
|
-
"web-pm",
|
|
539
819
|
"web-researcher",
|
|
540
|
-
"web-reviewer",
|
|
541
820
|
"web-tester"
|
|
542
821
|
];
|
|
543
822
|
|
|
@@ -554,17 +833,10 @@ var PERMISSION_MODES = [
|
|
|
554
833
|
];
|
|
555
834
|
|
|
556
835
|
// src/cli/lib/schemas.ts
|
|
557
|
-
var
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
boundTo: z.string(),
|
|
562
|
-
description: z.string().optional()
|
|
563
|
-
});
|
|
564
|
-
var modelNameSchema = z.enum(MODEL_NAMES);
|
|
565
|
-
var effortLevelSchema = z.enum(EFFORT_NAMES);
|
|
566
|
-
var permissionModeSchema = z.enum(PERMISSION_MODES);
|
|
567
|
-
var skillSlugSchema = z.enum(SKILL_SLUGS);
|
|
836
|
+
var modelNameSchema = z2.enum(MODEL_NAMES);
|
|
837
|
+
var effortLevelSchema = z2.enum(EFFORT_NAMES);
|
|
838
|
+
var permissionModeSchema = z2.enum(PERMISSION_MODES);
|
|
839
|
+
var skillSlugSchema = z2.enum(SKILL_SLUGS);
|
|
568
840
|
function validateCategoryField(val, ctx) {
|
|
569
841
|
if (!val.category) return;
|
|
570
842
|
if (val.custom) {
|
|
@@ -584,7 +856,7 @@ function validateCategoryField(val, ctx) {
|
|
|
584
856
|
}
|
|
585
857
|
}
|
|
586
858
|
}
|
|
587
|
-
var categoryPathSchema =
|
|
859
|
+
var categoryPathSchema = z2.string().refine(
|
|
588
860
|
(val) => {
|
|
589
861
|
if (val === LOCAL_PSEUDO_CATEGORY) return true;
|
|
590
862
|
if (CATEGORIES.includes(val)) return true;
|
|
@@ -594,456 +866,428 @@ var categoryPathSchema = z.string().refine(
|
|
|
594
866
|
message: "Must be a valid category path (e.g., 'web-framework', 'shared-testing', or 'local')"
|
|
595
867
|
}
|
|
596
868
|
);
|
|
597
|
-
var agentHookActionSchema =
|
|
598
|
-
type:
|
|
599
|
-
command:
|
|
600
|
-
script:
|
|
601
|
-
prompt:
|
|
869
|
+
var agentHookActionSchema = z2.object({
|
|
870
|
+
type: z2.enum(["command", "script", "prompt"]),
|
|
871
|
+
command: z2.string().exactOptional(),
|
|
872
|
+
script: z2.string().exactOptional(),
|
|
873
|
+
prompt: z2.string().exactOptional()
|
|
602
874
|
});
|
|
603
|
-
var agentHookDefinitionSchema =
|
|
604
|
-
matcher:
|
|
605
|
-
hooks:
|
|
875
|
+
var agentHookDefinitionSchema = z2.object({
|
|
876
|
+
matcher: z2.string().exactOptional(),
|
|
877
|
+
hooks: z2.array(agentHookActionSchema).exactOptional()
|
|
606
878
|
});
|
|
607
|
-
var hooksRecordSchema =
|
|
608
|
-
var strictAgentHookDefinitionSchema =
|
|
609
|
-
matcher:
|
|
610
|
-
hooks:
|
|
879
|
+
var hooksRecordSchema = z2.record(z2.string(), z2.array(agentHookDefinitionSchema));
|
|
880
|
+
var strictAgentHookDefinitionSchema = z2.object({
|
|
881
|
+
matcher: z2.string().exactOptional(),
|
|
882
|
+
hooks: z2.array(agentHookActionSchema).min(1)
|
|
611
883
|
});
|
|
612
|
-
var strictHooksRecordSchema =
|
|
613
|
-
|
|
614
|
-
|
|
884
|
+
var strictHooksRecordSchema = z2.record(
|
|
885
|
+
z2.string(),
|
|
886
|
+
z2.array(strictAgentHookDefinitionSchema)
|
|
615
887
|
);
|
|
616
|
-
var skillAssignmentSchema =
|
|
617
|
-
id:
|
|
618
|
-
preloaded:
|
|
619
|
-
local:
|
|
620
|
-
path:
|
|
888
|
+
var skillAssignmentSchema = z2.object({
|
|
889
|
+
id: z2.string(),
|
|
890
|
+
preloaded: z2.boolean().exactOptional(),
|
|
891
|
+
local: z2.boolean().exactOptional(),
|
|
892
|
+
path: z2.string().exactOptional()
|
|
621
893
|
});
|
|
622
|
-
var skillFrontmatterLoaderSchema =
|
|
894
|
+
var skillFrontmatterLoaderSchema = z2.object({
|
|
623
895
|
/** Lenient (any string): local/custom skills have non-builtin IDs */
|
|
624
|
-
name:
|
|
625
|
-
description:
|
|
626
|
-
model: modelNameSchema.
|
|
896
|
+
name: z2.string(),
|
|
897
|
+
description: z2.string(),
|
|
898
|
+
model: modelNameSchema.exactOptional()
|
|
627
899
|
});
|
|
628
|
-
var skillMetadataLoaderSchema =
|
|
900
|
+
var skillMetadataLoaderSchema = z2.object({
|
|
629
901
|
// Field accepts any string; cross-field validation in superRefine enforces strict/custom rules
|
|
630
|
-
category:
|
|
631
|
-
author:
|
|
632
|
-
domain:
|
|
633
|
-
custom:
|
|
902
|
+
category: z2.string().exactOptional(),
|
|
903
|
+
author: z2.string().exactOptional(),
|
|
904
|
+
domain: z2.string(),
|
|
905
|
+
custom: z2.boolean().exactOptional()
|
|
634
906
|
}).passthrough().superRefine(validateCategoryField);
|
|
635
|
-
var matrixRawMetadataSchema =
|
|
907
|
+
var matrixRawMetadataSchema = z2.object({
|
|
636
908
|
category: categoryPathSchema,
|
|
637
|
-
author:
|
|
638
|
-
displayName:
|
|
639
|
-
slug:
|
|
640
|
-
cliDescription:
|
|
641
|
-
usageGuidance:
|
|
909
|
+
author: z2.string(),
|
|
910
|
+
displayName: z2.string().exactOptional(),
|
|
911
|
+
slug: z2.string(),
|
|
912
|
+
cliDescription: z2.string().exactOptional(),
|
|
913
|
+
usageGuidance: z2.string().exactOptional(),
|
|
642
914
|
// Boundary cast: domain is a string at the YAML parse boundary; narrowed to Domain type
|
|
643
|
-
domain:
|
|
644
|
-
custom:
|
|
915
|
+
domain: z2.string(),
|
|
916
|
+
custom: z2.boolean().exactOptional()
|
|
645
917
|
});
|
|
646
|
-
var pluginAuthorSchema =
|
|
647
|
-
name:
|
|
648
|
-
email:
|
|
918
|
+
var pluginAuthorSchema = z2.object({
|
|
919
|
+
name: z2.string().min(1),
|
|
920
|
+
email: z2.string().exactOptional()
|
|
649
921
|
});
|
|
650
|
-
var pluginManifestObjectSchema =
|
|
651
|
-
name:
|
|
652
|
-
version:
|
|
653
|
-
description:
|
|
654
|
-
author: pluginAuthorSchema.
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
922
|
+
var pluginManifestObjectSchema = z2.object({
|
|
923
|
+
name: z2.string(),
|
|
924
|
+
version: z2.string().exactOptional(),
|
|
925
|
+
description: z2.string().exactOptional(),
|
|
926
|
+
author: pluginAuthorSchema.exactOptional(),
|
|
927
|
+
/** Lenient: a plugin authored elsewhere may carry any category string or none at all */
|
|
928
|
+
category: z2.string().exactOptional(),
|
|
929
|
+
keywords: z2.array(z2.string()).exactOptional(),
|
|
930
|
+
commands: z2.union([z2.string(), z2.array(z2.string())]).exactOptional(),
|
|
931
|
+
agents: z2.union([z2.string(), z2.array(z2.string())]).exactOptional(),
|
|
932
|
+
skills: z2.union([z2.string(), z2.array(z2.string())]).exactOptional(),
|
|
933
|
+
hooks: z2.union([z2.string(), hooksRecordSchema]).exactOptional()
|
|
660
934
|
});
|
|
661
935
|
var pluginManifestSchema = pluginManifestObjectSchema;
|
|
662
936
|
var pluginManifestValidationSchema = pluginManifestObjectSchema.strict();
|
|
663
|
-
var agentYamlConfigSchema =
|
|
664
|
-
id:
|
|
665
|
-
title:
|
|
666
|
-
description:
|
|
667
|
-
model: modelNameSchema.
|
|
668
|
-
effort: effortLevelSchema.
|
|
669
|
-
tools:
|
|
670
|
-
disallowedTools:
|
|
671
|
-
permissionMode: permissionModeSchema.
|
|
672
|
-
hooks: hooksRecordSchema.
|
|
673
|
-
outputFormat:
|
|
674
|
-
domain:
|
|
675
|
-
custom:
|
|
937
|
+
var agentYamlConfigSchema = z2.object({
|
|
938
|
+
id: z2.string(),
|
|
939
|
+
title: z2.string(),
|
|
940
|
+
description: z2.string(),
|
|
941
|
+
model: modelNameSchema.exactOptional(),
|
|
942
|
+
effort: effortLevelSchema.exactOptional(),
|
|
943
|
+
tools: z2.array(z2.string()),
|
|
944
|
+
disallowedTools: z2.array(z2.string()).exactOptional(),
|
|
945
|
+
permissionMode: permissionModeSchema.exactOptional(),
|
|
946
|
+
hooks: hooksRecordSchema.exactOptional(),
|
|
947
|
+
outputFormat: z2.string().exactOptional(),
|
|
948
|
+
domain: z2.string().exactOptional(),
|
|
949
|
+
custom: z2.boolean().exactOptional()
|
|
676
950
|
});
|
|
677
|
-
var skillAssignmentElementSchema =
|
|
678
|
-
|
|
951
|
+
var skillAssignmentElementSchema = z2.union([
|
|
952
|
+
z2.string(),
|
|
679
953
|
skillAssignmentSchema
|
|
680
954
|
]);
|
|
681
|
-
var stackAgentConfigSchema =
|
|
682
|
-
|
|
683
|
-
|
|
955
|
+
var stackAgentConfigSchema = z2.record(
|
|
956
|
+
z2.string(),
|
|
957
|
+
z2.union([skillAssignmentElementSchema, z2.array(skillAssignmentElementSchema)])
|
|
684
958
|
);
|
|
685
|
-
var projectConfigLoaderSchema =
|
|
959
|
+
var projectConfigLoaderSchema = z2.object({
|
|
686
960
|
/** Project/plugin name in kebab-case */
|
|
687
|
-
name:
|
|
688
|
-
description:
|
|
961
|
+
name: z2.string().exactOptional(),
|
|
962
|
+
description: z2.string().exactOptional(),
|
|
689
963
|
/** Per-agent configuration with scope (e.g., [{ name: "web-developer", scope: "project" }]) */
|
|
690
|
-
agents:
|
|
691
|
-
|
|
692
|
-
name:
|
|
693
|
-
scope:
|
|
964
|
+
agents: z2.array(
|
|
965
|
+
z2.object({
|
|
966
|
+
name: z2.string(),
|
|
967
|
+
scope: z2.enum(["project", "global"]),
|
|
694
968
|
/** Per-agent overrides of the agent's own metadata defaults */
|
|
695
|
-
model: modelNameSchema.
|
|
696
|
-
effort: effortLevelSchema.
|
|
697
|
-
excluded:
|
|
969
|
+
model: modelNameSchema.exactOptional(),
|
|
970
|
+
effort: effortLevelSchema.exactOptional(),
|
|
971
|
+
excluded: z2.boolean().exactOptional()
|
|
698
972
|
})
|
|
699
|
-
).
|
|
973
|
+
).exactOptional(),
|
|
700
974
|
/** Per-skill configuration with scope and source */
|
|
701
|
-
skills:
|
|
702
|
-
|
|
703
|
-
id:
|
|
704
|
-
scope:
|
|
705
|
-
source:
|
|
706
|
-
excluded:
|
|
975
|
+
skills: z2.array(
|
|
976
|
+
z2.object({
|
|
977
|
+
id: z2.string(),
|
|
978
|
+
scope: z2.enum(["project", "global"]),
|
|
979
|
+
source: z2.string(),
|
|
980
|
+
excluded: z2.boolean().exactOptional()
|
|
707
981
|
})
|
|
708
|
-
).
|
|
982
|
+
).exactOptional(),
|
|
709
983
|
/** Author handle (e.g., "@vince") */
|
|
710
|
-
author:
|
|
984
|
+
author: z2.string().exactOptional(),
|
|
711
985
|
/** Selected domains from the wizard (persisted for edit mode restoration) */
|
|
712
|
-
|
|
713
|
-
/** Selected agents from the wizard (persisted for edit mode restoration) */
|
|
714
|
-
selectedAgents: z.array(z.string()).optional(),
|
|
986
|
+
selectedDomains: z2.array(z2.string()).exactOptional(),
|
|
715
987
|
/** Agent-to-category-to-skill mappings from selected stack (accepts same formats as stacks.ts) */
|
|
716
|
-
stack:
|
|
988
|
+
stack: z2.record(z2.string(), stackAgentConfigSchema).exactOptional(),
|
|
717
989
|
/** Skills source path or URL (e.g., "github:my-org/skills") */
|
|
718
|
-
source:
|
|
990
|
+
source: z2.string().exactOptional(),
|
|
719
991
|
/** Marketplace identifier for plugin installation */
|
|
720
|
-
marketplace:
|
|
992
|
+
marketplace: z2.string().exactOptional(),
|
|
721
993
|
/** Separate source for agents when different from skills source */
|
|
722
|
-
agentsSource:
|
|
994
|
+
agentsSource: z2.string().exactOptional(),
|
|
723
995
|
/** Tracked project installation paths (global config only) */
|
|
724
|
-
projects:
|
|
996
|
+
projects: z2.array(z2.string()).exactOptional()
|
|
725
997
|
}).passthrough();
|
|
726
|
-
var categoryDefinitionSchema =
|
|
727
|
-
id:
|
|
728
|
-
displayName:
|
|
729
|
-
description:
|
|
730
|
-
domain:
|
|
731
|
-
exclusive:
|
|
732
|
-
required:
|
|
733
|
-
order:
|
|
734
|
-
icon:
|
|
998
|
+
var categoryDefinitionSchema = z2.object({
|
|
999
|
+
id: z2.string(),
|
|
1000
|
+
displayName: z2.string(),
|
|
1001
|
+
description: z2.string(),
|
|
1002
|
+
domain: z2.string().exactOptional(),
|
|
1003
|
+
exclusive: z2.boolean(),
|
|
1004
|
+
required: z2.boolean(),
|
|
1005
|
+
order: z2.number(),
|
|
1006
|
+
icon: z2.string().exactOptional()
|
|
735
1007
|
});
|
|
736
1008
|
var skillRefInRules = skillSlugSchema;
|
|
737
|
-
var skillGroupRuleSchema =
|
|
738
|
-
skills:
|
|
739
|
-
reason:
|
|
1009
|
+
var skillGroupRuleSchema = z2.object({
|
|
1010
|
+
skills: z2.array(skillRefInRules).min(2),
|
|
1011
|
+
reason: z2.string()
|
|
740
1012
|
});
|
|
741
1013
|
var conflictRuleSchema = skillGroupRuleSchema;
|
|
742
1014
|
var discourageRuleSchema = skillGroupRuleSchema;
|
|
743
|
-
var
|
|
1015
|
+
var requireRuleSchema = z2.object({
|
|
744
1016
|
skill: skillRefInRules,
|
|
745
|
-
|
|
1017
|
+
needs: z2.array(skillRefInRules).min(1),
|
|
1018
|
+
needsAny: z2.boolean().exactOptional(),
|
|
1019
|
+
reason: z2.string()
|
|
746
1020
|
});
|
|
747
|
-
var
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
needs: z.array(skillRefInRules).min(1),
|
|
751
|
-
needsAny: z.boolean().optional(),
|
|
752
|
-
reason: z.string()
|
|
753
|
-
});
|
|
754
|
-
var alternativeGroupSchema = z.object({
|
|
755
|
-
purpose: z.string(),
|
|
756
|
-
skills: z.array(skillRefInRules).min(1)
|
|
1021
|
+
var alternativeGroupSchema = z2.object({
|
|
1022
|
+
purpose: z2.string(),
|
|
1023
|
+
skills: z2.array(skillRefInRules).min(1)
|
|
757
1024
|
});
|
|
758
|
-
var relationshipDefinitionsSchema =
|
|
759
|
-
conflicts:
|
|
760
|
-
discourages:
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
alternatives: z.array(alternativeGroupSchema),
|
|
764
|
-
compatibleWith: z.array(compatibilityGroupSchema).optional().default([])
|
|
1025
|
+
var relationshipDefinitionsSchema = z2.object({
|
|
1026
|
+
conflicts: z2.array(conflictRuleSchema),
|
|
1027
|
+
discourages: z2.array(discourageRuleSchema),
|
|
1028
|
+
requires: z2.array(requireRuleSchema),
|
|
1029
|
+
alternatives: z2.array(alternativeGroupSchema)
|
|
765
1030
|
});
|
|
766
|
-
var skillCategoriesFileSchema =
|
|
767
|
-
version:
|
|
768
|
-
categories:
|
|
1031
|
+
var skillCategoriesFileSchema = z2.object({
|
|
1032
|
+
version: z2.string(),
|
|
1033
|
+
categories: z2.record(z2.string(), categoryDefinitionSchema)
|
|
769
1034
|
});
|
|
770
|
-
var skillRulesFileSchema =
|
|
771
|
-
version:
|
|
772
|
-
relationships: relationshipDefinitionsSchema.
|
|
1035
|
+
var skillRulesFileSchema = z2.object({
|
|
1036
|
+
version: z2.string(),
|
|
1037
|
+
relationships: relationshipDefinitionsSchema.exactOptional()
|
|
773
1038
|
});
|
|
774
|
-
var localRawMetadataSchema =
|
|
1039
|
+
var localRawMetadataSchema = z2.object({
|
|
775
1040
|
/** Short name shown in the wizard grid (e.g., "my-custom-react") */
|
|
776
|
-
displayName:
|
|
1041
|
+
displayName: z2.string(),
|
|
777
1042
|
/** Kebab-case short key for alias resolution (e.g., "react") */
|
|
778
|
-
slug:
|
|
1043
|
+
slug: z2.string(),
|
|
779
1044
|
/** One-line description for the wizard */
|
|
780
|
-
cliDescription:
|
|
1045
|
+
cliDescription: z2.string().exactOptional(),
|
|
781
1046
|
/** Category to place this skill in (e.g., "web-framework") */
|
|
782
1047
|
// Field accepts any string; cross-field validation in superRefine enforces strict/custom rules
|
|
783
|
-
category:
|
|
1048
|
+
category: z2.string(),
|
|
784
1049
|
/** When an AI agent should invoke this skill */
|
|
785
|
-
usageGuidance:
|
|
1050
|
+
usageGuidance: z2.string().exactOptional(),
|
|
786
1051
|
/** Domain this skill belongs to (e.g., "web", "api", "cli") */
|
|
787
|
-
domain:
|
|
1052
|
+
domain: z2.string(),
|
|
788
1053
|
/** True if this skill was created outside the CLI's built-in vocabulary */
|
|
789
|
-
custom:
|
|
1054
|
+
custom: z2.boolean().exactOptional()
|
|
790
1055
|
}).passthrough().superRefine(validateCategoryField);
|
|
791
|
-
var localSkillMetadataSchema =
|
|
792
|
-
forkedFrom:
|
|
1056
|
+
var localSkillMetadataSchema = z2.object({
|
|
1057
|
+
forkedFrom: z2.object({
|
|
793
1058
|
/** Original skill ID before forking — lenient (any string) since custom/extra-source skills have non-builtin IDs */
|
|
794
|
-
skillId:
|
|
1059
|
+
skillId: z2.string(),
|
|
795
1060
|
/** SHA hash of the original content at fork time (for diff detection) */
|
|
796
|
-
contentHash:
|
|
1061
|
+
contentHash: z2.string(),
|
|
797
1062
|
/** ISO date when the fork was created */
|
|
798
|
-
date:
|
|
1063
|
+
date: z2.string(),
|
|
799
1064
|
/** Source URL the skill was installed from (e.g., "github:agents-inc/skills") */
|
|
800
|
-
source:
|
|
801
|
-
}).
|
|
1065
|
+
source: z2.string().exactOptional()
|
|
1066
|
+
}).exactOptional()
|
|
802
1067
|
}).passthrough();
|
|
803
|
-
var stackSchema =
|
|
804
|
-
id:
|
|
805
|
-
name:
|
|
806
|
-
description:
|
|
1068
|
+
var stackSchema = z2.object({
|
|
1069
|
+
id: z2.string().min(1),
|
|
1070
|
+
name: z2.string().min(1),
|
|
1071
|
+
description: z2.string(),
|
|
807
1072
|
/** Maps agent IDs to their category-to-skill assignments */
|
|
808
|
-
agents:
|
|
1073
|
+
agents: z2.record(z2.string(), stackAgentConfigSchema),
|
|
809
1074
|
/** High-level philosophy guiding this stack's technology choices */
|
|
810
|
-
philosophy:
|
|
1075
|
+
philosophy: z2.string().exactOptional()
|
|
811
1076
|
});
|
|
812
|
-
var stacksConfigSchema =
|
|
813
|
-
stacks:
|
|
1077
|
+
var stacksConfigSchema = z2.object({
|
|
1078
|
+
stacks: z2.array(stackSchema).min(1)
|
|
814
1079
|
});
|
|
815
|
-
var marketplaceRemoteSourceSchema =
|
|
816
|
-
source:
|
|
817
|
-
repo:
|
|
818
|
-
url:
|
|
819
|
-
ref:
|
|
1080
|
+
var marketplaceRemoteSourceSchema = z2.object({
|
|
1081
|
+
source: z2.enum(["github", "url"]),
|
|
1082
|
+
repo: z2.string().exactOptional(),
|
|
1083
|
+
url: z2.string().exactOptional(),
|
|
1084
|
+
ref: z2.string().exactOptional()
|
|
820
1085
|
});
|
|
821
|
-
var marketplacePluginSchema =
|
|
822
|
-
name:
|
|
1086
|
+
var marketplacePluginSchema = z2.object({
|
|
1087
|
+
name: z2.string().min(1),
|
|
823
1088
|
/** Local directory path (relative to pluginRoot) or remote source config */
|
|
824
|
-
source:
|
|
825
|
-
description:
|
|
826
|
-
version:
|
|
827
|
-
author: pluginAuthorSchema.
|
|
1089
|
+
source: z2.union([z2.string(), marketplaceRemoteSourceSchema]),
|
|
1090
|
+
description: z2.string().exactOptional(),
|
|
1091
|
+
version: z2.string().exactOptional(),
|
|
1092
|
+
author: pluginAuthorSchema.exactOptional(),
|
|
828
1093
|
/** Lenient: external data may have any category string or none at all */
|
|
829
|
-
category:
|
|
830
|
-
keywords:
|
|
1094
|
+
category: z2.string().exactOptional(),
|
|
1095
|
+
keywords: z2.array(z2.string()).exactOptional()
|
|
831
1096
|
});
|
|
832
1097
|
var marketplaceOwnerSchema = pluginAuthorSchema;
|
|
833
|
-
var marketplaceMetadataSchema =
|
|
1098
|
+
var marketplaceMetadataSchema = z2.object({
|
|
834
1099
|
/** Base directory for resolving plugin source paths (e.g., "plugins/") */
|
|
835
|
-
pluginRoot:
|
|
1100
|
+
pluginRoot: z2.string().exactOptional()
|
|
836
1101
|
});
|
|
837
|
-
var marketplaceSchema =
|
|
838
|
-
$schema:
|
|
839
|
-
name:
|
|
840
|
-
version:
|
|
841
|
-
description:
|
|
1102
|
+
var marketplaceSchema = z2.object({
|
|
1103
|
+
$schema: z2.string().exactOptional(),
|
|
1104
|
+
name: z2.string().min(1),
|
|
1105
|
+
version: z2.string().min(1),
|
|
1106
|
+
description: z2.string().exactOptional(),
|
|
842
1107
|
owner: marketplaceOwnerSchema,
|
|
843
|
-
metadata: marketplaceMetadataSchema.
|
|
844
|
-
plugins:
|
|
1108
|
+
metadata: marketplaceMetadataSchema.exactOptional(),
|
|
1109
|
+
plugins: z2.array(marketplacePluginSchema).min(1)
|
|
845
1110
|
});
|
|
846
|
-
var
|
|
1111
|
+
var sourceRevalidationSchema = z2.object({
|
|
1112
|
+
/** The tarball URL giget resolved for this source. */
|
|
1113
|
+
tar: z2.string().min(1),
|
|
1114
|
+
etag: z2.string().min(1).exactOptional()
|
|
1115
|
+
});
|
|
1116
|
+
var permissionConfigSchema = z2.object({
|
|
847
1117
|
/** Tool names or patterns to explicitly allow */
|
|
848
|
-
allow:
|
|
1118
|
+
allow: z2.array(z2.string()).exactOptional(),
|
|
849
1119
|
/** Tool names or patterns to explicitly deny */
|
|
850
|
-
deny:
|
|
1120
|
+
deny: z2.array(z2.string()).exactOptional()
|
|
851
1121
|
});
|
|
852
|
-
var settingsFileSchema =
|
|
853
|
-
permissions: permissionConfigSchema.
|
|
854
|
-
}).passthrough();
|
|
855
|
-
var importedSkillMetadataSchema = z.object({
|
|
856
|
-
forkedFrom: z.object({
|
|
857
|
-
/** Source URL or identifier where the skill was imported from */
|
|
858
|
-
source: z.string(),
|
|
859
|
-
/** Original skill name in the source */
|
|
860
|
-
skillName: z.string(),
|
|
861
|
-
/** SHA hash of the original content at import time */
|
|
862
|
-
contentHash: z.string(),
|
|
863
|
-
/** ISO date when the import was performed */
|
|
864
|
-
date: z.string()
|
|
865
|
-
}).optional()
|
|
1122
|
+
var settingsFileSchema = z2.object({
|
|
1123
|
+
permissions: permissionConfigSchema.exactOptional()
|
|
866
1124
|
}).passthrough();
|
|
867
|
-
var brandingConfigSchema =
|
|
1125
|
+
var brandingConfigSchema = z2.object({
|
|
868
1126
|
/** Custom CLI name (e.g., "Acme Dev Tools") */
|
|
869
|
-
name:
|
|
1127
|
+
name: z2.string().exactOptional(),
|
|
870
1128
|
/** Custom tagline shown in wizard header */
|
|
871
|
-
tagline:
|
|
1129
|
+
tagline: z2.string().exactOptional()
|
|
872
1130
|
});
|
|
873
|
-
var projectSourceConfigSchema =
|
|
1131
|
+
var projectSourceConfigSchema = z2.object({
|
|
874
1132
|
/** Primary skills source (path or URL) */
|
|
875
|
-
source:
|
|
1133
|
+
source: z2.string().exactOptional(),
|
|
876
1134
|
/** Author handle for this project's config */
|
|
877
|
-
author:
|
|
1135
|
+
author: z2.string().exactOptional(),
|
|
878
1136
|
/** Marketplace identifier for plugin installation */
|
|
879
|
-
marketplace:
|
|
1137
|
+
marketplace: z2.string().exactOptional(),
|
|
880
1138
|
/** Separate source for agent definitions (when different from skills) */
|
|
881
|
-
agentsSource:
|
|
882
|
-
/** Additional skill sources (private marketplaces, custom repos) */
|
|
883
|
-
sources: z.array(
|
|
884
|
-
z.object({
|
|
885
|
-
/** Display name for the source (shown in wizard) */
|
|
886
|
-
name: z.string(),
|
|
887
|
-
/** Source URL (e.g., "github:acme-corp/claude-skills") */
|
|
888
|
-
url: z.string(),
|
|
889
|
-
description: z.string().optional(),
|
|
890
|
-
/** Git ref (branch/tag/commit) for the source */
|
|
891
|
-
ref: z.string().optional()
|
|
892
|
-
})
|
|
893
|
-
).optional(),
|
|
894
|
-
/** Skills explicitly bound to categories via search (from Step Sources) */
|
|
895
|
-
boundSkills: z.array(boundSkillSchema).optional(),
|
|
1139
|
+
agentsSource: z2.string().exactOptional(),
|
|
896
1140
|
/** Branding overrides for white-labeling the CLI */
|
|
897
|
-
branding: brandingConfigSchema.
|
|
1141
|
+
branding: brandingConfigSchema.exactOptional(),
|
|
898
1142
|
/** Custom skills directory override (default: "src/skills") */
|
|
899
|
-
skillsDir:
|
|
1143
|
+
skillsDir: z2.string().exactOptional(),
|
|
900
1144
|
/** Custom agents directory override (default: "src/agents") */
|
|
901
|
-
agentsDir:
|
|
1145
|
+
agentsDir: z2.string().exactOptional(),
|
|
902
1146
|
/** Custom stacks file path override (default: "config/stacks.ts") */
|
|
903
|
-
stacksFile:
|
|
1147
|
+
stacksFile: z2.string().exactOptional(),
|
|
904
1148
|
/** Custom categories file path override (default: "config/skill-categories.ts") */
|
|
905
|
-
categoriesFile:
|
|
1149
|
+
categoriesFile: z2.string().exactOptional(),
|
|
906
1150
|
/** Custom rules file path override (default: "config/skill-rules.ts") */
|
|
907
|
-
rulesFile:
|
|
1151
|
+
rulesFile: z2.string().exactOptional()
|
|
908
1152
|
}).passthrough();
|
|
909
|
-
var agentYamlGenerationSchema =
|
|
910
|
-
$schema:
|
|
911
|
-
id:
|
|
912
|
-
title:
|
|
913
|
-
description:
|
|
914
|
-
model: modelNameSchema.
|
|
915
|
-
effort: effortLevelSchema.
|
|
916
|
-
tools:
|
|
917
|
-
disallowedTools:
|
|
918
|
-
permissionMode: permissionModeSchema.
|
|
919
|
-
hooks: strictHooksRecordSchema.
|
|
920
|
-
outputFormat:
|
|
921
|
-
domain:
|
|
922
|
-
custom:
|
|
1153
|
+
var agentYamlGenerationSchema = z2.object({
|
|
1154
|
+
$schema: z2.string().exactOptional(),
|
|
1155
|
+
id: z2.string().min(1),
|
|
1156
|
+
title: z2.string().min(1),
|
|
1157
|
+
description: z2.string().min(1),
|
|
1158
|
+
model: modelNameSchema.exactOptional(),
|
|
1159
|
+
effort: effortLevelSchema.exactOptional(),
|
|
1160
|
+
tools: z2.array(z2.string()).min(1),
|
|
1161
|
+
disallowedTools: z2.array(z2.string()).exactOptional(),
|
|
1162
|
+
permissionMode: permissionModeSchema.exactOptional(),
|
|
1163
|
+
hooks: strictHooksRecordSchema.exactOptional(),
|
|
1164
|
+
outputFormat: z2.string().exactOptional(),
|
|
1165
|
+
domain: z2.string().exactOptional(),
|
|
1166
|
+
custom: z2.boolean().exactOptional()
|
|
923
1167
|
}).strict();
|
|
924
|
-
var agentFrontmatterValidationSchema =
|
|
1168
|
+
var agentFrontmatterValidationSchema = z2.object({
|
|
925
1169
|
/** Agent name in kebab-case (becomes the Task tool identifier) */
|
|
926
|
-
name:
|
|
927
|
-
description:
|
|
1170
|
+
name: z2.string().regex(KEBAB_CASE_PATTERN).min(1),
|
|
1171
|
+
description: z2.string().min(1),
|
|
928
1172
|
/** Comma-separated list of allowed tools */
|
|
929
|
-
tools:
|
|
1173
|
+
tools: z2.string().exactOptional(),
|
|
930
1174
|
/** Comma-separated list of denied tools */
|
|
931
|
-
disallowedTools:
|
|
932
|
-
model: modelNameSchema.
|
|
933
|
-
effort: effortLevelSchema.
|
|
934
|
-
permissionMode: permissionModeSchema.
|
|
1175
|
+
disallowedTools: z2.string().exactOptional(),
|
|
1176
|
+
model: modelNameSchema.exactOptional(),
|
|
1177
|
+
effort: effortLevelSchema.exactOptional(),
|
|
1178
|
+
permissionMode: permissionModeSchema.exactOptional(),
|
|
935
1179
|
/** Skill names to preload (embed in agent prompt) */
|
|
936
|
-
skills:
|
|
937
|
-
hooks: strictHooksRecordSchema.
|
|
1180
|
+
skills: z2.array(z2.string().min(1)).exactOptional(),
|
|
1181
|
+
hooks: strictHooksRecordSchema.exactOptional()
|
|
938
1182
|
}).strict();
|
|
939
|
-
var skillFrontmatterValidationSchema =
|
|
940
|
-
name:
|
|
941
|
-
description:
|
|
1183
|
+
var skillFrontmatterValidationSchema = z2.object({
|
|
1184
|
+
name: z2.string().min(1),
|
|
1185
|
+
description: z2.string().min(1),
|
|
942
1186
|
/** If true, Claude cannot invoke this skill on its own */
|
|
943
|
-
"disable-model-invocation":
|
|
1187
|
+
"disable-model-invocation": z2.boolean().exactOptional(),
|
|
944
1188
|
/** If true, user can invoke this skill directly */
|
|
945
|
-
"user-invocable":
|
|
1189
|
+
"user-invocable": z2.boolean().exactOptional(),
|
|
946
1190
|
/** Comma-separated list of tools this skill can use */
|
|
947
|
-
"allowed-tools":
|
|
948
|
-
model: modelNameSchema.
|
|
1191
|
+
"allowed-tools": z2.string().exactOptional(),
|
|
1192
|
+
model: modelNameSchema.exactOptional(),
|
|
949
1193
|
/** "fork" means skill runs in a forked context (separate conversation) */
|
|
950
|
-
context:
|
|
1194
|
+
context: z2.enum(["fork"]).exactOptional(),
|
|
951
1195
|
/** Agent name this skill is scoped to */
|
|
952
|
-
agent:
|
|
1196
|
+
agent: z2.string().exactOptional(),
|
|
953
1197
|
/** Hint text shown when user invokes the skill */
|
|
954
|
-
"argument-hint":
|
|
1198
|
+
"argument-hint": z2.string().exactOptional()
|
|
955
1199
|
}).strict();
|
|
956
|
-
var forkedFromSchema =
|
|
1200
|
+
var forkedFromSchema = z2.object({
|
|
957
1201
|
/** Original skill ID */
|
|
958
|
-
skillId:
|
|
1202
|
+
skillId: z2.string(),
|
|
959
1203
|
/** Version of the original at fork time */
|
|
960
|
-
version:
|
|
1204
|
+
version: z2.number().int().min(1).exactOptional(),
|
|
961
1205
|
/** Content hash of the original at fork time */
|
|
962
|
-
contentHash:
|
|
1206
|
+
contentHash: z2.string(),
|
|
963
1207
|
/** Source URL or identifier */
|
|
964
|
-
source:
|
|
1208
|
+
source: z2.string().exactOptional(),
|
|
965
1209
|
/** ISO date of the fork */
|
|
966
|
-
date:
|
|
1210
|
+
date: z2.string()
|
|
967
1211
|
});
|
|
968
1212
|
var CLI_DESCRIPTION_MAX_LENGTH = 60;
|
|
969
|
-
var skillMetadataBaseSchema =
|
|
1213
|
+
var skillMetadataBaseSchema = z2.object({
|
|
970
1214
|
/** Author handle — must start with @ (e.g., "@vince") */
|
|
971
|
-
author:
|
|
1215
|
+
author: z2.string().regex(AUTHOR_HANDLE_PATTERN),
|
|
972
1216
|
/** Short display name for the wizard grid (max 30 chars) */
|
|
973
|
-
displayName:
|
|
1217
|
+
displayName: z2.string().min(1).max(30),
|
|
974
1218
|
/** One-line description for the wizard (max 60 chars recommended; over-length is a validation warning) */
|
|
975
|
-
cliDescription:
|
|
1219
|
+
cliDescription: z2.string().min(1).max(CLI_DESCRIPTION_MAX_LENGTH),
|
|
976
1220
|
/** When an AI agent should invoke this skill (min 10 chars to ensure usefulness) */
|
|
977
|
-
usageGuidance:
|
|
1221
|
+
usageGuidance: z2.string().min(10),
|
|
978
1222
|
/** 7-char hex SHA of skill content (for change detection) */
|
|
979
|
-
contentHash:
|
|
1223
|
+
contentHash: z2.string().regex(/^[a-f0-9]{7}$/).exactOptional(),
|
|
980
1224
|
/** ISO date of last update */
|
|
981
|
-
updated:
|
|
1225
|
+
updated: z2.string().exactOptional(),
|
|
982
1226
|
/** Provenance tracking when skill was forked from another */
|
|
983
|
-
forkedFrom: forkedFromSchema.
|
|
1227
|
+
forkedFrom: forkedFromSchema.exactOptional(),
|
|
984
1228
|
/** Domain assignment from metadata */
|
|
985
|
-
domain:
|
|
1229
|
+
domain: z2.string().exactOptional(),
|
|
986
1230
|
/** True if this skill was created outside the CLI's built-in vocabulary */
|
|
987
|
-
custom:
|
|
1231
|
+
custom: z2.boolean().exactOptional()
|
|
988
1232
|
});
|
|
989
1233
|
var metadataValidationSchema = skillMetadataBaseSchema.extend({
|
|
990
1234
|
/** Domain-prefixed category — must be a known built-in category */
|
|
991
|
-
category:
|
|
1235
|
+
category: z2.enum(CATEGORIES),
|
|
992
1236
|
/** Kebab-case short key — must be a known built-in slug */
|
|
993
|
-
slug:
|
|
1237
|
+
slug: z2.enum(SKILL_SLUGS)
|
|
994
1238
|
}).strict();
|
|
995
1239
|
var customMetadataValidationSchema = skillMetadataBaseSchema.extend({
|
|
996
1240
|
/** Any string category — custom skills may define their own categories */
|
|
997
|
-
category:
|
|
1241
|
+
category: z2.string(),
|
|
998
1242
|
/** Kebab-case short key for alias resolution, search, and relationship rules */
|
|
999
|
-
slug:
|
|
1243
|
+
slug: z2.string().regex(/^[a-z][a-z0-9-]*$/).min(1).max(50)
|
|
1000
1244
|
});
|
|
1001
|
-
var stackSkillAssignmentSchema =
|
|
1002
|
-
id:
|
|
1245
|
+
var stackSkillAssignmentSchema = z2.object({
|
|
1246
|
+
id: z2.string().min(1),
|
|
1003
1247
|
/** If true, skill content is embedded in the compiled agent prompt */
|
|
1004
|
-
preloaded:
|
|
1248
|
+
preloaded: z2.boolean().exactOptional()
|
|
1005
1249
|
}).strict();
|
|
1006
|
-
var stackConfigValidationSchema =
|
|
1250
|
+
var stackConfigValidationSchema = z2.object({
|
|
1007
1251
|
/** Unique stack identifier in kebab-case */
|
|
1008
|
-
id:
|
|
1009
|
-
name:
|
|
1010
|
-
version:
|
|
1011
|
-
author:
|
|
1012
|
-
description:
|
|
1252
|
+
id: z2.string().regex(KEBAB_CASE_PATTERN).exactOptional(),
|
|
1253
|
+
name: z2.string().min(1),
|
|
1254
|
+
version: z2.string(),
|
|
1255
|
+
author: z2.string().min(1),
|
|
1256
|
+
description: z2.string().exactOptional(),
|
|
1013
1257
|
/** ISO date when this stack was first created */
|
|
1014
|
-
created:
|
|
1258
|
+
created: z2.string().exactOptional(),
|
|
1015
1259
|
/** ISO date of last update */
|
|
1016
|
-
updated:
|
|
1260
|
+
updated: z2.string().exactOptional(),
|
|
1017
1261
|
/** Primary framework this stack is designed for (e.g., "nextjs", "remix") */
|
|
1018
|
-
framework:
|
|
1262
|
+
framework: z2.string().exactOptional(),
|
|
1019
1263
|
/** All skills used in this stack (flat list, at least one required) */
|
|
1020
|
-
skills:
|
|
1264
|
+
skills: z2.array(stackSkillAssignmentSchema).min(1),
|
|
1021
1265
|
/** Agent IDs this stack compiles (at least one required) */
|
|
1022
|
-
agents:
|
|
1266
|
+
agents: z2.array(z2.string().regex(KEBAB_CASE_PATTERN)).min(1),
|
|
1023
1267
|
/** Per-agent skill assignments: { agentId: { category: [skillAssignment] } } */
|
|
1024
|
-
agentSkills:
|
|
1268
|
+
agentSkills: z2.record(z2.string(), z2.record(z2.string(), z2.array(stackSkillAssignmentSchema))).exactOptional(),
|
|
1025
1269
|
/** High-level philosophy guiding technology choices */
|
|
1026
|
-
philosophy:
|
|
1270
|
+
philosophy: z2.string().exactOptional(),
|
|
1027
1271
|
/** Guiding principles for agents using this stack */
|
|
1028
|
-
principles:
|
|
1029
|
-
tags:
|
|
1272
|
+
principles: z2.array(z2.string().min(1)).exactOptional(),
|
|
1273
|
+
tags: z2.array(z2.string().regex(KEBAB_CASE_PATTERN)).exactOptional(),
|
|
1030
1274
|
/** Per-skill overrides: alternative suggestions and lock status */
|
|
1031
|
-
overrides:
|
|
1032
|
-
|
|
1033
|
-
|
|
1275
|
+
overrides: z2.record(
|
|
1276
|
+
z2.string(),
|
|
1277
|
+
z2.object({
|
|
1034
1278
|
/** Suggested alternative skill IDs if this one is swapped */
|
|
1035
|
-
alternatives:
|
|
1279
|
+
alternatives: z2.array(z2.string().min(1)).exactOptional(),
|
|
1036
1280
|
/** If true, this skill cannot be swapped by the user */
|
|
1037
|
-
locked:
|
|
1281
|
+
locked: z2.boolean().exactOptional()
|
|
1038
1282
|
}).strict()
|
|
1039
|
-
).
|
|
1283
|
+
).exactOptional(),
|
|
1040
1284
|
/** Community metrics for sorting/ranking */
|
|
1041
|
-
metrics:
|
|
1042
|
-
upvotes:
|
|
1043
|
-
downloads:
|
|
1044
|
-
}).strict().
|
|
1285
|
+
metrics: z2.object({
|
|
1286
|
+
upvotes: z2.number().int().min(0).exactOptional(),
|
|
1287
|
+
downloads: z2.number().int().min(0).exactOptional()
|
|
1288
|
+
}).strict().exactOptional(),
|
|
1045
1289
|
/** Lifecycle hooks triggered by file changes or commands */
|
|
1046
|
-
hooks: strictHooksRecordSchema.
|
|
1290
|
+
hooks: strictHooksRecordSchema.exactOptional()
|
|
1047
1291
|
}).strict();
|
|
1048
1292
|
function formatZodIssues(issues) {
|
|
1049
1293
|
return issues.map(formatZodIssue).join("; ");
|
|
@@ -1052,6 +1296,21 @@ function validateSkillMetadata(rawMetadata) {
|
|
|
1052
1296
|
const schema = isCustomMetadata(rawMetadata) ? customMetadataValidationSchema : metadataValidationSchema;
|
|
1053
1297
|
return schema.safeParse(rawMetadata);
|
|
1054
1298
|
}
|
|
1299
|
+
function describeMetadataSchemaFailure(issues, rawMetadata) {
|
|
1300
|
+
const [absent, malformed] = partition(issues, (issue) => isAbsentField(issue, rawMetadata));
|
|
1301
|
+
return [
|
|
1302
|
+
...absent.length > 0 ? [nameMissingFields(absent)] : [],
|
|
1303
|
+
...malformed.map(formatZodIssue)
|
|
1304
|
+
].join("; ");
|
|
1305
|
+
}
|
|
1306
|
+
function isAbsentField(issue, rawMetadata) {
|
|
1307
|
+
const [field, ...nested] = issue.path;
|
|
1308
|
+
return nested.length === 0 && typeof field === "string" && rawMetadata[field] === void 0;
|
|
1309
|
+
}
|
|
1310
|
+
function nameMissingFields(absent) {
|
|
1311
|
+
const fields = absent.map((issue) => issue.path.join("."));
|
|
1312
|
+
return `missing required ${fields.length === 1 ? "field" : "fields"}: ${fields.join(", ")}`;
|
|
1313
|
+
}
|
|
1055
1314
|
function isOverLengthCliDescription(issue) {
|
|
1056
1315
|
return issue.code === "too_big" && issue.path.length === 1 && issue.path[0] === "cliDescription";
|
|
1057
1316
|
}
|
|
@@ -1097,6 +1356,30 @@ function warnUnknownFields(parsed, expectedKeys, context) {
|
|
|
1097
1356
|
}
|
|
1098
1357
|
|
|
1099
1358
|
// src/cli/lib/loading/loader.ts
|
|
1359
|
+
async function readSkillMetadata(metadataPath) {
|
|
1360
|
+
let parsed;
|
|
1361
|
+
try {
|
|
1362
|
+
parsed = parseYaml2(await readFile(metadataPath));
|
|
1363
|
+
} catch (error) {
|
|
1364
|
+
return { usable: false, reason: getErrorMessage(error) };
|
|
1365
|
+
}
|
|
1366
|
+
if (!isFieldMapping(parsed)) {
|
|
1367
|
+
return { usable: false, reason: `expected metadata fields, found ${nameYamlValue(parsed)}` };
|
|
1368
|
+
}
|
|
1369
|
+
const validated = localRawMetadataSchema.safeParse(parsed);
|
|
1370
|
+
if (!validated.success) {
|
|
1371
|
+
return { usable: false, reason: describeMetadataSchemaFailure(validated.error.issues, parsed) };
|
|
1372
|
+
}
|
|
1373
|
+
return { usable: true, metadata: validated.data };
|
|
1374
|
+
}
|
|
1375
|
+
function isFieldMapping(value) {
|
|
1376
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1377
|
+
}
|
|
1378
|
+
function nameYamlValue(value) {
|
|
1379
|
+
if (value === null || value === void 0) return "an empty file";
|
|
1380
|
+
if (Array.isArray(value)) return "a list";
|
|
1381
|
+
return `a ${typeof value}`;
|
|
1382
|
+
}
|
|
1100
1383
|
function parseFrontmatter(content, filePath) {
|
|
1101
1384
|
const rawFrontmatter = extractFrontmatter(content);
|
|
1102
1385
|
if (rawFrontmatter === null) return null;
|
|
@@ -1119,7 +1402,7 @@ async function loadAgentsFromDir(agentsDir, sourceRoot, options) {
|
|
|
1119
1402
|
agents[config.id] = {
|
|
1120
1403
|
title: config.title,
|
|
1121
1404
|
description: config.description,
|
|
1122
|
-
model: config.model,
|
|
1405
|
+
...config.model !== void 0 && { model: config.model },
|
|
1123
1406
|
tools: config.tools,
|
|
1124
1407
|
path: path2.dirname(file),
|
|
1125
1408
|
sourceRoot,
|
|
@@ -1222,7 +1505,7 @@ async function loadSkillsByIds(skillIds, projectRoot) {
|
|
|
1222
1505
|
skills[canonicalId] = skillDef;
|
|
1223
1506
|
verbose(`Loaded skill: ${canonicalId} (from ${directoryPath})`);
|
|
1224
1507
|
} catch (error) {
|
|
1225
|
-
warn(`Could not load skill '${skillId}': ${error}`);
|
|
1508
|
+
warn(`Could not load skill '${skillId}': ${getErrorMessage(error)}`);
|
|
1226
1509
|
}
|
|
1227
1510
|
}
|
|
1228
1511
|
return skills;
|
|
@@ -1230,8 +1513,9 @@ async function loadSkillsByIds(skillIds, projectRoot) {
|
|
|
1230
1513
|
async function loadSkillsFromDir(skillsDir, options = {}) {
|
|
1231
1514
|
const { pathPrefix = "", requireMetadata = false } = options;
|
|
1232
1515
|
const skills = {};
|
|
1516
|
+
const unusableMetadata = [];
|
|
1233
1517
|
if (!await directoryExists(skillsDir)) {
|
|
1234
|
-
return skills;
|
|
1518
|
+
return { skills, unusableMetadata };
|
|
1235
1519
|
}
|
|
1236
1520
|
const skillFiles = await glob(`**/${STANDARD_FILES.SKILL_MD}`, skillsDir);
|
|
1237
1521
|
for (const skillFile of skillFiles) {
|
|
@@ -1248,6 +1532,12 @@ async function loadSkillsFromDir(skillsDir, options = {}) {
|
|
|
1248
1532
|
);
|
|
1249
1533
|
continue;
|
|
1250
1534
|
}
|
|
1535
|
+
const metadata = await readSkillMetadata(metadataPath);
|
|
1536
|
+
if (!metadata.usable) {
|
|
1537
|
+
unusableMetadata.push({ skillDirName, metadataPath, reason: metadata.reason });
|
|
1538
|
+
verbose(` Unusable ${STANDARD_FILES.METADATA_YAML} in '${skillDirName}'`);
|
|
1539
|
+
continue;
|
|
1540
|
+
}
|
|
1251
1541
|
}
|
|
1252
1542
|
try {
|
|
1253
1543
|
const content = await readFile(skillPath);
|
|
@@ -1264,16 +1554,17 @@ async function loadSkillsFromDir(skillsDir, options = {}) {
|
|
|
1264
1554
|
};
|
|
1265
1555
|
verbose(` Loaded skill: ${canonicalId}`);
|
|
1266
1556
|
} catch (error) {
|
|
1267
|
-
verbose(` Failed to load skill: ${skillFile} - ${error}`);
|
|
1557
|
+
verbose(` Failed to load skill: ${skillFile} - ${getErrorMessage(error)}`);
|
|
1268
1558
|
}
|
|
1269
1559
|
}
|
|
1270
|
-
return skills;
|
|
1560
|
+
return { skills, unusableMetadata };
|
|
1271
1561
|
}
|
|
1272
1562
|
async function loadPluginSkills(pluginDir) {
|
|
1273
|
-
|
|
1563
|
+
const { skills } = await loadSkillsFromDir(path2.join(pluginDir, "skills"), {
|
|
1274
1564
|
pathPrefix: "skills",
|
|
1275
1565
|
requireMetadata: false
|
|
1276
1566
|
});
|
|
1567
|
+
return skills;
|
|
1277
1568
|
}
|
|
1278
1569
|
|
|
1279
1570
|
export {
|
|
@@ -1285,28 +1576,12 @@ export {
|
|
|
1285
1576
|
drainBuffer,
|
|
1286
1577
|
disableBuffering,
|
|
1287
1578
|
warn,
|
|
1288
|
-
extractFrontmatter,
|
|
1289
|
-
GlobalPairWriteViolation,
|
|
1290
|
-
withGateToken,
|
|
1291
|
-
assertGateToken,
|
|
1292
|
-
isPathWithin,
|
|
1293
|
-
readFile,
|
|
1294
|
-
readFileSafe,
|
|
1295
|
-
readFileOptional,
|
|
1296
|
-
fileExists,
|
|
1297
|
-
directoryExists,
|
|
1298
|
-
listDirectories,
|
|
1299
|
-
glob,
|
|
1300
|
-
writeFile,
|
|
1301
|
-
ensureDir,
|
|
1302
|
-
remove,
|
|
1303
|
-
copy,
|
|
1304
1579
|
formatZodErrors,
|
|
1580
|
+
SKILL_IDS,
|
|
1305
1581
|
DOMAINS,
|
|
1306
1582
|
AGENT_NAMES,
|
|
1307
1583
|
MODEL_NAMES,
|
|
1308
1584
|
EFFORT_NAMES,
|
|
1309
|
-
modelNameSchema,
|
|
1310
1585
|
skillMetadataLoaderSchema,
|
|
1311
1586
|
matrixRawMetadataSchema,
|
|
1312
1587
|
pluginManifestSchema,
|
|
@@ -1314,12 +1589,11 @@ export {
|
|
|
1314
1589
|
projectConfigLoaderSchema,
|
|
1315
1590
|
skillCategoriesFileSchema,
|
|
1316
1591
|
skillRulesFileSchema,
|
|
1317
|
-
localRawMetadataSchema,
|
|
1318
1592
|
localSkillMetadataSchema,
|
|
1319
1593
|
stacksConfigSchema,
|
|
1320
1594
|
marketplaceSchema,
|
|
1595
|
+
sourceRevalidationSchema,
|
|
1321
1596
|
settingsFileSchema,
|
|
1322
|
-
importedSkillMetadataSchema,
|
|
1323
1597
|
projectSourceConfigSchema,
|
|
1324
1598
|
agentYamlGenerationSchema,
|
|
1325
1599
|
agentFrontmatterValidationSchema,
|
|
@@ -1331,6 +1605,24 @@ export {
|
|
|
1331
1605
|
splitMetadataValidationIssues,
|
|
1332
1606
|
validateNestingDepth,
|
|
1333
1607
|
warnUnknownFields,
|
|
1608
|
+
GlobalPairWriteViolation,
|
|
1609
|
+
withGateToken,
|
|
1610
|
+
assertGateToken,
|
|
1611
|
+
isPathWithin,
|
|
1612
|
+
readFile,
|
|
1613
|
+
readFileSafe,
|
|
1614
|
+
readFileOptional,
|
|
1615
|
+
fileExists,
|
|
1616
|
+
directoryExists,
|
|
1617
|
+
listDirectories,
|
|
1618
|
+
glob,
|
|
1619
|
+
writeFile,
|
|
1620
|
+
ensureDir,
|
|
1621
|
+
remove,
|
|
1622
|
+
removeDirIfEmpty,
|
|
1623
|
+
copy,
|
|
1624
|
+
extractFrontmatter,
|
|
1625
|
+
readSkillMetadata,
|
|
1334
1626
|
parseFrontmatter,
|
|
1335
1627
|
loadAllAgents,
|
|
1336
1628
|
loadMergedAgents,
|
|
@@ -1339,4 +1631,4 @@ export {
|
|
|
1339
1631
|
loadSkillsFromDir,
|
|
1340
1632
|
loadPluginSkills
|
|
1341
1633
|
};
|
|
1342
|
-
//# sourceMappingURL=chunk-
|
|
1634
|
+
//# sourceMappingURL=chunk-4VCWL2IG.js.map
|