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
@@ -0,0 +1,385 @@
1
+ # Getting Started
2
+
3
+ Step-by-step setup flows for each user type. Pick the one that matches your situation. See [Terminal Transcripts](terminal-transcripts.md) for real command output from each workflow.
4
+
5
+ - [Manual QA](#manual-qa)
6
+ - [Automation QA](#automation-qa)
7
+ - [Agent-First User](#agent-first-user)
8
+ - [Maintainer](#maintainer)
9
+
10
+ ---
11
+
12
+ ## Manual QA
13
+
14
+ Use this flow when your team writes Gherkin test cases and tracks traceability without automation code. You do not need a test automation framework configured.
15
+
16
+ **Prerequisites**
17
+
18
+ - Node.js 20 or later.
19
+ - A copy of the QA FlowKit source repository (or just the `.qa-ai/` folder).
20
+ - A target repository where you want to add the QA AI workflow.
21
+
22
+ **Step 1 — Copy the framework folder**
23
+
24
+ From the target repository root:
25
+
26
+ ```bash
27
+ # Unix/macOS
28
+ cp -R /path/to/QA_FlowKit/.qa-ai .qa-ai
29
+
30
+ # PowerShell
31
+ Copy-Item -Recurse -LiteralPath C:\path\to\QA_FlowKit\.qa-ai -Destination .\.qa-ai
32
+ ```
33
+
34
+ **Step 2 — Initialize with the manual-only preset**
35
+
36
+ ```bash
37
+ node .qa-ai/scripts/init.mjs --preset manual-only --interface-language en --gherkin-language en
38
+ ```
39
+
40
+ Use `--interface-language es --gherkin-language es` if your team writes requirements and Gherkin in Spanish.
41
+
42
+ What this creates:
43
+
44
+ ```text
45
+ qa-ai.config.yaml
46
+ qa-ai-output/
47
+ features/
48
+ .opencode/
49
+ ```
50
+
51
+ No `tests/` folder is created because `manual-only` sets all automation frameworks to `none`.
52
+
53
+ **Step 3 — Verify setup**
54
+
55
+ ```bash
56
+ node .qa-ai/scripts/doctor.mjs
57
+ ```
58
+
59
+ All checks should pass. A warning for missing automation config files is expected and safe for this preset.
60
+
61
+ **Step 4 — Open your AI coding tool**
62
+
63
+ With any supported agent (Claude Code, OpenCode, Codex, etc.), start with:
64
+
65
+ ```text
66
+ Read AGENTS.md, qa-ai.config.yaml and .qa-ai/workflows/full-flow.md. Follow .qa-ai/rules/ before making changes.
67
+ ```
68
+
69
+ Then provide a requirement (RF or user story) and run the full QA flow.
70
+
71
+ **Step 5 — Validate generated feature files**
72
+
73
+ After the agent generates `.feature` files:
74
+
75
+ ```bash
76
+ node .qa-ai/scripts/validate-features.mjs
77
+ ```
78
+
79
+ Fix any reported issues before continuing to traceability.
80
+
81
+ **Step 6 — Validate traceability**
82
+
83
+ After the traceability matrix is generated at `qa-ai-output/traceability-matrix.md`:
84
+
85
+ ```bash
86
+ node .qa-ai/scripts/validate-traceability.mjs
87
+ ```
88
+
89
+ **What to do next**
90
+
91
+ - Add more requirements and repeat from Step 4.
92
+ - Configure a test management tool in `qa-ai.config.yaml` (e.g. `testManagement.tool: testrail`) to enable sync plan generation.
93
+ - Review the [Workflow](workflow.md) document for the full step-by-step QA process.
94
+
95
+ ---
96
+
97
+ ## Automation QA
98
+
99
+ Use this flow when your repository includes test automation code (WebdriverIO, Playwright, Selenium, etc.) and you want the full requirements-to-PR workflow.
100
+
101
+ **Prerequisites**
102
+
103
+ - Node.js 20 or later.
104
+ - A copy of the `.qa-ai/` folder from QA FlowKit.
105
+ - An existing QA/automation repository (the target repo).
106
+ - Know which UI and API frameworks your team uses.
107
+
108
+ **Step 1 — Copy the framework folder**
109
+
110
+ ```bash
111
+ # Unix/macOS
112
+ cp -R /path/to/QA_FlowKit/.qa-ai .qa-ai
113
+
114
+ # PowerShell
115
+ Copy-Item -Recurse -LiteralPath C:\path\to\QA_FlowKit\.qa-ai -Destination .\.qa-ai
116
+ ```
117
+
118
+ **Step 2 — Initialize with your automation preset**
119
+
120
+ For WebdriverIO UI/E2E + Playwright API (default):
121
+
122
+ ```bash
123
+ node .qa-ai/scripts/init.mjs --preset webdriverio-playwright-api
124
+ ```
125
+
126
+ For Selenium + Jest + BrowserStack:
127
+
128
+ ```bash
129
+ node .qa-ai/scripts/init.mjs --preset selenium-jest-browserstack
130
+ ```
131
+
132
+ To override specific frameworks without changing the full preset:
133
+
134
+ ```bash
135
+ node .qa-ai/scripts/init.mjs --preset webdriverio-playwright-api --api-framework postman
136
+ ```
137
+
138
+ **Step 3 — Verify setup**
139
+
140
+ ```bash
141
+ node .qa-ai/scripts/doctor.mjs
142
+ ```
143
+
144
+ Doctor warns about missing framework config files (e.g. `wdio.conf.js`, `playwright.config.js`) when they do not yet exist in your repository. This is expected before first automation setup; fix those warnings by adding the real config files as your project matures.
145
+
146
+ **Step 4 — (Optional) Add QA context**
147
+
148
+ If your team has documented QA practices in a local folder, record it:
149
+
150
+ ```bash
151
+ node .qa-ai/scripts/init.mjs --qa-context qa-ai-knowledge
152
+ ```
153
+
154
+ Future agent sessions will read `qa-ai-output/qa-knowledge-summary.md` and `qa-ai-output/qa-init-decisions.md` before proposing defaults.
155
+
156
+ **Step 5 — Open your AI coding tool**
157
+
158
+ Start the agent with:
159
+
160
+ ```text
161
+ Read AGENTS.md, qa-ai.config.yaml and .qa-ai/workflows/full-flow.md. Follow .qa-ai/rules/ before making changes.
162
+ ```
163
+
164
+ Then provide a requirement and request the full flow. The agent works through requirements intake, test design, sync plan proposal, traceability matrix, automation feasibility, implementation plan and a PR-ready summary.
165
+
166
+ **Step 6 — Run the full validator suite**
167
+
168
+ After feature files and workflow artifacts exist:
169
+
170
+ ```bash
171
+ node .qa-ai/scripts/validate-features.mjs
172
+ node .qa-ai/scripts/validate-traceability.mjs
173
+ node .qa-ai/scripts/validate-sync-plan.mjs
174
+ node .qa-ai/scripts/validate-active-specialists.mjs
175
+ ```
176
+
177
+ Or use the aggregated target validator:
178
+
179
+ ```bash
180
+ node .qa-ai/scripts/validate-target.mjs
181
+ ```
182
+
183
+ Use `--allow-empty --allow-missing --no-strict-doctor` for repositories that have not yet run a complete QA flow.
184
+
185
+ **Step 7 — (Optional) Add to CI**
186
+
187
+ Add to your target repository's CI pipeline after initialization and at least one real QA flow:
188
+
189
+ ```bash
190
+ node .qa-ai/scripts/validate-target.mjs
191
+ ```
192
+
193
+ **What to do next**
194
+
195
+ - Run `/qa-add-tests` in Claude Code or OpenCode for each new requirement.
196
+ - Run `/qa-automation-plan` to classify existing feature files and plan automation backlog.
197
+ - Export a reusable config profile for onboarding new repositories with the same team setup:
198
+
199
+ ```bash
200
+ node .qa-ai/scripts/config.mjs --export .qa-ai/config-profiles/team.yaml
201
+ ```
202
+
203
+ - Review the [Workflow](workflow.md) document for the complete step-by-step QA process.
204
+
205
+ ---
206
+
207
+ ## Agent-First User
208
+
209
+ Use this flow when you want Claude Code or OpenCode to guide every step, including initialization, through guided slash commands.
210
+
211
+ **Prerequisites**
212
+
213
+ - Node.js 20 or later.
214
+ - A copy of the `.qa-ai/` folder from QA FlowKit.
215
+ - Claude Code or OpenCode installed and configured for the target repository.
216
+
217
+ **Step 1 — Copy the framework folder**
218
+
219
+ ```bash
220
+ # Unix/macOS
221
+ cp -R /path/to/QA_FlowKit/.qa-ai .qa-ai
222
+
223
+ # PowerShell
224
+ Copy-Item -Recurse -LiteralPath C:\path\to\QA_FlowKit\.qa-ai -Destination .\.qa-ai
225
+ ```
226
+
227
+ **Step 2 — Bootstrap agent slash commands**
228
+
229
+ This copies the minimal `/qa-init` command files into the right agent folders before the full adapter sync:
230
+
231
+ ```bash
232
+ # Both Claude Code and OpenCode
233
+ node .qa-ai/scripts/bootstrap-agent-adapters.mjs --agents claude,opencode
234
+
235
+ # Claude Code only
236
+ node .qa-ai/scripts/bootstrap-agent-adapters.mjs --agents claude
237
+
238
+ # OpenCode only
239
+ node .qa-ai/scripts/bootstrap-agent-adapters.mjs --agents opencode
240
+ ```
241
+
242
+ This creates `.claude/commands/qa-init.md` and/or `.opencode/commands/qa-init.md`.
243
+
244
+ **Step 3 — Open the agent and run `/qa-init`**
245
+
246
+ Open Claude Code or OpenCode in the target repository and run:
247
+
248
+ ```text
249
+ /qa-init
250
+ ```
251
+
252
+ > Use `/qa-init`, not `/init`. Both agents have a built-in `/init` command that is unrelated.
253
+
254
+ The guided command asks for:
255
+
256
+ - Base template (preset)
257
+ - Interface language
258
+ - Gherkin language
259
+ - Adapters to generate
260
+ - Optional framework overrides
261
+ - Whether to overwrite existing files
262
+
263
+ For a non-interactive direct form:
264
+
265
+ ```text
266
+ /qa-init --preset webdriverio-playwright-api --interface-language en --gherkin-language en --adapters claude,opencode
267
+ ```
268
+
269
+ **Step 4 — (Optional) Add QA context through the agent**
270
+
271
+ If you have a team QA knowledge folder in the repository:
272
+
273
+ ```text
274
+ /qa-init --qa-context qa-ai-knowledge
275
+ ```
276
+
277
+ The agent reads the context, summarizes it, proposes init defaults, asks for approval and then runs `init.mjs`.
278
+
279
+ **Step 5 — Run the full QA flow**
280
+
281
+ ```text
282
+ /qa-full-flow
283
+ ```
284
+
285
+ The agent walks through requirements intake, test design, sync plan proposal, traceability, automation feasibility and PR preparation.
286
+
287
+ **Available slash commands after initialization**
288
+
289
+ | Command | Purpose |
290
+ |---|---|
291
+ | `/qa-status` | Summarize config, artifacts, feature health and recommended next steps |
292
+ | `/qa-add-tests` | Add tests for a new RF without touching existing tests |
293
+ | `/qa-update-tests` | Review and update existing tests after RF changes |
294
+ | `/qa-automation-plan` | Classify feature files and plan automation backlog |
295
+ | `/qa-coverage` | Analyze functional coverage across RFs, manual and automated tests |
296
+ | `/qa-doctor` | Health checks for the setup |
297
+ | `/qa-validate-features` | Gherkin convention validation |
298
+ | `/qa-clean` | Preview or execute manifest-based cleanup |
299
+ | `/qa-config` | Import or export reusable config profiles |
300
+
301
+ **What to do next**
302
+
303
+ - Use `/qa-status` at the start of any new session to orient the agent.
304
+ - Run `/qa-add-tests` for each new requirement.
305
+ - Add more adapters when your team uses other agents:
306
+
307
+ ```bash
308
+ node .qa-ai/scripts/sync-agent-adapters.mjs --adapters all
309
+ ```
310
+
311
+ ---
312
+
313
+ ## Maintainer
314
+
315
+ Use this flow when you are contributing to the QA FlowKit source repository, adding new scripts, updating adapters or reviewing framework changes.
316
+
317
+ **Prerequisites**
318
+
319
+ - Node.js 20 or later.
320
+ - Git clone of the `QA_FlowKit` repository.
321
+
322
+ **Step 1 — Install nothing**
323
+
324
+ QA FlowKit uses only native Node.js APIs. No `npm install` is required to run the scripts.
325
+
326
+ **Step 2 — Run the full OSS validation suite**
327
+
328
+ This is the same command CI runs:
329
+
330
+ ```bash
331
+ npm run validate:oss-extraction
332
+ ```
333
+
334
+ It runs in order:
335
+
336
+ 1. `doctor.mjs` — validates the framework folder itself
337
+ 2. `validate-features.mjs --allow-empty` — allows no feature files in the source repo
338
+ 3. `validate-traceability.mjs --allow-empty --allow-missing` — allows missing workflow artifacts
339
+ 4. `validate-sync-plan.mjs --allow-empty --allow-missing` — same
340
+ 5. `validate-active-specialists.mjs --allow-missing` — allows missing active specialist index
341
+ 6. `test-validators.mjs` — native Node unit tests for shared validator helpers
342
+ 7. `smoke-test.mjs` — copy-folder install, adapters, no-overwrite and unsafe path rejection
343
+
344
+ All seven steps must pass before opening a PR.
345
+
346
+ **Step 3 — Run individual scripts during development**
347
+
348
+ | Script | When to run |
349
+ |---|---|
350
+ | `node .qa-ai/scripts/doctor.mjs` | After changing framework structure or required asset paths |
351
+ | `node .qa-ai/scripts/smoke-test.mjs` | After changing `init.mjs`, `config.mjs` or `bootstrap-agent-adapters.mjs` |
352
+ | `node .qa-ai/scripts/test-validators.mjs` | After changing `lib/markdown-table.mjs` or `lib/test-management-mapping.mjs` |
353
+ | `node .qa-ai/scripts/validate-features.mjs --allow-empty` | After changing `validate-features.mjs` |
354
+ | `node .qa-ai/scripts/validate-traceability.mjs --allow-empty --allow-missing` | After changing `validate-traceability.mjs` |
355
+ | `node .qa-ai/scripts/validate-sync-plan.mjs --allow-empty --allow-missing` | After changing `validate-sync-plan.mjs` |
356
+
357
+ **Step 4 — Check strict mode separately**
358
+
359
+ `doctor --strict` is designed for initialized target repos, not the source repo. Do not run it against the source repository without a `qa-ai.config.yaml`. It is tested through smoke tests, which you can run directly:
360
+
361
+ ```bash
362
+ node .qa-ai/scripts/smoke-test.mjs
363
+ ```
364
+
365
+ **Adding a new adapter**
366
+
367
+ 1. Add the template under `.qa-ai/adapters/<adapter-name>/`.
368
+ 2. Register the adapter name in `sync-agent-adapters.mjs`.
369
+ 3. Add the adapter to the `--adapters` accepted values in `init.mjs`.
370
+ 4. Add a smoke test path in `smoke-test.mjs`.
371
+ 5. Document the generated path in [Architecture](architecture.md) and README.
372
+
373
+ **Adding a new script**
374
+
375
+ 1. Place it under `.qa-ai/scripts/`.
376
+ 2. Use only native Node.js APIs (`node:fs`, `node:path`, `node:assert/strict`, etc.).
377
+ 3. Add an `npm run` entry in `package.json` if the script is user-facing.
378
+ 4. Add the script to `doctor.mjs` required script checks.
379
+ 5. Cover it in `smoke-test.mjs`.
380
+
381
+ **What to do next**
382
+
383
+ - Review [Architecture](architecture.md) for the full framework structure and safety model.
384
+ - Review [Backlog](backlog.md) for the current task list.
385
+ - See [CONTRIBUTING.md](../../CONTRIBUTING.md) for contribution guidelines.
@@ -0,0 +1,210 @@
1
+ # Implementation Guide for Codex Desktop
2
+
3
+ This document tells a Codex Desktop agent how to implement the QA FlowKit project from beginning to end.
4
+
5
+ ## Role
6
+
7
+ You are the implementation agent for an open-source QA AI workflow starter. You must create a portable folder-based framework that can be copied into any QA/automation repository and later migrated to an npm CLI.
8
+
9
+ ## Non-negotiable requirements
10
+
11
+ 1. The first version is folder-copy based, not npm-based.
12
+ 2. The project must be open-source ready.
13
+ 3. The project must be compatible with multiple AI coding CLIs.
14
+ 4. `AGENTS.md` is the generic compatibility layer.
15
+ 5. Claude Code receives a `.claude/` adapter.
16
+ 6. OpenCode receives a lightweight `.opencode/` adapter where supported.
17
+ 7. Codex receives `AGENTS.md` and `.codex/` documentation.
18
+ 8. Cline receives `.clinerules` and optional `.cline/` documentation.
19
+ 9. Continue receives `.continue/` rules/checks where applicable.
20
+ 10. Aider receives `.aider.conf.yml` plus documentation.
21
+ 11. Goose receives a recipe file.
22
+ 12. Gemini CLI receives `GEMINI.md` project context.
23
+ 13. Optional QA context folders are interpreted by agents, while `init.mjs` only validates and records the approved repo-local path.
24
+ 14. All destructive or external write actions must be proposal-first and approval-gated.
25
+ 15. The starter must not require real external tool credentials in the MVP.
26
+ 16. Specialist agents live under `.qa-ai/agents/specialists/available/`; `init.mjs` generates `.qa-ai/agents/specialists/active.md` from config.
27
+ 17. Generated test cases must be written in the configured Gherkin language: English (`en`) or Spanish (`es`).
28
+ 18. Manual tests must also have `.feature` files.
29
+ 19. Unit tests are out of scope.
30
+ 20. Agent-first initialization uses `/qa-init`, not `/init`, to avoid overriding native agent commands.
31
+ 21. Claude Code bootstrap commands live in `.claude/commands/`.
32
+ 22. OpenCode bootstrap commands live in `.opencode/commands/`.
33
+
34
+ ## Target project structure
35
+
36
+ Create or maintain this structure:
37
+
38
+ ```text
39
+ qa-flowkit/
40
+ README.md
41
+ LICENSE
42
+ CONTRIBUTING.md
43
+ CODE_OF_CONDUCT.md
44
+ SECURITY.md
45
+ ROADMAP.md
46
+ CHANGELOG.md
47
+ AGENTS.md
48
+ docs/qa-ai/
49
+ .qa-ai/
50
+ ```
51
+
52
+ The `.qa-ai/` folder is the portable framework.
53
+
54
+ ## Implementation order
55
+
56
+ ### Step 1 - Review existing files
57
+
58
+ Inspect:
59
+
60
+ - `README.md`
61
+ - `ROADMAP.md`
62
+ - `docs/qa-ai/backlog.md`
63
+ - `.qa-ai/scripts/`
64
+ - `.qa-ai/templates/`
65
+ - `.qa-ai/agents/`
66
+ - `.qa-ai/adapters/`
67
+
68
+ ### Step 2 - Implement or improve scripts
69
+
70
+ Required scripts:
71
+
72
+ - `.qa-ai/scripts/bootstrap-agent-adapters.mjs`
73
+ - `.qa-ai/scripts/init.mjs`
74
+ - `.qa-ai/scripts/doctor.mjs`
75
+ - `.qa-ai/scripts/clean.mjs`
76
+ - `.qa-ai/scripts/validate-features.mjs`
77
+ - `.qa-ai/scripts/smoke-test.mjs`
78
+ - `.qa-ai/scripts/sync-agent-adapters.mjs`
79
+
80
+ Scripts must be dependency-light and runnable with Node.js 20+.
81
+
82
+ ### Step 3 - Implement `init.mjs`
83
+
84
+ The script must:
85
+
86
+ 1. Run from the target repository root.
87
+ 2. Read a preset from `.qa-ai/presets/`.
88
+ 3. Generate `qa-ai.config.yaml` if it does not exist.
89
+ 4. Create `qa-ai-output/`.
90
+ 5. Create `features/` subfolders.
91
+ 6. Create configured UI test folders when `automation.ui.framework` is not `none` or `undecided`.
92
+ 7. Create configured API test folders when `automation.api.framework` is not `none` or `undecided`.
93
+ 8. Generate `AGENTS.md` if it does not exist.
94
+ 9. Generate `.opencode/` by default and generate other adapters only when requested.
95
+ 10. Never overwrite existing files unless `--force` is passed.
96
+ 11. Support agent-first bootstrapping through `/qa-init`, which delegates to this script.
97
+ 12. Reject configured output paths that are absolute or resolve outside the target repository.
98
+ 13. Generate starter `qa-ai-output/*.md` artifacts only when `--with-doc-templates` is passed.
99
+ 14. Generate the configured test management mapping file only when `--with-test-management-mapping` is passed.
100
+ 15. Accept `--qa-context <path>` for one repo-local QA knowledge folder, validate that it exists as a directory, and record it under `knowledge`.
101
+
102
+ ### Step 4 - Implement agent bootstrap
103
+
104
+ The script `.qa-ai/scripts/bootstrap-agent-adapters.mjs` must:
105
+
106
+ 1. Run after only `.qa-ai/` has been copied into a target repo.
107
+ 2. Copy `.qa-ai/adapters/claude/commands/qa-init.md` to `.claude/commands/qa-init.md`.
108
+ 3. Copy `.qa-ai/adapters/opencode/commands/qa-init.md` to `.opencode/commands/qa-init.md`.
109
+ 4. Support `--agents`, `--agent`, `--force` and `--help`.
110
+ 5. Never overwrite existing command files unless `--force` is passed.
111
+ 6. Record created bootstrap files in the init manifest.
112
+
113
+ ### Step 5 - Implement `doctor.mjs`
114
+
115
+ The script must:
116
+
117
+ 1. Validate `qa-ai.config.yaml` exists.
118
+ 2. Validate `.qa-ai/` exists.
119
+ 3. Validate required templates exist.
120
+ 4. Validate required agents exist.
121
+ 5. Validate configured feature and QA output paths exist.
122
+ 6. Warn if framework config files are missing.
123
+ 7. Validate configured QA context paths when `knowledge.enabled` is true.
124
+ 8. Produce clear pass/warn/fail output.
125
+
126
+ ### Step 6 - Implement `clean.mjs`
127
+
128
+ The script must:
129
+
130
+ 1. Read `.qa-ai/state/init-manifest.json`.
131
+ 2. Run as dry-run by default.
132
+ 3. Delete only tracked entries when `--force` is passed.
133
+ 4. Protect modified tracked files by comparing hashes.
134
+ 5. Require `--include-modified` before deleting modified tracked files.
135
+ 6. Remove directories only when they are tracked and empty.
136
+ 7. Never remove the copied `.qa-ai/` framework folder.
137
+ 8. Update the manifest after cleanup.
138
+
139
+ ### Step 7 - Implement `validate-features.mjs`
140
+
141
+ The script must scan `.feature` files and validate:
142
+
143
+ - One configured scenario keyword per file.
144
+ - The configured acceptance criteria label exists: `Acceptance Criteria:` for English or `Criterios de aceptación:` for Spanish.
145
+ - Required tags exist: `@priority:`, `@type:`, `@manual:`.
146
+ - Required tags include values, for example `@priority:high`.
147
+ - Spanish Gherkin files include `# language: es`.
148
+ - Feature title contains an RF-like identifier.
149
+ - Scenario title contains an RF-like identifier.
150
+
151
+ ### Step 7a - Implement smoke tests
152
+
153
+ The script `.qa-ai/scripts/smoke-test.mjs` must use native Node.js APIs to verify:
154
+
155
+ - Init preserves preset paths when framework flags match the preset defaults.
156
+ - Init records a valid `--qa-context` folder and rejects unsafe context paths.
157
+ - Generated files are not overwritten without `--force`.
158
+ - Unsafe configured paths outside the repository are rejected.
159
+
160
+ ### Step 8 - Implement adapter sync
161
+
162
+ The script must copy adapter templates from `.qa-ai/adapters/` into target repo paths.
163
+
164
+ Supported adapters:
165
+
166
+ - `generic`: `AGENTS.md`
167
+ - `claude`: `.claude/`
168
+ - `codex`: `.codex/`
169
+ - `opencode`: `.opencode/`
170
+ - `cline`: `.clinerules` and `.cline/`
171
+ - `continue`: `.continue/`
172
+ - `aider`: `.aider.conf.yml`
173
+ - `goose`: `.goose/recipes/qa-flowkit.yaml`
174
+ - `gemini`: `GEMINI.md`
175
+
176
+ Claude and OpenCode adapters must include slash command files for:
177
+
178
+ - `qa-init`
179
+ - `qa-full-flow`
180
+ - `qa-doctor`
181
+ - `qa-clean`
182
+ - `qa-validate-features`
183
+
184
+ These commands should be guided by default. When no arguments are provided, they must ask for required context before running scripts or modifying files. Direct flags remain supported as advanced mode.
185
+
186
+ ### Step 9 - Keep documentation updated
187
+
188
+ Whenever code changes, update:
189
+
190
+ - `README.md`
191
+ - `docs/qa-ai/architecture.md`
192
+ - `docs/qa-ai/agent-compatibility.md`
193
+ - `docs/qa-ai/backlog.md` if scope changes.
194
+
195
+ ## Acceptance criteria
196
+
197
+ - A user can copy `.qa-ai/` into a new repository.
198
+ - A user can run `node .qa-ai/scripts/bootstrap-agent-adapters.mjs --agents claude,opencode` and then use `/qa-init` in Claude Code or OpenCode.
199
+ - A user can run `node .qa-ai/scripts/init.mjs` for the default setup.
200
+ - The target repository receives `qa-ai.config.yaml`, QA output folders, feature folders and requested adapter files.
201
+ - A user can run `node .qa-ai/scripts/doctor.mjs` and receive a meaningful report.
202
+ - A user can run `node .qa-ai/scripts/clean.mjs` and receive a safe dry-run cleanup plan.
203
+ - A user can run `node .qa-ai/scripts/validate-features.mjs` and receive validation results.
204
+ - A maintainer can run `node .qa-ai/scripts/smoke-test.mjs` for core regression checks.
205
+ - Existing files are not overwritten by default.
206
+ - The project is ready to publish publicly on GitHub.
207
+
208
+ ## Done means
209
+
210
+ The project can be pushed to GitHub as open source and used by another person by following the README.
@@ -0,0 +1,50 @@
1
+ # npm CLI Migration
2
+
3
+ QA FlowKit now ships an npm CLI while preserving the portable `.qa-ai/` framework contract.
4
+
5
+ ## Primary flow
6
+
7
+ ```bash
8
+ npx qa-flowkit init
9
+ ```
10
+
11
+ `init` copies the packaged `.qa-ai/` folder into the target repository, runs the existing init logic, generates the default config and folders, syncs the default OpenCode adapter, and runs `doctor` in warn-only mode.
12
+
13
+ If `.qa-ai/` already exists, `init` stops safely and asks the user to run:
14
+
15
+ ```bash
16
+ npx qa-flowkit update
17
+ ```
18
+
19
+ ## CLI commands
20
+
21
+ - `qa-flowkit init`
22
+ - `qa-flowkit update`
23
+ - `qa-flowkit doctor`
24
+ - `qa-flowkit validate-target`
25
+ - `qa-flowkit validate-features`
26
+ - `qa-flowkit sync-adapters`
27
+ - `qa-flowkit help`
28
+ - `qa-flowkit clean`
29
+
30
+ All commands except `init` require `.qa-ai/` in the target repository and delegate to the existing `.qa-ai/scripts/*.mjs` implementation.
31
+
32
+ ## Compatibility contract
33
+
34
+ - `.qa-ai/` remains the portable framework folder.
35
+ - `qa-ai.config.yaml` remains the config file.
36
+ - `qa-ai-output/`, `features/` and `tests/` remain stable generated/output paths.
37
+ - Existing adapters remain valid.
38
+ - `update` replaces only `.qa-ai/`, preserving `.qa-ai/state/` and `.qa-ai/config-profiles/`.
39
+ - The manual folder-copy flow remains supported when npm is not available.
40
+
41
+ ## Release path
42
+
43
+ First npm release:
44
+
45
+ ```bash
46
+ npm view qa-flowkit version
47
+ npm publish --tag alpha
48
+ ```
49
+
50
+ If `npm view qa-flowkit version` returns an existing package, stop and choose a scoped fallback before publishing.
@@ -0,0 +1,17 @@
1
+ # Open-source Release Checklist
2
+
3
+ Before publishing to GitHub:
4
+
5
+ - [ ] Rename project if needed.
6
+ - [ ] Confirm license is correct.
7
+ - [ ] Remove company-specific names, URLs, credentials and project IDs.
8
+ - [ ] Ensure no private external tool details remain.
9
+ - [ ] Review README for public users.
10
+ - [ ] Add screenshots or diagrams if available.
11
+ - [ ] Add example usage.
12
+ - [ ] Add GitHub topics relevant to the configured starter scope.
13
+ - [ ] Create initial release tag `v0.1.0`.
14
+ - [ ] Add GitHub issue templates.
15
+ - [ ] Add PR template.
16
+ - [ ] Add security policy.
17
+ - [ ] Mark integrations as experimental where not fully automated.