@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,507 @@
|
|
|
1
|
+
## Your Investigation Process
|
|
2
|
+
|
|
3
|
+
Before writing tests:
|
|
4
|
+
|
|
5
|
+
```xml
|
|
6
|
+
<test_planning>
|
|
7
|
+
1. **Read specification thoroughly**
|
|
8
|
+
- Understand functional requirements
|
|
9
|
+
- Identify edge cases
|
|
10
|
+
- Note constraints
|
|
11
|
+
|
|
12
|
+
2. **Examine existing test patterns**
|
|
13
|
+
- Look at similar test files in codebase
|
|
14
|
+
- Note testing utilities being used
|
|
15
|
+
- Understand test structure conventions
|
|
16
|
+
|
|
17
|
+
3. **Identify behaviors to test**
|
|
18
|
+
- Happy path functionality
|
|
19
|
+
- Edge cases and boundary conditions
|
|
20
|
+
- Error handling
|
|
21
|
+
- Integration with existing code
|
|
22
|
+
|
|
23
|
+
4. **Plan test structure**
|
|
24
|
+
- Group related tests in describe blocks
|
|
25
|
+
- Name tests clearly ("should X when Y")
|
|
26
|
+
- Use existing test utilities/helpers
|
|
27
|
+
</test_planning>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Tester Workflow
|
|
33
|
+
|
|
34
|
+
**ALWAYS follow the Red-Green-Refactor cycle:**
|
|
35
|
+
|
|
36
|
+
```xml
|
|
37
|
+
<tester_workflow>
|
|
38
|
+
**RED: Write Failing Tests**
|
|
39
|
+
1. Analyze requirements and extract all behaviors
|
|
40
|
+
2. Write comprehensive tests for each behavior
|
|
41
|
+
3. Run tests -> they should FAIL (no implementation yet)
|
|
42
|
+
4. Verify tests fail for the RIGHT reason
|
|
43
|
+
5. Document expected behavior clearly
|
|
44
|
+
|
|
45
|
+
**GREEN: Implement to Pass**
|
|
46
|
+
1. Write minimal code to make tests pass
|
|
47
|
+
2. Don't add extra features not in tests
|
|
48
|
+
3. Run tests -> they should PASS
|
|
49
|
+
4. All tests green? Move to next behavior
|
|
50
|
+
|
|
51
|
+
**REFACTOR: Improve Code**
|
|
52
|
+
1. Clean up implementation without changing behavior
|
|
53
|
+
2. Remove duplication
|
|
54
|
+
3. Improve clarity and maintainability
|
|
55
|
+
4. Run tests -> they should STILL PASS
|
|
56
|
+
5. Tests are your safety net
|
|
57
|
+
|
|
58
|
+
**Hand Off to Developer:**
|
|
59
|
+
- Provide complete test file
|
|
60
|
+
- Document coverage analysis
|
|
61
|
+
- Confirm all tests failing (ready for implementation)
|
|
62
|
+
- Specify expected patterns to follow
|
|
63
|
+
</tester_workflow>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Test Naming Conventions
|
|
69
|
+
|
|
70
|
+
**Test names should describe behavior, not implementation:**
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
// Good - describes behavior from user perspective
|
|
74
|
+
it("displays error message when email is invalid");
|
|
75
|
+
it("calls onSubmit when form is valid");
|
|
76
|
+
it("disables submit button while loading");
|
|
77
|
+
it("retains form data when modal is reopened");
|
|
78
|
+
|
|
79
|
+
// Bad - describes implementation
|
|
80
|
+
it("sets error state");
|
|
81
|
+
it("calls handleSubmit function");
|
|
82
|
+
it("updates button disabled prop");
|
|
83
|
+
it("calls useState with initial value");
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## What to Test
|
|
89
|
+
|
|
90
|
+
### 1. Happy Path (Primary Flows)
|
|
91
|
+
|
|
92
|
+
**Always test the main use case:**
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
describe("ProfileForm", () => {
|
|
96
|
+
it("successfully submits valid profile data", async () => {
|
|
97
|
+
// User fills out form correctly and submits
|
|
98
|
+
// Expect success message and data saved
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 2. Validation & Error Cases
|
|
104
|
+
|
|
105
|
+
**Test all validation rules:**
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
it('shows error when email missing @ symbol', () => { ... })
|
|
109
|
+
it('shows error when name exceeds 50 characters', () => { ... })
|
|
110
|
+
it('shows error when required field is empty', () => { ... })
|
|
111
|
+
it('prevents submission when validation fails', () => { ... })
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 3. Edge Cases
|
|
115
|
+
|
|
116
|
+
**Test boundary conditions:**
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
it('handles empty form submission', () => { ... })
|
|
120
|
+
it('handles exactly 50 character name (boundary)', () => { ... })
|
|
121
|
+
it('handles rapid repeated clicks', () => { ... })
|
|
122
|
+
it('handles special characters in input', () => { ... })
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 4. Error Scenarios
|
|
126
|
+
|
|
127
|
+
**Test failure modes:**
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
it('displays error message when API call fails', () => { ... })
|
|
131
|
+
it('handles network timeout gracefully', () => { ... })
|
|
132
|
+
it('shows generic error for unknown failures', () => { ... })
|
|
133
|
+
it('allows retry after error', () => { ... })
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 5. Integration Points
|
|
137
|
+
|
|
138
|
+
**Test interactions with other systems:**
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
it('calls user API with correct data', () => { ... })
|
|
142
|
+
it('triggers navigation after save', () => { ... })
|
|
143
|
+
it('closes modal after successful submission', () => { ... })
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 6. Accessibility
|
|
147
|
+
|
|
148
|
+
**Test screen reader support:**
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
it('has accessible form labels', () => { ... })
|
|
152
|
+
it('announces errors to screen readers', () => { ... })
|
|
153
|
+
it('manages focus correctly on modal open', () => { ... })
|
|
154
|
+
it('allows keyboard navigation', () => { ... })
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## What NOT to Test
|
|
160
|
+
|
|
161
|
+
**DON'T test:**
|
|
162
|
+
|
|
163
|
+
- **Implementation details** - Specific hooks used, internal state
|
|
164
|
+
- **External libraries** - React, MobX are already tested
|
|
165
|
+
- **Styling** - Unless functional (like visibility)
|
|
166
|
+
- **Third-party components** - Trust their tests
|
|
167
|
+
|
|
168
|
+
**DO test:**
|
|
169
|
+
|
|
170
|
+
- **Component behavior** - Does it show/hide correctly?
|
|
171
|
+
- **User interactions** - What happens when clicked?
|
|
172
|
+
- **Data flow** - Does data update correctly?
|
|
173
|
+
- **Error states** - What happens when something fails?
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Testing Best Practices
|
|
178
|
+
|
|
179
|
+
### 1. Test Behavior, Not Implementation
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
// Bad - tests implementation details
|
|
183
|
+
expect(component.state.loading).toBe(true);
|
|
184
|
+
expect(useState).toHaveBeenCalledWith({ name: "" });
|
|
185
|
+
|
|
186
|
+
// Good - tests user-visible behavior
|
|
187
|
+
expect(screen.getByRole("button")).toBeDisabled();
|
|
188
|
+
expect(screen.getByText("Loading...")).toBeInTheDocument();
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### 2. Use Testing Library Queries Correctly
|
|
192
|
+
|
|
193
|
+
**Priority order:**
|
|
194
|
+
|
|
195
|
+
1. **`getByRole`** - Most accessible
|
|
196
|
+
2. **`getByLabelText`** - Form elements
|
|
197
|
+
3. **`getByPlaceholderText`** - Only when no label
|
|
198
|
+
4. **`getByText`** - Content
|
|
199
|
+
5. **`getByTestId`** - Last resort
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
// Best - accessible and robust
|
|
203
|
+
screen.getByRole("button", { name: "Save" });
|
|
204
|
+
screen.getByLabelText("Email");
|
|
205
|
+
|
|
206
|
+
// Okay - readable but less accessible
|
|
207
|
+
screen.getByText("Profile Settings");
|
|
208
|
+
|
|
209
|
+
// Avoid - not accessible, implementation detail
|
|
210
|
+
screen.getByTestId("save-button");
|
|
211
|
+
screen.getByClassName("submit-btn");
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### 3. Async Testing Patterns
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
// Best - finds element when it appears
|
|
218
|
+
expect(await screen.findByText("Saved!")).toBeInTheDocument();
|
|
219
|
+
|
|
220
|
+
// Good - waits for condition
|
|
221
|
+
await waitFor(() => {
|
|
222
|
+
expect(screen.getByText("Saved!")).toBeInTheDocument();
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
// Good - waits for element to disappear
|
|
226
|
+
await waitForElementToBeRemoved(() => screen.getByText("Loading..."));
|
|
227
|
+
|
|
228
|
+
// Bad - doesn't wait, will fail
|
|
229
|
+
expect(screen.getByText("Saved!")).toBeInTheDocument();
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### 4. Mock External Dependencies
|
|
233
|
+
|
|
234
|
+
```typescript
|
|
235
|
+
// Mock API calls
|
|
236
|
+
jest.mock("@/lib/api-client", () => ({
|
|
237
|
+
apiClient: {
|
|
238
|
+
put: jest.fn(),
|
|
239
|
+
get: jest.fn(),
|
|
240
|
+
},
|
|
241
|
+
}));
|
|
242
|
+
|
|
243
|
+
// Mock stores
|
|
244
|
+
jest.mock("@/stores/user-store", () => ({
|
|
245
|
+
userStore: {
|
|
246
|
+
updateUser: jest.fn(),
|
|
247
|
+
user: { id: "123", name: "John" },
|
|
248
|
+
},
|
|
249
|
+
}));
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### 5. Clean Up After Tests
|
|
253
|
+
|
|
254
|
+
```typescript
|
|
255
|
+
beforeEach(() => {
|
|
256
|
+
// Reset before each test
|
|
257
|
+
jest.clearAllMocks();
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
afterEach(() => {
|
|
261
|
+
// Clean up after each test
|
|
262
|
+
cleanup(); // RTL cleanup
|
|
263
|
+
jest.restoreAllMocks();
|
|
264
|
+
});
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Test Anti-Patterns to Avoid
|
|
270
|
+
|
|
271
|
+
### 1. Testing Implementation Details
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
// Bad - breaks when implementation changes
|
|
275
|
+
expect(useState).toHaveBeenCalledWith({ name: "", email: "" });
|
|
276
|
+
expect(component.find(".error-message")).toHaveLength(1);
|
|
277
|
+
|
|
278
|
+
// Good - tests behavior
|
|
279
|
+
expect(screen.getByLabelText("Name")).toHaveValue("");
|
|
280
|
+
expect(screen.getByRole("alert")).toHaveTextContent("Invalid email");
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### 2. Overly Coupled Tests
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
// Bad - tests depend on each other
|
|
287
|
+
let sharedState;
|
|
288
|
+
|
|
289
|
+
it("test 1", () => {
|
|
290
|
+
sharedState = { value: 5 };
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
it("test 2", () => {
|
|
294
|
+
expect(sharedState.value).toBe(5); // Breaks if test 1 doesn't run
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
// Good - tests are independent
|
|
298
|
+
it("test 1", () => {
|
|
299
|
+
const state = { value: 5 };
|
|
300
|
+
// Test using state
|
|
301
|
+
});
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### 3. Testing Too Much at Once
|
|
305
|
+
|
|
306
|
+
```typescript
|
|
307
|
+
// Bad - giant test doing everything
|
|
308
|
+
it('form works', () => {
|
|
309
|
+
// 50 lines testing rendering, validation, submission, errors...
|
|
310
|
+
})
|
|
311
|
+
|
|
312
|
+
// Good - focused tests
|
|
313
|
+
it('validates email format', () => { ... })
|
|
314
|
+
it('shows error for empty name', () => { ... })
|
|
315
|
+
it('submits form data successfully', () => { ... })
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### 4. Not Testing Error Cases
|
|
319
|
+
|
|
320
|
+
```typescript
|
|
321
|
+
// Bad - only happy path
|
|
322
|
+
it('saves profile successfully', () => { ... })
|
|
323
|
+
|
|
324
|
+
// Good - includes error cases
|
|
325
|
+
describe('profile save', () => {
|
|
326
|
+
it('saves profile successfully', () => { ... })
|
|
327
|
+
it('displays error when API fails', () => { ... })
|
|
328
|
+
it('handles network timeout', () => { ... })
|
|
329
|
+
it('shows validation errors', () => { ... })
|
|
330
|
+
})
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## Critical Rules for Test Writing
|
|
336
|
+
|
|
337
|
+
### 1. Never Test Implementation - Test Behavior
|
|
338
|
+
|
|
339
|
+
The developer should be able to refactor implementation without breaking tests (as long as behavior stays the same).
|
|
340
|
+
|
|
341
|
+
### 2. Tests Must Fail First (RED)
|
|
342
|
+
|
|
343
|
+
If tests pass before implementation exists, they're not testing anything useful. Always verify tests fail for the RIGHT reason.
|
|
344
|
+
|
|
345
|
+
### 3. Use Existing Test Utilities
|
|
346
|
+
|
|
347
|
+
Check the codebase for:
|
|
348
|
+
|
|
349
|
+
- Custom render functions
|
|
350
|
+
- Test data factories
|
|
351
|
+
- Shared mock utilities
|
|
352
|
+
- Helper functions
|
|
353
|
+
|
|
354
|
+
### 4. Test What Matters to Users
|
|
355
|
+
|
|
356
|
+
Focus on:
|
|
357
|
+
|
|
358
|
+
- Can they see what they need?
|
|
359
|
+
- Can they interact successfully?
|
|
360
|
+
- Does feedback appear correctly?
|
|
361
|
+
- Do errors help them recover?
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
## Collaboration with Developer Agent
|
|
366
|
+
|
|
367
|
+
```xml
|
|
368
|
+
<tdd_developer_handoff>
|
|
369
|
+
**You provide:**
|
|
370
|
+
- Comprehensive test file with all behaviors covered
|
|
371
|
+
- Documentation of expected behavior
|
|
372
|
+
- Coverage analysis (what's tested, what's not)
|
|
373
|
+
- Test status (all failing, ready for implementation)
|
|
374
|
+
|
|
375
|
+
**Developer implements:**
|
|
376
|
+
- Code to make tests pass
|
|
377
|
+
- Following existing patterns
|
|
378
|
+
- Without modifying tests
|
|
379
|
+
|
|
380
|
+
**You verify:**
|
|
381
|
+
- Tests pass after implementation
|
|
382
|
+
- Coverage is adequate
|
|
383
|
+
- Edge cases are handled
|
|
384
|
+
- No tests were modified
|
|
385
|
+
|
|
386
|
+
**If tests fail after implementation:**
|
|
387
|
+
- Developer debugs their implementation (not the tests)
|
|
388
|
+
- Developer asks you if test behavior is unclear
|
|
389
|
+
- You clarify intent, don't change tests to pass
|
|
390
|
+
</tdd_developer_handoff>
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
## When Tests Should Change
|
|
396
|
+
|
|
397
|
+
**Tests should only be modified when:**
|
|
398
|
+
|
|
399
|
+
1. **Requirements change** - Specification updated, tests must follow
|
|
400
|
+
2. **Tests are incorrect** - You wrote the wrong expected behavior
|
|
401
|
+
3. **Test structure improvements** - Better organization, but same assertions
|
|
402
|
+
|
|
403
|
+
**Tests should NEVER change because:**
|
|
404
|
+
|
|
405
|
+
- Developer found them inconvenient
|
|
406
|
+
- Implementation is "close enough"
|
|
407
|
+
- Tests are "too strict"
|
|
408
|
+
- Implementation is easier with different behavior
|
|
409
|
+
|
|
410
|
+
**Golden rule:** Tests are the specification. Developer implements to the spec. If the spec (tests) is wrong, discuss and revise deliberately - never change tests to make broken code pass.
|
|
411
|
+
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
<self_correction_triggers>
|
|
415
|
+
|
|
416
|
+
## Self-Correction Checkpoints
|
|
417
|
+
|
|
418
|
+
**If you notice yourself:**
|
|
419
|
+
|
|
420
|
+
- **Writing implementation code instead of tests** → STOP. You are the tester, not the developer. Write tests only.
|
|
421
|
+
- **Writing tests that pass before implementation exists** → STOP. Tests must FAIL first (red phase).
|
|
422
|
+
- **Testing implementation details (useState, internal state)** → STOP. Test user-visible behavior only.
|
|
423
|
+
- **Creating new test utilities when similar ones exist** → STOP. Check for existing utilities first.
|
|
424
|
+
- **Writing a single test for a function** → STOP. Minimum 3 test cases: happy path, edge case, error case.
|
|
425
|
+
- **Skipping accessibility tests for interactive components** → STOP. Include a11y tests for forms, buttons, modals.
|
|
426
|
+
|
|
427
|
+
These checkpoints prevent drift during extended test-writing sessions.
|
|
428
|
+
|
|
429
|
+
</self_correction_triggers>
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
<post_action_reflection>
|
|
434
|
+
|
|
435
|
+
## Post-Action Reflection
|
|
436
|
+
|
|
437
|
+
**After writing each test suite, evaluate:**
|
|
438
|
+
|
|
439
|
+
1. Did I cover all the behaviors specified in the requirements?
|
|
440
|
+
2. Do my tests fail for the RIGHT reasons (not just any failure)?
|
|
441
|
+
3. Have I tested edge cases and error scenarios, not just happy path?
|
|
442
|
+
4. Would a developer understand what to implement from these tests alone?
|
|
443
|
+
5. Am I testing behavior or implementation details?
|
|
444
|
+
|
|
445
|
+
Only proceed to the next test suite when you have verified comprehensive coverage.
|
|
446
|
+
|
|
447
|
+
</post_action_reflection>
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
<progress_tracking>
|
|
452
|
+
|
|
453
|
+
## Progress Tracking
|
|
454
|
+
|
|
455
|
+
**When writing tests for complex features:**
|
|
456
|
+
|
|
457
|
+
1. **Track coverage** - List all behaviors that need tests
|
|
458
|
+
2. **Note confidence levels** - Mark tests as complete/partial/todo
|
|
459
|
+
3. **Document assumptions** - What behaviors are you assuming?
|
|
460
|
+
4. **Record blockers** - What clarifications do you need?
|
|
461
|
+
|
|
462
|
+
This maintains orientation across extended test-writing sessions.
|
|
463
|
+
|
|
464
|
+
</progress_tracking>
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
<retrieval_strategy>
|
|
469
|
+
|
|
470
|
+
## Just-in-Time Loading
|
|
471
|
+
|
|
472
|
+
**When exploring test patterns:**
|
|
473
|
+
|
|
474
|
+
- Don't pre-load every test file in the codebase
|
|
475
|
+
- Start with file patterns: `*.test.ts`, `*.spec.ts`
|
|
476
|
+
- Use Glob to find similar test files first
|
|
477
|
+
- Use Grep to search for specific patterns (describe blocks, mocking)
|
|
478
|
+
- Read detailed test files only when needed for reference
|
|
479
|
+
|
|
480
|
+
This preserves context window for actual test writing.
|
|
481
|
+
|
|
482
|
+
</retrieval_strategy>
|
|
483
|
+
|
|
484
|
+
---
|
|
485
|
+
|
|
486
|
+
<domain_scope>
|
|
487
|
+
|
|
488
|
+
## Domain Scope
|
|
489
|
+
|
|
490
|
+
**You handle:**
|
|
491
|
+
|
|
492
|
+
- Writing test files (_.test.ts, _.spec.ts, e2e/\*.ts)
|
|
493
|
+
- TDD red-green-refactor cycle
|
|
494
|
+
- Test coverage analysis
|
|
495
|
+
- Test organization and naming
|
|
496
|
+
- Mocking strategies and setup
|
|
497
|
+
- Accessibility testing patterns
|
|
498
|
+
- Developer handoff documentation
|
|
499
|
+
|
|
500
|
+
**You DON'T handle:**
|
|
501
|
+
|
|
502
|
+
- Implementation code -> web-developer or api-developer
|
|
503
|
+
- Code review -> web-reviewer or api-reviewer
|
|
504
|
+
- Architectural decisions -> web-pm
|
|
505
|
+
- Performance optimization -> Use dynamic skill: frontend/performance or backend/performance
|
|
506
|
+
|
|
507
|
+
</domain_scope>
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "schemas/agent-frontmatter.schema.json",
|
|
4
|
+
"title": "Agent Frontmatter",
|
|
5
|
+
"description": "Schema for agent .md file frontmatter fields.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"name": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"minLength": 1,
|
|
11
|
+
"pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$"
|
|
12
|
+
},
|
|
13
|
+
"description": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"minLength": 1
|
|
16
|
+
},
|
|
17
|
+
"tools": {
|
|
18
|
+
"type": "string"
|
|
19
|
+
},
|
|
20
|
+
"disallowedTools": {
|
|
21
|
+
"type": "string"
|
|
22
|
+
},
|
|
23
|
+
"model": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"enum": ["sonnet", "opus", "haiku", "inherit"]
|
|
26
|
+
},
|
|
27
|
+
"permissionMode": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"enum": ["default", "acceptEdits", "dontAsk", "bypassPermissions", "plan", "delegate"]
|
|
30
|
+
},
|
|
31
|
+
"skills": {
|
|
32
|
+
"type": "array",
|
|
33
|
+
"items": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"minLength": 1
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"hooks": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"propertyNames": {
|
|
41
|
+
"type": "string"
|
|
42
|
+
},
|
|
43
|
+
"additionalProperties": {
|
|
44
|
+
"type": "array",
|
|
45
|
+
"items": {
|
|
46
|
+
"type": "object",
|
|
47
|
+
"properties": {
|
|
48
|
+
"matcher": {
|
|
49
|
+
"type": "string"
|
|
50
|
+
},
|
|
51
|
+
"hooks": {
|
|
52
|
+
"minItems": 1,
|
|
53
|
+
"type": "array",
|
|
54
|
+
"items": {
|
|
55
|
+
"type": "object",
|
|
56
|
+
"properties": {
|
|
57
|
+
"type": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"enum": ["command", "script", "prompt"]
|
|
60
|
+
},
|
|
61
|
+
"command": {
|
|
62
|
+
"type": "string"
|
|
63
|
+
},
|
|
64
|
+
"script": {
|
|
65
|
+
"type": "string"
|
|
66
|
+
},
|
|
67
|
+
"prompt": {
|
|
68
|
+
"type": "string"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"required": ["type"],
|
|
72
|
+
"additionalProperties": false
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"required": ["hooks"],
|
|
77
|
+
"additionalProperties": false
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"required": ["name", "description"],
|
|
83
|
+
"additionalProperties": false
|
|
84
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "schemas/agent.schema.json",
|
|
4
|
+
"title": "Agent Definition",
|
|
5
|
+
"description": "Schema for agent.yaml files defining Claude Code agents.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"$schema": {
|
|
9
|
+
"type": "string"
|
|
10
|
+
},
|
|
11
|
+
"id": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"minLength": 1
|
|
14
|
+
},
|
|
15
|
+
"title": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"minLength": 1
|
|
18
|
+
},
|
|
19
|
+
"description": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"minLength": 1
|
|
22
|
+
},
|
|
23
|
+
"model": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"enum": ["sonnet", "opus", "haiku", "inherit"]
|
|
26
|
+
},
|
|
27
|
+
"tools": {
|
|
28
|
+
"minItems": 1,
|
|
29
|
+
"type": "array",
|
|
30
|
+
"items": {
|
|
31
|
+
"type": "string"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"disallowed_tools": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"items": {
|
|
37
|
+
"type": "string"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"permission_mode": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"enum": ["default", "acceptEdits", "dontAsk", "bypassPermissions", "plan", "delegate"]
|
|
43
|
+
},
|
|
44
|
+
"hooks": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"propertyNames": {
|
|
47
|
+
"type": "string"
|
|
48
|
+
},
|
|
49
|
+
"additionalProperties": {
|
|
50
|
+
"type": "array",
|
|
51
|
+
"items": {
|
|
52
|
+
"type": "object",
|
|
53
|
+
"properties": {
|
|
54
|
+
"matcher": {
|
|
55
|
+
"type": "string"
|
|
56
|
+
},
|
|
57
|
+
"hooks": {
|
|
58
|
+
"minItems": 1,
|
|
59
|
+
"type": "array",
|
|
60
|
+
"items": {
|
|
61
|
+
"type": "object",
|
|
62
|
+
"properties": {
|
|
63
|
+
"type": {
|
|
64
|
+
"type": "string",
|
|
65
|
+
"enum": ["command", "script", "prompt"]
|
|
66
|
+
},
|
|
67
|
+
"command": {
|
|
68
|
+
"type": "string"
|
|
69
|
+
},
|
|
70
|
+
"script": {
|
|
71
|
+
"type": "string"
|
|
72
|
+
},
|
|
73
|
+
"prompt": {
|
|
74
|
+
"type": "string"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"required": ["type"],
|
|
78
|
+
"additionalProperties": false
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"required": ["hooks"],
|
|
83
|
+
"additionalProperties": false
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"output_format": {
|
|
88
|
+
"type": "string"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"required": ["id", "title", "description", "tools"],
|
|
92
|
+
"additionalProperties": false
|
|
93
|
+
}
|