qa-engineer 0.9.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 (232) hide show
  1. package/COMPATIBILITY.md +71 -0
  2. package/LICENSE +21 -0
  3. package/README.md +508 -0
  4. package/package.json +90 -0
  5. package/packages/installer/README.md +46 -0
  6. package/packages/installer/bin/qa.mjs +136 -0
  7. package/packages/installer/lib/agents/registry.mjs +209 -0
  8. package/packages/installer/lib/cli/commands.mjs +29 -0
  9. package/packages/installer/lib/cli/flags.mjs +64 -0
  10. package/packages/installer/lib/commands/doctor.mjs +190 -0
  11. package/packages/installer/lib/commands/install.mjs +291 -0
  12. package/packages/installer/lib/commands/onboard.mjs +163 -0
  13. package/packages/installer/lib/commands/repair.mjs +68 -0
  14. package/packages/installer/lib/commands/self-test.mjs +45 -0
  15. package/packages/installer/lib/commands/uninstall.mjs +167 -0
  16. package/packages/installer/lib/commands/update.mjs +69 -0
  17. package/packages/installer/lib/commands/verify.mjs +62 -0
  18. package/packages/installer/lib/constants.mjs +34 -0
  19. package/packages/installer/lib/core/bundle.mjs +124 -0
  20. package/packages/installer/lib/core/config.mjs +73 -0
  21. package/packages/installer/lib/core/conflict.mjs +29 -0
  22. package/packages/installer/lib/core/errors.mjs +29 -0
  23. package/packages/installer/lib/core/fs-safe.mjs +236 -0
  24. package/packages/installer/lib/core/hash.mjs +19 -0
  25. package/packages/installer/lib/core/lockfile.mjs +75 -0
  26. package/packages/installer/lib/core/logger.mjs +46 -0
  27. package/packages/installer/lib/core/manifest.mjs +89 -0
  28. package/packages/installer/lib/core/paths.mjs +74 -0
  29. package/packages/installer/lib/core/schema-validate.mjs +142 -0
  30. package/packages/installer/lib/core/skill-meta.mjs +75 -0
  31. package/packages/installer/lib/core/validate-install.mjs +152 -0
  32. package/packages/installer/lib/core/wrappers.mjs +91 -0
  33. package/packages/installer/lib/detect/environment.mjs +54 -0
  34. package/packages/installer/lib/detect/frameworks.mjs +94 -0
  35. package/packages/installer/lib/detect/project.mjs +126 -0
  36. package/packages/installer/lib/detect/recommend.mjs +85 -0
  37. package/packages/installer/lib/detect/scan.mjs +48 -0
  38. package/packages/installer/lib/ui/progress.mjs +32 -0
  39. package/packages/installer/lib/ui/theme.mjs +81 -0
  40. package/packages/installer/lib/version.mjs +47 -0
  41. package/packages/installer/package.json +28 -0
  42. package/packages/installer/schemas/qa-lock.schema.json +89 -0
  43. package/packages/installer/schemas/qa.config.schema.json +91 -0
  44. package/shared/analysis/lib/qa_analysis/__init__.py +11 -0
  45. package/shared/analysis/lib/qa_analysis/branding.json +9 -0
  46. package/shared/analysis/lib/qa_analysis/branding.py +175 -0
  47. package/shared/analysis/lib/qa_analysis/cli.py +129 -0
  48. package/shared/analysis/lib/qa_analysis/context.py +233 -0
  49. package/shared/analysis/lib/qa_analysis/contracts.py +158 -0
  50. package/shared/analysis/lib/qa_analysis/diff_guard.py +327 -0
  51. package/shared/analysis/lib/qa_analysis/discovery.py +113 -0
  52. package/shared/analysis/lib/qa_analysis/evidence.py +128 -0
  53. package/shared/analysis/lib/qa_analysis/har.py +58 -0
  54. package/shared/analysis/lib/qa_analysis/junit.py +80 -0
  55. package/shared/analysis/lib/qa_analysis/redaction.py +99 -0
  56. package/shared/analysis/lib/qa_analysis/taxonomy.py +98 -0
  57. package/shared/analysis/schemas/context.schema.json +82 -0
  58. package/shared/diagnostics/lib/qa_diagnostics/__init__.py +13 -0
  59. package/shared/diagnostics/lib/qa_diagnostics/cli.py +124 -0
  60. package/shared/diagnostics/lib/qa_diagnostics/engine.py +143 -0
  61. package/shared/diagnostics/lib/qa_diagnostics/internal_contracts.py +75 -0
  62. package/shared/diagnostics/lib/qa_diagnostics/prioritization.py +101 -0
  63. package/shared/diagnostics/lib/qa_diagnostics/repair.py +72 -0
  64. package/shared/diagnostics/lib/qa_diagnostics/root_cause.py +89 -0
  65. package/shared/diagnostics/lib/qa_diagnostics/timeline.py +71 -0
  66. package/shared/diagnostics/schemas/internal/analysis-result.schema.json +28 -0
  67. package/shared/diagnostics/schemas/internal/diagnosis.schema.json +55 -0
  68. package/shared/diagnostics/schemas/internal/execution-result-min.schema.json +34 -0
  69. package/shared/frameworks/cypress/lib/cypress_analysis.py +27 -0
  70. package/shared/frameworks/playwright/lib/playwright_analysis.py +167 -0
  71. package/shared/frameworks/registry.json +150 -0
  72. package/shared/frameworks/registry.mjs +37 -0
  73. package/shared/frameworks/registry.schema.json +74 -0
  74. package/shared/frameworks/selenium/lib/selenium_analysis.py +28 -0
  75. package/shared/frameworks/webdriverio/lib/webdriverio_analysis.py +24 -0
  76. package/shared/tooling/qa_tool.py +127 -0
  77. package/skills/README.md +31 -0
  78. package/skills/qa/README.md +19 -0
  79. package/skills/qa/SKILL.md +52 -0
  80. package/skills/qa/examples/routing.md +86 -0
  81. package/skills/qa/references/routing-map.md +33 -0
  82. package/skills/qa-api/README.md +19 -0
  83. package/skills/qa-api/SKILL.md +68 -0
  84. package/skills/qa-api/contracts/api-result.schema.json +51 -0
  85. package/skills/qa-api/examples/graphql-review.md +43 -0
  86. package/skills/qa-api/references/authentication.md +45 -0
  87. package/skills/qa-api/references/deterministic-tooling.md +128 -0
  88. package/skills/qa-api/references/evidence-and-reporting.md +66 -0
  89. package/skills/qa-api/references/graphql.md +44 -0
  90. package/skills/qa-api/references/rest.md +45 -0
  91. package/skills/qa-api/references/websocket.md +44 -0
  92. package/skills/qa-audit/README.md +19 -0
  93. package/skills/qa-audit/SKILL.md +70 -0
  94. package/skills/qa-audit/contracts/audit-result.schema.json +63 -0
  95. package/skills/qa-audit/examples/accessibility-audit.md +46 -0
  96. package/skills/qa-audit/references/accessibility.md +44 -0
  97. package/skills/qa-audit/references/deterministic-tooling.md +128 -0
  98. package/skills/qa-audit/references/evidence-and-reporting.md +66 -0
  99. package/skills/qa-audit/references/performance.md +44 -0
  100. package/skills/qa-audit/references/security.md +43 -0
  101. package/skills/qa-audit/references/visual-testing.md +44 -0
  102. package/skills/qa-debug/README.md +19 -0
  103. package/skills/qa-debug/SKILL.md +76 -0
  104. package/skills/qa-debug/contracts/debug-result.schema.json +121 -0
  105. package/skills/qa-debug/examples/failed-login.md +61 -0
  106. package/skills/qa-debug/examples/locator-break.md +59 -0
  107. package/skills/qa-debug/examples/network-timeout.md +61 -0
  108. package/skills/qa-debug/examples/successful-debug.md +62 -0
  109. package/skills/qa-debug/references/confidence-model.md +26 -0
  110. package/skills/qa-debug/references/deterministic-tooling.md +128 -0
  111. package/skills/qa-debug/references/diagnostic-engine.md +36 -0
  112. package/skills/qa-debug/references/evidence-and-reporting.md +66 -0
  113. package/skills/qa-debug/references/evidence-model.md +41 -0
  114. package/skills/qa-debug/references/failure-taxonomy.md +44 -0
  115. package/skills/qa-debug/references/finding-prioritization.md +43 -0
  116. package/skills/qa-debug/references/investigation-workflow.md +48 -0
  117. package/skills/qa-debug/references/recommendation-ranking.md +34 -0
  118. package/skills/qa-debug/references/root-cause-analysis.md +49 -0
  119. package/skills/qa-debug/references/timeline-builder.md +37 -0
  120. package/skills/qa-example/README.md +19 -0
  121. package/skills/qa-example/SKILL.md +60 -0
  122. package/skills/qa-example/contracts/self-check-report.schema.json +65 -0
  123. package/skills/qa-example/examples/self-check.md +53 -0
  124. package/skills/qa-example/references/example-domain.md +28 -0
  125. package/skills/qa-example/references/skill-format-notes.md +26 -0
  126. package/skills/qa-explore/README.md +22 -0
  127. package/skills/qa-explore/SKILL.md +87 -0
  128. package/skills/qa-explore/contracts/explore-result.schema.json +249 -0
  129. package/skills/qa-explore/examples/attached-test-cases.md +70 -0
  130. package/skills/qa-explore/examples/screenshot-proof-finding.md +50 -0
  131. package/skills/qa-explore/examples/url-smoke-explore.md +80 -0
  132. package/skills/qa-explore/references/accessibility.md +44 -0
  133. package/skills/qa-explore/references/api-replay.md +48 -0
  134. package/skills/qa-explore/references/browser-adapters.md +51 -0
  135. package/skills/qa-explore/references/evidence-and-reporting.md +66 -0
  136. package/skills/qa-explore/references/evidence-capture.md +54 -0
  137. package/skills/qa-explore/references/exploratory-qa.md +52 -0
  138. package/skills/qa-explore/references/finding-taxonomy.md +47 -0
  139. package/skills/qa-explore/references/performance.md +44 -0
  140. package/skills/qa-explore/references/pipeline.md +74 -0
  141. package/skills/qa-explore/references/report-pipeline.md +69 -0
  142. package/skills/qa-explore/references/security.md +43 -0
  143. package/skills/qa-explore/references/test-case-intake.md +44 -0
  144. package/skills/qa-fix/README.md +19 -0
  145. package/skills/qa-fix/SKILL.md +70 -0
  146. package/skills/qa-fix/contracts/fix-result.schema.json +132 -0
  147. package/skills/qa-fix/examples/repair-plan.md +56 -0
  148. package/skills/qa-fix/references/deterministic-tooling.md +128 -0
  149. package/skills/qa-fix/references/diagnostic-engine.md +36 -0
  150. package/skills/qa-fix/references/evidence-and-reporting.md +66 -0
  151. package/skills/qa-fix/references/repair-strategy.md +48 -0
  152. package/skills/qa-fix/references/root-cause-analysis.md +49 -0
  153. package/skills/qa-fix/references/suite-extension.md +73 -0
  154. package/skills/qa-flaky/README.md +19 -0
  155. package/skills/qa-flaky/SKILL.md +67 -0
  156. package/skills/qa-flaky/contracts/flaky-result.schema.json +62 -0
  157. package/skills/qa-flaky/examples/flaky-locator.md +46 -0
  158. package/skills/qa-flaky/references/deterministic-tooling.md +128 -0
  159. package/skills/qa-flaky/references/evidence-and-reporting.md +66 -0
  160. package/skills/qa-flaky/references/flakiness.md +48 -0
  161. package/skills/qa-flaky/references/retry.md +44 -0
  162. package/skills/qa-flaky/references/waiting-strategies.md +44 -0
  163. package/skills/qa-generate/README.md +42 -0
  164. package/skills/qa-generate/SKILL.md +83 -0
  165. package/skills/qa-generate/contracts/generation-result.schema.json +124 -0
  166. package/skills/qa-generate/examples/bootstrap-new-framework.md +24 -0
  167. package/skills/qa-generate/examples/extend-existing-suite.md +26 -0
  168. package/skills/qa-generate/references/code-style.md +29 -0
  169. package/skills/qa-generate/references/evidence-and-reporting.md +66 -0
  170. package/skills/qa-generate/references/framework-selection.md +88 -0
  171. package/skills/qa-generate/references/generation-strategy.md +48 -0
  172. package/skills/qa-generate/references/naming-conventions.md +27 -0
  173. package/skills/qa-generate/references/playwright-conventions.md +23 -0
  174. package/skills/qa-generate/references/playwright-generation.md +41 -0
  175. package/skills/qa-generate/references/playwright-project-discovery.md +42 -0
  176. package/skills/qa-generate/references/project-bootstrap.md +54 -0
  177. package/skills/qa-generate/references/repository-analysis.md +43 -0
  178. package/skills/qa-generate/references/suite-extension.md +73 -0
  179. package/skills/qa-generate/references/template-selection.md +48 -0
  180. package/skills/qa-generate/templates/playwright/api.ts +36 -0
  181. package/skills/qa-generate/templates/playwright/base-page.ts +14 -0
  182. package/skills/qa-generate/templates/playwright/data.ts +25 -0
  183. package/skills/qa-generate/templates/playwright/env.example +16 -0
  184. package/skills/qa-generate/templates/playwright/example.spec.ts +14 -0
  185. package/skills/qa-generate/templates/playwright/fixtures.ts +28 -0
  186. package/skills/qa-generate/templates/playwright/framework-readme.md +39 -0
  187. package/skills/qa-generate/templates/playwright/login.page.ts +26 -0
  188. package/skills/qa-generate/templates/playwright/playwright.config.ts +28 -0
  189. package/skills/qa-generate/templates/playwright/utils.ts +18 -0
  190. package/skills/qa-init/README.md +20 -0
  191. package/skills/qa-init/SKILL.md +72 -0
  192. package/skills/qa-init/examples/initialize-a-repo.md +91 -0
  193. package/skills/qa-init/references/detection-guide.md +76 -0
  194. package/skills/qa-init/references/deterministic-tooling.md +128 -0
  195. package/skills/qa-init/references/evidence-and-reporting.md +66 -0
  196. package/skills/qa-init/templates/context.md +68 -0
  197. package/skills/qa-report/README.md +19 -0
  198. package/skills/qa-report/SKILL.md +72 -0
  199. package/skills/qa-report/contracts/report-result.schema.json +186 -0
  200. package/skills/qa-report/examples/release-report.md +68 -0
  201. package/skills/qa-report/references/deterministic-tooling.md +128 -0
  202. package/skills/qa-report/references/diagnostic-engine.md +36 -0
  203. package/skills/qa-report/references/evidence-and-reporting.md +66 -0
  204. package/skills/qa-report/references/finding-prioritization.md +43 -0
  205. package/skills/qa-report/references/recommendation-ranking.md +34 -0
  206. package/skills/qa-report/references/report-aggregation.md +44 -0
  207. package/skills/qa-review/README.md +19 -0
  208. package/skills/qa-review/SKILL.md +58 -0
  209. package/skills/qa-review/contracts/review-result.schema.json +59 -0
  210. package/skills/qa-review/examples/suite-review.md +51 -0
  211. package/skills/qa-review/references/anti-patterns.md +49 -0
  212. package/skills/qa-review/references/assertion-patterns.md +45 -0
  213. package/skills/qa-review/references/evidence-and-reporting.md +66 -0
  214. package/skills/qa-review/references/fixtures.md +45 -0
  215. package/skills/qa-review/references/page-objects.md +45 -0
  216. package/skills/qa-run/README.md +22 -0
  217. package/skills/qa-run/SKILL.md +92 -0
  218. package/skills/qa-run/contracts/execution-plan.schema.json +132 -0
  219. package/skills/qa-run/contracts/execution-result.schema.json +204 -0
  220. package/skills/qa-run/examples/execute-playwright.md +89 -0
  221. package/skills/qa-run/examples/plan-a-run.md +83 -0
  222. package/skills/qa-run/references/artifact-collector.md +40 -0
  223. package/skills/qa-run/references/browser-launch.md +39 -0
  224. package/skills/qa-run/references/command-builder.md +39 -0
  225. package/skills/qa-run/references/deterministic-tooling.md +128 -0
  226. package/skills/qa-run/references/environment-detection.md +37 -0
  227. package/skills/qa-run/references/evidence-and-reporting.md +66 -0
  228. package/skills/qa-run/references/execution-strategy.md +54 -0
  229. package/skills/qa-run/references/playwright-artifacts.md +29 -0
  230. package/skills/qa-run/references/playwright-execution.md +48 -0
  231. package/skills/qa-run/references/playwright-project-discovery.md +42 -0
  232. package/skills/qa-run/references/report-normalization.md +49 -0
@@ -0,0 +1,71 @@
1
+ # Compatibility
2
+
3
+ This document records which AI coding agents the pack targets, how each one discovers and invokes skills, and which runtimes the pack requires. It is the authoritative compatibility reference and is updated with every release.
4
+
5
+ **Test-framework** support (Playwright, Selenium, Cypress, WebdriverIO) is a separate matrix — see [docs/compatibility/framework-matrix.md](docs/compatibility/framework-matrix.md). This document covers AI-agent compatibility and runtimes.
6
+
7
+ ## Release compatibility
8
+
9
+ No versions have been released yet. Beginning with the first tagged release, this section will carry a matrix of pack versions against tested agent versions and the Agent Skills specification revision each release was validated against.
10
+
11
+ ## The standard this pack targets
12
+
13
+ Skills are authored against the open [Agent Skills specification](https://agentskills.io/specification): one directory per skill containing a `SKILL.md` (YAML frontmatter plus Markdown body) with optional `references/`, `scripts/`, and `assets/` directories. The specification is community-maintained and does not yet publish formally versioned releases; this pack tracks the living specification and records the revision it validated against at each release. See [ADR-0002](docs/architecture/ADR-0002-agent-skill-standard.md) for why the pack is standard-native by design.
14
+
15
+ ## Target agent matrix
16
+
17
+ Verified against official documentation as of July 2026. Entries marked *unverified* rely on secondary sources and will be confirmed before the relevant integration ships.
18
+
19
+ | Agent | Native `SKILL.md` support | Skill discovery path the pack targets | Invocation surface | Planned tier |
20
+ | --- | --- | --- | --- | --- |
21
+ | Claude Code | Yes (format originator) | `.claude/skills/` (project), plugins | `/skill-name`, auto-activation | Tier 1 |
22
+ | OpenAI Codex CLI | Yes | `.agents/skills/` | `$skill-name` mention, `/skills` menu, auto-activation | Tier 1 |
23
+ | OpenCode | Yes | `.agents/skills/`, `.opencode/skills/` | native `skill` tool (auto); slash via generated commands | Tier 1 |
24
+ | Cursor | Yes (2.4+) | `.agents/skills/`, `.cursor/skills/` | `/skill-name`, auto-activation | Tier 2 |
25
+ | GitHub Copilot | Yes (VS Code, JetBrains, CLI, cloud) | `.agents/skills/`, `.github/skills/` | `/skill-name` in VS Code; auto-activation elsewhere | Tier 2 |
26
+ | Gemini CLI | Yes | `.agents/skills/`, `.gemini/skills/` | auto-activation; slash via generated commands | Tier 2 |
27
+ | Antigravity | Yes | `.agents/skills/` | auto-activation; slash via workflows (*path unverified*) | Tier 2 |
28
+ | Kimi / other Agent Skills hosts | Yes (copy) | `.agents/skills/` (or product-specific path) | auto-activation / product slash | Tier 2 |
29
+
30
+ Two facts shape the integration design:
31
+
32
+ 1. Six of the seven primary agents read `.agents/skills/` directly; Claude Code additionally requires `.claude/skills/`. A single canonical skill set therefore covers every target with copies, not conversions. Additional hosts (Kimi and peers) use the same copy path — see [docs/installation/other-agents.md](docs/installation/other-agents.md).
33
+ 2. Description-driven auto-activation is the only invocation channel available on all primary agents. Slash-command ergonomics on Gemini CLI, OpenCode, and Antigravity require thin generated wrappers from the installer (`qa install`).
34
+
35
+ ## Support tiers
36
+
37
+ | Tier | Meaning | Bar |
38
+ | --- | --- | --- |
39
+ | Tier 1 — CI-tested | Exercised by the automated evaluation harness on every release | Headless execution available and evaluations passing |
40
+ | Tier 2 — community-verified | Installed and manually smoke-checked; issues triaged with priority | Documented install path and at least one verified walkthrough |
41
+
42
+ The tier column in the matrix above is the **planned** tier — the level each agent is expected to occupy. It is not achieved status. No release has occurred and the M10 evaluation harness has not run, so **no agent has yet met the Tier 1 bar** (headless execution exercised by passing evaluations). Until M10 runs, treat every entry as a target, not a verified result. Tier assignments are re-examined at every release and when an agent ships format changes.
43
+
44
+ ## Runtime requirements
45
+
46
+ | Requirement | Status | Used for |
47
+ | --- | --- | --- |
48
+ | Python 3.8+ | Required for analysis | The deterministic analysis toolkit (`shared/analysis/lib/`) and framework analyzers — standard library only, no packages |
49
+ | Node.js 18+ | Required for the installer CLI | `npx qa-engineer` / `qa install` / `qa doctor` / `qa self-test` (interactive onboarding uses `--yes` / `--ci` in non-TTY and CI) |
50
+
51
+ ## Operating systems
52
+
53
+ | OS | Status |
54
+ | --- | --- |
55
+ | Linux | Verified — every CI job runs on Ubuntu |
56
+ | macOS | Expected to work; not covered by CI |
57
+ | Windows | Expected to work; **not yet verified end to end** |
58
+
59
+ The installer uses Node's platform-independent path handling, and the skills
60
+ invoke their bundled engine through a launcher (`scripts/qa_tool.py`) that needs
61
+ no shell features — the command shape is identical in bash, zsh, PowerShell, and
62
+ cmd.exe. The one difference on Windows is the interpreter name: use `python` where
63
+ `python3` is not on PATH.
64
+
65
+ Until a Windows run is confirmed, that row says "expected", not "supported".
66
+
67
+ The analysis toolkit is standard-library-only Python, so it runs on any Python 3.8+ interpreter with nothing to install. Requirements are declared per skill via the specification's `compatibility` frontmatter field, and the pack degrades gracefully: skills describe a manual fallback whenever a runtime or optional integration (such as an MCP server) is unavailable.
68
+
69
+ ## Reporting compatibility problems
70
+
71
+ If a listed agent fails to discover or activate the pack's skills once they ship, file a bug report with the agent name, agent version, and the discovery path in use. Compatibility reports are triaged ahead of feature work.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 QA Automation Pack contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,508 @@
1
+ # QA Automation Pack
2
+
3
+ > Teach your AI coding assistant to work like a senior QA engineer — and stop it from telling you tests pass when they don't.
4
+
5
+ [![Version](https://img.shields.io/badge/version-0.9.0-blue.svg)](CHANGELOG.md)
6
+ [![Status](https://img.shields.io/badge/status-public%20preview-orange.svg)](docs/release/v0.9-release-checklist.md)
7
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
8
+ [![Node](https://img.shields.io/badge/node-%E2%89%A518.18-339933.svg)](#step-1--check-your-prerequisites)
9
+ [![Python](https://img.shields.io/badge/python-%E2%89%A53.8-3776AB.svg)](#step-1--check-your-prerequisites)
10
+ [![Agent Skills](https://img.shields.io/badge/Agent%20Skills-spec--native-6E56CF.svg)](https://agentskills.io)
11
+ [![CI](https://github.com/abisheik88/qa-engineer/actions/workflows/ci.yml/badge.svg)](https://github.com/abisheik88/qa-engineer/actions/workflows/ci.yml)
12
+ [![Tests](https://img.shields.io/badge/tests-235%20passing-success.svg)](#how-this-is-verified)
13
+
14
+ **This page is everything you need.** Install, first run, every command, and what to do when something breaks — no other document required.
15
+
16
+ ---
17
+
18
+ ## Contents
19
+
20
+ 1. [What this is, in plain language](#what-this-is-in-plain-language)
21
+ 2. [Is this for me?](#is-this-for-me)
22
+ 3. [Step 1 — Check your prerequisites](#step-1--check-your-prerequisites)
23
+ 4. [Step 2 — Install it](#step-2--install-it)
24
+ 5. [Step 3 — Confirm it worked](#step-3--confirm-it-worked)
25
+ 6. [Step 4 — Your first real task](#step-4--your-first-real-task)
26
+ 7. [What got installed](#what-got-installed)
27
+ 8. [All twelve commands](#all-twelve-commands)
28
+ 9. [Common tasks](#common-tasks)
29
+ 10. [When something goes wrong](#when-something-goes-wrong)
30
+ 11. [Updating and uninstalling](#updating-and-uninstalling)
31
+ 12. [How it works](#how-it-works)
32
+ 13. [What it does *not* do](#what-it-does-not-do)
33
+ 14. [How this is verified](#how-this-is-verified)
34
+ 15. [Going deeper](#going-deeper)
35
+ 16. [Contributing, support, licence](#contributing)
36
+
37
+ ---
38
+
39
+ ## What this is, in plain language
40
+
41
+ If you use an **AI coding assistant** — Claude Code, Cursor, GitHub Copilot, Codex CLI, and others — you have probably asked it to write or fix tests. It usually tries. It also, fairly often:
42
+
43
+ - writes brittle tests that break next week,
44
+ - "fixes" a failing test by **deleting the assertion** or adding `skip`,
45
+ - and then tells you everything passes.
46
+
47
+ That last one is the dangerous part. A green test suite that checks nothing is worse than a red one, because you stop looking.
48
+
49
+ **This project installs twelve QA skills into your project** that your AI assistant reads and follows. Think of it as handing your assistant a senior QA engineer's playbook, plus a set of tools it must actually run — so its answers come from real measurements instead of guesses.
50
+
51
+ <details>
52
+ <summary><b>New to this? Three terms explained</b></summary>
53
+
54
+ - **AI coding assistant / agent** — a tool where you chat with an AI inside your codebase, and it can read and edit files. Claude Code, Cursor, and GitHub Copilot are examples.
55
+ - **Skill** — a Markdown file with instructions your assistant reads when a task matches. It's like a checklist the AI follows. This project installs twelve of them into a folder in your project.
56
+ - **Slash command** — how you trigger a skill: you type `/qa-run` in your assistant's chat. If your assistant doesn't support slash commands, plain English works too ("run my tests and report the result").
57
+
58
+ You do not need to learn a new language, framework, or config file. You install once and then talk to your assistant normally.
59
+
60
+ </details>
61
+
62
+ ## Is this for me?
63
+
64
+ **Yes, if:** you have a project with tests (or want some), you use an AI coding assistant, and you would like its QA work to be trustworthy.
65
+
66
+ **Probably not, if:** you don't use an AI assistant for coding — the skills are instructions *for the assistant*, so without one there is nothing to read them.
67
+
68
+ **Works best with Playwright** today. Selenium, Cypress, and WebdriverIO are detected and their results are understood, but running and generating tests live is currently Playwright-only. See [framework support](#framework-support).
69
+
70
+ ## Step 1 — Check your prerequisites
71
+
72
+ You need two things. Run these two commands to check — copy and paste them exactly:
73
+
74
+ ```bash
75
+ node --version
76
+ python3 --version
77
+ ```
78
+
79
+ You want **Node 18.18 or newer** and **Python 3.8 or newer**. If both print a version number that is high enough, skip ahead to [Step 2](#step-2--install-it).
80
+
81
+ <details>
82
+ <summary><b>"command not found" — how to install Node.js</b></summary>
83
+
84
+ Node.js gives you the `npx` command used to install this pack.
85
+
86
+ - **macOS** — `brew install node` (needs [Homebrew](https://brew.sh)), or download from [nodejs.org](https://nodejs.org).
87
+ - **Windows** — download the LTS installer from [nodejs.org](https://nodejs.org) and run it.
88
+ - **Linux** — `sudo apt install nodejs npm` (Debian/Ubuntu), or use [nvm](https://github.com/nvm-sh/nvm).
89
+
90
+ Then re-run `node --version`. Take the **LTS** version if offered a choice.
91
+
92
+ </details>
93
+
94
+ <details>
95
+ <summary><b>"command not found" — how to install Python</b></summary>
96
+
97
+ Python runs the analysis tools that read your test results. It uses only Python's built-in library — there is nothing extra to install, no `pip install` step.
98
+
99
+ - **macOS** — `brew install python3`, or download from [python.org](https://python.org).
100
+ - **Windows** — install from [python.org](https://python.org) and **tick "Add Python to PATH"** during setup. Then use `python --version` if `python3` is not found.
101
+ - **Linux** — `sudo apt install python3` (Debian/Ubuntu).
102
+
103
+ **Can you skip Python?** Yes, but you shouldn't. Without it the skills fall back to the AI reading files by eye, and they will mark their results *degraded* to tell you so. The whole point of this project is that the numbers come from tools, not guesses.
104
+
105
+ </details>
106
+
107
+ You also need **an AI coding assistant** open on your project — Claude Code, Cursor, GitHub Copilot, Codex CLI, OpenCode, Gemini CLI, Antigravity, or Kimi.
108
+
109
+ ## Step 2 — Install it
110
+
111
+ Open a terminal, go to **your own project folder** (the one with your code in it, not this repository), and run:
112
+
113
+ ```bash
114
+ npx qa-engineer --yes --project .
115
+ ```
116
+
117
+ That's the whole installation. Line by line:
118
+
119
+ | Part | Meaning |
120
+ | --- | --- |
121
+ | `npx` | Comes with Node. Downloads and runs a tool without installing it permanently. |
122
+ | `qa-engineer` | The name of this package. |
123
+ | `--yes` | Don't ask me questions, just use sensible defaults. |
124
+ | `--project .` | Install into the current folder (`.` means "here"). |
125
+
126
+ > **First time you run `npx`,** it may ask `Need to install the following packages … Ok to proceed? (y)`. That is npm asking permission to download the package. Type `y` and press Enter.
127
+
128
+ You should see something like this:
129
+
130
+ ```text
131
+ › project: /Users/you/my-app
132
+ › agents: agent-skills
133
+ › skills: 13
134
+ › ██████████████████ 100% Configuration complete
135
+ ✓ installed 335 file(s); lockfile /Users/you/my-app/qa-lock.json
136
+ ```
137
+
138
+ <details>
139
+ <summary><b>Not published to npm yet — install from a local copy</b></summary>
140
+
141
+ This is a public preview and the package is not on the npm registry yet, so the command above will not find it. Until it is published, install from a clone:
142
+
143
+ ```bash
144
+ git clone <this-repo-url>
145
+ cd qa-engineer
146
+ npm install
147
+ npm run qa -- --yes --project /path/to/your-app
148
+ ```
149
+
150
+ Replace `/path/to/your-app` with the full path to your project. Everything else in this README works the same; just use `npm run qa -- <command>` wherever it says `npx qa-engineer <command>`.
151
+
152
+ </details>
153
+
154
+ ## Step 3 — Confirm it worked
155
+
156
+ ```bash
157
+ npx qa-engineer self-test --project .
158
+ ```
159
+
160
+ Real output from a healthy install:
161
+
162
+ ```text
163
+ ✓ [PASS] lockfile: qa-lock.json present (335 files, pack 0.9.0)
164
+ ✓ [PASS] integrity: all installed files match lockfile hashes
165
+ ✓ [PASS] skills: 13 skill(s) installed
166
+ ✓ [PASS] contracts: 12 contract schema(s) present
167
+ ✓ [PASS] engine: deterministic engine bundled under .agents/skills/qa-init/scripts/lib
168
+ ✓ [PASS] python-imports: Python imports OK (python3 Python 3.12.3)
169
+ ✓ [PASS] node: Node v24.18.0
170
+ ✓ self-test PASSED
171
+ ```
172
+
173
+ Every line `[PASS]`? You're done installing. If anything says `[FAIL]`, jump to [When something goes wrong](#when-something-goes-wrong).
174
+
175
+ ## Step 4 — Your first real task
176
+
177
+ Now switch from the terminal to **your AI assistant**, opened on the same project.
178
+
179
+ **Type this in the chat:**
180
+
181
+ ```text
182
+ /qa-init
183
+ ```
184
+
185
+ > If your assistant doesn't recognise slash commands, type this instead:
186
+ > *"Analyse this repository and set up the QA context file."*
187
+
188
+ The assistant will read your `package.json`, your test config, and your folder layout, then write a file called `.qa/context.md` describing your project — which test framework you use, where your tests live, how they run. Every other command reads that file, so this one comes first.
189
+
190
+ **Then run your tests:**
191
+
192
+ ```text
193
+ /qa-run
194
+ ```
195
+
196
+ The assistant runs your test suite, and — this is the part that matters — reads the results **with a tool rather than by eye**, then writes a report to `qa-artifacts/execution-result.json`. Here's a real one:
197
+
198
+ ```json
199
+ {
200
+ "classification": "passed",
201
+ "summary": "Smoke run on Playwright/Chromium (headless): 2 passed, 0 failed, 0 skipped in 3422ms.",
202
+ "evidence": [
203
+ { "type": "command", "description": "Runner exited zero", "source": "exit code 0" },
204
+ { "type": "report", "description": "Playwright JSON reporter, normalized",
205
+ "source": "test-results/results.json", "excerpt": "{\"expected\": 2, \"unexpected\": 0}" }
206
+ ],
207
+ "tests": { "total": 2, "passed": 2, "failed": 0, "skipped": 0, "flaky": 0 }
208
+ }
209
+ ```
210
+
211
+ Notice `evidence`. Every claim points at where it came from. And if the assistant tried to write `"passed"` while the test runner had actually failed, **the file would be rejected as invalid** — that rule is built into the format, not just requested politely.
212
+
213
+ **If something failed:**
214
+
215
+ ```text
216
+ /qa-debug
217
+ ```
218
+
219
+ You get a diagnosis with a cause, an owner, and a next step:
220
+
221
+ ```json
222
+ {
223
+ "classification": "assertion-failure",
224
+ "rootCause": {
225
+ "ownership": "test-author-or-product",
226
+ "recommendation": "Confirm whether the app or the expectation is wrong; fix whichever is genuinely incorrect."
227
+ }
228
+ }
229
+ ```
230
+
231
+ That's the core loop: **`/qa-init` once, then `/qa-run` and `/qa-debug` whenever you need them.**
232
+
233
+ ## What got installed
234
+
235
+ Four things appeared in your project:
236
+
237
+ ```text
238
+ your-app/
239
+ ├── .agents/skills/ ← the twelve skills your assistant reads (plus one demo)
240
+ │ ├── qa-run/
241
+ │ ├── qa-debug/
242
+ │ └── …
243
+ ├── .claude/skills/ ← same files again, only if you use Claude Code
244
+ ├── qa-lock.json ← a list of every installed file and its checksum
245
+ └── (later) .qa/context.md and qa-artifacts/ ← created when you run the commands
246
+ ```
247
+
248
+ **Nothing else was touched.** Your source code, your tests, and your config are untouched by installation. `qa-lock.json` records exactly what was written so `uninstall` can remove precisely that and nothing more.
249
+
250
+ Worth adding to your `.gitignore` if you don't want the artifacts committed:
251
+
252
+ ```gitignore
253
+ qa-artifacts/
254
+ .qa/backups/
255
+ ```
256
+
257
+ Most teams **do** commit `.agents/skills/` and `qa-lock.json`, so everyone on the team gets the same skills.
258
+
259
+ ## All twelve commands
260
+
261
+ Type these in your AI assistant's chat, not the terminal.
262
+
263
+ | Command | What it does | Changes your files? |
264
+ | --- | --- | --- |
265
+ | `/qa-init` | Looks at your project and writes `.qa/context.md`. **Run this first.** | Writes `.qa/context.md` |
266
+ | `/qa-run` | Runs your test suite and reports a verified result | Writes to `qa-artifacts/` |
267
+ | `/qa-debug` | Works out *why* a test failed and who should fix it | Writes to `qa-artifacts/` |
268
+ | `/qa-fix` | Plans a safe repair for a failure. Explains the change; **you** apply it | No |
269
+ | `/qa-generate` | Writes new tests, page objects, and fixtures | **Yes** — new files; existing files only with your permission |
270
+ | `/qa-review` | Reviews your test code and suggests improvements | No |
271
+ | `/qa-flaky` | Finds tests that pass and fail randomly, and explains why | No |
272
+ | `/qa-api` | Checks REST, GraphQL, and WebSocket behaviour | No |
273
+ | `/qa-audit` | Audits a page for accessibility, performance, security, visual issues | No |
274
+ | `/qa-report` | Rolls everything up into a summary and a "ready to ship?" verdict | Writes to `qa-artifacts/` |
275
+ | `/qa-explore` | Explores a live URL in a browser and reports bugs with screenshots | Writes to `qa-artifacts/` |
276
+ | `/qa` | Not sure which to use? Describe your problem and this picks one | No |
277
+
278
+ **Only `/qa-generate` writes test code.** It adds new files freely and asks before changing anything you already have. `/qa-fix` deliberately writes nothing — it hands you a reviewed plan, because a repair you didn't see is a repair you can't trust.
279
+
280
+ ## Common tasks
281
+
282
+ **"Run my tests and tell me honestly if they passed"**
283
+ `/qa-run`
284
+
285
+ **"This test keeps failing and I don't know why"**
286
+ `/qa-run` then `/qa-debug`
287
+
288
+ **"I have no tests at all — write me some"**
289
+ `/qa-init` then `/qa-generate write tests for the login page`
290
+
291
+ **"Is this branch safe to ship?"**
292
+ `/qa-run` then `/qa-report` — you get a `ready`, `ready-with-risks`, `not-ready`, or `insufficient-data` verdict, and it cannot say `ready` while any test is failing.
293
+
294
+ **"This test passes sometimes and fails other times"**
295
+ `/qa-flaky`
296
+
297
+ **"Review the tests in my pull request"**
298
+ `/qa-review the tests in src/checkout/`
299
+
300
+ **"Check my staging site for problems"**
301
+ `/qa-explore https://staging.example.com`
302
+
303
+ ## When something goes wrong
304
+
305
+ Start here. It fixes most problems:
306
+
307
+ ```bash
308
+ npx qa-engineer doctor --project .
309
+ ```
310
+
311
+ `doctor` checks your environment and your install and prints a hint for anything it finds. Items marked `warn` with an "optional" hint are fine to ignore.
312
+
313
+ ### The commands don't appear in my assistant
314
+
315
+ 1. **Are you in the right folder?** Run `ls .agents/skills` in your project — you should see `qa-run`, `qa-debug`, and the rest. If not, the install went somewhere else; re-run it with `--project .` from the correct folder.
316
+ 2. **Restart your assistant.** Most only look for new skills at startup.
317
+ 3. **Try plain English.** Instead of `/qa-run`, ask *"run my tests and report the result"*. Slash-command support varies by assistant; the skills work either way.
318
+ 4. **Check your assistant reads the standard path.** Most read `.agents/skills/`. Claude Code uses `.claude/skills/`, which the installer also writes when it detects Claude. To force it: `npx qa-engineer install --agent claude-code --yes --project .`
319
+
320
+ ### "refusing to overwrite N file(s) not owned by a previous install"
321
+
322
+ You already have a file where the pack wants to write one. It will not silently overwrite your work. Either move your file, or overwrite deliberately:
323
+
324
+ ```bash
325
+ npx qa-engineer install --yes --force --project .
326
+ ```
327
+
328
+ `--force` backs everything up to `.qa/backups/<timestamp>/` first.
329
+
330
+ ### A skill says the engine is missing, or results are "degraded"
331
+
332
+ The Python tools aren't reachable. Fix in this order:
333
+
334
+ ```bash
335
+ python3 --version # is Python installed at all?
336
+ npx qa-engineer repair --project . # reinstall the bundled tools
337
+ npx qa-engineer doctor --project . # should now say "bundled engine runs cleanly"
338
+ ```
339
+
340
+ "Degraded" is not a bug — it is the skill telling you it could not run a tool and therefore trusts its own answer less. That's the honest behaviour.
341
+
342
+ ### `verify` says files drifted
343
+
344
+ Someone edited an installed skill file. Restore them:
345
+
346
+ ```bash
347
+ npx qa-engineer repair --project .
348
+ ```
349
+
350
+ If the edit was deliberate, note that `update` will overwrite it again — keep customisations outside `.agents/skills/`.
351
+
352
+ ### The assistant claims tests passed but they didn't
353
+
354
+ That is the exact failure this project exists to prevent, and it has three defences: the skill instructions, the result format that rejects `passed` alongside a failing test run, and the diff guard that blocks "fixes" which delete assertions. If you see it happen anyway, **please report it** — a concrete example is the most valuable bug report this project can receive. Include which assistant and model you used.
355
+
356
+ ### Still stuck
357
+
358
+ ```bash
359
+ npx qa-engineer doctor --project . --json
360
+ ```
361
+
362
+ Open an issue and paste that output. It answers most questions before they're asked.
363
+
364
+ ## Updating and uninstalling
365
+
366
+ ```bash
367
+ npx qa-engineer update --project . # refresh to the current version
368
+ npx qa-engineer verify --project . # check nothing was corrupted
369
+ npx qa-engineer uninstall --project . # remove everything it installed
370
+ ```
371
+
372
+ `uninstall` removes exactly the files listed in `qa-lock.json`, backs each one up first, and leaves everything else alone. If you edited an installed file it stops and tells you rather than destroying your change; `--force` proceeds anyway. Add `--dry-run` to any command to see what it *would* do without doing it.
373
+
374
+ ## How it works
375
+
376
+ The core idea in one line: **tools produce the facts, the AI explains them.**
377
+
378
+ ```text
379
+ You type /qa-run in your assistant
380
+
381
+
382
+ ┌───────────────────────────────────┐
383
+ │ The skill (a Markdown checklist) │ tells the assistant what to do,
384
+ │ .agents/skills/qa-run/SKILL.md │ in what order, and what it may not claim
385
+ └───────────────────────────────────┘
386
+
387
+
388
+ ┌───────────────────────────────────┐
389
+ │ Your test runner │ npx playwright test …
390
+ └───────────────────────────────────┘
391
+ │ raw output, exit code
392
+
393
+ ┌───────────────────────────────────┐
394
+ │ Bundled Python tools │ count the results, classify the failure,
395
+ │ (installed inside the skill) │ redact secrets — no guessing
396
+ └───────────────────────────────────┘
397
+ │ facts
398
+
399
+ ┌───────────────────────────────────┐
400
+ │ A checked result file │ qa-artifacts/execution-result.json
401
+ │ qa-artifacts/*.json │ rejected if the claim contradicts the numbers
402
+ └───────────────────────────────────┘
403
+
404
+
405
+ The assistant explains it to you in plain language
406
+ ```
407
+
408
+ Why it matters: the assistant never counts your test results itself. A tested parser does. And the result file has rules baked in — `"passed"` requires a zero exit code *and* zero failing tests — so a dishonest summary isn't merely discouraged, it's **invalid**.
409
+
410
+ Deeper detail: **[ARCHITECTURE.md](ARCHITECTURE.md)**.
411
+
412
+ ### Framework support
413
+
414
+ | Framework | Detected | Runs your tests | Writes new tests | Understands results |
415
+ | --- | --- | --- | --- | --- |
416
+ | **Playwright** | Yes | **Yes** | **Yes** | Full |
417
+ | Selenium | Yes | Not yet | Not yet | Yes |
418
+ | Cypress | Yes | Not yet | Not yet | Yes |
419
+ | WebdriverIO | Yes | Not yet | Not yet | Yes |
420
+
421
+ "Not yet" means exactly that: the support is written and tested, but running and generating live is deliberately limited to Playwright until there's real proof behind the others. Debugging, reporting, and flake detection work for all four.
422
+
423
+ ### Assistant support
424
+
425
+ Claude Code, Cursor, OpenAI Codex CLI, OpenCode, Gemini CLI, GitHub Copilot, Antigravity, Kimi, and any other assistant that reads the [Agent Skills](https://agentskills.io) standard. The installer detects which you use; when it can't tell, it says so and installs to the shared path that all of them read.
426
+
427
+ ## What it does *not* do
428
+
429
+ Stated plainly, so nothing surprises you:
430
+
431
+ - **It is not a test runner.** It drives Playwright; it doesn't replace it.
432
+ - **It doesn't run your tests in CI by itself.** The skills need an AI assistant to read them. The installer works fine in CI, and `verify` makes a good pipeline check.
433
+ - **It can't stop an assistant that ignores it.** The defences make dishonest answers *fail loudly* rather than pass quietly — they can't force a model to read the skill.
434
+ - **It has not been benchmarked across AI models.** The tooling is thoroughly tested (235 automated tests). How faithfully each assistant follows the skills is measured for one model, in one session, and [documented as such](docs/release/v1-excellence-audit.md). If you need a published accuracy number before adopting a tool, this one doesn't have it yet.
435
+ - **It sends nothing anywhere.** No telemetry, no network calls, no accounts.
436
+ - **It is version 0.9.0** — a public preview. Solid and heavily tested, still pre-1.0.
437
+
438
+ ## How this is verified
439
+
440
+ Everything below is reproducible from a clone with the command beside it.
441
+
442
+ | Evidence | Command |
443
+ | --- | --- |
444
+ | 152 analysis, framework, and branding tests | `python3 shared/analysis/lib/run_tests.py` |
445
+ | 28 diagnostic engine tests · 5 seam tests | `PYTHONPATH=shared/analysis/lib:shared/diagnostics/lib python3 -m unittest discover -s shared/diagnostics/lib/tests` |
446
+ | 50 installer tests — including security and repeated-use stress | `npm test` |
447
+ | 21 evaluation cases, including deliberately dishonest outputs the scorer must reject | `npm run validate:evals` |
448
+ | 4 real AI-produced results, scored | `python3 tests/evals/run_live.py --captures claude-opus-5` |
449
+ | 17 repository checks — including "documentation matches implementation" | `npm run validate:skills` … |
450
+
451
+ ## Going deeper
452
+
453
+ Nothing below is required to use the pack.
454
+
455
+ | Document | What it answers |
456
+ | --- | --- |
457
+ | [docs/preview-tester-guide.md](docs/preview-tester-guide.md) | **Testing this preview for me?** Start here — 20 minutes, and what to send back |
458
+ | [docs/faq.md](docs/faq.md) | Why prompts and not a plugin? Does it work offline? Can I fork it? |
459
+ | [docs/troubleshooting.md](docs/troubleshooting.md) | Longer troubleshooting, with exit codes |
460
+ | [ARCHITECTURE.md](ARCHITECTURE.md) | How the pieces fit and which boundaries hold them apart |
461
+ | [docs/capability-matrix.md](docs/capability-matrix.md) | **Canonical:** what works and how well proven it is |
462
+ | [docs/report-format.md](docs/report-format.md) | Consuming the JSON output from your own tooling |
463
+ | [docs/installation/](docs/installation/README.md) | Per-assistant installation guides |
464
+ | [COMPATIBILITY.md](COMPATIBILITY.md) | Supported assistants, runtimes, and frameworks |
465
+ | [docs/architecture/README.md](docs/architecture/README.md) | 15 decision records explaining every major choice |
466
+ | [docs/release/v0.9-release-checklist.md](docs/release/v0.9-release-checklist.md) | Exactly what was verified for this release, and what wasn't |
467
+ | [CHANGELOG.md](CHANGELOG.md) | What changed, including what regressed |
468
+
469
+ ### Roadmap
470
+
471
+ ```text
472
+ ▸ NOW — v0.9 public preview
473
+ Twelve commands · verified results · safe installer · Playwright live
474
+
475
+ ▸ NEXT — v1.0
476
+ Measured accuracy across real AI assistants
477
+ A second framework running live · contracts frozen
478
+
479
+ ▸ LATER
480
+ CI-log and language-specific knowledge · more frameworks · docs site
481
+ ```
482
+
483
+ Detail: **[ROADMAP.md](ROADMAP.md)**.
484
+
485
+ ## Contributing
486
+
487
+ The most useful contribution right now is **using it on a real project and reporting what your assistant actually did** — especially if it claimed something untrue. That is the evidence this project most needs.
488
+
489
+ Also welcome: a new framework adapter ([runbook](docs/contributing/add-a-framework.md)), better QA knowledge, or challenging a decision record.
490
+
491
+ Start with [CONTRIBUTING.md](CONTRIBUTING.md). Everyone is bound by the [Code of Conduct](CODE_OF_CONDUCT.md).
492
+
493
+ ## Support
494
+
495
+ | Need | Where |
496
+ | --- | --- |
497
+ | Something is broken | Run `npx qa-engineer doctor --project .`, then read [When something goes wrong](#when-something-goes-wrong) |
498
+ | A question | GitHub Discussions — see [SUPPORT.md](SUPPORT.md) |
499
+ | A bug | GitHub Issues, with your `doctor --json` output |
500
+ | A security problem | **Privately** — see [SECURITY.md](SECURITY.md). Never a public issue. |
501
+
502
+ One volunteer maintainer, no SLA. [MAINTAINERS.md](MAINTAINERS.md) says what that means for you.
503
+
504
+ ## Licence
505
+
506
+ [MIT](LICENSE) © QA Automation Pack contributors. Use it commercially, fork it, modify it.
507
+
508
+ Designed and developed by [Abisheik](https://abisheik.dev).