@bugzy-ai/bugzy 1.18.3 → 1.18.4

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 (61) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +273 -273
  3. package/dist/cli/index.cjs +289 -206
  4. package/dist/cli/index.cjs.map +1 -1
  5. package/dist/cli/index.js +288 -205
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/index.cjs +285 -202
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.js +285 -202
  10. package/dist/index.js.map +1 -1
  11. package/dist/subagents/index.cjs +115 -137
  12. package/dist/subagents/index.cjs.map +1 -1
  13. package/dist/subagents/index.js +115 -137
  14. package/dist/subagents/index.js.map +1 -1
  15. package/dist/subagents/metadata.cjs +12 -18
  16. package/dist/subagents/metadata.cjs.map +1 -1
  17. package/dist/subagents/metadata.js +12 -18
  18. package/dist/subagents/metadata.js.map +1 -1
  19. package/dist/tasks/index.cjs +136 -50
  20. package/dist/tasks/index.cjs.map +1 -1
  21. package/dist/tasks/index.js +136 -50
  22. package/dist/tasks/index.js.map +1 -1
  23. package/dist/templates/init/.bugzy/runtime/knowledge-base.md +61 -0
  24. package/dist/templates/init/.bugzy/runtime/knowledge-maintenance-guide.md +97 -0
  25. package/dist/templates/init/.bugzy/runtime/project-context.md +35 -0
  26. package/dist/templates/init/.bugzy/runtime/subagent-memory-guide.md +87 -0
  27. package/dist/templates/init/.bugzy/runtime/templates/test-plan-template.md +50 -0
  28. package/dist/templates/init/.bugzy/runtime/templates/test-result-schema.md +498 -0
  29. package/dist/templates/init/.bugzy/runtime/test-execution-strategy.md +535 -0
  30. package/dist/templates/init/.bugzy/runtime/testing-best-practices.md +632 -0
  31. package/dist/templates/init/.gitignore-template +25 -0
  32. package/package.json +95 -95
  33. package/templates/init/.bugzy/runtime/knowledge-base.md +61 -61
  34. package/templates/init/.bugzy/runtime/knowledge-maintenance-guide.md +97 -97
  35. package/templates/init/.bugzy/runtime/project-context.md +35 -35
  36. package/templates/init/.bugzy/runtime/subagent-memory-guide.md +87 -87
  37. package/templates/init/.bugzy/runtime/templates/event-examples.md +194 -194
  38. package/templates/init/.bugzy/runtime/templates/test-plan-template.md +50 -50
  39. package/templates/init/.bugzy/runtime/templates/test-result-schema.md +498 -498
  40. package/templates/init/.claude/settings.json +28 -28
  41. package/templates/init/.env.testdata +18 -18
  42. package/templates/init/.gitignore-template +24 -24
  43. package/templates/init/AGENTS.md +155 -155
  44. package/templates/init/CLAUDE.md +157 -157
  45. package/templates/init/test-runs/README.md +45 -45
  46. package/templates/init/tests/CLAUDE.md +193 -193
  47. package/templates/init/tests/docs/test-execution-strategy.md +535 -535
  48. package/templates/init/tests/docs/testing-best-practices.md +724 -724
  49. package/templates/playwright/BasePage.template.ts +190 -190
  50. package/templates/playwright/auth.setup.template.ts +89 -89
  51. package/templates/playwright/dataGenerators.helper.template.ts +148 -148
  52. package/templates/playwright/dateUtils.helper.template.ts +96 -96
  53. package/templates/playwright/pages.fixture.template.ts +50 -50
  54. package/templates/playwright/playwright.config.template.ts +97 -97
  55. package/templates/playwright/reporters/__tests__/bugzy-reporter-failure-classification.test.ts +299 -299
  56. package/templates/playwright/reporters/__tests__/bugzy-reporter-manifest-merge.test.ts +329 -329
  57. package/templates/playwright/reporters/__tests__/playwright.config.ts +5 -5
  58. package/templates/playwright/reporters/bugzy-reporter.ts +784 -784
  59. package/templates/init/.bugzy/runtime/handlers/messages/feedback.md +0 -178
  60. package/templates/init/.bugzy/runtime/handlers/messages/question.md +0 -122
  61. package/templates/init/.bugzy/runtime/handlers/messages/status.md +0 -146
package/dist/index.cjs CHANGED
@@ -395,20 +395,20 @@ Example structure:
395
395
  {
396
396
  inline: true,
397
397
  title: "Generate All Manual Test Case Files",
398
- content: `Generate ALL manual test case markdown files in \`./test-cases/\` BEFORE invoking the test-code-generator agent.
398
+ content: `Generate ALL manual test case markdown files in \`./test-cases/\` BEFORE invoking the test-engineer agent.
399
399
 
400
400
  Create files using \`TC-XXX-feature-description.md\` format. Follow the format of existing test cases in the directory. If no existing cases exist, include:
401
401
  - Frontmatter with test case metadata (id, title, type, area, \`automated: true/false\`, \`automated_test:\` empty)
402
402
  - Clear test steps with expected results
403
403
  - Required test data references (use env var names, not values)`
404
404
  },
405
- // Step 11: Automate Test Cases (inline - detailed instructions for test-code-generator)
405
+ // Step 11: Automate Test Cases (inline - detailed instructions for test-engineer)
406
406
  {
407
407
  inline: true,
408
408
  title: "Automate Test Cases Area by Area",
409
409
  content: `**IMPORTANT**: Process each feature area separately to enable incremental, focused test creation.
410
410
 
411
- **For each area**, invoke the test-code-generator agent:
411
+ **For each area**, invoke the test-engineer agent:
412
412
 
413
413
  **Prepare Area Context:**
414
414
  Before invoking the agent, identify the test cases for the current area:
@@ -420,9 +420,9 @@ Before invoking the agent, identify the test cases for the current area:
420
420
  - Existing automated tests in ./tests/specs/
421
421
  - Existing Page Objects in ./tests/pages/
422
422
 
423
- **Invoke test-code-generator Agent:**
423
+ **Invoke test-engineer Agent:**
424
424
 
425
- {{INVOKE_TEST_CODE_GENERATOR}} for the current area with the following context:
425
+ {{INVOKE_TEST_ENGINEER}} for the current area with the following context:
426
426
 
427
427
  "Automate test cases for the [AREA_NAME] area.
428
428
 
@@ -436,7 +436,7 @@ Before invoking the agent, identify the test cases for the current area:
436
436
  - Existing page objects: [directory from ./tests/CLAUDE.md]
437
437
 
438
438
  **Knowledge Base Patterns (MUST APPLY):**
439
- Include ALL relevant testing patterns from the knowledge base that apply to this area. For example, if the KB documents timing behaviors (animation delays, loading states), selector gotchas, or recommended assertion approaches \u2014 list them here explicitly and instruct the agent to use the specific patterns described (e.g., specific assertion methods with specific timeouts). The test-code-generator does not have access to the knowledge base, so you MUST relay the exact patterns and recommended code approaches.
439
+ Include ALL relevant testing patterns from the knowledge base that apply to this area. For example, if the KB documents timing behaviors (animation delays, loading states), selector gotchas, or recommended assertion approaches \u2014 list them here explicitly and instruct the agent to use the specific patterns described (e.g., specific assertion methods with specific timeouts). The test-engineer does not have access to the knowledge base, so you MUST relay the exact patterns and recommended code approaches.
440
440
 
441
441
  **The agent should:**
442
442
  1. Read the manual test case files for this area
@@ -495,7 +495,7 @@ Move to the next area and repeat until all areas are complete.
495
495
  content: `Provide a summary of created artifacts: manual test cases (count, IDs), automated tests (count, spec files), page objects and supporting files, coverage by area, and command to run tests (from \`./tests/CLAUDE.md\`).`
496
496
  }
497
497
  ],
498
- requiredSubagents: ["browser-automation", "test-code-generator"],
498
+ requiredSubagents: ["browser-automation", "test-engineer"],
499
499
  optionalSubagents: ["documentation-researcher", "team-communicator"],
500
500
  dependentTasks: []
501
501
  };
@@ -682,10 +682,10 @@ After saving the test plan:
682
682
  var handleMessageTask = {
683
683
  slug: TASK_SLUGS.HANDLE_MESSAGE,
684
684
  name: "Handle Message",
685
- description: "Handle team responses and Slack communications, maintaining context for ongoing conversations (LLM-routed)",
685
+ description: "Handle team messages, maintaining context for ongoing conversations",
686
686
  frontmatter: {
687
- description: "Handle team responses and Slack communications, maintaining context for ongoing conversations",
688
- "argument-hint": "[slack thread context or team message]"
687
+ description: "Handle team messages, maintaining context for ongoing conversations",
688
+ "argument-hint": "[team thread context or message]"
689
689
  },
690
690
  steps: [
691
691
  // Step 1: Overview (inline)
@@ -694,7 +694,7 @@ var handleMessageTask = {
694
694
  title: "Handle Message Overview",
695
695
  content: `# Handle Message Command
696
696
 
697
- Process team responses from Slack threads and handle multi-turn conversations with the product team about testing clarifications, ambiguities, and questions.`
697
+ Process team messages and handle multi-turn conversations with the product team about testing clarifications, ambiguities, and questions.`
698
698
  },
699
699
  // Step 2: Security Notice (library)
700
700
  "security-notice",
@@ -708,19 +708,19 @@ Process team responses from Slack threads and handle multi-turn conversations wi
708
708
  "load-project-context",
709
709
  // Step 5: Knowledge Base Read (library)
710
710
  "read-knowledge-base",
711
- // Step 5: Detect Intent (inline - task-specific)
711
+ // Step 6: Detect Intent (inline - simplified, no handler file loading)
712
712
  {
713
713
  inline: true,
714
- title: "Detect Message Intent and Load Handler",
715
- content: `Before processing the message, identify the intent type to load the appropriate handler.
714
+ title: "Detect Message Intent",
715
+ content: `Identify the intent type from the event payload or message patterns:
716
716
 
717
- #### 0.1 Extract Intent from Event Payload
717
+ #### Extract Intent from Event Payload
718
718
 
719
719
  Check the event payload for the \`intent\` field provided by the LLM layer:
720
720
  - If \`intent\` is present, use it directly
721
721
  - Valid intent values: \`question\`, \`feedback\`, \`status\`
722
722
 
723
- #### 0.2 Fallback Intent Detection (if no intent provided)
723
+ #### Fallback Intent Detection (if no intent provided)
724
724
 
725
725
  If intent is not in the payload, detect from message patterns:
726
726
 
@@ -731,39 +731,125 @@ If intent is not in the payload, detect from message patterns:
731
731
  | Question words: "what", "which", "do we have", "is there" about tests/project | \`question\` |
732
732
  | Default (none of above) | \`feedback\` |
733
733
 
734
- #### 0.3 Load Handler File
734
+ Then follow the matching handler section below.`
735
+ },
736
+ // Step 7: Process by Intent (all three handlers consolidated)
737
+ {
738
+ inline: true,
739
+ title: "Process Message by Intent",
740
+ content: `Based on the detected intent, follow the appropriate section:
741
+
742
+ ---
743
+
744
+ ## If intent = "feedback"
745
+
746
+ ### Step 1: Parse Feedback
747
+
748
+ Extract the following from the message:
749
+
750
+ | Field | Description |
751
+ |-------|-------------|
752
+ | **Type** | \`bug_report\`, \`test_result\`, \`observation\`, \`suggestion\`, \`general\` |
753
+ | **Severity** | \`critical\`, \`high\`, \`medium\`, \`low\` |
754
+ | **Component** | Affected area (e.g., "login", "checkout") |
755
+ | **Description** | Core issue description |
756
+ | **Expected** | What should happen (if stated) |
757
+ | **Steps** | How to reproduce (if provided) |
758
+
759
+ **Type Detection**:
760
+ - \`bug_report\`: "bug", "broken", "doesn't work", "error", "crash"
761
+ - \`test_result\`: "test passed", "test failed", "ran tests", "testing showed"
762
+ - \`observation\`: "noticed", "observed", "found that", "saw that"
763
+ - \`suggestion\`: "should", "could we", "what if", "idea"
764
+ - \`general\`: Default for unclassified feedback
765
+
766
+ ### Step 2: Update Test Case Specifications
767
+
768
+ **CRITICAL**: When feedback requests changes to test behavior (e.g., "change the expected result", "update the test to check for X", "the test should verify Y instead"), you MUST update the test case markdown files to reflect the requested changes.
769
+
770
+ For each actionable feedback item:
771
+ 1. Identify which test case(s) are affected
772
+ 2. Read the test case markdown file
773
+ 3. Update the test steps, expected results, or assertions as requested
774
+ 4. Save the modified test case file
775
+
776
+ This step updates the **specification** (markdown test case files) only. The \`sync-automation-from-feedback\` step that follows handles syncing the **implementation** (automation code) to match.
777
+
778
+ ### Step 3: Acknowledge and Confirm
779
+
780
+ Respond confirming: feedback received, summary of what was captured, actions taken (including any test case updates), and follow-up questions if needed.
781
+
782
+ ---
783
+
784
+ ## If intent = "question"
785
+
786
+ ### Step 1: Classify Question Type
735
787
 
736
- Based on detected intent, load the handler from:
737
- \`.bugzy/runtime/handlers/messages/{intent}.md\`
788
+ | Type | Indicators | Primary Context Sources |
789
+ |------|------------|------------------------|
790
+ | **Coverage** | "what tests", "do we have", "is there a test for" | test-cases/, test-plan.md |
791
+ | **Results** | "did tests pass", "what failed", "test results" | test-runs/ |
792
+ | **Knowledge** | "how does", "what is", "explain" | knowledge-base.md |
793
+ | **Plan** | "what's in scope", "test plan", "testing strategy" | test-plan.md |
794
+ | **Process** | "how do I", "when should", "what's the workflow" | project-context.md |
738
795
 
739
- **Handler files:**
740
- - \`question.md\` - Questions about tests, coverage, project details
741
- - \`feedback.md\` - Bug reports, test observations, general information
742
- - \`status.md\` - Status checks on test runs, task progress
796
+ ### Step 2: Load Relevant Context
743
797
 
744
- #### 0.4 Follow Handler Instructions
798
+ Based on question type, load the appropriate files:
799
+ - **Coverage**: Read test-plan.md, list ./test-cases/, search for relevant keywords
800
+ - **Results**: List ./test-runs/ (newest first), read summary.json from relevant runs
801
+ - **Knowledge**: Read .bugzy/runtime/knowledge-base.md, search for relevant entries
802
+ - **Plan**: Read test-plan.md, extract relevant sections
803
+ - **Process**: Read .bugzy/runtime/project-context.md
745
804
 
746
- **IMPORTANT**: The handler file is authoritative for this intent type.
805
+ ### Step 3: Formulate Answer
747
806
 
748
- 1. Read the handler file completely
749
- 2. Follow its processing steps in order
750
- 3. Apply its context loading requirements
751
- 4. Use its response guidelines
752
- 5. Perform any memory updates it specifies
807
+ - Be specific: quote relevant sections from source files
808
+ - Cite sources: mention which files contain the information
809
+ - Quantify when possible: "We have 12 test cases covering login..."
810
+ - Acknowledge gaps if information is incomplete
753
811
 
754
- The handler file contains all necessary processing logic for the detected intent type. Each handler includes:
755
- - Specific processing steps for that intent
756
- - Context loading requirements
757
- - Response guidelines
758
- - Memory update instructions`
812
+ ### Step 4: Offer Follow-up
813
+
814
+ End response with offer to provide more detail and suggest related information.
815
+
816
+ ---
817
+
818
+ ## If intent = "status"
819
+
820
+ ### Step 1: Identify Status Scope
821
+
822
+ | Scope | Indicators | Data Sources |
823
+ |-------|------------|--------------|
824
+ | **Latest test run** | "last run", "recent tests", "how did tests go" | Most recent test-runs/ directory |
825
+ | **Specific test** | Test ID mentioned (TC-XXX) | test-runs/*/TC-XXX/, test-cases/TC-XXX.md |
826
+ | **Overall** | "overall", "all tests", "pass rate" | All test-runs/ summaries |
827
+ | **Task progress** | "is the task done", "what's happening with" | team-communicator memory |
828
+
829
+ ### Step 2: Gather Status Data
830
+
831
+ Based on scope, read the appropriate test-runs/ directories and summary files. Calculate aggregate statistics for overall status requests.
832
+
833
+ ### Step 3: Format Status Report
834
+
835
+ Present status clearly: lead with pass/fail summary, use bullet points, include timestamps, offer to drill down into specifics.
836
+
837
+ ### Step 4: Provide Context and Recommendations
838
+
839
+ For failing tests: suggest review, note if new or recurring. For declining trends: highlight causes. For good results: acknowledge healthy state.`
759
840
  },
760
- // Step 6: Post Response via Team Communicator
841
+ // Step 8: Sync automation from feedback (conditional on test-engineer)
842
+ {
843
+ stepId: "sync-automation-from-feedback",
844
+ conditionalOnSubagent: "test-engineer"
845
+ },
846
+ // Step 9: Post Response via Team Communicator
761
847
  {
762
848
  inline: true,
763
849
  title: "Post Response to Team",
764
850
  content: `## Post Response to the Team
765
851
 
766
- After processing the message through the handler and composing your response:
852
+ After processing the message and composing your response:
767
853
 
768
854
  {{INVOKE_TEAM_COMMUNICATOR}} to post the response back to the team.
769
855
 
@@ -778,13 +864,13 @@ After processing the message through the handler and composing your response:
778
864
  - Ask the user whether to post \u2014 the message came from the team, the response goes back to the team
779
865
  - Compose a draft without sending it`
780
866
  },
781
- // Step 7: Clarification Protocol (for ambiguous intents)
867
+ // Step 10: Clarification Protocol (for ambiguous intents)
782
868
  "clarification-protocol",
783
- // Step 8: Knowledge Base Update (library)
869
+ // Step 11: Knowledge Base Update (library)
784
870
  "update-knowledge-base"
785
871
  ],
786
872
  requiredSubagents: ["team-communicator"],
787
- optionalSubagents: [],
873
+ optionalSubagents: ["test-engineer"],
788
874
  dependentTasks: ["verify-changes"]
789
875
  };
790
876
 
@@ -1384,7 +1470,7 @@ If selected test cases have formatting issues:
1384
1470
 
1385
1471
  **Failure Handling**:
1386
1472
  - Test failures are automatically triaged (product bugs vs test issues)
1387
- - Test issues are automatically fixed by the test-debugger-fixer subagent
1473
+ - Test issues are automatically fixed by the test-engineer subagent
1388
1474
  - Product bugs are logged via issue tracker after triage
1389
1475
  - All results are analyzed for learning opportunities and team communication
1390
1476
  - Critical failures trigger immediate team notification
@@ -1401,7 +1487,7 @@ If selected test cases have formatting issues:
1401
1487
  conditionalOnSubagent: "team-communicator"
1402
1488
  }
1403
1489
  ],
1404
- requiredSubagents: ["browser-automation", "test-debugger-fixer"],
1490
+ requiredSubagents: ["browser-automation", "test-engineer"],
1405
1491
  optionalSubagents: ["issue-tracker", "team-communicator"],
1406
1492
  dependentTasks: []
1407
1493
  };
@@ -1681,7 +1767,7 @@ Generate summary of test selection based on description analysis:
1681
1767
  - **Execution strategy**: [smart selection | full suite | smoke tests | user-specified]
1682
1768
  \`\`\``
1683
1769
  },
1684
- // Step 7b: Create Tests for Coverage Gaps (conditional - test-code-generator)
1770
+ // Step 7b: Create Tests for Coverage Gaps (conditional - test-engineer)
1685
1771
  {
1686
1772
  inline: true,
1687
1773
  title: "Create Tests for Coverage Gaps",
@@ -1717,7 +1803,7 @@ If the Jira issue or PR references test accounts/data (e.g., TEST_PREMIUM_USER,
1717
1803
 
1718
1804
  ### Generate Automated Test Specs
1719
1805
 
1720
- {{INVOKE_TEST_CODE_GENERATOR}} to create automated test specs:
1806
+ {{INVOKE_TEST_ENGINEER}} to create automated test specs:
1721
1807
  - Read the manual test cases you just created
1722
1808
  - Explore the feature in the browser to discover selectors and flows
1723
1809
  - Create page objects in the directory specified by \`./tests/CLAUDE.md\`
@@ -1728,7 +1814,7 @@ If the Jira issue or PR references test accounts/data (e.g., TEST_PREMIUM_USER,
1728
1814
  ### If Tests Already Cover the Feature
1729
1815
 
1730
1816
  Skip this step \u2014 proceed directly to running existing tests.`,
1731
- conditionalOnSubagent: "test-code-generator"
1817
+ conditionalOnSubagent: "test-engineer"
1732
1818
  },
1733
1819
  // Step 8-11: Test Execution (library steps)
1734
1820
  "run-tests",
@@ -1917,8 +2003,8 @@ Post PR comment if GitHub context available.`,
1917
2003
  **If test execution fails:** report specific error, suggest troubleshooting, don't proceed with triage.`
1918
2004
  }
1919
2005
  ],
1920
- requiredSubagents: ["browser-automation", "test-debugger-fixer"],
1921
- optionalSubagents: ["documentation-researcher", "issue-tracker", "team-communicator", "changelog-historian", "test-code-generator"],
2006
+ requiredSubagents: ["browser-automation", "test-engineer"],
2007
+ optionalSubagents: ["documentation-researcher", "issue-tracker", "team-communicator", "changelog-historian"],
1922
2008
  dependentTasks: []
1923
2009
  };
1924
2010
 
@@ -1994,7 +2080,7 @@ This command orchestrates the complete test coverage workflow in a single execut
1994
2080
  },
1995
2081
  "generate-final-report"
1996
2082
  ],
1997
- requiredSubagents: ["browser-automation", "test-code-generator", "test-debugger-fixer"],
2083
+ requiredSubagents: ["browser-automation", "test-engineer"],
1998
2084
  optionalSubagents: ["documentation-researcher", "team-communicator", "issue-tracker"],
1999
2085
  dependentTasks: ["run-tests", "generate-test-cases"]
2000
2086
  };
@@ -2103,7 +2189,7 @@ This task is triggered automatically when test results are submitted to the Bugz
2103
2189
  "normalize-test-results",
2104
2190
  // Step 7: Triage Failures (existing library step)
2105
2191
  "triage-failures",
2106
- // Step 8: Fix Test Issues (library — uses test-debugger-fixer)
2192
+ // Step 8: Fix Test Issues (library — uses test-engineer)
2107
2193
  "fix-test-issues",
2108
2194
  // Step 9: Log Product Bugs (conditional — requires issue-tracker)
2109
2195
  {
@@ -2162,7 +2248,7 @@ Create a structured triage report as the task output. This report is stored in \
2162
2248
  Output this JSON as the final result of the task.`
2163
2249
  }
2164
2250
  ],
2165
- requiredSubagents: ["browser-automation", "test-debugger-fixer"],
2251
+ requiredSubagents: ["browser-automation", "test-engineer"],
2166
2252
  optionalSubagents: ["issue-tracker", "team-communicator"],
2167
2253
  dependentTasks: []
2168
2254
  };
@@ -2394,40 +2480,45 @@ var CONTENT = `You are an expert automated test execution specialist. Your prima
2394
2480
 
2395
2481
  When you encounter ambiguous test steps, make intelligent decisions based on common testing patterns and document your interpretation. Prioritize capturing evidence over speed.`;
2396
2482
 
2397
- // src/subagents/templates/test-code-generator/playwright.ts
2483
+ // src/subagents/templates/test-engineer/default.ts
2398
2484
  var FRONTMATTER2 = {
2399
- name: "test-code-generator",
2400
- description: `Generate automated test scripts, page objects, and test case documentation from test plans. Use this agent when you need to create executable test code. Examples: <example>Context: The user has a test plan and wants to generate automated tests.
2485
+ name: "test-engineer",
2486
+ description: `Create, update, debug, and fix automated tests. Use this agent for all test automation tasks: generating new tests, updating existing tests after feedback, and debugging/fixing failing tests. Examples: <example>Context: The user has a test plan and wants to generate automated tests.
2401
2487
  user: "Generate test cases for the login feature based on the test plan"
2402
- assistant: "I'll use the test-code-generator agent to create both manual test case documentation and automated test scripts with page objects."
2403
- <commentary>Since the user wants to generate test code from a test plan, use the Task tool to launch the test-code-generator agent.</commentary></example> <example>Context: After exploring the application, the user wants to create automated tests.
2404
- user: "Create automated tests for the checkout flow"
2405
- assistant: "Let me use the test-code-generator agent to generate test scripts, page objects, and test case documentation for the checkout flow."
2406
- <commentary>The user needs automated test generation, so launch the test-code-generator agent to create all necessary test artifacts.</commentary></example>`,
2488
+ assistant: "I'll use the test-engineer agent to create both manual test case documentation and automated test scripts with page objects."
2489
+ <commentary>Since the user wants to generate test code from a test plan, use the Task tool to launch the test-engineer agent.</commentary></example> <example>Context: Automated test failed with a timeout or selector error.
2490
+ user: "Fix the failing login test"
2491
+ assistant: "I'll use the test-engineer agent to analyze the failure, debug the issue, and fix the test code."
2492
+ <commentary>Since an automated test is failing, use the Task tool to launch the test-engineer agent.</commentary></example> <example>Context: Feedback requested changes to test behavior and test case MDs were updated.
2493
+ user: "Update the automation code to match the updated test cases"
2494
+ assistant: "I'll use the test-engineer agent to update the spec files to match the modified test case specifications."
2495
+ <commentary>Test case specifications changed, so launch the test-engineer agent to sync automation code.</commentary></example>`,
2407
2496
  model: "sonnet",
2408
2497
  color: "purple"
2409
2498
  };
2410
- var CONTENT2 = `You are an expert test automation engineer specializing in generating high-quality automated test code and comprehensive test case documentation.
2499
+ var CONTENT2 = `You are an expert test automation engineer. You handle all test automation tasks: creating new tests, updating existing tests, and debugging/fixing failing tests.
2411
2500
 
2412
- **IMPORTANT: Read \`./tests/CLAUDE.md\` first.** It defines the test framework, directory structure, conventions, selector strategies, fix patterns, and test execution commands. All generated code must follow these conventions.
2501
+ **IMPORTANT: Read \`./tests/CLAUDE.md\` first.** It defines the test framework, directory structure, conventions, selector strategies, fix patterns, and test execution commands. All work must follow these conventions.
2413
2502
 
2414
2503
  **Also read:** \`./tests/docs/testing-best-practices.md\` for test isolation, authentication, and anti-pattern guidance.
2415
2504
 
2416
2505
  **Setup:**
2417
2506
 
2418
- 1. ${MEMORY_READ_INSTRUCTIONS.replace(/{ROLE}/g, "test-code-generator")}
2507
+ 1. ${MEMORY_READ_INSTRUCTIONS.replace(/{ROLE}/g, "test-engineer")}
2419
2508
 
2420
- **Key memory areas**: generated artifacts, selector strategies, application architecture patterns, test creation history.
2509
+ **Key memory areas**: generated artifacts, selector strategies, application architecture patterns, test creation history, fixed issues history, failure pattern library, known stable selectors, known product bugs, flaky test tracking.
2421
2510
 
2422
2511
  2. **Environment**: Read \`.env.testdata\` for available TEST_* variables. Reference variables using \`process.env.VAR_NAME\` in tests. Never read \`.env\`. If a required variable is missing, add it to \`.env.testdata\` with an empty value and \`# TODO: configure\` comment \u2014 do NOT skip test creation.
2423
2512
 
2424
- 3. **Read manual test cases**: The generate-test-cases task has created manual test cases in \`./test-cases/*.md\` with frontmatter indicating which to automate (\`automated: true\`).
2513
+ 3. **Read manual test cases**: Read test cases from \`./test-cases/*.md\` with frontmatter indicating automation status.
2425
2514
 
2426
- 4. **NEVER generate selectors without exploring the live application first** using playwright-cli. Navigate to pages, inspect elements, capture screenshots, verify URLs. Assumed selectors cause 100% test failure.
2515
+ **Determine your mode from the delegation context:**
2427
2516
 
2428
- **Incremental Automation Workflow:**
2517
+ ---
2518
+
2519
+ ## Mode A: CREATE \u2014 New Test Generation
2429
2520
 
2430
- For each test case marked for automation:
2521
+ For each test case marked \`automated: true\`:
2431
2522
 
2432
2523
  **STEP 1: Check existing infrastructure**
2433
2524
  - Check memory for existing page objects
@@ -2435,7 +2526,7 @@ For each test case marked for automation:
2435
2526
  - Identify what's missing for this test
2436
2527
 
2437
2528
  **STEP 2: Build missing infrastructure** (if needed)
2438
- - Explore feature under test via playwright-cli: navigate, inspect elements, gather selectors, document URLs, capture screenshots
2529
+ - Explore feature under test: navigate, inspect elements, gather selectors, document URLs, capture screenshots
2439
2530
  - Create page objects with verified selectors following \`./tests/CLAUDE.md\` conventions
2440
2531
  - Create supporting code (fixtures, helpers, types) as needed
2441
2532
 
@@ -2456,50 +2547,25 @@ For each test case marked for automation:
2456
2547
  - Reuse existing page objects and infrastructure
2457
2548
  - Update memory with new patterns
2458
2549
 
2459
- **After all tests:**
2460
-
2461
- ${MEMORY_UPDATE_INSTRUCTIONS.replace(/{ROLE}/g, "test-code-generator")}
2462
-
2463
- Update: generated artifacts, test cases automated, selector strategies, application patterns, test creation history.
2464
-
2465
- **Generate summary**: tests created (pass/fail), manual test cases automated, page objects/fixtures/helpers added, next steps.
2466
-
2467
- **Critical Rules:**
2468
- - **NEVER** generate selectors without exploring the live application
2469
- - **NEVER** read .env \u2014 only .env.testdata
2470
- - **ALWAYS** explore application using playwright-cli before generating code
2471
- - **ALWAYS** verify selectors in live browser using playwright-cli snapshot
2472
- - **ALWAYS** follow conventions from \`./tests/CLAUDE.md\` and \`./tests/docs/testing-best-practices.md\`
2473
- - **ALWAYS** link manual \u2194 automated tests bidirectionally`;
2474
-
2475
- // src/subagents/templates/test-debugger-fixer/playwright.ts
2476
- var FRONTMATTER3 = {
2477
- name: "test-debugger-fixer",
2478
- description: `Debug and fix failing automated tests by analyzing failures, exploring the application, and updating test code. Use this agent when automated tests fail and need to be fixed. Examples: <example>Context: Automated test failed with a timeout or selector error.
2479
- user: "Fix the failing login test"
2480
- assistant: "I'll use the test-debugger-fixer agent to analyze the failure, debug the issue, and fix the test code."
2481
- <commentary>Since an automated test is failing, use the Task tool to launch the test-debugger-fixer agent.</commentary></example> <example>Context: Test is flaky, passing 7/10 times.
2482
- user: "Fix the flaky checkout test"
2483
- assistant: "Let me use the test-debugger-fixer agent to identify and fix the race condition causing the flakiness."
2484
- <commentary>The user needs a flaky test fixed, so launch the test-debugger-fixer agent to debug and stabilize the test.</commentary></example>`,
2485
- model: "sonnet",
2486
- color: "yellow"
2487
- };
2488
- var CONTENT3 = `You are an expert test debugger and fixer. Your primary responsibility is fixing failing automated tests by identifying root causes and applying appropriate fixes.
2489
-
2490
- **IMPORTANT: Read \`./tests/CLAUDE.md\` first.** It defines the test framework, conventions, selector strategies, fix patterns, and test execution commands. All fixes must follow these conventions.
2550
+ ---
2491
2551
 
2492
- **Also read:** \`./tests/docs/testing-best-practices.md\` for test isolation and debugging techniques.
2552
+ ## Mode B: UPDATE \u2014 Modify Existing Tests
2493
2553
 
2494
- **Setup:**
2554
+ For each test case that needs updating:
2495
2555
 
2496
- 1. ${MEMORY_READ_INSTRUCTIONS.replace(/{ROLE}/g, "test-debugger-fixer")}
2556
+ 1. **Read the test case markdown** to understand what changed
2557
+ 2. **Read the existing spec file** (from \`automated_test\` frontmatter field)
2558
+ 3. **Update the spec** to match the new specification:
2559
+ - Update test steps, assertions, selectors as needed
2560
+ - Preserve test structure and page object patterns
2561
+ - Follow conventions from \`./tests/CLAUDE.md\`
2562
+ 4. **Run the test** to verify changes work (command from \`./tests/CLAUDE.md\`)
2563
+ 5. **If test fails**: classify and fix (same as Mode A Step 4, max 3 attempts)
2564
+ 6. **Update manual test case** if the \`automated_test\` path changed
2497
2565
 
2498
- **Key memory areas**: fixed issues history, failure pattern library, known stable selectors, known product bugs, flaky test tracking.
2499
-
2500
- 2. **Environment**: Read \`.env.testdata\` to understand available variables. Never read \`.env\`. If test needs new variable, update \`.env.testdata\`.
2566
+ ---
2501
2567
 
2502
- **Fixing Workflow:**
2568
+ ## Mode C: FIX \u2014 Debug and Fix Failing Tests
2503
2569
 
2504
2570
  **Step 1: Read test file** \u2014 understand test intent, logic, and page objects used.
2505
2571
 
@@ -2509,7 +2575,7 @@ var CONTENT3 = `You are an expert test debugger and fixer. Your primary responsi
2509
2575
  - **Product bug**: Selectors correct, test logic matches user flow, app behaves unexpectedly, screenshots show app in wrong state \u2192 STOP, report as bug, do NOT fix test
2510
2576
  - **Test issue**: Selector not found (but element exists), timeout, flaky behavior, wrong assertion, test isolation problem \u2192 proceed to fix
2511
2577
 
2512
- **Step 4: Debug** (if needed) \u2014 use playwright-cli to open browser, navigate to page, inspect elements with \`snapshot\`, manually execute test steps, identify discrepancy.
2578
+ **Step 4: Debug** (if needed) \u2014 open browser, navigate to page, inspect elements with \`snapshot\`, manually execute test steps, identify discrepancy.
2513
2579
 
2514
2580
  **Step 5: Apply fix** \u2014 edit test file using fix patterns from \`./tests/CLAUDE.md\`. Update selectors, waits, assertions, or logic.
2515
2581
 
@@ -2525,9 +2591,15 @@ var CONTENT3 = `You are an expert test debugger and fixer. Your primary responsi
2525
2591
  - Fixed: provide file path, fix description, verification result
2526
2592
  - Still failing after 3 attempts: report as likely product bug
2527
2593
 
2528
- **Step 8:** ${MEMORY_UPDATE_INSTRUCTIONS.replace(/{ROLE}/g, "test-debugger-fixer")}
2594
+ ---
2595
+
2596
+ **After all work:**
2529
2597
 
2530
- Update: fixed issues history, failure pattern library, known selectors, known product bugs, flaky test tracking, application behavior patterns.
2598
+ ${MEMORY_UPDATE_INSTRUCTIONS.replace(/{ROLE}/g, "test-engineer")}
2599
+
2600
+ Update: generated artifacts, test cases automated, selector strategies, application patterns, test creation history, fixed issues history, failure pattern library, known selectors, known product bugs, flaky test tracking.
2601
+
2602
+ **Generate summary**: tests created/updated/fixed (pass/fail), manual test cases automated, page objects/fixtures/helpers added or modified, next steps.
2531
2603
 
2532
2604
  **Test Result Format**: The custom Bugzy reporter produces:
2533
2605
  - **Manifest**: \`test-runs/{timestamp}/manifest.json\` \u2014 overall run summary
@@ -2536,24 +2608,28 @@ Update: fixed issues history, failure pattern library, known selectors, known pr
2536
2608
  Read result.json from the execution path to understand failure context. Video, trace, and screenshots are in the same exec-{num}/ folder.
2537
2609
 
2538
2610
  **Critical Rules:**
2611
+ - **NEVER** generate selectors without exploring the live application first
2612
+ - **NEVER** read .env \u2014 only .env.testdata
2539
2613
  - **NEVER** fix tests when the issue is a product bug
2540
2614
  - **NEVER** make tests pass by lowering expectations
2541
2615
  - **NEVER** exceed 3 fix attempts \u2014 escalate instead
2616
+ - **ALWAYS** explore application before generating or updating code
2617
+ - **ALWAYS** verify selectors in live browser
2618
+ - **ALWAYS** follow conventions from \`./tests/CLAUDE.md\` and \`./tests/docs/testing-best-practices.md\`
2619
+ - **ALWAYS** link manual \u2194 automated tests bidirectionally
2542
2620
  - **ALWAYS** classify before fixing (product bug vs test issue)
2543
- - **ALWAYS** follow fix patterns from \`./tests/CLAUDE.md\`
2544
2621
  - **ALWAYS** verify fixes by re-running tests
2545
- - **ALWAYS** run flaky tests 10 times to confirm stability
2546
- - **ALWAYS** follow \`./tests/docs/testing-best-practices.md\``;
2622
+ - **ALWAYS** run flaky tests 10 times to confirm stability`;
2547
2623
 
2548
2624
  // src/subagents/templates/team-communicator/local.ts
2549
- var FRONTMATTER4 = {
2625
+ var FRONTMATTER3 = {
2550
2626
  name: "team-communicator",
2551
2627
  description: `Use this agent when you need to communicate with the user about testing activities, results, or questions. In local CLI mode, use the AskUserQuestion tool for questions requiring user input, and direct text output for status updates. Examples: <example>Context: A test run has completed with several failures that need user attention. user: 'The regression test suite just finished running and we have 5 critical failures in the checkout flow' assistant: 'I'll use the team-communicator agent to inform the user about these critical test failures and ask for prioritization guidance.' <commentary>Since there are critical test failures that need user awareness and input on prioritization, use the team-communicator agent to output a status update and ask for direction.</commentary></example> <example>Context: During exploratory testing, unclear behavior is discovered that needs clarification. user: 'I found that the user profile page shows different data when accessed from the main menu vs the settings page - not sure if this is intended behavior' assistant: 'Let me use the team-communicator agent to ask the user for clarification on this behavior using AskUserQuestion.' <commentary>Since there's ambiguous behavior that needs user clarification, use the team-communicator agent with AskUserQuestion to gather input.</commentary></example> <example>Context: Test plan generation is complete and ready for review. user: 'The test plan for the new payment integration feature is ready for review' assistant: 'I'll use the team-communicator agent to present the completed test plan to the user for review.' <commentary>Since the test plan is complete and needs user review, use the team-communicator agent to output the summary.</commentary></example>`,
2552
2628
  tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "AskUserQuestion", "ListMcpResourcesTool", "ReadMcpResourceTool"],
2553
2629
  model: "haiku",
2554
2630
  color: "yellow"
2555
2631
  };
2556
- var CONTENT4 = `You are a Team Communication Specialist operating in local CLI mode. You communicate directly with the user through the terminal. Your communication is concise, scannable, and actionable\u2014respecting the user's time while keeping them informed.
2632
+ var CONTENT3 = `You are a Team Communication Specialist operating in local CLI mode. You communicate directly with the user through the terminal. Your communication is concise, scannable, and actionable\u2014respecting the user's time while keeping them informed.
2557
2633
 
2558
2634
  ## Core Philosophy: Direct Terminal Communication
2559
2635
 
@@ -2750,14 +2826,14 @@ You are not a formal report generator. You are a helpful QA engineer communicati
2750
2826
  **Target feeling:** "This is helpful, clear communication that respects my time and gets me the info I need."`;
2751
2827
 
2752
2828
  // src/subagents/templates/team-communicator/slack.ts
2753
- var FRONTMATTER5 = {
2829
+ var FRONTMATTER4 = {
2754
2830
  name: "team-communicator",
2755
2831
  description: `Use this agent when you need to communicate with the product team via Slack about testing activities, results, or questions. Examples: <example>Context: A test run has completed with several failures that need team attention. user: 'The regression test suite just finished running and we have 5 critical failures in the checkout flow' assistant: 'I'll use the team-communicator agent to notify the product team about these critical test failures and get their input on prioritization.' <commentary>Since there are critical test failures that need team awareness and potentially input on prioritization, use the team-communicator agent to post an update to the relevant Slack channel.</commentary></example> <example>Context: During exploratory testing, unclear behavior is discovered that needs product team clarification. user: 'I found that the user profile page shows different data when accessed from the main menu vs the settings page - not sure if this is intended behavior' assistant: 'Let me use the team-communicator agent to ask the product team for clarification on this behavior.' <commentary>Since there's ambiguous behavior that needs product team clarification, use the team-communicator agent to ask questions in the appropriate Slack channel.</commentary></example> <example>Context: Test plan generation is complete and ready for team review. user: 'The test plan for the new payment integration feature is ready for review' assistant: 'I'll use the team-communicator agent to share the completed test plan with the product team for their review and feedback.' <commentary>Since the test plan is complete and needs team review, use the team-communicator agent to post an update with the test plan details.</commentary></example>`,
2756
2832
  tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "mcp__slack__slack_list_channels", "mcp__slack__slack_post_message", "mcp__slack__slack_post_rich_message", "mcp__slack__slack_reply_to_thread", "mcp__slack__slack_add_reaction", "mcp__slack__slack_get_channel_history", "mcp__slack__slack_get_thread_replies", "ListMcpResourcesTool", "ReadMcpResourceTool"],
2757
2833
  model: "haiku",
2758
2834
  color: "yellow"
2759
2835
  };
2760
- var CONTENT5 = `You are a Team Communication Specialist who communicates like a real QA engineer. Your messages are concise, scannable, and conversational \u2014 not formal reports.
2836
+ var CONTENT4 = `You are a Team Communication Specialist who communicates like a real QA engineer. Your messages are concise, scannable, and conversational \u2014 not formal reports.
2761
2837
 
2762
2838
  ## Core Philosophy
2763
2839
 
@@ -2868,14 +2944,14 @@ Before sending:
2868
2944
  **You are a helpful QA engineer who respects your team's time. Every word should earn its place.**`;
2869
2945
 
2870
2946
  // src/subagents/templates/team-communicator/teams.ts
2871
- var FRONTMATTER6 = {
2947
+ var FRONTMATTER5 = {
2872
2948
  name: "team-communicator",
2873
2949
  description: `Use this agent when you need to communicate with the product team via Microsoft Teams about testing activities, results, or questions. Examples: <example>Context: A test run has completed with several failures that need team attention. user: 'The regression test suite just finished running and we have 5 critical failures in the checkout flow' assistant: 'I'll use the team-communicator agent to notify the product team about these critical test failures and get their input on prioritization.' <commentary>Since there are critical test failures that need team awareness and potentially input on prioritization, use the team-communicator agent to post an update to the relevant Teams channel.</commentary></example> <example>Context: During exploratory testing, unclear behavior is discovered that needs product team clarification. user: 'I found that the user profile page shows different data when accessed from the main menu vs the settings page - not sure if this is intended behavior' assistant: 'Let me use the team-communicator agent to ask the product team for clarification on this behavior.' <commentary>Since there's ambiguous behavior that needs product team clarification, use the team-communicator agent to ask questions in the appropriate Teams channel.</commentary></example> <example>Context: Test plan generation is complete and ready for team review. user: 'The test plan for the new payment integration feature is ready for review' assistant: 'I'll use the team-communicator agent to share the completed test plan with the product team for their review and feedback.' <commentary>Since the test plan is complete and needs team review, use the team-communicator agent to post an update with the test plan details.</commentary></example>`,
2874
2950
  tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "mcp__teams__teams_post_message", "mcp__teams__teams_post_rich_message"],
2875
2951
  model: "haiku",
2876
2952
  color: "yellow"
2877
2953
  };
2878
- var CONTENT6 = `You are a Team Communication Specialist who communicates like a real QA engineer. Your messages are concise, scannable, and conversational\u2014not formal reports. You respect your team's time by keeping messages brief and using threads for details.
2954
+ var CONTENT5 = `You are a Team Communication Specialist who communicates like a real QA engineer. Your messages are concise, scannable, and conversational\u2014not formal reports. You respect your team's time by keeping messages brief and using threads for details.
2879
2955
 
2880
2956
  ## Core Philosophy: Concise, Human Communication
2881
2957
 
@@ -3220,14 +3296,14 @@ You are not a formal report generator. You are a helpful QA engineer who knows h
3220
3296
  **Target feeling:** "This is a real person who respects my time and communicates clearly."`;
3221
3297
 
3222
3298
  // src/subagents/templates/team-communicator/email.ts
3223
- var FRONTMATTER7 = {
3299
+ var FRONTMATTER6 = {
3224
3300
  name: "team-communicator",
3225
3301
  description: `Use this agent when you need to communicate with the product team via email about testing activities, results, or questions. Email is the fallback communication method when Slack or Teams is not configured. Examples: <example>Context: A test run has completed with several failures that need team attention. user: 'The regression test suite just finished running and we have 5 critical failures in the checkout flow' assistant: 'I'll use the team-communicator agent to email the product team about these critical test failures and get their input on prioritization.' <commentary>Since there are critical test failures that need team awareness and potentially input on prioritization, use the team-communicator agent to send an email update.</commentary></example> <example>Context: During exploratory testing, unclear behavior is discovered that needs product team clarification. user: 'I found that the user profile page shows different data when accessed from the main menu vs the settings page - not sure if this is intended behavior' assistant: 'Let me use the team-communicator agent to email the product team for clarification on this behavior.' <commentary>Since there's ambiguous behavior that needs product team clarification, use the team-communicator agent to send a question email.</commentary></example> <example>Context: Test plan generation is complete and ready for team review. user: 'The test plan for the new payment integration feature is ready for review' assistant: 'I'll use the team-communicator agent to email the completed test plan to the product team for their review and feedback.' <commentary>Since the test plan is complete and needs team review, use the team-communicator agent to send an email with the test plan details.</commentary></example>`,
3226
3302
  tools: ["Glob", "Grep", "Read", "WebFetch", "TodoWrite", "WebSearch", "BashOutput", "KillBash", "mcp__resend__resend_send_email", "mcp__resend__resend_send_batch_emails", "ListMcpResourcesTool", "ReadMcpResourceTool"],
3227
3303
  model: "haiku",
3228
3304
  color: "yellow"
3229
3305
  };
3230
- var CONTENT7 = `You are a Team Communication Specialist who communicates like a real QA engineer via email. Your emails are concise, scannable, and professional\u2014not lengthy formal reports. You respect your team's time by keeping emails brief with clear action items.
3306
+ var CONTENT6 = `You are a Team Communication Specialist who communicates like a real QA engineer via email. Your emails are concise, scannable, and professional\u2014not lengthy formal reports. You respect your team's time by keeping emails brief with clear action items.
3231
3307
 
3232
3308
  ## Core Philosophy: Concise, Professional Email Communication
3233
3309
 
@@ -3474,7 +3550,7 @@ You are not a formal report generator. You are a helpful QA engineer who knows h
3474
3550
  **Target feeling:** "This is a concise, professional email from someone who respects my time and communicates clearly."`;
3475
3551
 
3476
3552
  // src/subagents/templates/documentation-researcher/notion.ts
3477
- var FRONTMATTER8 = {
3553
+ var FRONTMATTER7 = {
3478
3554
  name: "documentation-researcher",
3479
3555
  description: `Use this agent when you need to explore, understand, or retrieve information from project documentation stored in Notion. This agent systematically researches documentation, builds a knowledge base about the documentation structure, and maintains persistent memory to avoid redundant exploration. Examples: <example>Context: Need to find authentication requirements for test case generation.
3480
3556
  user: "I need to generate test cases for the new OAuth flow"
@@ -3486,7 +3562,7 @@ assistant: "I'll use the documentation-researcher agent to search our Notion doc
3486
3562
  model: "haiku",
3487
3563
  color: "cyan"
3488
3564
  };
3489
- var CONTENT8 = `You are an expert Documentation Researcher specializing in systematic information gathering and knowledge management. Your primary responsibility is to explore, understand, and retrieve information from project documentation stored in Notion via the MCP server.
3565
+ var CONTENT7 = `You are an expert Documentation Researcher specializing in systematic information gathering and knowledge management. Your primary responsibility is to explore, understand, and retrieve information from project documentation stored in Notion via the MCP server.
3490
3566
 
3491
3567
  ## Core Responsibilities
3492
3568
 
@@ -3552,7 +3628,7 @@ var CONTENT8 = `You are an expert Documentation Researcher specializing in syste
3552
3628
  You are meticulous about maintaining your memory file as a living document that grows more valuable with each use. Your goal is to become increasingly efficient at finding information as your knowledge base expands, ultimately serving as an expert guide to the project's documentation landscape.`;
3553
3629
 
3554
3630
  // src/subagents/templates/documentation-researcher/confluence.ts
3555
- var FRONTMATTER9 = {
3631
+ var FRONTMATTER8 = {
3556
3632
  name: "documentation-researcher",
3557
3633
  description: `Use this agent when you need to explore, understand, or retrieve information from project documentation stored in Confluence. This agent systematically researches documentation, builds a knowledge base about the documentation structure, and maintains persistent memory to avoid redundant exploration. Examples: <example>Context: Need to understand feature requirements from product specs.
3558
3634
  user: "I need to create a test plan for the new user profile feature"
@@ -3564,7 +3640,7 @@ assistant: "I'll use the documentation-researcher agent to search our Confluence
3564
3640
  model: "sonnet",
3565
3641
  color: "cyan"
3566
3642
  };
3567
- var CONTENT9 = `You are an expert Documentation Researcher specializing in systematic information gathering and knowledge management. Your primary responsibility is to explore, understand, and retrieve information from project documentation stored in Confluence.
3643
+ var CONTENT8 = `You are an expert Documentation Researcher specializing in systematic information gathering and knowledge management. Your primary responsibility is to explore, understand, and retrieve information from project documentation stored in Confluence.
3568
3644
 
3569
3645
  ## Core Responsibilities
3570
3646
 
@@ -3664,7 +3740,7 @@ Handle these Confluence elements properly:
3664
3740
  You are meticulous about maintaining your memory file as a living document that grows more valuable with each use. Your goal is to become increasingly efficient at finding information as your knowledge base expands, ultimately serving as an expert guide to the project's Confluence documentation landscape.`;
3665
3741
 
3666
3742
  // src/subagents/templates/documentation-researcher/jira.ts
3667
- var FRONTMATTER10 = {
3743
+ var FRONTMATTER9 = {
3668
3744
  name: "documentation-researcher",
3669
3745
  description: `Use this agent when you need to explore, understand, or retrieve information from project documentation stored in Jira issues, epics, and comments. This agent systematically researches Jira content, builds a knowledge base about project structure, and maintains persistent memory to avoid redundant exploration. Examples: <example>Context: Need to find acceptance criteria for test case generation.
3670
3746
  user: "Generate test cases for the checkout flow feature"
@@ -3676,7 +3752,7 @@ assistant: "I'll use the documentation-researcher agent to search Jira comments
3676
3752
  model: "haiku",
3677
3753
  color: "cyan"
3678
3754
  };
3679
- var CONTENT10 = `You are an expert Documentation Researcher specializing in systematic information gathering and knowledge management. Your primary responsibility is to explore, understand, and retrieve information from project documentation stored in Jira issues, epics, stories, and comments.
3755
+ var CONTENT9 = `You are an expert Documentation Researcher specializing in systematic information gathering and knowledge management. Your primary responsibility is to explore, understand, and retrieve information from project documentation stored in Jira issues, epics, stories, and comments.
3680
3756
 
3681
3757
  ## Core Responsibilities
3682
3758
 
@@ -3794,7 +3870,7 @@ Handle these Jira elements properly:
3794
3870
  You are meticulous about maintaining your memory file as a living document that grows more valuable with each use. Your goal is to become increasingly efficient at finding information as your knowledge base expands, ultimately serving as an expert guide to the project's Jira documentation landscape.`;
3795
3871
 
3796
3872
  // src/subagents/templates/issue-tracker/linear.ts
3797
- var FRONTMATTER11 = {
3873
+ var FRONTMATTER10 = {
3798
3874
  name: "issue-tracker",
3799
3875
  description: `Use this agent to track and manage all types of issues including bugs, stories, and tasks in Linear. This agent creates detailed issue reports, manages issue lifecycle through Linear's streamlined workflow, handles story transitions for QA processes, and maintains comprehensive tracking of all project work items. Examples: <example>Context: A test run discovered a critical bug that needs tracking.
3800
3876
  user: "The login flow is broken - users get a 500 error when submitting credentials"
@@ -3806,7 +3882,7 @@ assistant: "Let me use the issue-tracker agent to update the story status to QA
3806
3882
  model: "sonnet",
3807
3883
  color: "red"
3808
3884
  };
3809
- var CONTENT11 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Linear. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved using Linear's efficient tracking system.
3885
+ var CONTENT10 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Linear. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved using Linear's efficient tracking system.
3810
3886
 
3811
3887
  **Core Responsibilities:**
3812
3888
 
@@ -3974,7 +4050,7 @@ Your memory file evolves with usage:
3974
4050
  You are focused on creating bug reports that fit Linear's streamlined workflow while maintaining comprehensive tracking in your memory. Your goal is to make issue management efficient while building knowledge about failure patterns to prevent future bugs.`;
3975
4051
 
3976
4052
  // src/subagents/templates/issue-tracker/jira.ts
3977
- var FRONTMATTER12 = {
4053
+ var FRONTMATTER11 = {
3978
4054
  name: "issue-tracker",
3979
4055
  description: `Use this agent to track and manage all types of issues including bugs, stories, and tasks in Jira. This agent creates detailed issue reports, manages issue lifecycle through status updates, handles story transitions for QA workflows, and maintains comprehensive tracking of all project work items. Examples: <example>Context: Automated tests found multiple failures that need tracking.
3980
4056
  user: "5 tests failed in the checkout flow - payment validation is broken"
@@ -3986,7 +4062,7 @@ assistant: "Let me use the issue-tracker agent to transition PROJ-456 to Done an
3986
4062
  model: "sonnet",
3987
4063
  color: "red"
3988
4064
  };
3989
- var CONTENT12 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Jira. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved.
4065
+ var CONTENT11 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Jira. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved.
3990
4066
 
3991
4067
  **Core Responsibilities:**
3992
4068
 
@@ -4145,7 +4221,7 @@ Your memory file becomes more valuable over time:
4145
4221
  You are meticulous about maintaining your memory file as a critical resource for efficient Jira operations. Your goal is to make issue tracking faster and more accurate while building knowledge about the system's patterns and managing workflows effectively.`;
4146
4222
 
4147
4223
  // src/subagents/templates/issue-tracker/azure-devops.ts
4148
- var FRONTMATTER13 = {
4224
+ var FRONTMATTER12 = {
4149
4225
  name: "issue-tracker",
4150
4226
  description: `Use this agent to track and manage all types of work items including bugs, user stories, and tasks in Azure DevOps. This agent creates detailed work item reports, manages lifecycle through state changes, handles story transitions for QA workflows, and maintains comprehensive tracking of all project work items. Examples: <example>Context: Automated tests found multiple failures that need tracking.
4151
4227
  user: "5 tests failed in the checkout flow - payment validation is broken"
@@ -4157,7 +4233,7 @@ assistant: "Let me use the issue-tracker agent to update work item 456 state to
4157
4233
  model: "sonnet",
4158
4234
  color: "red"
4159
4235
  };
4160
- var CONTENT13 = `You are an expert Issue Tracker specializing in managing all types of work items including bugs, user stories, features, and tasks in Azure DevOps. Your primary responsibility is to track work items discovered during testing, manage state transitions through QA workflows, and ensure all items are properly documented and resolved.
4236
+ var CONTENT12 = `You are an expert Issue Tracker specializing in managing all types of work items including bugs, user stories, features, and tasks in Azure DevOps. Your primary responsibility is to track work items discovered during testing, manage state transitions through QA workflows, and ensure all items are properly documented and resolved.
4161
4237
 
4162
4238
  **Core Responsibilities:**
4163
4239
 
@@ -4372,7 +4448,7 @@ Your memory file becomes more valuable over time:
4372
4448
  You are meticulous about maintaining your memory file as a critical resource for efficient Azure DevOps operations. Your goal is to make issue tracking faster and more accurate while building knowledge about the system's patterns and managing workflows effectively.`;
4373
4449
 
4374
4450
  // src/subagents/templates/issue-tracker/notion.ts
4375
- var FRONTMATTER14 = {
4451
+ var FRONTMATTER13 = {
4376
4452
  name: "issue-tracker",
4377
4453
  description: `Use this agent to track and manage all types of issues including bugs, stories, and tasks in Notion databases. This agent creates detailed issue reports, manages issue lifecycle through status updates, handles story transitions for QA workflows, and maintains comprehensive tracking of all project work items. Examples: <example>Context: Test execution revealed a UI bug that needs documentation.
4378
4454
  user: "The submit button on the checkout page doesn't work on mobile Safari"
@@ -4384,7 +4460,7 @@ assistant: "Let me use the issue-tracker agent to update the story status to 'QA
4384
4460
  model: "haiku",
4385
4461
  color: "red"
4386
4462
  };
4387
- var CONTENT14 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Notion databases. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved.
4463
+ var CONTENT13 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Notion databases. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved.
4388
4464
 
4389
4465
  **Core Responsibilities:**
4390
4466
 
@@ -4531,7 +4607,7 @@ Your memory file grows more valuable over time:
4531
4607
  You are meticulous about maintaining your memory file as a critical resource that makes issue tracking more efficient and effective. Your goal is to not just track issues, but to build institutional knowledge about the system's patterns, manage workflows effectively, and help deliver quality software.`;
4532
4608
 
4533
4609
  // src/subagents/templates/issue-tracker/slack.ts
4534
- var FRONTMATTER15 = {
4610
+ var FRONTMATTER14 = {
4535
4611
  name: "issue-tracker",
4536
4612
  description: `Use this agent to track and manage all types of issues including bugs, stories, and tasks in Slack. This agent creates detailed issue threads, manages issue lifecycle through thread replies and reactions, handles story transitions for QA workflows, and maintains comprehensive tracking of all project work items using Slack channels. Examples: <example>Context: Test failures need to be reported to the team immediately.
4537
4613
  user: "3 critical tests failed in the payment flow - looks like the Stripe integration is broken"
@@ -4543,7 +4619,7 @@ assistant: "Let me use the issue-tracker agent to update the story thread with Q
4543
4619
  model: "sonnet",
4544
4620
  color: "red"
4545
4621
  };
4546
- var CONTENT15 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Slack. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved using Slack threads and channels.
4622
+ var CONTENT14 = `You are an expert Issue Tracker specializing in managing all types of project issues including bugs, stories, and tasks in Slack. Your primary responsibility is to track work items discovered during testing, manage story transitions through QA workflows, and ensure all issues are properly documented and resolved using Slack threads and channels.
4547
4623
 
4548
4624
  **Core Responsibilities:**
4549
4625
 
@@ -4765,7 +4841,7 @@ Maintain organized issue tracking:
4765
4841
  You are focused on creating clear, organized issue threads that leverage Slack's real-time collaboration features while maintaining comprehensive tracking in your memory. Your goal is to make issue management efficient and visible to the entire team while building knowledge about failure patterns to prevent future bugs.`;
4766
4842
 
4767
4843
  // src/subagents/templates/changelog-historian/github.ts
4768
- var FRONTMATTER16 = {
4844
+ var FRONTMATTER15 = {
4769
4845
  name: "changelog-historian",
4770
4846
  description: `Use this agent when you need to understand what code changes went into a build, deployment, or release. This agent retrieves PR and commit information from GitHub to help investigate test failures, regressions, or to understand what changed between releases. Examples: <example>Context: A test started failing after a deployment.
4771
4847
  user: "The checkout flow test is failing in staging. What changed recently?"
@@ -4777,7 +4853,7 @@ assistant: "I'll use the changelog-historian agent to compare the two releases a
4777
4853
  model: "haiku",
4778
4854
  color: "gray"
4779
4855
  };
4780
- var CONTENT16 = `You are an expert Changelog Historian specializing in understanding code changes and their impact. Your primary responsibility is to retrieve and analyze PR and commit information from GitHub to help understand what changed in a codebase.
4856
+ var CONTENT15 = `You are an expert Changelog Historian specializing in understanding code changes and their impact. Your primary responsibility is to retrieve and analyze PR and commit information from GitHub to help understand what changed in a codebase.
4781
4857
 
4782
4858
  ## Core Responsibilities
4783
4859
 
@@ -4894,80 +4970,74 @@ var TEMPLATES = {
4894
4970
  content: CONTENT
4895
4971
  }
4896
4972
  },
4897
- "test-code-generator": {
4898
- playwright: {
4973
+ "test-engineer": {
4974
+ default: {
4899
4975
  frontmatter: FRONTMATTER2,
4900
4976
  content: CONTENT2
4901
4977
  }
4902
4978
  },
4903
- "test-debugger-fixer": {
4904
- playwright: {
4905
- frontmatter: FRONTMATTER3,
4906
- content: CONTENT3
4907
- }
4908
- },
4909
4979
  "team-communicator": {
4910
4980
  local: {
4981
+ frontmatter: FRONTMATTER3,
4982
+ content: CONTENT3
4983
+ },
4984
+ slack: {
4911
4985
  frontmatter: FRONTMATTER4,
4912
4986
  content: CONTENT4
4913
4987
  },
4914
- slack: {
4988
+ teams: {
4915
4989
  frontmatter: FRONTMATTER5,
4916
4990
  content: CONTENT5
4917
4991
  },
4918
- teams: {
4992
+ email: {
4919
4993
  frontmatter: FRONTMATTER6,
4920
4994
  content: CONTENT6
4921
- },
4922
- email: {
4923
- frontmatter: FRONTMATTER7,
4924
- content: CONTENT7
4925
4995
  }
4926
4996
  },
4927
4997
  "documentation-researcher": {
4928
4998
  notion: {
4999
+ frontmatter: FRONTMATTER7,
5000
+ content: CONTENT7
5001
+ },
5002
+ confluence: {
4929
5003
  frontmatter: FRONTMATTER8,
4930
5004
  content: CONTENT8
4931
5005
  },
4932
- confluence: {
5006
+ jira: {
4933
5007
  frontmatter: FRONTMATTER9,
4934
5008
  content: CONTENT9
4935
- },
4936
- jira: {
4937
- frontmatter: FRONTMATTER10,
4938
- content: CONTENT10
4939
5009
  }
4940
5010
  },
4941
5011
  "issue-tracker": {
4942
5012
  linear: {
4943
- frontmatter: FRONTMATTER11,
4944
- content: CONTENT11
5013
+ frontmatter: FRONTMATTER10,
5014
+ content: CONTENT10
4945
5015
  },
4946
5016
  jira: {
4947
- frontmatter: FRONTMATTER12,
4948
- content: CONTENT12
5017
+ frontmatter: FRONTMATTER11,
5018
+ content: CONTENT11
4949
5019
  },
4950
5020
  "jira-server": {
5021
+ frontmatter: FRONTMATTER11,
5022
+ content: CONTENT11
5023
+ },
5024
+ "azure-devops": {
4951
5025
  frontmatter: FRONTMATTER12,
4952
5026
  content: CONTENT12
4953
5027
  },
4954
- "azure-devops": {
5028
+ notion: {
4955
5029
  frontmatter: FRONTMATTER13,
4956
5030
  content: CONTENT13
4957
5031
  },
4958
- notion: {
5032
+ slack: {
4959
5033
  frontmatter: FRONTMATTER14,
4960
5034
  content: CONTENT14
4961
- },
4962
- slack: {
4963
- frontmatter: FRONTMATTER15,
4964
- content: CONTENT15
4965
5035
  }
4966
5036
  },
4967
5037
  "changelog-historian": {
4968
5038
  github: {
4969
- frontmatter: FRONTMATTER16,
4970
- content: CONTENT16
5039
+ frontmatter: FRONTMATTER15,
5040
+ content: CONTENT15
4971
5041
  }
4972
5042
  }
4973
5043
  };
@@ -5074,6 +5144,13 @@ var INTEGRATIONS = {
5074
5144
  // No requiredMCP - uses built-in Claude Code tools (AskUserQuestion, text output)
5075
5145
  isLocal: true,
5076
5146
  integrationType: "local"
5147
+ },
5148
+ default: {
5149
+ id: "default",
5150
+ name: "Default",
5151
+ provider: "default",
5152
+ isLocal: true,
5153
+ integrationType: "local"
5077
5154
  }
5078
5155
  };
5079
5156
  var SUBAGENTS = {
@@ -5133,28 +5210,15 @@ var SUBAGENTS = {
5133
5210
  color: "cyan",
5134
5211
  version: "1.0.0"
5135
5212
  },
5136
- "test-code-generator": {
5137
- role: "test-code-generator",
5138
- name: "Test Code Generator",
5139
- description: "Generate automated test scripts and page objects",
5213
+ "test-engineer": {
5214
+ role: "test-engineer",
5215
+ name: "Test Engineer",
5216
+ description: "Create, update, debug, and fix automated tests",
5140
5217
  icon: "code",
5141
- integrations: [INTEGRATIONS.playwright],
5218
+ integrations: [INTEGRATIONS.default],
5142
5219
  model: "sonnet",
5143
5220
  color: "purple",
5144
5221
  isRequired: true,
5145
- // Required for automated test generation
5146
- version: "1.0.0"
5147
- },
5148
- "test-debugger-fixer": {
5149
- role: "test-debugger-fixer",
5150
- name: "Test Debugger & Fixer",
5151
- description: "Debug and fix failing automated tests automatically",
5152
- icon: "wrench",
5153
- integrations: [INTEGRATIONS.playwright],
5154
- model: "sonnet",
5155
- color: "yellow",
5156
- isRequired: true,
5157
- // Required for automated test execution and fixing
5158
5222
  version: "1.0.0"
5159
5223
  },
5160
5224
  "changelog-historian": {
@@ -5226,8 +5290,7 @@ function buildSubagentsConfig(subagents) {
5226
5290
  var TOOL_STRINGS = {
5227
5291
  "claude-code": {
5228
5292
  INVOKE_BROWSER_AUTOMATION: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "browser-automation"` to delegate test execution.\nThe browser-automation agent will handle all browser automation. DO NOT execute Playwright MCP tools directly.\nInclude the test case path and any specific instructions in the prompt.',
5229
- INVOKE_TEST_DEBUGGER_FIXER: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "test-debugger-fixer"` to delegate debugging.\nThe agent will analyze failures and fix test code. Include error details and test path in the prompt.',
5230
- INVOKE_TEST_CODE_GENERATOR: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "test-code-generator"` to delegate code generation.\nThe agent will create automated tests and page objects. Include test case files in the prompt.',
5293
+ INVOKE_TEST_ENGINEER: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "test-engineer"` to delegate test automation work.\nThe agent handles creating, updating, and fixing automated tests. Include test case files and context in the prompt.',
5231
5294
  INVOKE_TEAM_COMMUNICATOR: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "team-communicator"` to send team notifications.\nThe agent will post to Slack/Teams/Email. Include message content and context in the prompt.',
5232
5295
  INLINE_TEAM_COMMUNICATOR: "**TEAM COMMUNICATION**: Read `.claude/agents/team-communicator.md` and follow its instructions to communicate with the team.\nUse the tools and guidelines specified in that file within this context. Do NOT spawn a sub-agent.",
5233
5296
  INVOKE_ISSUE_TRACKER: '**DELEGATE TO SUBAGENT**: Use the Task tool with `subagent_type: "issue-tracker"` to create/update issues.\nThe agent will interact with Jira. Include bug details and classification in the prompt.',
@@ -5236,8 +5299,7 @@ var TOOL_STRINGS = {
5236
5299
  },
5237
5300
  "cursor": {
5238
5301
  INVOKE_BROWSER_AUTOMATION: 'Run the browser-automation agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/browser-automation.md)" --output-format text\n```',
5239
- INVOKE_TEST_DEBUGGER_FIXER: 'Run the test-debugger-fixer agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/test-debugger-fixer.md)" --output-format text\n```',
5240
- INVOKE_TEST_CODE_GENERATOR: 'Run the test-code-generator agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/test-code-generator.md)" --output-format text\n```',
5302
+ INVOKE_TEST_ENGINEER: 'Run the test-engineer agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/test-engineer.md)" --output-format text\n```',
5241
5303
  INVOKE_TEAM_COMMUNICATOR: 'Run the team-communicator agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/team-communicator.md)" --output-format text\n```',
5242
5304
  INLINE_TEAM_COMMUNICATOR: "**TEAM COMMUNICATION**: Read `.cursor/agents/team-communicator.md` and follow its instructions to communicate with the team.\nUse the tools and guidelines specified in that file within this context.",
5243
5305
  INVOKE_ISSUE_TRACKER: 'Run the issue-tracker agent:\n```bash\ncursor-agent -p "$(cat .cursor/agents/issue-tracker.md)" --output-format text\n```',
@@ -5246,8 +5308,7 @@ var TOOL_STRINGS = {
5246
5308
  },
5247
5309
  "codex": {
5248
5310
  INVOKE_BROWSER_AUTOMATION: 'Run the browser-automation agent:\n```bash\ncodex -p "$(cat .codex/agents/browser-automation.md)"\n```',
5249
- INVOKE_TEST_DEBUGGER_FIXER: 'Run the test-debugger-fixer agent:\n```bash\ncodex -p "$(cat .codex/agents/test-debugger-fixer.md)"\n```',
5250
- INVOKE_TEST_CODE_GENERATOR: 'Run the test-code-generator agent:\n```bash\ncodex -p "$(cat .codex/agents/test-code-generator.md)"\n```',
5311
+ INVOKE_TEST_ENGINEER: 'Run the test-engineer agent:\n```bash\ncodex -p "$(cat .codex/agents/test-engineer.md)"\n```',
5251
5312
  INVOKE_TEAM_COMMUNICATOR: 'Run the team-communicator agent:\n```bash\ncodex -p "$(cat .codex/agents/team-communicator.md)"\n```',
5252
5313
  INLINE_TEAM_COMMUNICATOR: "**TEAM COMMUNICATION**: Read `.codex/agents/team-communicator.md` and follow its instructions to communicate with the team.\nUse the tools and guidelines specified in that file within this context.",
5253
5314
  INVOKE_ISSUE_TRACKER: 'Run the issue-tracker agent:\n```bash\ncodex -p "$(cat .codex/agents/issue-tracker.md)"\n```',
@@ -5270,8 +5331,7 @@ function replaceInvocationPlaceholders(content, toolId, isLocal = false) {
5270
5331
  let result = content;
5271
5332
  const keys = [
5272
5333
  "INVOKE_BROWSER_AUTOMATION",
5273
- "INVOKE_TEST_DEBUGGER_FIXER",
5274
- "INVOKE_TEST_CODE_GENERATOR",
5334
+ "INVOKE_TEST_ENGINEER",
5275
5335
  "INVOKE_TEAM_COMMUNICATOR",
5276
5336
  "INVOKE_ISSUE_TRACKER",
5277
5337
  "INVOKE_DOCUMENTATION_RESEARCHER",
@@ -5963,9 +6023,9 @@ var fixTestIssuesStep = {
5963
6023
  category: "execution",
5964
6024
  content: `## Fix Test Issues Automatically
5965
6025
 
5966
- For each test classified as **[TEST ISSUE]**, use the test-debugger-fixer agent to automatically fix the test:
6026
+ For each test classified as **[TEST ISSUE]**, use the test-engineer agent to automatically fix the test:
5967
6027
 
5968
- {{INVOKE_TEST_DEBUGGER_FIXER}}
6028
+ {{INVOKE_TEST_ENGINEER}}
5969
6029
 
5970
6030
  For each failed test classified as a test issue (not a product bug), provide:
5971
6031
  - Test run timestamp: [from manifest.timestamp]
@@ -5988,7 +6048,7 @@ The agent will:
5988
6048
  7. Repeat up to 3 times if needed (exec-1, exec-2, exec-3)
5989
6049
  8. Report success or escalate as likely product bug
5990
6050
 
5991
- **After test-debugger-fixer completes:**
6051
+ **After test-engineer completes:**
5992
6052
  - If fix succeeded: Mark test as fixed, add to "Tests Fixed" list
5993
6053
  - If still failing after 3 attempts: Reclassify as potential product bug
5994
6054
 
@@ -5996,7 +6056,7 @@ The agent will:
5996
6056
  - Maintain list of tests fixed automatically
5997
6057
  - Include fix description (e.g., "Applied selector fix pattern from CLAUDE.md")
5998
6058
  - Note verification status (test now passes)`,
5999
- invokesSubagents: ["test-debugger-fixer"],
6059
+ invokesSubagents: ["test-engineer"],
6000
6060
  tags: ["execution", "fixing", "automation"]
6001
6061
  };
6002
6062
 
@@ -6359,7 +6419,7 @@ var automateTestCasesStep = {
6359
6419
 
6360
6420
  For each test case marked \`automated: true\`:
6361
6421
 
6362
- {{INVOKE_TEST_CODE_GENERATOR}} with the following context:
6422
+ {{INVOKE_TEST_ENGINEER}} with the following context:
6363
6423
 
6364
6424
  "Automate test cases for the focus area: $ARGUMENTS
6365
6425
 
@@ -6392,7 +6452,7 @@ After automation, update the manual test case frontmatter:
6392
6452
  automated: true
6393
6453
  automated_test: tests/specs/feature/test-name.spec.ts
6394
6454
  \`\`\``,
6395
- invokesSubagents: ["test-code-generator"],
6455
+ invokesSubagents: ["test-engineer"],
6396
6456
  tags: ["generation", "automation"]
6397
6457
  };
6398
6458
 
@@ -6804,6 +6864,28 @@ After test generation completes, verify all artifacts meet quality standards:
6804
6864
  tags: ["maintenance", "validation", "test-artifacts"]
6805
6865
  };
6806
6866
 
6867
+ // src/tasks/steps/maintenance/sync-automation-from-feedback.ts
6868
+ var syncAutomationFromFeedbackStep = {
6869
+ id: "sync-automation-from-feedback",
6870
+ title: "Sync Automation Code with Test Case Changes",
6871
+ category: "maintenance",
6872
+ requiresSubagent: "test-engineer",
6873
+ invokesSubagents: ["test-engineer"],
6874
+ content: `## Sync Automation Code with Test Case Changes
6875
+
6876
+ After processing feedback that modified test case files, ensure automation code stays in sync.
6877
+
6878
+ **When to apply:** Only if you modified test case markdown files during this task.
6879
+
6880
+ For each modified test case:
6881
+ 1. Read frontmatter \u2014 check for \`automated_test\` field
6882
+ 2. If exists \u2192 {{INVOKE_TEST_ENGINEER}} to update the spec to match the updated markdown
6883
+ 3. If not \u2192 skip (no automation to sync)
6884
+
6885
+ **CRITICAL:** Both specification (markdown) AND implementation (automation code) MUST stay in sync.`,
6886
+ tags: ["maintenance", "automation", "feedback"]
6887
+ };
6888
+
6807
6889
  // src/tasks/steps/index.ts
6808
6890
  var STEP_LIBRARY = {
6809
6891
  // Setup
@@ -6840,7 +6922,8 @@ var STEP_LIBRARY = {
6840
6922
  "generate-final-report": generateFinalReportStep,
6841
6923
  "update-exploration-artifacts": updateExplorationArtifactsStep,
6842
6924
  "cleanup-temp-files": cleanupTempFilesStep,
6843
- "validate-test-artifacts": validateTestArtifactsStep
6925
+ "validate-test-artifacts": validateTestArtifactsStep,
6926
+ "sync-automation-from-feedback": syncAutomationFromFeedbackStep
6844
6927
  };
6845
6928
  function getStep(id) {
6846
6929
  const step = STEP_LIBRARY[id];