bmad-method-test-architecture-enterprise 1.7.0 → 1.7.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/CHANGELOG.md CHANGED
@@ -212,16 +212,6 @@ All workflows implement the **trivariate step pattern** (Create/Edit/Validate):
212
212
  - Agent schema validation for module independence
213
213
  - Pre-commit hook compatibility with documentation build process
214
214
 
215
- ### Migration Guide
216
-
217
- For users migrating from BMM-embedded TEA, see [`docs/MIGRATION.md`](docs/MIGRATION.md) for:
218
-
219
- - Command namespace updates
220
- - Installation instructions
221
- - Configuration changes
222
- - Path reference updates
223
- - Troubleshooting common issues
224
-
225
215
  ### Documentation
226
216
 
227
217
  - Website: [test-architect.bmad-method.org](https://test-architect.bmad-method.org) (upcoming)
@@ -249,5 +239,3 @@ For users migrating from BMM-embedded TEA, see [`docs/MIGRATION.md`](docs/MIGRAT
249
239
  - Complete documentation suite
250
240
 
251
241
  ---
252
-
253
- _For detailed migration instructions, see [docs/MIGRATION.md](docs/MIGRATION.md)_
package/README.md CHANGED
@@ -29,7 +29,7 @@ Each workflow directory contains these files, and each has a specific job:
29
29
 
30
30
  | File | What it does | When it loads |
31
31
  | ----------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
32
- | `tea.agent.yaml` | Expert persona — identity, principles, critical actions, menu of triggers | First — always in context |
32
+ | `SKILL.md` | Expert persona — identity, principles, critical actions, capabilities table | First — always in context |
33
33
  | `workflow.yaml` | Machine-readable metadata — config variables, required tools, tags | Second — resolves `{project-root}`, `{config_source}`, `{test_artifacts}` |
34
34
  | `workflow.md` | Human-readable entry point — goals, mode menu (Create/Edit/Validate), routes to first step | Second — presents mode choice |
35
35
  | `instructions.md` | Workflow-specific rules and context (optional, supplements workflow.md) | On demand |
@@ -54,8 +54,8 @@ flowchart LR
54
54
 
55
55
  ### How It Works at Runtime
56
56
 
57
- 1. **Trigger** — Direct commands are `/bmad:tea:automate` (Claude/Cursor/Windsurf) and `$bmad-tea-testarch-automate` (Codex). `TA` is an agent-menu trigger available only after TEA is activated; the menu in `tea.agent.yaml` maps `TA` to `automate/workflow.yaml`.
58
- 2. **Agent loads** — `tea.agent.yaml` injects the persona (identity, principles, critical actions) into the context window.
57
+ 1. **Trigger** — Direct commands are `/bmad:tea:automate` (Claude/Cursor/Windsurf) and `$bmad-tea-testarch-automate` (Codex). Load the conversational TEA menu with `$bmad-tea` in Codex. `TA` is an agent-menu trigger available only after TEA is activated; the capabilities table in `SKILL.md` maps `TA` to the `bmad-testarch-automate` skill.
58
+ 2. **Agent loads** — `SKILL.md` injects the persona (identity, principles, critical actions) into the context window.
59
59
  3. **Workflow loads** — `workflow.yaml` resolves config variables and `workflow.md` presents the mode menu (Create / Edit / Validate), then routes to the first step file.
60
60
  4. **Step-by-step execution** — Only the current step file is in context (just-in-time loading). Each step explicitly names the next one (`nextStepFile: './step-02-...'`). The LLM reads, executes, saves output, then loads the next step. No future steps are ever preloaded.
61
61
  5. **Knowledge injection** — Step-01 reads `tea-index.csv` and selectively loads fragments by **tier** (core = always, extended = on-demand, specialized = only when relevant) and **config flags** (e.g., `tea_use_pactjs_utils`). This is deliberate context engineering: a backend project loads ~1,800 lines of fragments; a fullstack project loads ~4,500 lines. Conditional loading cuts context usage by 40-50%.
@@ -85,7 +85,7 @@ The key insight is that there is **no external runtime engine** — the LLM _is_
85
85
 
86
86
  ```text
87
87
  .claude/commands/ # Generated by installer
88
- ├── bmad-agent-tea-tea.md # /tea → loads agent persona + menu
88
+ ├── bmad-tea.md # /tea → loads agent persona + menu
89
89
  ├── bmad-tea-testarch-automate.md # /automate → loads workflow.xml + workflow.yaml
90
90
  ├── bmad-tea-testarch-test-design.md # /test-design → ...
91
91
  ├── bmad-bmm-create-prd.md # /create-prd → BMM workflow
@@ -105,19 +105,20 @@ npx bmad-method install
105
105
 
106
106
  ### Tool-specific invocation
107
107
 
108
- | Tool | Invocation style | Example |
109
- | ------------------------------- | ------------------------------- | ----------------------------- |
110
- | Claude Code / Cursor / Windsurf | Slash command | `/bmad:tea:automate` |
111
- | Codex | `$` skill from `.agents/skills` | `$bmad-tea-testarch-automate` |
108
+ | Tool | Invocation style | Example |
109
+ | ------------------------------- | ------------------------------- | -------------------------------------------- |
110
+ | Claude Code / Cursor / Windsurf | Slash command | `/bmad:tea:automate` |
111
+ | Codex | `$` skill from `.agents/skills` | `$bmad-tea` or `$bmad-tea-testarch-automate` |
112
112
 
113
113
  ## Quickstart
114
114
 
115
115
  1. Install TEA (above)
116
- 2. Run one of the core workflows:
116
+ 2. Load the TEA menu with `$bmad-tea` if you want a conversational entrypoint.
117
+ 3. Run one of the core workflows:
117
118
  - `TD` / `/bmad:tea:test-design` / `$bmad-tea-testarch-test-design` — test design and risk assessment
118
119
  - `AT` / `/bmad:tea:atdd` / `$bmad-tea-testarch-atdd` — failing acceptance tests first (TDD red phase)
119
120
  - `TA` / `/bmad:tea:automate` / `$bmad-tea-testarch-automate` — expand automation coverage
120
- 3. Or use in party mode: `/party` to include TEA with other agents
121
+ 4. Or use in party mode: `/party` to include TEA with other agents
121
122
 
122
123
  ## Engagement Models
123
124
 
@@ -170,7 +171,7 @@ Workflows load only the fragments required for the current task to stay focused
170
171
  src/
171
172
  ├── module.yaml
172
173
  ├── agents/
173
- │ └── tea.agent.yaml
174
+ │ └── bmad-tea/ # Native skill: SKILL.md + bmad-skill-manifest.yaml
174
175
  ├── workflows/
175
176
  │ └── testarch/
176
177
  │ ├── bmad-teach-me-testing/
@@ -149,16 +149,16 @@ If the BMAD installer can run but cannot fetch the Test Architect module from Gi
149
149
 
150
150
  **Solutions**:
151
151
 
152
- 1. Verify TEA agent file exists:
152
+ 1. Verify TEA agent skill exists:
153
153
 
154
154
  ```bash
155
- ls -la _bmad/tea/agents/tea.agent.yaml
155
+ ls -la _bmad/tea/agents/bmad-tea/SKILL.md
156
156
  ```
157
157
 
158
- 2. Validate agent YAML syntax:
158
+ 2. Validate agent schema:
159
159
 
160
160
  ```bash
161
- # Check for YAML syntax errors
161
+ # Check for schema errors
162
162
  node tools/validate-agent-schema.js
163
163
  ```
164
164
 
@@ -682,7 +682,6 @@ When reporting issues, include:
682
682
  1. **Documentation**: [test-architect.bmad-method.org](https://test-architect.bmad-method.org)
683
683
  2. **GitHub Issues**: [Report a bug](https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise/issues/new?template=issue.md)
684
684
  3. **GitHub Discussions**: [Ask a question](https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise/discussions)
685
- 4. **Migration Guide**: [docs/MIGRATION.md](/docs/MIGRATION.md) for upgrade issues
686
685
 
687
686
  ### Before Reporting an Issue
688
687
 
@@ -737,11 +736,11 @@ Run this validation script:
737
736
  #!/bin/bash
738
737
  echo "Validating TEA Installation..."
739
738
 
740
- # Check agent file
741
- if [ -f "_bmad/tea/agents/tea.agent.yaml" ]; then
742
- echo "✓ Agent file exists"
739
+ # Check agent skill directory
740
+ if [ -f "_bmad/tea/agents/bmad-tea/SKILL.md" ]; then
741
+ echo "✓ Agent skill exists"
743
742
  else
744
- echo "✗ Agent file missing"
743
+ echo "✗ Agent skill missing"
745
744
  fi
746
745
 
747
746
  # Check workflows
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "bmad-method-test-architecture-enterprise",
4
- "version": "1.7.0",
4
+ "version": "1.7.1",
5
5
  "description": "Master Test Architect for quality strategy, test automation, and release gates",
6
6
  "keywords": [
7
7
  "bmad",
package/release_notes.md CHANGED
@@ -1,11 +1,16 @@
1
- ## 🚀 What's New in v1.7.0
1
+ ## 🚀 What's New in v1.7.1
2
2
 
3
3
  ### ✨ New Features
4
- - feat: skills migration part1
4
+ - feat: convert agent to native skill format
5
+
6
+ ### 🐛 Bug Fixes
7
+ - fix: PR comments
8
+ - fix: tea agent start
5
9
 
6
10
  ### 📦 Other Changes
7
- - addressed review comments
8
- - Merge pull request #54 from bmad-code-org/feat/skill-migration-part1
11
+ - Merge pull request #56 from bmad-code-org/feature/convert-agents-to-skills
12
+ - docs: remove migration
13
+ - Merge pull request #57 from bmad-code-org/fix/tea-agent-start
9
14
 
10
15
 
11
16
  ## 📦 Installation
@@ -15,4 +20,4 @@ npx bmad-method install
15
20
  # Select "Test Architect" from module menu
16
21
  ```
17
22
 
18
- **Full Changelog**: https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise/compare/v1.6.0...v1.7.0
23
+ **Full Changelog**: https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise/compare/v1.7.0...v1.7.1
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: bmad-tea
3
+ description: Master Test Architect and Quality Advisor. Use when the user asks to talk to Murat or requests the Test Architect.
4
+ ---
5
+
6
+ # Murat
7
+
8
+ ## Overview
9
+
10
+ This skill provides a Master Test Architect and Quality Advisor specializing in risk-based testing, fixture architecture, ATDD, API testing, backend services, UI automation, CI/CD governance, and scalable quality gates. Act as Murat — data-driven, strong opinions weakly held, speaking in risk calculations and impact assessments.
11
+
12
+ ## Identity
13
+
14
+ Test architect specializing in risk-based testing, fixture architecture, ATDD, API testing, backend services, UI automation, CI/CD governance, and scalable quality gates. Equally proficient in pure API/service-layer testing (pytest, JUnit, Go test, xUnit, RSpec) as in browser-based E2E testing (Playwright, Cypress), consumer driven contract testing (Pact) and performance/load/chaos testing (k6). Supports GitHub Actions, GitLab CI, Jenkins, Azure DevOps, and Harness CI platforms.
15
+
16
+ ## Communication Style
17
+
18
+ Blends data with gut instinct. "Strong opinions, weakly held" is their mantra. Speaks in risk calculations and impact assessments.
19
+
20
+ ## Principles
21
+
22
+ - Risk-based testing - depth scales with impact
23
+ - Quality gates backed by data
24
+ - Tests mirror usage patterns (API, UI, or both)
25
+ - Flakiness is critical technical debt
26
+ - Tests first AI implements suite validates
27
+ - Calculate risk vs value for every testing decision
28
+ - Prefer lower test levels (unit > integration > E2E) when possible
29
+ - API tests are first-class citizens, not just UI support
30
+
31
+ ## Critical Actions
32
+
33
+ - Consult `{project-root}/_bmad/tea/testarch/tea-index.csv` to select knowledge fragments under `knowledge/` and load only the files needed for the current task
34
+ - Load the referenced fragment(s) from `{project-root}/_bmad/tea/testarch/knowledge/` before giving recommendations
35
+ - Cross-check recommendations with the current official Playwright, Cypress, Pact, k6, pytest, JUnit, Go test, and CI platform documentation
36
+
37
+ You must fully embody this persona so the user gets the best experience and help they need, therefore its important to remember you must not break character until the users dismisses this persona.
38
+
39
+ When you are in this persona and the user calls a skill, this persona must carry through and remain active.
40
+
41
+ ## Capabilities
42
+
43
+ | Code | Description | Skill |
44
+ | ---- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
45
+ | TMT | Teach Me Testing: Interactive learning companion - 7 progressive sessions teaching testing fundamentals through advanced practices | bmad-teach-me-testing |
46
+ | TF | Test Framework: Initialize production-ready test framework architecture | bmad-testarch-framework |
47
+ | AT | ATDD: Generate failing acceptance tests plus an implementation checklist before development | bmad-testarch-atdd |
48
+ | TA | Test Automation: Generate prioritized API/E2E tests, fixtures, and DoD summary for a story or feature | bmad-testarch-automate |
49
+ | TD | Test Design: Risk assessment plus coverage strategy for system or epic scope | bmad-testarch-test-design |
50
+ | TR | Trace Requirements: Map requirements to tests (Phase 1) and make quality gate decision (Phase 2) | bmad-testarch-trace |
51
+ | NR | Non-Functional Requirements: Assess NFRs and recommend actions | bmad-testarch-nfr |
52
+ | CI | Continuous Integration: Recommend and Scaffold CI/CD quality pipeline | bmad-testarch-ci |
53
+ | RV | Review Tests: Perform a quality check against written tests using comprehensive knowledge base and best practices | bmad-testarch-test-review |
54
+
55
+ ## On Activation
56
+
57
+ 1. **Load config via bmad-init skill** — Store all returned vars for use:
58
+ - Use `{user_name}` from config for greeting
59
+ - Use `{communication_language}` from config for all communications
60
+ - Store any other config variables as `{var-name}` and use appropriately
61
+
62
+ 2. **Continue with steps below:**
63
+ - **Load project context** — Search for `**/project-context.md`. If found, load as foundational reference for project standards and conventions. If not found, continue without it.
64
+ - **Greet and present capabilities** — Greet `{user_name}` warmly by name, always speaking in `{communication_language}` and applying your persona throughout the session.
65
+
66
+ 3. Remind the user they can invoke the `bmad-help` skill at any time for advice and then present the capabilities table from the Capabilities section above.
67
+
68
+ **STOP and WAIT for user input** — Do NOT execute menu items automatically. Accept a capability code, skill name, or fuzzy description match from the Capabilities table.
69
+
70
+ **CRITICAL Handling:** When user responds with a capability code (e.g., TMT, TF, AT), an exact registered skill name, or a fuzzy description match (e.g., "teach me testing", "continuous integration", "test framework"), invoke the corresponding skill from the Capabilities table. DO NOT invent capabilities on the fly or attempt to map arbitrary numeric inputs to skills.
@@ -0,0 +1,14 @@
1
+ type: agent
2
+ name: bmad-tea
3
+ displayName: Murat
4
+ title: Master Test Architect and Quality Advisor
5
+ icon: "🧪"
6
+ capabilities: "risk-based testing, fixture architecture, ATDD, API testing, backend services, UI automation, CI/CD governance, scalable quality gates, consumer-driven contract testing, performance/load/chaos testing"
7
+ role: Master Test Architect
8
+ identity: "Test architect specializing in risk-based testing, fixture architecture, ATDD, API testing, backend services, UI automation, CI/CD governance, and scalable quality gates. Equally proficient in pure API/service-layer testing (pytest, JUnit, Go test, xUnit, RSpec) as in browser-based E2E testing (Playwright, Cypress), consumer driven contract testing (Pact) and performance/load/chaos testing (k6). Supports GitHub Actions, GitLab CI, Jenkins, Azure DevOps, and Harness CI platforms."
9
+ communicationStyle: "Blends data with gut instinct. 'Strong opinions, weakly held' is their mantra. Speaks in risk calculations and impact assessments."
10
+ principles: "Risk-based testing - depth scales with impact. Quality gates backed by data. Tests mirror usage patterns (API, UI, or both). Flakiness is critical technical debt. Tests first AI implements suite validates. Calculate risk vs value for every testing decision. Prefer lower test levels (unit > integration > E2E) when possible. API tests are first-class citizens, not just UI support."
11
+ module: tea
12
+ canonicalId: bmad-tea
13
+ webskip: true
14
+ hasSidecar: false
@@ -82,34 +82,72 @@ async function runTests() {
82
82
  console.log('');
83
83
 
84
84
  // ============================================================
85
- // Test 2: TEA Agent YAML Structure
85
+ // Test 2: TEA Agent Native Skill Structure
86
86
  // ============================================================
87
- console.log(`${colors.yellow}Test Suite 2: TEA Agent Structure${colors.reset}\n`);
87
+ console.log(`${colors.yellow}Test Suite 2: TEA Agent Native Skill Structure${colors.reset}\n`);
88
88
 
89
89
  try {
90
- const teaAgentPath = path.join(projectRoot, 'src/agents/tea.agent.yaml');
91
-
92
- if (await pathExists(teaAgentPath)) {
93
- const teaAgent = yaml.load(await fs.readFile(teaAgentPath, 'utf8'));
94
-
95
- assert(teaAgent.agent !== undefined, 'tea.agent.yaml has agent root key');
96
- assert(teaAgent.agent.metadata !== undefined, 'TEA agent has metadata section');
97
- assert(teaAgent.agent.metadata.module === 'tea', 'TEA agent metadata has module: tea');
98
- assert(teaAgent.agent.metadata.id.includes('_bmad/tea/'), 'TEA agent id references _bmad/tea/ path');
99
- assert(teaAgent.agent.persona !== undefined, 'TEA agent has persona section');
100
- assert(teaAgent.agent.critical_actions !== undefined, 'TEA agent has critical_actions');
101
- assert(teaAgent.agent.menu !== undefined, 'TEA agent has menu');
102
- assert(Array.isArray(teaAgent.agent.menu) && teaAgent.agent.menu.length === 9, 'TEA agent menu has 9 workflows');
90
+ const skillDir = path.join(projectRoot, 'src/agents/bmad-tea');
91
+ const skillMdPath = path.join(skillDir, 'SKILL.md');
92
+ const manifestPath = path.join(skillDir, 'bmad-skill-manifest.yaml');
93
+
94
+ // Validate SKILL.md exists and has required sections
95
+ if (await pathExists(skillMdPath)) {
96
+ const skillContent = await fs.readFile(skillMdPath, 'utf8');
97
+
98
+ assert(skillContent.includes('name: bmad-tea'), 'SKILL.md has correct skill name in frontmatter');
99
+ assert(skillContent.includes('## Identity'), 'SKILL.md has Identity section');
100
+ assert(skillContent.includes('## Principles'), 'SKILL.md has Principles section');
101
+ assert(skillContent.includes('## Critical Actions'), 'SKILL.md has Critical Actions section');
102
+ assert(skillContent.includes('## Capabilities'), 'SKILL.md has Capabilities section');
103
+ assert(skillContent.includes('## On Activation'), 'SKILL.md has On Activation section');
104
+
105
+ // Verify all 9 capability codes are present in the capabilities table
106
+ const capabilityCodes = ['TMT', 'TF', 'AT', 'TA', 'TD', 'TR', 'NR', 'CI', 'RV'];
107
+ for (const code of capabilityCodes) {
108
+ const codePattern = new RegExp(`\\|\\s*${code}\\s*\\|`);
109
+ assert(codePattern.test(skillContent), `SKILL.md has capability code ${code}`);
110
+ }
103
111
 
104
112
  // Verify no BMM references
105
- const yamlContent = await fs.readFile(teaAgentPath, 'utf8');
106
- assert(!yamlContent.includes('_bmad/bmm/'), 'TEA agent has no _bmad/bmm/ references');
107
- assert(!yamlContent.includes('module: bmm'), 'TEA agent has no module: bmm references');
113
+ assert(!skillContent.includes('_bmad/bmm/'), 'SKILL.md has no _bmad/bmm/ references');
114
+ assert(!skillContent.includes('module: bmm'), 'SKILL.md has no module: bmm references');
115
+ } else {
116
+ assert(false, 'SKILL.md exists', 'src/agents/bmad-tea/SKILL.md not found');
117
+ }
118
+
119
+ // Validate bmad-skill-manifest.yaml
120
+ if (await pathExists(manifestPath)) {
121
+ const manifest = yaml.load(await fs.readFile(manifestPath, 'utf8'));
122
+
123
+ assert(manifest.type === 'agent', 'Manifest has type: agent');
124
+ assert(manifest.name === 'bmad-tea', 'Manifest has correct name');
125
+ assert(manifest.module === 'tea', 'Manifest has module: tea');
126
+ assert(manifest.canonicalId === 'bmad-tea', 'Manifest has correct canonicalId');
127
+ assert(manifest.webskip === true, 'Manifest has webskip: true');
128
+ assert(manifest.hasSidecar === false, 'Manifest has hasSidecar: false');
129
+
130
+ // Verify all 9 capability skill IDs reference real workflow directories
131
+ const expectedSkillDirs = [
132
+ 'bmad-teach-me-testing',
133
+ 'bmad-testarch-framework',
134
+ 'bmad-testarch-atdd',
135
+ 'bmad-testarch-automate',
136
+ 'bmad-testarch-test-design',
137
+ 'bmad-testarch-trace',
138
+ 'bmad-testarch-nfr',
139
+ 'bmad-testarch-ci',
140
+ 'bmad-testarch-test-review',
141
+ ];
142
+ for (const skillDir of expectedSkillDirs) {
143
+ const workflowDir = path.join(projectRoot, `src/workflows/testarch/${skillDir}`);
144
+ assert(await pathExists(workflowDir), `Capability skill ${skillDir} has matching workflow directory`);
145
+ }
108
146
  } else {
109
- assert(false, 'TEA agent YAML exists', 'src/agents/tea.agent.yaml not found - run Phase 2 first');
147
+ assert(false, 'bmad-skill-manifest.yaml exists', 'src/agents/bmad-tea/bmad-skill-manifest.yaml not found');
110
148
  }
111
149
  } catch (error) {
112
- assert(false, 'TEA agent structure validates', error.message);
150
+ assert(false, 'TEA agent native skill structure validates', error.message);
113
151
  }
114
152
 
115
153
  console.log('');
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Agent Schema Validator CLI
3
3
  *
4
- * Scans all *.agent.yaml files in src/{core,modules/*}/agents/
5
- * and validates them against the Zod schema.
4
+ * Scans for agent definitions in src/agents/:
5
+ * - Legacy format: *.agent.yaml (validated against Zod schema)
6
+ * - Native skill format: {name}/bmad-skill-manifest.yaml + SKILL.md
6
7
  *
7
8
  * Usage: node tools/validate-agent-schema.js [project_root]
8
9
  * Exit codes: 0 = success, 1 = validation failures
@@ -28,15 +29,80 @@ async function main(customProjectRoot) {
28
29
  const project_root = customProjectRoot || path.join(__dirname, '..');
29
30
 
30
31
  // Find all agent files
31
- // TEA module structure: src/agents/*.agent.yaml (simpler than BMAD-METHOD)
32
+ // TEA module supports both legacy (*.agent.yaml) and native skill format (*/bmad-skill-manifest.yaml)
32
33
  const agentFiles = await glob('src/agents/*.agent.yaml', {
33
34
  cwd: project_root,
34
35
  absolute: true,
35
36
  });
36
37
 
38
+ // Always check for native skill manifests (supports mixed-mode repos)
39
+ const skillManifests = await glob('src/agents/*/bmad-skill-manifest.yaml', {
40
+ cwd: project_root,
41
+ absolute: true,
42
+ });
43
+
44
+ // If no legacy agents found, validate native skills or fail
37
45
  if (agentFiles.length === 0) {
46
+ if (skillManifests.length > 0) {
47
+ console.log(`Found ${skillManifests.length} native skill manifest(s) (no legacy *.agent.yaml files)\n`);
48
+
49
+ const manifestErrors = [];
50
+ for (const manifestPath of skillManifests) {
51
+ const relativePath = path.relative(process.cwd(), manifestPath);
52
+ try {
53
+ const fileContent = fs.readFileSync(manifestPath, 'utf8');
54
+ const manifest = yaml.parse(fileContent);
55
+
56
+ const requiredFields = ['type', 'name', 'module', 'canonicalId'];
57
+ const missingFields = requiredFields.filter((f) => !manifest[f]);
58
+ const issues = [];
59
+
60
+ if (missingFields.length > 0) {
61
+ issues.push({ message: `Missing required fields: ${missingFields.join(', ')}`, path: [] });
62
+ }
63
+
64
+ // Validate type value
65
+ const validTypes = ['agent', 'skill'];
66
+ if (manifest.type && !validTypes.includes(manifest.type)) {
67
+ issues.push({ message: `Invalid type "${manifest.type}". Expected one of: ${validTypes.join(', ')}`, path: [] });
68
+ }
69
+
70
+ // Verify SKILL.md exists alongside the manifest
71
+ const skillMdPath = path.join(path.dirname(manifestPath), 'SKILL.md');
72
+ if (!fs.existsSync(skillMdPath)) {
73
+ issues.push({ message: 'Missing SKILL.md file alongside manifest', path: [] });
74
+ }
75
+
76
+ if (issues.length > 0) {
77
+ manifestErrors.push({ file: relativePath, issues });
78
+ } else {
79
+ console.log(`✅ ${relativePath}`);
80
+ }
81
+ } catch (error) {
82
+ manifestErrors.push({
83
+ file: relativePath,
84
+ issues: [{ message: `Failed to parse YAML: ${error.message}`, path: [] }],
85
+ });
86
+ }
87
+ }
88
+
89
+ if (manifestErrors.length > 0) {
90
+ console.log('\n❌ Validation failed:\n');
91
+ for (const { file, issues } of manifestErrors) {
92
+ console.log(`\n📄 ${file}`);
93
+ for (const issue of issues) {
94
+ console.log(` Error: ${issue.message}`);
95
+ }
96
+ }
97
+ process.exit(1);
98
+ }
99
+
100
+ console.log(`\n✨ All ${skillManifests.length} native skill manifest(s) passed validation!\n`);
101
+ process.exit(0);
102
+ }
103
+
38
104
  console.log('❌ No agent files found. This likely indicates a configuration error.');
39
- console.log(' Expected to find *.agent.yaml files in src/agents/');
105
+ console.log(' Expected to find *.agent.yaml files or native skill manifests in src/agents/');
40
106
  process.exit(1);
41
107
  }
42
108
 
@@ -79,6 +145,39 @@ async function main(customProjectRoot) {
79
145
  }
80
146
  }
81
147
 
148
+ // Also validate native skill manifests in mixed-mode repos
149
+ if (skillManifests.length > 0) {
150
+ console.log(`\nAlso found ${skillManifests.length} native skill manifest(s)\n`);
151
+ for (const manifestPath of skillManifests) {
152
+ const relativePath = path.relative(process.cwd(), manifestPath);
153
+ try {
154
+ const fileContent = fs.readFileSync(manifestPath, 'utf8');
155
+ const manifest = yaml.parse(fileContent);
156
+ const requiredFields = ['type', 'name', 'module', 'canonicalId'];
157
+ const missingFields = requiredFields.filter((f) => !manifest[f]);
158
+ const issues = [];
159
+ if (missingFields.length > 0) {
160
+ issues.push({ message: `Missing required fields: ${missingFields.join(', ')}`, path: [] });
161
+ }
162
+ const validTypes = ['agent', 'skill'];
163
+ if (manifest.type && !validTypes.includes(manifest.type)) {
164
+ issues.push({ message: `Invalid type "${manifest.type}". Expected one of: ${validTypes.join(', ')}`, path: [] });
165
+ }
166
+ const skillMdPath = path.join(path.dirname(manifestPath), 'SKILL.md');
167
+ if (!fs.existsSync(skillMdPath)) {
168
+ issues.push({ message: 'Missing SKILL.md file alongside manifest', path: [] });
169
+ }
170
+ if (issues.length > 0) {
171
+ errors.push({ file: relativePath, issues });
172
+ } else {
173
+ console.log(`✅ ${relativePath}`);
174
+ }
175
+ } catch (error) {
176
+ errors.push({ file: relativePath, issues: [{ message: `Failed to parse YAML: ${error.message}`, path: [] }] });
177
+ }
178
+ }
179
+ }
180
+
82
181
  // Report errors
83
182
  if (errors.length > 0) {
84
183
  console.log('\n❌ Validation failed for the following files:\n');
@@ -99,7 +198,8 @@ async function main(customProjectRoot) {
99
198
  process.exit(1);
100
199
  }
101
200
 
102
- console.log(`\n✨ All ${agentFiles.length} agent file(s) passed validation!\n`);
201
+ const totalCount = agentFiles.length + skillManifests.length;
202
+ console.log(`\n✨ All ${totalCount} agent file(s) passed validation!\n`);
103
203
  process.exit(0);
104
204
  }
105
205
 
package/docs/MIGRATION.md DELETED
@@ -1,488 +0,0 @@
1
- ---
2
- title: Migration Guide
3
- description: Migrate from BMM-embedded TEA to standalone TEA module (v1.0.0+)
4
- ---
5
-
6
- # Migration Guide: BMM-Embedded TEA → Standalone TEA Module
7
-
8
- This guide helps you migrate from the BMM-embedded version of TEA to the standalone TEA module (v1.0.0+).
9
-
10
- ## Overview
11
-
12
- TEA (Test Engineering Architect) has been extracted from the BMAD Method (BMM) core repository into a standalone, independently installable module. This allows:
13
-
14
- - **Independent versioning** and release cycles
15
- - **Optional installation** - use TEA only when needed
16
- - **Cleaner separation** of concerns
17
- - **Easier maintenance** and contribution
18
-
19
- ## Breaking Changes
20
-
21
- ### 1. Command Namespace
22
-
23
- All TEA commands have changed namespace from `/bmad:bmm:tea:*` to `/bmad:tea:*`.
24
-
25
- | Old Command (BMM-embedded) | New Command (Standalone) |
26
- | ------------------------------ | ------------------------ |
27
- | `/bmad:bmm:tea:framework` | `/bmad:tea:framework` |
28
- | `/bmad:bmm:tea:ci` | `/bmad:tea:ci` |
29
- | `/bmad:bmm:tea:test-design` | `/bmad:tea:test-design` |
30
- | `/bmad:bmm:tea:atdd` | `/bmad:tea:atdd` |
31
- | `/bmad:bmm:tea:automate` | `/bmad:tea:automate` |
32
- | `/bmad:bmm:tea:test-review` | `/bmad:tea:test-review` |
33
- | `/bmad:bmm:tea:trace` | `/bmad:tea:trace` |
34
- | `/bmad:bmm:tea:nfr-assess` | `/bmad:tea:nfr-assess` |
35
- | **Short triggers** (unchanged) | |
36
- | `TF`, `CI`, `TD`, `AT`, `TA` | Same |
37
- | `RV`, `TR`, `NR` | Same |
38
-
39
- Codex skill-mode workflow equivalents: `framework` → `$bmad-tea-testarch-framework`, `ci` → `$bmad-tea-testarch-ci`, `test-design` → `$bmad-tea-testarch-test-design`, `atdd` → `$bmad-tea-testarch-atdd`, `automate` → `$bmad-tea-testarch-automate`, `test-review` → `$bmad-tea-testarch-test-review`, `trace` → `$bmad-tea-testarch-trace`, `nfr-assess` → `$bmad-tea-testarch-nfr`, `teach-me-testing` → `$bmad-tea-teach-me-testing`.
40
-
41
- Clarification: short triggers like `TD` and `TA` are agent menu triggers after TEA activation; invocation differs by tool (slash commands vs Codex skill calls).
42
-
43
- **Action Required**: Update any saved prompts, scripts, or documentation that reference the old commands.
44
-
45
- ### 2. Module Installation
46
-
47
- TEA is no longer bundled with BMM by default. You must install it separately.
48
-
49
- #### Old Behavior (BMM-embedded)
50
-
51
- ```bash
52
- # TEA automatically included
53
- npx bmad-method install
54
- ```
55
-
56
- #### New Behavior (Standalone)
57
-
58
- ```bash
59
- # Install BMAD Method first
60
- npx bmad-method install
61
- # Select modules (BMM, TEA, etc.)
62
-
63
- # Or install TEA separately later
64
- npx bmad-method install
65
- # Select: Test Architect (TEA)
66
- ```
67
-
68
- **Action Required**: Install TEA module explicitly if not already installed.
69
-
70
- ### 3. File Path Changes
71
-
72
- Internal file paths have changed to reflect TEA's standalone structure.
73
-
74
- | Old Path (BMM-embedded) | New Path (Standalone) |
75
- | ------------------------------- | --------------------------- |
76
- | `src/bmm/agents/tea.agent.yaml` | `src/agents/tea.agent.yaml` |
77
- | `src/bmm/testarch/knowledge/` | `src/testarch/knowledge/` |
78
- | `src/bmm/workflows/testarch/` | `src/workflows/testarch/` |
79
- | `_bmad/bmm/tea` | `_bmad/tea/` |
80
-
81
- **Action Required**: None for end users. This only affects contributors and maintainers.
82
-
83
- ### 4. Configuration Variables
84
-
85
- TEA configuration is now in its own `src/module.yaml` instead of BMM's configuration.
86
-
87
- #### Old Configuration (BMM-embedded)
88
-
89
- Configuration was embedded in BMM's module.yaml:
90
-
91
- ```yaml
92
- # In BMM module.yaml
93
- variables:
94
- bmm_test_artifacts: test-results
95
- # TEA variables mixed with BMM
96
- ```
97
-
98
- #### New Configuration (Standalone)
99
-
100
- TEA has its own configuration file:
101
-
102
- ```yaml
103
- # In TEA src/module.yaml
104
- variables:
105
- test_artifacts:
106
- description: Base folder for test artifacts
107
- default: test-results
108
- prompt: true
109
-
110
- tea_use_playwright_utils:
111
- description: Enable Playwright Utils integration
112
- default: false
113
- prompt: true
114
-
115
- tea_browser_automation:
116
- description: Browser automation strategy (auto/cli/mcp/none)
117
- default: 'auto'
118
- prompt: true
119
-
120
- test_design_output:
121
- description: Test design documents folder
122
- default: test-design
123
- prompt: false
124
-
125
- test_review_output:
126
- description: Test review reports folder
127
- default: test-review
128
- prompt: false
129
-
130
- trace_output:
131
- description: Traceability reports folder
132
- default: trace
133
- prompt: false
134
- ```
135
-
136
- **Action Required**: Reconfigure TEA variables during installation or update `_bmad/tea/module.yaml` manually.
137
-
138
- ## Migration Steps
139
-
140
- ### Step 1: Check Current BMAD Version
141
-
142
- Ensure you have BMAD Method v7.0.0+ (upcoming) or the latest version that supports modular installation.
143
-
144
- ```bash
145
- # Check BMAD version
146
- bmad --version
147
- ```
148
-
149
- ### Step 2: Install Standalone TEA
150
-
151
- Run the BMAD installer and select TEA:
152
-
153
- ```bash
154
- npx bmad-method install
155
- # When prompted, select:
156
- # ✓ Test Architect (TEA)
157
- ```
158
-
159
- Follow the installation prompts to configure TEA variables:
160
-
161
- 1. **test_artifacts**: Base folder for test outputs (default: `test-results`)
162
- 2. **tea_use_playwright_utils**: Enable Playwright Utils integration (yes/no)
163
- 3. **tea_browser_automation**: Browser automation strategy (auto/cli/mcp/none)
164
-
165
- ### Step 3: Update Command References
166
-
167
- Update any saved prompts, documentation, or scripts:
168
-
169
- **Example: Updating CI/CD Scripts**
170
-
171
- ```bash
172
- # Old
173
- claude "/bmad:bmm:tea:test-design"
174
-
175
- # New
176
- claude "/bmad:tea:test-design"
177
- ```
178
-
179
- Codex skill mode (in Codex chat): `$bmad-tea-testarch-test-design`
180
-
181
- **Example: Updating Documentation**
182
-
183
- ```markdown
184
- <!-- Old -->
185
-
186
- Run `/bmad:bmm:tea:automate` to expand test coverage.
187
-
188
- <!-- New -->
189
-
190
- Run `/bmad:tea:automate` to expand test coverage.
191
- ```
192
-
193
- Codex skill-mode equivalent: use `$bmad-tea-testarch-automate`.
194
-
195
- ### Step 4: Verify Installation
196
-
197
- Load the TEA agent and run a test command:
198
-
199
- ```bash
200
- # Start Claude Code or Claude Desktop
201
- claude
202
-
203
- # Load TEA agent
204
- tea
205
-
206
- # Test a workflow
207
- test-design
208
- ```
209
-
210
- You should see TEA load successfully with the message:
211
-
212
- ```
213
- ✓ Loaded agent: Murat (Master Test Architect and Quality Advisor)
214
- ```
215
-
216
- ### Step 5: Validate Configuration
217
-
218
- Check that TEA variables are correctly configured:
219
-
220
- ```bash
221
- # Check _bmad directory
222
- ls -la _bmad/tea/
223
-
224
- # Verify module.yaml
225
- cat _bmad/tea/module.yaml
226
- ```
227
-
228
- Expected contents:
229
-
230
- ```
231
- _bmad/tea/
232
- ├── module.yaml # TEA configuration
233
- ├── agents/
234
- │ └── tea.agent.yaml
235
- ├── workflows/
236
- │ └── testarch/ # 9 workflows
237
- └── testarch/
238
- ├── tea-index.csv # Knowledge base index
239
- └── knowledge/ # 35 fragments
240
- ```
241
-
242
- ## What Stays the Same
243
-
244
- Despite the migration, these aspects remain **unchanged**:
245
-
246
- ✅ **Short Trigger Commands**: `TMT`, `TF`, `CI`, `TD`, `AT`, `TA`, `RV`, `TR`, `NR` work exactly the same
247
-
248
- ✅ **Workflow Behavior**: All 9 workflows function identically
249
-
250
- ✅ **Knowledge Base**: Same 35 knowledge fragments with identical content
251
-
252
- ✅ **Output Formats**: Test designs, reports, and checklists maintain the same structure
253
-
254
- ✅ **Playwright Utils Integration**: Same integration patterns and utilities
255
-
256
- ✅ **Browser Automation**: CLI and MCP enhancements available via `tea_browser_automation` config
257
-
258
- ✅ **Quality Standards**: Same testing best practices and quality gates
259
-
260
- ## Configuration Differences
261
-
262
- ### Old: BMM-Embedded Configuration
263
-
264
- ```yaml
265
- # Variables were part of BMM module
266
- variables:
267
- bmm_test_artifacts: test-results
268
- # Mixed BMM and TEA config
269
- ```
270
-
271
- ### New: Standalone Configuration
272
-
273
- ```yaml
274
- # TEA has its own module.yaml
275
- code: tea
276
- name: Test Architect (TEA)
277
-
278
- variables:
279
- test_artifacts:
280
- description: Base folder for test artifacts
281
- default: test-results
282
- prompt: true
283
-
284
- tea_use_playwright_utils:
285
- description: Enable Playwright Utils integration
286
- default: false
287
- prompt: true
288
-
289
- tea_browser_automation:
290
- description: Browser automation strategy (auto/cli/mcp/none)
291
- default: 'auto'
292
- prompt: true
293
-
294
- test_design_output:
295
- description: Test design documents folder
296
- default: test-design
297
- prompt: false
298
-
299
- test_review_output:
300
- description: Test review reports folder
301
- default: test-review
302
- prompt: false
303
-
304
- trace_output:
305
- description: Traceability reports folder
306
- default: trace
307
- prompt: false
308
- ```
309
-
310
- ### 5. Browser Automation Config Migration
311
-
312
- The `tea_use_mcp_enhancements` boolean flag has been replaced by `tea_browser_automation` string config:
313
-
314
- | Old Setting | New Setting | Notes |
315
- | --------------------------------- | -------------------------------- | ---------------------------------- |
316
- | `tea_use_mcp_enhancements: true` | `tea_browser_automation: "auto"` | Auto-selects CLI or MCP per action |
317
- | `tea_use_mcp_enhancements: false` | `tea_browser_automation: "none"` | No browser interaction |
318
-
319
- **New modes available:**
320
-
321
- - `"auto"` — Smart CLI/MCP selection with fallback (recommended)
322
- - `"cli"` — Playwright CLI only
323
- - `"mcp"` — Playwright MCP only (equivalent to old `true`)
324
- - `"none"` — No browser interaction (equivalent to old `false`)
325
-
326
- **Action Required:** Update `_bmad/tea/config.yaml`:
327
-
328
- ```yaml
329
- # Old
330
- tea_use_mcp_enhancements: true
331
-
332
- # New
333
- tea_browser_automation: 'auto'
334
- ```
335
-
336
- The BMAD installer will auto-migrate existing configs during the next installation.
337
-
338
- See [Configure Browser Automation](/docs/how-to/customization/configure-browser-automation.md) for full details.
339
-
340
- ## Troubleshooting
341
-
342
- ### Issue: "Agent Not Found" Error
343
-
344
- **Symptom**: `Error: Agent '_bmad/tea' not found`
345
-
346
- **Solution**:
347
-
348
- 1. Verify TEA is installed:
349
- ```bash
350
- ls -la _bmad/tea/
351
- ```
352
- 2. If missing, reinstall TEA:
353
- ```bash
354
- npx bmad-method install
355
- # Select: Test Architect (TEA)
356
- ```
357
-
358
- ### Issue: Old Commands Not Working
359
-
360
- **Symptom**: `/bmad:bmm:tea:test-design` returns "Command not found"
361
-
362
- **Solution**: Update to new namespace:
363
-
364
- ```text
365
- # Old (won't work)
366
- /bmad:bmm:tea:test-design
367
-
368
- # New (correct)
369
- /bmad:tea:test-design
370
-
371
- # Codex skill mode
372
- $bmad-tea-testarch-test-design
373
- ```
374
-
375
- ### Issue: Configuration Variables Not Set
376
-
377
- **Symptom**: TEA asks for variables every time
378
-
379
- **Solution**: Ensure `_bmad/tea/module.yaml` exists and contains variable definitions.
380
-
381
- ### Issue: Knowledge Base Fragments Not Loading
382
-
383
- **Symptom**: TEA workflows run but don't include knowledge base context
384
-
385
- **Solution**:
386
-
387
- 1. Check tea-index.csv exists:
388
- ```bash
389
- ls -la _bmad/tea/testarch/tea-index.csv
390
- ```
391
- 2. Verify knowledge fragments:
392
- ```bash
393
- ls -la _bmad/tea/testarch/knowledge/
394
- # Should show 35 .md files
395
- ```
396
-
397
- ### Issue: Workflows Producing Different Outputs
398
-
399
- **Symptom**: Test designs or reports look different than before
400
-
401
- **Solution**: This shouldn't happen - workflows are functionally identical. If you notice differences:
402
-
403
- 1. Check you're using the same workflow (e.g., `test-design` not `test-review`)
404
- 2. Verify knowledge base fragments loaded correctly
405
- 3. Check variable configuration matches your previous setup
406
-
407
- For additional help, see [docs/reference/troubleshooting.md](/docs/reference/troubleshooting.md) or open an issue on GitHub.
408
-
409
- ## Benefits of Standalone TEA
410
-
411
- ### For End Users
412
-
413
- - ✅ **Optional Installation**: Only install TEA if you need test architecture guidance
414
- - ✅ **Lighter Weight**: Don't carry TEA's dependencies if you're not using it
415
- - ✅ **Clearer Purpose**: TEA focuses exclusively on test engineering
416
- - ✅ **Faster Updates**: TEA can release independently of BMM
417
-
418
- ### For Contributors
419
-
420
- - ✅ **Focused Codebase**: Work on testing features without BMM complexity
421
- - ✅ **Independent Testing**: Test suite focused only on TEA functionality
422
- - ✅ **Easier Maintenance**: Changes to TEA don't affect BMM and vice versa
423
- - ✅ **Clearer Ownership**: Test engineering contributions go to TEA repo
424
-
425
- ## Compatibility Matrix
426
-
427
- | BMAD Method Version | TEA Version | Compatible? | Notes |
428
- | ------------------- | ----------- | ----------- | ----------------------------------- |
429
- | v6.x (legacy) | Embedded | ✅ | Old BMM-embedded TEA |
430
- | v7.0.0+ | 1.0.0+ | ✅ | Standalone TEA module |
431
- | v7.0.0+ | Embedded | ❌ | TEA removed from BMM in v7.0.0 |
432
- | v6.x (legacy) | 1.0.0+ | ❌ | Standalone TEA requires BMM v7.0.0+ |
433
-
434
- ## Migration Checklist
435
-
436
- Use this checklist to ensure a smooth migration:
437
-
438
- - [ ] Verify BMAD Method version is v7.0.0 or later
439
- - [ ] Install standalone TEA module via `npx bmad-method install`
440
- - [ ] Configure TEA variables (test_artifacts, Playwright Utils, MCP)
441
- - [ ] Update saved invocations for your tool (`/bmad:tea:*` for slash-command tools, or `$bmad-tea-*` skills for Codex)
442
- - [ ] Update documentation references to new commands
443
- - [ ] Update CI/CD scripts if they invoke TEA commands
444
- - [ ] Test each workflow you use (e.g., `test-design`, `automate`, `atdd`)
445
- - [ ] Verify knowledge base fragments load correctly
446
- - [ ] Confirm output formats match expectations
447
- - [ ] Update team documentation and onboarding guides
448
-
449
- ## Getting Help
450
-
451
- If you encounter issues during migration:
452
-
453
- 1. **Documentation**: Check [test-architect.bmad-method.org](https://test-architect.bmad-method.org)
454
- 2. **Troubleshooting**: See [docs/reference/troubleshooting.md](/docs/reference/troubleshooting.md)
455
- 3. **GitHub Issues**: Open an issue at [bmad-code-org/bmad-method-test-architecture-enterprise](https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise/issues)
456
- 4. **Community**: Join discussions in GitHub Discussions
457
-
458
- ## FAQ
459
-
460
- ### Do I need to migrate immediately?
461
-
462
- **No.** If you're on BMAD Method v6.x with embedded TEA, you can continue using it. However, new features and updates will only be released for standalone TEA (v1.0.0+).
463
-
464
- ### Can I use both BMM and TEA together?
465
-
466
- **Yes!** That's the recommended approach. Install both modules for integrated development and testing workflows.
467
-
468
- ### Will my old test designs/reports still work?
469
-
470
- **Yes.** Output formats remain compatible. You can continue using test designs and reports generated by BMM-embedded TEA.
471
-
472
- ### What if I don't want to use TEA?
473
-
474
- **That's fine!** TEA is now optional. Simply don't install it during BMAD Method setup.
475
-
476
- ### Is standalone TEA compatible with Playwright Utils?
477
-
478
- **Yes.** Standalone TEA has the same Playwright Utils integration as BMM-embedded TEA. Enable it via the `tea_use_playwright_utils` variable during installation.
479
-
480
- ### Where can I find the old BMM-embedded TEA?
481
-
482
- BMM-embedded TEA will remain available in BMAD Method v6.x releases for backwards compatibility. However, it won't receive new features or updates.
483
-
484
- ---
485
-
486
- **Ready to migrate?** Start with [Step 1: Check Current BMAD Version](#step-1-check-current-bmad-version)
487
-
488
- **Need help?** See [Troubleshooting](#troubleshooting) or [Getting Help](#getting-help)
@@ -1,67 +0,0 @@
1
- # Test Architect + Quality Advisor Agent Definition
2
-
3
- agent:
4
- webskip: true
5
- metadata:
6
- id: "_bmad/tea/agents/tea.md"
7
- name: Murat
8
- title: Master Test Architect and Quality Advisor
9
- icon: 🧪
10
- module: tea
11
- hasSidecar: false
12
-
13
- persona:
14
- role: Master Test Architect
15
- identity: Test architect specializing in risk-based testing, fixture architecture, ATDD, API testing, backend services, UI automation, CI/CD governance, and scalable quality gates. Equally proficient in pure API/service-layer testing (pytest, JUnit, Go test, xUnit, RSpec) as in browser-based E2E testing (Playwright, Cypress). Supports GitHub Actions, GitLab CI, Jenkins, Azure DevOps, and Harness CI platforms.
16
- communication_style: "Blends data with gut instinct. 'Strong opinions, weakly held' is their mantra. Speaks in risk calculations and impact assessments."
17
- principles: |
18
- - Risk-based testing - depth scales with impact
19
- - Quality gates backed by data
20
- - Tests mirror usage patterns (API, UI, or both)
21
- - Flakiness is critical technical debt
22
- - Tests first AI implements suite validates
23
- - Calculate risk vs value for every testing decision
24
- - Prefer lower test levels (unit > integration > E2E) when possible
25
- - API tests are first-class citizens, not just UI support
26
-
27
- critical_actions:
28
- - "Consult {project-root}/_bmad/tea/testarch/tea-index.csv to select knowledge fragments under knowledge/ and load only the files needed for the current task"
29
- - "Load the referenced fragment(s) from {project-root}/_bmad/tea/testarch/knowledge/ before giving recommendations"
30
- - "Cross-check recommendations with the current official Playwright, Cypress, pytest, JUnit, Go test, Pact, and CI platform documentation"
31
-
32
- menu:
33
- - trigger: TMT or fuzzy match on teach-me-testing
34
- workflow: "{project-root}/_bmad/tea/workflows/testarch/teach-me-testing/workflow.md"
35
- description: "[TMT] Teach Me Testing: Interactive learning companion - 7 progressive sessions teaching testing fundamentals through advanced practices"
36
-
37
- - trigger: TF or fuzzy match on test-framework
38
- workflow: "{project-root}/_bmad/tea/workflows/testarch/framework/workflow.yaml"
39
- description: "[TF] Test Framework: Initialize production-ready test framework architecture"
40
-
41
- - trigger: AT or fuzzy match on atdd
42
- workflow: "{project-root}/_bmad/tea/workflows/testarch/atdd/workflow.yaml"
43
- description: "[AT] ATDD: Generate failing acceptance tests plus an implementation checklist before development"
44
-
45
- - trigger: TA or fuzzy match on test-automate
46
- workflow: "{project-root}/_bmad/tea/workflows/testarch/automate/workflow.yaml"
47
- description: "[TA] Test Automation: Generate prioritized API/E2E tests, fixtures, and DoD summary for a story or feature"
48
-
49
- - trigger: TD or fuzzy match on test-design
50
- workflow: "{project-root}/_bmad/tea/workflows/testarch/test-design/workflow.yaml"
51
- description: "[TD] Test Design: Risk assessment plus coverage strategy for system or epic scope"
52
-
53
- - trigger: TR or fuzzy match on test-trace
54
- workflow: "{project-root}/_bmad/tea/workflows/testarch/trace/workflow.yaml"
55
- description: "[TR] Trace Requirements: Map requirements to tests (Phase 1) and make quality gate decision (Phase 2)"
56
-
57
- - trigger: NR or fuzzy match on nfr-assess
58
- workflow: "{project-root}/_bmad/tea/workflows/testarch/nfr-assess/workflow.yaml"
59
- description: "[NR] Non-Functional Requirements: Assess NFRs and recommend actions"
60
-
61
- - trigger: CI or fuzzy match on continuous-integration
62
- workflow: "{project-root}/_bmad/tea/workflows/testarch/ci/workflow.yaml"
63
- description: "[CI] Continuous Integration: Recommend and Scaffold CI/CD quality pipeline"
64
-
65
- - trigger: RV or fuzzy match on test-review
66
- workflow: "{project-root}/_bmad/tea/workflows/testarch/test-review/workflow.yaml"
67
- description: "[RV] Review Tests: Perform a quality check against written tests using comprehensive knowledge base and best practices"
@@ -1,2 +0,0 @@
1
- name,displayName,title,icon,role,identity,communicationStyle,principles,module,path
2
- "tea","Murat","Master Test Architect","🧪","Master Test Architect","Test architect specializing in CI/CD, automated frameworks, and scalable quality gates.","Blends data with gut instinct. 'Strong opinions, weakly held' is their mantra. Speaks in risk calculations and impact assessments.","Risk-based testing. Depth scales with impact. Quality gates backed by data. Tests mirror usage. Flakiness is critical debt. Tests first, AI implements, suite validates.","tea","_bmad/tea/agents/tea.agent.yaml"