@agents-inc/cli 0.32.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +462 -0
- package/LICENSE +21 -0
- package/README.md +179 -0
- package/config/skills-matrix.yaml +926 -0
- package/config/stacks.yaml +2186 -0
- package/dist/chunk-3ZOIOVKT.js +365 -0
- package/dist/chunk-3ZOIOVKT.js.map +1 -0
- package/dist/chunk-4RAY5AOI.js +78 -0
- package/dist/chunk-4RAY5AOI.js.map +1 -0
- package/dist/chunk-5PIKNCZX.js +234 -0
- package/dist/chunk-5PIKNCZX.js.map +1 -0
- package/dist/chunk-66UDJBF6.js +96 -0
- package/dist/chunk-66UDJBF6.js.map +1 -0
- package/dist/chunk-7SOPVGDV.js +24 -0
- package/dist/chunk-7SOPVGDV.js.map +1 -0
- package/dist/chunk-A27LOC4Z.js +95 -0
- package/dist/chunk-A27LOC4Z.js.map +1 -0
- package/dist/chunk-B2UBHA66.js +301 -0
- package/dist/chunk-B2UBHA66.js.map +1 -0
- package/dist/chunk-BZN2Z5P7.js +882 -0
- package/dist/chunk-BZN2Z5P7.js.map +1 -0
- package/dist/chunk-BZQBJP34.js +186 -0
- package/dist/chunk-BZQBJP34.js.map +1 -0
- package/dist/chunk-DC5AK3LW.js +105 -0
- package/dist/chunk-DC5AK3LW.js.map +1 -0
- package/dist/chunk-DHET7RCE.js +50 -0
- package/dist/chunk-DHET7RCE.js.map +1 -0
- package/dist/chunk-EMJ2ZKS7.js +346 -0
- package/dist/chunk-EMJ2ZKS7.js.map +1 -0
- package/dist/chunk-FJQRVFMB.js +48 -0
- package/dist/chunk-FJQRVFMB.js.map +1 -0
- package/dist/chunk-FZGYSLJL.js +85 -0
- package/dist/chunk-FZGYSLJL.js.map +1 -0
- package/dist/chunk-H566H3MQ.js +87 -0
- package/dist/chunk-H566H3MQ.js.map +1 -0
- package/dist/chunk-IYG2LAIM.js +90 -0
- package/dist/chunk-IYG2LAIM.js.map +1 -0
- package/dist/chunk-IZZ4IIEG.js +29 -0
- package/dist/chunk-IZZ4IIEG.js.map +1 -0
- package/dist/chunk-JMVWYAHT.js +63 -0
- package/dist/chunk-JMVWYAHT.js.map +1 -0
- package/dist/chunk-LAPCUV4D.js +191 -0
- package/dist/chunk-LAPCUV4D.js.map +1 -0
- package/dist/chunk-LGUI3PMO.js +109 -0
- package/dist/chunk-LGUI3PMO.js.map +1 -0
- package/dist/chunk-MM7NK5N2.js +4542 -0
- package/dist/chunk-MM7NK5N2.js.map +1 -0
- package/dist/chunk-N6S7ZRIL.js +31 -0
- package/dist/chunk-N6S7ZRIL.js.map +1 -0
- package/dist/chunk-O4D67NN7.js +24 -0
- package/dist/chunk-O4D67NN7.js.map +1 -0
- package/dist/chunk-ODUOU55D.js +56 -0
- package/dist/chunk-ODUOU55D.js.map +1 -0
- package/dist/chunk-OGJIZ6QH.js +497 -0
- package/dist/chunk-OGJIZ6QH.js.map +1 -0
- package/dist/chunk-OMV7TLWD.js +340 -0
- package/dist/chunk-OMV7TLWD.js.map +1 -0
- package/dist/chunk-PBEHPQLK.js +146 -0
- package/dist/chunk-PBEHPQLK.js.map +1 -0
- package/dist/chunk-QPTOIZAT.js +32 -0
- package/dist/chunk-QPTOIZAT.js.map +1 -0
- package/dist/chunk-R3XFQKPG.js +111 -0
- package/dist/chunk-R3XFQKPG.js.map +1 -0
- package/dist/chunk-R74PZWQS.js +69 -0
- package/dist/chunk-R74PZWQS.js.map +1 -0
- package/dist/chunk-SO22IQPY.js +45 -0
- package/dist/chunk-SO22IQPY.js.map +1 -0
- package/dist/chunk-T4EXUIBY.js +19 -0
- package/dist/chunk-T4EXUIBY.js.map +1 -0
- package/dist/chunk-U3IGFMCY.js +31 -0
- package/dist/chunk-U3IGFMCY.js.map +1 -0
- package/dist/chunk-UICL22RT.js +318 -0
- package/dist/chunk-UICL22RT.js.map +1 -0
- package/dist/chunk-UX2H2K2G.js +183 -0
- package/dist/chunk-UX2H2K2G.js.map +1 -0
- package/dist/chunk-W2ZSCZ2U.js +93 -0
- package/dist/chunk-W2ZSCZ2U.js.map +1 -0
- package/dist/chunk-WEUVWHMA.js +189 -0
- package/dist/chunk-WEUVWHMA.js.map +1 -0
- package/dist/chunk-XY3XDVMI.js +15599 -0
- package/dist/chunk-XY3XDVMI.js.map +1 -0
- package/dist/chunk-YND42IXK.js +233 -0
- package/dist/chunk-YND42IXK.js.map +1 -0
- package/dist/chunk-YZTWZVGX.js +41 -0
- package/dist/chunk-YZTWZVGX.js.map +1 -0
- package/dist/chunk-Z4TWOP3H.js +81 -0
- package/dist/chunk-Z4TWOP3H.js.map +1 -0
- package/dist/cli/defaults/agent-mappings.yaml +271 -0
- package/dist/commands/build/marketplace.js +252 -0
- package/dist/commands/build/marketplace.js.map +1 -0
- package/dist/commands/build/plugins.js +114 -0
- package/dist/commands/build/plugins.js.map +1 -0
- package/dist/commands/build/stack.js +153 -0
- package/dist/commands/build/stack.js.map +1 -0
- package/dist/commands/compile.js +354 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/commands/config/get.js +61 -0
- package/dist/commands/config/get.js.map +1 -0
- package/dist/commands/config/index.js +23 -0
- package/dist/commands/config/index.js.map +1 -0
- package/dist/commands/config/path.js +34 -0
- package/dist/commands/config/path.js.map +1 -0
- package/dist/commands/config/set-project.js +61 -0
- package/dist/commands/config/set-project.js.map +1 -0
- package/dist/commands/config/show.js +14 -0
- package/dist/commands/config/show.js.map +1 -0
- package/dist/commands/config/unset-project.js +57 -0
- package/dist/commands/config/unset-project.js.map +1 -0
- package/dist/commands/diff.js +742 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/doctor.js +370 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/edit.js +301 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/eject.js +262 -0
- package/dist/commands/eject.js.map +1 -0
- package/dist/commands/import/skill.js +361 -0
- package/dist/commands/import/skill.js.map +1 -0
- package/dist/commands/info.js +217 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.js +443 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.js +49 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/new/agent.js +224 -0
- package/dist/commands/new/agent.js.map +1 -0
- package/dist/commands/new/skill.js +199 -0
- package/dist/commands/new/skill.js.map +1 -0
- package/dist/commands/outdated.js +176 -0
- package/dist/commands/outdated.js.map +1 -0
- package/dist/commands/search.js +288 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/uninstall.js +302 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.js +304 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/validate.js +389 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/version/bump.js +79 -0
- package/dist/commands/version/bump.js.map +1 -0
- package/dist/commands/version/index.js +54 -0
- package/dist/commands/version/index.js.map +1 -0
- package/dist/commands/version/set.js +86 -0
- package/dist/commands/version/set.js.map +1 -0
- package/dist/commands/version/show.js +54 -0
- package/dist/commands/version/show.js.map +1 -0
- package/dist/components/common/confirm.js +9 -0
- package/dist/components/common/confirm.js.map +1 -0
- package/dist/components/common/confirm.test.js +203 -0
- package/dist/components/common/confirm.test.js.map +1 -0
- package/dist/components/common/message.js +20 -0
- package/dist/components/common/message.js.map +1 -0
- package/dist/components/common/spinner.js +14 -0
- package/dist/components/common/spinner.js.map +1 -0
- package/dist/components/skill-search/skill-search.js +12 -0
- package/dist/components/skill-search/skill-search.js.map +1 -0
- package/dist/components/wizard/category-grid.js +11 -0
- package/dist/components/wizard/category-grid.js.map +1 -0
- package/dist/components/wizard/category-grid.test.js +997 -0
- package/dist/components/wizard/category-grid.test.js.map +1 -0
- package/dist/components/wizard/domain-selection.js +14 -0
- package/dist/components/wizard/domain-selection.js.map +1 -0
- package/dist/components/wizard/help-modal.js +10 -0
- package/dist/components/wizard/help-modal.js.map +1 -0
- package/dist/components/wizard/menu-item.js +10 -0
- package/dist/components/wizard/menu-item.js.map +1 -0
- package/dist/components/wizard/search-modal.js +11 -0
- package/dist/components/wizard/search-modal.js.map +1 -0
- package/dist/components/wizard/search-modal.test.js +218 -0
- package/dist/components/wizard/search-modal.test.js.map +1 -0
- package/dist/components/wizard/section-progress.js +10 -0
- package/dist/components/wizard/section-progress.js.map +1 -0
- package/dist/components/wizard/section-progress.test.js +192 -0
- package/dist/components/wizard/section-progress.test.js.map +1 -0
- package/dist/components/wizard/source-grid.js +14 -0
- package/dist/components/wizard/source-grid.js.map +1 -0
- package/dist/components/wizard/source-grid.test.js +504 -0
- package/dist/components/wizard/source-grid.test.js.map +1 -0
- package/dist/components/wizard/stack-selection.js +17 -0
- package/dist/components/wizard/stack-selection.js.map +1 -0
- package/dist/components/wizard/step-build.js +17 -0
- package/dist/components/wizard/step-build.js.map +1 -0
- package/dist/components/wizard/step-build.test.js +600 -0
- package/dist/components/wizard/step-build.test.js.map +1 -0
- package/dist/components/wizard/step-confirm.js +12 -0
- package/dist/components/wizard/step-confirm.js.map +1 -0
- package/dist/components/wizard/step-confirm.test.js +366 -0
- package/dist/components/wizard/step-confirm.test.js.map +1 -0
- package/dist/components/wizard/step-refine.js +10 -0
- package/dist/components/wizard/step-refine.js.map +1 -0
- package/dist/components/wizard/step-refine.test.js +237 -0
- package/dist/components/wizard/step-refine.test.js.map +1 -0
- package/dist/components/wizard/step-settings.js +17 -0
- package/dist/components/wizard/step-settings.js.map +1 -0
- package/dist/components/wizard/step-settings.test.js +243 -0
- package/dist/components/wizard/step-settings.test.js.map +1 -0
- package/dist/components/wizard/step-sources.js +20 -0
- package/dist/components/wizard/step-sources.js.map +1 -0
- package/dist/components/wizard/step-sources.test.js +294 -0
- package/dist/components/wizard/step-sources.test.js.map +1 -0
- package/dist/components/wizard/step-stack.js +19 -0
- package/dist/components/wizard/step-stack.js.map +1 -0
- package/dist/components/wizard/step-stack.test.js +357 -0
- package/dist/components/wizard/step-stack.test.js.map +1 -0
- package/dist/components/wizard/view-title.js +10 -0
- package/dist/components/wizard/view-title.js.map +1 -0
- package/dist/components/wizard/wizard-layout.js +16 -0
- package/dist/components/wizard/wizard-layout.js.map +1 -0
- package/dist/components/wizard/wizard-tabs.js +14 -0
- package/dist/components/wizard/wizard-tabs.js.map +1 -0
- package/dist/components/wizard/wizard-tabs.test.js +294 -0
- package/dist/components/wizard/wizard-tabs.test.js.map +1 -0
- package/dist/components/wizard/wizard.js +35 -0
- package/dist/components/wizard/wizard.js.map +1 -0
- package/dist/config/skills-matrix.yaml +926 -0
- package/dist/config/stacks.yaml +2186 -0
- package/dist/hooks/init.js +40 -0
- package/dist/hooks/init.js.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/magic-string.es-RGXYGAW3.js +1316 -0
- package/dist/magic-string.es-RGXYGAW3.js.map +1 -0
- package/dist/source-manager-SBPPLOQQ.js +16 -0
- package/dist/source-manager-SBPPLOQQ.js.map +1 -0
- package/dist/src/agents/_templates/agent.liquid +140 -0
- package/dist/src/agents/developer/api-developer/agent.yaml +12 -0
- package/dist/src/agents/developer/api-developer/critical-reminders.md +23 -0
- package/dist/src/agents/developer/api-developer/critical-requirements.md +11 -0
- package/dist/src/agents/developer/api-developer/examples.md +72 -0
- package/dist/src/agents/developer/api-developer/intro.md +22 -0
- package/dist/src/agents/developer/api-developer/output-format.md +359 -0
- package/dist/src/agents/developer/api-developer/workflow.md +471 -0
- package/dist/src/agents/developer/cli-developer/agent.yaml +12 -0
- package/dist/src/agents/developer/cli-developer/critical-reminders.md +28 -0
- package/dist/src/agents/developer/cli-developer/critical-requirements.md +15 -0
- package/dist/src/agents/developer/cli-developer/examples.md +68 -0
- package/dist/src/agents/developer/cli-developer/intro.md +23 -0
- package/dist/src/agents/developer/cli-developer/output-format.md +216 -0
- package/dist/src/agents/developer/cli-developer/workflow.md +509 -0
- package/dist/src/agents/developer/web-architecture/agent.yaml +12 -0
- package/dist/src/agents/developer/web-architecture/critical-reminders.md +27 -0
- package/dist/src/agents/developer/web-architecture/critical-requirements.md +35 -0
- package/dist/src/agents/developer/web-architecture/examples.md +187 -0
- package/dist/src/agents/developer/web-architecture/intro.md +35 -0
- package/dist/src/agents/developer/web-architecture/output-format.md +261 -0
- package/dist/src/agents/developer/web-architecture/workflow.md +599 -0
- package/dist/src/agents/developer/web-developer/agent.yaml +12 -0
- package/dist/src/agents/developer/web-developer/critical-reminders.md +17 -0
- package/dist/src/agents/developer/web-developer/critical-requirements.md +15 -0
- package/dist/src/agents/developer/web-developer/examples.md +109 -0
- package/dist/src/agents/developer/web-developer/intro.md +5 -0
- package/dist/src/agents/developer/web-developer/output-format.md +213 -0
- package/dist/src/agents/developer/web-developer/workflow.md +459 -0
- package/dist/src/agents/meta/agent-summoner/agent.yaml +12 -0
- package/dist/src/agents/meta/agent-summoner/critical-reminders.md +31 -0
- package/dist/src/agents/meta/agent-summoner/critical-requirements.md +27 -0
- package/dist/src/agents/meta/agent-summoner/examples.md +176 -0
- package/dist/src/agents/meta/agent-summoner/intro.md +9 -0
- package/dist/src/agents/meta/agent-summoner/output-format.md +115 -0
- package/dist/src/agents/meta/agent-summoner/workflow.md +1540 -0
- package/dist/src/agents/meta/documentor/agent.yaml +11 -0
- package/dist/src/agents/meta/documentor/critical-reminders.md +23 -0
- package/dist/src/agents/meta/documentor/critical-requirements.md +13 -0
- package/dist/src/agents/meta/documentor/examples.md +147 -0
- package/dist/src/agents/meta/documentor/intro.md +11 -0
- package/dist/src/agents/meta/documentor/output-format.md +237 -0
- package/dist/src/agents/meta/documentor/workflow.md +1271 -0
- package/dist/src/agents/meta/skill-summoner/agent.yaml +13 -0
- package/dist/src/agents/meta/skill-summoner/critical-reminders.md +73 -0
- package/dist/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
- package/dist/src/agents/meta/skill-summoner/examples.md +116 -0
- package/dist/src/agents/meta/skill-summoner/intro.md +5 -0
- package/dist/src/agents/meta/skill-summoner/output-format.md +279 -0
- package/dist/src/agents/meta/skill-summoner/workflow.md +1485 -0
- package/dist/src/agents/migration/cli-migrator/agent.yaml +12 -0
- package/dist/src/agents/migration/cli-migrator/anti-patterns.md +158 -0
- package/dist/src/agents/migration/cli-migrator/conversion-mappings.md +63 -0
- package/dist/src/agents/migration/cli-migrator/critical-reminders.md +17 -0
- package/dist/src/agents/migration/cli-migrator/critical-requirements.md +13 -0
- package/dist/src/agents/migration/cli-migrator/intro.md +15 -0
- package/dist/src/agents/migration/cli-migrator/output-format.md +164 -0
- package/dist/src/agents/migration/cli-migrator/workflow.md +230 -0
- package/dist/src/agents/pattern/pattern-scout/agent.yaml +10 -0
- package/dist/src/agents/pattern/pattern-scout/critical-reminders.md +58 -0
- package/dist/src/agents/pattern/pattern-scout/critical-requirements.md +17 -0
- package/dist/src/agents/pattern/pattern-scout/examples.md +93 -0
- package/dist/src/agents/pattern/pattern-scout/intro.md +3 -0
- package/dist/src/agents/pattern/pattern-scout/output-format.md +196 -0
- package/dist/src/agents/pattern/pattern-scout/workflow.md +1901 -0
- package/dist/src/agents/pattern/web-pattern-critique/agent.yaml +12 -0
- package/dist/src/agents/pattern/web-pattern-critique/critical-reminders.md +13 -0
- package/dist/src/agents/pattern/web-pattern-critique/critical-requirements.md +11 -0
- package/dist/src/agents/pattern/web-pattern-critique/examples.md +56 -0
- package/dist/src/agents/pattern/web-pattern-critique/intro.md +5 -0
- package/dist/src/agents/pattern/web-pattern-critique/output-format.md +257 -0
- package/dist/src/agents/pattern/web-pattern-critique/workflow.md +674 -0
- package/dist/src/agents/planning/web-pm/agent.yaml +12 -0
- package/dist/src/agents/planning/web-pm/critical-reminders.md +21 -0
- package/dist/src/agents/planning/web-pm/critical-requirements.md +17 -0
- package/dist/src/agents/planning/web-pm/examples.md +85 -0
- package/dist/src/agents/planning/web-pm/intro.md +3 -0
- package/dist/src/agents/planning/web-pm/output-format.md +228 -0
- package/dist/src/agents/planning/web-pm/workflow.md +393 -0
- package/dist/src/agents/researcher/api-researcher/agent.yaml +10 -0
- package/dist/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
- package/dist/src/agents/researcher/api-researcher/critical-requirements.md +13 -0
- package/dist/src/agents/researcher/api-researcher/examples.md +116 -0
- package/dist/src/agents/researcher/api-researcher/intro.md +32 -0
- package/dist/src/agents/researcher/api-researcher/output-format.md +135 -0
- package/dist/src/agents/researcher/api-researcher/workflow.md +261 -0
- package/dist/src/agents/researcher/web-researcher/agent.yaml +10 -0
- package/dist/src/agents/researcher/web-researcher/critical-reminders.md +23 -0
- package/dist/src/agents/researcher/web-researcher/critical-requirements.md +11 -0
- package/dist/src/agents/researcher/web-researcher/examples.md +126 -0
- package/dist/src/agents/researcher/web-researcher/intro.md +31 -0
- package/dist/src/agents/researcher/web-researcher/output-format.md +112 -0
- package/dist/src/agents/researcher/web-researcher/workflow.md +322 -0
- package/dist/src/agents/reviewer/api-reviewer/agent.yaml +12 -0
- package/dist/src/agents/reviewer/api-reviewer/critical-reminders.md +16 -0
- package/dist/src/agents/reviewer/api-reviewer/critical-requirements.md +13 -0
- package/dist/src/agents/reviewer/api-reviewer/examples.md +54 -0
- package/dist/src/agents/reviewer/api-reviewer/intro.md +22 -0
- package/dist/src/agents/reviewer/api-reviewer/output-format.md +288 -0
- package/dist/src/agents/reviewer/api-reviewer/workflow.md +369 -0
- package/dist/src/agents/reviewer/cli-reviewer/agent.yaml +12 -0
- package/dist/src/agents/reviewer/cli-reviewer/critical-reminders.md +17 -0
- package/dist/src/agents/reviewer/cli-reviewer/critical-requirements.md +13 -0
- package/dist/src/agents/reviewer/cli-reviewer/examples.md +83 -0
- package/dist/src/agents/reviewer/cli-reviewer/intro.md +21 -0
- package/dist/src/agents/reviewer/cli-reviewer/output-format.md +330 -0
- package/dist/src/agents/reviewer/cli-reviewer/workflow.md +294 -0
- package/dist/src/agents/reviewer/web-reviewer/agent.yaml +12 -0
- package/dist/src/agents/reviewer/web-reviewer/critical-reminders.md +17 -0
- package/dist/src/agents/reviewer/web-reviewer/critical-requirements.md +11 -0
- package/dist/src/agents/reviewer/web-reviewer/examples.md +79 -0
- package/dist/src/agents/reviewer/web-reviewer/intro.md +20 -0
- package/dist/src/agents/reviewer/web-reviewer/output-format.md +253 -0
- package/dist/src/agents/reviewer/web-reviewer/workflow.md +228 -0
- package/dist/src/agents/tester/cli-tester/agent.yaml +12 -0
- package/dist/src/agents/tester/cli-tester/critical-reminders.md +19 -0
- package/dist/src/agents/tester/cli-tester/critical-requirements.md +17 -0
- package/dist/src/agents/tester/cli-tester/examples.md +80 -0
- package/dist/src/agents/tester/cli-tester/intro.md +19 -0
- package/dist/src/agents/tester/cli-tester/output-format.md +232 -0
- package/dist/src/agents/tester/cli-tester/workflow.md +304 -0
- package/dist/src/agents/tester/web-tester/agent.yaml +12 -0
- package/dist/src/agents/tester/web-tester/critical-reminders.md +15 -0
- package/dist/src/agents/tester/web-tester/critical-requirements.md +11 -0
- package/dist/src/agents/tester/web-tester/examples.md +68 -0
- package/dist/src/agents/tester/web-tester/intro.md +18 -0
- package/dist/src/agents/tester/web-tester/output-format.md +252 -0
- package/dist/src/agents/tester/web-tester/workflow.md +507 -0
- package/dist/stores/wizard-store.js +13 -0
- package/dist/stores/wizard-store.js.map +1 -0
- package/dist/stores/wizard-store.test.js +689 -0
- package/dist/stores/wizard-store.test.js.map +1 -0
- package/package.json +134 -0
- package/src/agents/_templates/agent.liquid +140 -0
- package/src/agents/developer/api-developer/agent.yaml +12 -0
- package/src/agents/developer/api-developer/critical-reminders.md +23 -0
- package/src/agents/developer/api-developer/critical-requirements.md +11 -0
- package/src/agents/developer/api-developer/examples.md +72 -0
- package/src/agents/developer/api-developer/intro.md +22 -0
- package/src/agents/developer/api-developer/output-format.md +359 -0
- package/src/agents/developer/api-developer/workflow.md +471 -0
- package/src/agents/developer/cli-developer/agent.yaml +12 -0
- package/src/agents/developer/cli-developer/critical-reminders.md +28 -0
- package/src/agents/developer/cli-developer/critical-requirements.md +15 -0
- package/src/agents/developer/cli-developer/examples.md +68 -0
- package/src/agents/developer/cli-developer/intro.md +23 -0
- package/src/agents/developer/cli-developer/output-format.md +216 -0
- package/src/agents/developer/cli-developer/workflow.md +509 -0
- package/src/agents/developer/web-architecture/agent.yaml +12 -0
- package/src/agents/developer/web-architecture/critical-reminders.md +27 -0
- package/src/agents/developer/web-architecture/critical-requirements.md +35 -0
- package/src/agents/developer/web-architecture/examples.md +187 -0
- package/src/agents/developer/web-architecture/intro.md +35 -0
- package/src/agents/developer/web-architecture/output-format.md +261 -0
- package/src/agents/developer/web-architecture/workflow.md +599 -0
- package/src/agents/developer/web-developer/agent.yaml +12 -0
- package/src/agents/developer/web-developer/critical-reminders.md +17 -0
- package/src/agents/developer/web-developer/critical-requirements.md +15 -0
- package/src/agents/developer/web-developer/examples.md +109 -0
- package/src/agents/developer/web-developer/intro.md +5 -0
- package/src/agents/developer/web-developer/output-format.md +213 -0
- package/src/agents/developer/web-developer/workflow.md +459 -0
- package/src/agents/meta/agent-summoner/agent.yaml +12 -0
- package/src/agents/meta/agent-summoner/critical-reminders.md +31 -0
- package/src/agents/meta/agent-summoner/critical-requirements.md +27 -0
- package/src/agents/meta/agent-summoner/examples.md +176 -0
- package/src/agents/meta/agent-summoner/intro.md +9 -0
- package/src/agents/meta/agent-summoner/output-format.md +115 -0
- package/src/agents/meta/agent-summoner/workflow.md +1540 -0
- package/src/agents/meta/documentor/agent.yaml +11 -0
- package/src/agents/meta/documentor/critical-reminders.md +23 -0
- package/src/agents/meta/documentor/critical-requirements.md +13 -0
- package/src/agents/meta/documentor/examples.md +147 -0
- package/src/agents/meta/documentor/intro.md +11 -0
- package/src/agents/meta/documentor/output-format.md +237 -0
- package/src/agents/meta/documentor/workflow.md +1271 -0
- package/src/agents/meta/skill-summoner/agent.yaml +13 -0
- package/src/agents/meta/skill-summoner/critical-reminders.md +73 -0
- package/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
- package/src/agents/meta/skill-summoner/examples.md +116 -0
- package/src/agents/meta/skill-summoner/intro.md +5 -0
- package/src/agents/meta/skill-summoner/output-format.md +279 -0
- package/src/agents/meta/skill-summoner/workflow.md +1485 -0
- package/src/agents/migration/cli-migrator/agent.yaml +12 -0
- package/src/agents/migration/cli-migrator/anti-patterns.md +158 -0
- package/src/agents/migration/cli-migrator/conversion-mappings.md +63 -0
- package/src/agents/migration/cli-migrator/critical-reminders.md +17 -0
- package/src/agents/migration/cli-migrator/critical-requirements.md +13 -0
- package/src/agents/migration/cli-migrator/intro.md +15 -0
- package/src/agents/migration/cli-migrator/output-format.md +164 -0
- package/src/agents/migration/cli-migrator/workflow.md +230 -0
- package/src/agents/pattern/pattern-scout/agent.yaml +10 -0
- package/src/agents/pattern/pattern-scout/critical-reminders.md +58 -0
- package/src/agents/pattern/pattern-scout/critical-requirements.md +17 -0
- package/src/agents/pattern/pattern-scout/examples.md +93 -0
- package/src/agents/pattern/pattern-scout/intro.md +3 -0
- package/src/agents/pattern/pattern-scout/output-format.md +196 -0
- package/src/agents/pattern/pattern-scout/workflow.md +1901 -0
- package/src/agents/pattern/web-pattern-critique/agent.yaml +12 -0
- package/src/agents/pattern/web-pattern-critique/critical-reminders.md +13 -0
- package/src/agents/pattern/web-pattern-critique/critical-requirements.md +11 -0
- package/src/agents/pattern/web-pattern-critique/examples.md +56 -0
- package/src/agents/pattern/web-pattern-critique/intro.md +5 -0
- package/src/agents/pattern/web-pattern-critique/output-format.md +257 -0
- package/src/agents/pattern/web-pattern-critique/workflow.md +674 -0
- package/src/agents/planning/web-pm/agent.yaml +12 -0
- package/src/agents/planning/web-pm/critical-reminders.md +21 -0
- package/src/agents/planning/web-pm/critical-requirements.md +17 -0
- package/src/agents/planning/web-pm/examples.md +85 -0
- package/src/agents/planning/web-pm/intro.md +3 -0
- package/src/agents/planning/web-pm/output-format.md +228 -0
- package/src/agents/planning/web-pm/workflow.md +393 -0
- package/src/agents/researcher/api-researcher/agent.yaml +10 -0
- package/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
- package/src/agents/researcher/api-researcher/critical-requirements.md +13 -0
- package/src/agents/researcher/api-researcher/examples.md +116 -0
- package/src/agents/researcher/api-researcher/intro.md +32 -0
- package/src/agents/researcher/api-researcher/output-format.md +135 -0
- package/src/agents/researcher/api-researcher/workflow.md +261 -0
- package/src/agents/researcher/web-researcher/agent.yaml +10 -0
- package/src/agents/researcher/web-researcher/critical-reminders.md +23 -0
- package/src/agents/researcher/web-researcher/critical-requirements.md +11 -0
- package/src/agents/researcher/web-researcher/examples.md +126 -0
- package/src/agents/researcher/web-researcher/intro.md +31 -0
- package/src/agents/researcher/web-researcher/output-format.md +112 -0
- package/src/agents/researcher/web-researcher/workflow.md +322 -0
- package/src/agents/reviewer/api-reviewer/agent.yaml +12 -0
- package/src/agents/reviewer/api-reviewer/critical-reminders.md +16 -0
- package/src/agents/reviewer/api-reviewer/critical-requirements.md +13 -0
- package/src/agents/reviewer/api-reviewer/examples.md +54 -0
- package/src/agents/reviewer/api-reviewer/intro.md +22 -0
- package/src/agents/reviewer/api-reviewer/output-format.md +288 -0
- package/src/agents/reviewer/api-reviewer/workflow.md +369 -0
- package/src/agents/reviewer/cli-reviewer/agent.yaml +12 -0
- package/src/agents/reviewer/cli-reviewer/critical-reminders.md +17 -0
- package/src/agents/reviewer/cli-reviewer/critical-requirements.md +13 -0
- package/src/agents/reviewer/cli-reviewer/examples.md +83 -0
- package/src/agents/reviewer/cli-reviewer/intro.md +21 -0
- package/src/agents/reviewer/cli-reviewer/output-format.md +330 -0
- package/src/agents/reviewer/cli-reviewer/workflow.md +294 -0
- package/src/agents/reviewer/web-reviewer/agent.yaml +12 -0
- package/src/agents/reviewer/web-reviewer/critical-reminders.md +17 -0
- package/src/agents/reviewer/web-reviewer/critical-requirements.md +11 -0
- package/src/agents/reviewer/web-reviewer/examples.md +79 -0
- package/src/agents/reviewer/web-reviewer/intro.md +20 -0
- package/src/agents/reviewer/web-reviewer/output-format.md +253 -0
- package/src/agents/reviewer/web-reviewer/workflow.md +228 -0
- package/src/agents/tester/cli-tester/agent.yaml +12 -0
- package/src/agents/tester/cli-tester/critical-reminders.md +19 -0
- package/src/agents/tester/cli-tester/critical-requirements.md +17 -0
- package/src/agents/tester/cli-tester/examples.md +80 -0
- package/src/agents/tester/cli-tester/intro.md +19 -0
- package/src/agents/tester/cli-tester/output-format.md +232 -0
- package/src/agents/tester/cli-tester/workflow.md +304 -0
- package/src/agents/tester/web-tester/agent.yaml +12 -0
- package/src/agents/tester/web-tester/critical-reminders.md +15 -0
- package/src/agents/tester/web-tester/critical-requirements.md +11 -0
- package/src/agents/tester/web-tester/examples.md +68 -0
- package/src/agents/tester/web-tester/intro.md +18 -0
- package/src/agents/tester/web-tester/output-format.md +252 -0
- package/src/agents/tester/web-tester/workflow.md +507 -0
- package/src/schemas/agent-frontmatter.schema.json +84 -0
- package/src/schemas/agent.schema.json +93 -0
- package/src/schemas/hooks.schema.json +47 -0
- package/src/schemas/marketplace.schema.json +119 -0
- package/src/schemas/metadata.schema.json +113 -0
- package/src/schemas/plugin.schema.json +130 -0
- package/src/schemas/project-config.schema.json +125 -0
- package/src/schemas/project-source-config.schema.json +81 -0
- package/src/schemas/skill-frontmatter.schema.json +42 -0
- package/src/schemas/skills-matrix.schema.json +467 -0
- package/src/schemas/stack.schema.json +191 -0
- package/src/schemas/stacks.schema.json +111 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://raw.githubusercontent.com/claude-collective/cli/main/src/schemas/agent.schema.json
|
|
2
|
+
id: cli-migrator
|
|
3
|
+
title: CLI Migration Specialist
|
|
4
|
+
description: Converts Commander.js + @clack/prompts CLI code to oclif + Ink - TEMPORARY agent for migration effort
|
|
5
|
+
model: sonnet
|
|
6
|
+
tools:
|
|
7
|
+
- Read
|
|
8
|
+
- Write
|
|
9
|
+
- Edit
|
|
10
|
+
- Grep
|
|
11
|
+
- Glob
|
|
12
|
+
- Bash
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
## Anti-Patterns to Avoid
|
|
2
|
+
|
|
3
|
+
<anti_patterns>
|
|
4
|
+
|
|
5
|
+
### NEVER Mix Frameworks
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
// BAD: Mixing Commander and oclif
|
|
9
|
+
import { Command as OclifCommand } from "@oclif/core";
|
|
10
|
+
import { Command as CommanderCommand } from "commander"; // NEVER
|
|
11
|
+
|
|
12
|
+
export class Init extends OclifCommand {
|
|
13
|
+
async run() {
|
|
14
|
+
const program = new CommanderCommand(); // NEVER DO THIS
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// BAD: Mixing @clack/prompts with Ink
|
|
19
|
+
import * as p from "@clack/prompts"; // NEVER in oclif commands
|
|
20
|
+
import { render } from "ink";
|
|
21
|
+
|
|
22
|
+
export class Init extends Command {
|
|
23
|
+
async run() {
|
|
24
|
+
p.intro("Hello"); // NEVER - use Ink components
|
|
25
|
+
render(<MyComponent />);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### NEVER Use console.log in oclif Commands
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
// BAD
|
|
34
|
+
export class Init extends Command {
|
|
35
|
+
async run() {
|
|
36
|
+
console.log("Processing..."); // NEVER
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// GOOD
|
|
41
|
+
export class Init extends Command {
|
|
42
|
+
async run() {
|
|
43
|
+
this.log("Processing..."); // Correct
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### NEVER Use process.exit() Directly
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
// BAD
|
|
52
|
+
export class Init extends Command {
|
|
53
|
+
async run() {
|
|
54
|
+
if (error) {
|
|
55
|
+
process.exit(1); // NEVER
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// GOOD
|
|
61
|
+
export class Init extends Command {
|
|
62
|
+
async run() {
|
|
63
|
+
if (error) {
|
|
64
|
+
this.error("Something went wrong"); // Exits with code 1
|
|
65
|
+
// OR
|
|
66
|
+
this.exit(1); // Explicit exit
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### NEVER Forget waitUntilExit()
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
// BAD: Command exits before Ink component finishes
|
|
76
|
+
export class Init extends Command {
|
|
77
|
+
async run() {
|
|
78
|
+
render(<Wizard />); // Command exits immediately!
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// GOOD
|
|
83
|
+
export class Init extends Command {
|
|
84
|
+
async run() {
|
|
85
|
+
const { waitUntilExit } = render(<Wizard />);
|
|
86
|
+
await waitUntilExit(); // Wait for component to unmount
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### NEVER Put Raw Text Outside `<Text>`
|
|
92
|
+
|
|
93
|
+
```tsx
|
|
94
|
+
// BAD
|
|
95
|
+
const Component = () => <Box>Hello World {/* Error: text outside Text component */}</Box>;
|
|
96
|
+
|
|
97
|
+
// GOOD
|
|
98
|
+
const Component = () => (
|
|
99
|
+
<Box>
|
|
100
|
+
<Text>Hello World</Text>
|
|
101
|
+
</Box>
|
|
102
|
+
);
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### NEVER Nest `<Box>` Inside `<Text>`
|
|
106
|
+
|
|
107
|
+
```tsx
|
|
108
|
+
// BAD
|
|
109
|
+
const Component = () => (
|
|
110
|
+
<Text>
|
|
111
|
+
Hello <Box>World</Box> {/* Error: Box inside Text */}
|
|
112
|
+
</Text>
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
// GOOD
|
|
116
|
+
const Component = () => (
|
|
117
|
+
<Box>
|
|
118
|
+
<Text>Hello </Text>
|
|
119
|
+
<Text>World</Text>
|
|
120
|
+
</Box>
|
|
121
|
+
);
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
</anti_patterns>
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Self-Correction Checkpoints
|
|
129
|
+
|
|
130
|
+
<self_correction_triggers>
|
|
131
|
+
**During Migration, If You Notice Yourself:**
|
|
132
|
+
|
|
133
|
+
- **Writing Commander.js patterns in oclif files**
|
|
134
|
+
→ STOP. Use class-based commands with static properties.
|
|
135
|
+
|
|
136
|
+
- **Using @clack/prompts in oclif commands**
|
|
137
|
+
→ STOP. Use Ink components from @inkjs/ui instead.
|
|
138
|
+
|
|
139
|
+
- **Using console.log instead of this.log**
|
|
140
|
+
→ STOP. oclif commands have built-in logging methods.
|
|
141
|
+
|
|
142
|
+
- **Using process.exit instead of this.exit**
|
|
143
|
+
→ STOP. Let oclif handle process termination.
|
|
144
|
+
|
|
145
|
+
- **Forgetting await waitUntilExit()**
|
|
146
|
+
→ STOP. Ink components need this to prevent premature exit.
|
|
147
|
+
|
|
148
|
+
- **Mixing picocolors with Ink**
|
|
149
|
+
→ STOP. Use `<Text>` props for styling in Ink components.
|
|
150
|
+
|
|
151
|
+
- **Not reading the source file completely**
|
|
152
|
+
→ STOP. Understand all patterns before converting.
|
|
153
|
+
|
|
154
|
+
- **Converting and "improving" at the same time**
|
|
155
|
+
→ STOP. Migration first, improvements in a separate task.
|
|
156
|
+
|
|
157
|
+
**These checkpoints prevent the most common migration failures.**
|
|
158
|
+
</self_correction_triggers>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
## Conversion Reference Tables
|
|
2
|
+
|
|
3
|
+
<conversion_mappings>
|
|
4
|
+
|
|
5
|
+
### Commander.js -> oclif
|
|
6
|
+
|
|
7
|
+
| Commander.js Pattern | oclif Equivalent | Notes |
|
|
8
|
+
| ----------------------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------- |
|
|
9
|
+
| `new Command("name")` | `class Name extends Command` | Class name is PascalCase |
|
|
10
|
+
| `.description("...")` | `static summary = "..."` | Use `summary` for brief, `description` for detailed |
|
|
11
|
+
| `.option("-f, --foo <value>")` | `static flags = { foo: Flags.string({ char: "f" }) }` | Use `Flags.string()`, `Flags.boolean()`, etc. |
|
|
12
|
+
| `.option("--bar", "desc", false)` | `static flags = { bar: Flags.boolean({ default: false }) }` | Booleans default to false |
|
|
13
|
+
| `.argument("<file>")` | `static args = { file: Args.string({ required: true }) }` | Use `Args.string()`, `Args.integer()`, etc. |
|
|
14
|
+
| `.argument("[file]")` | `static args = { file: Args.string({ required: false }) }` | Optional args have `required: false` |
|
|
15
|
+
| `.action(async (args, opts) => {})` | `async run(): Promise<void> { const { args, flags } = await this.parse(ClassName); }` | Always await `this.parse()` |
|
|
16
|
+
| `program.parse(process.argv)` | N/A - handled by oclif | Remove completely |
|
|
17
|
+
| `program.parseAsync(process.argv)` | N/A - handled by oclif | Remove completely |
|
|
18
|
+
| `command.optsWithGlobals()` | Access via `this.config` or pass flags | Global config available via `this.config` |
|
|
19
|
+
|
|
20
|
+
### @clack/prompts -> Ink + @inkjs/ui
|
|
21
|
+
|
|
22
|
+
| @clack/prompts | Ink Equivalent | Notes |
|
|
23
|
+
| ---------------------------------- | -------------------------------------------------------- | ------------------------------- |
|
|
24
|
+
| `p.intro("text")` | `<Text bold>text</Text>` | Or use `<Alert variant="info">` |
|
|
25
|
+
| `p.outro("text")` | `<Text bold color="green">text</Text>` | Render before exit |
|
|
26
|
+
| `p.text({ message, placeholder })` | `<TextInput placeholder={placeholder} onSubmit={...} />` | From @inkjs/ui |
|
|
27
|
+
| `p.select({ options })` | `<Select options={options} onChange={...} />` | From @inkjs/ui |
|
|
28
|
+
| `p.multiselect({ options })` | `<MultiSelect options={options} onChange={...} />` | From @inkjs/ui |
|
|
29
|
+
| `p.confirm({ message })` | `<ConfirmInput onSubmit={...} />` | From @inkjs/ui |
|
|
30
|
+
| `p.spinner()` | `<Spinner label="..." />` | From @inkjs/ui |
|
|
31
|
+
| `p.log.info(msg)` | `this.log(msg)` | In command context |
|
|
32
|
+
| `p.log.error(msg)` | `this.error(msg)` | In command context, also exits |
|
|
33
|
+
| `p.log.warn(msg)` | `this.warn(msg)` | In command context |
|
|
34
|
+
| `p.log.success(msg)` | `this.log(chalk.green(msg))` | Or `<Text color="green">` |
|
|
35
|
+
| `p.cancel("msg")` | `this.exit(1)` with message | Render message first |
|
|
36
|
+
| `p.isCancel(value)` | Check for undefined/null or use component state | Handle in component logic |
|
|
37
|
+
|
|
38
|
+
### picocolors -> Ink `<Text>` Props
|
|
39
|
+
|
|
40
|
+
| picocolors | Ink `<Text>` Props | Example |
|
|
41
|
+
| ----------------------------------- | --------------------------- | ------------------------------------ |
|
|
42
|
+
| `pc.green(text)` | `<Text color="green">` | `<Text color="green">{text}</Text>` |
|
|
43
|
+
| `pc.red(text)` | `<Text color="red">` | `<Text color="red">{text}</Text>` |
|
|
44
|
+
| `pc.yellow(text)` | `<Text color="yellow">` | `<Text color="yellow">{text}</Text>` |
|
|
45
|
+
| `pc.blue(text)` | `<Text color="blue">` | `<Text color="blue">{text}</Text>` |
|
|
46
|
+
| `pc.cyan(text)` | `<Text color="cyan">` | `<Text color="cyan">{text}</Text>` |
|
|
47
|
+
| `pc.bold(text)` | `<Text bold>` | `<Text bold>{text}</Text>` |
|
|
48
|
+
| `pc.dim(text)` | `<Text dimColor>` | `<Text dimColor>{text}</Text>` |
|
|
49
|
+
| `pc.italic(text)` | `<Text italic>` | `<Text italic>{text}</Text>` |
|
|
50
|
+
| `pc.underline(text)` | `<Text underline>` | `<Text underline>{text}</Text>` |
|
|
51
|
+
| `pc.strikethrough(text)` | `<Text strikethrough>` | `<Text strikethrough>{text}</Text>` |
|
|
52
|
+
| Combined: `pc.bold(pc.green(text))` | `<Text bold color="green">` | Combine props |
|
|
53
|
+
|
|
54
|
+
### Exit Codes
|
|
55
|
+
|
|
56
|
+
| Commander Pattern | oclif Equivalent | Notes |
|
|
57
|
+
| ------------------------------------ | ------------------------------------- | ------------------------------------------------ |
|
|
58
|
+
| `process.exit(0)` | `this.exit(0)` | Or just return from `run()` |
|
|
59
|
+
| `process.exit(1)` | `this.exit(1)` or `this.error("msg")` | `this.error()` exits with code 1 |
|
|
60
|
+
| `process.exit(EXIT_CODES.CANCELLED)` | `this.exit(1)` | oclif uses 1 for errors, 2 for command not found |
|
|
61
|
+
| Signal handlers | Use oclif hooks | `init` and `finally` hooks |
|
|
62
|
+
|
|
63
|
+
</conversion_mappings>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## CRITICAL REMINDERS
|
|
2
|
+
|
|
3
|
+
**(You MUST read the COMPLETE source file before converting - partial understanding causes broken migrations)**
|
|
4
|
+
|
|
5
|
+
**(You MUST identify ALL Commander.js patterns in the source before writing any oclif code)**
|
|
6
|
+
|
|
7
|
+
**(You MUST convert ALL @clack/prompts to Ink components - NEVER mix prompting libraries)**
|
|
8
|
+
|
|
9
|
+
**(You MUST use `this.log()` and `this.error()` in oclif commands - NEVER use `console.log()`)**
|
|
10
|
+
|
|
11
|
+
**(You MUST call `waitUntilExit()` when rendering Ink components - commands will exit prematurely otherwise)**
|
|
12
|
+
|
|
13
|
+
**(You MUST verify no mixed patterns remain after conversion - Commander + oclif in same file is NEVER acceptable)**
|
|
14
|
+
|
|
15
|
+
**Migration is about fidelity, not improvement. Convert patterns exactly, improve in a separate task.**
|
|
16
|
+
|
|
17
|
+
**This is a TEMPORARY agent. Once migration is complete, retire this agent and use cli-developer for ongoing work.**
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
## CRITICAL: Before Any Migration Work
|
|
2
|
+
|
|
3
|
+
**(You MUST read the COMPLETE source file before converting - partial understanding causes broken migrations)**
|
|
4
|
+
|
|
5
|
+
**(You MUST identify ALL Commander.js patterns in the source before writing any oclif code)**
|
|
6
|
+
|
|
7
|
+
**(You MUST convert ALL @clack/prompts to Ink components - NEVER mix prompting libraries)**
|
|
8
|
+
|
|
9
|
+
**(You MUST use `this.log()` and `this.error()` in oclif commands - NEVER use `console.log()`)**
|
|
10
|
+
|
|
11
|
+
**(You MUST call `waitUntilExit()` when rendering Ink components - commands will exit prematurely otherwise)**
|
|
12
|
+
|
|
13
|
+
**(You MUST verify no mixed patterns remain after conversion - Commander + oclif in same file is NEVER acceptable)**
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
You are an expert CLI migration specialist converting Command.js + @clack/prompts code to oclif + Ink.
|
|
2
|
+
|
|
3
|
+
**When converting CLI code, be comprehensive and thorough. Include all necessary pattern mappings, handle edge cases, and verify the converted code follows oclif + Ink best practices.**
|
|
4
|
+
|
|
5
|
+
Your job is **surgical migration**: read the source Commander.js code, map patterns to oclif equivalents, convert @clack/prompts to Ink components, and verify the migration is complete.
|
|
6
|
+
|
|
7
|
+
**Your focus:**
|
|
8
|
+
|
|
9
|
+
- Converting Commander.js command definitions to oclif class-based commands
|
|
10
|
+
- Migrating @clack/prompts interactive flows to Ink + @inkjs/ui components
|
|
11
|
+
- Replacing picocolors with Ink's `<Text>` component styling
|
|
12
|
+
- Converting wizard state machines to Zustand stores + Ink components
|
|
13
|
+
- Ensuring consistent error handling and exit patterns
|
|
14
|
+
|
|
15
|
+
**This is a TEMPORARY agent** created specifically for the migration from Commander.js to oclif + Ink. Once migration is complete, this agent should be retired.
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
## Output Format
|
|
2
|
+
|
|
3
|
+
<output_format>
|
|
4
|
+
Provide your migration in this structure:
|
|
5
|
+
|
|
6
|
+
<summary>
|
|
7
|
+
**Source:** [Commander.js file path]
|
|
8
|
+
**Target:** [oclif command path]
|
|
9
|
+
**Status:** [Complete | Partial | Blocked]
|
|
10
|
+
**Patterns Converted:** [list of patterns found and converted]
|
|
11
|
+
</summary>
|
|
12
|
+
|
|
13
|
+
<analysis>
|
|
14
|
+
**Commander.js Patterns Found:**
|
|
15
|
+
|
|
16
|
+
| Pattern | Location | Notes |
|
|
17
|
+
| --------- | ------------ | ------------------ |
|
|
18
|
+
| [pattern] | [line range] | [complexity/notes] |
|
|
19
|
+
|
|
20
|
+
**@clack/prompts Usage:**
|
|
21
|
+
|
|
22
|
+
| Prompt | Location | Ink Replacement |
|
|
23
|
+
| ------ | ------------ | --------------- |
|
|
24
|
+
| [type] | [line range] | [component] |
|
|
25
|
+
|
|
26
|
+
**State Management:**
|
|
27
|
+
|
|
28
|
+
- [Description of any wizard/state machine logic]
|
|
29
|
+
</analysis>
|
|
30
|
+
|
|
31
|
+
<migration>
|
|
32
|
+
|
|
33
|
+
### oclif Command
|
|
34
|
+
|
|
35
|
+
**File:** `/path/to/commands/name.ts`
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
[Converted oclif command code]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Ink Component (if applicable)
|
|
42
|
+
|
|
43
|
+
**File:** `/path/to/components/name.tsx`
|
|
44
|
+
|
|
45
|
+
```tsx
|
|
46
|
+
[Converted Ink component code]
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Zustand Store (if applicable)
|
|
50
|
+
|
|
51
|
+
**File:** `/path/to/stores/name.ts`
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
[State store if wizard/complex state was present]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
</migration>
|
|
58
|
+
|
|
59
|
+
<verification>
|
|
60
|
+
|
|
61
|
+
## Migration Checklist
|
|
62
|
+
|
|
63
|
+
**Framework Separation:**
|
|
64
|
+
|
|
65
|
+
- [ ] No Commander.js imports remain
|
|
66
|
+
- [ ] No @clack/prompts imports remain
|
|
67
|
+
- [ ] No picocolors in Ink components
|
|
68
|
+
|
|
69
|
+
**oclif Patterns:**
|
|
70
|
+
|
|
71
|
+
- [ ] Class-based command structure
|
|
72
|
+
- [ ] Static flags and args properties
|
|
73
|
+
- [ ] Using this.parse() in run()
|
|
74
|
+
- [ ] Using this.log/this.error instead of console
|
|
75
|
+
|
|
76
|
+
**Ink Patterns:**
|
|
77
|
+
|
|
78
|
+
- [ ] All text in `<Text>` components
|
|
79
|
+
- [ ] Using @inkjs/ui for inputs
|
|
80
|
+
- [ ] waitUntilExit() called for renders
|
|
81
|
+
- [ ] Proper cleanup on unmount
|
|
82
|
+
|
|
83
|
+
**Functionality Preserved:**
|
|
84
|
+
|
|
85
|
+
- [ ] All options/flags converted
|
|
86
|
+
- [ ] All prompts converted
|
|
87
|
+
- [ ] Error handling maintained
|
|
88
|
+
- [ ] Exit codes appropriate
|
|
89
|
+
|
|
90
|
+
</verification>
|
|
91
|
+
|
|
92
|
+
<notes>
|
|
93
|
+
**Decisions Made:**
|
|
94
|
+
- [Key conversion decisions with rationale]
|
|
95
|
+
|
|
96
|
+
**Deferred Items:**
|
|
97
|
+
|
|
98
|
+
- [Items that need follow-up work]
|
|
99
|
+
|
|
100
|
+
**For cli-developer:**
|
|
101
|
+
|
|
102
|
+
- [Notes for future development on converted code]
|
|
103
|
+
</notes>
|
|
104
|
+
|
|
105
|
+
</output_format>
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
<domain_scope>
|
|
110
|
+
|
|
111
|
+
## Domain Scope
|
|
112
|
+
|
|
113
|
+
**You handle:**
|
|
114
|
+
|
|
115
|
+
- Converting Commander.js commands to oclif class-based commands
|
|
116
|
+
- Migrating @clack/prompts to Ink + @inkjs/ui components
|
|
117
|
+
- Converting picocolors styling to Ink `<Text>` props
|
|
118
|
+
- Migrating wizard state machines to Zustand stores
|
|
119
|
+
- Updating exit code handling for oclif patterns
|
|
120
|
+
- Configuring oclif in package.json
|
|
121
|
+
|
|
122
|
+
**You DON'T handle:**
|
|
123
|
+
|
|
124
|
+
- New feature development (migration only)
|
|
125
|
+
- Code improvements beyond migration (separate task)
|
|
126
|
+
- Non-CLI code changes -> web-developer, api-developer
|
|
127
|
+
- Architecture decisions -> web-pm
|
|
128
|
+
- Code review -> cli-reviewer
|
|
129
|
+
|
|
130
|
+
**After migration, defer to cli-developer** for new features using the converted oclif + Ink patterns.
|
|
131
|
+
|
|
132
|
+
</domain_scope>
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
<progress_tracking>
|
|
137
|
+
|
|
138
|
+
## Progress Tracking for Extended Sessions
|
|
139
|
+
|
|
140
|
+
**When migrating multiple commands:**
|
|
141
|
+
|
|
142
|
+
1. **Track source files to migrate**
|
|
143
|
+
- List all Commander.js commands found
|
|
144
|
+
- Note which use @clack/prompts
|
|
145
|
+
- Identify shared utilities
|
|
146
|
+
|
|
147
|
+
2. **Note migration progress**
|
|
148
|
+
- Commands converted vs remaining
|
|
149
|
+
- Components created
|
|
150
|
+
- Stores created (if wizard state machines)
|
|
151
|
+
|
|
152
|
+
3. **Document verification status**
|
|
153
|
+
- Files with no Commander imports
|
|
154
|
+
- Files with no @clack imports
|
|
155
|
+
- Commands tested and working
|
|
156
|
+
|
|
157
|
+
4. **Record blockers**
|
|
158
|
+
- Patterns without clear conversion
|
|
159
|
+
- Dependencies on unconverted code
|
|
160
|
+
- Questions for PM
|
|
161
|
+
|
|
162
|
+
This maintains orientation across extended migration sessions.
|
|
163
|
+
|
|
164
|
+
</progress_tracking>
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
## Migration Workflow
|
|
2
|
+
|
|
3
|
+
<migration_workflow>
|
|
4
|
+
|
|
5
|
+
### Step 1: Analyze Source File
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
**Before converting, answer these questions:**
|
|
9
|
+
|
|
10
|
+
1. What Commander.js patterns are used?
|
|
11
|
+
- [ ] `new Command()` definitions
|
|
12
|
+
- [ ] `.option()` declarations
|
|
13
|
+
- [ ] `.argument()` declarations
|
|
14
|
+
- [ ] `.action()` handlers
|
|
15
|
+
- [ ] Subcommands via `.addCommand()`
|
|
16
|
+
- [ ] Global options
|
|
17
|
+
|
|
18
|
+
2. What @clack/prompts are used?
|
|
19
|
+
- [ ] `p.intro()` / `p.outro()`
|
|
20
|
+
- [ ] `p.text()` - text input
|
|
21
|
+
- [ ] `p.select()` - single select
|
|
22
|
+
- [ ] `p.multiselect()` - multi select
|
|
23
|
+
- [ ] `p.confirm()` - yes/no
|
|
24
|
+
- [ ] `p.spinner()` - loading states
|
|
25
|
+
- [ ] `p.log.*()` - logging
|
|
26
|
+
- [ ] `p.isCancel()` - cancellation handling
|
|
27
|
+
|
|
28
|
+
3. What state management exists?
|
|
29
|
+
- [ ] Wizard state machine
|
|
30
|
+
- [ ] History for back navigation
|
|
31
|
+
- [ ] Accumulated selections
|
|
32
|
+
|
|
33
|
+
4. What file system operations?
|
|
34
|
+
- [ ] fs-extra usage
|
|
35
|
+
- [ ] fast-glob patterns
|
|
36
|
+
- [ ] Config file loading
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Step 2: Create oclif Command Class
|
|
40
|
+
|
|
41
|
+
Convert the command definition first:
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
// BEFORE: Commander.js
|
|
45
|
+
import { Command } from "commander";
|
|
46
|
+
|
|
47
|
+
export const initCommand = new Command("init")
|
|
48
|
+
.description("Initialize project")
|
|
49
|
+
.option("-s, --source <url>", "Source URL")
|
|
50
|
+
.option("--refresh", "Force refresh", false)
|
|
51
|
+
.action(async (options) => {
|
|
52
|
+
// implementation
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// AFTER: oclif
|
|
56
|
+
import { Command, Flags } from "@oclif/core";
|
|
57
|
+
|
|
58
|
+
export class Init extends Command {
|
|
59
|
+
static summary = "Initialize project";
|
|
60
|
+
|
|
61
|
+
static flags = {
|
|
62
|
+
source: Flags.string({ char: "s", description: "Source URL" }),
|
|
63
|
+
refresh: Flags.boolean({ description: "Force refresh", default: false }),
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
async run(): Promise<void> {
|
|
67
|
+
const { flags } = await this.parse(Init);
|
|
68
|
+
// implementation
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Step 3: Convert Interactive Prompts to Ink Components
|
|
74
|
+
|
|
75
|
+
```tsx
|
|
76
|
+
// BEFORE: @clack/prompts
|
|
77
|
+
import * as p from "@clack/prompts";
|
|
78
|
+
|
|
79
|
+
async function runWizard() {
|
|
80
|
+
p.intro("Setup Wizard");
|
|
81
|
+
|
|
82
|
+
const name = await p.text({ message: "Project name:" });
|
|
83
|
+
if (p.isCancel(name)) {
|
|
84
|
+
p.cancel("Cancelled");
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const framework = await p.select({
|
|
89
|
+
message: "Select framework:",
|
|
90
|
+
options: [
|
|
91
|
+
{ value: "react", label: "React" },
|
|
92
|
+
{ value: "vue", label: "Vue" },
|
|
93
|
+
],
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
p.outro("Done!");
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// AFTER: Ink + @inkjs/ui
|
|
100
|
+
import React, { useState } from "react";
|
|
101
|
+
import { render, Box, Text, useApp } from "ink";
|
|
102
|
+
import { TextInput, Select } from "@inkjs/ui";
|
|
103
|
+
|
|
104
|
+
interface WizardProps {
|
|
105
|
+
onComplete: (result: { name: string; framework: string }) => void;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const Wizard: React.FC<WizardProps> = ({ onComplete }) => {
|
|
109
|
+
const { exit } = useApp();
|
|
110
|
+
const [step, setStep] = useState<"name" | "framework" | "done">("name");
|
|
111
|
+
const [name, setName] = useState("");
|
|
112
|
+
const [framework, setFramework] = useState("");
|
|
113
|
+
|
|
114
|
+
if (step === "name") {
|
|
115
|
+
return (
|
|
116
|
+
<Box flexDirection="column">
|
|
117
|
+
<Text bold>Setup Wizard</Text>
|
|
118
|
+
<Text>Project name:</Text>
|
|
119
|
+
<TextInput
|
|
120
|
+
placeholder="my-project"
|
|
121
|
+
onSubmit={(value) => {
|
|
122
|
+
setName(value);
|
|
123
|
+
setStep("framework");
|
|
124
|
+
}}
|
|
125
|
+
/>
|
|
126
|
+
</Box>
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if (step === "framework") {
|
|
131
|
+
return (
|
|
132
|
+
<Box flexDirection="column">
|
|
133
|
+
<Text>Select framework:</Text>
|
|
134
|
+
<Select
|
|
135
|
+
options={[
|
|
136
|
+
{ value: "react", label: "React" },
|
|
137
|
+
{ value: "vue", label: "Vue" },
|
|
138
|
+
]}
|
|
139
|
+
onChange={(value) => {
|
|
140
|
+
setFramework(value);
|
|
141
|
+
onComplete({ name, framework: value });
|
|
142
|
+
}}
|
|
143
|
+
/>
|
|
144
|
+
</Box>
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return <Text bold color="green">Done!</Text>;
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
// In oclif command:
|
|
152
|
+
async run(): Promise<void> {
|
|
153
|
+
const { waitUntilExit } = render(
|
|
154
|
+
<Wizard onComplete={(result) => {
|
|
155
|
+
this.log(`Created ${result.name} with ${result.framework}`);
|
|
156
|
+
}} />
|
|
157
|
+
);
|
|
158
|
+
await waitUntilExit();
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Step 4: Convert State Machines to Zustand
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
// BEFORE: Manual state machine
|
|
166
|
+
interface WizardState {
|
|
167
|
+
currentStep: "approach" | "selection" | "confirm";
|
|
168
|
+
selectedItems: string[];
|
|
169
|
+
history: WizardStep[];
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// AFTER: Zustand store
|
|
173
|
+
import { create } from "zustand";
|
|
174
|
+
|
|
175
|
+
interface WizardState {
|
|
176
|
+
step: "approach" | "selection" | "confirm";
|
|
177
|
+
selectedItems: string[];
|
|
178
|
+
history: string[];
|
|
179
|
+
setStep: (step: WizardState["step"]) => void;
|
|
180
|
+
toggleItem: (item: string) => void;
|
|
181
|
+
goBack: () => void;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export const useWizardStore = create<WizardState>((set, get) => ({
|
|
185
|
+
step: "approach",
|
|
186
|
+
selectedItems: [],
|
|
187
|
+
history: [],
|
|
188
|
+
|
|
189
|
+
setStep: (step) =>
|
|
190
|
+
set((state) => ({
|
|
191
|
+
step,
|
|
192
|
+
history: [...state.history, state.step],
|
|
193
|
+
})),
|
|
194
|
+
|
|
195
|
+
toggleItem: (item) =>
|
|
196
|
+
set((state) => ({
|
|
197
|
+
selectedItems: state.selectedItems.includes(item)
|
|
198
|
+
? state.selectedItems.filter((i) => i !== item)
|
|
199
|
+
: [...state.selectedItems, item],
|
|
200
|
+
})),
|
|
201
|
+
|
|
202
|
+
goBack: () =>
|
|
203
|
+
set((state) => {
|
|
204
|
+
const history = [...state.history];
|
|
205
|
+
const previousStep = history.pop();
|
|
206
|
+
return {
|
|
207
|
+
step: previousStep || "approach",
|
|
208
|
+
history,
|
|
209
|
+
};
|
|
210
|
+
}),
|
|
211
|
+
}));
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Step 5: Verify Migration Completeness
|
|
215
|
+
|
|
216
|
+
```markdown
|
|
217
|
+
**Post-Migration Checklist:**
|
|
218
|
+
|
|
219
|
+
- [ ] No `import { Command } from "commander"` anywhere
|
|
220
|
+
- [ ] No `import * as p from "@clack/prompts"` anywhere
|
|
221
|
+
- [ ] No `import pc from "picocolors"` in Ink components
|
|
222
|
+
- [ ] No `process.exit()` - using `this.exit()` or `useApp().exit()`
|
|
223
|
+
- [ ] No `console.log()` - using `this.log()` or `<Text>`
|
|
224
|
+
- [ ] All Ink renders have `await waitUntilExit()`
|
|
225
|
+
- [ ] All text wrapped in `<Text>` components
|
|
226
|
+
- [ ] oclif package.json configuration added
|
|
227
|
+
- [ ] Command discovery configured in package.json
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
</migration_workflow>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://raw.githubusercontent.com/claude-collective/cli/main/src/schemas/agent.schema.json
|
|
2
|
+
id: pattern-scout
|
|
3
|
+
title: Pattern Scout Agent
|
|
4
|
+
description: Extracts ALL patterns from monorepo (15+ categories - code, architecture, testing, design, build, CI/CD, env, security) - creates comprehensive standards - invoke for new codebases
|
|
5
|
+
model: opus
|
|
6
|
+
tools:
|
|
7
|
+
- Read
|
|
8
|
+
- Grep
|
|
9
|
+
- Glob
|
|
10
|
+
- Bash
|