qaa-agent 1.9.5 → 1.9.6

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.
@@ -227,6 +227,7 @@ App URL: {url or "auto-detect"}
227
227
  5. Invoke executor agent to generate test files:
228
228
 
229
229
  Task(
230
+ subagent_type="qaa-executor",
230
231
  prompt="
231
232
  <critical_directive priority="MANDATORY">
232
233
  You are executing as a QAA pipeline agent. Your FIRST action MUST be to read
@@ -280,6 +281,7 @@ Task(
280
281
  6. If E2E test files were generated AND `--skip-run` was NOT passed, invoke E2E runner:
281
282
 
282
283
  Task(
284
+ subagent_type="qaa-e2e-runner",
283
285
  prompt="
284
286
  <critical_directive priority="MANDATORY">
285
287
  You are executing as a QAA pipeline agent. Your FIRST action MUST be to read
@@ -366,6 +368,7 @@ Generate tests directly from a running application URL — no ticket, no spec, n
366
368
  6. After approval, invoke the executor to generate specs + POMs + fixtures:
367
369
 
368
370
  Task(
371
+ subagent_type="qaa-executor",
369
372
  prompt="
370
373
  <critical_directive priority="MANDATORY">
371
374
  You are executing as a QAA pipeline agent. Your FIRST action MUST be to read
@@ -485,6 +488,7 @@ For the complete step-by-step process, see `@commands/qa-create-test-ado.md`.
485
488
  2. Invoke validator agent in audit mode:
486
489
 
487
490
  Task(
491
+ subagent_type="qaa-validator",
488
492
  prompt="
489
493
  <critical_directive priority="MANDATORY">
490
494
  You are executing as a QAA pipeline agent. Your FIRST action MUST be to read
@@ -528,6 +532,7 @@ Task(
528
532
  4. Invoke executor agent to apply approved improvements:
529
533
 
530
534
  Task(
535
+ subagent_type="qaa-executor",
531
536
  prompt="
532
537
  <critical_directive priority="MANDATORY">
533
538
  You are executing as a QAA pipeline agent. Your FIRST action MUST be to read
@@ -587,6 +592,7 @@ Generate only Page Object Model files — no test specs.
587
592
  2. Invoke executor agent in POM-only mode:
588
593
 
589
594
  Task(
595
+ subagent_type="qaa-executor",
590
596
  prompt="
591
597
  <critical_directive priority="MANDATORY">
592
598
  You are executing as a QAA pipeline agent. Your FIRST action MUST be to read
@@ -396,9 +396,9 @@ The validator runs 4 layers per file:
396
396
  3. **Dependencies** — all imports resolve
397
397
  4. **Logic** — concrete assertions, Tier 1-2 locators, no assertions in POMs
398
398
 
399
- **Optional Layer 5 — labeled DOM-probe locator cross-check (if Playwright MCP connected + app URL available):**
399
+ **Conditional Layer 5 — labeled DOM-probe locator cross-check (runs ONLY if Playwright MCP connected + app URL available):**
400
400
 
401
- This layer is a STATIC locator cross-check via DOM probe. It is NOT test execution and never reports that tests passed:
401
+ This layer is a STATIC locator cross-check via DOM probe. It is NOT test execution, MUST NEVER be substituted for a real test run, and never reports that tests passed:
402
402
 
403
403
  ```
404
404
  [DOM_PROBE — NOT_TEST_EXECUTION]
@@ -429,6 +429,7 @@ Max 5 fix loop iterations. Produces VALIDATION_REPORT.md.
429
429
  If `--run` flag is also present and E2E test files exist, invoke E2E runner after static validation:
430
430
 
431
431
  Task(
432
+ subagent_type="qaa-e2e-runner",
432
433
  prompt="
433
434
  <critical_directive priority="MANDATORY">
434
435
  You are executing as a QAA pipeline agent. Your FIRST action MUST be to read
@@ -490,6 +491,7 @@ Fix mode runs in two phases: **analyze first, then fix after user confirmation.*
490
491
  2. Invoke bug-detective agent in **classify-only mode** (no auto-fixes):
491
492
 
492
493
  Task(
494
+ subagent_type="qaa-bug-detective",
493
495
  prompt="
494
496
  <critical_directive priority="MANDATORY">
495
497
  You are executing as a QAA pipeline agent. Your FIRST action MUST be to read
@@ -536,6 +538,8 @@ Task(
536
538
  "
537
539
  )
538
540
 
541
+ **HARD STOP on broken runner (#48):** If the bug-detective returns `runner_executed: false` / `runner_status: BROKEN` (the suite never executed — ENVIRONMENT ISSUE), do NOT present a FIX PLAN and do NOT proceed to Phase 2. Surface the ENVIRONMENT ISSUE with the runner's startup error and stop. A DOM probe is NEVER a substitute for a real run; a report claiming classifications with `runner_executed: false` is INVALID.
542
+
539
543
  3. Present the analysis to the user as a **fix plan**:
540
544
 
541
545
  ```
@@ -564,7 +568,7 @@ Proceed with auto-fixes? [yes / modify / cancel]
564
568
  ================
565
569
  ```
566
570
 
567
- 4. **Wait for user confirmation.** Do NOT proceed until the user approves. This is a refinement loop — repeat until the user is satisfied:
571
+ 4. **HARD STOP Phase 1 → Phase 2 gate.** Do NOT enter Phase 2 (execute fixes) until the user EXPLICITLY approves the FIX PLAN. No approval = no fixes — this gate is mandatory and cannot be skipped, assumed, or auto-satisfied by silence. This is a refinement loop — repeat until the user is satisfied:
568
572
 
569
573
  - **"yes"** / **"proceed"** / **"dale"** → continue to Phase 2
570
574
  - **"cancel"** / **"no"** → stop, deliver only the FAILURE_CLASSIFICATION_REPORT.md (same as --classify)
@@ -582,9 +586,12 @@ Proceed with auto-fixes? [yes / modify / cancel]
582
586
 
583
587
  #### Phase 2: Execute Fixes (only after user confirmation)
584
588
 
589
+ **Do NOT reach this phase without an explicit "yes" / "proceed" / "dale" from the Phase 1 → Phase 2 gate above.** If you have not received explicit approval, STOP — you are still in Phase 1.
590
+
585
591
  5. Invoke bug-detective agent in **fix mode** with the confirmed plan:
586
592
 
587
593
  Task(
594
+ subagent_type="qaa-bug-detective",
588
595
  prompt="
589
596
  <critical_directive priority="MANDATORY">
590
597
  You are executing as a QAA pipeline agent. Your FIRST action MUST be to read
@@ -2,6 +2,40 @@
2
2
 
3
3
  Deep-scan a codebase for QA-relevant information, produce a complete analysis, and generate test inventory. Runs codebase mapping (4 parallel agents) followed by full repository analysis. One command to fully understand a codebase before writing tests.
4
4
 
5
+ ## ⚠ MANDATORY: How to Execute This Command
6
+
7
+ Execute these steps IN ORDER. Every step is mandatory. Do NOT improvise,
8
+ reorder, skip, or invent steps. This command is flag-driven — there is no intent
9
+ detector; read the flags from `$ARGUMENTS` literally.
10
+
11
+ 1. Read `CLAUDE.md` (QA standards) before anything else.
12
+ 2. Create the output directory: `mkdir -p .qa-output/codebase`.
13
+ 3. STAGE 1 — Codebase Mapping (see "## Instructions" Step 3):
14
+ - If neither `--skip-map` nor `--focus` was passed: spawn ALL 4
15
+ codebase-mapper agents IN PARALLEL (testability, risk, patterns,
16
+ existing-tests), each via Task() with its `<critical_directive>` block.
17
+ - If `--focus <area>` was passed: spawn ONLY that one agent, then STOP
18
+ (skip Stage 2 entirely).
19
+ - If `--skip-map` was passed: skip Stage 1 and go straight to Stage 2.
20
+ 4. Print the summary of documents produced by Stage 1.
21
+ 5. STAGE 2 — Repository Analysis: initialize pipeline context, then invoke the
22
+ scanner agent, then the analyzer agent — IN THAT ORDER, each via Task() with
23
+ its `<critical_directive>` block. Do NOT start the analyzer before the
24
+ scanner has produced SCAN_MANIFEST.md.
25
+ 6. Print the final summary of all documents produced across both stages.
26
+
27
+ ### DO NOT
28
+ - Skip Stage 1 unless `--skip-map` was explicitly passed
29
+ - Run Stage 2 when `--focus` was passed (focus mode stops after Stage 1)
30
+ - Start the analyzer before the scanner completes
31
+ - Run any git operation or generate any test files — this command only maps and
32
+ analyzes
33
+ - Spawn the map/scan/analyze work inline instead of through the sub-agents
34
+ - Invent steps not in this command, or reorder the ones that are
35
+
36
+ If you find yourself improvising, reordering the stages, or generating tests —
37
+ STOP and restart from step 1.
38
+
5
39
  ## Usage
6
40
 
7
41
  ```
@@ -79,7 +113,7 @@ Agent(
79
113
  trusted.
80
114
  </critical_directive>
81
115
 
82
- subagent_type="general-purpose",
116
+ subagent_type="qaa-codebase-mapper",
83
117
  execution_context="~/.claude/qaa/agents/qaa-codebase-mapper.md"
84
118
  )
85
119
 
@@ -109,7 +143,7 @@ Agent(
109
143
  trusted.
110
144
  </critical_directive>
111
145
 
112
- subagent_type="general-purpose",
146
+ subagent_type="qaa-codebase-mapper",
113
147
  execution_context="~/.claude/qaa/agents/qaa-codebase-mapper.md"
114
148
  )
115
149
 
@@ -139,7 +173,7 @@ Agent(
139
173
  trusted.
140
174
  </critical_directive>
141
175
 
142
- subagent_type="general-purpose",
176
+ subagent_type="qaa-codebase-mapper",
143
177
  execution_context="~/.claude/qaa/agents/qaa-codebase-mapper.md"
144
178
  )
145
179
 
@@ -169,7 +203,7 @@ Agent(
169
203
  trusted.
170
204
  </critical_directive>
171
205
 
172
- subagent_type="general-purpose",
206
+ subagent_type="qaa-codebase-mapper",
173
207
  execution_context="~/.claude/qaa/agents/qaa-codebase-mapper.md"
174
208
  )
175
209
  ```
@@ -190,6 +224,7 @@ node bin/qaa-tools.cjs init qa-start 2>/dev/null || true
190
224
  Invoke scanner agent:
191
225
 
192
226
  Task(
227
+ subagent_type="qaa-scanner",
193
228
  prompt="
194
229
  <critical_directive priority="MANDATORY">
195
230
  You are executing as a QAA pipeline agent. Your FIRST action MUST be to read
@@ -230,6 +265,7 @@ Task(
230
265
  Invoke analyzer agent:
231
266
 
232
267
  Task(
268
+ subagent_type="qaa-analyzer",
233
269
  prompt="
234
270
  <critical_directive priority="MANDATORY">
235
271
  You are executing as a QAA pipeline agent. Your FIRST action MUST be to read
@@ -2,6 +2,36 @@
2
2
 
3
3
  Research the testing ecosystem for the current project. Investigates framework capabilities, best practices, selector syntax, and testing patterns using Context7 MCP and official documentation. Produces research files consumed by all downstream QA agents (analyzer, planner, executor, validator).
4
4
 
5
+ ## ⚠ MANDATORY: How to Execute This Command
6
+
7
+ Execute these steps IN ORDER. Every step is mandatory. Do NOT improvise,
8
+ reorder, skip, or invent steps. This command is flag-driven — there is no intent
9
+ detector; parse the flags from `$ARGUMENTS` literally.
10
+
11
+ 1. STEP 1 — Initialize (see "## Instructions"): parse `$ARGUMENTS` for `--focus`
12
+ and `--dev-repo`, resolve MODE (default `stack-testing`) and DEV_REPO
13
+ (default: current directory), create `.qa-output/research/`, and print the
14
+ `=== QA Research ===` banner.
15
+ 2. STEP 2 — Read existing context if present: `.qa-output/SCAN_MANIFEST.md`,
16
+ `CLAUDE.md`, `~/.claude/qaa/MY_PREFERENCES.md`.
17
+ 3. STEP 3 — Spawn the project-researcher via Task() with its `<critical_directive>`
18
+ block, passing the resolved MODE and DEV_REPO. Do NOT do the research inline.
19
+ 4. STEP 4 — After the researcher returns, print the `=== Research Complete ===`
20
+ summary.
21
+ 5. Run the "## MANDATORY verification" checklist at the bottom of this file
22
+ before returning control.
23
+
24
+ ### DO NOT
25
+ - Skip the `=== QA Research ===` banner
26
+ - Do the research yourself inline instead of spawning the project-researcher
27
+ - Invent a mode not in the `--focus` list, or reorder the steps
28
+ - Skip the bottom verification checklist
29
+ - Assume dev-repo path or mode from a previous command invocation — each
30
+ /qa-research call is self-contained
31
+
32
+ If you find yourself improvising, doing the research inline, or skipping the
33
+ verification checklist — STOP and restart from step 1.
34
+
5
35
  ## Usage
6
36
 
7
37
  ```
@@ -95,6 +125,7 @@ Read these files if they exist — they provide context to the researcher:
95
125
  ### Step 3: Spawn Researcher Agent
96
126
 
97
127
  Task(
128
+ subagent_type="qaa-project-researcher",
98
129
  prompt="
99
130
  <critical_directive priority="MANDATORY">
100
131
  You are executing as a QAA pipeline agent. Your FIRST action MUST be to read
@@ -2,6 +2,41 @@
2
2
 
3
3
  Generate a per-ticket QA execution summary and append it to the Azure DevOps work item's `Custom.QATestCasesReport` field. For each test case linked to the work item, pull the execution status from ADO Test Runs — or prompt the user when ADO has no run result — then render a bulleted "Tested Scenarios" list (with a separate "Failures" section when anything failed).
4
4
 
5
+ ## ⚠ MANDATORY: How to Execute This Command
6
+
7
+ Execute these steps IN ORDER. Every step is mandatory. Do NOT improvise,
8
+ reorder, skip, or invent steps. This command reads Azure DevOps and writes ONLY
9
+ the `Custom.QATestCasesReport` field; it spawns no sub-agents and creates no
10
+ test cases.
11
+
12
+ 1. PHASE 1 — Resolve the work item: if `$ARGUMENTS` has no work item ID, ask the
13
+ user before proceeding. Fetch it with `wit_get_work_item` (relations) plus
14
+ its comments.
15
+ 2. PHASE 2 — Resolve the test-case list. ADO is authoritative: build the list
16
+ from the *Tested By* links; a local `test-cases.md` is only a hint. If no TCs
17
+ are linked, print "nothing to report" and STOP.
18
+ 3. PHASE 3 — Resolve each TC's status (Passed/Failed/Blocked): try the ADO Test
19
+ Points REST endpoint first; for any TC that doesn't resolve, ask the user. For
20
+ Failed TCs, capture a reason (run data → comments → ask the user).
21
+ 4. PHASE 4 — Synthesize a readable one-line scenario description per TC (not the
22
+ raw TC title).
23
+ 5. PHASE 5 — Build BOTH the markdown (for chat) and HTML (for the field) reports.
24
+ Include the Failures section only if something failed.
25
+ 6. PHASE 6 — APPEND the HTML report to `Custom.QATestCasesReport`: re-read the
26
+ current value and preserve it (existing + `<br><br>` + new). Update ONLY that
27
+ field — never overwrite others.
28
+ 7. PHASE 7 — Print the markdown report + the append confirmation to the user.
29
+
30
+ ### DO NOT
31
+ - OVERWRITE `Custom.QATestCasesReport` — always append, preserving prior content
32
+ - Write to any field other than `Custom.QATestCasesReport`
33
+ - Create test cases, change TC state, or create Test Runs (this command is read-mostly)
34
+ - Copy raw TC titles as scenario descriptions when they are terse
35
+ - Invent steps not in this command, or reorder the phases
36
+
37
+ If you find yourself overwriting the field, touching other fields, or creating or
38
+ modifying test cases — STOP and restart from step 1.
39
+
5
40
  ## Usage
6
41
 
7
42
  ```
@@ -2,6 +2,37 @@
2
2
 
3
3
  Scan frontend source code, audit missing data-testid attributes, and inject them following the naming convention in CLAUDE.md. Creates a separate branch for the changes.
4
4
 
5
+ ## ⚠ MANDATORY: How to Execute This Command
6
+
7
+ Execute these steps IN ORDER. Every step is mandatory. Do NOT improvise,
8
+ reorder, skip, or invent steps.
9
+
10
+ 1. Read `CLAUDE.md` — the data-testid Convention section — before anything else.
11
+ 2. Execute `workflows/qa-testid.md` end-to-end, in order, without skipping steps.
12
+ 3. Preserve ALL workflow gates. In particular, do NOT bypass:
13
+ - **Framework detection** (workflow Step 2, `detect_frontend`): if no frontend
14
+ directory, no framework, or no component files are found, STOP with the
15
+ workflow's error — do NOT proceed to injection.
16
+ - **Audit checkpoint / user approval** (workflow Step 4, CHECKPOINT phase):
17
+ the testid-injector MUST present TESTID_AUDIT_REPORT.md and wait for the
18
+ user to approve proposed values BEFORE injecting. Do NOT inject without it.
19
+ - **Branch creation** (workflow Step 4 INJECT phase / Step 5,
20
+ `create_branch_and_commit`): injection happens ONLY on the separate branch
21
+ `qa/testid-inject-{YYYY-MM-DD}` — never on the working branch.
22
+ 4. Spawn the scanner and testid-injector via Task() with their
23
+ `<critical_directive>` blocks, as the workflow specifies — do NOT do the
24
+ scan/audit/injection inline.
25
+
26
+ ### DO NOT
27
+ - Inject any data-testid before the user approves the audit report
28
+ - Modify source files on the working branch (injection is branch-isolated)
29
+ - Change application logic — only add data-testid attributes
30
+ - Skip framework detection or proceed when it reports no frontend
31
+ - Invent steps not in the workflow, or reorder them
32
+
33
+ If you find yourself injecting before approval, working off-branch, or skipping
34
+ the framework-detection gate — STOP and restart from step 1.
35
+
5
36
  ## Usage
6
37
 
7
38
  /qa-testid [<source-directory>]
package/package.json CHANGED
@@ -1,41 +1,41 @@
1
- {
2
- "name": "qaa-agent",
3
- "version": "1.9.5",
4
- "description": "QA Automation Agent for Claude Code — multi-agent pipeline that analyzes repos, generates tests, validates, and creates PRs",
5
- "bin": {
6
- "qaa-agent": "./bin/install.cjs"
7
- },
8
- "keywords": [
9
- "qa",
10
- "automation",
11
- "testing",
12
- "claude-code",
13
- "playwright",
14
- "jest",
15
- "pytest",
16
- "ai-agent"
17
- ],
18
- "author": "Backhaus7997",
19
- "license": "MIT",
20
- "dependencies": {
21
- "@playwright/mcp": "latest",
22
- "@upstash/context7-mcp": "latest"
23
- },
24
- "files": [
25
- "bin/",
26
- "agents/",
27
- "workflows/",
28
- "templates/",
29
- "docs/COMMANDS.md",
30
- "docs/DEMO.md",
31
- "docs/TESTING.md",
32
- "commands/",
33
- "skills/",
34
- "frameworks/",
35
- "settings.json",
36
- ".mcp.json",
37
- "CLAUDE.md",
38
- "CHANGELOG.md",
39
- "VERSION"
40
- ]
41
- }
1
+ {
2
+ "name": "qaa-agent",
3
+ "version": "1.9.6",
4
+ "description": "QA Automation Agent for Claude Code — multi-agent pipeline that analyzes repos, generates tests, validates, and creates PRs",
5
+ "bin": {
6
+ "qaa-agent": "./bin/install.cjs"
7
+ },
8
+ "keywords": [
9
+ "qa",
10
+ "automation",
11
+ "testing",
12
+ "claude-code",
13
+ "playwright",
14
+ "jest",
15
+ "pytest",
16
+ "ai-agent"
17
+ ],
18
+ "author": "Backhaus7997",
19
+ "license": "MIT",
20
+ "dependencies": {
21
+ "@playwright/mcp": "latest",
22
+ "@upstash/context7-mcp": "latest"
23
+ },
24
+ "files": [
25
+ "bin/",
26
+ "agents/",
27
+ "workflows/",
28
+ "templates/",
29
+ "docs/COMMANDS.md",
30
+ "docs/DEMO.md",
31
+ "docs/TESTING.md",
32
+ "commands/",
33
+ "skills/",
34
+ "frameworks/",
35
+ "settings.json",
36
+ ".mcp.json",
37
+ "CLAUDE.md",
38
+ "CHANGELOG.md",
39
+ "VERSION"
40
+ ]
41
+ }