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,158 @@
|
|
|
1
|
+
# GitLab CI/CD Pipeline for Test Execution
|
|
2
|
+
# Generated by BMad TEA Agent - Test Architect Module
|
|
3
|
+
# Optimized for: Parallel Sharding, Burn-In Loop
|
|
4
|
+
# Stack: {test_stack_type} | Framework: {test_framework}
|
|
5
|
+
#
|
|
6
|
+
# Variables to customize per project:
|
|
7
|
+
# INSTALL_CMD - dependency install command (e.g., npm ci, pnpm install --frozen-lockfile)
|
|
8
|
+
# TEST_CMD - main test command (e.g., npm run test:e2e, npm test, npx vitest)
|
|
9
|
+
# LINT_CMD - lint command (e.g., npm run lint)
|
|
10
|
+
# BROWSER_INSTALL - browser install command (frontend/fullstack only; omit for backend)
|
|
11
|
+
# BROWSER_CACHE_PATH - browser cache path (frontend/fullstack only; omit for backend)
|
|
12
|
+
|
|
13
|
+
stages:
|
|
14
|
+
- lint
|
|
15
|
+
- test
|
|
16
|
+
- burn-in
|
|
17
|
+
- report
|
|
18
|
+
|
|
19
|
+
variables:
|
|
20
|
+
# Disable git depth for accurate change detection
|
|
21
|
+
GIT_DEPTH: 0
|
|
22
|
+
# Use npm ci for faster, deterministic installs
|
|
23
|
+
npm_config_cache: "$CI_PROJECT_DIR/.npm"
|
|
24
|
+
# Playwright browser cache
|
|
25
|
+
PLAYWRIGHT_BROWSERS_PATH: "$CI_PROJECT_DIR/.cache/ms-playwright"
|
|
26
|
+
# Default Node version when .nvmrc is missing
|
|
27
|
+
DEFAULT_NODE_VERSION: "24"
|
|
28
|
+
|
|
29
|
+
# Caching configuration
|
|
30
|
+
cache:
|
|
31
|
+
key:
|
|
32
|
+
files:
|
|
33
|
+
- package-lock.json
|
|
34
|
+
paths:
|
|
35
|
+
- .npm/
|
|
36
|
+
- .cache/ms-playwright/
|
|
37
|
+
- node_modules/
|
|
38
|
+
|
|
39
|
+
# Lint stage - Code quality checks
|
|
40
|
+
lint:
|
|
41
|
+
stage: lint
|
|
42
|
+
image: node:$DEFAULT_NODE_VERSION
|
|
43
|
+
before_script:
|
|
44
|
+
- |
|
|
45
|
+
NODE_VERSION=$(cat .nvmrc 2>/dev/null || echo "$DEFAULT_NODE_VERSION")
|
|
46
|
+
echo "Using Node $NODE_VERSION"
|
|
47
|
+
npm install -g n
|
|
48
|
+
n "$NODE_VERSION"
|
|
49
|
+
node -v
|
|
50
|
+
- npm ci # Replace with INSTALL_CMD
|
|
51
|
+
script:
|
|
52
|
+
- npm run lint # Replace with LINT_CMD
|
|
53
|
+
timeout: 5 minutes
|
|
54
|
+
|
|
55
|
+
# Test stage - Parallel execution with sharding
|
|
56
|
+
.test-template: &test-template
|
|
57
|
+
stage: test
|
|
58
|
+
image: node:$DEFAULT_NODE_VERSION
|
|
59
|
+
needs:
|
|
60
|
+
- lint
|
|
61
|
+
before_script:
|
|
62
|
+
- |
|
|
63
|
+
NODE_VERSION=$(cat .nvmrc 2>/dev/null || echo "$DEFAULT_NODE_VERSION")
|
|
64
|
+
echo "Using Node $NODE_VERSION"
|
|
65
|
+
npm install -g n
|
|
66
|
+
n "$NODE_VERSION"
|
|
67
|
+
node -v
|
|
68
|
+
- npm ci # Replace with INSTALL_CMD
|
|
69
|
+
- npx playwright install --with-deps chromium # Replace with BROWSER_INSTALL; remove for backend-only
|
|
70
|
+
artifacts:
|
|
71
|
+
when: on_failure
|
|
72
|
+
paths:
|
|
73
|
+
- test-results/
|
|
74
|
+
- playwright-report/
|
|
75
|
+
expire_in: 30 days
|
|
76
|
+
timeout: 30 minutes
|
|
77
|
+
|
|
78
|
+
test:shard-1:
|
|
79
|
+
<<: *test-template
|
|
80
|
+
script:
|
|
81
|
+
- npm run test:e2e -- --shard=1/4 # Replace with TEST_CMD + shard args
|
|
82
|
+
|
|
83
|
+
test:shard-2:
|
|
84
|
+
<<: *test-template
|
|
85
|
+
script:
|
|
86
|
+
- npm run test:e2e -- --shard=2/4 # Replace with TEST_CMD + shard args
|
|
87
|
+
|
|
88
|
+
test:shard-3:
|
|
89
|
+
<<: *test-template
|
|
90
|
+
script:
|
|
91
|
+
- npm run test:e2e -- --shard=3/4 # Replace with TEST_CMD + shard args
|
|
92
|
+
|
|
93
|
+
test:shard-4:
|
|
94
|
+
<<: *test-template
|
|
95
|
+
script:
|
|
96
|
+
- npm run test:e2e -- --shard=4/4 # Replace with TEST_CMD + shard args
|
|
97
|
+
|
|
98
|
+
# Burn-in stage - Flaky test detection
|
|
99
|
+
burn-in:
|
|
100
|
+
stage: burn-in
|
|
101
|
+
image: node:$DEFAULT_NODE_VERSION
|
|
102
|
+
needs:
|
|
103
|
+
- test:shard-1
|
|
104
|
+
- test:shard-2
|
|
105
|
+
- test:shard-3
|
|
106
|
+
- test:shard-4
|
|
107
|
+
# Only run burn-in on merge requests to main/develop or on schedule
|
|
108
|
+
rules:
|
|
109
|
+
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
110
|
+
- if: '$CI_PIPELINE_SOURCE == "schedule"'
|
|
111
|
+
before_script:
|
|
112
|
+
- |
|
|
113
|
+
NODE_VERSION=$(cat .nvmrc 2>/dev/null || echo "$DEFAULT_NODE_VERSION")
|
|
114
|
+
echo "Using Node $NODE_VERSION"
|
|
115
|
+
npm install -g n
|
|
116
|
+
n "$NODE_VERSION"
|
|
117
|
+
node -v
|
|
118
|
+
- npm ci # Replace with INSTALL_CMD
|
|
119
|
+
- npx playwright install --with-deps chromium # Replace with BROWSER_INSTALL; remove for backend-only
|
|
120
|
+
# Note: Burn-in targets UI flakiness. For backend-only stacks, remove this job entirely.
|
|
121
|
+
script:
|
|
122
|
+
- |
|
|
123
|
+
echo "🔥 Starting burn-in loop - detecting flaky tests"
|
|
124
|
+
for i in {1..10}; do
|
|
125
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
126
|
+
echo "🔥 Burn-in iteration $i/10"
|
|
127
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
128
|
+
npm run test:e2e || exit 1 # Replace with TEST_CMD
|
|
129
|
+
done
|
|
130
|
+
echo "✅ Burn-in complete - no flaky tests detected"
|
|
131
|
+
artifacts:
|
|
132
|
+
when: on_failure
|
|
133
|
+
paths:
|
|
134
|
+
- test-results/
|
|
135
|
+
- playwright-report/
|
|
136
|
+
expire_in: 30 days
|
|
137
|
+
timeout: 60 minutes
|
|
138
|
+
|
|
139
|
+
# Report stage - Aggregate results
|
|
140
|
+
report:
|
|
141
|
+
stage: report
|
|
142
|
+
image: alpine:latest
|
|
143
|
+
needs:
|
|
144
|
+
- test:shard-1
|
|
145
|
+
- test:shard-2
|
|
146
|
+
- test:shard-3
|
|
147
|
+
- test:shard-4
|
|
148
|
+
- burn-in
|
|
149
|
+
when: always
|
|
150
|
+
script:
|
|
151
|
+
- |
|
|
152
|
+
echo "## Test Execution Summary"
|
|
153
|
+
echo ""
|
|
154
|
+
echo "- Pipeline: $CI_PIPELINE_ID"
|
|
155
|
+
echo "- Shards: 4"
|
|
156
|
+
echo "- Branch: $CI_COMMIT_REF_NAME"
|
|
157
|
+
echo ""
|
|
158
|
+
echo "View detailed results in job artifacts"
|
package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/harness-pipeline-template.yaml
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Harness CI Pipeline for Test Execution
|
|
2
|
+
# Generated by BMad TEA Agent - Test Architect Module
|
|
3
|
+
# Optimized for: Parallel Sharding, Burn-In Loop
|
|
4
|
+
# Stack: {test_stack_type} | Framework: {test_framework}
|
|
5
|
+
#
|
|
6
|
+
# Variables to customize per project:
|
|
7
|
+
# INSTALL_CMD - dependency install command (e.g., npm ci, pnpm install --frozen-lockfile)
|
|
8
|
+
# TEST_CMD - main test command (e.g., npm run test:e2e, npm test, npx vitest)
|
|
9
|
+
# LINT_CMD - lint command (e.g., npm run lint)
|
|
10
|
+
# BROWSER_INSTALL - browser install command (frontend/fullstack only; omit for backend)
|
|
11
|
+
|
|
12
|
+
pipeline:
|
|
13
|
+
name: Test Pipeline
|
|
14
|
+
identifier: test_pipeline
|
|
15
|
+
projectIdentifier: default
|
|
16
|
+
orgIdentifier: default
|
|
17
|
+
stages:
|
|
18
|
+
# Lint stage - Code quality checks
|
|
19
|
+
- stage:
|
|
20
|
+
name: Lint
|
|
21
|
+
identifier: lint
|
|
22
|
+
type: CI
|
|
23
|
+
spec:
|
|
24
|
+
cloneCodebase: true
|
|
25
|
+
infrastructure:
|
|
26
|
+
type: KubernetesDirect
|
|
27
|
+
spec:
|
|
28
|
+
connectorRef: account.harnessImage
|
|
29
|
+
namespace: default
|
|
30
|
+
execution:
|
|
31
|
+
steps:
|
|
32
|
+
- step:
|
|
33
|
+
type: Run
|
|
34
|
+
name: Install dependencies
|
|
35
|
+
identifier: install
|
|
36
|
+
spec:
|
|
37
|
+
connectorRef: account.harnessImage
|
|
38
|
+
image: node:24
|
|
39
|
+
shell: Sh
|
|
40
|
+
command: npm ci # Replace with INSTALL_CMD
|
|
41
|
+
|
|
42
|
+
- step:
|
|
43
|
+
type: Run
|
|
44
|
+
name: Run linter
|
|
45
|
+
identifier: lint
|
|
46
|
+
spec:
|
|
47
|
+
connectorRef: account.harnessImage
|
|
48
|
+
image: node:24
|
|
49
|
+
shell: Sh
|
|
50
|
+
command: npm run lint # Replace with LINT_CMD
|
|
51
|
+
|
|
52
|
+
# Test stage - Parallel execution with sharding
|
|
53
|
+
- stage:
|
|
54
|
+
name: Test
|
|
55
|
+
identifier: test
|
|
56
|
+
type: CI
|
|
57
|
+
spec:
|
|
58
|
+
cloneCodebase: true
|
|
59
|
+
infrastructure:
|
|
60
|
+
type: KubernetesDirect
|
|
61
|
+
spec:
|
|
62
|
+
connectorRef: account.harnessImage
|
|
63
|
+
namespace: default
|
|
64
|
+
execution:
|
|
65
|
+
steps:
|
|
66
|
+
- step:
|
|
67
|
+
type: Run
|
|
68
|
+
name: Install dependencies
|
|
69
|
+
identifier: install
|
|
70
|
+
spec:
|
|
71
|
+
connectorRef: account.harnessImage
|
|
72
|
+
image: node:24
|
|
73
|
+
shell: Sh
|
|
74
|
+
command: npm ci # Replace with INSTALL_CMD
|
|
75
|
+
|
|
76
|
+
# Frontend/Fullstack only — remove this step for backend-only stacks
|
|
77
|
+
- step:
|
|
78
|
+
type: Run
|
|
79
|
+
name: Install browsers
|
|
80
|
+
identifier: browsers
|
|
81
|
+
spec:
|
|
82
|
+
connectorRef: account.harnessImage
|
|
83
|
+
image: mcr.microsoft.com/playwright:v1.50.0-noble
|
|
84
|
+
shell: Sh
|
|
85
|
+
command: npx playwright install --with-deps chromium # Replace with BROWSER_INSTALL
|
|
86
|
+
|
|
87
|
+
- parallel:
|
|
88
|
+
- step:
|
|
89
|
+
type: Run
|
|
90
|
+
name: Test Shard 1
|
|
91
|
+
identifier: shard_1
|
|
92
|
+
spec:
|
|
93
|
+
connectorRef: account.harnessImage
|
|
94
|
+
image: mcr.microsoft.com/playwright:v1.50.0-noble
|
|
95
|
+
shell: Sh
|
|
96
|
+
command: npm run test:e2e -- --shard=1/4 # Replace with TEST_CMD + shard args
|
|
97
|
+
- step:
|
|
98
|
+
type: Run
|
|
99
|
+
name: Test Shard 2
|
|
100
|
+
identifier: shard_2
|
|
101
|
+
spec:
|
|
102
|
+
connectorRef: account.harnessImage
|
|
103
|
+
image: mcr.microsoft.com/playwright:v1.50.0-noble
|
|
104
|
+
shell: Sh
|
|
105
|
+
command: npm run test:e2e -- --shard=2/4 # Replace with TEST_CMD + shard args
|
|
106
|
+
- step:
|
|
107
|
+
type: Run
|
|
108
|
+
name: Test Shard 3
|
|
109
|
+
identifier: shard_3
|
|
110
|
+
spec:
|
|
111
|
+
connectorRef: account.harnessImage
|
|
112
|
+
image: mcr.microsoft.com/playwright:v1.50.0-noble
|
|
113
|
+
shell: Sh
|
|
114
|
+
command: npm run test:e2e -- --shard=3/4 # Replace with TEST_CMD + shard args
|
|
115
|
+
- step:
|
|
116
|
+
type: Run
|
|
117
|
+
name: Test Shard 4
|
|
118
|
+
identifier: shard_4
|
|
119
|
+
spec:
|
|
120
|
+
connectorRef: account.harnessImage
|
|
121
|
+
image: mcr.microsoft.com/playwright:v1.50.0-noble
|
|
122
|
+
shell: Sh
|
|
123
|
+
command: npm run test:e2e -- --shard=4/4 # Replace with TEST_CMD + shard args
|
|
124
|
+
|
|
125
|
+
# Burn-in stage - Flaky test detection
|
|
126
|
+
# Note: Burn-in targets UI flakiness. For backend-only stacks, remove this stage entirely.
|
|
127
|
+
- stage:
|
|
128
|
+
name: Burn-In
|
|
129
|
+
identifier: burn_in
|
|
130
|
+
type: CI
|
|
131
|
+
when:
|
|
132
|
+
condition: <+pipeline.triggerType> == "WEBHOOK" || <+pipeline.triggerType> == "SCHEDULER"
|
|
133
|
+
spec:
|
|
134
|
+
cloneCodebase: true
|
|
135
|
+
infrastructure:
|
|
136
|
+
type: KubernetesDirect
|
|
137
|
+
spec:
|
|
138
|
+
connectorRef: account.harnessImage
|
|
139
|
+
namespace: default
|
|
140
|
+
execution:
|
|
141
|
+
steps:
|
|
142
|
+
- step:
|
|
143
|
+
type: Run
|
|
144
|
+
name: Install and burn-in
|
|
145
|
+
identifier: burn_in_loop
|
|
146
|
+
spec:
|
|
147
|
+
connectorRef: account.harnessImage
|
|
148
|
+
image: mcr.microsoft.com/playwright:v1.50.0-noble
|
|
149
|
+
shell: Sh
|
|
150
|
+
command: |
|
|
151
|
+
npm ci
|
|
152
|
+
npx playwright install --with-deps chromium
|
|
153
|
+
echo "Starting burn-in loop - detecting flaky tests"
|
|
154
|
+
for i in $(seq 1 10); do
|
|
155
|
+
echo "Burn-in iteration $i/10"
|
|
156
|
+
npm run test:e2e || exit 1
|
|
157
|
+
done
|
|
158
|
+
echo "Burn-in complete - no flaky tests detected"
|
|
159
|
+
# Replace npm ci with INSTALL_CMD, npm run test:e2e with TEST_CMD
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!-- Powered by BMAD-CORE™ -->
|
|
2
|
+
|
|
3
|
+
# CI/CD Pipeline Setup
|
|
4
|
+
|
|
5
|
+
**Workflow ID**: `_bmad/tea/testarch/bmad-testarch-ci`
|
|
6
|
+
**Version**: 5.0 (Step-File Architecture)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
Scaffold a production-ready CI/CD quality pipeline with test execution, burn-in loops for flaky detection, parallel sharding, artifact collection, and notifications.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## WORKFLOW ARCHITECTURE
|
|
17
|
+
|
|
18
|
+
This workflow uses **step-file architecture**:
|
|
19
|
+
|
|
20
|
+
- **Micro-file Design**: Each step is self-contained
|
|
21
|
+
- **JIT Loading**: Only the current step file is in memory
|
|
22
|
+
- **Sequential Enforcement**: Execute steps in order
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## INITIALIZATION SEQUENCE
|
|
27
|
+
|
|
28
|
+
### 1. Configuration Loading
|
|
29
|
+
|
|
30
|
+
From `workflow.yaml`, resolve:
|
|
31
|
+
|
|
32
|
+
- `config_source`, `test_artifacts`, `user_name`, `communication_language`, `document_output_language`, `date`
|
|
33
|
+
- `ci_platform`, `test_dir`
|
|
34
|
+
|
|
35
|
+
### 2. First Step
|
|
36
|
+
|
|
37
|
+
Load, read completely, and execute:
|
|
38
|
+
`./steps-c/step-01-preflight.md`
|
|
39
|
+
|
|
40
|
+
### 3. Resume Support
|
|
41
|
+
|
|
42
|
+
If the user selects **Resume** mode, load, read completely, and execute:
|
|
43
|
+
`./steps-c/step-01b-resume.md`
|
|
44
|
+
|
|
45
|
+
This checks the output document for progress tracking frontmatter and routes to the next incomplete step.
|
package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/jenkins-pipeline-template.groovy
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// Jenkinsfile CI/CD Pipeline for Test Execution
|
|
2
|
+
// Generated by BMad TEA Agent - Test Architect Module
|
|
3
|
+
// Optimized for: Parallel Sharding, Burn-In Loop
|
|
4
|
+
// Stack: {test_stack_type} | Framework: {test_framework}
|
|
5
|
+
//
|
|
6
|
+
// Variables to customize per project:
|
|
7
|
+
// INSTALL_CMD - dependency install command (e.g., npm ci, pnpm install --frozen-lockfile)
|
|
8
|
+
// TEST_CMD - main test command (e.g., npm run test:e2e, npm test, npx vitest)
|
|
9
|
+
// LINT_CMD - lint command (e.g., npm run lint)
|
|
10
|
+
// BROWSER_INSTALL - browser install command (frontend/fullstack only; omit for backend)
|
|
11
|
+
//
|
|
12
|
+
// Node.js version management — choose one:
|
|
13
|
+
// Option A (recommended): Configure NodeJS Plugin in Jenkins Global Tool Configuration,
|
|
14
|
+
// then add to pipeline: tools { nodejs 'NodeJS-24' }
|
|
15
|
+
// Option B: Use nvm (pre-installed on agent) — this template uses nvm as the default
|
|
16
|
+
// Option C: Use a Docker agent — agent { docker { image 'node:24' } }
|
|
17
|
+
|
|
18
|
+
pipeline {
|
|
19
|
+
agent any
|
|
20
|
+
|
|
21
|
+
environment {
|
|
22
|
+
CI = 'true'
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
options {
|
|
26
|
+
timeout(time: 45, unit: 'MINUTES')
|
|
27
|
+
disableConcurrentBuilds()
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
stages {
|
|
31
|
+
stage('Checkout') {
|
|
32
|
+
steps {
|
|
33
|
+
checkout scm
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
stage('Install') {
|
|
38
|
+
steps {
|
|
39
|
+
// Detect and apply Node.js version from .nvmrc (falls back to v24)
|
|
40
|
+
// If using NodeJS Plugin instead, remove this block and add: tools { nodejs 'NodeJS-24' }
|
|
41
|
+
sh '''
|
|
42
|
+
export NVM_DIR="$HOME/.nvm"
|
|
43
|
+
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
|
44
|
+
NODE_VERSION=$(cat .nvmrc 2>/dev/null || echo "24")
|
|
45
|
+
nvm install "$NODE_VERSION" 2>/dev/null || true
|
|
46
|
+
nvm use "$NODE_VERSION" 2>/dev/null || true
|
|
47
|
+
node --version
|
|
48
|
+
npm ci
|
|
49
|
+
''' // Replace npm ci with INSTALL_CMD
|
|
50
|
+
// Stash installed dependencies so parallel shards can restore them
|
|
51
|
+
stash includes: 'node_modules/**', name: 'deps'
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
stage('Lint') {
|
|
56
|
+
steps {
|
|
57
|
+
sh 'npm run lint' // Replace with LINT_CMD
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Test stage - Parallel execution with sharding
|
|
62
|
+
// Each shard restores dependencies via unstash for workspace safety
|
|
63
|
+
stage('Test') {
|
|
64
|
+
parallel {
|
|
65
|
+
stage('Shard 1') {
|
|
66
|
+
steps {
|
|
67
|
+
unstash 'deps'
|
|
68
|
+
// Frontend/Fullstack only — remove browser install for backend-only stacks
|
|
69
|
+
sh 'npx playwright install --with-deps chromium' // Replace with BROWSER_INSTALL
|
|
70
|
+
sh 'npm run test:e2e -- --shard=1/4' // Replace with TEST_CMD + shard args
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
stage('Shard 2') {
|
|
74
|
+
steps {
|
|
75
|
+
unstash 'deps'
|
|
76
|
+
sh 'npx playwright install --with-deps chromium' // Replace with BROWSER_INSTALL
|
|
77
|
+
sh 'npm run test:e2e -- --shard=2/4' // Replace with TEST_CMD + shard args
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
stage('Shard 3') {
|
|
81
|
+
steps {
|
|
82
|
+
unstash 'deps'
|
|
83
|
+
sh 'npx playwright install --with-deps chromium' // Replace with BROWSER_INSTALL
|
|
84
|
+
sh 'npm run test:e2e -- --shard=3/4' // Replace with TEST_CMD + shard args
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
stage('Shard 4') {
|
|
88
|
+
steps {
|
|
89
|
+
unstash 'deps'
|
|
90
|
+
sh 'npx playwright install --with-deps chromium' // Replace with BROWSER_INSTALL
|
|
91
|
+
sh 'npm run test:e2e -- --shard=4/4' // Replace with TEST_CMD + shard args
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Burn-in stage - Flaky test detection
|
|
98
|
+
// Note: Burn-in targets UI flakiness. For backend-only stacks, remove this stage entirely.
|
|
99
|
+
stage('Burn-In') {
|
|
100
|
+
when {
|
|
101
|
+
anyOf {
|
|
102
|
+
changeRequest()
|
|
103
|
+
triggeredBy 'TimerTrigger'
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
steps {
|
|
107
|
+
sh '''
|
|
108
|
+
echo "Starting burn-in loop - detecting flaky tests"
|
|
109
|
+
for i in $(seq 1 10); do
|
|
110
|
+
echo "Burn-in iteration $i/10"
|
|
111
|
+
npm run test:e2e || exit 1
|
|
112
|
+
done
|
|
113
|
+
echo "Burn-in complete - no flaky tests detected"
|
|
114
|
+
''' // Replace npm run test:e2e with TEST_CMD
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
post {
|
|
120
|
+
always {
|
|
121
|
+
// Archive test results and reports
|
|
122
|
+
archiveArtifacts artifacts: 'test-results/**,playwright-report/**', allowEmptyArchive: true
|
|
123
|
+
junit testResults: 'test-results/**/*.xml', allowEmptyResults: true
|
|
124
|
+
}
|
|
125
|
+
failure {
|
|
126
|
+
echo 'Pipeline failed - check test results and artifacts'
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/steps-c/step-01-preflight.md
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-01-preflight'
|
|
3
|
+
description: 'Verify prerequisites and detect CI platform'
|
|
4
|
+
nextStepFile: './step-02-generate-pipeline.md'
|
|
5
|
+
outputFile: '{test_artifacts}/ci-pipeline-progress.md'
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 1: Preflight Checks
|
|
9
|
+
|
|
10
|
+
## STEP GOAL
|
|
11
|
+
|
|
12
|
+
Verify CI prerequisites and determine target CI platform.
|
|
13
|
+
|
|
14
|
+
## MANDATORY EXECUTION RULES
|
|
15
|
+
|
|
16
|
+
- 📖 Read the entire step file before acting
|
|
17
|
+
- ✅ Speak in `{communication_language}`
|
|
18
|
+
- 🚫 Halt if requirements fail
|
|
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. Verify Git Repository
|
|
40
|
+
|
|
41
|
+
- `.git/` exists
|
|
42
|
+
- Remote configured (if available)
|
|
43
|
+
|
|
44
|
+
If missing: **HALT** with "Git repository required for CI/CD setup."
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 2. Detect Test Stack Type
|
|
49
|
+
|
|
50
|
+
Determine the project's test stack type (`test_stack_type`) using the following algorithm:
|
|
51
|
+
|
|
52
|
+
1. If `test_stack_type` is explicitly set in config (not `"auto"`), use that value.
|
|
53
|
+
2. Otherwise, auto-detect by scanning project manifests:
|
|
54
|
+
- **Frontend indicators**: `playwright.config.*`, `cypress.config.*`, `vite.config.*`, `next.config.*`, `src/components/`, `src/pages/`, `src/app/`
|
|
55
|
+
- **Backend indicators**: `pyproject.toml`, `pom.xml`/`build.gradle`, `go.mod`, `*.csproj`/`*.sln`, `Gemfile`, `Cargo.toml`, `jest.config.*`, `vitest.config.*`, `src/routes/`, `src/controllers/`, `src/api/`, `Dockerfile`, `serverless.yml`
|
|
56
|
+
- **Both present** → `fullstack`
|
|
57
|
+
- **Only frontend** → `frontend`
|
|
58
|
+
- **Only backend** → `backend`
|
|
59
|
+
- **Cannot determine** → default to `fullstack` and note assumption
|
|
60
|
+
|
|
61
|
+
Record detected `test_stack_type` in step output.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 3. Verify Test Framework
|
|
66
|
+
|
|
67
|
+
- Check for framework configuration based on detected stack:
|
|
68
|
+
- **Frontend/Fullstack**: `playwright.config.*` or `cypress.config.*` exists
|
|
69
|
+
- **Backend (Node.js)**: `jest.config.*` or `vitest.config.*` or test scripts in `package.json`
|
|
70
|
+
- **Backend (Python)**: `pyproject.toml` with `[tool.pytest]` or `pytest.ini` or `setup.cfg` with pytest config
|
|
71
|
+
- **Backend (Java/Kotlin)**: `pom.xml` with surefire/failsafe plugins or `build.gradle` with test task
|
|
72
|
+
- **Backend (Go)**: `*_test.go` files present (Go convention — no config file needed)
|
|
73
|
+
- **Backend (C#/.NET)**: `*.csproj` with xUnit/NUnit/MSTest references
|
|
74
|
+
- **Backend (Ruby)**: `Gemfile` with rspec or `.rspec` config file
|
|
75
|
+
- If `test_framework` is `"auto"`, detect from config files and project manifests found
|
|
76
|
+
- Verify test dependencies are installed (language-appropriate package manager)
|
|
77
|
+
|
|
78
|
+
If missing: **HALT** with "Run `framework` workflow first."
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 4. Ensure Tests Pass Locally
|
|
83
|
+
|
|
84
|
+
- Run the main test command based on detected stack and framework:
|
|
85
|
+
- **Node.js**: `npm test` or `npm run test:e2e`
|
|
86
|
+
- **Python**: `pytest` or `python -m pytest`
|
|
87
|
+
- **Java**: `mvn test` or `gradle test`
|
|
88
|
+
- **Go**: `go test ./...`
|
|
89
|
+
- **C#/.NET**: `dotnet test`
|
|
90
|
+
- **Ruby**: `bundle exec rspec`
|
|
91
|
+
- If failing: **HALT** and request fixes before CI setup
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 5. Detect CI Platform
|
|
96
|
+
|
|
97
|
+
- If `ci_platform` is explicitly set in config (not `"auto"`), use that value.
|
|
98
|
+
- Otherwise, scan for existing CI configuration files:
|
|
99
|
+
- `.github/workflows/*.yml` → `github-actions`
|
|
100
|
+
- `.gitlab-ci.yml` → `gitlab-ci`
|
|
101
|
+
- `Jenkinsfile` → `jenkins`
|
|
102
|
+
- `azure-pipelines.yml` → `azure-devops`
|
|
103
|
+
- `.harness/*.yaml` → `harness`
|
|
104
|
+
- `.circleci/config.yml` → `circle-ci`
|
|
105
|
+
- If found, ask whether to update or replace
|
|
106
|
+
- If not found, infer from git remote (github.com → `github-actions`, gitlab.com → `gitlab-ci`)
|
|
107
|
+
- If still unresolved, default to `github-actions`
|
|
108
|
+
|
|
109
|
+
Record detected `ci_platform` in step output.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 6. Read Environment Context
|
|
114
|
+
|
|
115
|
+
- Read environment context based on detected stack:
|
|
116
|
+
- **Node.js**: Read `.nvmrc` if present (default to Node 24+ LTS if missing); read `package.json` for dependency caching strategy
|
|
117
|
+
- **Python**: Read `.python-version` or `pyproject.toml` for Python version; note `pip`/`poetry`/`pipenv` for caching
|
|
118
|
+
- **Java**: Read `pom.xml`/`build.gradle` for Java version; note Maven/Gradle for caching
|
|
119
|
+
- **Go**: Read `go.mod` for Go version; note Go module cache path
|
|
120
|
+
- **C#/.NET**: Read `*.csproj`/`global.json` for .NET SDK version; note NuGet cache
|
|
121
|
+
- **Ruby**: Read `.ruby-version` or `Gemfile` for Ruby version; note Bundler cache
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
### 7. Save Progress
|
|
126
|
+
|
|
127
|
+
**Save this step's accumulated work to `{outputFile}`.**
|
|
128
|
+
|
|
129
|
+
- **If `{outputFile}` does not exist** (first save), create it with YAML frontmatter:
|
|
130
|
+
|
|
131
|
+
```yaml
|
|
132
|
+
---
|
|
133
|
+
stepsCompleted: ['step-01-preflight']
|
|
134
|
+
lastStep: 'step-01-preflight'
|
|
135
|
+
lastSaved: '{date}'
|
|
136
|
+
---
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Then write this step's output below the frontmatter.
|
|
140
|
+
|
|
141
|
+
- **If `{outputFile}` already exists**, update:
|
|
142
|
+
- Add `'step-01-preflight'` to `stepsCompleted` array (only if not already present)
|
|
143
|
+
- Set `lastStep: 'step-01-preflight'`
|
|
144
|
+
- Set `lastSaved: '{date}'`
|
|
145
|
+
- Append this step's output to the appropriate section of the document.
|
|
146
|
+
|
|
147
|
+
Load next step: `{nextStepFile}`
|
|
148
|
+
|
|
149
|
+
## 🚨 SYSTEM SUCCESS/FAILURE METRICS:
|
|
150
|
+
|
|
151
|
+
### ✅ SUCCESS:
|
|
152
|
+
|
|
153
|
+
- Step completed in full with required outputs
|
|
154
|
+
|
|
155
|
+
### ❌ SYSTEM FAILURE:
|
|
156
|
+
|
|
157
|
+
- Skipped sequence steps or missing outputs
|
|
158
|
+
**Master Rule:** Skipping steps is FORBIDDEN.
|