@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
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-03b-subagent-backend'
|
|
3
|
+
description: 'Subagent: Generate backend tests only (unit, integration, contract)'
|
|
4
|
+
subagent: true
|
|
5
|
+
outputFile: '/tmp/tea-automate-backend-tests-{{timestamp}}.json'
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Subagent 3B-backend: Generate Backend Tests
|
|
9
|
+
|
|
10
|
+
## SUBAGENT CONTEXT
|
|
11
|
+
|
|
12
|
+
This is an **isolated subagent** running in parallel with API test generation (and optionally E2E test generation for fullstack projects).
|
|
13
|
+
|
|
14
|
+
**What you have from parent workflow:**
|
|
15
|
+
|
|
16
|
+
- Target features/services identified in Step 2
|
|
17
|
+
- Knowledge fragments loaded: test-levels-framework, test-priorities-matrix, data-factories
|
|
18
|
+
- Config: test framework, detected stack type
|
|
19
|
+
- Coverage plan: which services/modules need backend testing
|
|
20
|
+
|
|
21
|
+
**Your task:** Generate backend tests ONLY (unit, integration, contract - not API endpoint tests, not E2E).
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## MANDATORY EXECUTION RULES
|
|
26
|
+
|
|
27
|
+
- Read this entire subagent file before acting
|
|
28
|
+
- Generate backend tests ONLY (unit, integration, contract)
|
|
29
|
+
- Output structured JSON to temp file using the subagent output schema contract
|
|
30
|
+
- Follow knowledge fragment patterns
|
|
31
|
+
- Do NOT generate API endpoint tests (that's subagent 3A)
|
|
32
|
+
- Do NOT generate E2E tests (that's subagent 3B-E2E)
|
|
33
|
+
- Do NOT run tests (that's step 4)
|
|
34
|
+
- Do NOT generate fixtures yet (that's step 3C aggregation)
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## SUBAGENT TASK
|
|
39
|
+
|
|
40
|
+
### 1. Identify Test Targets
|
|
41
|
+
|
|
42
|
+
From the coverage plan (Step 2 output), identify:
|
|
43
|
+
|
|
44
|
+
- Which services/modules need unit test coverage
|
|
45
|
+
- Which integrations need integration test coverage (database, message queues, external services)
|
|
46
|
+
- Which service contracts need contract test coverage (Pact, schema validation)
|
|
47
|
+
- Business logic functions requiring edge case coverage
|
|
48
|
+
|
|
49
|
+
### 2. Detect Framework & Language
|
|
50
|
+
|
|
51
|
+
From `config.test_framework` and project manifests, determine:
|
|
52
|
+
|
|
53
|
+
- **Python (pytest)**: Use `pytest` conventions, `conftest.py` fixtures, `@pytest.mark` decorators
|
|
54
|
+
- **Java/Kotlin (JUnit)**: Use JUnit 5 annotations (`@Test`, `@BeforeEach`, `@Nested`), Mockito for mocking
|
|
55
|
+
- **Go (go test)**: Use `*_test.go` files, `testing.T`, table-driven tests, `testify` assertions
|
|
56
|
+
- **C#/.NET (xUnit)**: Use `[Fact]`, `[Theory]`, `[InlineData]`, `Moq` for mocking
|
|
57
|
+
- **Ruby (RSpec)**: Use `describe`/`context`/`it` blocks, `let`/`before` helpers, `FactoryBot`
|
|
58
|
+
|
|
59
|
+
### 3. Generate Unit Tests
|
|
60
|
+
|
|
61
|
+
For each module/service, create test files following language-idiomatic patterns:
|
|
62
|
+
|
|
63
|
+
**Python (pytest) example:**
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
import pytest
|
|
67
|
+
from unittest.mock import MagicMock, patch
|
|
68
|
+
from myapp.services.user_service import UserService
|
|
69
|
+
|
|
70
|
+
class TestUserService:
|
|
71
|
+
"""[P0] Unit tests for UserService"""
|
|
72
|
+
|
|
73
|
+
def test_create_user_with_valid_data(self, user_factory):
|
|
74
|
+
"""Should create user when data is valid"""
|
|
75
|
+
user_data = user_factory.build()
|
|
76
|
+
result = UserService.create(user_data)
|
|
77
|
+
assert result.email == user_data["email"]
|
|
78
|
+
|
|
79
|
+
def test_create_user_rejects_duplicate_email(self, user_factory):
|
|
80
|
+
"""[P1] Should reject duplicate email"""
|
|
81
|
+
user_data = user_factory.build(email="existing@test.com")
|
|
82
|
+
with pytest.raises(DuplicateEmailError):
|
|
83
|
+
UserService.create(user_data)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Go (go test) example:**
|
|
87
|
+
|
|
88
|
+
```go
|
|
89
|
+
func TestUserService_Create(t *testing.T) {
|
|
90
|
+
tests := []struct {
|
|
91
|
+
name string
|
|
92
|
+
input CreateUserInput
|
|
93
|
+
wantErr bool
|
|
94
|
+
}{
|
|
95
|
+
{"valid user", validInput(), false},
|
|
96
|
+
{"duplicate email", duplicateInput(), true},
|
|
97
|
+
}
|
|
98
|
+
for _, tt := range tests {
|
|
99
|
+
t.Run(tt.name, func(t *testing.T) {
|
|
100
|
+
svc := NewUserService(mockRepo)
|
|
101
|
+
_, err := svc.Create(tt.input)
|
|
102
|
+
if (err != nil) != tt.wantErr {
|
|
103
|
+
t.Errorf("Create() error = %v, wantErr %v", err, tt.wantErr)
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**Requirements:**
|
|
111
|
+
|
|
112
|
+
- Follow the detected framework's idiomatic test patterns
|
|
113
|
+
- Include priority tags [P0], [P1], [P2], [P3] in test descriptions
|
|
114
|
+
- Use proper mocking for external dependencies (database, APIs, message queues)
|
|
115
|
+
- Test both happy path and error cases
|
|
116
|
+
- Use proper typing/type hints where applicable
|
|
117
|
+
- No hard-coded test data; use factories or builders
|
|
118
|
+
|
|
119
|
+
### 4. Generate Integration Tests
|
|
120
|
+
|
|
121
|
+
For service integrations, create integration test files:
|
|
122
|
+
|
|
123
|
+
- Database integration tests (with test database or in-memory alternatives)
|
|
124
|
+
- Message queue consumer/producer tests
|
|
125
|
+
- Cache integration tests
|
|
126
|
+
- External service integration tests (with mocked HTTP clients)
|
|
127
|
+
|
|
128
|
+
### 5. Generate Contract Tests (if applicable)
|
|
129
|
+
|
|
130
|
+
If the project uses microservices or has defined API contracts:
|
|
131
|
+
|
|
132
|
+
- Pact consumer/provider tests
|
|
133
|
+
- Schema validation tests (JSON Schema, Protobuf)
|
|
134
|
+
- OpenAPI spec compliance tests
|
|
135
|
+
|
|
136
|
+
### 6. Track Fixture Needs
|
|
137
|
+
|
|
138
|
+
Identify fixtures/helpers needed for backend tests:
|
|
139
|
+
|
|
140
|
+
- Database fixtures (seed data, cleanup)
|
|
141
|
+
- Factory functions (test data builders)
|
|
142
|
+
- Mock services (HTTP mocks, message queue mocks)
|
|
143
|
+
- Configuration fixtures (test environment config)
|
|
144
|
+
|
|
145
|
+
**Do NOT create fixtures yet** - just track what's needed for aggregation step.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## OUTPUT FORMAT
|
|
150
|
+
|
|
151
|
+
Write JSON to temp file: `/tmp/tea-automate-backend-tests-{{timestamp}}.json`
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"subagentType": "backend",
|
|
156
|
+
"testsGenerated": [
|
|
157
|
+
{
|
|
158
|
+
"file": "tests/unit/test_user_service.py",
|
|
159
|
+
"content": "[full test file content]",
|
|
160
|
+
"description": "Unit tests for UserService",
|
|
161
|
+
"priority_coverage": {
|
|
162
|
+
"P0": 3,
|
|
163
|
+
"P1": 2,
|
|
164
|
+
"P2": 1,
|
|
165
|
+
"P3": 0
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"file": "tests/integration/test_user_repository.py",
|
|
170
|
+
"content": "[full test file content]",
|
|
171
|
+
"description": "Integration tests for user database operations",
|
|
172
|
+
"priority_coverage": {
|
|
173
|
+
"P0": 1,
|
|
174
|
+
"P1": 2,
|
|
175
|
+
"P2": 1,
|
|
176
|
+
"P3": 0
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
],
|
|
180
|
+
"coverageSummary": {
|
|
181
|
+
"totalTests": 15,
|
|
182
|
+
"testLevels": ["unit", "integration", "contract"],
|
|
183
|
+
"fixtureNeeds": ["databaseFixture", "userFactory", "mockHttpClient"]
|
|
184
|
+
},
|
|
185
|
+
"status": "complete",
|
|
186
|
+
"success": true,
|
|
187
|
+
"subagent": "backend-tests",
|
|
188
|
+
"knowledge_fragments_used": ["test-levels-framework", "test-priorities-matrix", "data-factories"],
|
|
189
|
+
"summary": "Generated 15 backend test cases (10 unit, 4 integration, 1 contract)"
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**On Error:**
|
|
194
|
+
|
|
195
|
+
```json
|
|
196
|
+
{
|
|
197
|
+
"subagentType": "backend",
|
|
198
|
+
"testsGenerated": [],
|
|
199
|
+
"coverageSummary": {
|
|
200
|
+
"totalTests": 0,
|
|
201
|
+
"testLevels": [],
|
|
202
|
+
"fixtureNeeds": []
|
|
203
|
+
},
|
|
204
|
+
"status": "partial",
|
|
205
|
+
"success": false,
|
|
206
|
+
"subagent": "backend-tests",
|
|
207
|
+
"error": "Error message describing what went wrong",
|
|
208
|
+
"partial_output": {
|
|
209
|
+
/* any tests generated before error */
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## EXIT CONDITION
|
|
217
|
+
|
|
218
|
+
Subagent completes when:
|
|
219
|
+
|
|
220
|
+
- All identified modules have backend test files generated
|
|
221
|
+
- All tests follow language-idiomatic patterns
|
|
222
|
+
- JSON output written to temp file using the subagent output schema contract
|
|
223
|
+
- Fixture needs tracked
|
|
224
|
+
|
|
225
|
+
**Subagent terminates here.** Parent workflow will read output and proceed to aggregation.
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## SUBAGENT SUCCESS METRICS
|
|
230
|
+
|
|
231
|
+
### SUCCESS:
|
|
232
|
+
|
|
233
|
+
- All backend tests generated following idiomatic patterns
|
|
234
|
+
- JSON output valid and complete, matches subagent output schema contract
|
|
235
|
+
- No E2E or browser tests included (out of scope)
|
|
236
|
+
- Proper mocking used for external dependencies
|
|
237
|
+
- Priority tags assigned to all test cases
|
|
238
|
+
|
|
239
|
+
### FAILURE:
|
|
240
|
+
|
|
241
|
+
- Generated tests other than backend tests (unit/integration/contract)
|
|
242
|
+
- Did not follow language-idiomatic patterns
|
|
243
|
+
- Invalid or missing JSON output
|
|
244
|
+
- Output schema does not match the contract
|
|
245
|
+
- Ran tests (not subagent responsibility)
|
|
246
|
+
- Used real external services instead of mocks
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-03b-subagent-e2e'
|
|
3
|
+
description: 'Subagent: Generate E2E tests only'
|
|
4
|
+
subagent: true
|
|
5
|
+
outputFile: '/tmp/tea-automate-e2e-tests-{{timestamp}}.json'
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Subagent 3B: Generate E2E Tests
|
|
9
|
+
|
|
10
|
+
## SUBAGENT CONTEXT
|
|
11
|
+
|
|
12
|
+
This is an **isolated subagent** running in parallel with API test generation.
|
|
13
|
+
|
|
14
|
+
**What you have from parent workflow:**
|
|
15
|
+
|
|
16
|
+
- Target features/user journeys identified in Step 2
|
|
17
|
+
- Knowledge fragments loaded: fixture-architecture, network-first, selector-resilience
|
|
18
|
+
- Config: test framework, Playwright Utils enabled/disabled
|
|
19
|
+
- Coverage plan: which user journeys need E2E testing
|
|
20
|
+
|
|
21
|
+
**Your task:** Generate E2E tests ONLY (not API, not fixtures, not other test types).
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## MANDATORY EXECUTION RULES
|
|
26
|
+
|
|
27
|
+
- 📖 Read this entire subagent file before acting
|
|
28
|
+
- ✅ Generate E2E tests ONLY
|
|
29
|
+
- ✅ Output structured JSON to temp file
|
|
30
|
+
- ✅ Follow knowledge fragment patterns
|
|
31
|
+
- ❌ Do NOT generate API tests (that's subagent 3A)
|
|
32
|
+
- ❌ Do NOT run tests (that's step 4)
|
|
33
|
+
- ❌ Do NOT generate fixtures yet (that's step 3C aggregation)
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## SUBAGENT TASK
|
|
38
|
+
|
|
39
|
+
### 1. Identify User Journeys
|
|
40
|
+
|
|
41
|
+
From the coverage plan (Step 2 output), identify:
|
|
42
|
+
|
|
43
|
+
- Which user journeys need E2E coverage
|
|
44
|
+
- Critical user paths (authentication, checkout, profile, etc.)
|
|
45
|
+
- UI interactions required
|
|
46
|
+
- Expected visual states
|
|
47
|
+
|
|
48
|
+
### 2. Browser Interaction (Selector Verification)
|
|
49
|
+
|
|
50
|
+
**Automation mode:** `config.tea_browser_automation`
|
|
51
|
+
|
|
52
|
+
If `auto` (fall back to MCP if CLI unavailable; if neither available, generate from best practices):
|
|
53
|
+
|
|
54
|
+
- Open the target page first, then verify selectors with a snapshot:
|
|
55
|
+
`playwright-cli -s=tea-automate-{{timestamp}} open <target_url>`
|
|
56
|
+
`playwright-cli -s=tea-automate-{{timestamp}} snapshot` → map refs to Playwright locators
|
|
57
|
+
- ref `{role: "button", name: "Submit"}` → `page.getByRole('button', { name: 'Submit' })`
|
|
58
|
+
- ref `{role: "textbox", name: "Email"}` → `page.getByRole('textbox', { name: 'Email' })`
|
|
59
|
+
- `playwright-cli -s=tea-automate-{{timestamp}} close` when done
|
|
60
|
+
|
|
61
|
+
If `cli` (CLI only — do NOT fall back to MCP; generate from best practices if CLI unavailable):
|
|
62
|
+
|
|
63
|
+
- Open the target page first, then verify selectors with a snapshot:
|
|
64
|
+
`playwright-cli -s=tea-automate-{{timestamp}} open <target_url>`
|
|
65
|
+
`playwright-cli -s=tea-automate-{{timestamp}} snapshot` → map refs to Playwright locators
|
|
66
|
+
- ref `{role: "button", name: "Submit"}` → `page.getByRole('button', { name: 'Submit' })`
|
|
67
|
+
- ref `{role: "textbox", name: "Email"}` → `page.getByRole('textbox', { name: 'Email' })`
|
|
68
|
+
- `playwright-cli -s=tea-automate-{{timestamp}} close` when done
|
|
69
|
+
|
|
70
|
+
> **Session Hygiene:** Always close sessions using `playwright-cli -s=tea-automate-{{timestamp}} close`. Do NOT use `close-all` — it kills every session on the machine and breaks parallel execution.
|
|
71
|
+
|
|
72
|
+
If `mcp`:
|
|
73
|
+
|
|
74
|
+
- Use MCP tools for selector verification (current behavior)
|
|
75
|
+
|
|
76
|
+
If `none`:
|
|
77
|
+
|
|
78
|
+
- Generate selectors from best practices without browser verification
|
|
79
|
+
|
|
80
|
+
### 3. Generate E2E Test Files
|
|
81
|
+
|
|
82
|
+
For each user journey, create test file in `tests/e2e/[feature].spec.ts`:
|
|
83
|
+
|
|
84
|
+
**Test Structure:**
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
import { test, expect } from '@playwright/test';
|
|
88
|
+
|
|
89
|
+
test.describe('[Feature] E2E User Journey', () => {
|
|
90
|
+
test('[P0] should complete [user journey]', async ({ page }) => {
|
|
91
|
+
// Navigate to starting point
|
|
92
|
+
await page.goto('/feature');
|
|
93
|
+
|
|
94
|
+
// Interact with UI
|
|
95
|
+
await page.getByRole('button', { name: 'Submit' }).click();
|
|
96
|
+
|
|
97
|
+
// Assert expected state
|
|
98
|
+
await expect(page.getByText('Success')).toBeVisible();
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
test('[P1] should handle [edge case]', async ({ page }) => {
|
|
102
|
+
// Test edge case scenario
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Requirements:**
|
|
108
|
+
|
|
109
|
+
- ✅ Follow fixture architecture patterns (from fixture-architecture fragment)
|
|
110
|
+
- ✅ Use network-first patterns: intercept before navigate (from network-first fragment)
|
|
111
|
+
- ✅ Use resilient selectors: getByRole, getByText, getByLabel (from selector-resilience fragment)
|
|
112
|
+
- ✅ Include priority tags [P0], [P1], [P2], [P3]
|
|
113
|
+
- ✅ Test complete user journeys (not isolated clicks)
|
|
114
|
+
- ✅ Use proper TypeScript types
|
|
115
|
+
- ✅ Deterministic waits (no hard sleeps, use expect().toBeVisible())
|
|
116
|
+
|
|
117
|
+
### 4. Track Fixture Needs
|
|
118
|
+
|
|
119
|
+
Identify fixtures needed for E2E tests:
|
|
120
|
+
|
|
121
|
+
- Page object models (if complex)
|
|
122
|
+
- Authentication fixtures (logged-in user state)
|
|
123
|
+
- Network mocks/intercepts
|
|
124
|
+
- Test data fixtures
|
|
125
|
+
|
|
126
|
+
**Do NOT create fixtures yet** - just track what's needed for aggregation step.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## OUTPUT FORMAT
|
|
131
|
+
|
|
132
|
+
Write JSON to temp file: `/tmp/tea-automate-e2e-tests-{{timestamp}}.json`
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"success": true,
|
|
137
|
+
"subagent": "e2e-tests",
|
|
138
|
+
"tests": [
|
|
139
|
+
{
|
|
140
|
+
"file": "tests/e2e/authentication.spec.ts",
|
|
141
|
+
"content": "[full TypeScript test file content]",
|
|
142
|
+
"description": "E2E tests for user authentication journey",
|
|
143
|
+
"priority_coverage": {
|
|
144
|
+
"P0": 2,
|
|
145
|
+
"P1": 3,
|
|
146
|
+
"P2": 2,
|
|
147
|
+
"P3": 0
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"file": "tests/e2e/checkout.spec.ts",
|
|
152
|
+
"content": "[full TypeScript test file content]",
|
|
153
|
+
"description": "E2E tests for checkout journey",
|
|
154
|
+
"priority_coverage": {
|
|
155
|
+
"P0": 3,
|
|
156
|
+
"P1": 2,
|
|
157
|
+
"P2": 1,
|
|
158
|
+
"P3": 0
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
],
|
|
162
|
+
"fixture_needs": ["authenticatedUserFixture", "paymentMockFixture", "checkoutDataFixture"],
|
|
163
|
+
"knowledge_fragments_used": ["fixture-architecture", "network-first", "selector-resilience"],
|
|
164
|
+
"test_count": 15,
|
|
165
|
+
"summary": "Generated 15 E2E test cases covering 5 user journeys"
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**On Error:**
|
|
170
|
+
|
|
171
|
+
```json
|
|
172
|
+
{
|
|
173
|
+
"success": false,
|
|
174
|
+
"subagent": "e2e-tests",
|
|
175
|
+
"error": "Error message describing what went wrong",
|
|
176
|
+
"partial_output": {
|
|
177
|
+
/* any tests generated before error */
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## EXIT CONDITION
|
|
185
|
+
|
|
186
|
+
Subagent completes when:
|
|
187
|
+
|
|
188
|
+
- ✅ All user journeys have E2E test files generated
|
|
189
|
+
- ✅ All tests follow knowledge fragment patterns
|
|
190
|
+
- ✅ JSON output written to temp file
|
|
191
|
+
- ✅ Fixture needs tracked
|
|
192
|
+
|
|
193
|
+
**Subagent terminates here.** Parent workflow will read output and proceed to aggregation.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## 🚨 SUBAGENT SUCCESS METRICS
|
|
198
|
+
|
|
199
|
+
### ✅ SUCCESS:
|
|
200
|
+
|
|
201
|
+
- All E2E tests generated following patterns
|
|
202
|
+
- JSON output valid and complete
|
|
203
|
+
- No API/component/unit tests included (out of scope)
|
|
204
|
+
- Resilient selectors used (getByRole, getByText)
|
|
205
|
+
- Network-first patterns applied (intercept before navigate)
|
|
206
|
+
|
|
207
|
+
### ❌ FAILURE:
|
|
208
|
+
|
|
209
|
+
- Generated tests other than E2E tests
|
|
210
|
+
- Did not follow knowledge fragment patterns
|
|
211
|
+
- Invalid or missing JSON output
|
|
212
|
+
- Ran tests (not subagent responsibility)
|
|
213
|
+
- Used brittle selectors (CSS classes, XPath)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: 'step-03c-aggregate'
|
|
3
|
-
description: 'Aggregate
|
|
3
|
+
description: 'Aggregate subagent outputs and complete test infrastructure'
|
|
4
4
|
outputFile: '{test_artifacts}/automation-summary.md'
|
|
5
5
|
nextStepFile: './step-04-validate-and-summarize.md'
|
|
6
6
|
---
|
|
@@ -9,7 +9,7 @@ nextStepFile: './step-04-validate-and-summarize.md'
|
|
|
9
9
|
|
|
10
10
|
## STEP GOAL
|
|
11
11
|
|
|
12
|
-
Read outputs from parallel
|
|
12
|
+
Read outputs from parallel subagents (API + E2E and/or Backend test generation based on `{detected_stack}`), aggregate results, and create supporting infrastructure (fixtures, helpers).
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -17,10 +17,10 @@ Read outputs from parallel subprocesses (API + E2E and/or Backend test generatio
|
|
|
17
17
|
|
|
18
18
|
- 📖 Read the entire step file before acting
|
|
19
19
|
- ✅ Speak in `{communication_language}`
|
|
20
|
-
- ✅ Read
|
|
21
|
-
- ✅ Generate shared fixtures based on fixture needs from both
|
|
20
|
+
- ✅ Read subagent outputs from temp files
|
|
21
|
+
- ✅ Generate shared fixtures based on fixture needs from both subagents
|
|
22
22
|
- ✅ Write all generated test files to disk
|
|
23
|
-
- ❌ Do NOT regenerate tests (use
|
|
23
|
+
- ❌ Do NOT regenerate tests (use subagent outputs)
|
|
24
24
|
- ❌ Do NOT run tests yet (that's step 4)
|
|
25
25
|
|
|
26
26
|
---
|
|
@@ -33,10 +33,10 @@ Read outputs from parallel subprocesses (API + E2E and/or Backend test generatio
|
|
|
33
33
|
|
|
34
34
|
## CONTEXT BOUNDARIES:
|
|
35
35
|
|
|
36
|
-
- Available context: config,
|
|
36
|
+
- Available context: config, subagent outputs from temp files
|
|
37
37
|
- Focus: aggregation and fixture generation only
|
|
38
38
|
- Limits: do not execute future steps
|
|
39
|
-
- Dependencies: Step 3A and 3B
|
|
39
|
+
- Dependencies: Step 3A and 3B subagent outputs
|
|
40
40
|
|
|
41
41
|
---
|
|
42
42
|
|
|
@@ -44,16 +44,16 @@ Read outputs from parallel subprocesses (API + E2E and/or Backend test generatio
|
|
|
44
44
|
|
|
45
45
|
**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise.
|
|
46
46
|
|
|
47
|
-
### 1. Read
|
|
47
|
+
### 1. Read Subagent Outputs
|
|
48
48
|
|
|
49
|
-
**Read API test
|
|
49
|
+
**Read API test subagent output (always):**
|
|
50
50
|
|
|
51
51
|
```javascript
|
|
52
52
|
const apiTestsPath = '/tmp/tea-automate-api-tests-{{timestamp}}.json';
|
|
53
53
|
const apiTestsOutput = JSON.parse(fs.readFileSync(apiTestsPath, 'utf8'));
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
**Read E2E test
|
|
56
|
+
**Read E2E test subagent output (if {detected_stack} is `frontend` or `fullstack`):**
|
|
57
57
|
|
|
58
58
|
```javascript
|
|
59
59
|
let e2eTestsOutput = null;
|
|
@@ -63,7 +63,7 @@ if (detected_stack === 'frontend' || detected_stack === 'fullstack') {
|
|
|
63
63
|
}
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
**Read Backend test
|
|
66
|
+
**Read Backend test subagent output (if {detected_stack} is `backend` or `fullstack`):**
|
|
67
67
|
|
|
68
68
|
```javascript
|
|
69
69
|
let backendTestsOutput = null;
|
|
@@ -73,7 +73,7 @@ if (detected_stack === 'backend' || detected_stack === 'fullstack') {
|
|
|
73
73
|
}
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
**Verify all launched
|
|
76
|
+
**Verify all launched subagents succeeded:**
|
|
77
77
|
|
|
78
78
|
- Check `apiTestsOutput.success === true`
|
|
79
79
|
- If E2E was launched: check `e2eTestsOutput.success === true`
|
|
@@ -119,7 +119,7 @@ if (backendTestsOutput) {
|
|
|
119
119
|
|
|
120
120
|
### 3. Aggregate Fixture Needs
|
|
121
121
|
|
|
122
|
-
**Collect all fixture needs from all launched
|
|
122
|
+
**Collect all fixture needs from all launched subagents:**
|
|
123
123
|
|
|
124
124
|
```javascript
|
|
125
125
|
const allFixtureNeeds = [
|
|
@@ -227,6 +227,22 @@ export const waitForApiResponse = async (page: Page, urlPattern: string) => {
|
|
|
227
227
|
const e2eCount = e2eTestsOutput ? e2eTestsOutput.test_count : 0;
|
|
228
228
|
const backendCount = backendTestsOutput ? (backendTestsOutput.coverageSummary?.totalTests ?? 0) : 0;
|
|
229
229
|
|
|
230
|
+
const resolvedMode = subagentContext?.execution?.resolvedMode;
|
|
231
|
+
const subagentExecutionLabel =
|
|
232
|
+
resolvedMode === 'sequential'
|
|
233
|
+
? 'SEQUENTIAL (API then dependent workers)'
|
|
234
|
+
: resolvedMode === 'agent-team'
|
|
235
|
+
? 'AGENT-TEAM (parallel worker squad)'
|
|
236
|
+
: resolvedMode === 'subagent'
|
|
237
|
+
? 'SUBAGENT (parallel subagents)'
|
|
238
|
+
: `PARALLEL (based on ${detected_stack})`;
|
|
239
|
+
const performanceGainLabel =
|
|
240
|
+
resolvedMode === 'sequential'
|
|
241
|
+
? 'baseline (no parallel speedup)'
|
|
242
|
+
: resolvedMode === 'agent-team' || resolvedMode === 'subagent'
|
|
243
|
+
? '~40-70% faster than sequential'
|
|
244
|
+
: 'mode-dependent';
|
|
245
|
+
|
|
230
246
|
const summary = {
|
|
231
247
|
detected_stack: '{detected_stack}',
|
|
232
248
|
total_tests: apiTestsOutput.test_count + e2eCount + backendCount,
|
|
@@ -260,8 +276,8 @@ const summary = {
|
|
|
260
276
|
...(e2eTestsOutput ? e2eTestsOutput.knowledge_fragments_used : []),
|
|
261
277
|
...(backendTestsOutput ? backendTestsOutput.knowledge_fragments_used || [] : []),
|
|
262
278
|
],
|
|
263
|
-
|
|
264
|
-
performance_gain:
|
|
279
|
+
subagent_execution: subagentExecutionLabel,
|
|
280
|
+
performance_gain: performanceGainLabel,
|
|
265
281
|
};
|
|
266
282
|
```
|
|
267
283
|
|
|
@@ -276,13 +292,13 @@ fs.writeFileSync('/tmp/tea-automate-summary-{{timestamp}}.json', JSON.stringify(
|
|
|
276
292
|
|
|
277
293
|
### 6. Optional Cleanup
|
|
278
294
|
|
|
279
|
-
**Clean up
|
|
295
|
+
**Clean up subagent temp files** (optional - can keep for debugging):
|
|
280
296
|
|
|
281
297
|
```javascript
|
|
282
298
|
fs.unlinkSync(apiTestsPath);
|
|
283
299
|
if (e2eTestsOutput) fs.unlinkSync('/tmp/tea-automate-e2e-tests-{{timestamp}}.json');
|
|
284
300
|
if (backendTestsOutput) fs.unlinkSync('/tmp/tea-automate-backend-tests-{{timestamp}}.json');
|
|
285
|
-
console.log('✅
|
|
301
|
+
console.log('✅ Subagent temp files cleaned up');
|
|
286
302
|
```
|
|
287
303
|
|
|
288
304
|
---
|
|
@@ -292,7 +308,7 @@ console.log('✅ Subprocess temp files cleaned up');
|
|
|
292
308
|
Display to user:
|
|
293
309
|
|
|
294
310
|
```
|
|
295
|
-
✅ Test Generation Complete (
|
|
311
|
+
✅ Test Generation Complete ({subagent_execution})
|
|
296
312
|
|
|
297
313
|
📊 Summary:
|
|
298
314
|
- Stack Type: {detected_stack}
|
|
@@ -307,7 +323,7 @@ Display to user:
|
|
|
307
323
|
- P2 (Medium): {P2} tests
|
|
308
324
|
- P3 (Low): {P3} tests
|
|
309
325
|
|
|
310
|
-
🚀 Performance:
|
|
326
|
+
🚀 Performance: {performance_gain}
|
|
311
327
|
|
|
312
328
|
📂 Generated Files:
|
|
313
329
|
- tests/api/[feature].spec.ts [always]
|
|
@@ -362,14 +378,14 @@ Load next step: `{nextStepFile}`
|
|
|
362
378
|
|
|
363
379
|
### ✅ SUCCESS:
|
|
364
380
|
|
|
365
|
-
- All launched
|
|
381
|
+
- All launched subagents succeeded (based on `{detected_stack}`)
|
|
366
382
|
- All test files written to disk
|
|
367
|
-
- Fixtures generated based on
|
|
383
|
+
- Fixtures generated based on subagent needs
|
|
368
384
|
- Summary complete and accurate
|
|
369
385
|
|
|
370
386
|
### ❌ SYSTEM FAILURE:
|
|
371
387
|
|
|
372
|
-
- One or more
|
|
388
|
+
- One or more subagents failed
|
|
373
389
|
- Test files not written to disk
|
|
374
390
|
- Fixtures missing or incomplete
|
|
375
391
|
- Summary missing or inaccurate
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
validationDate: 2026-01-27
|
|
3
3
|
workflowName: testarch-automate
|
|
4
|
-
workflowPath:
|
|
4
|
+
workflowPath: {project-root}/src/workflows/testarch/automate
|
|
5
5
|
validationStatus: COMPLETE
|
|
6
6
|
completionDate: 2026-01-27 10:03:10
|
|
7
7
|
---
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
validationDate: 2026-01-27
|
|
3
3
|
workflowName: testarch-automate
|
|
4
|
-
workflowPath:
|
|
4
|
+
workflowPath: {project-root}/src/workflows/testarch/automate
|
|
5
5
|
validationStatus: COMPLETE
|
|
6
6
|
completionDate: 2026-01-27 10:24:01
|
|
7
7
|
---
|
|
@@ -85,9 +85,9 @@ Standard BMAD config variables treated as valid exceptions: bmb_creations_output
|
|
|
85
85
|
- Steps use progressive prompts and clear role reinforcement; no laundry-list interrogation detected
|
|
86
86
|
- Flow progression is clear and aligned to workflow goals
|
|
87
87
|
|
|
88
|
-
##
|
|
88
|
+
## Subagent Optimization Opportunities
|
|
89
89
|
|
|
90
|
-
- No high-priority
|
|
90
|
+
- No high-priority subagent optimizations identified; workflow already uses step-file architecture
|
|
91
91
|
- Pattern 1 (grep/regex): N/A for most steps
|
|
92
92
|
- Pattern 2 (per-file analysis): already aligned to validation structure
|
|
93
93
|
- Pattern 3 (data ops): minimal data file loads
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Test Architect workflow: automate
|
|
2
2
|
name: testarch-automate
|
|
3
|
-
|
|
3
|
+
# prettier-ignore
|
|
4
|
+
description: 'Expand test automation coverage for codebase. Use when the user says "lets expand test coverage" or "I want to automate tests"'
|
|
4
5
|
|
|
5
6
|
# Critical variables from config
|
|
6
7
|
config_source: "{project-root}/_bmad/tea/config.yaml"
|
|
@@ -50,4 +51,3 @@ execution_hints:
|
|
|
50
51
|
interactive: false # Minimize prompts
|
|
51
52
|
autonomous: true # Proceed without user input unless blocked
|
|
52
53
|
iterative: true
|
|
53
|
-
|