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.
- package/.qa-ai/adapters/aider/.aider/README.md +25 -0
- package/.qa-ai/adapters/aider/.aider.conf.yml +6 -0
- package/.qa-ai/adapters/claude/agents/qa-workflow-orchestrator.md +18 -0
- package/.qa-ai/adapters/claude/commands/qa-add-tests.md +42 -0
- package/.qa-ai/adapters/claude/commands/qa-automation-plan.md +43 -0
- package/.qa-ai/adapters/claude/commands/qa-clean.md +42 -0
- package/.qa-ai/adapters/claude/commands/qa-config.md +51 -0
- package/.qa-ai/adapters/claude/commands/qa-coverage.md +46 -0
- package/.qa-ai/adapters/claude/commands/qa-doctor.md +11 -0
- package/.qa-ai/adapters/claude/commands/qa-full-flow.md +59 -0
- package/.qa-ai/adapters/claude/commands/qa-gate.md +36 -0
- package/.qa-ai/adapters/claude/commands/qa-help.md +30 -0
- package/.qa-ai/adapters/claude/commands/qa-init.md +70 -0
- package/.qa-ai/adapters/claude/commands/qa-status.md +56 -0
- package/.qa-ai/adapters/claude/commands/qa-update-tests.md +47 -0
- package/.qa-ai/adapters/claude/commands/qa-validate-features.md +36 -0
- package/.qa-ai/adapters/cline/.cline/README.md +25 -0
- package/.qa-ai/adapters/cline/.clinerules +9 -0
- package/.qa-ai/adapters/codex/README.md +44 -0
- package/.qa-ai/adapters/codex/prompts/implement-project.md +15 -0
- package/.qa-ai/adapters/continue/README.md +26 -0
- package/.qa-ai/adapters/continue/checks/qa-feature-conventions.md +15 -0
- package/.qa-ai/adapters/gemini/GEMINI.md +40 -0
- package/.qa-ai/adapters/generic/AGENTS.md +100 -0
- package/.qa-ai/adapters/goose/recipes/qa-flowkit.yaml +20 -0
- package/.qa-ai/adapters/opencode/README.md +57 -0
- package/.qa-ai/adapters/opencode/agents/qa-workflow.md +18 -0
- package/.qa-ai/adapters/opencode/commands/qa-add-tests.md +42 -0
- package/.qa-ai/adapters/opencode/commands/qa-automation-plan.md +43 -0
- package/.qa-ai/adapters/opencode/commands/qa-clean.md +42 -0
- package/.qa-ai/adapters/opencode/commands/qa-config.md +51 -0
- package/.qa-ai/adapters/opencode/commands/qa-coverage.md +46 -0
- package/.qa-ai/adapters/opencode/commands/qa-doctor.md +13 -0
- package/.qa-ai/adapters/opencode/commands/qa-full-flow.md +59 -0
- package/.qa-ai/adapters/opencode/commands/qa-gate.md +36 -0
- package/.qa-ai/adapters/opencode/commands/qa-help.md +30 -0
- package/.qa-ai/adapters/opencode/commands/qa-init.md +70 -0
- package/.qa-ai/adapters/opencode/commands/qa-status.md +56 -0
- package/.qa-ai/adapters/opencode/commands/qa-update-tests.md +47 -0
- package/.qa-ai/adapters/opencode/commands/qa-validate-features.md +36 -0
- package/.qa-ai/agents/README.md +39 -0
- package/.qa-ai/agents/api-testing-agent.md +73 -0
- package/.qa-ai/agents/automation-feasibility-agent.md +128 -0
- package/.qa-ai/agents/gherkin-test-design-agent.md +110 -0
- package/.qa-ai/agents/jira-task-agent.md +92 -0
- package/.qa-ai/agents/pr-agent.md +101 -0
- package/.qa-ai/agents/qa-context-intake-agent.md +75 -0
- package/.qa-ai/agents/qa-workflow-orchestrator.md +113 -0
- package/.qa-ai/agents/release-gate-agent.md +50 -0
- package/.qa-ai/agents/requirements-intake-agent.md +79 -0
- package/.qa-ai/agents/requirements-normalization-agent.md +80 -0
- package/.qa-ai/agents/specialists/available/appium.md +59 -0
- package/.qa-ai/agents/specialists/available/cypress.md +68 -0
- package/.qa-ai/agents/specialists/available/generic-test-design.md +117 -0
- package/.qa-ai/agents/specialists/available/jira.md +108 -0
- package/.qa-ai/agents/specialists/available/karate.md +97 -0
- package/.qa-ai/agents/specialists/available/playwright-api.md +87 -0
- package/.qa-ai/agents/specialists/available/playwright-ui.md +87 -0
- package/.qa-ai/agents/specialists/available/postman.md +108 -0
- package/.qa-ai/agents/specialists/available/rest-assured.md +103 -0
- package/.qa-ai/agents/specialists/available/selenium.md +91 -0
- package/.qa-ai/agents/specialists/available/testrail.md +85 -0
- package/.qa-ai/agents/specialists/available/webdriverio.md +81 -0
- package/.qa-ai/agents/test-design-system-agent.md +33 -0
- package/.qa-ai/agents/testrail-coverage-agent.md +84 -0
- package/.qa-ai/agents/testrail-sync-agent.md +96 -0
- package/.qa-ai/agents/webdriverio-implementation-agent.md +84 -0
- package/.qa-ai/presets/manual-only.yaml +65 -0
- package/.qa-ai/presets/selenium-jest-browserstack.yaml +72 -0
- package/.qa-ai/presets/webdriverio-playwright-api.yaml +85 -0
- package/.qa-ai/rules/api-testing.rules.md +7 -0
- package/.qa-ai/rules/approval.rules.md +8 -0
- package/.qa-ai/rules/automation.rules.md +7 -0
- package/.qa-ai/rules/gherkin.rules.md +12 -0
- package/.qa-ai/rules/testrail.rules.md +10 -0
- package/.qa-ai/rules/webdriverio.rules.md +9 -0
- package/.qa-ai/scripts/bootstrap-agent-adapters.mjs +127 -0
- package/.qa-ai/scripts/clean.mjs +243 -0
- package/.qa-ai/scripts/config.mjs +202 -0
- package/.qa-ai/scripts/doctor.mjs +383 -0
- package/.qa-ai/scripts/init.mjs +447 -0
- package/.qa-ai/scripts/lib/markdown-table.mjs +76 -0
- package/.qa-ai/scripts/lib/project-config.mjs +184 -0
- package/.qa-ai/scripts/lib/qa-next-steps.mjs +578 -0
- package/.qa-ai/scripts/lib/release-gate.mjs +66 -0
- package/.qa-ai/scripts/lib/test-design.mjs +92 -0
- package/.qa-ai/scripts/lib/test-management-mapping.mjs +73 -0
- package/.qa-ai/scripts/lib/utils.mjs +331 -0
- package/.qa-ai/scripts/qa-help.mjs +44 -0
- package/.qa-ai/scripts/smoke-npm-pack.mjs +187 -0
- package/.qa-ai/scripts/smoke-test.mjs +465 -0
- package/.qa-ai/scripts/sync-agent-adapters.mjs +121 -0
- package/.qa-ai/scripts/test-validators.mjs +334 -0
- package/.qa-ai/scripts/validate-active-specialists.mjs +106 -0
- package/.qa-ai/scripts/validate-features.mjs +277 -0
- package/.qa-ai/scripts/validate-release-gate.mjs +105 -0
- package/.qa-ai/scripts/validate-sync-plan.mjs +186 -0
- package/.qa-ai/scripts/validate-target.mjs +104 -0
- package/.qa-ai/scripts/validate-test-design.mjs +117 -0
- package/.qa-ai/scripts/validate-traceability.mjs +183 -0
- package/.qa-ai/templates/automation-feasibility-report.template.md +21 -0
- package/.qa-ai/templates/automation-implementation-plan.template.md +23 -0
- package/.qa-ai/templates/feature.template +13 -0
- package/.qa-ai/templates/jira-automation-task.template.md +25 -0
- package/.qa-ai/templates/pr-template.md +60 -0
- package/.qa-ai/templates/release-gate.template.yaml +16 -0
- package/.qa-ai/templates/requirement-analysis.template.md +17 -0
- package/.qa-ai/templates/test-design-proposal.template.md +26 -0
- package/.qa-ai/templates/test-design-system.template.md +15 -0
- package/.qa-ai/templates/test-management-mapping.template.json +18 -0
- package/.qa-ai/templates/testrail-coverage-analysis.template.md +17 -0
- package/.qa-ai/templates/testrail-sync-plan.template.md +22 -0
- package/.qa-ai/templates/traceability-matrix.template.md +4 -0
- package/.qa-ai/workflows/automation-analysis.md +23 -0
- package/.qa-ai/workflows/cleanup.md +52 -0
- package/.qa-ai/workflows/context-intake.md +66 -0
- package/.qa-ai/workflows/full-flow.md +55 -0
- package/.qa-ai/workflows/implementation.md +24 -0
- package/.qa-ai/workflows/intake.md +3 -0
- package/.qa-ai/workflows/pr.md +3 -0
- package/.qa-ai/workflows/release-gate.md +22 -0
- package/.qa-ai/workflows/test-design-system.md +33 -0
- package/.qa-ai/workflows/test-design.md +23 -0
- package/.qa-ai/workflows/testrail-sync.md +23 -0
- package/CHANGELOG.md +108 -0
- package/CODE_OF_CONDUCT.md +11 -0
- package/CONTRIBUTING.md +39 -0
- package/LICENSE +21 -0
- package/README.es.md +602 -0
- package/README.md +633 -0
- package/ROADMAP.md +107 -0
- package/SECURITY.md +18 -0
- package/bin/qa-flowkit.mjs +214 -0
- package/docs/qa-ai/agent-compatibility.md +100 -0
- package/docs/qa-ai/architecture.md +130 -0
- package/docs/qa-ai/backlog.md +393 -0
- package/docs/qa-ai/cleanup.md +104 -0
- package/docs/qa-ai/customizing-agents.md +148 -0
- package/docs/qa-ai/getting-started.md +385 -0
- package/docs/qa-ai/implementation-guide-for-codex.md +210 -0
- package/docs/qa-ai/npm-migration-plan.md +50 -0
- package/docs/qa-ai/open-source-release-checklist.md +17 -0
- package/docs/qa-ai/qa-help.md +76 -0
- package/docs/qa-ai/release-gate.md +60 -0
- package/docs/qa-ai/terminal-transcripts.md +316 -0
- package/docs/qa-ai/test-design-dual-mode.md +75 -0
- package/docs/qa-ai/troubleshooting.md +740 -0
- package/docs/qa-ai/workflow.md +147 -0
- 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.
|