bmad-method-test-architecture-enterprise 2.0.4-next.3 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/.claude-plugin/marketplace.json +10 -10
  2. package/README.md +29 -13
  3. package/cli/atdd-red-check.js +1 -1
  4. package/cli/atdd-runner.js +1 -1
  5. package/cli/automate.js +3 -3
  6. package/cli/ci-runner.js +1 -1
  7. package/cli/lib/automate-prompt.js +1 -1
  8. package/cli/lib/framework-setup.js +2 -2
  9. package/cli/lib/resolve-skill.js +2 -2
  10. package/cli/lib/resolve-tea-config.js +54 -9
  11. package/cli/lib/teach-turn.js +558 -0
  12. package/cli/lib/test-design-parser.js +1 -1
  13. package/cli/lib/workflow-cli.js +5 -1
  14. package/cli/migrate-customizations.js +254 -0
  15. package/cli/nfr-runner.js +1 -1
  16. package/cli/nfr.js +2 -2
  17. package/cli/teach.js +433 -0
  18. package/cli/test-design.js +2 -2
  19. package/cli/test-review.js +3 -3
  20. package/cli/trace.js +2 -2
  21. package/cli/transcript-runner.js +1 -1
  22. package/package.json +8 -4
  23. package/skills/bmad-tea/SKILL.md +4 -2
  24. package/skills/bmad-tea/customize.toml +10 -10
  25. package/skills/{bmad-testarch-automate → bmad-tea-automate}/SKILL.md +3 -1
  26. package/skills/{bmad-testarch-automate → bmad-tea-automate}/checklist.md +1 -1
  27. package/skills/{bmad-testarch-nfr → bmad-tea-automate}/customize.toml +1 -1
  28. package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/customize.toml +1 -1
  29. package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/instructions.md +1 -1
  30. package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/workflow.yaml +2 -2
  31. package/skills/{bmad-testarch-automate → bmad-tea-automate}/resources/test-generation-routing.md +14 -14
  32. package/skills/{bmad-testarch-automate → bmad-tea-automate}/workflow.yaml +2 -2
  33. package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/SKILL.md +4 -2
  34. package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/inspection-record.md +1 -1
  35. package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/customize.toml +1 -1
  36. package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/ci.md +4 -4
  37. package/skills/{bmad-testarch-framework → bmad-tea-framework}/SKILL.md +5 -3
  38. package/skills/bmad-tea-framework/ci/customize.toml +10 -0
  39. package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/instructions.md +1 -1
  40. package/skills/{bmad-testarch-framework → bmad-tea-framework}/customize.toml +2 -2
  41. package/skills/{bmad-testarch-framework → bmad-tea-framework}/resources/framework-setup-progress.example.md +1 -1
  42. package/skills/{bmad-testarch-framework → bmad-tea-framework}/resources/hooks/tea-enforce.cjs +2 -2
  43. package/skills/{bmad-testarch-framework → bmad-tea-framework}/resources/setup-phase-completion.md +1 -1
  44. package/skills/{bmad-testarch-framework → bmad-tea-framework}/resources/setup-routing.md +3 -3
  45. package/skills/{bmad-testarch-framework → bmad-tea-framework}/resources/setup-run-progress.example.md +1 -1
  46. package/skills/{bmad-testarch-framework → bmad-tea-framework}/steps-c/step-04-docs-and-scripts.md +2 -2
  47. package/skills/{bmad-testarch-framework → bmad-tea-framework}/workflow.yaml +2 -2
  48. package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/SKILL.md +3 -1
  49. package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/checklist.md +3 -3
  50. package/skills/{bmad-testarch-trace → bmad-tea-nfr}/customize.toml +1 -1
  51. package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/instructions.md +1 -1
  52. package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/nfr-report-template.md +3 -3
  53. package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/resources/nfr-assessment.example.md +4 -4
  54. package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/workflow.yaml +2 -2
  55. package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/SKILL.md +3 -1
  56. package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/customize.toml +1 -1
  57. package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/instructions.md +2 -2
  58. package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-c/step-01-init.md +1 -2
  59. package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-c/step-01b-continue.md +1 -1
  60. package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-c/step-04-session-01.md +2 -2
  61. package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-c/step-04-session-02.md +1 -1
  62. package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-c/step-04-session-03.md +2 -2
  63. package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-c/step-04-session-05.md +2 -2
  64. package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-e/step-e-02-apply-edits.md +2 -2
  65. package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/SKILL.md +3 -1
  66. package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/checklist.md +3 -3
  67. package/skills/{bmad-testarch-automate → bmad-tea-test-design}/customize.toml +1 -1
  68. package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/resources/test-design-epic-3.example.md +5 -5
  69. package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/test-design-qa-template.md +1 -1
  70. package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/test-design-template.md +3 -3
  71. package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/workflow.yaml +2 -2
  72. package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/SKILL.md +3 -1
  73. package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/customize.toml +1 -1
  74. package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/instructions.md +1 -1
  75. package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/workflow.yaml +2 -2
  76. package/skills/{bmad-testarch-trace → bmad-tea-trace}/SKILL.md +3 -1
  77. package/skills/{bmad-testarch-trace → bmad-tea-trace}/checklist.md +2 -2
  78. package/skills/bmad-tea-trace/customize.toml +38 -0
  79. package/skills/{bmad-testarch-trace → bmad-tea-trace}/instructions.md +1 -1
  80. package/skills/{bmad-testarch-trace → bmad-tea-trace}/resources/traceability-matrix.example.md +1 -1
  81. package/skills/{bmad-testarch-trace → bmad-tea-trace}/steps-c/step-04-analyze-gaps.md +3 -3
  82. package/skills/{bmad-testarch-trace → bmad-tea-trace}/trace-template.md +2 -2
  83. package/skills/{bmad-testarch-trace → bmad-tea-trace}/workflow.yaml +2 -2
  84. package/skills/bmod-tea/bmod.toml +11 -11
  85. package/skills/bmod-tea/help/help.md +10 -10
  86. package/skills/bmod-tea/help/integrations.md +2 -2
  87. package/skills/bmod-tea/knowledge/burn-in.md +1 -1
  88. package/skills/bmod-tea/knowledge/risk-governance.md +1 -1
  89. package/skills/bmod-tea/knowledge/test-healing-patterns.md +1 -1
  90. package/skills/bmod-tea/migration-1.toml +11 -11
  91. package/skills/bmad-testarch-test-design/customize.toml +0 -38
  92. /package/skills/{bmad-teach-me-testing → bmad-tea-automate}/bmod.toml +0 -0
  93. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/instructions.md +0 -0
  94. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/atdd-checklist-template.md +0 -0
  95. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/checklist.md +0 -0
  96. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/resources/atdd-checklist-2-4-guest-checkout.example.md +0 -0
  97. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/steps-c/step-01-preflight-and-context.md +0 -0
  98. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/steps-c/step-01b-resume.md +0 -0
  99. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/steps-c/step-02-generation-mode.md +0 -0
  100. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/steps-c/step-03-test-strategy.md +0 -0
  101. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/steps-c/step-04-generate-tests.md +0 -0
  102. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/steps-c/step-04a-subagent-api-failing.md +0 -0
  103. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/steps-c/step-04b-subagent-e2e-failing.md +0 -0
  104. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/steps-c/step-04c-aggregate.md +0 -0
  105. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/steps-c/step-05-validate-and-complete.md +0 -0
  106. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/steps-e/step-01-assess.md +0 -0
  107. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/steps-e/step-02-apply-edit.md +0 -0
  108. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/red/steps-v/step-01-validate.md +0 -0
  109. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/resources/automation-summary.example.md +0 -0
  110. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/resources/run-and-heal.md +0 -0
  111. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/steps-c/step-01-preflight-and-context.md +0 -0
  112. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/steps-c/step-01b-resume.md +0 -0
  113. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/steps-c/step-02-identify-targets.md +0 -0
  114. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/steps-c/step-03-generate-tests.md +0 -0
  115. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/steps-c/step-03a-subagent-api.md +0 -0
  116. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/steps-c/step-03b-subagent-backend.md +0 -0
  117. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/steps-c/step-03b-subagent-e2e.md +0 -0
  118. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/steps-c/step-03b-subagent-mobile.md +0 -0
  119. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/steps-c/step-03c-aggregate.md +0 -0
  120. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/steps-c/step-04-validate-and-summarize.md +0 -0
  121. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/steps-e/step-01-assess.md +0 -0
  122. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/steps-e/step-02-apply-edit.md +0 -0
  123. /package/skills/{bmad-testarch-automate → bmad-tea-automate}/steps-v/step-01-validate.md +0 -0
  124. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/README.md +0 -0
  125. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/contract.skeleton.json +0 -0
  126. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/evaluation-ci-plan.template.json +0 -0
  127. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/evaluation-folder.gitignore +0 -0
  128. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/evaluation.json +0 -0
  129. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/evaluator-conditions.template.json +0 -0
  130. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/evaluators/LEARNED.md +0 -0
  131. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/evaluators/agentevals-frameworks.json +0 -0
  132. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/evaluators/agentevals-trajectory.mjs +0 -0
  133. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/evaluators/command-evaluator.mjs +0 -0
  134. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/evaluators/frameworks.json +0 -0
  135. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/evaluators/installed-version.mjs +0 -0
  136. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/evaluators/mapping.json +0 -0
  137. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/evaluators/promptfoo-assertions.mjs +0 -0
  138. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/evaluators/promptfoo-frameworks.json +0 -0
  139. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/http-probe-port.conformance.mjs +0 -0
  140. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/http-probe-port.mjs +0 -0
  141. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/requirements-statement.md +0 -0
  142. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/assets/scoring-policy.template.json +0 -0
  143. /package/skills/{bmad-testarch-automate → bmad-tea-evaluate}/bmod.toml +0 -0
  144. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/adapters.md +0 -0
  145. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/authoring-routing.md +0 -0
  146. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/contract.md +0 -0
  147. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/corpus-agent.md +0 -0
  148. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/corpus-ai-feature.md +0 -0
  149. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/corpus-skill.md +0 -0
  150. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/corpus-test-review-mechanism.md +0 -0
  151. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/corpus-tool-use-system.md +0 -0
  152. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/corpus-workflow.md +0 -0
  153. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/corpus.md +0 -0
  154. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/evaluator.md +0 -0
  155. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/gaps.md +0 -0
  156. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/harness.md +0 -0
  157. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/inspection.md +0 -0
  158. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/intake.md +0 -0
  159. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/mutation.md +0 -0
  160. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/oracles.md +0 -0
  161. /package/skills/{bmad-testarch-evaluate → bmad-tea-evaluate}/references/run.md +0 -0
  162. /package/skills/{bmad-testarch-evaluate → bmad-tea-framework}/bmod.toml +0 -0
  163. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/checklist.md +0 -0
  164. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/azure-pipelines-template.yaml +0 -0
  165. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/checklist.md +0 -0
  166. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/github-actions-template.yaml +0 -0
  167. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/gitlab-ci-template.yaml +0 -0
  168. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/harness-pipeline-template.yaml +0 -0
  169. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/jenkins-pipeline-template.groovy +0 -0
  170. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/resources/ci-pipeline-progress.example.md +0 -0
  171. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/steps-c/step-01-preflight.md +0 -0
  172. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/steps-c/step-01b-resume.md +0 -0
  173. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/steps-c/step-02-generate-pipeline.md +0 -0
  174. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/steps-c/step-03-configure-quality-gates.md +0 -0
  175. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/steps-c/step-03b-render-evaluation-plans.md +0 -0
  176. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/steps-c/step-04-validate-and-summary.md +0 -0
  177. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/steps-e/step-01-assess.md +0 -0
  178. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/steps-e/step-02-apply-edit.md +0 -0
  179. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/ci/steps-v/step-01-validate.md +0 -0
  180. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/instructions.md +0 -0
  181. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/resources/setup-parallel.md +0 -0
  182. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/resources/setup-state.md +0 -0
  183. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/steps-c/step-01-preflight.md +0 -0
  184. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/steps-c/step-01b-resume.md +0 -0
  185. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/steps-c/step-02-select-framework.md +0 -0
  186. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/steps-c/step-03-scaffold-framework.md +0 -0
  187. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/steps-c/step-05-validate-and-summary.md +0 -0
  188. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/steps-e/step-01-assess.md +0 -0
  189. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/steps-e/step-02-apply-edit.md +0 -0
  190. /package/skills/{bmad-testarch-framework → bmad-tea-framework}/steps-v/step-01-validate.md +0 -0
  191. /package/skills/{bmad-testarch-framework → bmad-tea-nfr}/bmod.toml +0 -0
  192. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-c/nfr-status-definitions.md +0 -0
  193. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-c/step-01-load-context.md +0 -0
  194. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-c/step-01b-resume.md +0 -0
  195. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-c/step-02-define-thresholds.md +0 -0
  196. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-c/step-03-gather-evidence.md +0 -0
  197. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-c/step-04-evaluate-and-score.md +0 -0
  198. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-c/step-04a-subagent-security.md +0 -0
  199. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-c/step-04b-subagent-performance.md +0 -0
  200. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-c/step-04c-subagent-reliability.md +0 -0
  201. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-c/step-04d-subagent-maintainability.md +0 -0
  202. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-c/step-04e-aggregate-nfr.md +0 -0
  203. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-c/step-05-generate-report.md +0 -0
  204. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-e/step-01-assess.md +0 -0
  205. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-e/step-02-apply-edit.md +0 -0
  206. /package/skills/{bmad-testarch-nfr → bmad-tea-nfr}/steps-v/step-01-validate.md +0 -0
  207. /package/skills/{bmad-testarch-nfr → bmad-tea-teach-me-testing}/bmod.toml +0 -0
  208. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/checklist.md +0 -0
  209. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/data/curriculum.yaml +0 -0
  210. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/data/quiz-questions.yaml +0 -0
  211. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/data/role-paths.yaml +0 -0
  212. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/data/session-content-map.yaml +0 -0
  213. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/data/tea-resources-index.yaml +0 -0
  214. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/resources/tea-completion-summary.example.md +0 -0
  215. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-c/step-02-assess.md +0 -0
  216. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-c/step-03-session-menu.md +0 -0
  217. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-c/step-04-session-04.md +0 -0
  218. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-c/step-04-session-06.md +0 -0
  219. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-c/step-04-session-07.md +0 -0
  220. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-c/step-05-completion.md +0 -0
  221. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-e/step-e-01-assess-workflow.md +0 -0
  222. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/steps-v/step-v-01-validate.md +0 -0
  223. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/templates/completion-summary-template.md +0 -0
  224. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/templates/progress-template.yaml +0 -0
  225. /package/skills/{bmad-teach-me-testing → bmad-tea-teach-me-testing}/templates/session-notes-template.md +0 -0
  226. /package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/bmod.toml +0 -0
  227. /package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/instructions.md +0 -0
  228. /package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/steps-c/step-01-detect-mode.md +0 -0
  229. /package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/steps-c/step-01b-resume.md +0 -0
  230. /package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/steps-c/step-02-load-context.md +0 -0
  231. /package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/steps-c/step-03-risk-and-testability.md +0 -0
  232. /package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/steps-c/step-04-coverage-plan.md +0 -0
  233. /package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/steps-c/step-05-generate-output.md +0 -0
  234. /package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/steps-e/step-01-assess.md +0 -0
  235. /package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/steps-e/step-02-apply-edit.md +0 -0
  236. /package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/steps-v/step-01-validate.md +0 -0
  237. /package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/test-design-architecture-template.md +0 -0
  238. /package/skills/{bmad-testarch-test-design → bmad-tea-test-design}/test-design-handoff-template.md +0 -0
  239. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/bmod.toml +0 -0
  240. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/checklist.md +0 -0
  241. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/resources/test-review.example.md +0 -0
  242. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-c/criteria-registry.md +0 -0
  243. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-c/step-01-load-context.md +0 -0
  244. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-c/step-01b-resume.md +0 -0
  245. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-c/step-02-discover-tests.md +0 -0
  246. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-c/step-03-quality-evaluation.md +0 -0
  247. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-c/step-03a-subagent-determinism.md +0 -0
  248. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-c/step-03b-subagent-isolation.md +0 -0
  249. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-c/step-03c-subagent-maintainability.md +0 -0
  250. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-c/step-03e-subagent-performance.md +0 -0
  251. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-c/step-03f-aggregate-scores.md +0 -0
  252. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-c/step-04-generate-report.md +0 -0
  253. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-e/step-01-assess.md +0 -0
  254. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-e/step-02-apply-edit.md +0 -0
  255. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/steps-v/step-01-validate.md +0 -0
  256. /package/skills/{bmad-testarch-test-review → bmad-tea-test-review}/test-review-template.md +0 -0
  257. /package/skills/{bmad-testarch-trace → bmad-tea-trace}/bmod.toml +0 -0
  258. /package/skills/{bmad-testarch-trace → bmad-tea-trace}/resources/live-verification-results.example.json +0 -0
  259. /package/skills/{bmad-testarch-trace → bmad-tea-trace}/steps-c/step-01-load-context.md +0 -0
  260. /package/skills/{bmad-testarch-trace → bmad-tea-trace}/steps-c/step-01b-resume.md +0 -0
  261. /package/skills/{bmad-testarch-trace → bmad-tea-trace}/steps-c/step-02-discover-tests.md +0 -0
  262. /package/skills/{bmad-testarch-trace → bmad-tea-trace}/steps-c/step-03-map-criteria.md +0 -0
  263. /package/skills/{bmad-testarch-trace → bmad-tea-trace}/steps-c/step-05-gate-decision.md +0 -0
  264. /package/skills/{bmad-testarch-trace → bmad-tea-trace}/steps-e/step-01-assess.md +0 -0
  265. /package/skills/{bmad-testarch-trace → bmad-tea-trace}/steps-e/step-02-apply-edit.md +0 -0
  266. /package/skills/{bmad-testarch-trace → bmad-tea-trace}/steps-v/step-01-validate.md +0 -0
@@ -30,22 +30,22 @@
30
30
  {
31
31
  "name": "bmad-method-test-architecture-enterprise",
32
32
  "source": "./",
33
- "description": "Master Test Architect module for quality strategy, test generation in red and expand modes with automatic run-and-heal, combined framework and CI setup, CI/CD quality gates, and structured testing education. The CI and ATDD commands remain available with existing customizations. Part of the BMad Method ecosystem.",
34
- "version": "2.0.4-next.3",
33
+ "description": "Master Test Architect module for quality strategy, test generation in red and expand modes with automatic run-and-heal, combined framework and CI setup, CI/CD quality gates, and structured testing education. Existing CI and ATDD customizations can be migrated to the new skill names. Part of the BMad Method ecosystem.",
34
+ "version": "3.0.0",
35
35
  "author": {
36
36
  "name": "Murat K Ozcan (TEA Creator) & Brian (BMad) Madison"
37
37
  },
38
38
  "skills": [
39
39
  "./skills/bmod-tea",
40
40
  "./skills/bmad-tea",
41
- "./skills/bmad-testarch-automate",
42
- "./skills/bmad-testarch-evaluate",
43
- "./skills/bmad-testarch-framework",
44
- "./skills/bmad-testarch-nfr",
45
- "./skills/bmad-testarch-test-design",
46
- "./skills/bmad-testarch-test-review",
47
- "./skills/bmad-testarch-trace",
48
- "./skills/bmad-teach-me-testing"
41
+ "./skills/bmad-tea-automate",
42
+ "./skills/bmad-tea-evaluate",
43
+ "./skills/bmad-tea-framework",
44
+ "./skills/bmad-tea-nfr",
45
+ "./skills/bmad-tea-test-design",
46
+ "./skills/bmad-tea-test-review",
47
+ "./skills/bmad-tea-trace",
48
+ "./skills/bmad-tea-teach-me-testing"
49
49
  ]
50
50
  }
51
51
  ]
package/README.md CHANGED
@@ -46,37 +46,52 @@ To install a tagged release, replace `<version>` with the release number:
46
46
  npx skills add https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise/tree/v<version>/skills
47
47
  ```
48
48
 
49
+ ### Upgrading to 3.0
50
+
51
+ The eight direct workflow commands now share the `bmad-tea-*` prefix. Replace `bmad-testarch-automate`, `-evaluate`, `-framework`, `-nfr`, `-test-design`, `-test-review`, and `-trace` with the same suffix under `bmad-tea-`. Replace `bmad-teach-me-testing` with `bmad-tea-teach-me-testing`. The 3.0 package does not publish the old slash commands. The `bmad-tea` agent, `bmod-tea` module, menu codes, and `tea-*` CLI executables keep their names.
52
+
53
+ After installing 3.0, move project customizations to the new names:
54
+
55
+ ```bash
56
+ npx --package=bmad-method-test-architecture-enterprise@3 tea-migrate-customizations --project-root . --check
57
+ npx --package=bmad-method-test-architecture-enterprise@3 tea-migrate-customizations --project-root .
58
+ ```
59
+
60
+ This includes old CI and ATDD customization files and old skill references in custom `bmad-tea` agent menus. The command moves old-only files with their comments and permissions intact. When both old and new filenames exist, it reports both paths and asks for a manual merge so no comments or values are lost. Resolve the reported files, then rerun the command. See the [configuration reference](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/reference/configuration/) for details.
61
+
62
+ An existing host may retain the old skill folders after installing 3.0. Check the host's project and global skills folders, back up any edits in the old folders, and move those eight folders out of skill discovery. The [troubleshooting guide](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/reference/troubleshooting/#old-slash-commands-still-appear-after-30) lists the exact folders and a safe cleanup sequence. Restart the host so its command list refreshes.
63
+
49
64
  <a id="start-with-one-workflow"></a>
50
65
 
51
66
  ## Start with one skill
52
67
 
53
68
  Eight commands start the eight workflows: Framework includes CI setup; Automate includes red and expand modes.
54
69
 
55
- In Claude Code, Cursor, and Windsurf, type `/bmad-testarch-test-design` in chat.
56
- In Codex, type `$bmad-testarch-test-design`.
70
+ In Claude Code, Cursor, and Windsurf, type `/bmad-tea-test-design` in chat.
71
+ In Codex, type `$bmad-tea-test-design`.
57
72
  You can also load `/bmad-tea` or `$bmad-tea` and choose a menu code.
58
73
  Each skill can run directly in a fresh session.
59
74
 
60
75
  | Skill | Command | Menu | Use it to |
61
76
  | ------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ---- | ---------------------------------------------------- |
62
- | [Automate](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-automate/) | `/bmad-testarch-automate` | TA | Generate red acceptance scaffolds or expand coverage |
63
- | [Test Review](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-test-review/) | `/bmad-testarch-test-review` | RV | Audit test quality and score findings |
64
- | [Test Design](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-test-design/) | `/bmad-testarch-test-design` | TD | Plan risks, coverage, and NFR evidence |
65
- | [Framework](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/setup-test-framework/) | `/bmad-testarch-framework` | TF | Set up a test framework, CI, or both |
66
- | [NFR](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-nfr-assess/) | `/bmad-testarch-nfr` | NR | Audit implemented NFR evidence |
67
- | [Trace](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-trace/) | `/bmad-testarch-trace` | TR | Map requirements to tests and decide a release gate |
68
- | [Teach Me Testing](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/teach-me-testing/) | `/bmad-teach-me-testing` | TMT | Learn testing through seven sessions |
77
+ | [Automate](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-automate/) | `/bmad-tea-automate` | TA | Generate red acceptance scaffolds or expand coverage |
78
+ | [Test Review](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-test-review/) | `/bmad-tea-test-review` | RV | Audit test quality and score findings |
79
+ | [Test Design](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-test-design/) | `/bmad-tea-test-design` | TD | Plan risks, coverage, and NFR evidence |
80
+ | [Framework](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/setup-test-framework/) | `/bmad-tea-framework` | TF | Set up a test framework, CI, or both |
81
+ | [NFR](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-nfr-assess/) | `/bmad-tea-nfr` | NR | Audit implemented NFR evidence |
82
+ | [Trace](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/run-trace/) | `/bmad-tea-trace` | TR | Map requirements to tests and decide a release gate |
83
+ | [Teach Me Testing](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/how-to/workflows/teach-me-testing/) | `/bmad-tea-teach-me-testing` | TMT | Learn testing through seven sessions |
69
84
 
70
85
  Evaluate:
71
86
 
72
- - [Evaluate](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/tutorials/evaluate-your-first-skill/): `/bmad-testarch-evaluate`, menu `EV`. Build and run a behavioral evaluation.
87
+ - [Evaluate](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/tutorials/evaluate-your-first-skill/): `/bmad-tea-evaluate`, menu `EV`. Build and run a behavioral evaluation.
73
88
 
74
- Framework and CI setup share one skill, `bmad-testarch-framework`.
89
+ Framework and CI setup share one skill, `bmad-tea-framework`.
75
90
  Ask for framework only, CI only, or both; TEA infers the scope from your prompt and asks "Do you want CI too?" once when CI scope is unclear in an interactive session. An unattended request with unclear scope runs framework setup only and states that CI was excluded.
76
- Request CI setup through `/bmad-testarch-framework` or the agent's `CI` menu code. Existing CI customizations remain usable.
91
+ Request CI setup through `/bmad-tea-framework` or the agent's `CI` menu code. Migrated CI customizations remain usable.
77
92
  Create, Resume, Validate, and Edit remain available for the selected setup scope.
78
93
 
79
- Automation uses `red` mode before implementation and `expand` mode for existing code. Request red mode through `/bmad-testarch-automate` or the agent's `AT` menu code; the direct command defaults to expand. Existing customization files and saved progress remain usable. Create runs execute the generated tests and repair test issues for up to three rounds. Red confirms the intended missing behavior; expand aims for passing coverage and reports product defects.
94
+ Automation uses `red` mode before implementation and `expand` mode for existing code. Request red mode through `/bmad-tea-automate` or the agent's `AT` menu code; the direct command defaults to expand. Migrated customization files and saved progress remain usable. Create runs execute the generated tests and repair test issues for up to three rounds. Red confirms the intended missing behavior; expand aims for passing coverage and reports product defects.
80
95
 
81
96
  For Codex, replace the leading `/` in the table with `$`.
82
97
  The agent menu also accepts `GATE` to route you through test review, NFR evidence audit, and trace Phase 2.
@@ -113,6 +128,7 @@ It requires Node.js 22.20.0 or later:
113
128
  npm install --save-dev bmad-method-test-architecture-enterprise
114
129
  ```
115
130
 
131
+ - [`tea-teach`](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/reference/tea-teach-cli/) teaches one learner turn and keeps conversation and session progress.
116
132
  - [`tea-test-review`](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/reference/tea-test-review-cli/) runs the review skill against changed tests and returns a gate verdict.
117
133
  - [`tea-framework`](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/reference/tea-framework-cli/) creates, resumes, validates, and edits test framework and CI setup with retained run evidence.
118
134
  - [`tea-trace`](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/reference/tea-trace-cli/) maps requirements to existing evidence and returns a coverage gate.
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
3
  * tea-atdd-red-check — activates and executes the scaffolds
4
- * `bmad-testarch-atdd` wrote, and reports what actually happened.
4
+ * `bmad-tea-atdd` wrote, and reports what actually happened.
5
5
  *
6
6
  * This is the deterministic half of the ATDD suite, and it carries no vendor
7
7
  * knowledge at all: it never calls a model, never resolves a credential, and
@@ -3,7 +3,7 @@
3
3
  * tea-atdd-runner — the command the ATDD behavioral contract names for
4
4
  * generation.
5
5
  *
6
- * `bmad-testarch-atdd` reads a story's acceptance criteria and writes red-phase
6
+ * `bmad-tea-atdd` reads a story's acceptance criteria and writes red-phase
7
7
  * test scaffolds under the project's `tests/` directory, one deliverable this
8
8
  * eval measures by executing rather than reading. Generation and execution are
9
9
  * two separate commands: this one drives the workflow and leaves the scaffolds
package/cli/automate.js CHANGED
@@ -135,11 +135,11 @@ async function main(argv) {
135
135
  if (options.projectSkill) {
136
136
  const candidates = ['.claude/skills', '.agents/skills', 'skills', '_bmad/tea/workflows/testarch'];
137
137
  options.skillRoot = candidates
138
- .map((directory) => path.join(root, directory, 'bmad-testarch-automate'))
138
+ .map((directory) => path.join(root, directory, 'bmad-tea-automate'))
139
139
  .find((candidate) => fs.existsSync(path.join(candidate, 'SKILL.md')));
140
- if (!options.skillRoot) throw new Error('project-installed bmad-testarch-automate skill is missing');
140
+ if (!options.skillRoot) throw new Error('project-installed bmad-tea-automate skill is missing');
141
141
  }
142
- skillRoot = resolveWorkflowSkill({ projectRoot: root, skillName: 'bmad-testarch-automate', skillRoot: options.skillRoot });
142
+ skillRoot = resolveWorkflowSkill({ projectRoot: root, skillName: 'bmad-tea-automate', skillRoot: options.skillRoot });
143
143
  if (!fs.existsSync(path.join(skillRoot, '..', 'bmod-tea', 'knowledge', 'tea-index.csv')))
144
144
  throw new Error('the selected skill has no sibling bmod-tea knowledge base');
145
145
  if (options.story) story = artifactPath(root, options.story, '--story');
package/cli/ci-runner.js CHANGED
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * tea-ci-runner: the command the CI behavioral contract names.
4
4
  *
5
- * `bmad-testarch-ci` scaffolds a pipeline for the project it is run in and
5
+ * `bmad-tea-ci` scaffolds a pipeline for the project it is run in and
6
6
  * writes one deliverable a linter can hold to account, the platform's own
7
7
  * workflow file, which for GitHub Actions is `.github/workflows/test.yml`.
8
8
  * Measuring that needs a command to point at, and this file is that command.
@@ -27,7 +27,7 @@ function resolveGenerationConfig(projectRoot, checkpointPath, operation, skillRo
27
27
  };
28
28
  if (!['none', 'auto', 'cli', 'mcp'].includes(tea.tea_browser_automation))
29
29
  throw new Error('tea_browser_automation must be none, auto, cli or mcp');
30
- const namespace = mode === 'red' ? 'bmad-testarch-atdd' : 'bmad-testarch-automate';
30
+ const namespace = mode === 'red' ? 'bmad-tea-atdd' : 'bmad-tea-automate';
31
31
  const sibling = path.join(skillRoot, '..', namespace, 'customize.toml');
32
32
  const defaultsPath =
33
33
  mode === 'red' && !fs.existsSync(sibling)
@@ -12,7 +12,7 @@ const { spawnSync } = require('node:child_process');
12
12
  const { runAgent } = require('./run-agent');
13
13
  const { resolveTeaConfig } = require('./resolve-tea-config');
14
14
 
15
- const SKILL_NAME = 'bmad-testarch-framework';
15
+ const SKILL_NAME = 'bmad-tea-framework';
16
16
  const SCOPES = ['framework', 'ci', 'both'];
17
17
  const OPERATIONS = ['create', 'resume', 'validate', 'edit'];
18
18
 
@@ -607,7 +607,7 @@ function prepareSetup({ projectRoot, skillRoot, config, options }) {
607
607
  throw problem('Resume has an uncertain started hook. Record explicit operator recovery in the journal before headless execution.');
608
608
  const scope = options.operation === 'resume' ? before.data.setup_scope : options.scope;
609
609
  const ciConfig = ['ci', 'both'].includes(scope)
610
- ? resolveTeaConfig({ projectRoot, skillRoot: path.join(skillRoot, '..', 'bmad-testarch-ci'), skillName: 'bmad-testarch-ci' })
610
+ ? resolveTeaConfig({ projectRoot, skillRoot: path.join(skillRoot, 'ci'), skillName: 'bmad-tea-ci' })
611
611
  : null;
612
612
  const requiredHooks = {};
613
613
  for (const [phase, settings] of [
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Resolve the installed bmad-testarch-test-review skill root inside a consuming project.
2
+ * Resolve the installed bmad-tea-test-review skill root inside a consuming project.
3
3
  *
4
4
  * Probe order mirrors BMAD installer outputs: BMAD core layout, Claude Code, Codex.
5
5
  * The skill remains the source of truth for review logic; the CLI only locates it.
@@ -8,7 +8,7 @@
8
8
  const fs = require('node:fs');
9
9
  const path = require('node:path');
10
10
 
11
- const SKILL_NAME = 'bmad-testarch-test-review';
11
+ const SKILL_NAME = 'bmad-tea-test-review';
12
12
 
13
13
  // The classic installer's location comes last: a project upgraded from v6 can still hold that copy, and it must not shadow the skill the v7 install added.
14
14
  const SKILL_CANDIDATES = [
@@ -78,18 +78,22 @@ function configError(message) {
78
78
  }
79
79
 
80
80
  /** Read configuration from one pinned base commit, or from the working tree. */
81
- function configSource(projectRoot, baseRef) {
81
+ function configSource(projectRoot, baseRef, inputPaths, inputPatterns) {
82
82
  if (baseRef === undefined || baseRef === null) {
83
83
  return {
84
+ recordInput: (file) => inputPaths?.add(file),
84
85
  label: (relativePath) => path.join(projectRoot, relativePath),
85
86
  list(pattern) {
86
87
  try {
87
- return globSync(pattern, { cwd: projectRoot, dot: true, nodir: true, follow: false });
88
+ const matches = globSync(pattern, { cwd: projectRoot, dot: true, nodir: true, follow: false });
89
+ inputPatterns?.set(pattern, [...matches].sort());
90
+ return matches;
88
91
  } catch (error) {
89
92
  throw configError(`Failed to list policy files in ${projectRoot}: ${error.message}`);
90
93
  }
91
94
  },
92
95
  read(relativePath) {
96
+ inputPaths?.add(path.join(projectRoot, relativePath));
93
97
  try {
94
98
  return fs.readFileSync(path.join(projectRoot, relativePath), 'utf8');
95
99
  } catch (error) {
@@ -281,9 +285,10 @@ function parseToml(content, label) {
281
285
  }
282
286
 
283
287
  /** Resolve trusted skill defaults and project workflow overrides from the same configuration source. */
284
- function readWorkflowCustomization(source, skillRoot, projectRoot, skillName = 'bmad-testarch-test-review') {
288
+ function readWorkflowCustomization(source, skillRoot, projectRoot, skillName = 'bmad-tea-test-review') {
285
289
  if (!skillRoot) return {};
286
290
  const defaultsPath = path.join(skillRoot, 'customize.toml');
291
+ source.recordInput?.(defaultsPath);
287
292
  let merged = {};
288
293
  try {
289
294
  merged = parseToml(fs.readFileSync(defaultsPath, 'utf8'), defaultsPath);
@@ -291,10 +296,24 @@ function readWorkflowCustomization(source, skillRoot, projectRoot, skillName = '
291
296
  if (error.code !== 'ENOENT') throw configError(`Failed to load ${defaultsPath}: ${error.message}`);
292
297
  }
293
298
  if (!/^[a-z0-9][a-z0-9-]*$/.test(skillName)) throw configError('Workflow skill name must be a lowercase kebab-case name');
294
- const workflowPaths = ['.toml', '.user.toml'].map((suffix) => path.join('_bmad', 'custom', skillName + suffix));
295
- for (const relativePath of workflowPaths) {
296
- const content = source.read(relativePath);
297
- if (content !== null) merged = mergeTables(merged, parseToml(content, source.label(relativePath)));
299
+ const oldName =
300
+ skillName === 'bmad-tea-teach-me-testing'
301
+ ? 'bmad-teach-me-testing'
302
+ : skillName.startsWith('bmad-tea-')
303
+ ? skillName.replace('bmad-tea-', 'bmad-testarch-')
304
+ : null;
305
+ for (const suffix of ['.toml', '.user.toml']) {
306
+ const legacyPath = oldName && path.join('_bmad', 'custom', oldName + suffix);
307
+ const currentPath = path.join('_bmad', 'custom', skillName + suffix);
308
+ const legacyContent = legacyPath && source.read(legacyPath);
309
+ const currentContent = source.read(currentPath);
310
+ const legacy = legacyContent === null ? {} : parseToml(legacyContent, source.label(legacyPath));
311
+ const current = currentContent === null ? {} : parseToml(currentContent, source.label(currentPath));
312
+ const conflict = conflictingValue(legacy, current);
313
+ if (conflict) {
314
+ throw configError(`Conflicting workflow customization ${conflict} in ${source.label(legacyPath)} and ${source.label(currentPath)}`);
315
+ }
316
+ merged = mergeTables(merged, unionEqualCustomizationValues(legacy, current));
298
317
  }
299
318
  if (merged.workflow !== undefined && !isPlainObject(merged.workflow)) {
300
319
  throw configError('Workflow customization must contain a [workflow] table');
@@ -322,6 +341,29 @@ function readWorkflowCustomization(source, skillRoot, projectRoot, skillName = '
322
341
  return workflow;
323
342
  }
324
343
 
344
+ /** Find the first setting whose legacy and current values disagree. */
345
+ function conflictingValue(legacy, current, prefix = '') {
346
+ for (const [key, oldValue] of Object.entries(legacy)) {
347
+ if (!Object.hasOwn(current, key)) continue;
348
+ const next = prefix ? `${prefix}.${key}` : key;
349
+ const newValue = current[key];
350
+ if (isPlainObject(oldValue) && isPlainObject(newValue)) {
351
+ const nested = conflictingValue(oldValue, newValue, next);
352
+ if (nested) return nested;
353
+ } else if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) return next;
354
+ }
355
+ return null;
356
+ }
357
+
358
+ /** Combine old and new names for one layer without appending an identical array twice. */
359
+ function unionEqualCustomizationValues(legacy, current) {
360
+ const result = { ...legacy };
361
+ for (const [key, value] of Object.entries(current)) {
362
+ result[key] = isPlainObject(result[key]) && isPlainObject(value) ? unionEqualCustomizationValues(result[key], value) : value;
363
+ }
364
+ return result;
365
+ }
366
+
325
367
  /** Coerce the keys this CLI cares about out of a raw TEA config table. */
326
368
  function pickTeaValues(table, source) {
327
369
  const values = {};
@@ -490,13 +532,16 @@ const KEY_TO_INSTALLED_FIELD = {
490
532
  * @param {string} [options.skillRoot] - Trusted skill defaults for workflow customization.
491
533
  * @param {object} [options.flags] - Parsed CLI options; only the keys in
492
534
  * FLAG_TO_KEY are read, and only when not undefined.
535
+ * @param {Set<string>} [options.inputPaths] - Receives working-tree inputs, including missing optional layers.
536
+ * @param {Map<string, string[]>} [options.inputPatterns] - Receives policy glob membership used during resolution.
493
537
  * @returns {{values: object, sources: object, installed: object, configSnapshot: object, workflowCustomization: object, configCommit: string|null, configPath: string, configPresent: boolean, configFormat: string|null}}
494
538
  * `installed` carries one boolean per library gate, read from the project
495
539
  * manifest rather than left to the agent.
496
540
  * @throws {Error} With code TEA_CONFIG_INVALID on unusable config content.
497
541
  */
498
- function resolveTeaConfig({ projectRoot, flags = {}, baseRef, skillRoot, skillName }) {
499
- const source = configSource(projectRoot, baseRef);
542
+ function resolveTeaConfig({ projectRoot, flags = {}, baseRef, skillRoot, skillName, inputPaths, inputPatterns }) {
543
+ const source = configSource(projectRoot, baseRef, inputPaths, inputPatterns);
544
+ inputPaths?.add(path.join(projectRoot, 'package.json'));
500
545
  const file = readTeaConfigFile(projectRoot, baseRef, source);
501
546
  const workflowCustomization = readWorkflowCustomization(source, skillRoot, projectRoot, skillName);
502
547