ma-agents 2.19.2 → 2.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agents.code-workspace +11 -0
- package/bin/cli.js +250 -151
- package/docs/architecture.md +284 -0
- package/docs/development-guide.md +122 -0
- package/docs/index.md +48 -0
- package/docs/project-overview.md +56 -0
- package/docs/project-scan-report.json +50 -0
- package/docs/source-tree-analysis.md +84 -0
- package/docs/validation/bundled-installation-validation.md +52 -0
- package/lib/bmad-cache/bmb/.markdownlint-cli2.yaml +35 -0
- package/lib/bmad-cache/bmb/.nvmrc +1 -0
- package/lib/bmad-cache/bmb/.prettierignore +9 -0
- package/lib/bmad-cache/bmb/CNAME +1 -0
- package/lib/bmad-cache/bmb/LICENSE +30 -0
- package/lib/bmad-cache/bmb/README.md +63 -0
- package/lib/bmad-cache/bmb/eslint.config.mjs +141 -0
- package/lib/bmad-cache/bmb/package-lock.json +15283 -0
- package/lib/bmad-cache/bmb/package.json +96 -0
- package/lib/bmad-cache/bmb/prettier.config.mjs +32 -0
- package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/bmad-manifest.json +62 -0
- package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/recall_metrics.py +229 -0
- package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/seed_tracker.py +156 -0
- package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/symbol_stats.py +162 -0
- package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/tests/test_recall_metrics.py +115 -0
- package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/tests/test_seed_tracker.py +140 -0
- package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/tests/test_symbol_stats.py +113 -0
- package/lib/bmad-cache/bmb/samples/bmad-excalidraw/bmad-manifest.json +18 -0
- package/lib/bmad-cache/bmb/samples/bmad-excalidraw/scripts/generate_excalidraw.py +605 -0
- package/lib/bmad-cache/bmb/samples/bmad-excalidraw/scripts/tests/test_generate_excalidraw.py +360 -0
- package/lib/bmad-cache/bmb/samples/bmad-excalidraw/scripts/tests/test_validate_excalidraw.py +246 -0
- package/lib/bmad-cache/bmb/samples/bmad-excalidraw/scripts/validate_excalidraw.py +264 -0
- package/lib/bmad-cache/bmb/src/module-help.csv +7 -0
- package/lib/bmad-cache/bmb/src/module.yaml +20 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/bmad-manifest.json +24 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/bmad-manifest-schema.json +103 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/generate-html-report.py +1002 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/manifest.py +420 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/prepass-execution-deps.py +368 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/prepass-prompt-metrics.py +476 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/prepass-structure-capabilities.py +636 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/scan-path-standards.py +253 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-agent-builder/scripts/scan-scripts.py +745 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/bmad-manifest.json +23 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/bmad-manifest-schema.json +103 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/generate-html-report.py +1002 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/manifest.py +420 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/prepass-execution-deps.py +313 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/prepass-prompt-metrics.py +285 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/prepass-workflow-integrity.py +485 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/scan-path-standards.py +213 -0
- package/lib/bmad-cache/bmb/src/skills/bmad-workflow-builder/scripts/scan-scripts.py +745 -0
- package/lib/bmad-cache/bmb/tools/build-docs.mjs +448 -0
- package/lib/bmad-cache/bmb/tools/validate-file-refs.mjs +657 -0
- package/lib/bmad-cache/bmb/website/astro.config.mjs +134 -0
- package/lib/bmad-cache/bmb/website/public/favicon.ico +0 -0
- package/lib/bmad-cache/bmb/website/public/img/bmad-dark.png +0 -0
- package/lib/bmad-cache/bmb/website/public/img/bmad-light.png +0 -0
- package/lib/bmad-cache/bmb/website/src/components/Banner.astro +56 -0
- package/lib/bmad-cache/bmb/website/src/components/Header.astro +94 -0
- package/lib/bmad-cache/bmb/website/src/components/MobileMenuFooter.astro +33 -0
- package/lib/bmad-cache/bmb/website/src/content/config.ts +6 -0
- package/lib/bmad-cache/bmb/website/src/content/docs +1 -0
- package/lib/bmad-cache/bmb/website/src/lib/site-url.mjs +25 -0
- package/lib/bmad-cache/bmb/website/src/rehype-base-paths.js +88 -0
- package/lib/bmad-cache/bmb/website/src/rehype-markdown-links.js +117 -0
- package/lib/bmad-cache/bmb/website/src/styles/custom.css +484 -0
- package/lib/bmad-cache/cache-manifest.json +30 -0
- package/lib/bmad-cache/cis/.markdownlint-cli2.yaml +35 -0
- package/lib/bmad-cache/cis/.nvmrc +1 -0
- package/lib/bmad-cache/cis/.prettierignore +9 -0
- package/lib/bmad-cache/cis/CNAME +1 -0
- package/lib/bmad-cache/cis/LICENSE +26 -0
- package/lib/bmad-cache/cis/README.md +105 -0
- package/lib/bmad-cache/cis/eslint.config.mjs +141 -0
- package/lib/bmad-cache/cis/package.json +92 -0
- package/lib/bmad-cache/cis/prettier.config.mjs +32 -0
- package/lib/bmad-cache/cis/src/agents/brainstorming-coach.agent.yaml +21 -0
- package/lib/bmad-cache/cis/src/agents/creative-problem-solver.agent.yaml +21 -0
- package/lib/bmad-cache/cis/src/agents/design-thinking-coach.agent.yaml +21 -0
- package/lib/bmad-cache/cis/src/agents/innovation-strategist.agent.yaml +21 -0
- package/lib/bmad-cache/cis/src/agents/presentation-master.agent.yaml +53 -0
- package/lib/bmad-cache/cis/src/agents/storyteller/storyteller.agent.yaml +25 -0
- package/lib/bmad-cache/cis/src/module-help.csv +6 -0
- package/lib/bmad-cache/cis/src/module.yaml +27 -0
- package/lib/bmad-cache/cis/src/teams/creative-squad.yaml +7 -0
- package/lib/bmad-cache/cis/src/teams/default-party.csv +12 -0
- package/lib/bmad-cache/cis/src/workflows/README.md +175 -0
- package/lib/bmad-cache/cis/src/workflows/bmad-cis-design-thinking/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/cis/src/workflows/bmad-cis-design-thinking/design-methods.csv +31 -0
- package/lib/bmad-cache/cis/src/workflows/bmad-cis-innovation-strategy/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/cis/src/workflows/bmad-cis-innovation-strategy/innovation-frameworks.csv +31 -0
- package/lib/bmad-cache/cis/src/workflows/bmad-cis-problem-solving/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/cis/src/workflows/bmad-cis-problem-solving/solving-methods.csv +31 -0
- package/lib/bmad-cache/cis/src/workflows/bmad-cis-storytelling/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/cis/src/workflows/bmad-cis-storytelling/story-types.csv +26 -0
- package/lib/bmad-cache/cis/tools/build-docs.mjs +448 -0
- package/lib/bmad-cache/cis/website/astro.config.mjs +134 -0
- package/lib/bmad-cache/cis/website/public/favicon.ico +0 -0
- package/lib/bmad-cache/cis/website/public/img/bmad-dark.png +0 -0
- package/lib/bmad-cache/cis/website/public/img/bmad-light.png +0 -0
- package/lib/bmad-cache/cis/website/src/components/Banner.astro +56 -0
- package/lib/bmad-cache/cis/website/src/components/Header.astro +94 -0
- package/lib/bmad-cache/cis/website/src/components/MobileMenuFooter.astro +33 -0
- package/lib/bmad-cache/cis/website/src/content/config.ts +6 -0
- package/lib/bmad-cache/cis/website/src/content/docs +1 -0
- package/lib/bmad-cache/cis/website/src/lib/site-url.mjs +25 -0
- package/lib/bmad-cache/cis/website/src/rehype-base-paths.js +88 -0
- package/lib/bmad-cache/cis/website/src/rehype-markdown-links.js +117 -0
- package/lib/bmad-cache/cis/website/src/styles/custom.css +484 -0
- package/lib/bmad-cache/gds/.markdownlint-cli2.yaml +35 -0
- package/lib/bmad-cache/gds/.nvmrc +1 -0
- package/lib/bmad-cache/gds/.prettierignore +9 -0
- package/lib/bmad-cache/gds/CNAME +1 -0
- package/lib/bmad-cache/gds/LICENSE +26 -0
- package/lib/bmad-cache/gds/README.md +121 -0
- package/lib/bmad-cache/gds/eslint.config.mjs +141 -0
- package/lib/bmad-cache/gds/package.json +92 -0
- package/lib/bmad-cache/gds/prettier.config.mjs +32 -0
- package/lib/bmad-cache/gds/src/agents/game-architect.agent.yaml +44 -0
- package/lib/bmad-cache/gds/src/agents/game-designer.agent.yaml +45 -0
- package/lib/bmad-cache/gds/src/agents/game-dev.agent.yaml +49 -0
- package/lib/bmad-cache/gds/src/agents/game-qa.agent.yaml +63 -0
- package/lib/bmad-cache/gds/src/agents/game-scrum-master.agent.yaml +52 -0
- package/lib/bmad-cache/gds/src/agents/game-solo-dev.agent.yaml +53 -0
- package/lib/bmad-cache/gds/src/agents/tech-writer/tech-writer.agent.yaml +45 -0
- package/lib/bmad-cache/gds/src/gametest/qa-index.csv +18 -0
- package/lib/bmad-cache/gds/src/module-help.csv +35 -0
- package/lib/bmad-cache/gds/src/module.yaml +71 -0
- package/lib/bmad-cache/gds/src/teams/default-party.csv +12 -0
- package/lib/bmad-cache/gds/src/teams/team-gamedev.yaml +29 -0
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/brainstorm-game/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/brainstorm-game/game-brain-methods.csv +26 -0
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/game-brief/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/bmad-skill-manifest.yaml +9 -0
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/gds-domain-research/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/create-prd/bmad-skill-manifest.yaml +14 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/create-prd/data/domain-complexity.csv +15 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/create-prd/data/project-types.csv +11 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gdd/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gdd/game-types.csv +25 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-ux-design/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/narrative/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/check-implementation-readiness/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/create-epics-and-stories/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/game-architecture/architecture-patterns.yaml +507 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/game-architecture/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/game-architecture/decision-catalog.yaml +340 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/game-architecture/engine-mcps.yaml +270 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/game-architecture/pattern-categories.csv +13 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/generate-project-context/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/code-review/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/correct-course/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-create-story/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-dev-story/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/retrospective/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/sprint-planning/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/sprint-planning/sprint-status-template.yaml +55 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/sprint-status/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/document-project/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/document-project/documentation-requirements.csv +12 -0
- package/lib/bmad-cache/gds/src/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/automate/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/e2e-scaffold/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/performance/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/playtest-plan/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/test-design/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/test-framework/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/test-review/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev/bmad-skill-manifest.yaml +4 -0
- package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev-new-preview/bmad-skill-manifest.yaml +4 -0
- package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/quick-spec/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-cache/gds/tools/build-docs.mjs +450 -0
- package/lib/bmad-cache/gds/website/astro.config.mjs +134 -0
- package/lib/bmad-cache/gds/website/public/favicon.ico +0 -0
- package/lib/bmad-cache/gds/website/public/img/bmad-dark.png +0 -0
- package/lib/bmad-cache/gds/website/public/img/bmad-light.png +0 -0
- package/lib/bmad-cache/gds/website/src/components/Banner.astro +56 -0
- package/lib/bmad-cache/gds/website/src/components/Header.astro +94 -0
- package/lib/bmad-cache/gds/website/src/components/MobileMenuFooter.astro +33 -0
- package/lib/bmad-cache/gds/website/src/content/config.ts +6 -0
- package/lib/bmad-cache/gds/website/src/content/docs +1 -0
- package/lib/bmad-cache/gds/website/src/lib/site-url.mjs +25 -0
- package/lib/bmad-cache/gds/website/src/rehype-base-paths.js +88 -0
- package/lib/bmad-cache/gds/website/src/rehype-markdown-links.js +117 -0
- package/lib/bmad-cache/gds/website/src/styles/custom.css +484 -0
- package/lib/bmad-cache/tea/.coderabbit.yaml +40 -0
- package/lib/bmad-cache/tea/.husky/pre-commit +20 -0
- package/lib/bmad-cache/tea/.markdownlint-cli2.yaml +36 -0
- package/lib/bmad-cache/tea/.nvmrc +1 -0
- package/lib/bmad-cache/tea/.prettierignore +9 -0
- package/lib/bmad-cache/tea/CHANGELOG.md +253 -0
- package/lib/bmad-cache/tea/CONTRIBUTING.md +268 -0
- package/lib/bmad-cache/tea/LICENSE +26 -0
- package/lib/bmad-cache/tea/README.md +371 -0
- package/lib/bmad-cache/tea/SECURITY.md +85 -0
- package/lib/bmad-cache/tea/docs/404.md +20 -0
- package/lib/bmad-cache/tea/docs/MIGRATION.md +488 -0
- package/lib/bmad-cache/tea/docs/explanation/engagement-models.md +767 -0
- package/lib/bmad-cache/tea/docs/explanation/fixture-architecture.md +484 -0
- package/lib/bmad-cache/tea/docs/explanation/knowledge-base-system.md +601 -0
- package/lib/bmad-cache/tea/docs/explanation/network-first-patterns.md +884 -0
- package/lib/bmad-cache/tea/docs/explanation/risk-based-testing.md +628 -0
- package/lib/bmad-cache/tea/docs/explanation/step-file-architecture.md +599 -0
- package/lib/bmad-cache/tea/docs/explanation/subagent-architecture.md +189 -0
- package/lib/bmad-cache/tea/docs/explanation/tea-overview.md +474 -0
- package/lib/bmad-cache/tea/docs/explanation/test-quality-standards.md +965 -0
- package/lib/bmad-cache/tea/docs/explanation/testing-as-engineering.md +115 -0
- package/lib/bmad-cache/tea/docs/glossary/index.md +160 -0
- package/lib/bmad-cache/tea/docs/how-to/brownfield/use-tea-for-enterprise.md +571 -0
- package/lib/bmad-cache/tea/docs/how-to/brownfield/use-tea-with-existing-tests.md +631 -0
- package/lib/bmad-cache/tea/docs/how-to/customization/configure-browser-automation.md +243 -0
- package/lib/bmad-cache/tea/docs/how-to/customization/integrate-playwright-utils.md +846 -0
- package/lib/bmad-cache/tea/docs/how-to/workflows/run-atdd.md +464 -0
- package/lib/bmad-cache/tea/docs/how-to/workflows/run-automate.md +693 -0
- package/lib/bmad-cache/tea/docs/how-to/workflows/run-nfr-assess.md +731 -0
- package/lib/bmad-cache/tea/docs/how-to/workflows/run-test-design.md +144 -0
- package/lib/bmad-cache/tea/docs/how-to/workflows/run-test-review.md +634 -0
- package/lib/bmad-cache/tea/docs/how-to/workflows/run-trace.md +959 -0
- package/lib/bmad-cache/tea/docs/how-to/workflows/setup-ci.md +763 -0
- package/lib/bmad-cache/tea/docs/how-to/workflows/setup-test-framework.md +122 -0
- package/lib/bmad-cache/tea/docs/how-to/workflows/teach-me-testing.md +302 -0
- package/lib/bmad-cache/tea/docs/index.md +74 -0
- package/lib/bmad-cache/tea/docs/reference/commands.md +353 -0
- package/lib/bmad-cache/tea/docs/reference/configuration.md +1122 -0
- package/lib/bmad-cache/tea/docs/reference/knowledge-base.md +404 -0
- package/lib/bmad-cache/tea/docs/reference/troubleshooting.md +788 -0
- package/lib/bmad-cache/tea/docs/tutorials/learn-testing-tea-academy.md +266 -0
- package/lib/bmad-cache/tea/docs/tutorials/tea-lite-quickstart.md +465 -0
- package/lib/bmad-cache/tea/eslint.config.mjs +141 -0
- package/lib/bmad-cache/tea/package-lock.json +16046 -0
- package/lib/bmad-cache/tea/package.json +118 -0
- package/lib/bmad-cache/tea/prettier.config.mjs +32 -0
- package/lib/bmad-cache/tea/src/agents/tea.agent.yaml +67 -0
- package/lib/bmad-cache/tea/src/module-help.csv +10 -0
- package/lib/bmad-cache/tea/src/module.yaml +299 -0
- package/lib/bmad-cache/tea/src/teams/default-party.csv +2 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/adr-quality-readiness-checklist.md +377 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/api-request.md +563 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/api-testing-patterns.md +915 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/auth-session.md +548 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/burn-in.md +273 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/ci-burn-in.md +717 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/component-tdd.md +486 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/contract-testing.md +1050 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/data-factories.md +500 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/email-auth.md +721 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/error-handling.md +725 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/feature-flags.md +750 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/file-utils.md +456 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/fixture-architecture.md +401 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/fixtures-composition.md +382 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/intercept-network-call.md +426 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/log.md +426 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/network-error-monitor.md +401 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/network-first.md +486 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/network-recorder.md +527 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/nfr-criteria.md +670 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/overview.md +286 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/pact-consumer-di.md +310 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/pact-consumer-framework-setup.md +635 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/pact-mcp.md +204 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/pactjs-utils-consumer-helpers.md +270 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/pactjs-utils-overview.md +216 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/pactjs-utils-provider-verifier.md +315 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/pactjs-utils-request-filter.md +224 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/playwright-cli.md +165 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/playwright-config.md +730 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/probability-impact.md +601 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/recurse.md +421 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/risk-governance.md +615 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/selective-testing.md +732 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/selector-resilience.md +527 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/test-healing-patterns.md +644 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/test-levels-framework.md +473 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/test-priorities-matrix.md +373 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/test-quality.md +664 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/timing-debugging.md +372 -0
- package/lib/bmad-cache/tea/src/testarch/knowledge/visual-debugging.md +524 -0
- package/lib/bmad-cache/tea/src/testarch/tea-index.csv +43 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/README.md +74 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/SKILL.md +6 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/checklist.md +197 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/curriculum.yaml +129 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/quiz-questions.yaml +206 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/role-paths.yaml +136 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/session-content-map.yaml +207 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/tea-resources-index.yaml +359 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/instructions.md +130 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-01-init.md +235 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-01b-continue.md +147 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-02-assess.md +258 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-03-session-menu.md +219 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-01.md +460 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-02.md +465 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-03.md +301 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-04.md +234 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-05.md +234 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-06.md +209 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-07.md +212 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-05-completion.md +339 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-e/step-e-01-assess-workflow.md +141 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-e/step-e-02-apply-edits.md +122 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-v/step-v-01-validate.md +263 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/templates/certificate-template.md +86 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/templates/progress-template.yaml +95 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/templates/session-notes-template.md +83 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/workflow-plan-teach-me-testing.md +950 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/workflow.md +90 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/SKILL.md +6 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/atdd-checklist-template.md +371 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/checklist.md +374 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/instructions.md +45 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-01-preflight-and-context.md +226 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-01b-resume.md +96 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-02-generation-mode.md +125 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-03-test-strategy.md +110 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04-generate-tests.md +334 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04a-subagent-api-failing.md +286 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04b-subagent-e2e-failing.md +244 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-04c-aggregate.md +370 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-c/step-05-validate-and-complete.md +106 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-e/step-01-assess.md +65 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-e/step-02-apply-edit.md +60 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/steps-v/step-01-validate.md +67 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/validation-report-20260127-095021.md +73 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/validation-report-20260127-102401.md +116 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/workflow-plan.md +21 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/workflow.md +41 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/workflow.yaml +46 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/SKILL.md +6 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/checklist.md +611 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/instructions.md +50 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-01-preflight-and-context.md +237 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-01b-resume.md +94 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-02-identify-targets.md +169 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03-generate-tests.md +394 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03a-subagent-api.md +263 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03b-subagent-backend.md +246 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03b-subagent-e2e.md +213 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-03c-aggregate.md +393 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-c/step-04-validate-and-summarize.md +106 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-e/step-01-assess.md +65 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-e/step-02-apply-edit.md +60 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/steps-v/step-01-validate.md +67 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/validation-report-20260127-095021.md +72 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/validation-report-20260127-102401.md +114 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/workflow-plan.md +20 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/workflow.md +41 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/workflow.yaml +53 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/SKILL.md +6 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/azure-pipelines-template.yaml +155 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/checklist.md +289 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/github-actions-template.yaml +328 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/gitlab-ci-template.yaml +158 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/harness-pipeline-template.yaml +159 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/instructions.md +45 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/jenkins-pipeline-template.groovy +129 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-01-preflight.md +158 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-01b-resume.md +110 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-02-generate-pipeline.md +279 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-03-configure-quality-gates.md +135 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-04-validate-and-summary.md +92 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-e/step-01-assess.md +65 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-e/step-02-apply-edit.md +60 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-v/step-01-validate.md +81 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/validation-report-20260127-095021.md +72 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/validation-report-20260127-102401.md +114 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/workflow-plan.md +20 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/workflow.md +41 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/workflow.yaml +48 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/SKILL.md +6 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/checklist.md +345 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/instructions.md +45 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-01-preflight.md +132 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-01b-resume.md +116 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-02-select-framework.md +117 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-03-scaffold-framework.md +323 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-04-docs-and-scripts.md +105 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-c/step-05-validate-and-summary.md +93 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-e/step-01-assess.md +65 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-e/step-02-apply-edit.md +60 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/steps-v/step-01-validate.md +67 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/validation-report-20260127-095021.md +73 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/validation-report-20260127-102401.md +116 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/workflow-plan.md +22 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/workflow.md +41 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/workflow.yaml +48 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/SKILL.md +6 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/checklist.md +407 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/instructions.md +43 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/nfr-report-template.md +470 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-01-load-context.md +138 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-01b-resume.md +106 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-02-define-thresholds.md +107 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-03-gather-evidence.md +108 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04-evaluate-and-score.md +254 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04a-subagent-security.md +138 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04b-subagent-performance.md +84 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04c-subagent-reliability.md +85 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04d-subagent-scalability.md +88 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04e-aggregate-nfr.md +264 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-05-generate-report.md +108 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-e/step-01-assess.md +65 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-e/step-02-apply-edit.md +60 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-v/step-01-validate.md +67 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/validation-report-20260127-095021.md +73 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/validation-report-20260127-102401.md +116 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/workflow-plan.md +19 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/workflow.md +41 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/workflow.yaml +48 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/SKILL.md +6 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/checklist.md +464 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/instructions.md +105 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-01-detect-mode.md +134 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-01b-resume.md +102 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-02-load-context.md +242 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-03-risk-and-testability.md +110 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-04-coverage-plan.md +123 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-05-generate-output.md +222 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-e/step-01-assess.md +65 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-e/step-02-apply-edit.md +60 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-v/step-01-validate.md +67 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-architecture-template.md +230 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-handoff-template.md +70 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-qa-template.md +396 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-template.md +344 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/validation-report-20260127-095021.md +73 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/validation-report-20260127-102401.md +116 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/workflow-plan.md +22 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/workflow.md +41 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/workflow.yaml +77 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/SKILL.md +6 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/checklist.md +475 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/instructions.md +45 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-01-load-context.md +197 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-01b-resume.md +104 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-02-discover-tests.md +113 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03-quality-evaluation.md +274 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03a-subagent-determinism.md +214 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03b-subagent-isolation.md +125 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03c-subagent-maintainability.md +102 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03e-subagent-performance.md +117 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-03f-aggregate-scores.md +277 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-c/step-04-generate-report.md +111 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-e/step-01-assess.md +65 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-e/step-02-apply-edit.md +60 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/steps-v/step-01-validate.md +67 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/test-review-template.md +387 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/validation-report-20260127-095021.md +72 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/validation-report-20260127-102401.md +114 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/workflow-plan.md +18 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/workflow.md +41 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/workflow.yaml +48 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/SKILL.md +6 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/checklist.md +647 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/instructions.md +43 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-01-load-context.md +105 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-01b-resume.md +102 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-02-discover-tests.md +112 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-03-map-criteria.md +97 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-04-analyze-gaps.md +421 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-c/step-05-gate-decision.md +266 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-e/step-01-assess.md +65 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-e/step-02-apply-edit.md +60 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/steps-v/step-01-validate.md +67 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/trace-template.md +708 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/validation-report-20260127-095021.md +73 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/validation-report-20260127-102401.md +116 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow-plan.md +21 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow.md +41 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/workflow.yaml +56 -0
- package/lib/bmad-cache/tea/test/README.md +23 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +27 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +30 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +22 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +20 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +25 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +25 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +25 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +25 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +31 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +25 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +25 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +25 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +25 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +26 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +27 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +23 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +27 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +27 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +29 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +31 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +28 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +28 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +5 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +28 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +11 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +19 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +18 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +22 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +27 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +31 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +22 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +38 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +31 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +34 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +23 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +22 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +28 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +30 -0
- package/lib/bmad-cache/tea/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +24 -0
- package/lib/bmad-cache/tea/test/schema/agent.js +491 -0
- package/lib/bmad-cache/tea/test/test-agent-schema.js +387 -0
- package/lib/bmad-cache/tea/test/test-installation-components.js +214 -0
- package/lib/bmad-cache/tea/test/test-knowledge-base.js +208 -0
- package/lib/bmad-cache/tea/test/unit-test-schema.js +133 -0
- package/lib/bmad-cache/tea/test/validate-agent-schema.js +110 -0
- package/lib/bmad-cache/tea/tools/build-docs.js +575 -0
- package/lib/bmad-cache/tea/tools/fix-doc-links.js +288 -0
- package/lib/bmad-cache/tea/tools/schema/agent.js +491 -0
- package/lib/bmad-cache/tea/tools/validate-agent-schema.js +111 -0
- package/lib/bmad-cache/tea/tools/validate-doc-links.js +371 -0
- package/lib/bmad-cache/tea/tools/validate-tea-workflow-descriptions.js +122 -0
- package/lib/bmad-cache/tea/tools/verify-paths.js +100 -0
- package/lib/bmad-cache/tea/website/README.md +137 -0
- package/lib/bmad-cache/tea/website/astro.config.mjs +179 -0
- package/lib/bmad-cache/tea/website/package-lock.json +6856 -0
- package/lib/bmad-cache/tea/website/package.json +24 -0
- package/lib/bmad-cache/tea/website/public/favicon.ico +0 -0
- package/lib/bmad-cache/tea/website/public/img/tea-logo.svg +7 -0
- package/lib/bmad-cache/tea/website/public/robots.txt +37 -0
- package/lib/bmad-cache/tea/website/src/components/Banner.astro +59 -0
- package/lib/bmad-cache/tea/website/src/components/Header.astro +121 -0
- package/lib/bmad-cache/tea/website/src/components/MobileMenuFooter.astro +53 -0
- package/lib/bmad-cache/tea/website/src/content/config.ts +6 -0
- package/lib/bmad-cache/tea/website/src/content/docs +1 -0
- package/lib/bmad-cache/tea/website/src/lib/site-url.js +25 -0
- package/lib/bmad-cache/tea/website/src/pages/404.astro +11 -0
- package/lib/bmad-cache/tea/website/src/rehype-base-paths.js +89 -0
- package/lib/bmad-cache/tea/website/src/rehype-markdown-links.js +117 -0
- package/lib/bmad-cache/tea/website/src/styles/custom.css +499 -0
- package/lib/bmad-cache/tea/website/tsconfig.json +9 -0
- package/lib/bmad.js +76 -10
- package/lib/installer.js +23 -1
- package/package.json +4 -2
- package/scripts/build-bmad-cache.js +288 -0
- package/test/yes-flag.test.js +193 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-02-define-thresholds'
|
|
3
|
+
description: 'Identify NFR categories and thresholds'
|
|
4
|
+
nextStepFile: './step-03-gather-evidence.md'
|
|
5
|
+
outputFile: '{test_artifacts}/nfr-assessment.md'
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 2: Define NFR Categories & Thresholds
|
|
9
|
+
|
|
10
|
+
## STEP GOAL
|
|
11
|
+
|
|
12
|
+
Establish the NFR categories to assess and the thresholds used for validation.
|
|
13
|
+
|
|
14
|
+
## MANDATORY EXECUTION RULES
|
|
15
|
+
|
|
16
|
+
- 📖 Read the entire step file before acting
|
|
17
|
+
- ✅ Speak in `{communication_language}`
|
|
18
|
+
- 🚫 Never guess thresholds
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## EXECUTION PROTOCOLS:
|
|
23
|
+
|
|
24
|
+
- 🎯 Follow the MANDATORY SEQUENCE exactly
|
|
25
|
+
- 💾 Record outputs before proceeding
|
|
26
|
+
- 📖 Load the next step only when instructed
|
|
27
|
+
|
|
28
|
+
## CONTEXT BOUNDARIES:
|
|
29
|
+
|
|
30
|
+
- Available context: config, loaded artifacts, and knowledge fragments
|
|
31
|
+
- Focus: this step's goal only
|
|
32
|
+
- Limits: do not execute future steps
|
|
33
|
+
- Dependencies: prior steps' outputs (if any)
|
|
34
|
+
|
|
35
|
+
## MANDATORY SEQUENCE
|
|
36
|
+
|
|
37
|
+
**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise.
|
|
38
|
+
|
|
39
|
+
## 1. Select Categories
|
|
40
|
+
|
|
41
|
+
Use the ADR Quality Readiness Checklist (8 categories):
|
|
42
|
+
|
|
43
|
+
1. Testability & Automation
|
|
44
|
+
2. Test Data Strategy
|
|
45
|
+
3. Scalability & Availability
|
|
46
|
+
4. Disaster Recovery
|
|
47
|
+
5. Security
|
|
48
|
+
6. Monitorability/Debuggability/Manageability
|
|
49
|
+
7. QoS/QoE
|
|
50
|
+
8. Deployability
|
|
51
|
+
|
|
52
|
+
Add any `custom_nfr_categories` if provided.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 2. Define Thresholds
|
|
57
|
+
|
|
58
|
+
For each category, extract thresholds from:
|
|
59
|
+
|
|
60
|
+
- tech-spec (primary)
|
|
61
|
+
- PRD (secondary)
|
|
62
|
+
- story or test-design (feature-specific)
|
|
63
|
+
|
|
64
|
+
If a threshold is unknown, mark it **UNKNOWN** and plan to report **CONCERNS**.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 3. Confirm NFR Matrix
|
|
69
|
+
|
|
70
|
+
List each NFR category with its threshold or UNKNOWN status.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 4. Save Progress
|
|
75
|
+
|
|
76
|
+
**Save this step's accumulated work to `{outputFile}`.**
|
|
77
|
+
|
|
78
|
+
- **If `{outputFile}` does not exist** (first save), create it using the workflow template (if available) with YAML frontmatter:
|
|
79
|
+
|
|
80
|
+
```yaml
|
|
81
|
+
---
|
|
82
|
+
stepsCompleted: ['step-02-define-thresholds']
|
|
83
|
+
lastStep: 'step-02-define-thresholds'
|
|
84
|
+
lastSaved: '{date}'
|
|
85
|
+
---
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Then write this step's output below the frontmatter.
|
|
89
|
+
|
|
90
|
+
- **If `{outputFile}` already exists**, update:
|
|
91
|
+
- Add `'step-02-define-thresholds'` to `stepsCompleted` array (only if not already present)
|
|
92
|
+
- Set `lastStep: 'step-02-define-thresholds'`
|
|
93
|
+
- Set `lastSaved: '{date}'`
|
|
94
|
+
- Append this step's output to the appropriate section of the document.
|
|
95
|
+
|
|
96
|
+
Load next step: `{nextStepFile}`
|
|
97
|
+
|
|
98
|
+
## 🚨 SYSTEM SUCCESS/FAILURE METRICS:
|
|
99
|
+
|
|
100
|
+
### ✅ SUCCESS:
|
|
101
|
+
|
|
102
|
+
- Step completed in full with required outputs
|
|
103
|
+
|
|
104
|
+
### ❌ SYSTEM FAILURE:
|
|
105
|
+
|
|
106
|
+
- Skipped sequence steps or missing outputs
|
|
107
|
+
**Master Rule:** Skipping steps is FORBIDDEN.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-03-gather-evidence'
|
|
3
|
+
description: 'Collect evidence for each NFR category'
|
|
4
|
+
nextStepFile: './step-04-evaluate-and-score.md'
|
|
5
|
+
outputFile: '{test_artifacts}/nfr-assessment.md'
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 3: Gather Evidence
|
|
9
|
+
|
|
10
|
+
## STEP GOAL
|
|
11
|
+
|
|
12
|
+
Collect measurable evidence to evaluate each NFR category.
|
|
13
|
+
|
|
14
|
+
## MANDATORY EXECUTION RULES
|
|
15
|
+
|
|
16
|
+
- 📖 Read the entire step file before acting
|
|
17
|
+
- ✅ Speak in `{communication_language}`
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## EXECUTION PROTOCOLS:
|
|
22
|
+
|
|
23
|
+
- 🎯 Follow the MANDATORY SEQUENCE exactly
|
|
24
|
+
- 💾 Record outputs before proceeding
|
|
25
|
+
- 📖 Load the next step only when instructed
|
|
26
|
+
|
|
27
|
+
## CONTEXT BOUNDARIES:
|
|
28
|
+
|
|
29
|
+
- Available context: config, loaded artifacts, and knowledge fragments
|
|
30
|
+
- Focus: this step's goal only
|
|
31
|
+
- Limits: do not execute future steps
|
|
32
|
+
- Dependencies: prior steps' outputs (if any)
|
|
33
|
+
|
|
34
|
+
## MANDATORY SEQUENCE
|
|
35
|
+
|
|
36
|
+
**CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise.
|
|
37
|
+
|
|
38
|
+
## 1. Evidence Sources
|
|
39
|
+
|
|
40
|
+
Collect evidence for:
|
|
41
|
+
|
|
42
|
+
- **Performance**: load tests, metrics, response time data
|
|
43
|
+
- **Security**: scans, auth tests, vuln reports
|
|
44
|
+
- **Reliability**: error rates, burn-in runs, failover tests
|
|
45
|
+
- **Maintainability**: test quality, code health signals
|
|
46
|
+
- **Other categories**: logs, monitoring, DR drills, deployability checks
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 2. Browser-Based Evidence Collection (if `tea_browser_automation` is `cli` or `auto`)
|
|
51
|
+
|
|
52
|
+
> **Fallback:** If CLI is not installed, fall back to MCP (if available) or skip browser-based evidence collection.
|
|
53
|
+
|
|
54
|
+
For performance and security categories, CLI can gather live evidence:
|
|
55
|
+
|
|
56
|
+
**Performance evidence (page load, response times):**
|
|
57
|
+
|
|
58
|
+
1. `playwright-cli -s=tea-nfr open <target_url>`
|
|
59
|
+
2. `playwright-cli -s=tea-nfr network` → capture response times and payload sizes
|
|
60
|
+
3. `playwright-cli -s=tea-nfr screenshot --filename={test_artifacts}/nfr/perf-<page>.png`
|
|
61
|
+
4. `playwright-cli -s=tea-nfr close`
|
|
62
|
+
|
|
63
|
+
> **Session Hygiene:** Always close sessions using `playwright-cli -s=tea-nfr close`. Do NOT use `close-all` — it kills every session on the machine and breaks parallel execution.
|
|
64
|
+
|
|
65
|
+
Store artifacts under `{test_artifacts}/nfr/`
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 3. Evidence Gaps
|
|
70
|
+
|
|
71
|
+
If evidence is missing for a category, mark that category as **CONCERNS**.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 4. Save Progress
|
|
76
|
+
|
|
77
|
+
**Save this step's accumulated work to `{outputFile}`.**
|
|
78
|
+
|
|
79
|
+
- **If `{outputFile}` does not exist** (first save), create it using the workflow template (if available) with YAML frontmatter:
|
|
80
|
+
|
|
81
|
+
```yaml
|
|
82
|
+
---
|
|
83
|
+
stepsCompleted: ['step-03-gather-evidence']
|
|
84
|
+
lastStep: 'step-03-gather-evidence'
|
|
85
|
+
lastSaved: '{date}'
|
|
86
|
+
---
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Then write this step's output below the frontmatter.
|
|
90
|
+
|
|
91
|
+
- **If `{outputFile}` already exists**, update:
|
|
92
|
+
- Add `'step-03-gather-evidence'` to `stepsCompleted` array (only if not already present)
|
|
93
|
+
- Set `lastStep: 'step-03-gather-evidence'`
|
|
94
|
+
- Set `lastSaved: '{date}'`
|
|
95
|
+
- Append this step's output to the appropriate section of the document.
|
|
96
|
+
|
|
97
|
+
Load next step: `{nextStepFile}`
|
|
98
|
+
|
|
99
|
+
## 🚨 SYSTEM SUCCESS/FAILURE METRICS:
|
|
100
|
+
|
|
101
|
+
### ✅ SUCCESS:
|
|
102
|
+
|
|
103
|
+
- Step completed in full with required outputs
|
|
104
|
+
|
|
105
|
+
### ❌ SYSTEM FAILURE:
|
|
106
|
+
|
|
107
|
+
- Skipped sequence steps or missing outputs
|
|
108
|
+
**Master Rule:** Skipping steps is FORBIDDEN.
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-04-evaluate-and-score'
|
|
3
|
+
description: 'Orchestrate adaptive NFR domain assessments (agent-team, subagent, or sequential)'
|
|
4
|
+
nextStepFile: './step-04e-aggregate-nfr.md'
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Step 4: Orchestrate Adaptive NFR Assessment
|
|
8
|
+
|
|
9
|
+
## STEP GOAL
|
|
10
|
+
|
|
11
|
+
Select execution mode deterministically, then assess NFR domains using agent-team, subagent, or sequential execution while preserving output contracts.
|
|
12
|
+
|
|
13
|
+
## MANDATORY EXECUTION RULES
|
|
14
|
+
|
|
15
|
+
- 📖 Read the entire step file before acting
|
|
16
|
+
- ✅ Speak in `{communication_language}`
|
|
17
|
+
- ✅ Resolve execution mode from config (`tea_execution_mode`, `tea_capability_probe`)
|
|
18
|
+
- ✅ Apply fallback rules deterministically when requested mode is unsupported
|
|
19
|
+
- ✅ Wait for required worker steps to complete
|
|
20
|
+
- ❌ Do NOT skip capability checks when probing is enabled
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## EXECUTION PROTOCOLS:
|
|
25
|
+
|
|
26
|
+
- 🎯 Follow the MANDATORY SEQUENCE exactly
|
|
27
|
+
- 💾 Wait for subagent outputs
|
|
28
|
+
- 📖 Load the next step only when instructed
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## MANDATORY SEQUENCE
|
|
33
|
+
|
|
34
|
+
### 1. Prepare Execution Context
|
|
35
|
+
|
|
36
|
+
**Generate unique timestamp:**
|
|
37
|
+
|
|
38
|
+
```javascript
|
|
39
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Prepare context:**
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
const parseBooleanFlag = (value, defaultValue = true) => {
|
|
46
|
+
if (typeof value === 'string') {
|
|
47
|
+
const normalized = value.trim().toLowerCase();
|
|
48
|
+
if (['false', '0', 'off', 'no'].includes(normalized)) return false;
|
|
49
|
+
if (['true', '1', 'on', 'yes'].includes(normalized)) return true;
|
|
50
|
+
}
|
|
51
|
+
if (value === undefined || value === null) return defaultValue;
|
|
52
|
+
return Boolean(value);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const subagentContext = {
|
|
56
|
+
system_context: /* from Step 1 */,
|
|
57
|
+
nfr_thresholds: /* from Step 2 */,
|
|
58
|
+
evidence_gathered: /* from Step 3 */,
|
|
59
|
+
config: {
|
|
60
|
+
execution_mode: config.tea_execution_mode || 'auto', // "auto" | "subagent" | "agent-team" | "sequential"
|
|
61
|
+
capability_probe: parseBooleanFlag(config.tea_capability_probe, true), // supports booleans and "false"/"true" strings
|
|
62
|
+
},
|
|
63
|
+
timestamp: timestamp
|
|
64
|
+
};
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
### 2. Resolve Execution Mode with Capability Probe
|
|
70
|
+
|
|
71
|
+
```javascript
|
|
72
|
+
const normalizeUserExecutionMode = (mode) => {
|
|
73
|
+
if (typeof mode !== 'string') return null;
|
|
74
|
+
const normalized = mode.trim().toLowerCase().replace(/[-_]/g, ' ').replace(/\s+/g, ' ');
|
|
75
|
+
|
|
76
|
+
if (normalized === 'auto') return 'auto';
|
|
77
|
+
if (normalized === 'sequential') return 'sequential';
|
|
78
|
+
if (normalized === 'subagent' || normalized === 'sub agent' || normalized === 'subagents' || normalized === 'sub agents') {
|
|
79
|
+
return 'subagent';
|
|
80
|
+
}
|
|
81
|
+
if (normalized === 'agent team' || normalized === 'agent teams' || normalized === 'agentteam') {
|
|
82
|
+
return 'agent-team';
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return null;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const normalizeConfigExecutionMode = (mode) => {
|
|
89
|
+
if (mode === 'subagent') return 'subagent';
|
|
90
|
+
if (mode === 'auto' || mode === 'sequential' || mode === 'subagent' || mode === 'agent-team') {
|
|
91
|
+
return mode;
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// Explicit user instruction in the active run takes priority over config.
|
|
97
|
+
const explicitModeFromUser = normalizeUserExecutionMode(runtime.getExplicitExecutionModeHint?.() || null);
|
|
98
|
+
|
|
99
|
+
const requestedMode = explicitModeFromUser || normalizeConfigExecutionMode(subagentContext.config.execution_mode) || 'auto';
|
|
100
|
+
const probeEnabled = subagentContext.config.capability_probe;
|
|
101
|
+
|
|
102
|
+
const supports = {
|
|
103
|
+
subagent: false,
|
|
104
|
+
agentTeam: false,
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
if (probeEnabled) {
|
|
108
|
+
supports.subagent = runtime.canLaunchSubagents?.() === true;
|
|
109
|
+
supports.agentTeam = runtime.canLaunchAgentTeams?.() === true;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
let resolvedMode = requestedMode;
|
|
113
|
+
|
|
114
|
+
if (requestedMode === 'auto') {
|
|
115
|
+
if (supports.agentTeam) resolvedMode = 'agent-team';
|
|
116
|
+
else if (supports.subagent) resolvedMode = 'subagent';
|
|
117
|
+
else resolvedMode = 'sequential';
|
|
118
|
+
} else if (probeEnabled && requestedMode === 'agent-team' && !supports.agentTeam) {
|
|
119
|
+
resolvedMode = supports.subagent ? 'subagent' : 'sequential';
|
|
120
|
+
} else if (probeEnabled && requestedMode === 'subagent' && !supports.subagent) {
|
|
121
|
+
resolvedMode = 'sequential';
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
subagentContext.execution = {
|
|
125
|
+
requestedMode,
|
|
126
|
+
resolvedMode,
|
|
127
|
+
probeEnabled,
|
|
128
|
+
supports,
|
|
129
|
+
};
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Resolution precedence:
|
|
133
|
+
|
|
134
|
+
1. Explicit user request in this run (`agent team` => `agent-team`; `subagent` => `subagent`; `sequential`; `auto`)
|
|
135
|
+
2. `tea_execution_mode` from config
|
|
136
|
+
3. Runtime capability fallback (when probing enabled)
|
|
137
|
+
|
|
138
|
+
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.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
### 3. Dispatch 4 NFR Workers
|
|
143
|
+
|
|
144
|
+
**Subagent A: Security Assessment**
|
|
145
|
+
|
|
146
|
+
- File: `./step-04a-subagent-security.md`
|
|
147
|
+
- Output: `/tmp/tea-nfr-security-${timestamp}.json`
|
|
148
|
+
- Execution:
|
|
149
|
+
- `agent-team` or `subagent`: launch non-blocking
|
|
150
|
+
- `sequential`: run blocking and wait
|
|
151
|
+
- Status: Running... ⟳
|
|
152
|
+
|
|
153
|
+
**Subagent B: Performance Assessment**
|
|
154
|
+
|
|
155
|
+
- File: `./step-04b-subagent-performance.md`
|
|
156
|
+
- Output: `/tmp/tea-nfr-performance-${timestamp}.json`
|
|
157
|
+
- Status: Running... ⟳
|
|
158
|
+
|
|
159
|
+
**Subagent C: Reliability Assessment**
|
|
160
|
+
|
|
161
|
+
- File: `./step-04c-subagent-reliability.md`
|
|
162
|
+
- Output: `/tmp/tea-nfr-reliability-${timestamp}.json`
|
|
163
|
+
- Status: Running... ⟳
|
|
164
|
+
|
|
165
|
+
**Subagent D: Scalability Assessment**
|
|
166
|
+
|
|
167
|
+
- File: `./step-04d-subagent-scalability.md`
|
|
168
|
+
- Output: `/tmp/tea-nfr-scalability-${timestamp}.json`
|
|
169
|
+
- Status: Running... ⟳
|
|
170
|
+
|
|
171
|
+
In `agent-team` and `subagent` modes, runtime decides worker scheduling and concurrency.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
### 4. Wait for Expected Worker Completion
|
|
176
|
+
|
|
177
|
+
**If `resolvedMode` is `agent-team` or `subagent`:**
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
⏳ Waiting for 4 NFR subagents to complete...
|
|
181
|
+
├── Subagent A (Security): Running... ⟳
|
|
182
|
+
├── Subagent B (Performance): Running... ⟳
|
|
183
|
+
├── Subagent C (Reliability): Running... ⟳
|
|
184
|
+
└── Subagent D (Scalability): Running... ⟳
|
|
185
|
+
|
|
186
|
+
[... time passes ...]
|
|
187
|
+
|
|
188
|
+
✅ All 4 NFR subagents completed!
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**If `resolvedMode` is `sequential`:**
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
✅ Sequential mode: each worker already completed during dispatch.
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
### 5. Verify All Outputs Exist
|
|
200
|
+
|
|
201
|
+
```javascript
|
|
202
|
+
const outputs = ['security', 'performance', 'reliability', 'scalability'].map((domain) => `/tmp/tea-nfr-${domain}-${timestamp}.json`);
|
|
203
|
+
|
|
204
|
+
outputs.forEach((output) => {
|
|
205
|
+
if (!fs.existsSync(output)) {
|
|
206
|
+
throw new Error(`Subagent output missing: ${output}`);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
### 6. Execution Report
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
🚀 Performance Report:
|
|
217
|
+
- Execution Mode: {resolvedMode}
|
|
218
|
+
- Total Elapsed: ~mode-dependent
|
|
219
|
+
- Parallel Gain: ~67% faster when mode is subagent/agent-team
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
### 7. Proceed to Aggregation
|
|
225
|
+
|
|
226
|
+
Load next step: `{nextStepFile}`
|
|
227
|
+
|
|
228
|
+
The aggregation step will:
|
|
229
|
+
|
|
230
|
+
- Read all 4 NFR domain outputs
|
|
231
|
+
- Calculate overall risk level
|
|
232
|
+
- Aggregate compliance status
|
|
233
|
+
- Identify cross-domain risks
|
|
234
|
+
- Generate executive summary
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## EXIT CONDITION
|
|
239
|
+
|
|
240
|
+
Proceed when all 4 required worker steps completed and outputs exist.
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## 🚨 SYSTEM SUCCESS METRICS
|
|
245
|
+
|
|
246
|
+
### ✅ SUCCESS:
|
|
247
|
+
|
|
248
|
+
- All required worker steps completed
|
|
249
|
+
- Fallback behavior respected configuration and capability probe rules
|
|
250
|
+
|
|
251
|
+
### ❌ FAILURE:
|
|
252
|
+
|
|
253
|
+
- One or more subagents failed
|
|
254
|
+
- Unsupported requested mode with probing disabled
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-04a-subagent-security'
|
|
3
|
+
description: 'Subagent: Security NFR assessment'
|
|
4
|
+
subagent: true
|
|
5
|
+
outputFile: '/tmp/tea-nfr-security-{{timestamp}}.json'
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Subagent 4A: Security NFR Assessment
|
|
9
|
+
|
|
10
|
+
## SUBAGENT CONTEXT
|
|
11
|
+
|
|
12
|
+
This is an **isolated subagent** running in parallel with other NFR domain assessments.
|
|
13
|
+
|
|
14
|
+
**Your task:** Assess SECURITY NFR domain only.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## MANDATORY EXECUTION RULES
|
|
19
|
+
|
|
20
|
+
- ✅ Assess SECURITY only (not performance, reliability, scalability)
|
|
21
|
+
- ✅ Output structured JSON to temp file
|
|
22
|
+
- ❌ Do NOT assess other NFR domains
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## SUBAGENT TASK
|
|
27
|
+
|
|
28
|
+
### 1. Security Assessment Categories
|
|
29
|
+
|
|
30
|
+
**Assess the following security dimensions:**
|
|
31
|
+
|
|
32
|
+
**A) Authentication & Authorization:**
|
|
33
|
+
|
|
34
|
+
- OAuth2/JWT implementation
|
|
35
|
+
- Session management
|
|
36
|
+
- Multi-factor authentication
|
|
37
|
+
- Role-based access control (RBAC)
|
|
38
|
+
|
|
39
|
+
**B) Data Protection:**
|
|
40
|
+
|
|
41
|
+
- Encryption at rest
|
|
42
|
+
- Encryption in transit (HTTPS/TLS)
|
|
43
|
+
- Sensitive data handling (PII, passwords)
|
|
44
|
+
- Database encryption
|
|
45
|
+
|
|
46
|
+
**C) Input Validation:**
|
|
47
|
+
|
|
48
|
+
- SQL injection prevention
|
|
49
|
+
- XSS prevention
|
|
50
|
+
- CSRF protection
|
|
51
|
+
- Input sanitization
|
|
52
|
+
|
|
53
|
+
**D) API Security:**
|
|
54
|
+
|
|
55
|
+
- Rate limiting
|
|
56
|
+
- API authentication
|
|
57
|
+
- CORS configuration
|
|
58
|
+
- Security headers
|
|
59
|
+
|
|
60
|
+
**E) Secrets Management:**
|
|
61
|
+
|
|
62
|
+
- Environment variables for secrets
|
|
63
|
+
- No hardcoded credentials
|
|
64
|
+
- Secret rotation policies
|
|
65
|
+
- Key management systems
|
|
66
|
+
|
|
67
|
+
### 2. Risk Assessment
|
|
68
|
+
|
|
69
|
+
For each category, determine status:
|
|
70
|
+
|
|
71
|
+
- **PASS**: Properly implemented
|
|
72
|
+
- **CONCERN**: Partially implemented or weak
|
|
73
|
+
- **FAIL**: Not implemented or critical vulnerability
|
|
74
|
+
- **N/A**: Not applicable to this system
|
|
75
|
+
|
|
76
|
+
### 3. Compliance Check
|
|
77
|
+
|
|
78
|
+
**Common compliance standards:**
|
|
79
|
+
|
|
80
|
+
- SOC2
|
|
81
|
+
- GDPR
|
|
82
|
+
- HIPAA
|
|
83
|
+
- PCI-DSS
|
|
84
|
+
- ISO 27001
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## OUTPUT FORMAT
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"domain": "security",
|
|
93
|
+
"risk_level": "MEDIUM",
|
|
94
|
+
"findings": [
|
|
95
|
+
{
|
|
96
|
+
"category": "Authentication",
|
|
97
|
+
"status": "PASS",
|
|
98
|
+
"description": "OAuth2 with JWT tokens implemented",
|
|
99
|
+
"evidence": ["src/auth/oauth.ts", "JWT refresh token rotation"],
|
|
100
|
+
"recommendations": []
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"category": "Data Encryption",
|
|
104
|
+
"status": "CONCERN",
|
|
105
|
+
"description": "Database encryption at rest not enabled",
|
|
106
|
+
"evidence": ["Database config shows no encryption"],
|
|
107
|
+
"recommendations": ["Enable database encryption at rest", "Use AWS RDS encryption or equivalent", "Implement key rotation policy"]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"category": "Input Validation",
|
|
111
|
+
"status": "FAIL",
|
|
112
|
+
"description": "SQL injection vulnerability in search endpoint",
|
|
113
|
+
"evidence": ["src/api/search.ts:42 - direct SQL concatenation"],
|
|
114
|
+
"recommendations": ["URGENT: Use parameterized queries", "Add input sanitization library", "Implement WAF rules"]
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"compliance": {
|
|
118
|
+
"SOC2": "PARTIAL",
|
|
119
|
+
"GDPR": "PASS",
|
|
120
|
+
"HIPAA": "N/A",
|
|
121
|
+
"PCI-DSS": "FAIL"
|
|
122
|
+
},
|
|
123
|
+
"priority_actions": [
|
|
124
|
+
"Fix SQL injection vulnerability (URGENT)",
|
|
125
|
+
"Enable database encryption within 30 days",
|
|
126
|
+
"Implement rate limiting for all APIs"
|
|
127
|
+
],
|
|
128
|
+
"summary": "Security posture is MEDIUM risk with 1 critical vulnerability requiring immediate attention"
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## EXIT CONDITION
|
|
135
|
+
|
|
136
|
+
Subagent completes when JSON output written to temp file.
|
|
137
|
+
|
|
138
|
+
**Subagent terminates here.**
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-04b-subagent-performance'
|
|
3
|
+
description: 'Subagent: Performance NFR assessment'
|
|
4
|
+
subagent: true
|
|
5
|
+
outputFile: '/tmp/tea-nfr-performance-{{timestamp}}.json'
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Subagent 4B: Performance NFR Assessment
|
|
9
|
+
|
|
10
|
+
## SUBAGENT CONTEXT
|
|
11
|
+
|
|
12
|
+
This is an **isolated subagent** running in parallel with other NFR domain assessments.
|
|
13
|
+
|
|
14
|
+
**Your task:** Assess PERFORMANCE NFR domain only.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## SUBAGENT TASK
|
|
19
|
+
|
|
20
|
+
### 1. Performance Assessment Categories
|
|
21
|
+
|
|
22
|
+
**A) Response Times:**
|
|
23
|
+
|
|
24
|
+
- API response times (<200ms target)
|
|
25
|
+
- Page load times (<2s target)
|
|
26
|
+
- Time to interactive (<3s target)
|
|
27
|
+
|
|
28
|
+
**B) Throughput:**
|
|
29
|
+
|
|
30
|
+
- Requests per second capacity
|
|
31
|
+
- Concurrent user support
|
|
32
|
+
- Database query performance
|
|
33
|
+
|
|
34
|
+
**C) Resource Usage:**
|
|
35
|
+
|
|
36
|
+
- Memory consumption
|
|
37
|
+
- CPU utilization
|
|
38
|
+
- Database connection pooling
|
|
39
|
+
|
|
40
|
+
**D) Optimization:**
|
|
41
|
+
|
|
42
|
+
- Caching strategies
|
|
43
|
+
- CDN usage
|
|
44
|
+
- Code splitting/lazy loading
|
|
45
|
+
- Database indexing
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## OUTPUT FORMAT
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"domain": "performance",
|
|
54
|
+
"risk_level": "LOW",
|
|
55
|
+
"findings": [
|
|
56
|
+
{
|
|
57
|
+
"category": "Response Times",
|
|
58
|
+
"status": "PASS",
|
|
59
|
+
"description": "API endpoints respond in <150ms (P95)",
|
|
60
|
+
"evidence": ["Load testing results show 140ms P95"],
|
|
61
|
+
"recommendations": []
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"category": "Caching",
|
|
65
|
+
"status": "CONCERN",
|
|
66
|
+
"description": "No CDN for static assets",
|
|
67
|
+
"evidence": ["Static files served from origin"],
|
|
68
|
+
"recommendations": ["Implement CDN (CloudFront/Cloudflare)", "Cache static assets for 1 year"]
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"compliance": {
|
|
72
|
+
"SLA_99.9": "PASS",
|
|
73
|
+
"SLA_99.99": "CONCERN"
|
|
74
|
+
},
|
|
75
|
+
"priority_actions": ["Implement CDN for static assets", "Add database query caching for frequent reads"],
|
|
76
|
+
"summary": "Performance is acceptable with minor optimization opportunities"
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## EXIT CONDITION
|
|
83
|
+
|
|
84
|
+
Subagent completes when JSON output written to temp file.
|