qa-flowkit 0.4.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/.qa-ai/adapters/aider/.aider/README.md +25 -0
  2. package/.qa-ai/adapters/aider/.aider.conf.yml +6 -0
  3. package/.qa-ai/adapters/claude/agents/qa-workflow-orchestrator.md +18 -0
  4. package/.qa-ai/adapters/claude/commands/qa-add-tests.md +42 -0
  5. package/.qa-ai/adapters/claude/commands/qa-automation-plan.md +43 -0
  6. package/.qa-ai/adapters/claude/commands/qa-clean.md +42 -0
  7. package/.qa-ai/adapters/claude/commands/qa-config.md +51 -0
  8. package/.qa-ai/adapters/claude/commands/qa-coverage.md +46 -0
  9. package/.qa-ai/adapters/claude/commands/qa-doctor.md +11 -0
  10. package/.qa-ai/adapters/claude/commands/qa-full-flow.md +59 -0
  11. package/.qa-ai/adapters/claude/commands/qa-gate.md +36 -0
  12. package/.qa-ai/adapters/claude/commands/qa-help.md +30 -0
  13. package/.qa-ai/adapters/claude/commands/qa-init.md +70 -0
  14. package/.qa-ai/adapters/claude/commands/qa-status.md +56 -0
  15. package/.qa-ai/adapters/claude/commands/qa-update-tests.md +47 -0
  16. package/.qa-ai/adapters/claude/commands/qa-validate-features.md +36 -0
  17. package/.qa-ai/adapters/cline/.cline/README.md +25 -0
  18. package/.qa-ai/adapters/cline/.clinerules +9 -0
  19. package/.qa-ai/adapters/codex/README.md +44 -0
  20. package/.qa-ai/adapters/codex/prompts/implement-project.md +15 -0
  21. package/.qa-ai/adapters/continue/README.md +26 -0
  22. package/.qa-ai/adapters/continue/checks/qa-feature-conventions.md +15 -0
  23. package/.qa-ai/adapters/gemini/GEMINI.md +40 -0
  24. package/.qa-ai/adapters/generic/AGENTS.md +100 -0
  25. package/.qa-ai/adapters/goose/recipes/qa-flowkit.yaml +20 -0
  26. package/.qa-ai/adapters/opencode/README.md +57 -0
  27. package/.qa-ai/adapters/opencode/agents/qa-workflow.md +18 -0
  28. package/.qa-ai/adapters/opencode/commands/qa-add-tests.md +42 -0
  29. package/.qa-ai/adapters/opencode/commands/qa-automation-plan.md +43 -0
  30. package/.qa-ai/adapters/opencode/commands/qa-clean.md +42 -0
  31. package/.qa-ai/adapters/opencode/commands/qa-config.md +51 -0
  32. package/.qa-ai/adapters/opencode/commands/qa-coverage.md +46 -0
  33. package/.qa-ai/adapters/opencode/commands/qa-doctor.md +13 -0
  34. package/.qa-ai/adapters/opencode/commands/qa-full-flow.md +59 -0
  35. package/.qa-ai/adapters/opencode/commands/qa-gate.md +36 -0
  36. package/.qa-ai/adapters/opencode/commands/qa-help.md +30 -0
  37. package/.qa-ai/adapters/opencode/commands/qa-init.md +70 -0
  38. package/.qa-ai/adapters/opencode/commands/qa-status.md +56 -0
  39. package/.qa-ai/adapters/opencode/commands/qa-update-tests.md +47 -0
  40. package/.qa-ai/adapters/opencode/commands/qa-validate-features.md +36 -0
  41. package/.qa-ai/agents/README.md +39 -0
  42. package/.qa-ai/agents/api-testing-agent.md +73 -0
  43. package/.qa-ai/agents/automation-feasibility-agent.md +128 -0
  44. package/.qa-ai/agents/gherkin-test-design-agent.md +110 -0
  45. package/.qa-ai/agents/jira-task-agent.md +92 -0
  46. package/.qa-ai/agents/pr-agent.md +101 -0
  47. package/.qa-ai/agents/qa-context-intake-agent.md +75 -0
  48. package/.qa-ai/agents/qa-workflow-orchestrator.md +113 -0
  49. package/.qa-ai/agents/release-gate-agent.md +50 -0
  50. package/.qa-ai/agents/requirements-intake-agent.md +79 -0
  51. package/.qa-ai/agents/requirements-normalization-agent.md +80 -0
  52. package/.qa-ai/agents/specialists/available/appium.md +59 -0
  53. package/.qa-ai/agents/specialists/available/cypress.md +68 -0
  54. package/.qa-ai/agents/specialists/available/generic-test-design.md +117 -0
  55. package/.qa-ai/agents/specialists/available/jira.md +108 -0
  56. package/.qa-ai/agents/specialists/available/karate.md +97 -0
  57. package/.qa-ai/agents/specialists/available/playwright-api.md +87 -0
  58. package/.qa-ai/agents/specialists/available/playwright-ui.md +87 -0
  59. package/.qa-ai/agents/specialists/available/postman.md +108 -0
  60. package/.qa-ai/agents/specialists/available/rest-assured.md +103 -0
  61. package/.qa-ai/agents/specialists/available/selenium.md +91 -0
  62. package/.qa-ai/agents/specialists/available/testrail.md +85 -0
  63. package/.qa-ai/agents/specialists/available/webdriverio.md +81 -0
  64. package/.qa-ai/agents/test-design-system-agent.md +33 -0
  65. package/.qa-ai/agents/testrail-coverage-agent.md +84 -0
  66. package/.qa-ai/agents/testrail-sync-agent.md +96 -0
  67. package/.qa-ai/agents/webdriverio-implementation-agent.md +84 -0
  68. package/.qa-ai/presets/manual-only.yaml +65 -0
  69. package/.qa-ai/presets/selenium-jest-browserstack.yaml +72 -0
  70. package/.qa-ai/presets/webdriverio-playwright-api.yaml +85 -0
  71. package/.qa-ai/rules/api-testing.rules.md +7 -0
  72. package/.qa-ai/rules/approval.rules.md +8 -0
  73. package/.qa-ai/rules/automation.rules.md +7 -0
  74. package/.qa-ai/rules/gherkin.rules.md +12 -0
  75. package/.qa-ai/rules/testrail.rules.md +10 -0
  76. package/.qa-ai/rules/webdriverio.rules.md +9 -0
  77. package/.qa-ai/scripts/bootstrap-agent-adapters.mjs +127 -0
  78. package/.qa-ai/scripts/clean.mjs +243 -0
  79. package/.qa-ai/scripts/config.mjs +202 -0
  80. package/.qa-ai/scripts/doctor.mjs +383 -0
  81. package/.qa-ai/scripts/init.mjs +447 -0
  82. package/.qa-ai/scripts/lib/markdown-table.mjs +76 -0
  83. package/.qa-ai/scripts/lib/project-config.mjs +184 -0
  84. package/.qa-ai/scripts/lib/qa-next-steps.mjs +578 -0
  85. package/.qa-ai/scripts/lib/release-gate.mjs +66 -0
  86. package/.qa-ai/scripts/lib/test-design.mjs +92 -0
  87. package/.qa-ai/scripts/lib/test-management-mapping.mjs +73 -0
  88. package/.qa-ai/scripts/lib/utils.mjs +331 -0
  89. package/.qa-ai/scripts/qa-help.mjs +44 -0
  90. package/.qa-ai/scripts/smoke-npm-pack.mjs +187 -0
  91. package/.qa-ai/scripts/smoke-test.mjs +465 -0
  92. package/.qa-ai/scripts/sync-agent-adapters.mjs +121 -0
  93. package/.qa-ai/scripts/test-validators.mjs +334 -0
  94. package/.qa-ai/scripts/validate-active-specialists.mjs +106 -0
  95. package/.qa-ai/scripts/validate-features.mjs +277 -0
  96. package/.qa-ai/scripts/validate-release-gate.mjs +105 -0
  97. package/.qa-ai/scripts/validate-sync-plan.mjs +186 -0
  98. package/.qa-ai/scripts/validate-target.mjs +104 -0
  99. package/.qa-ai/scripts/validate-test-design.mjs +117 -0
  100. package/.qa-ai/scripts/validate-traceability.mjs +183 -0
  101. package/.qa-ai/templates/automation-feasibility-report.template.md +21 -0
  102. package/.qa-ai/templates/automation-implementation-plan.template.md +23 -0
  103. package/.qa-ai/templates/feature.template +13 -0
  104. package/.qa-ai/templates/jira-automation-task.template.md +25 -0
  105. package/.qa-ai/templates/pr-template.md +60 -0
  106. package/.qa-ai/templates/release-gate.template.yaml +16 -0
  107. package/.qa-ai/templates/requirement-analysis.template.md +17 -0
  108. package/.qa-ai/templates/test-design-proposal.template.md +26 -0
  109. package/.qa-ai/templates/test-design-system.template.md +15 -0
  110. package/.qa-ai/templates/test-management-mapping.template.json +18 -0
  111. package/.qa-ai/templates/testrail-coverage-analysis.template.md +17 -0
  112. package/.qa-ai/templates/testrail-sync-plan.template.md +22 -0
  113. package/.qa-ai/templates/traceability-matrix.template.md +4 -0
  114. package/.qa-ai/workflows/automation-analysis.md +23 -0
  115. package/.qa-ai/workflows/cleanup.md +52 -0
  116. package/.qa-ai/workflows/context-intake.md +66 -0
  117. package/.qa-ai/workflows/full-flow.md +55 -0
  118. package/.qa-ai/workflows/implementation.md +24 -0
  119. package/.qa-ai/workflows/intake.md +3 -0
  120. package/.qa-ai/workflows/pr.md +3 -0
  121. package/.qa-ai/workflows/release-gate.md +22 -0
  122. package/.qa-ai/workflows/test-design-system.md +33 -0
  123. package/.qa-ai/workflows/test-design.md +23 -0
  124. package/.qa-ai/workflows/testrail-sync.md +23 -0
  125. package/CHANGELOG.md +108 -0
  126. package/CODE_OF_CONDUCT.md +11 -0
  127. package/CONTRIBUTING.md +39 -0
  128. package/LICENSE +21 -0
  129. package/README.es.md +602 -0
  130. package/README.md +633 -0
  131. package/ROADMAP.md +107 -0
  132. package/SECURITY.md +18 -0
  133. package/bin/qa-flowkit.mjs +214 -0
  134. package/docs/qa-ai/agent-compatibility.md +100 -0
  135. package/docs/qa-ai/architecture.md +130 -0
  136. package/docs/qa-ai/backlog.md +393 -0
  137. package/docs/qa-ai/cleanup.md +104 -0
  138. package/docs/qa-ai/customizing-agents.md +148 -0
  139. package/docs/qa-ai/getting-started.md +385 -0
  140. package/docs/qa-ai/implementation-guide-for-codex.md +210 -0
  141. package/docs/qa-ai/npm-migration-plan.md +50 -0
  142. package/docs/qa-ai/open-source-release-checklist.md +17 -0
  143. package/docs/qa-ai/qa-help.md +76 -0
  144. package/docs/qa-ai/release-gate.md +60 -0
  145. package/docs/qa-ai/terminal-transcripts.md +316 -0
  146. package/docs/qa-ai/test-design-dual-mode.md +75 -0
  147. package/docs/qa-ai/troubleshooting.md +740 -0
  148. package/docs/qa-ai/workflow.md +147 -0
  149. package/package.json +72 -0
package/README.md ADDED
@@ -0,0 +1,633 @@
1
+ # QA FlowKit
2
+
3
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
4
+ [![Node.js 20+](https://img.shields.io/badge/node.js-20%2B-339933.svg)](package.json)
5
+ [![Status: Early Product](https://img.shields.io/badge/status-Early%20Product-blue.svg)](ROADMAP.md)
6
+ [![Workflow: QA AI](https://img.shields.io/badge/workflow-QA%20AI-6f42c1.svg)](docs/qa-ai/workflow.md)
7
+ [![CI](https://github.com/warante/QA_FlowKit/actions/workflows/ci.yml/badge.svg)](https://github.com/warante/QA_FlowKit/actions/workflows/ci.yml)
8
+
9
+ Portable open-source framework and npm CLI for adding an AI-assisted QA workflow to an existing QA or automation repository.
10
+
11
+ Language: **English** | [Español](README.es.md)
12
+
13
+ ## Table of Contents
14
+
15
+ - [What It Does](#what-it-does)
16
+ - [Quick Start](#quick-start)
17
+ - [Upgrading the framework](#upgrading-the-framework)
18
+ - [Guided Usage Paths](#guided-usage-paths)
19
+ - [Agent-First Bootstrap](#agent-first-bootstrap)
20
+ - [QA Context Folder](#qa-context-folder)
21
+ - [QA Workflow Tracks and Guided Help](#qa-workflow-tracks-and-guided-help)
22
+ - [Commands](#commands)
23
+ - [Validation](#validation)
24
+ - [Init Options](#init-options)
25
+ - [Base Templates](#base-templates)
26
+ - [Adapters](#adapters)
27
+ - [Generated Structure](#generated-structure)
28
+ - [Gherkin Rules](#gherkin-rules)
29
+ - [Cleanup](#cleanup)
30
+ - [Documentation](#documentation)
31
+ - [License](#license)
32
+
33
+ ## What It Does
34
+
35
+ QA FlowKit is in **Early Product** stage: the portable folder workflow is implemented, validated in CI, and now gaining an npm CLI. Run `npx qa-flowkit init` in a target repository, and the repo receives configuration, agent instructions, workflow docs, validation scripts, templates and adapters for common coding-agent tools.
36
+
37
+ The starter does **not** perform external writes to configured tools. It creates proposal-first artifacts and local repo files only.
38
+
39
+ | Area | Included |
40
+ |---|---|
41
+ | Framework | Portable `.qa-ai/` folder |
42
+ | Scripts | `bootstrap-agent-adapters`, `init`, `config`, `doctor`, `clean`, `qa-help`, stronger validators, `validate-target`, `validate-release-gate`, `smoke-test`, `sync-agent-adapters` |
43
+ | Rules | Approval, Gherkin, test management, automation, UI automation and API testing |
44
+ | Agents | Phase agents plus active specialists from `.qa-ai/agents/specialists/active.md` |
45
+ | Templates | Requirement analysis, system/RF test design, traceability, automation planning, release gate and PR summary |
46
+ | Guided help | `qa-help` and `/qa-help` recommend the next workflow phase from artifacts and `project.qaTrack` |
47
+ | Release gate | Enterprise `release-gate.yaml` with `PASS` / `CONCERNS` / `FAIL` / `WAIVED` decisions |
48
+ | QA context | Optional repo-local folder with team QA practices for agent-assisted init defaults |
49
+ | Adapters | AGENTS.md, Claude Code, Codex, OpenCode, Cline, Continue, Aider, Goose and Gemini CLI |
50
+
51
+ ```text
52
+ Requirements
53
+ -> requirement intake
54
+ -> official RF + acceptance criteria validation
55
+ -> system test design (standard / enterprise)
56
+ -> per-RF test design proposal
57
+ -> Gherkin feature files
58
+ -> test management coverage analysis
59
+ -> test management sync plan
60
+ -> traceability matrix
61
+ -> automation feasibility
62
+ -> configured-framework implementation plan
63
+ -> PR-ready summary
64
+ ```
65
+
66
+ ## Quick Start
67
+
68
+ Run this from the target repository where you want to install QA FlowKit:
69
+
70
+ ```bash
71
+ npx qa-flowkit init
72
+ ```
73
+
74
+ Then open the repository with your AI coding tool and start with:
75
+
76
+ ```text
77
+ Read AGENTS.md, qa-ai.config.yaml and .qa-ai/workflows/full-flow.md. Follow .qa-ai/rules/ before making changes.
78
+ ```
79
+
80
+ When unsure what to run next:
81
+
82
+ ```bash
83
+ npx qa-flowkit help
84
+ ```
85
+
86
+ Or use `/qa-help` in Claude Code or OpenCode after syncing adapters.
87
+
88
+ By default, init uses the `webdriverio-playwright-api` base template with English interface, English Gherkin and the OpenCode adapter only. It creates the minimum usable structure first; starter QA documents and extra adapters are opt-in.
89
+
90
+ Manual fallback when npm is not available:
91
+
92
+ ```bash
93
+ cp -R /path/to/QA_FlowKit/.qa-ai .qa-ai
94
+ node .qa-ai/scripts/init.mjs
95
+ node .qa-ai/scripts/doctor.mjs
96
+ ```
97
+
98
+ ## Upgrading the framework
99
+
100
+ If you already copied an older `.qa-ai/` folder into your repository, refresh the **portable framework** with the npm CLI or from a newer [QA FlowKit](https://github.com/warante/QA_FlowKit) release. Your workflow artifacts (`qa-ai.config.yaml`, `qa-ai-output/`, `features/`, `tests/`, custom `AGENTS.md` edits) live **outside** `.qa-ai/` and are not removed when you replace that folder.
101
+
102
+ ### Before you start
103
+
104
+ 1. Commit or back up the repository (especially `qa-ai.config.yaml` and `qa-ai-output/`).
105
+ 2. Note which adapters you use (Claude Code, OpenCode, Codex, etc.).
106
+ 3. Skim the release notes or [CHANGELOG](CHANGELOG.md) for new config keys (for example `project.qaTrack`, `testDesign.*`, `release.gatePath`).
107
+
108
+ ### Recommended upgrade steps
109
+
110
+ **1. Preferred: update through npm**:
111
+
112
+ ```bash
113
+ npx qa-flowkit update
114
+ ```
115
+
116
+ This replaces only `.qa-ai/`, preserves `.qa-ai/state/` and `.qa-ai/config-profiles/`, refreshes active specialists, syncs existing adapters without overwriting them, and runs `doctor`.
117
+
118
+ **Manual fallback: replace the `.qa-ai/` folder** with the version from the latest QA FlowKit checkout or release tag:
119
+
120
+ ```bash
121
+ # Unix / macOS (from your target repository root)
122
+ rm -rf .qa-ai
123
+ cp -R /path/to/QA_FlowKit/.qa-ai .qa-ai
124
+ ```
125
+
126
+ ```powershell
127
+ # Windows PowerShell (from your target repository root)
128
+ Remove-Item -Recurse -Force .\.qa-ai
129
+ Copy-Item -Recurse -LiteralPath C:\path\to\QA_FlowKit\.qa-ai -Destination .\.qa-ai
130
+ ```
131
+
132
+ **2. Refresh agent slash commands and adapter files** (safe to overwrite adapter templates; does not touch `qa-ai.config.yaml`):
133
+
134
+ ```bash
135
+ node .qa-ai/scripts/sync-agent-adapters.mjs --adapters claude,opencode --force
136
+ ```
137
+
138
+ Add every adapter you use (`generic`, `codex`, `cline`, `continue`, `aider`, `goose`, `gemini`) or pass `--adapters all`.
139
+
140
+ **3. Re-run init without overwriting your config** (creates missing folders, refreshes `.qa-ai/agents/specialists/active.md`; skips existing `qa-ai.config.yaml` unless you pass `--force`):
141
+
142
+ ```bash
143
+ node .qa-ai/scripts/init.mjs --no-adapters
144
+ ```
145
+
146
+ **4. Merge new settings into `qa-ai.config.yaml` manually** by comparing your file with the matching preset under `.qa-ai/presets/`. Do **not** run `init.mjs --force` unless you intend to replace the whole config. Typical additions in recent versions:
147
+
148
+ | Key | Purpose |
149
+ |---|---|
150
+ | `project.qaTrack` | Workflow depth: `quick`, `standard`, `enterprise` |
151
+ | `testDesign.systemPath` | System-level test design document |
152
+ | `testDesign.proposalPath` | Per-RF test design proposal |
153
+ | `release.gatePath` | Enterprise release gate YAML |
154
+
155
+ To export your current config before editing:
156
+
157
+ ```bash
158
+ node .qa-ai/scripts/config.mjs --export .qa-ai/config-profiles/backup-before-upgrade.yaml
159
+ ```
160
+
161
+ **5. Add missing starter documents** (optional; only creates files that do not exist yet):
162
+
163
+ ```bash
164
+ node .qa-ai/scripts/init.mjs --with-doc-templates --no-adapters
165
+ ```
166
+
167
+ Use `--force` only if you explicitly want to reset generated templates under `qa-ai-output/`.
168
+
169
+ **6. Verify the upgrade:**
170
+
171
+ ```bash
172
+ node .qa-ai/scripts/doctor.mjs
173
+ node .qa-ai/scripts/qa-help.mjs
174
+ npm run qa:validate-target -- --allow-empty --allow-missing --no-strict-doctor
175
+ ```
176
+
177
+ Adjust flags when your repository already has real `.feature` files and workflow artifacts.
178
+
179
+ ### What init does and does not overwrite
180
+
181
+ | Path | Default on re-init | With `--force` |
182
+ |---|---|---|
183
+ | `.qa-ai/` | Replace manually (step 1) | Same |
184
+ | `qa-ai.config.yaml` | Skipped if present | Overwritten from preset |
185
+ | `qa-ai-output/*.md` (templates) | Skipped if present | Overwritten when using `--with-doc-templates` |
186
+ | `.claude/`, `.opencode/`, etc. | Skipped | Overwritten via `sync-agent-adapters --force` |
187
+ | `.qa-ai/agents/specialists/active.md` | Always regenerated | Always regenerated |
188
+ | `features/`, `tests/` | Never touched by init | Never touched |
189
+
190
+ ### Minimal agent-first upgrade
191
+
192
+ If you only use `/qa-init` in Claude Code or OpenCode:
193
+
194
+ ```bash
195
+ rm -rf .qa-ai
196
+ cp -R /path/to/QA_FlowKit/.qa-ai .qa-ai
197
+ node .qa-ai/scripts/bootstrap-agent-adapters.mjs --agents claude,opencode --force
198
+ node .qa-ai/scripts/doctor.mjs
199
+ ```
200
+
201
+ Then merge any new keys into `qa-ai.config.yaml` and run `/qa-help` to see the updated workflow phases.
202
+
203
+ ## Guided Usage Paths
204
+
205
+ ### Try QA FlowKit in a new repository
206
+
207
+ Use the default setup when you want the quickest path to a working QA AI workflow:
208
+
209
+ ```bash
210
+ npx qa-flowkit init
211
+ ```
212
+
213
+ ### Manual QA only
214
+
215
+ Use this when you want requirements-to-Gherkin and traceability without automation folders:
216
+
217
+ ```bash
218
+ npx qa-flowkit init --preset manual-only --interface-language en --gherkin-language en
219
+ ```
220
+
221
+ ### Automation repository
222
+
223
+ Use the default template for WebdriverIO UI/E2E plus Playwright API planning:
224
+
225
+ ```bash
226
+ npx qa-flowkit init --preset webdriverio-playwright-api
227
+ npx qa-flowkit validate-features --allow-empty
228
+ ```
229
+
230
+ ### Agent-first setup
231
+
232
+ Use this when Claude Code or OpenCode should guide initialization through `/qa-init`:
233
+
234
+ ```bash
235
+ node .qa-ai/scripts/bootstrap-agent-adapters.mjs --agents claude,opencode
236
+ ```
237
+
238
+ Then open the agent and run:
239
+
240
+ ```text
241
+ /qa-init
242
+ ```
243
+
244
+ ## Agent-First Bootstrap
245
+
246
+ Use this flow when Claude Code or OpenCode should initialize the repo through `/qa-init`.
247
+
248
+ | Platform | Command |
249
+ |---|---|
250
+ | Unix/macOS | `cp -R /path/to/qa-flowkit/.qa-ai .qa-ai` |
251
+ | PowerShell | `Copy-Item -Recurse -LiteralPath C:\path\to\qa-flowkit\.qa-ai -Destination .\.qa-ai` |
252
+
253
+ Then run:
254
+
255
+ ```bash
256
+ node .qa-ai/scripts/bootstrap-agent-adapters.mjs --agents claude,opencode
257
+ ```
258
+
259
+ Open Claude Code or OpenCode in the target repository and run:
260
+
261
+ ```text
262
+ /qa-init
263
+ ```
264
+
265
+ Use `/qa-init` rather than `/init`; both Claude Code and OpenCode have their own built-in `/init` commands. The guided command asks for language, base template, adapters, optional framework overrides and overwrite behavior.
266
+
267
+ Advanced direct form:
268
+
269
+ ```text
270
+ /qa-init --preset webdriverio-playwright-api --interface-language es --gherkin-language en --adapters claude,opencode
271
+ ```
272
+
273
+ ## QA Context Folder
274
+
275
+ For a more tailored setup, add a repository-local folder that documents how QA works for your team, then start init through an agent:
276
+
277
+ ```text
278
+ /qa-init --qa-context qa-ai-knowledge
279
+ ```
280
+
281
+ The agent reads `.qa-ai/workflows/context-intake.md`, summarizes the QA context, proposes default init flags, asks for approval, and then runs `init.mjs` with `--qa-context <path>`. The Node script records the approved folder in `qa-ai.config.yaml`; it does not interpret the documents itself.
282
+
283
+ When enabled, future QA workflows should read the configured knowledge artifacts before planning:
284
+
285
+ ```text
286
+ qa-ai-output/qa-knowledge-summary.md
287
+ qa-ai-output/qa-init-decisions.md
288
+ ```
289
+
290
+ ## QA Workflow Tracks and Guided Help
291
+
292
+ QA FlowKit adapts workflow depth using `project.qaTrack` in `qa-ai.config.yaml` (inspired by BMAD Method tracks and TEA gate decisions).
293
+
294
+ ### Workflow tracks
295
+
296
+ | Track | Default preset | Active phases (summary) | Best for |
297
+ |---|---|---|---|
298
+ | `quick` | `manual-only` | Intake, normalization, Gherkin, traceability, PR | Manual QA, narrow scope, fast Gherkin + traceability |
299
+ | `standard` | `webdriverio-playwright-api` | Full workflow including test-management planning, feasibility and automation phases when configured | Most automation repositories |
300
+ | `enterprise` | set with `--qa-track enterprise` | Same as `standard`, plus **release gate** and stricter `validate-target` | Compliance, audit trails, formal go/no-go |
301
+
302
+ Set the track at init:
303
+
304
+ ```bash
305
+ node .qa-ai/scripts/init.mjs --preset manual-only --qa-track quick
306
+ node .qa-ai/scripts/init.mjs --preset webdriverio-playwright-api --qa-track standard
307
+ node .qa-ai/scripts/init.mjs --qa-track enterprise --with-doc-templates
308
+ ```
309
+
310
+ | Track | Skipped by default |
311
+ |---|---|
312
+ | `quick` | Test-management coverage/sync, automation feasibility, UI/API implementation, issue task drafts, system test design, release gate |
313
+ | `standard` | Release gate; phases skipped when tools/frameworks are `none` (see orchestrator) |
314
+ | `enterprise` | None beyond config-based skips; requires `release-gate.yaml` before calling the workflow complete |
315
+
316
+ Details: [QA help and tracks](docs/qa-ai/qa-help.md).
317
+
318
+ ### Guided next steps (`qa-help`)
319
+
320
+ `qa-help` inspects `qa-ai.config.yaml`, `qa-ai-output/`, `features/` and `.qa-ai/state/` to list completed, pending and skipped phases, then prints prioritized recommendations (`required`, `recommended`, `optional`).
321
+
322
+ ```bash
323
+ npm run qa:help
324
+ node .qa-ai/scripts/qa-help.mjs
325
+ node .qa-ai/scripts/qa-help.mjs --json
326
+ ```
327
+
328
+ After each `/qa-full-flow` step or agent phase, run `/qa-help` again. `/qa-status` includes `qa-help` output for the suggested next command.
329
+
330
+ ### Release gate (enterprise)
331
+
332
+ After the PR summary, record a formal decision in `qa-ai-output/release-gate.yaml`:
333
+
334
+ | Decision | Meaning |
335
+ |---|---|
336
+ | `PASS` | Ready to release |
337
+ | `CONCERNS` | Release with documented follow-ups |
338
+ | `FAIL` | Blocking gaps remain |
339
+ | `WAIVED` | Exception accepted (requires `approver` and `waived_reason`) |
340
+
341
+ ```bash
342
+ node .qa-ai/scripts/validate-release-gate.mjs
343
+ npm run qa:validate-release-gate
344
+ ```
345
+
346
+ `/qa-gate` guides the agent through the gate workflow. `validate-target.mjs` runs the release gate validator automatically when `project.qaTrack` is `enterprise`.
347
+
348
+ Details: [Release gate](docs/qa-ai/release-gate.md).
349
+
350
+ ### Test design dual-mode (standard / enterprise)
351
+
352
+ Before per-RF Gherkin files, produce:
353
+
354
+ 1. `qa-ai-output/test-design-system.md` — architecture alignment, risks and cross-RF strategy.
355
+ 2. `qa-ai-output/test-design-proposal.md` — cases for the active RF/epic (approval before `.feature` files).
356
+
357
+ The `quick` track skips the system phase and may combine proposal + features in one Gherkin pass.
358
+
359
+ Details: [Test design dual-mode](docs/qa-ai/test-design-dual-mode.md).
360
+
361
+ ## Commands
362
+
363
+ | Command | Purpose |
364
+ |---|---|
365
+ | `npx qa-flowkit init` | Install `.qa-ai/`, generate config, folders and the default OpenCode adapter |
366
+ | `npx qa-flowkit update` | Refresh `.qa-ai/` from the npm package while preserving target artifacts |
367
+ | `npx qa-flowkit doctor` | Check setup health through the npm CLI |
368
+ | `npx qa-flowkit validate-target --allow-empty --allow-missing --no-strict-doctor` | Run target validation through the npm CLI |
369
+ | `node .qa-ai/scripts/bootstrap-agent-adapters.mjs --agents claude,opencode` | Copy minimal root slash commands for agent-first setup |
370
+ | `node .qa-ai/scripts/init.mjs` | Generate the minimum config, folders and OpenCode adapter |
371
+ | `node .qa-ai/scripts/init.mjs --qa-context qa-ai-knowledge` | Record a QA context folder for agent-assisted defaults |
372
+ | `node .qa-ai/scripts/config.mjs --export .qa-ai/config-profiles/team.yaml` | Export the current config as a reusable profile |
373
+ | `node .qa-ai/scripts/config.mjs --import .qa-ai/config-profiles/team.yaml` | Import a reusable config profile |
374
+ | `node .qa-ai/scripts/sync-agent-adapters.mjs --adapters all` | Sync selected adapter templates |
375
+ | `node .qa-ai/scripts/doctor.mjs` | Check setup health |
376
+ | `node .qa-ai/scripts/doctor.mjs --strict` | Fail CI-style checks for initialized target repositories |
377
+ | `node .qa-ai/scripts/validate-features.mjs` | Validate generated `.feature` files |
378
+ | `node .qa-ai/scripts/validate-traceability.mjs` | Validate traceability matrix coverage for feature IDs |
379
+ | `node .qa-ai/scripts/validate-sync-plan.mjs` | Validate proposal-first test-management sync plans |
380
+ | `node .qa-ai/scripts/validate-active-specialists.mjs` | Validate active specialist list against config |
381
+ | `node .qa-ai/scripts/validate-target.mjs` | Run strict target-repository validation after real QA artifacts exist |
382
+ | `node .qa-ai/scripts/qa-help.mjs` | Recommend the next QA phase from artifacts and `project.qaTrack` |
383
+ | `node .qa-ai/scripts/validate-release-gate.mjs` | Validate enterprise release gate YAML |
384
+ | `npm run qa:help` | Same as `qa-help.mjs` |
385
+ | `npm run qa:validate-release-gate` | Same as `validate-release-gate.mjs` |
386
+ | `node .qa-ai/scripts/validate-test-design.mjs` | Validate system and per-RF test design markdown structure |
387
+ | `npm run qa:validate-test-design` | Same as `validate-test-design.mjs` |
388
+ | `node .qa-ai/scripts/test-validators.mjs` | Run native Node unit tests for shared validator helpers |
389
+ | `node .qa-ai/scripts/smoke-test.mjs` | Run maintainer smoke checks |
390
+ | `node .qa-ai/scripts/smoke-npm-pack.mjs` | Run npm pack/install smoke checks |
391
+ | `npm run validate:oss-extraction` | Run doctor, stronger validators, validator unit tests and smoke tests (same as CI) |
392
+ | `node .qa-ai/scripts/clean.mjs` | Preview cleanup of generated artifacts |
393
+
394
+ Claude Code and OpenCode adapters also provide guided slash commands:
395
+
396
+ | Slash Command | Purpose |
397
+ |---|---|
398
+ | `/qa-init` | Guided initialization |
399
+ | `/qa-config` | Import or export reusable QA AI config profiles |
400
+ | `/qa-full-flow` | End-to-end requirements-to-PR QA flow |
401
+ | `/qa-add-tests` | Add tests for a new RF without disturbing existing tests |
402
+ | `/qa-update-tests` | Review existing tests after RF changes and apply approved updates |
403
+ | `/qa-automation-plan` | Classify existing `.feature` files and plan automation |
404
+ | `/qa-coverage` | Analyze functional coverage across RFs, manual tests and automated tests |
405
+ | `/qa-help` | Context-aware guidance for the next QA workflow step |
406
+ | `/qa-status` | Summarize config, artifacts, feature health and recommended next steps |
407
+ | `/qa-gate` | Record enterprise release gate decision (`PASS` / `CONCERNS` / `FAIL` / `WAIVED`) |
408
+ | `/qa-doctor` | Setup health checks |
409
+ | `/qa-clean` | Manifest-based cleanup preview/execution |
410
+ | `/qa-validate-features` | Gherkin convention validation |
411
+
412
+ `init.mjs` and `config.mjs --import` never overwrite existing files unless `--force` is passed. `validate-features.mjs` fails when no `.feature` files are found; use `--allow-empty` only for source-repo smoke checks or other cases where an empty feature folder is expected.
413
+
414
+ ## Validation
415
+
416
+ QA FlowKit now uses stronger local validators without external dependencies:
417
+
418
+ | Validator | Checks |
419
+ |---|---|
420
+ | `doctor.mjs` | Framework assets, required scripts, rules, templates, agents, presets, adapters and configured paths; `--strict` promotes target-repository workflow artifacts and configured framework files from warnings to failures |
421
+ | `validate-features.mjs` | Parsed Gherkin structure, language directive, one Feature, one Scenario, acceptance criteria, required tags, RF IDs and duplicate explicit test IDs |
422
+ | `validate-traceability.mjs` | Feature RF/test identifiers are represented in the configured traceability matrix, with Markdown table shape and duplicate case/file checks |
423
+ | `validate-sync-plan.mjs` | Test-management sync plans stay proposal-first, mention approval, cover feature identifiers and pass Markdown table, duplicate ID and mapping-file checks |
424
+ | `validate-active-specialists.mjs` | `.qa-ai/agents/specialists/active.md` matches `qa-ai.config.yaml` and referenced specialist files exist |
425
+ | `validate-release-gate.mjs` | Enterprise release gate YAML shape, decision rules and evidence paths |
426
+ | `validate-test-design.mjs` | System and per-RF test design markdown section structure |
427
+ | `smoke-test.mjs` | Copy-folder install, config import/export, adapters, no-overwrite behavior, unsafe path rejection and validator behavior |
428
+
429
+ For source-repo CI, use:
430
+
431
+ ```bash
432
+ npm run validate:oss-extraction
433
+ ```
434
+
435
+ For a configured target repository with real `.feature` files and workflow artifacts, run the validators without `--allow-empty` / `--allow-missing` once the corresponding files should exist.
436
+
437
+ Use strict doctor mode in target repository CI after initialization and at least one real QA flow has generated the configured workflow artifacts:
438
+
439
+ ```bash
440
+ node .qa-ai/scripts/validate-target.mjs
441
+ ```
442
+
443
+ For incomplete target repositories, use `node .qa-ai/scripts/validate-target.mjs --allow-empty --allow-missing --no-strict-doctor`.
444
+
445
+ ### Test-management mapping
446
+
447
+ When `--with-test-management-mapping` is passed, init creates the configured mapping file as an empty JSON object (`{}`) so new repositories do not start with fake external IDs.
448
+
449
+ Use [.qa-ai/templates/test-management-mapping.template.json](.qa-ai/templates/test-management-mapping.template.json) as the documented reference. Mapping keys must be RF/test IDs such as `RF-101` or `TC-001`, or `.feature` paths. Values must be objects with supported fields only: `externalId`, `section`, `suite`, `status`, `lastReviewedAt`, and `notes`. Do not store secrets, tokens or credentials in mapping files.
450
+
451
+ To reuse the same setup across repositories with the same structure, export a profile from the configured repository and import it in the next one:
452
+
453
+ ```bash
454
+ node .qa-ai/scripts/config.mjs --export .qa-ai/config-profiles/team.yaml
455
+ node .qa-ai/scripts/config.mjs --import .qa-ai/config-profiles/team.yaml
456
+ ```
457
+
458
+ Importing a profile writes `qa-ai.config.yaml`, creates the configured folders and refreshes `.qa-ai/agents/specialists/active.md`. Use `--no-structure` when you only want to copy the YAML.
459
+
460
+ ## Init Options
461
+
462
+ `init.mjs` works with no flags. Use flags only when the default base template or language choices are not what you want.
463
+
464
+ | Option | Values | Default | Purpose |
465
+ |---|---|---|---|
466
+ | `--preset <name>` | `webdriverio-playwright-api`, `selenium-jest-browserstack`, `manual-only` | `webdriverio-playwright-api` | Selects the base template used to generate `qa-ai.config.yaml` |
467
+ | `--interface-language <lang>` | `en`, `es` | `en` | Language for generated QA artifact headings and guided workflow text |
468
+ | `--gherkin-language <lang>` | `en`, `es` | `en` | Language for generated `.feature` files |
469
+ | `--requirements-source <name>` | `markdown`, `jira`, `confluence`, `pasted-text`, custom value | Base template value | Sets the primary requirement source |
470
+ | `--test-management-tool <name>` | `none`, `testrail`, `zephyr`, `xray`, custom value | Base template value | Sets the configured test management tool |
471
+ | `--issue-tracker <name>` | `none`, `jira`, `github`, custom value | Base template value | Sets the configured issue tracker |
472
+ | `--qa-context <path>` | repo-local folder | off | Enables QA knowledge context for agent-assisted init |
473
+ | `--qa-track <name>` | `quick`, `standard`, `enterprise` | From preset | Controls workflow depth and `qa-help` phase list |
474
+ | `--adapters <list>` | `all`, `generic`, `codex`, `claude`, `opencode`, `cline`, `continue`, `aider`, `goose`, `gemini` | `opencode` | Selects generated agent adapters |
475
+ | `--no-adapters` | flag | off | Skips adapter generation |
476
+ | `--with-doc-templates` | flag | off | Generates starter Markdown artifacts under `qa-ai-output/` |
477
+ | `--with-test-management-mapping` | flag | off | Creates the configured test management mapping file |
478
+ | `--force` | flag | off | Allows overwriting generated files |
479
+
480
+ Advanced framework and path overrides:
481
+
482
+ | Option | Example Values | Purpose |
483
+ |---|---|---|
484
+ | `--ui-framework <name>` | `none`, `undecided`, `webdriverio`, `playwright`, `cypress`, `selenium` | Overrides the UI/E2E framework from the base template |
485
+ | `--api-framework <name>` | `none`, `undecided`, `playwright-api`, `postman`, `rest-assured`, `karate` | Overrides the API/integration framework from the base template |
486
+ | `--ui-specs-path <path>` | `tests/wdio/specs` | Overrides the UI specs path |
487
+ | `--ui-page-objects-path <path>` | `tests/wdio/pageobjects` | Overrides the UI page objects path |
488
+ | `--api-specs-path <path>` | `tests/api/specs` | Overrides the API specs path |
489
+ | `--specialist-mode <mode>` | `auto`, `off`, `required` | Controls specialist activation |
490
+ | `--set <key=value>` | `automation.ui.framework=cypress` | Sets a scalar config value directly |
491
+
492
+ Examples:
493
+
494
+ ```bash
495
+ # Default setup
496
+ node .qa-ai/scripts/init.mjs
497
+
498
+ # Spanish interface and Spanish Gherkin, no automation folders
499
+ node .qa-ai/scripts/init.mjs --preset manual-only --interface-language es --gherkin-language es
500
+
501
+ # Generate only generic and Codex adapters
502
+ node .qa-ai/scripts/init.mjs --adapters generic,codex
503
+
504
+ # Generate starter QA artifact templates too
505
+ node .qa-ai/scripts/init.mjs --with-doc-templates
506
+
507
+ # Record a QA context folder after the agent has reviewed it
508
+ node .qa-ai/scripts/init.mjs --qa-context qa-ai-knowledge
509
+
510
+ # Generate every supported adapter
511
+ node .qa-ai/scripts/init.mjs --adapters all
512
+ ```
513
+
514
+ Framework and path flags are advanced overrides. When a base template already defines the frameworks you want, omit those flags so the template paths are preserved.
515
+
516
+ ## Base Templates
517
+
518
+ The `--preset` flag name is kept for CLI compatibility, but conceptually these are base templates: they provide a complete starting config that your flags can override.
519
+
520
+ | Base Template (`--preset`) | Best For | Default Automation |
521
+ |---|---|---|
522
+ | `webdriverio-playwright-api` | QA + automation repositories | WebdriverIO UI/E2E and Playwright API |
523
+ | `selenium-jest-browserstack` | Selenium-style UI automation | Selenium/Jest/BrowserStack folders |
524
+ | `manual-only` | QA design without automation folders | None |
525
+
526
+ ## Adapters
527
+
528
+ | Adapter | Generated Path | Notes |
529
+ |---|---|---|
530
+ | Generic | `AGENTS.md` | Cross-agent behavior and safety rules |
531
+ | Claude Code | `.claude/` | Slash commands including `/qa-init` |
532
+ | Codex | `.codex/` | Codex onboarding prompts |
533
+ | OpenCode | `.opencode/` | Slash commands including `/qa-init` |
534
+ | Cline | `.clinerules`, `.cline/` | Cline behavior and docs |
535
+ | Continue | `.continue/` | Review/check guidance |
536
+ | Aider | `.aider.conf.yml`, `.aider/` | Read list and command notes |
537
+ | Goose | `.goose/` | Workflow recipe |
538
+ | Gemini CLI | `GEMINI.md` | Gemini CLI project context |
539
+
540
+ ## Generated Structure
541
+
542
+ ```text
543
+ qa-ai.config.yaml
544
+ .opencode/
545
+ qa-ai-output/
546
+ qa-ai-output/qa-knowledge-summary.md # Optional, written by agent-assisted QA context intake
547
+ qa-ai-output/qa-init-decisions.md # Optional, written by agent-assisted QA context intake
548
+ features/
549
+ tests/
550
+
551
+ # Optional, only when requested through --adapters
552
+ AGENTS.md
553
+ .claude/
554
+ .codex/
555
+ .cline/
556
+ .clinerules
557
+ .continue/
558
+ .aider.conf.yml
559
+ .aider/
560
+ .goose/
561
+ GEMINI.md
562
+ ```
563
+
564
+ Default init creates only the minimum useful files and folders. It does not create starter `qa-ai-output/*.md` artifacts unless `--with-doc-templates` is passed, and it generates only the OpenCode adapter unless `--adapters` requests more.
565
+
566
+ The exact `tests/` subfolders are config-aware. Init creates configured UI/API paths when frameworks are set, and skips automation folders when frameworks are `none` or `undecided`.
567
+
568
+ When `project.interfaceLanguage` is `es`, init localizes the generated QA Markdown artifact headings. Gherkin language remains controlled separately by `gherkin.language`.
569
+
570
+ ## Gherkin Rules
571
+
572
+ | Rule | Requirement |
573
+ |---|---|
574
+ | Language | English (`en`) or Spanish (`es`) from `qa-ai.config.yaml` |
575
+ | Spanish directive | Spanish `.feature` files must include `# language: es` |
576
+ | File model | One `.feature` file per test case |
577
+ | Scenario model | One configured scenario keyword per file |
578
+ | Acceptance criteria | `Acceptance Criteria:` for English or `Criterios de aceptación:` for Spanish |
579
+ | Required tags | `@priority:<value>`, `@type:<value>`, `@manual:<value>` |
580
+ | Scope | Manual tests have `.feature` files; unit tests are out of scope |
581
+
582
+ ## Cleanup
583
+
584
+ `init.mjs` and `sync-agent-adapters.mjs` maintain a manifest at:
585
+
586
+ ```text
587
+ .qa-ai/state/init-manifest.json
588
+ ```
589
+
590
+ Cleanup is a dry-run by default:
591
+
592
+ ```bash
593
+ node .qa-ai/scripts/clean.mjs
594
+ ```
595
+
596
+ To execute cleanup, pass `--force` plus the scope you want:
597
+
598
+ ```bash
599
+ node .qa-ai/scripts/clean.mjs --generated --force
600
+ node .qa-ai/scripts/clean.mjs --adapters --empty-dirs --force
601
+ node .qa-ai/scripts/clean.mjs --all --force
602
+ ```
603
+
604
+ Safety rules:
605
+
606
+ - Files are deleted only when they are tracked in the manifest.
607
+ - Files changed since init are skipped by default.
608
+ - `--include-modified` is required to delete modified tracked files.
609
+ - Directories are removed only when tracked and empty.
610
+ - The copied `.qa-ai/` framework folder is not removed by clean.
611
+
612
+ ## Documentation
613
+
614
+ | Document | Purpose |
615
+ |---|---|
616
+ | [Getting started](docs/qa-ai/getting-started.md) | Step-by-step setup flows by user type |
617
+ | [QA help and tracks](docs/qa-ai/qa-help.md) | Context-aware next steps, workflow tracks and phase skips |
618
+ | [Release gate](docs/qa-ai/release-gate.md) | Enterprise go/no-go decisions (`PASS` / `CONCERNS` / `FAIL` / `WAIVED`) |
619
+ | [Test design dual-mode](docs/qa-ai/test-design-dual-mode.md) | System-level and per-RF test design artifacts (BMAD TEA-inspired) |
620
+ | [Terminal transcripts](docs/qa-ai/terminal-transcripts.md) | Real command output for common workflows |
621
+ | [Troubleshooting](docs/qa-ai/troubleshooting.md) | Common failures and resolutions |
622
+ | [Architecture](docs/qa-ai/architecture.md) | Framework structure and safety model |
623
+ | [Workflow](docs/qa-ai/workflow.md) | End-to-end QA flow |
624
+ | [Agent compatibility](docs/qa-ai/agent-compatibility.md) | Adapter behavior and command discovery |
625
+ | [Customizing agents](docs/qa-ai/customizing-agents.md) | How to adapt agents, specialists and adapters safely |
626
+ | [Cleanup](docs/qa-ai/cleanup.md) | Manifest-based cleanup details |
627
+ | [Roadmap](ROADMAP.md) | Product direction |
628
+ | [Contributing](CONTRIBUTING.md) | Contribution guidelines |
629
+ | [Security](SECURITY.md) | Vulnerability and secret-handling policy |
630
+
631
+ ## License
632
+
633
+ MIT. See [LICENSE](LICENSE).