@cregis-dev/cckit 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -3
- package/package.json +1 -1
- package/registry.json +234 -200
- package/src/commands/init.js +19 -15
- package/src/commands/update.js +9 -4
- package/src/core/plugin-installer.js +59 -13
- package/src/utils/fs.js +6 -1
- package/templates/bmad/_config/bmad-help.csv +2 -1
- package/templates/bmad/_config/files-manifest.csv +437 -431
- package/templates/bmad/_config/ides/claude-code.yaml +5 -5
- package/templates/bmad/_config/ides/trae.yaml +5 -5
- package/templates/bmad/_config/task-manifest.csv +7 -6
- package/templates/bmad/_config/workflow-manifest.csv +34 -34
- package/templates/bmad/bmm/agents/qa.md +1 -1
- package/templates/bmad/bmm/config.yaml +1 -1
- package/templates/bmad/bmm/module-help.csv +1 -1
- package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +1 -1
- package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md +1 -1
- package/templates/bmad/bmm/workflows/1-analysis/research/workflow-domain-research.md +1 -1
- package/templates/bmad/bmm/workflows/1-analysis/research/workflow-market-research.md +1 -1
- package/templates/bmad/bmm/workflows/1-analysis/research/workflow-technical-research.md +1 -1
- package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +1 -1
- package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +1 -1
- package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +1 -1
- package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +1 -1
- package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +1 -1
- package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +1 -1
- package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +1 -1
- package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +1 -1
- package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +1 -1
- package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +1 -1
- package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md +1 -1
- package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +1 -1
- package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +1 -1
- package/templates/bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +1 -1
- package/templates/bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +1 -1
- package/templates/bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +1 -1
- package/templates/bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +1 -1
- package/templates/bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +1 -1
- package/templates/bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +1 -1
- package/templates/bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +1 -1
- package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +1 -1
- package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +1 -1
- package/templates/bmad/bmm/workflows/document-project/workflow.yaml +1 -1
- package/templates/bmad/bmm/workflows/generate-project-context/workflow.md +1 -1
- package/templates/bmad/bmm/workflows/qa-generate-e2e-tests/workflow.yaml +2 -2
- package/templates/bmad/commands/bmad-bmm-check-implementation-readiness.md +2 -2
- package/templates/bmad/commands/bmad-bmm-code-review.md +4 -4
- package/templates/bmad/commands/bmad-bmm-correct-course.md +4 -4
- package/templates/bmad/commands/bmad-bmm-create-architecture.md +2 -2
- package/templates/bmad/commands/bmad-bmm-create-epics-and-stories.md +2 -2
- package/templates/bmad/commands/bmad-bmm-create-prd.md +2 -2
- package/templates/bmad/commands/bmad-bmm-create-product-brief.md +2 -2
- package/templates/bmad/commands/bmad-bmm-create-story.md +4 -4
- package/templates/bmad/commands/bmad-bmm-create-ux-design.md +2 -2
- package/templates/bmad/commands/bmad-bmm-dev-story.md +4 -4
- package/templates/bmad/commands/bmad-bmm-document-project.md +4 -4
- package/templates/bmad/commands/bmad-bmm-domain-research.md +2 -2
- package/templates/bmad/commands/bmad-bmm-edit-prd.md +2 -2
- package/templates/bmad/commands/bmad-bmm-generate-project-context.md +2 -2
- package/templates/bmad/commands/bmad-bmm-market-research.md +2 -2
- package/templates/bmad/commands/bmad-bmm-qa-generate-e2e-tests.md +4 -4
- package/templates/bmad/commands/bmad-bmm-quick-dev.md +2 -2
- package/templates/bmad/commands/bmad-bmm-quick-spec.md +2 -2
- package/templates/bmad/commands/bmad-bmm-retrospective.md +4 -4
- package/templates/bmad/commands/bmad-bmm-sprint-planning.md +4 -4
- package/templates/bmad/commands/bmad-bmm-sprint-status.md +4 -4
- package/templates/bmad/commands/bmad-bmm-technical-research.md +2 -2
- package/templates/bmad/commands/bmad-bmm-validate-prd.md +2 -2
- package/templates/bmad/commands/bmad-brainstorming.md +2 -2
- package/templates/bmad/commands/bmad-editorial-review-prose.md +1 -1
- package/templates/bmad/commands/bmad-editorial-review-structure.md +1 -1
- package/templates/bmad/commands/bmad-help.md +1 -1
- package/templates/bmad/commands/bmad-index-docs.md +1 -1
- package/templates/bmad/commands/bmad-party-mode.md +2 -2
- package/templates/bmad/commands/bmad-review-adversarial-general.md +1 -1
- package/templates/bmad/commands/bmad-review-edge-case-hunter.md +10 -0
- package/templates/bmad/commands/bmad-shard-doc.md +1 -1
- package/templates/bmad/commands/bmad-tea-teach-me-testing.md +2 -2
- package/templates/bmad/commands/bmad-tea-testarch-atdd.md +4 -4
- package/templates/bmad/commands/bmad-tea-testarch-automate.md +4 -4
- package/templates/bmad/commands/bmad-tea-testarch-ci.md +4 -4
- package/templates/bmad/commands/bmad-tea-testarch-framework.md +4 -4
- package/templates/bmad/commands/bmad-tea-testarch-nfr.md +4 -4
- package/templates/bmad/commands/bmad-tea-testarch-test-design.md +4 -4
- package/templates/bmad/commands/bmad-tea-testarch-test-review.md +4 -4
- package/templates/bmad/commands/bmad-tea-testarch-trace.md +4 -4
- package/templates/bmad/core/config.yaml +1 -1
- package/templates/bmad/core/module-help.csv +1 -0
- package/templates/bmad/core/tasks/editorial-review-prose.xml +1 -1
- package/templates/bmad/core/tasks/editorial-review-structure.xml +1 -1
- package/templates/bmad/core/tasks/help.md +1 -1
- package/templates/bmad/core/tasks/index-docs.xml +1 -1
- package/templates/bmad/core/tasks/review-adversarial-general.xml +1 -1
- package/templates/bmad/core/tasks/review-edge-case-hunter.xml +63 -0
- package/templates/bmad/core/tasks/shard-doc.xml +1 -1
- package/templates/bmad/core/workflows/advanced-elicitation/workflow.xml +1 -1
- package/templates/bmad/core/workflows/brainstorming/steps/step-01-session-setup.md +31 -18
- package/templates/bmad/core/workflows/brainstorming/steps/step-01b-continue.md +1 -1
- package/templates/bmad/core/workflows/brainstorming/steps/step-03-technique-execution.md +2 -2
- package/templates/bmad/core/workflows/brainstorming/steps/step-04-idea-organization.md +2 -2
- package/templates/bmad/core/workflows/brainstorming/workflow.md +4 -2
- package/templates/bmad/core/workflows/party-mode/workflow.md +1 -1
- package/templates/bmad/tea/config.yaml +5 -1
- package/templates/bmad/tea/testarch/knowledge/contract-testing.md +24 -2
- package/templates/bmad/tea/testarch/knowledge/pact-mcp.md +204 -0
- package/templates/bmad/tea/testarch/knowledge/pactjs-utils-consumer-helpers.md +211 -0
- package/templates/bmad/tea/testarch/knowledge/pactjs-utils-overview.md +210 -0
- package/templates/bmad/tea/testarch/knowledge/pactjs-utils-provider-verifier.md +315 -0
- package/templates/bmad/tea/testarch/knowledge/pactjs-utils-request-filter.md +224 -0
- package/templates/bmad/tea/testarch/tea-index.csv +5 -0
- package/templates/bmad/tea/workflows/testarch/README.md +1 -1
- package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-01-preflight-and-context.md +30 -0
- package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04-generate-tests.md +159 -57
- package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04a-subagent-api-failing.md +215 -0
- package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04b-subagent-e2e-failing.md +244 -0
- package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04c-aggregate.md +31 -15
- package/templates/bmad/tea/workflows/testarch/atdd/validation-report-20260127-095021.md +1 -1
- package/templates/bmad/tea/workflows/testarch/atdd/validation-report-20260127-102401.md +3 -3
- package/templates/bmad/tea/workflows/testarch/atdd/workflow.yaml +2 -2
- package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-01-preflight-and-context.md +32 -0
- package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03-generate-tests.md +215 -101
- package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03a-subagent-api.md +193 -0
- package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03b-subagent-backend.md +246 -0
- package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03b-subagent-e2e.md +213 -0
- package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03c-aggregate.md +38 -22
- package/templates/bmad/tea/workflows/testarch/automate/validation-report-20260127-095021.md +1 -1
- package/templates/bmad/tea/workflows/testarch/automate/validation-report-20260127-102401.md +3 -3
- package/templates/bmad/tea/workflows/testarch/automate/workflow.yaml +2 -2
- package/templates/bmad/tea/workflows/testarch/ci/steps-c/step-02-generate-pipeline.md +124 -1
- package/templates/bmad/tea/workflows/testarch/ci/steps-c/step-03-configure-quality-gates.md +7 -0
- package/templates/bmad/tea/workflows/testarch/ci/validation-report-20260127-095021.md +1 -1
- package/templates/bmad/tea/workflows/testarch/ci/validation-report-20260127-102401.md +3 -3
- package/templates/bmad/tea/workflows/testarch/ci/workflow.yaml +2 -2
- package/templates/bmad/tea/workflows/testarch/framework/steps-c/step-03-scaffold-framework.md +126 -3
- package/templates/bmad/tea/workflows/testarch/framework/validation-report-20260127-095021.md +1 -1
- package/templates/bmad/tea/workflows/testarch/framework/validation-report-20260127-102401.md +3 -3
- package/templates/bmad/tea/workflows/testarch/framework/workflow.yaml +2 -2
- package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04-evaluate-and-score.md +150 -36
- package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04a-subagent-security.md +138 -0
- package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04b-subagent-performance.md +84 -0
- package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04c-subagent-reliability.md +85 -0
- package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04d-subagent-scalability.md +88 -0
- package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04e-aggregate-nfr.md +27 -10
- package/templates/bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-095021.md +1 -1
- package/templates/bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-102401.md +3 -3
- package/templates/bmad/tea/workflows/testarch/nfr-assess/workflow.yaml +2 -2
- package/templates/bmad/tea/workflows/testarch/teach-me-testing/data/tea-resources-index.yaml +3 -3
- package/templates/bmad/tea/workflows/testarch/teach-me-testing/workflow-plan-teach-me-testing.md +6 -6
- package/templates/bmad/tea/workflows/testarch/teach-me-testing/workflow.md +1 -1
- package/templates/bmad/tea/workflows/testarch/test-design/steps-c/step-02-load-context.md +30 -0
- package/templates/bmad/tea/workflows/testarch/test-design/steps-c/step-05-generate-output.md +72 -1
- package/templates/bmad/tea/workflows/testarch/test-design/validation-report-20260127-095021.md +1 -1
- package/templates/bmad/tea/workflows/testarch/test-design/validation-report-20260127-102401.md +3 -3
- package/templates/bmad/tea/workflows/testarch/test-design/workflow.yaml +2 -2
- package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-01-load-context.md +29 -1
- package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03-quality-evaluation.md +147 -46
- package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03a-subagent-determinism.md +214 -0
- package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03b-subagent-isolation.md +125 -0
- package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03c-subagent-maintainability.md +102 -0
- package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03e-subagent-performance.md +117 -0
- package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03f-aggregate-scores.md +10 -10
- package/templates/bmad/tea/workflows/testarch/test-review/validation-report-20260127-095021.md +1 -1
- package/templates/bmad/tea/workflows/testarch/test-review/validation-report-20260127-102401.md +3 -3
- package/templates/bmad/tea/workflows/testarch/test-review/workflow.yaml +2 -2
- package/templates/bmad/tea/workflows/testarch/trace/steps-c/step-04-analyze-gaps.md +92 -1
- package/templates/bmad/tea/workflows/testarch/trace/validation-report-20260127-095021.md +1 -1
- package/templates/bmad/tea/workflows/testarch/trace/validation-report-20260127-102401.md +3 -3
- package/templates/bmad/tea/workflows/testarch/trace/workflow.yaml +2 -2
- package/templates/ecc/agents/chief-of-staff.md +151 -0
- package/templates/ecc/commands/claw.md +79 -0
- package/templates/ecc/rules/README.md +23 -2
- package/templates/ecc/rules/common/development-workflow.md +37 -0
- package/templates/ecc/rules/common/git-workflow.md +2 -23
- package/templates/ecc/rules/swift/coding-style.md +47 -0
- package/templates/ecc/rules/swift/hooks.md +20 -0
- package/templates/ecc/rules/swift/patterns.md +66 -0
- package/templates/ecc/rules/swift/security.md +33 -0
- package/templates/ecc/rules/swift/testing.md +45 -0
- package/templates/ecc/skills/api-design/SKILL.md +1 -0
- package/templates/ecc/skills/article-writing/SKILL.md +85 -0
- package/templates/ecc/skills/backend-patterns/SKILL.md +1 -0
- package/templates/ecc/skills/clickhouse-io/SKILL.md +1 -0
- package/templates/ecc/skills/coding-standards/SKILL.md +1 -0
- package/templates/ecc/skills/configure-ecc/SKILL.md +32 -4
- package/templates/ecc/skills/content-engine/SKILL.md +88 -0
- package/templates/ecc/skills/content-hash-cache-pattern/SKILL.md +1 -0
- package/templates/ecc/skills/continuous-learning/SKILL.md +2 -1
- package/templates/ecc/skills/continuous-learning-v2/SKILL.md +4 -1
- package/templates/ecc/skills/continuous-learning-v2/hooks/observe.sh +14 -7
- package/templates/ecc/skills/cost-aware-llm-pipeline/SKILL.md +1 -0
- package/templates/ecc/skills/cpp-coding-standards/SKILL.md +1 -0
- package/templates/ecc/skills/cpp-testing/SKILL.md +1 -0
- package/templates/ecc/skills/database-migrations/SKILL.md +1 -0
- package/templates/ecc/skills/deployment-patterns/SKILL.md +1 -0
- package/templates/ecc/skills/django-patterns/SKILL.md +1 -0
- package/templates/ecc/skills/django-security/SKILL.md +1 -0
- package/templates/ecc/skills/django-tdd/SKILL.md +1 -0
- package/templates/ecc/skills/django-verification/SKILL.md +1 -0
- package/templates/ecc/skills/docker-patterns/SKILL.md +1 -0
- package/templates/ecc/skills/e2e-testing/SKILL.md +1 -0
- package/templates/ecc/skills/eval-harness/SKILL.md +1 -0
- package/templates/ecc/skills/foundation-models-on-device/SKILL.md +243 -0
- package/templates/ecc/skills/frontend-patterns/SKILL.md +1 -0
- package/templates/ecc/skills/frontend-slides/SKILL.md +184 -0
- package/templates/ecc/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/templates/ecc/skills/golang-patterns/SKILL.md +1 -0
- package/templates/ecc/skills/golang-testing/SKILL.md +1 -0
- package/templates/ecc/skills/investor-materials/SKILL.md +96 -0
- package/templates/ecc/skills/investor-outreach/SKILL.md +76 -0
- package/templates/ecc/skills/iterative-retrieval/SKILL.md +1 -0
- package/templates/ecc/skills/java-coding-standards/SKILL.md +1 -0
- package/templates/ecc/skills/jpa-patterns/SKILL.md +1 -0
- package/templates/ecc/skills/liquid-glass-design/SKILL.md +279 -0
- package/templates/ecc/skills/market-research/SKILL.md +75 -0
- package/templates/ecc/skills/nutrient-document-processing/SKILL.md +1 -1
- package/templates/ecc/skills/postgres-patterns/SKILL.md +1 -0
- package/templates/ecc/skills/project-guidelines-example/SKILL.md +1 -0
- package/templates/ecc/skills/python-patterns/SKILL.md +1 -0
- package/templates/ecc/skills/python-testing/SKILL.md +1 -0
- package/templates/ecc/skills/regex-vs-llm-structured-text/SKILL.md +1 -0
- package/templates/ecc/skills/search-first/SKILL.md +3 -1
- package/templates/ecc/skills/security-review/SKILL.md +1 -0
- package/templates/ecc/skills/security-scan/SKILL.md +1 -0
- package/templates/ecc/skills/skill-stocktake/SKILL.md +176 -0
- package/templates/ecc/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/templates/ecc/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/templates/ecc/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/templates/ecc/skills/springboot-patterns/SKILL.md +1 -0
- package/templates/ecc/skills/springboot-security/SKILL.md +1 -0
- package/templates/ecc/skills/springboot-tdd/SKILL.md +1 -0
- package/templates/ecc/skills/springboot-verification/SKILL.md +1 -0
- package/templates/ecc/skills/strategic-compact/SKILL.md +1 -0
- package/templates/ecc/skills/swift-actor-persistence/SKILL.md +1 -0
- package/templates/ecc/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/templates/ecc/skills/swift-protocol-di-testing/SKILL.md +1 -0
- package/templates/ecc/skills/swiftui-patterns/SKILL.md +259 -0
- package/templates/ecc/skills/tdd-workflow/SKILL.md +1 -0
- package/templates/ecc/skills/verification-loop/SKILL.md +1 -0
- package/templates/ecc/skills/visa-doc-translate/README.md +86 -0
- package/templates/ecc/skills/visa-doc-translate/SKILL.md +117 -0
- package/templates/ext-skills/pinchtab/SKILL.md +89 -486
- package/templates/ext-skills/pinchtab/TRUST.md +69 -0
- package/templates/ext-skills/pinchtab/references/api.md +297 -0
- package/templates/ext-skills/pinchtab/references/env.md +45 -0
- package/templates/ext-skills/pinchtab/references/profiles.md +107 -0
- package/templates/plugins/claude-code-setup/.claude-plugin/plugin.json +9 -0
- package/templates/plugins/claude-code-setup/LICENSE +202 -0
- package/templates/plugins/claude-code-setup/README.md +29 -0
- package/templates/plugins/claude-code-setup/automation-recommender-example.png +0 -0
- package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/SKILL.md +288 -0
- package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/hooks-patterns.md +226 -0
- package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/mcp-servers.md +263 -0
- package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/plugins-reference.md +98 -0
- package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/skills-reference.md +408 -0
- package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/subagent-templates.md +181 -0
- package/templates/plugins/claude-md-management/.claude-plugin/plugin.json +9 -0
- package/templates/plugins/claude-md-management/LICENSE +202 -0
- package/templates/plugins/claude-md-management/README.md +40 -0
- package/templates/plugins/claude-md-management/claude-md-improver-example.png +0 -0
- package/templates/plugins/claude-md-management/commands/revise-claude-md.md +54 -0
- package/templates/plugins/claude-md-management/revise-claude-md-example.png +0 -0
- package/templates/plugins/claude-md-management/skills/claude-md-improver/SKILL.md +179 -0
- package/templates/plugins/claude-md-management/skills/claude-md-improver/references/quality-criteria.md +109 -0
- package/templates/plugins/claude-md-management/skills/claude-md-improver/references/templates.md +253 -0
- package/templates/plugins/claude-md-management/skills/claude-md-improver/references/update-guidelines.md +150 -0
- package/templates/plugins/code-simplifier/.claude-plugin/plugin.json +9 -0
- package/templates/plugins/code-simplifier/LICENSE +202 -0
- package/templates/plugins/code-simplifier/agents/code-simplifier.md +52 -0
- package/templates/plugins/commit-commands/.claude-plugin/plugin.json +9 -0
- package/templates/plugins/commit-commands/LICENSE +202 -0
- package/templates/plugins/commit-commands/README.md +225 -0
- package/templates/plugins/commit-commands/commands/clean_gone.md +53 -0
- package/templates/plugins/commit-commands/commands/commit-push-pr.md +20 -0
- package/templates/plugins/commit-commands/commands/commit.md +17 -0
- package/templates/trae-bmad/rules/bmad-bmm-check-implementation-readiness.md +2 -2
- package/templates/trae-bmad/rules/bmad-bmm-code-review.md +4 -4
- package/templates/trae-bmad/rules/bmad-bmm-correct-course.md +4 -4
- package/templates/trae-bmad/rules/bmad-bmm-create-architecture.md +2 -2
- package/templates/trae-bmad/rules/bmad-bmm-create-epics-and-stories.md +2 -2
- package/templates/trae-bmad/rules/bmad-bmm-create-prd.md +2 -2
- package/templates/trae-bmad/rules/bmad-bmm-create-product-brief.md +2 -2
- package/templates/trae-bmad/rules/bmad-bmm-create-story.md +4 -4
- package/templates/trae-bmad/rules/bmad-bmm-create-ux-design.md +2 -2
- package/templates/trae-bmad/rules/bmad-bmm-dev-story.md +4 -4
- package/templates/trae-bmad/rules/bmad-bmm-document-project.md +4 -4
- package/templates/trae-bmad/rules/bmad-bmm-domain-research.md +2 -2
- package/templates/trae-bmad/rules/bmad-bmm-edit-prd.md +2 -2
- package/templates/trae-bmad/rules/bmad-bmm-generate-project-context.md +2 -2
- package/templates/trae-bmad/rules/bmad-bmm-market-research.md +2 -2
- package/templates/trae-bmad/rules/bmad-bmm-qa-generate-e2e-tests.md +4 -4
- package/templates/trae-bmad/rules/bmad-bmm-quick-dev.md +2 -2
- package/templates/trae-bmad/rules/bmad-bmm-quick-spec.md +2 -2
- package/templates/trae-bmad/rules/bmad-bmm-retrospective.md +4 -4
- package/templates/trae-bmad/rules/bmad-bmm-sprint-planning.md +4 -4
- package/templates/trae-bmad/rules/bmad-bmm-sprint-status.md +4 -4
- package/templates/trae-bmad/rules/bmad-bmm-technical-research.md +2 -2
- package/templates/trae-bmad/rules/bmad-bmm-validate-prd.md +2 -2
- package/templates/trae-bmad/rules/bmad-brainstorming.md +2 -2
- package/templates/trae-bmad/rules/bmad-editorial-review-prose.md +1 -1
- package/templates/trae-bmad/rules/bmad-editorial-review-structure.md +1 -1
- package/templates/trae-bmad/rules/bmad-help.md +1 -1
- package/templates/trae-bmad/rules/bmad-index-docs.md +1 -1
- package/templates/trae-bmad/rules/bmad-party-mode.md +2 -2
- package/templates/trae-bmad/rules/bmad-review-adversarial-general.md +1 -1
- package/templates/trae-bmad/rules/bmad-review-edge-case-hunter.md +10 -0
- package/templates/trae-bmad/rules/bmad-shard-doc.md +1 -1
- package/templates/trae-bmad/rules/bmad-tea-teach-me-testing.md +2 -2
- package/templates/trae-bmad/rules/bmad-tea-testarch-atdd.md +4 -4
- package/templates/trae-bmad/rules/bmad-tea-testarch-automate.md +4 -4
- package/templates/trae-bmad/rules/bmad-tea-testarch-ci.md +4 -4
- package/templates/trae-bmad/rules/bmad-tea-testarch-framework.md +4 -4
- package/templates/trae-bmad/rules/bmad-tea-testarch-nfr.md +4 -4
- package/templates/trae-bmad/rules/bmad-tea-testarch-test-design.md +4 -4
- package/templates/trae-bmad/rules/bmad-tea-testarch-test-review.md +4 -4
- package/templates/trae-bmad/rules/bmad-tea-testarch-trace.md +4 -4
|
@@ -1,37 +1,38 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: 'step-03-generate-tests'
|
|
3
|
-
description: 'Orchestrate
|
|
3
|
+
description: 'Orchestrate adaptive test generation (agent-team, subagent, or sequential)'
|
|
4
4
|
nextStepFile: './step-03c-aggregate.md'
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# Step 3: Orchestrate
|
|
7
|
+
# Step 3: Orchestrate Adaptive Test Generation
|
|
8
8
|
|
|
9
9
|
## STEP GOAL
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Select execution mode deterministically, then generate tests using agent-team, subagent, or sequential execution while preserving the same output contract. Worker selection depends on `{detected_stack}`.
|
|
12
12
|
|
|
13
13
|
## MANDATORY EXECUTION RULES
|
|
14
14
|
|
|
15
15
|
- 📖 Read the entire step file before acting
|
|
16
16
|
- ✅ Speak in `{communication_language}`
|
|
17
|
-
- ✅
|
|
18
|
-
- ✅
|
|
19
|
-
-
|
|
20
|
-
- ❌ Do NOT
|
|
17
|
+
- ✅ Resolve execution mode from config (`tea_execution_mode`, `tea_capability_probe`)
|
|
18
|
+
- ✅ Apply fallback rules deterministically when requested mode is unsupported
|
|
19
|
+
- ✅ Preserve output schema and temp file naming across all modes
|
|
20
|
+
- ❌ Do NOT skip capability checks when probing is enabled
|
|
21
|
+
- ❌ Do NOT change output paths or JSON schema by mode
|
|
21
22
|
|
|
22
23
|
---
|
|
23
24
|
|
|
24
25
|
## EXECUTION PROTOCOLS:
|
|
25
26
|
|
|
26
27
|
- 🎯 Follow the MANDATORY SEQUENCE exactly
|
|
27
|
-
- 💾 Wait for
|
|
28
|
+
- 💾 Wait for subagent outputs
|
|
28
29
|
- 📖 Load the next step only when instructed
|
|
29
30
|
|
|
30
31
|
## CONTEXT BOUNDARIES:
|
|
31
32
|
|
|
32
33
|
- Available context: config, coverage plan from Step 2, knowledge fragments
|
|
33
|
-
- Focus:
|
|
34
|
-
- Limits: do not generate tests directly (delegate to
|
|
34
|
+
- Focus: orchestration only (mode selection + worker dispatch)
|
|
35
|
+
- Limits: do not generate tests directly (delegate to worker steps)
|
|
35
36
|
- Dependencies: Step 2 outputs (coverage plan, target features)
|
|
36
37
|
|
|
37
38
|
---
|
|
@@ -40,7 +41,7 @@ Launch parallel subprocesses to generate tests simultaneously for maximum perfor
|
|
|
40
41
|
|
|
41
42
|
**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise.
|
|
42
43
|
|
|
43
|
-
### 1. Prepare
|
|
44
|
+
### 1. Prepare Execution Context
|
|
44
45
|
|
|
45
46
|
**Generate unique timestamp** for temp file naming:
|
|
46
47
|
|
|
@@ -48,17 +49,31 @@ Launch parallel subprocesses to generate tests simultaneously for maximum perfor
|
|
|
48
49
|
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
49
50
|
```
|
|
50
51
|
|
|
51
|
-
**Prepare input context for
|
|
52
|
+
**Prepare input context for subagents:**
|
|
52
53
|
|
|
53
54
|
```javascript
|
|
54
|
-
const
|
|
55
|
+
const parseBooleanFlag = (value, defaultValue = true) => {
|
|
56
|
+
if (typeof value === 'string') {
|
|
57
|
+
const normalized = value.trim().toLowerCase();
|
|
58
|
+
if (['false', '0', 'off', 'no'].includes(normalized)) return false;
|
|
59
|
+
if (['true', '1', 'on', 'yes'].includes(normalized)) return true;
|
|
60
|
+
}
|
|
61
|
+
if (value === undefined || value === null) return defaultValue;
|
|
62
|
+
return Boolean(value);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const subagentContext = {
|
|
55
66
|
features: /* from Step 2 coverage plan */,
|
|
56
67
|
knowledge_fragments_loaded: /* list of fragments */,
|
|
57
68
|
config: {
|
|
58
69
|
test_framework: config.test_framework,
|
|
59
70
|
use_playwright_utils: config.tea_use_playwright_utils,
|
|
71
|
+
use_pactjs_utils: config.tea_use_pactjs_utils,
|
|
72
|
+
pact_mcp: config.tea_pact_mcp, // "mcp" | "none"
|
|
60
73
|
browser_automation: config.tea_browser_automation, // "auto" | "cli" | "mcp" | "none"
|
|
61
|
-
detected_stack: '{detected_stack}' // "frontend" | "backend" | "fullstack"
|
|
74
|
+
detected_stack: '{detected_stack}', // "frontend" | "backend" | "fullstack"
|
|
75
|
+
execution_mode: config.tea_execution_mode || 'auto', // "auto" | "subagent" | "agent-team" | "sequential"
|
|
76
|
+
capability_probe: parseBooleanFlag(config.tea_capability_probe, true), // supports booleans and "false"/"true" strings
|
|
62
77
|
},
|
|
63
78
|
timestamp: timestamp
|
|
64
79
|
};
|
|
@@ -66,100 +81,217 @@ const subprocessContext = {
|
|
|
66
81
|
|
|
67
82
|
---
|
|
68
83
|
|
|
69
|
-
### 2.
|
|
84
|
+
### 2. Resolve Execution Mode with Capability Probe
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
const normalizeUserExecutionMode = (mode) => {
|
|
88
|
+
if (typeof mode !== 'string') return null;
|
|
89
|
+
const normalized = mode.trim().toLowerCase().replace(/[-_]/g, ' ').replace(/\s+/g, ' ');
|
|
90
|
+
|
|
91
|
+
if (normalized === 'auto') return 'auto';
|
|
92
|
+
if (normalized === 'sequential') return 'sequential';
|
|
93
|
+
if (normalized === 'subagent' || normalized === 'sub agent' || normalized === 'subagents' || normalized === 'sub agents') {
|
|
94
|
+
return 'subagent';
|
|
95
|
+
}
|
|
96
|
+
if (normalized === 'agent team' || normalized === 'agent teams' || normalized === 'agentteam') {
|
|
97
|
+
return 'agent-team';
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return null;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const normalizeConfigExecutionMode = (mode) => {
|
|
104
|
+
if (mode === 'subagent') return 'subagent';
|
|
105
|
+
if (mode === 'auto' || mode === 'sequential' || mode === 'subagent' || mode === 'agent-team') {
|
|
106
|
+
return mode;
|
|
107
|
+
}
|
|
108
|
+
return null;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// Explicit user instruction in the active run takes priority over config.
|
|
112
|
+
const explicitModeFromUser = normalizeUserExecutionMode(runtime.getExplicitExecutionModeHint?.() || null);
|
|
113
|
+
|
|
114
|
+
const requestedMode = explicitModeFromUser || normalizeConfigExecutionMode(subagentContext.config.execution_mode) || 'auto';
|
|
115
|
+
const probeEnabled = subagentContext.config.capability_probe;
|
|
116
|
+
|
|
117
|
+
const supports = {
|
|
118
|
+
subagent: false,
|
|
119
|
+
agentTeam: false,
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
if (probeEnabled) {
|
|
123
|
+
// Probe using runtime-native capability checks or a no-op launch test.
|
|
124
|
+
supports.subagent = runtime.canLaunchSubagents?.() === true;
|
|
125
|
+
supports.agentTeam = runtime.canLaunchAgentTeams?.() === true;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
let resolvedMode = requestedMode;
|
|
129
|
+
|
|
130
|
+
if (requestedMode === 'auto') {
|
|
131
|
+
if (supports.agentTeam) resolvedMode = 'agent-team';
|
|
132
|
+
else if (supports.subagent) resolvedMode = 'subagent';
|
|
133
|
+
else resolvedMode = 'sequential';
|
|
134
|
+
} else if (probeEnabled && requestedMode === 'agent-team' && !supports.agentTeam) {
|
|
135
|
+
resolvedMode = supports.subagent ? 'subagent' : 'sequential';
|
|
136
|
+
} else if (probeEnabled && requestedMode === 'subagent' && !supports.subagent) {
|
|
137
|
+
resolvedMode = 'sequential';
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
subagentContext.execution = {
|
|
141
|
+
requestedMode,
|
|
142
|
+
resolvedMode,
|
|
143
|
+
probeEnabled,
|
|
144
|
+
supports,
|
|
145
|
+
};
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Resolution precedence:
|
|
149
|
+
|
|
150
|
+
1. Explicit user request in this run (`agent team` => `agent-team`; `subagent` => `subagent`; `sequential`; `auto`)
|
|
151
|
+
2. `tea_execution_mode` from config
|
|
152
|
+
3. Runtime capability fallback (when probing enabled)
|
|
153
|
+
|
|
154
|
+
If probing is disabled, honor the requested mode strictly. If that mode cannot be executed at runtime, fail with explicit error instead of silent fallback.
|
|
155
|
+
|
|
156
|
+
Report selected mode before dispatch:
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
⚙️ Execution Mode Resolution:
|
|
160
|
+
- Requested: {requestedMode}
|
|
161
|
+
- Probe Enabled: {probeEnabled}
|
|
162
|
+
- Supports agent-team: {supports.agentTeam}
|
|
163
|
+
- Supports subagent: {supports.subagent}
|
|
164
|
+
- Resolved: {resolvedMode}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
### 3. Subagent Dispatch Matrix
|
|
70
170
|
|
|
71
|
-
**Select
|
|
171
|
+
**Select subagents based on `{detected_stack}`:**
|
|
72
172
|
|
|
73
|
-
| `{detected_stack}` |
|
|
74
|
-
| ------------------ |
|
|
75
|
-
| `frontend` | Launch
|
|
76
|
-
| `backend` | Launch
|
|
77
|
-
| `fullstack` | Launch
|
|
173
|
+
| `{detected_stack}` | Subagent A (API) | Subagent B (E2E) | Subagent B-backend |
|
|
174
|
+
| ------------------ | ---------------- | ---------------- | ------------------ |
|
|
175
|
+
| `frontend` | Launch | Launch | Skip |
|
|
176
|
+
| `backend` | Launch | Skip | Launch |
|
|
177
|
+
| `fullstack` | Launch | Launch | Launch |
|
|
178
|
+
|
|
179
|
+
### 3A. Runtime-Managed Parallelism
|
|
180
|
+
|
|
181
|
+
When `resolvedMode` is `agent-team` or `subagent`, let the runtime decide concurrency and scheduling. TEA does not impose an additional worker ceiling.
|
|
78
182
|
|
|
79
183
|
---
|
|
80
184
|
|
|
81
|
-
###
|
|
185
|
+
### Contract Test Generation Note
|
|
186
|
+
|
|
187
|
+
When `use_pactjs_utils` is enabled, the API test generation subagent (step-03a) also generates:
|
|
82
188
|
|
|
83
|
-
**
|
|
189
|
+
- **Consumer contract tests**: Using `createProviderState` for type-safe provider states
|
|
190
|
+
- **Provider verification tests**: Using `buildVerifierOptions` for one-call verifier setup
|
|
191
|
+
- **Message contract tests**: Using `buildMessageVerifierOptions` if async/Kafka patterns detected
|
|
192
|
+
- **Helper files**: Request filter setup with `createRequestFilter`, shared state constants
|
|
193
|
+
|
|
194
|
+
When `pact_mcp` is `"mcp"`, the subagent can use SmartBear MCP tools to fetch existing provider states and generate tests informed by broker data.
|
|
195
|
+
|
|
196
|
+
---
|
|
84
197
|
|
|
85
|
-
|
|
198
|
+
### 4. Dispatch Worker A: API Test Generation (always)
|
|
199
|
+
|
|
200
|
+
**Dispatch worker:**
|
|
201
|
+
|
|
202
|
+
- **Subagent File:** `./step-03a-subagent-api.md`
|
|
86
203
|
- **Output File:** `/tmp/tea-automate-api-tests-${timestamp}.json`
|
|
87
|
-
- **Context:** Pass `
|
|
88
|
-
- **Execution:**
|
|
204
|
+
- **Context:** Pass `subagentContext`
|
|
205
|
+
- **Execution:**
|
|
206
|
+
- `agent-team` or `subagent`: launch non-blocking
|
|
207
|
+
- `sequential`: run blocking and wait before next dispatch
|
|
89
208
|
|
|
90
209
|
**System Action:**
|
|
91
210
|
|
|
92
211
|
```
|
|
93
|
-
🚀 Launching
|
|
212
|
+
🚀 Launching Subagent A: API Test Generation
|
|
94
213
|
📝 Output: /tmp/tea-automate-api-tests-${timestamp}.json
|
|
95
|
-
|
|
214
|
+
⚙️ Mode: ${resolvedMode}
|
|
215
|
+
⏳ Status: Running...
|
|
96
216
|
```
|
|
97
217
|
|
|
98
218
|
---
|
|
99
219
|
|
|
100
|
-
###
|
|
220
|
+
### 5. Dispatch Worker B: E2E Test Generation (frontend/fullstack only)
|
|
101
221
|
|
|
102
222
|
**If {detected_stack} is `frontend` or `fullstack`:**
|
|
103
223
|
|
|
104
|
-
**
|
|
224
|
+
**Dispatch worker:**
|
|
105
225
|
|
|
106
|
-
- **
|
|
226
|
+
- **Subagent File:** `./step-03b-subagent-e2e.md`
|
|
107
227
|
- **Output File:** `/tmp/tea-automate-e2e-tests-${timestamp}.json`
|
|
108
|
-
- **Context:** Pass `
|
|
109
|
-
- **Execution:**
|
|
228
|
+
- **Context:** Pass `subagentContext`
|
|
229
|
+
- **Execution:**
|
|
230
|
+
- `agent-team` or `subagent`: launch non-blocking
|
|
231
|
+
- `sequential`: run blocking and wait before next dispatch
|
|
110
232
|
|
|
111
233
|
**System Action:**
|
|
112
234
|
|
|
113
235
|
```
|
|
114
|
-
🚀 Launching
|
|
236
|
+
🚀 Launching Subagent B: E2E Test Generation
|
|
115
237
|
📝 Output: /tmp/tea-automate-e2e-tests-${timestamp}.json
|
|
116
|
-
|
|
238
|
+
⚙️ Mode: ${resolvedMode}
|
|
239
|
+
⏳ Status: Running...
|
|
117
240
|
```
|
|
118
241
|
|
|
119
|
-
**If {detected_stack} is `backend`:** Skip this
|
|
242
|
+
**If {detected_stack} is `backend`:** Skip this subagent.
|
|
120
243
|
|
|
121
244
|
---
|
|
122
245
|
|
|
123
|
-
###
|
|
246
|
+
### 6. Dispatch Worker B-backend: Backend Test Generation (backend/fullstack only)
|
|
124
247
|
|
|
125
248
|
**If {detected_stack} is `backend` or `fullstack`:**
|
|
126
249
|
|
|
127
|
-
**
|
|
250
|
+
**Dispatch worker:**
|
|
128
251
|
|
|
129
|
-
- **
|
|
252
|
+
- **Subagent File:** `./step-03b-subagent-backend.md`
|
|
130
253
|
- **Output File:** `/tmp/tea-automate-backend-tests-${timestamp}.json`
|
|
131
|
-
- **Context:** Pass `
|
|
132
|
-
- **Execution:**
|
|
254
|
+
- **Context:** Pass `subagentContext`
|
|
255
|
+
- **Execution:**
|
|
256
|
+
- `agent-team` or `subagent`: launch non-blocking
|
|
257
|
+
- `sequential`: run blocking and wait before next dispatch
|
|
133
258
|
|
|
134
259
|
**System Action:**
|
|
135
260
|
|
|
136
261
|
```
|
|
137
|
-
🚀 Launching
|
|
262
|
+
🚀 Launching Subagent B-backend: Backend Test Generation
|
|
138
263
|
📝 Output: /tmp/tea-automate-backend-tests-${timestamp}.json
|
|
139
|
-
|
|
264
|
+
⚙️ Mode: ${resolvedMode}
|
|
265
|
+
⏳ Status: Running...
|
|
140
266
|
```
|
|
141
267
|
|
|
142
|
-
**If {detected_stack} is `frontend`:** Skip this
|
|
268
|
+
**If {detected_stack} is `frontend`:** Skip this subagent.
|
|
143
269
|
|
|
144
270
|
---
|
|
145
271
|
|
|
146
|
-
###
|
|
272
|
+
### 7. Wait for Expected Worker Completion
|
|
147
273
|
|
|
148
|
-
**
|
|
274
|
+
**If `resolvedMode` is `agent-team` or `subagent`:**
|
|
149
275
|
|
|
150
276
|
```
|
|
151
|
-
⏳ Waiting for
|
|
152
|
-
├──
|
|
153
|
-
├──
|
|
154
|
-
└──
|
|
277
|
+
⏳ Waiting for subagents to complete...
|
|
278
|
+
├── Subagent A (API): Running... ⟳
|
|
279
|
+
├── Subagent B (E2E): Running... ⟳ [if frontend/fullstack]
|
|
280
|
+
└── Subagent B-backend: Running... ⟳ [if backend/fullstack]
|
|
155
281
|
|
|
156
282
|
[... time passes ...]
|
|
157
283
|
|
|
158
|
-
├──
|
|
159
|
-
├──
|
|
160
|
-
└──
|
|
284
|
+
├── Subagent A (API): Complete ✅
|
|
285
|
+
├── Subagent B (E2E): Complete ✅ [if frontend/fullstack]
|
|
286
|
+
└── Subagent B-backend: Complete ✅ [if backend/fullstack]
|
|
287
|
+
|
|
288
|
+
✅ All subagents completed successfully!
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
**If `resolvedMode` is `sequential`:**
|
|
161
292
|
|
|
162
|
-
|
|
293
|
+
```
|
|
294
|
+
✅ Sequential mode: each worker already completed during dispatch.
|
|
163
295
|
```
|
|
164
296
|
|
|
165
297
|
**Verify outputs exist (based on `{detected_stack}`):**
|
|
@@ -170,71 +302,53 @@ const apiOutputExists = fs.existsSync(`/tmp/tea-automate-api-tests-${timestamp}.
|
|
|
170
302
|
// Check based on detected_stack
|
|
171
303
|
if (detected_stack === 'frontend' || detected_stack === 'fullstack') {
|
|
172
304
|
const e2eOutputExists = fs.existsSync(`/tmp/tea-automate-e2e-tests-${timestamp}.json`);
|
|
173
|
-
if (!e2eOutputExists) throw new Error('E2E
|
|
305
|
+
if (!e2eOutputExists) throw new Error('E2E subagent output missing!');
|
|
174
306
|
}
|
|
175
307
|
if (detected_stack === 'backend' || detected_stack === 'fullstack') {
|
|
176
308
|
const backendOutputExists = fs.existsSync(`/tmp/tea-automate-backend-tests-${timestamp}.json`);
|
|
177
|
-
if (!backendOutputExists) throw new Error('Backend
|
|
309
|
+
if (!backendOutputExists) throw new Error('Backend subagent output missing!');
|
|
178
310
|
}
|
|
179
|
-
if (!apiOutputExists) throw new Error('API
|
|
311
|
+
if (!apiOutputExists) throw new Error('API subagent output missing!');
|
|
180
312
|
```
|
|
181
313
|
|
|
182
314
|
---
|
|
183
315
|
|
|
184
|
-
###
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
"subprocessType": "e2e | backend",
|
|
191
|
-
"testsGenerated": [
|
|
192
|
-
{
|
|
193
|
-
"file": "path/to/test-file",
|
|
194
|
-
"content": "[full test file content]",
|
|
195
|
-
"description": "Test description",
|
|
196
|
-
"priority_coverage": { "P0": 0, "P1": 0, "P2": 0, "P3": 0 }
|
|
197
|
-
}
|
|
198
|
-
],
|
|
199
|
-
"coverageSummary": {
|
|
200
|
-
"totalTests": 0,
|
|
201
|
-
"testLevels": ["unit", "integration", "api", "e2e"],
|
|
202
|
-
"fixtureNeeds": []
|
|
203
|
-
},
|
|
204
|
-
"status": "complete | partial"
|
|
205
|
-
}
|
|
206
|
-
```
|
|
316
|
+
### Subagent Output Schema Contract
|
|
317
|
+
|
|
318
|
+
The aggregate step expects both outputs to include `success`, but the payload shapes are intentionally different:
|
|
319
|
+
|
|
320
|
+
- `step-03b-subagent-e2e.md` output includes `success`, `subagent`, `tests`, `fixture_needs`, `knowledge_fragments_used`, `test_count`, and `summary`.
|
|
321
|
+
- `step-03b-subagent-backend.md` output includes `success`, `subagent`, `subagentType`, `testsGenerated`, `coverageSummary` (with `fixtureNeeds`), `status`, `knowledge_fragments_used`, and `summary`.
|
|
207
322
|
|
|
208
|
-
The aggregate step reads whichever output file(s) exist based on `{detected_stack}
|
|
323
|
+
The aggregate step reads whichever output file(s) exist based on `{detected_stack}` and must use the matching schema per subagent type.
|
|
209
324
|
|
|
210
325
|
---
|
|
211
326
|
|
|
212
|
-
###
|
|
327
|
+
### 8. Execution Report
|
|
213
328
|
|
|
214
329
|
**Display performance metrics:**
|
|
215
330
|
|
|
216
331
|
```
|
|
217
332
|
🚀 Performance Report:
|
|
218
|
-
- Execution Mode:
|
|
333
|
+
- Execution Mode: {resolvedMode}
|
|
219
334
|
- Stack Type: {detected_stack}
|
|
220
335
|
- API Test Generation: ~X minutes
|
|
221
336
|
- E2E Test Generation: ~Y minutes [if frontend/fullstack]
|
|
222
337
|
- Backend Test Generation: ~Z minutes [if backend/fullstack]
|
|
223
|
-
- Total Elapsed: ~
|
|
224
|
-
-
|
|
225
|
-
- Performance Gain: ~40-70% faster!
|
|
338
|
+
- Total Elapsed: ~mode-dependent
|
|
339
|
+
- Parallel Gain: ~40-70% faster when mode is subagent/agent-team
|
|
226
340
|
```
|
|
227
341
|
|
|
228
342
|
---
|
|
229
343
|
|
|
230
|
-
###
|
|
344
|
+
### 9. Proceed to Aggregation
|
|
231
345
|
|
|
232
346
|
**Load aggregation step:**
|
|
233
347
|
Load next step: `{nextStepFile}`
|
|
234
348
|
|
|
235
349
|
The aggregation step (3C) will:
|
|
236
350
|
|
|
237
|
-
- Read all
|
|
351
|
+
- Read all subagent outputs (based on `{detected_stack}`)
|
|
238
352
|
- Write all test files to disk
|
|
239
353
|
- Generate shared fixtures and helpers
|
|
240
354
|
- Calculate summary statistics
|
|
@@ -245,17 +359,17 @@ The aggregation step (3C) will:
|
|
|
245
359
|
|
|
246
360
|
Proceed to Step 3C (Aggregation) when:
|
|
247
361
|
|
|
248
|
-
- ✅
|
|
249
|
-
- ✅
|
|
250
|
-
- ✅
|
|
362
|
+
- ✅ Subagent A (API tests) completed successfully
|
|
363
|
+
- ✅ Subagent B (E2E tests) completed successfully [if frontend/fullstack]
|
|
364
|
+
- ✅ Subagent B-backend (Backend tests) completed successfully [if backend/fullstack]
|
|
251
365
|
- ✅ All expected output files exist and are valid JSON
|
|
252
|
-
- ✅
|
|
366
|
+
- ✅ Execution metrics displayed
|
|
253
367
|
|
|
254
368
|
**Do NOT proceed if:**
|
|
255
369
|
|
|
256
|
-
- ❌ Any launched
|
|
370
|
+
- ❌ Any launched subagent failed
|
|
257
371
|
- ❌ Output files missing or corrupted
|
|
258
|
-
- ❌ Timeout occurred (
|
|
372
|
+
- ❌ Timeout occurred (parallel mode only)
|
|
259
373
|
|
|
260
374
|
---
|
|
261
375
|
|
|
@@ -263,16 +377,16 @@ Proceed to Step 3C (Aggregation) when:
|
|
|
263
377
|
|
|
264
378
|
### ✅ SUCCESS:
|
|
265
379
|
|
|
266
|
-
- All required
|
|
267
|
-
- All
|
|
380
|
+
- All required subagents launched successfully (based on `{detected_stack}`)
|
|
381
|
+
- All required worker steps completed without errors
|
|
268
382
|
- Output files generated and valid
|
|
269
|
-
-
|
|
383
|
+
- Fallback behavior respected configuration and capability probe rules
|
|
270
384
|
|
|
271
385
|
### ❌ SYSTEM FAILURE:
|
|
272
386
|
|
|
273
|
-
- Failed to launch
|
|
274
|
-
- One or more
|
|
387
|
+
- Failed to launch subagents
|
|
388
|
+
- One or more subagents failed
|
|
275
389
|
- Output files missing or invalid
|
|
276
|
-
-
|
|
390
|
+
- Unsupported requested mode with probing disabled
|
|
277
391
|
|
|
278
|
-
**Master Rule:**
|
|
392
|
+
**Master Rule:** Deterministic mode selection + stable output contract. Use the best supported mode, then aggregate normally.
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-03a-subagent-api'
|
|
3
|
+
description: 'Subagent: Generate API tests only'
|
|
4
|
+
subagent: true
|
|
5
|
+
outputFile: '/tmp/tea-automate-api-tests-{{timestamp}}.json'
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Subagent 3A: Generate API Tests
|
|
9
|
+
|
|
10
|
+
## SUBAGENT CONTEXT
|
|
11
|
+
|
|
12
|
+
This is an **isolated subagent** running in parallel with E2E test generation.
|
|
13
|
+
|
|
14
|
+
**What you have from parent workflow:**
|
|
15
|
+
|
|
16
|
+
- Target features/components identified in Step 2
|
|
17
|
+
- Knowledge fragments loaded: api-request, data-factories, api-testing-patterns
|
|
18
|
+
- Config: test framework, Playwright Utils enabled/disabled, Pact.js Utils enabled/disabled, Pact MCP mode
|
|
19
|
+
- Coverage plan: which API endpoints need testing
|
|
20
|
+
|
|
21
|
+
**Your task:** Generate API tests ONLY (not E2E, not fixtures, not other test types).
|
|
22
|
+
|
|
23
|
+
**If `use_pactjs_utils` is enabled:** Also generate consumer contract tests and provider verification tests alongside API tests. Use the loaded pactjs-utils fragments (`pactjs-utils-overview`, `pactjs-utils-consumer-helpers`, `pactjs-utils-provider-verifier`, `pactjs-utils-request-filter`) for patterns. If `pact_mcp` is `"mcp"`, use SmartBear MCP tools (Fetch Provider States, Generate Pact Tests) to inform test generation.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## MANDATORY EXECUTION RULES
|
|
28
|
+
|
|
29
|
+
- 📖 Read this entire subagent file before acting
|
|
30
|
+
- ✅ Generate API tests ONLY
|
|
31
|
+
- ✅ Output structured JSON to temp file
|
|
32
|
+
- ✅ Follow knowledge fragment patterns
|
|
33
|
+
- ❌ Do NOT generate E2E tests (that's subagent 3B)
|
|
34
|
+
- ❌ Do NOT run tests (that's step 4)
|
|
35
|
+
- ❌ Do NOT generate fixtures yet (that's step 3C aggregation)
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## SUBAGENT TASK
|
|
40
|
+
|
|
41
|
+
### 1. Identify API Endpoints
|
|
42
|
+
|
|
43
|
+
From the coverage plan (Step 2 output), identify:
|
|
44
|
+
|
|
45
|
+
- Which API endpoints need test coverage
|
|
46
|
+
- Expected request/response formats
|
|
47
|
+
- Authentication requirements
|
|
48
|
+
- Error scenarios to test
|
|
49
|
+
|
|
50
|
+
### 2. Generate API Test Files
|
|
51
|
+
|
|
52
|
+
For each API endpoint, create test file in `tests/api/[feature].spec.ts`:
|
|
53
|
+
|
|
54
|
+
**Test Structure:**
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
import { test, expect } from '@playwright/test';
|
|
58
|
+
// If Playwright Utils enabled:
|
|
59
|
+
// import { apiRequest } from '@playwright-utils/api';
|
|
60
|
+
|
|
61
|
+
test.describe('[Feature] API Tests', () => {
|
|
62
|
+
test('[P0] should handle successful [operation]', async ({ request }) => {
|
|
63
|
+
// Use apiRequest helper if Playwright Utils enabled
|
|
64
|
+
// Otherwise use standard request fixture
|
|
65
|
+
const response = await request.post('/api/endpoint', {
|
|
66
|
+
data: {
|
|
67
|
+
/* test data */
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
expect(response.status()).toBe(200);
|
|
72
|
+
expect(await response.json()).toMatchObject({
|
|
73
|
+
/* expected */
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
test('[P1] should handle [error scenario]', async ({ request }) => {
|
|
78
|
+
// Test error handling
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Requirements:**
|
|
84
|
+
|
|
85
|
+
- ✅ Use `apiRequest()` helper if Playwright Utils enabled (from api-request fragment)
|
|
86
|
+
- ✅ Use data factories for test data (from data-factories fragment)
|
|
87
|
+
- ✅ Follow API testing patterns (from api-testing-patterns fragment)
|
|
88
|
+
- ✅ Include priority tags [P0], [P1], [P2], [P3]
|
|
89
|
+
- ✅ Test both happy path and error scenarios
|
|
90
|
+
- ✅ Use proper TypeScript types
|
|
91
|
+
- ✅ Deterministic assertions (no timing dependencies)
|
|
92
|
+
|
|
93
|
+
**If Pact.js Utils enabled (from `subagentContext.config.use_pactjs_utils`):**
|
|
94
|
+
|
|
95
|
+
- ✅ Generate consumer contract tests in `pact/http/consumer/` using `createProviderState({ name, params })` pattern
|
|
96
|
+
- ✅ Generate provider verification tests in `pact/http/provider/` using `buildVerifierOptions({ provider, port, includeMainAndDeployed, stateHandlers })` pattern
|
|
97
|
+
- ✅ Generate request filter helpers in `pact/http/helpers/` using `createRequestFilter({ tokenGenerator: () => string })`
|
|
98
|
+
- ✅ Generate shared state constants in `pact/http/helpers/states.ts`
|
|
99
|
+
- ✅ If async/message patterns detected, generate message consumer tests in `pact/message/` using `buildMessageVerifierOptions`
|
|
100
|
+
|
|
101
|
+
### 3. Track Fixture Needs
|
|
102
|
+
|
|
103
|
+
Identify fixtures needed for API tests:
|
|
104
|
+
|
|
105
|
+
- Authentication fixtures (auth tokens, API keys)
|
|
106
|
+
- Data factories (user data, product data, etc.)
|
|
107
|
+
- API client configurations
|
|
108
|
+
|
|
109
|
+
**Do NOT create fixtures yet** - just track what's needed for aggregation step.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## OUTPUT FORMAT
|
|
114
|
+
|
|
115
|
+
Write JSON to temp file: `/tmp/tea-automate-api-tests-{{timestamp}}.json`
|
|
116
|
+
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"success": true,
|
|
120
|
+
"subagent": "api-tests",
|
|
121
|
+
"tests": [
|
|
122
|
+
{
|
|
123
|
+
"file": "tests/api/auth.spec.ts",
|
|
124
|
+
"content": "[full TypeScript test file content]",
|
|
125
|
+
"description": "API tests for authentication endpoints",
|
|
126
|
+
"priority_coverage": {
|
|
127
|
+
"P0": 3,
|
|
128
|
+
"P1": 2,
|
|
129
|
+
"P2": 1,
|
|
130
|
+
"P3": 0
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"file": "tests/api/checkout.spec.ts",
|
|
135
|
+
"content": "[full TypeScript test file content]",
|
|
136
|
+
"description": "API tests for checkout endpoints",
|
|
137
|
+
"priority_coverage": {
|
|
138
|
+
"P0": 2,
|
|
139
|
+
"P1": 3,
|
|
140
|
+
"P2": 1,
|
|
141
|
+
"P3": 0
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"fixture_needs": ["authToken", "userDataFactory", "productDataFactory"],
|
|
146
|
+
"knowledge_fragments_used": ["api-request", "data-factories", "api-testing-patterns"],
|
|
147
|
+
"test_count": 12,
|
|
148
|
+
"summary": "Generated 12 API test cases covering 3 features"
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**On Error:**
|
|
153
|
+
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"success": false,
|
|
157
|
+
"subagent": "api-tests",
|
|
158
|
+
"error": "Error message describing what went wrong",
|
|
159
|
+
"partial_output": {
|
|
160
|
+
/* any tests generated before error */
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## EXIT CONDITION
|
|
168
|
+
|
|
169
|
+
Subagent completes when:
|
|
170
|
+
|
|
171
|
+
- ✅ All API endpoints have test files generated
|
|
172
|
+
- ✅ All tests follow knowledge fragment patterns
|
|
173
|
+
- ✅ JSON output written to temp file
|
|
174
|
+
- ✅ Fixture needs tracked
|
|
175
|
+
|
|
176
|
+
**Subagent terminates here.** Parent workflow will read output and proceed to aggregation.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## 🚨 SUBAGENT SUCCESS METRICS
|
|
181
|
+
|
|
182
|
+
### ✅ SUCCESS:
|
|
183
|
+
|
|
184
|
+
- All API tests generated following patterns
|
|
185
|
+
- JSON output valid and complete
|
|
186
|
+
- No E2E/component/unit tests included (out of scope)
|
|
187
|
+
|
|
188
|
+
### ❌ FAILURE:
|
|
189
|
+
|
|
190
|
+
- Generated tests other than API tests
|
|
191
|
+
- Did not follow knowledge fragment patterns
|
|
192
|
+
- Invalid or missing JSON output
|
|
193
|
+
- Ran tests (not subagent responsibility)
|