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,393 @@
1
+ # Backlog
2
+
3
+ ## Product status
4
+
5
+ The folder-copy MVP is complete and the first target-repository pilot has confirmed that the core workflow works correctly. QA FlowKit is now in target-repo hardening: public, CI-backed and usable, with current work focused on strict validation, pilot notes, guided examples and packaging.
6
+
7
+ ## Epic 1 - Portable starter foundation
8
+
9
+ ### TASK-001 - Create portable `.qa-ai` folder
10
+
11
+ Status: Done
12
+
13
+ Acceptance Criteria:
14
+ - `.qa-ai/agents` exists.
15
+ - `.qa-ai/workflows` exists.
16
+ - `.qa-ai/rules` exists.
17
+ - `.qa-ai/templates` exists.
18
+ - `.qa-ai/scripts` exists.
19
+ - `.qa-ai/presets` exists.
20
+ - `.qa-ai/adapters` exists.
21
+
22
+ ### TASK-002 - Implement init script
23
+
24
+ Status: Done
25
+
26
+ Acceptance Criteria:
27
+ - Generates `qa-ai.config.yaml`.
28
+ - Creates QA output, features and configured test folders.
29
+ - Records optional `--qa-context` knowledge folders without interpreting them in Node.
30
+ - Keeps default init minimal: OpenCode adapter only, no starter QA document files unless requested.
31
+ - Does not overwrite files by default.
32
+ - Supports presets.
33
+ - Supports adapter generation and adapter selection.
34
+
35
+ ### TASK-003 - Implement agent bootstrap script
36
+
37
+ Status: Done
38
+
39
+ Acceptance Criteria:
40
+ - Runs after only `.qa-ai/` has been copied.
41
+ - Copies Claude Code `/qa-init` into `.claude/commands/`.
42
+ - Copies OpenCode `/qa-init` into `.opencode/commands/`.
43
+ - Does not overwrite files by default.
44
+ - Supports `--agents`, `--agent` and `--force`.
45
+ - Records created files in the manifest.
46
+
47
+ ### TASK-004 - Implement doctor script
48
+
49
+ Status: Done
50
+
51
+ Acceptance Criteria:
52
+ - Reports pass/warn/fail.
53
+ - Validates config, core folders and required framework assets.
54
+ - Validates configured QA output, features and tests paths.
55
+ - Validates configured QA context when `knowledge.enabled` is true.
56
+ - Warns for missing automation framework config files.
57
+
58
+ ### TASK-005 - Implement feature validator
59
+
60
+ Status: Done
61
+
62
+ Acceptance Criteria:
63
+ - Detects missing Acceptance Criteria.
64
+ - Detects multiple scenarios per file.
65
+ - Detects missing required tags.
66
+ - Detects required tags without values.
67
+ - Detects missing RF ID in filename, Feature and Scenario titles.
68
+ - Requires `# language: es` for Spanish Gherkin files.
69
+
70
+ ### TASK-006 - Implement clean script
71
+
72
+ Status: Done
73
+
74
+ Acceptance Criteria:
75
+ - Uses `.qa-ai/state/init-manifest.json`.
76
+ - Runs as dry-run by default.
77
+ - Deletes only tracked generated files and directories.
78
+ - Requires `--force` before deleting.
79
+ - Protects modified tracked files unless `--include-modified` is passed.
80
+ - Removes directories only when tracked and empty.
81
+
82
+ ## Epic 2 - Agent compatibility
83
+
84
+ ### TASK-007 - Add generic AGENTS.md
85
+
86
+ Status: Done
87
+
88
+ ### TASK-008 - Add Claude adapter
89
+
90
+ Status: Done
91
+
92
+ ### TASK-009 - Add adapters for other tools
93
+
94
+ Status: Done
95
+
96
+ Supported adapters:
97
+ - Codex
98
+ - OpenCode
99
+ - Cline
100
+ - Continue
101
+ - Aider
102
+ - Goose
103
+ - Gemini CLI
104
+
105
+ Slash command support:
106
+ - Claude Code includes `/qa-init`, `/qa-full-flow`, `/qa-doctor`, `/qa-clean` and `/qa-validate-features`.
107
+ - OpenCode includes `/qa-init`, `/qa-full-flow`, `/qa-doctor`, `/qa-clean` and `/qa-validate-features`.
108
+ - Root bootstrap commands are provided for agent-first initialization before full adapter sync.
109
+ - Slash commands are guided by default and ask for required context when called without arguments.
110
+
111
+ ## Epic 3 - QA workflow artifacts
112
+
113
+ ### TASK-010 - Add templates for workflow artifacts
114
+
115
+ Status: Done
116
+
117
+ Templates exist for requirement analysis, test management coverage, test design proposal, automation feasibility, automation implementation, traceability, test management sync, issue task drafts and PR summaries.
118
+
119
+ ### TASK-011 - Add QA rules
120
+
121
+ Status: Done
122
+
123
+ Rules exist for approval, Gherkin, test management, automation, UI automation and API testing.
124
+
125
+ ### TASK-011A - Add optional QA context intake
126
+
127
+ Status: Done
128
+
129
+ Acceptance Criteria:
130
+ - `init.mjs` supports one repo-local `--qa-context` folder.
131
+ - Presets include disabled `knowledge` defaults.
132
+ - Claude Code and OpenCode `/qa-init` read QA context before proposing defaults.
133
+ - `.qa-ai/agents/qa-context-intake-agent.md` exists.
134
+ - `.qa-ai/workflows/context-intake.md` exists.
135
+ - Future agents read QA context summary and decisions when enabled.
136
+
137
+ ## Epic 4 - Open-source readiness
138
+
139
+ ### TASK-012 - Add public GitHub documents
140
+
141
+ Status: Done
142
+
143
+ Acceptance Criteria:
144
+ - LICENSE exists.
145
+ - CONTRIBUTING.md exists.
146
+ - CODE_OF_CONDUCT.md exists.
147
+ - SECURITY.md exists.
148
+ - README.md is complete for MVP use.
149
+ - ROADMAP.md is complete.
150
+
151
+ ## Epic 5 - Stronger validators
152
+
153
+ ### TASK-013 - Add stronger local validators
154
+
155
+ Status: Done
156
+
157
+ Acceptance Criteria:
158
+ - Feature validation parses Gherkin structure line-by-line.
159
+ - Feature validation detects duplicate explicit test case IDs.
160
+ - Traceability validation checks feature identifiers against the configured matrix.
161
+ - Sync plan validation keeps test-management sync proposal-first and approval-gated.
162
+ - Active specialist validation checks `.qa-ai/agents/specialists/active.md` against `qa-ai.config.yaml`.
163
+ - CI runs the stronger validators with source-repo-safe empty/missing allowances.
164
+
165
+ ### TASK-014 - Add strict target repository validation
166
+
167
+ Status: Done
168
+
169
+ Acceptance Criteria:
170
+ - `doctor --strict` fails when configured target artifacts are missing.
171
+ - Strict mode documents source-repo vs target-repo expectations.
172
+ - Strict mode can be used in target repository CI.
173
+ - Strict mode checks that required QA workflow artifacts exist once generated by a real flow.
174
+ - Strict mode distinguishes warnings for optional adapters from failures for required configured assets.
175
+
176
+ ### TASK-015 - Document first pilot findings
177
+
178
+ Status: Planned
179
+
180
+ Acceptance Criteria:
181
+ - Capture what worked in the first target repository pilot.
182
+ - Capture friction points and improvement ideas without exposing private repository details.
183
+ - Add migration notes that help the next adopter run init, doctor, feature validation and traceability validation.
184
+ - Link the notes from README or the guided examples documentation.
185
+
186
+ ### TASK-016 - Strengthen traceability matrix validation
187
+
188
+ Status: Done
189
+
190
+ Acceptance Criteria:
191
+ - Validate that `traceability-matrix.md` contains a Markdown table.
192
+ - Require the configured traceability table columns from the template.
193
+ - Detect malformed rows, empty rows and rows without RF/test identifiers.
194
+ - Detect duplicate test case identifiers across matrix rows.
195
+ - Detect duplicate feature file entries across matrix rows.
196
+ - Preserve `--allow-empty` and `--allow-missing` behavior for source-repo CI.
197
+
198
+ ### TASK-017 - Strengthen test-management sync plan validation
199
+
200
+ Status: Done
201
+
202
+ Acceptance Criteria:
203
+ - Validate that sync plans contain a Markdown table of proposed actions.
204
+ - Require minimum columns: `ID`, `Proposed action`, `Approval status`.
205
+ - Detect malformed rows, empty rows and rows without RF/test identifiers.
206
+ - Detect duplicate identifiers across sync plan rows.
207
+ - Detect language that claims external writes already happened.
208
+ - Require proposal-first and approval-gated language.
209
+ - Preserve `--allow-empty` and `--allow-missing` behavior for source-repo CI.
210
+
211
+ ### TASK-018 - Extract shared Markdown table validation utilities
212
+
213
+ Status: Done
214
+
215
+ Acceptance Criteria:
216
+ - Add shared Markdown table parsing helpers under `.qa-ai/scripts/lib/`.
217
+ - Reuse the shared parser from traceability validation.
218
+ - Reuse the shared parser from sync-plan validation.
219
+ - Preserve current validator behavior and smoke coverage.
220
+
221
+ ### TASK-019 - Add native Node tests for shared validators
222
+
223
+ Status: Done
224
+
225
+ Acceptance Criteria:
226
+ - Add dependency-free tests using `node:assert/strict`.
227
+ - Cover valid Markdown table parsing.
228
+ - Cover missing separator rows.
229
+ - Cover missing required columns.
230
+ - Cover malformed row cell counts.
231
+ - Cover empty rows.
232
+ - Include the tests in `validate:oss-extraction`.
233
+
234
+ ### TASK-020 - Strengthen test-management mapping validation
235
+
236
+ Status: Done
237
+
238
+ Acceptance Criteria:
239
+ - Keep an empty mapping object `{}` valid for new repositories.
240
+ - Validate that non-empty mapping entries are keyed by RF/test IDs or `.feature` paths.
241
+ - Require each mapping entry value to be an object.
242
+ - Validate supported fields: `externalId`, `section`, `suite`, `status`, `lastReviewedAt`, `notes`.
243
+ - Detect duplicate `externalId` values.
244
+ - Detect secret-like field names or values.
245
+ - Cover the helper with native Node tests and sync-plan smoke tests.
246
+
247
+ ### TASK-021 - Add documented test-management mapping template
248
+
249
+ Status: Done
250
+
251
+ Acceptance Criteria:
252
+ - Add a JSON template documenting valid mapping shape.
253
+ - Keep generated target mapping files empty by default.
254
+ - Validate the template with native Node tests.
255
+ - Include the template in doctor required template checks.
256
+ - Document allowed fields and secret-handling expectations in README.
257
+
258
+ ### TASK-022 - Align adapter validation guidance with hardened validators
259
+
260
+ Status: Done
261
+
262
+ Acceptance Criteria:
263
+ - Update Claude Code command guidance for hardened target-repository validation.
264
+ - Update OpenCode command guidance with matching validation recommendations.
265
+ - Update Codex and generic adapter docs to mention strict doctor and full validators.
266
+ - Keep source-repo maintainer validation pointed at `npm run validate:oss-extraction`.
267
+
268
+ ### TASK-023 - Add target repository validation command
269
+
270
+ Status: Done
271
+
272
+ Acceptance Criteria:
273
+ - Add `validate-target.mjs` to run strict doctor and target validators in order.
274
+ - Support `--allow-empty`, `--allow-missing` and `--no-strict-doctor` for incomplete repositories.
275
+ - Add an npm script for target validation.
276
+ - Include the command in doctor checks.
277
+ - Cover success and failure paths in smoke tests.
278
+ - Update adapter guidance to prefer the aggregated command.
279
+
280
+ ## Epic 6 - Guided examples and public docs
281
+
282
+ ### TASK-024 - Add getting-started flows by user type
283
+
284
+ Status: Done
285
+
286
+ Acceptance Criteria:
287
+ - Add `docs/qa-ai/getting-started.md` with step-by-step flows for Manual QA, Automation QA, Agent-First and Maintainer profiles.
288
+ - Each flow includes prerequisites, exact commands, expected output and next steps.
289
+ - Link the document from the Documentation table in `README.md` and `README.es.md`.
290
+
291
+ ### TASK-025 - Add troubleshooting guide
292
+
293
+ Status: Done
294
+
295
+ Acceptance Criteria:
296
+ - Cover common failures for init, doctor, feature validation, traceability validation and CI.
297
+ - Include expected error messages and resolution steps.
298
+ - Link from README and getting-started.
299
+
300
+ ### TASK-026 - Add terminal transcripts for common workflows
301
+
302
+ Status: Done
303
+
304
+ Acceptance Criteria:
305
+ - Short terminal transcripts or screenshots for: default init, manual-only init, agent-first bootstrap, validate-features and validate-target.
306
+ - Transcripts embedded or linked from getting-started or a dedicated examples page.
307
+
308
+ ## Epic 7 - Intelligent guidance (BMAD-inspired)
309
+
310
+ ### TASK-028 - Add qa-help and qa-next-steps library
311
+
312
+ Status: Done
313
+
314
+ Acceptance Criteria:
315
+ - Add `qa-next-steps.mjs` with track-aware phase inspection and prioritized recommendations.
316
+ - Add `qa-help.mjs` CLI with `--json` support.
317
+ - Add `npm run qa:help`.
318
+
319
+ ### TASK-029 - Add QA workflow tracks
320
+
321
+ Status: Done
322
+
323
+ Acceptance Criteria:
324
+ - Add `project.qaTrack` to presets (`quick` for manual-only, `standard` for automation presets).
325
+ - Support `init.mjs --qa-track`.
326
+ - Document track skips in orchestrator and `full-flow.md`.
327
+
328
+ ### TASK-030 - Add /qa-help adapter commands
329
+
330
+ Status: Done
331
+
332
+ Acceptance Criteria:
333
+ - Add `qa-help.md` for Claude Code and OpenCode adapters.
334
+ - Update `qa-status` and `qa-full-flow` to reference `qa-help`.
335
+ - Add `docs/qa-ai/qa-help.md` and link from README.
336
+
337
+ ## Epic 8 - Quality gates (BMAD-inspired)
338
+
339
+ ### TASK-031 - Add release gate artifact and validator
340
+
341
+ Status: Done
342
+
343
+ Acceptance Criteria:
344
+ - Add `release-gate.template.yaml` and `validate-release-gate.mjs`.
345
+ - Support decisions PASS, CONCERNS, FAIL, WAIVED and PENDING (draft).
346
+ - Validate evidence paths exist and WAIVED requires approver plus waived_reason.
347
+
348
+ ### TASK-032 - Integrate release gate with enterprise track
349
+
350
+ Status: Done
351
+
352
+ Acceptance Criteria:
353
+ - Add `release-gate-agent.md`, `release-gate.md` workflow and `/qa-gate` adapter commands.
354
+ - Include release gate validation in `validate-target.mjs` for `enterprise` track.
355
+ - Extend `qa-help` enterprise phase list with `release-gate`.
356
+
357
+ ### TASK-027 - Add example manual-only repository
358
+
359
+ Status: Planned
360
+
361
+ Acceptance Criteria:
362
+ - Public repository with manual-only preset, feature files, traceability matrix and QA context folder.
363
+ - Passes `validate-target.mjs` in CI.
364
+ - Linked from README and getting-started.
365
+
366
+ ## Epic 9 - Test design dual-mode (BMAD TEA-inspired)
367
+
368
+ ### TASK-033 - Add system and per-RF test design artifacts
369
+
370
+ Status: Done
371
+
372
+ Acceptance Criteria:
373
+ - Add `test-design-system.template.md` and extend `test-design-proposal.template.md` for per-RF scope.
374
+ - Add `test-design-system-agent.md` and `test-design-system.md` workflow.
375
+ - Add `testDesign.systemPath` and `testDesign.proposalPath` to presets.
376
+ - Generate system template with `init.mjs --with-doc-templates`.
377
+
378
+ ### TASK-034 - Add test design validation and qa-help phases
379
+
380
+ Status: Done
381
+
382
+ Acceptance Criteria:
383
+ - Add `lib/test-design.mjs` and `validate-test-design.mjs` with `npm run qa:validate-test-design`.
384
+ - Add `test-design-system` and `test-design-rf` phases to `qa-next-steps.mjs` for standard and enterprise tracks.
385
+ - Include test design validation in `validate-target.mjs` for standard and enterprise tracks.
386
+ - Add `docs/qa-ai/test-design-dual-mode.md` and link from README files.
387
+
388
+ ## Future epics
389
+
390
+ - Example WebdriverIO + Playwright API repository.
391
+ - npm CLI migration.
392
+ - MCP read-only integration.
393
+ - Documentation site.
@@ -0,0 +1,104 @@
1
+ # Cleanup
2
+
3
+ QA FlowKit includes a conservative cleanup command for generated files:
4
+
5
+ ```bash
6
+ node .qa-ai/scripts/clean.mjs
7
+ ```
8
+
9
+ The command is designed for target repositories after `.qa-ai/` has been copied and `init.mjs` has run.
10
+
11
+ ## Why cleanup is manifest-based
12
+
13
+ Generated project files can become real user work quickly. For example, `qa-ai-output/test-design-proposal.md` may start as a template and later contain important analysis.
14
+
15
+ For that reason, cleanup does not delete by path pattern alone. It reads:
16
+
17
+ ```text
18
+ .qa-ai/state/init-manifest.json
19
+ ```
20
+
21
+ The manifest records what the framework actually created, along with SHA-256 hashes for files. If a tracked file has changed since it was created, cleanup skips it by default.
22
+
23
+ ## Dry-run default
24
+
25
+ Running clean without flags shows the plan and deletes nothing:
26
+
27
+ ```bash
28
+ node .qa-ai/scripts/clean.mjs
29
+ ```
30
+
31
+ The output uses actions such as:
32
+
33
+ - `WOULD DELETE FILE`: unchanged tracked file would be removed with `--force`.
34
+ - `WOULD REMOVE DIR`: tracked empty directory would be removed with `--force`.
35
+ - `SKIP`: entry is protected, modified, unsafe or non-empty.
36
+ - `MISSING`: entry no longer exists and would be removed from the manifest when executing.
37
+
38
+ ## Cleanup scopes
39
+
40
+ Generated config, QA output artifacts and generated empty folders:
41
+
42
+ ```bash
43
+ node .qa-ai/scripts/clean.mjs --generated
44
+ node .qa-ai/scripts/clean.mjs --generated --force
45
+ ```
46
+
47
+ Agent adapters:
48
+
49
+ ```bash
50
+ node .qa-ai/scripts/clean.mjs --adapters
51
+ node .qa-ai/scripts/clean.mjs --adapters --empty-dirs --force
52
+ ```
53
+
54
+ Tracked empty directories:
55
+
56
+ ```bash
57
+ node .qa-ai/scripts/clean.mjs --empty-dirs
58
+ node .qa-ai/scripts/clean.mjs --empty-dirs --force
59
+ ```
60
+
61
+ Everything tracked:
62
+
63
+ ```bash
64
+ node .qa-ai/scripts/clean.mjs --all
65
+ node .qa-ai/scripts/clean.mjs --all --force
66
+ ```
67
+
68
+ When no scope flag is passed, `--all` is assumed for the dry-run preview.
69
+
70
+ ## Modified files
71
+
72
+ Changed tracked files are skipped by default:
73
+
74
+ ```text
75
+ [SKIP] qa-ai-output/test-design-proposal.md (modified since init)
76
+ ```
77
+
78
+ To delete modified tracked files, the user must be explicit:
79
+
80
+ ```bash
81
+ node .qa-ai/scripts/clean.mjs --generated --force --include-modified
82
+ ```
83
+
84
+ Use this only when the generated content is intentionally being discarded.
85
+
86
+ ## Manifest pruning
87
+
88
+ After all tracked entries are removed, the manifest can be removed too:
89
+
90
+ ```bash
91
+ node .qa-ai/scripts/clean.mjs --all --force --prune-state
92
+ ```
93
+
94
+ Without `--prune-state`, the manifest remains and records any entries that were skipped.
95
+
96
+ ## Non-goals
97
+
98
+ The cleanup command does not:
99
+
100
+ - Remove the copied `.qa-ai/` framework folder.
101
+ - Delete untracked user files.
102
+ - Delete non-empty directories.
103
+ - Revert Git changes.
104
+ - Clean configured external tool data.
@@ -0,0 +1,148 @@
1
+ # Customizing Agents
2
+
3
+ QA FlowKit agents are Markdown role instructions. You can adapt them to your team, but keep the shared safety rules and validation scripts as the source of truth.
4
+
5
+ ## When to customize
6
+
7
+ Customize agents when your team needs stable behavior that should repeat across QA workflows:
8
+
9
+ - Requirement intake should use your team's RF naming conventions.
10
+ - Gherkin design should follow team vocabulary or scenario style.
11
+ - Automation planning should reflect your framework patterns.
12
+ - Test management planning should match your section, suite or ownership model.
13
+ - PR summaries should match your reviewer expectations.
14
+
15
+ Use `qa-ai.config.yaml` for project-specific paths, frameworks, languages and tools. Use `.qa-ai/rules/` for rules that must apply to every agent. Use agent files for phase-specific working style and output expectations.
16
+
17
+ ## Agent layers
18
+
19
+ | Layer | Location | Use for |
20
+ |---|---|---|
21
+ | Global agent protocol | `.qa-ai/agents/README.md` | Load order and phase mapping |
22
+ | Shared rules | `.qa-ai/rules/*.rules.md` | Non-negotiable behavior across agents |
23
+ | Phase agents | `.qa-ai/agents/*-agent.md` | Phase-specific instructions and outputs |
24
+ | Specialists | `.qa-ai/agents/specialists/available/*.md` | Tool/framework-specific guidance |
25
+ | Active specialists | `.qa-ai/agents/specialists/active.md` | Generated list of specialists for the current config |
26
+ | Adapter commands | `.qa-ai/adapters/*` and generated root tool folders | Tool-specific slash commands and onboarding |
27
+
28
+ ## Safe customization workflow
29
+
30
+ 1. Run `node .qa-ai/scripts/doctor.mjs` before changing agent behavior.
31
+ 2. Read `.qa-ai/rules/` and `.qa-ai/agents/README.md`.
32
+ 3. Identify the smallest layer that should change.
33
+ 4. Edit phase agents or specialist files first; avoid duplicating global rules.
34
+ 5. If a rule must apply everywhere, update `.qa-ai/rules/` and docs together.
35
+ 6. Run `npm run validate:oss-extraction` in the framework source repo, or the relevant validators in a target repo.
36
+ 7. Open a PR with examples of changed agent outputs when behavior changes.
37
+
38
+ ## What to change in phase agents
39
+
40
+ Phase agents are best for workflow-specific instructions:
41
+
42
+ - Required input questions.
43
+ - Output headings and artifact shape.
44
+ - Decision criteria for that phase.
45
+ - Examples of good and bad outputs.
46
+ - Escalation points where the agent must ask the user.
47
+
48
+ Examples:
49
+
50
+ - Add a required "Risk notes" section to `.qa-ai/agents/automation-feasibility-agent.md`.
51
+ - Tell `.qa-ai/agents/gherkin-test-design-agent.md` to prefer business-domain names over UI control names.
52
+ - Require `.qa-ai/agents/pr-agent.md` to include traceability IDs in every PR summary.
53
+
54
+ Avoid putting secrets, environment names, private URLs or credentials in agent files. Put team-specific private context in a target repository knowledge folder and reference it through `--qa-context`.
55
+
56
+ ## What to change in specialists
57
+
58
+ Specialists are best for framework and tool conventions:
59
+
60
+ - Page object conventions.
61
+ - API fixture patterns.
62
+ - Test data setup style.
63
+ - TestRail or Jira field expectations.
64
+ - Browser/device/cloud provider practices.
65
+
66
+ Add or update specialist files under:
67
+
68
+ ```text
69
+ .qa-ai/agents/specialists/available/
70
+ ```
71
+
72
+ Then make sure `qa-ai.config.yaml` points to matching tools/frameworks and regenerate active specialists:
73
+
74
+ ```bash
75
+ node .qa-ai/scripts/init.mjs --force
76
+ ```
77
+
78
+ or import a profile:
79
+
80
+ ```bash
81
+ node .qa-ai/scripts/config.mjs --import .qa-ai/config-profiles/team.yaml --force
82
+ ```
83
+
84
+ Validate the result:
85
+
86
+ ```bash
87
+ node .qa-ai/scripts/validate-active-specialists.mjs
88
+ ```
89
+
90
+ ## Adding a new specialist
91
+
92
+ 1. Create `.qa-ai/agents/specialists/available/<id>.md`.
93
+ 2. Add the specialist to `specialistCatalog` in `.qa-ai/scripts/lib/project-config.mjs`.
94
+ 3. Include aliases for the config values users are likely to enter.
95
+ 4. Add docs if the specialist introduces a new supported framework.
96
+ 5. Run:
97
+
98
+ ```bash
99
+ npm run validate:oss-extraction
100
+ ```
101
+
102
+ Specialist IDs should be lowercase kebab-case, for example `playwright-ui`, `rest-assured` or `mobile-webview`.
103
+
104
+ ## Adapter command customization
105
+
106
+ Adapter templates live under `.qa-ai/adapters/`. Generated tool files live in root folders such as `.claude/`, `.opencode/` or `.codex/`.
107
+
108
+ Prefer editing adapter templates first, then regenerate adapters:
109
+
110
+ ```bash
111
+ node .qa-ai/scripts/sync-agent-adapters.mjs --adapters claude,opencode --force
112
+ ```
113
+
114
+ Only edit generated root adapter files directly when you are customizing a single target repository and do not want the change to become part of the portable framework.
115
+
116
+ ## Keeping customizations portable
117
+
118
+ Keep portable framework changes in `.qa-ai/`. Keep target-repository-only knowledge in a repo-local folder such as:
119
+
120
+ ```text
121
+ qa-ai-knowledge/
122
+ ```
123
+
124
+ Then initialize with:
125
+
126
+ ```bash
127
+ node .qa-ai/scripts/init.mjs --qa-context qa-ai-knowledge
128
+ ```
129
+
130
+ Agents should summarize approved team context into:
131
+
132
+ ```text
133
+ qa-ai-output/qa-knowledge-summary.md
134
+ qa-ai-output/qa-init-decisions.md
135
+ ```
136
+
137
+ This keeps the framework open-source ready while still allowing private teams to adapt behavior.
138
+
139
+ ## Review checklist
140
+
141
+ Before merging agent customizations:
142
+
143
+ - [ ] No secrets, credentials, private URLs or personal data were added.
144
+ - [ ] Shared rules were updated only when behavior must apply globally.
145
+ - [ ] Phase-agent changes include expected output shape.
146
+ - [ ] Specialist changes match `qa-ai.config.yaml` aliases.
147
+ - [ ] Adapter changes were made in templates when they should be portable.
148
+ - [ ] `npm run validate:oss-extraction` passes.