qa-skills 3.0.0 → 3.1.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 (262) hide show
  1. package/README.md +20 -149
  2. package/bin/cli.js +1 -40
  3. package/package.json +23 -26
  4. package/dist/agents/registry.d.ts +0 -5
  5. package/dist/agents/registry.d.ts.map +0 -1
  6. package/dist/agents/registry.js +0 -101
  7. package/dist/agents/registry.js.map +0 -1
  8. package/dist/agents/types.d.ts +0 -9
  9. package/dist/agents/types.d.ts.map +0 -1
  10. package/dist/agents/types.js +0 -2
  11. package/dist/agents/types.js.map +0 -1
  12. package/dist/dependencies.d.ts +0 -21
  13. package/dist/dependencies.d.ts.map +0 -1
  14. package/dist/dependencies.js +0 -125
  15. package/dist/dependencies.js.map +0 -1
  16. package/dist/installer.d.ts +0 -25
  17. package/dist/installer.d.ts.map +0 -1
  18. package/dist/installer.js +0 -437
  19. package/dist/installer.js.map +0 -1
  20. package/dist/scaffold.d.ts +0 -27
  21. package/dist/scaffold.d.ts.map +0 -1
  22. package/dist/scaffold.js +0 -182
  23. package/dist/scaffold.js.map +0 -1
  24. package/skills/qa-accessibility-test-writer/SKILL.md +0 -127
  25. package/skills/qa-accessibility-test-writer/references/axe-core-patterns.md +0 -349
  26. package/skills/qa-accessibility-test-writer/references/best-practices.md +0 -184
  27. package/skills/qa-accessibility-test-writer/references/wcag-tests.md +0 -331
  28. package/skills/qa-api-contract-curator/SKILL.md +0 -104
  29. package/skills/qa-api-contract-curator/references/breaking-changes.md +0 -363
  30. package/skills/qa-api-contract-curator/references/openapi-structure.md +0 -404
  31. package/skills/qa-browser-data-collector/SKILL.md +0 -132
  32. package/skills/qa-browser-data-collector/references/data-collection-checklist.md +0 -91
  33. package/skills/qa-browser-data-collector/references/playwright-mcp-patterns.md +0 -113
  34. package/skills/qa-bug-ticket-creator/SKILL.md +0 -148
  35. package/skills/qa-bug-ticket-creator/references/bug-report-format.md +0 -149
  36. package/skills/qa-bug-ticket-creator/references/severity-guide.md +0 -81
  37. package/skills/qa-bug-ticket-creator/templates/bug-ticket-template.md +0 -39
  38. package/skills/qa-changelog-analyzer/SKILL.md +0 -134
  39. package/skills/qa-changelog-analyzer/references/git-analysis-patterns.md +0 -138
  40. package/skills/qa-changelog-analyzer/references/impact-mapping.md +0 -120
  41. package/skills/qa-clickup-integration/SKILL.md +0 -166
  42. package/skills/qa-clickup-integration/references/api-patterns.md +0 -102
  43. package/skills/qa-clickup-integration/references/field-mapping.md +0 -71
  44. package/skills/qa-codeceptjs-writer/SKILL.md +0 -136
  45. package/skills/qa-codeceptjs-writer/references/best-practices.md +0 -207
  46. package/skills/qa-codeceptjs-writer/references/config.md +0 -255
  47. package/skills/qa-codeceptjs-writer/references/patterns.md +0 -285
  48. package/skills/qa-coverage-analyzer/SKILL.md +0 -166
  49. package/skills/qa-coverage-analyzer/references/best-practices.md +0 -142
  50. package/skills/qa-coverage-analyzer/references/coverage-dimensions.md +0 -155
  51. package/skills/qa-coverage-analyzer/references/tools.md +0 -204
  52. package/skills/qa-cypress-writer/SKILL.md +0 -134
  53. package/skills/qa-cypress-writer/references/assertions.md +0 -121
  54. package/skills/qa-cypress-writer/references/best-practices.md +0 -82
  55. package/skills/qa-cypress-writer/references/config.md +0 -121
  56. package/skills/qa-cypress-writer/references/patterns.md +0 -170
  57. package/skills/qa-data-factory/SKILL.md +0 -126
  58. package/skills/qa-data-factory/references/factory-patterns.md +0 -164
  59. package/skills/qa-data-factory/references/faker-guide.md +0 -131
  60. package/skills/qa-diagram-generator/SKILL.md +0 -125
  61. package/skills/qa-diagram-generator/references/c4-model.md +0 -53
  62. package/skills/qa-diagram-generator/references/charts.md +0 -58
  63. package/skills/qa-diagram-generator/references/class-diagram.md +0 -85
  64. package/skills/qa-diagram-generator/references/er-diagram.md +0 -69
  65. package/skills/qa-diagram-generator/references/flowchart.md +0 -92
  66. package/skills/qa-diagram-generator/references/from-screenshot.md +0 -45
  67. package/skills/qa-diagram-generator/references/gantt.md +0 -49
  68. package/skills/qa-diagram-generator/references/journey.md +0 -50
  69. package/skills/qa-diagram-generator/references/mindmap.md +0 -75
  70. package/skills/qa-diagram-generator/references/sequence.md +0 -69
  71. package/skills/qa-diagram-generator/references/state-diagram.md +0 -56
  72. package/skills/qa-discovery-interview/SKILL.md +0 -182
  73. package/skills/qa-discovery-interview/references/completeness-checklist.md +0 -53
  74. package/skills/qa-discovery-interview/references/conflict-patterns.md +0 -101
  75. package/skills/qa-discovery-interview/references/qa-categories.md +0 -147
  76. package/skills/qa-discovery-interview/templates/qa-brief-template.md +0 -168
  77. package/skills/qa-environment-checker/SKILL.md +0 -142
  78. package/skills/qa-environment-checker/references/dependency-matrix.md +0 -101
  79. package/skills/qa-environment-checker/references/health-checks.md +0 -209
  80. package/skills/qa-environment-checker/templates/env-readiness-template.md +0 -64
  81. package/skills/qa-flaky-detector/SKILL.md +0 -153
  82. package/skills/qa-flaky-detector/references/ci-analysis.md +0 -140
  83. package/skills/qa-flaky-detector/references/flaky-patterns.md +0 -247
  84. package/skills/qa-github-issues-enhanced/SKILL.md +0 -175
  85. package/skills/qa-github-issues-enhanced/references/issue-templates.md +0 -425
  86. package/skills/qa-github-issues-enhanced/references/label-taxonomy.md +0 -130
  87. package/skills/qa-github-issues-enhanced/references/workflow-patterns.md +0 -188
  88. package/skills/qa-httpx-writer/SKILL.md +0 -138
  89. package/skills/qa-httpx-writer/references/assertions.md +0 -195
  90. package/skills/qa-httpx-writer/references/best-practices.md +0 -140
  91. package/skills/qa-httpx-writer/references/config.md +0 -212
  92. package/skills/qa-httpx-writer/references/patterns.md +0 -262
  93. package/skills/qa-jest-writer/SKILL.md +0 -131
  94. package/skills/qa-jest-writer/references/assertions.md +0 -125
  95. package/skills/qa-jest-writer/references/best-practices.md +0 -136
  96. package/skills/qa-jest-writer/references/config.md +0 -134
  97. package/skills/qa-jest-writer/references/patterns.md +0 -172
  98. package/skills/qa-jira-integration/SKILL.md +0 -135
  99. package/skills/qa-jira-integration/references/api-patterns.md +0 -143
  100. package/skills/qa-jira-integration/references/field-mapping.md +0 -79
  101. package/skills/qa-jira-integration/references/xray-integration.md +0 -85
  102. package/skills/qa-jmeter-writer/SKILL.md +0 -171
  103. package/skills/qa-jmeter-writer/references/best-practices.md +0 -157
  104. package/skills/qa-jmeter-writer/references/config.md +0 -204
  105. package/skills/qa-jmeter-writer/references/patterns.md +0 -242
  106. package/skills/qa-junit5-writer/SKILL.md +0 -157
  107. package/skills/qa-junit5-writer/references/assertions.md +0 -118
  108. package/skills/qa-junit5-writer/references/config.md +0 -97
  109. package/skills/qa-junit5-writer/references/patterns.md +0 -162
  110. package/skills/qa-k6-writer/SKILL.md +0 -155
  111. package/skills/qa-k6-writer/references/best-practices.md +0 -236
  112. package/skills/qa-k6-writer/references/config.md +0 -219
  113. package/skills/qa-k6-writer/references/patterns.md +0 -304
  114. package/skills/qa-linear-integration/SKILL.md +0 -137
  115. package/skills/qa-linear-integration/references/api-patterns.md +0 -249
  116. package/skills/qa-linear-integration/references/field-mapping.md +0 -121
  117. package/skills/qa-locust-writer/SKILL.md +0 -151
  118. package/skills/qa-locust-writer/references/best-practices.md +0 -126
  119. package/skills/qa-locust-writer/references/config.md +0 -170
  120. package/skills/qa-locust-writer/references/patterns.md +0 -235
  121. package/skills/qa-manual-test-designer/SKILL.md +0 -145
  122. package/skills/qa-manual-test-designer/references/exploratory-charters.md +0 -138
  123. package/skills/qa-manual-test-designer/references/personas.md +0 -146
  124. package/skills/qa-manual-test-designer/templates/exploratory-charter-template.md +0 -47
  125. package/skills/qa-manual-test-designer/templates/test-case-template.md +0 -31
  126. package/skills/qa-mobile-test-writer/SKILL.md +0 -144
  127. package/skills/qa-mobile-test-writer/references/best-practices.md +0 -214
  128. package/skills/qa-mobile-test-writer/references/config.md +0 -309
  129. package/skills/qa-mobile-test-writer/references/patterns.md +0 -304
  130. package/skills/qa-nfr-analyst/SKILL.md +0 -177
  131. package/skills/qa-nfr-analyst/references/iso-25010-model.md +0 -159
  132. package/skills/qa-nfr-analyst/references/owasp-wstg-baseline.md +0 -202
  133. package/skills/qa-nfr-analyst/references/wcag-checklist.md +0 -184
  134. package/skills/qa-nfr-analyst/templates/owasp-checklist-template.md +0 -89
  135. package/skills/qa-nfr-analyst/templates/wcag-checklist-template.md +0 -48
  136. package/skills/qa-orchestrator/SKILL.md +0 -132
  137. package/skills/qa-orchestrator/references/handoff-chains.md +0 -105
  138. package/skills/qa-orchestrator/references/pipeline-modes.md +0 -115
  139. package/skills/qa-orchestrator/references/scheduler-rules.md +0 -84
  140. package/skills/qa-pact-writer/SKILL.md +0 -133
  141. package/skills/qa-pact-writer/references/best-practices.md +0 -100
  142. package/skills/qa-pact-writer/references/config.md +0 -135
  143. package/skills/qa-pact-writer/references/patterns.md +0 -161
  144. package/skills/qa-plan-creator/SKILL.md +0 -139
  145. package/skills/qa-plan-creator/references/introduction-plan.md +0 -43
  146. package/skills/qa-plan-creator/references/migration-plan.md +0 -44
  147. package/skills/qa-plan-creator/references/onboarding-plan.md +0 -46
  148. package/skills/qa-plan-creator/references/performance-plan.md +0 -44
  149. package/skills/qa-plan-creator/references/regression-plan.md +0 -45
  150. package/skills/qa-plan-creator/references/release-plan.md +0 -45
  151. package/skills/qa-plan-creator/references/sprint-plan.md +0 -44
  152. package/skills/qa-plan-creator/references/test-plan.md +0 -59
  153. package/skills/qa-plan-creator/references/uat-plan.md +0 -43
  154. package/skills/qa-plan-creator/templates/checklist-template.md +0 -36
  155. package/skills/qa-plan-creator/templates/regression-checklist-template.md +0 -49
  156. package/skills/qa-plan-creator/templates/release-checklist-template.md +0 -46
  157. package/skills/qa-plan-creator/templates/test-plan-template.md +0 -74
  158. package/skills/qa-playwright-py-writer/SKILL.md +0 -156
  159. package/skills/qa-playwright-py-writer/references/best-practices.md +0 -194
  160. package/skills/qa-playwright-py-writer/references/config.md +0 -195
  161. package/skills/qa-playwright-py-writer/references/patterns.md +0 -212
  162. package/skills/qa-playwright-ts-writer/SKILL.md +0 -151
  163. package/skills/qa-playwright-ts-writer/references/assertions.md +0 -109
  164. package/skills/qa-playwright-ts-writer/references/best-practices.md +0 -191
  165. package/skills/qa-playwright-ts-writer/references/config.md +0 -144
  166. package/skills/qa-playwright-ts-writer/references/patterns.md +0 -171
  167. package/skills/qa-pytest-writer/SKILL.md +0 -145
  168. package/skills/qa-pytest-writer/references/assertions.md +0 -149
  169. package/skills/qa-pytest-writer/references/best-practices.md +0 -97
  170. package/skills/qa-pytest-writer/references/config.md +0 -176
  171. package/skills/qa-pytest-writer/references/patterns.md +0 -251
  172. package/skills/qa-qase-integration/SKILL.md +0 -149
  173. package/skills/qa-qase-integration/references/api-reference.md +0 -354
  174. package/skills/qa-qase-integration/references/ci-integration.md +0 -196
  175. package/skills/qa-qase-integration/references/field-mapping.md +0 -157
  176. package/skills/qa-requirements-generator/SKILL.md +0 -152
  177. package/skills/qa-requirements-generator/references/iso-29148-structure.md +0 -153
  178. package/skills/qa-requirements-generator/references/requirement-patterns.md +0 -278
  179. package/skills/qa-rest-assured-writer/SKILL.md +0 -137
  180. package/skills/qa-rest-assured-writer/references/best-practices.md +0 -50
  181. package/skills/qa-rest-assured-writer/references/config.md +0 -124
  182. package/skills/qa-rest-assured-writer/references/patterns.md +0 -192
  183. package/skills/qa-risk-analyzer/SKILL.md +0 -158
  184. package/skills/qa-risk-analyzer/references/impact-analysis.md +0 -133
  185. package/skills/qa-risk-analyzer/references/risk-factors.md +0 -123
  186. package/skills/qa-robot-framework-writer/SKILL.md +0 -147
  187. package/skills/qa-robot-framework-writer/references/best-practices.md +0 -249
  188. package/skills/qa-robot-framework-writer/references/config.md +0 -204
  189. package/skills/qa-robot-framework-writer/references/libraries.md +0 -273
  190. package/skills/qa-robot-framework-writer/references/patterns.md +0 -216
  191. package/skills/qa-security-test-writer/SKILL.md +0 -123
  192. package/skills/qa-security-test-writer/references/best-practices.md +0 -155
  193. package/skills/qa-security-test-writer/references/owasp-top10.md +0 -331
  194. package/skills/qa-security-test-writer/references/zap-config.md +0 -258
  195. package/skills/qa-selenium-java-writer/SKILL.md +0 -143
  196. package/skills/qa-selenium-java-writer/references/best-practices.md +0 -59
  197. package/skills/qa-selenium-java-writer/references/config.md +0 -143
  198. package/skills/qa-selenium-java-writer/references/patterns.md +0 -170
  199. package/skills/qa-selenium-py-writer/SKILL.md +0 -150
  200. package/skills/qa-selenium-py-writer/references/best-practices.md +0 -175
  201. package/skills/qa-selenium-py-writer/references/config.md +0 -224
  202. package/skills/qa-selenium-py-writer/references/patterns.md +0 -255
  203. package/skills/qa-shortcut-integration/SKILL.md +0 -143
  204. package/skills/qa-shortcut-integration/references/api-patterns.md +0 -126
  205. package/skills/qa-shortcut-integration/references/field-mapping.md +0 -66
  206. package/skills/qa-spec-auditor/SKILL.md +0 -162
  207. package/skills/qa-spec-auditor/references/audit-checklist.md +0 -144
  208. package/skills/qa-spec-auditor/references/drift-patterns.md +0 -207
  209. package/skills/qa-spec-writer/SKILL.md +0 -143
  210. package/skills/qa-spec-writer/references/gherkin-guide.md +0 -253
  211. package/skills/qa-spec-writer/references/specification-patterns.md +0 -274
  212. package/skills/qa-spring-test-writer/SKILL.md +0 -170
  213. package/skills/qa-spring-test-writer/references/best-practices.md +0 -57
  214. package/skills/qa-spring-test-writer/references/config.md +0 -179
  215. package/skills/qa-spring-test-writer/references/patterns.md +0 -235
  216. package/skills/qa-supertest-writer/SKILL.md +0 -150
  217. package/skills/qa-supertest-writer/references/assertions.md +0 -192
  218. package/skills/qa-supertest-writer/references/best-practices.md +0 -102
  219. package/skills/qa-supertest-writer/references/config.md +0 -166
  220. package/skills/qa-supertest-writer/references/patterns.md +0 -242
  221. package/skills/qa-task-creator/SKILL.md +0 -142
  222. package/skills/qa-task-creator/references/linking-patterns.md +0 -127
  223. package/skills/qa-task-creator/references/task-types.md +0 -169
  224. package/skills/qa-task-creator/templates/task-template.md +0 -24
  225. package/skills/qa-test-doc-compiler/SKILL.md +0 -114
  226. package/skills/qa-test-doc-compiler/references/agile-tailoring.md +0 -220
  227. package/skills/qa-test-doc-compiler/references/iso-29119-3-documents.md +0 -302
  228. package/skills/qa-test-healer/SKILL.md +0 -101
  229. package/skills/qa-test-healer/references/diagnosis-patterns.md +0 -142
  230. package/skills/qa-test-healer/references/fix-strategies.md +0 -177
  231. package/skills/qa-test-reporter/SKILL.md +0 -130
  232. package/skills/qa-test-reporter/references/best-practices.md +0 -162
  233. package/skills/qa-test-reporter/references/iso-29119-reports.md +0 -236
  234. package/skills/qa-test-reporter/references/report-formats.md +0 -287
  235. package/skills/qa-test-reviewer/SKILL.md +0 -142
  236. package/skills/qa-test-reviewer/references/anti-patterns.md +0 -268
  237. package/skills/qa-test-reviewer/references/review-checklist.md +0 -93
  238. package/skills/qa-test-strategy/SKILL.md +0 -133
  239. package/skills/qa-test-strategy/references/entry-exit-criteria.md +0 -176
  240. package/skills/qa-test-strategy/references/risk-matrix.md +0 -102
  241. package/skills/qa-test-strategy/references/testing-types.md +0 -143
  242. package/skills/qa-testcase-from-docs/SKILL.md +0 -161
  243. package/skills/qa-testcase-from-docs/references/test-case-format.md +0 -196
  244. package/skills/qa-testcase-from-docs/references/test-design-techniques.md +0 -126
  245. package/skills/qa-testcase-from-docs/templates/test-case-template.md +0 -31
  246. package/skills/qa-testcase-from-ui/SKILL.md +0 -109
  247. package/skills/qa-testcase-from-ui/references/ui-element-patterns.md +0 -126
  248. package/skills/qa-testcase-from-ui/references/visual-analysis-guide.md +0 -146
  249. package/skills/qa-testcase-from-ui/templates/test-case-template.md +0 -31
  250. package/skills/qa-visual-regression-writer/SKILL.md +0 -175
  251. package/skills/qa-visual-regression-writer/references/best-practices.md +0 -154
  252. package/skills/qa-visual-regression-writer/references/config.md +0 -220
  253. package/skills/qa-visual-regression-writer/references/patterns.md +0 -213
  254. package/skills/qa-vitest-writer/SKILL.md +0 -141
  255. package/skills/qa-vitest-writer/references/assertions.md +0 -105
  256. package/skills/qa-vitest-writer/references/best-practices.md +0 -62
  257. package/skills/qa-vitest-writer/references/config.md +0 -127
  258. package/skills/qa-vitest-writer/references/patterns.md +0 -141
  259. package/skills/qa-webdriverio-writer/SKILL.md +0 -145
  260. package/skills/qa-webdriverio-writer/references/best-practices.md +0 -176
  261. package/skills/qa-webdriverio-writer/references/config.md +0 -240
  262. package/skills/qa-webdriverio-writer/references/patterns.md +0 -269
@@ -1,142 +0,0 @@
1
- ---
2
- name: qa-test-reviewer
3
- description: Code review for test files analyzing structure, assertions, coverage, anti-patterns, and providing a code-smell catalog with before/after improvement examples.
4
- output_dir: reports/reviews
5
- ---
6
-
7
- # QA Test Reviewer
8
-
9
- ## Purpose
10
-
11
- Perform code review on test files to assess quality, identify anti-patterns, and recommend improvements. Analyzes test structure, assertion quality, coverage alignment, naming conventions, and mocking correctness. Produces a structured review report with severity ratings and suggested fixes.
12
-
13
- ## Trigger Phrases
14
-
15
- - "Review my test code" / "Code review for tests"
16
- - "Analyze test quality" / "Test code quality review"
17
- - "Find test anti-patterns" / "Test code smells"
18
- - "Review [test file] for best practices"
19
- - "Improve test assertions" / "Fix test structure"
20
- - "Test coverage alignment check"
21
- - "DRY vs DAMP in tests"
22
-
23
- ## Review Criteria
24
-
25
- | Criterion | What to Check |
26
- |-----------|---------------|
27
- | **Test structure** | describe/it nesting, setup/teardown placement, logical grouping |
28
- | **Assertion quality** | Specific vs vague assertions; one logical assertion per test |
29
- | **Coverage alignment** | Test ↔ requirement traceability; tests map to intended behavior |
30
- | **Anti-patterns** | Hardcoded data, shared state, sleep waits, implementation coupling |
31
- | **Naming conventions** | Descriptive test names; consistent style (should/expect format) |
32
- | **DRY vs DAMP** | Shared setup where appropriate; readable tests over excessive abstraction |
33
- | **Mocking correctness** | Mocks verify behavior; no over-mocking; correct setup/teardown |
34
-
35
- See `references/anti-patterns.md` for the full catalog with before/after examples.
36
-
37
- ## Code Smell Catalog
38
-
39
- | Smell | Description | See |
40
- |-------|-------------|-----|
41
- | **Magic numbers in tests** | Unexplained literals (timeouts, IDs, counts) | `references/anti-patterns.md` |
42
- | **Copy-paste test duplication** | Nearly identical tests; should use parametrize/fixtures | `references/anti-patterns.md` |
43
- | **Assertion-free tests** | Tests that run code but never assert | `references/anti-patterns.md` |
44
- | **Over-mocking** | Mocking everything; tests verify mocks, not behavior | `references/anti-patterns.md` |
45
- | **Test logic (if/for in tests)** | Conditional logic inside tests; tests should be deterministic | `references/anti-patterns.md` |
46
- | **Ignored tests without explanation** | skip/xfail/todo with no reason | `references/anti-patterns.md` |
47
- | **Hardcoded URLs/selectors** | Brittle strings; should use constants or config | `references/anti-patterns.md` |
48
-
49
- Each smell includes before/after examples in `references/anti-patterns.md`.
50
-
51
- ## Output Format
52
-
53
- ### Review Report Template
54
-
55
- ```markdown
56
- # Test Review Report: [file/module name]
57
-
58
- ## Summary
59
- - **Files reviewed:** [count]
60
- - **Issues found:** [count] (Critical: X, High: Y, Medium: Z, Low: W)
61
- - **Overall assessment:** Pass / Needs improvement / Fail
62
-
63
- ## Issues
64
-
65
- ### [Severity] [Issue title]
66
- **Location:** [file:line]
67
- **Smell:** [from catalog]
68
- **Description:** [what's wrong]
69
- **Suggested fix:**
70
- [before/after code or instructions]
71
-
72
- ## Recommendations
73
- 1. [Priority action]
74
- 2. [Secondary action]
75
-
76
- ## References
77
- - Anti-patterns: references/anti-patterns.md
78
- - Checklist: references/review-checklist.md
79
- ```
80
-
81
- ### Severity Levels
82
-
83
- | Level | When to use |
84
- |-------|-------------|
85
- | **Critical** | Tests are broken, misleading, or will cause false confidence |
86
- | **High** | Significant maintainability or reliability issues |
87
- | **Medium** | Best-practice violations; improves quality |
88
- | **Low** | Style or minor improvements |
89
-
90
- ## Workflow
91
-
92
- 1. **Receive test files** — User provides path(s) or content
93
- 2. **Apply review checklist** — Use `references/review-checklist.md` systematically
94
- 3. **Identify smells** — Map findings to `references/anti-patterns.md` catalog
95
- 4. **Assign severity** — Critical/High/Medium/Low per impact
96
- 5. **Suggest fixes** — Provide before/after examples where applicable
97
- 6. **Produce report** — Structured output per template above
98
-
99
- ## Scope
100
-
101
- **Can do (autonomous):**
102
- - Review test files for structure, assertions, anti-patterns
103
- - Produce review report with severity and suggested fixes
104
- - Reference anti-patterns catalog and review checklist
105
- - Suggest refactors with before/after examples
106
-
107
- **Cannot do (requires confirmation):**
108
- - Apply fixes directly to test code (review only; user applies)
109
- - Change test framework or migrate tests
110
- - Override organizational coding standards
111
-
112
- **Will not do (out of scope):**
113
- - Modify production/application code
114
- - Execute tests or generate coverage (consume existing reports)
115
- - Implement fixes; this skill reviews and recommends only
116
-
117
- ## References
118
-
119
- | Topic | File |
120
- |-------|------|
121
- | Anti-patterns catalog with before/after examples | `references/anti-patterns.md` |
122
- | Comprehensive test review checklist | `references/review-checklist.md` |
123
-
124
- ## Quality Checklist
125
-
126
- - [ ] All review criteria from checklist applied
127
- - [ ] Issues mapped to code smell catalog where applicable
128
- - [ ] Severity assigned per impact (Critical/High/Medium/Low)
129
- - [ ] Suggested fixes include before/after when helpful
130
- - [ ] Report follows template format
131
- - [ ] No hardcoded secrets in examples
132
- - [ ] Traceability preserved (test case IDs, requirement links)
133
-
134
- ## Troubleshooting
135
-
136
- | Symptom | Likely Cause | Fix |
137
- |---------|--------------|-----|
138
- | Report too verbose | Every minor issue listed | Focus on High/Critical; group Low by category |
139
- | Before/after unclear | Example too abstract | Use concrete code from reviewed file |
140
- | Checklist incomplete | Missing framework-specific checks | See review-checklist.md for Jest/pytest/Playwright sections |
141
- | Severity inconsistent | Subjective judgment | Use severity table; Critical = broken/misleading |
142
- | User wants fixes applied | Skill is review-only | Clarify scope; offer to generate patch as separate step |
@@ -1,268 +0,0 @@
1
- # Test Anti-Patterns Catalog
2
-
3
- Before/after examples for common test code smells. Use this catalog when reviewing tests.
4
-
5
- ---
6
-
7
- ## 1. Magic Numbers in Tests
8
-
9
- **Smell:** Unexplained literals (timeouts, IDs, counts) make tests brittle and hard to understand.
10
-
11
- ### Before
12
-
13
- ```typescript
14
- it('loads user data', async () => {
15
- await page.waitForSelector('.user-card', { timeout: 5000 });
16
- expect(await page.$$('.user-item')).toHaveLength(10);
17
- });
18
- ```
19
-
20
- ```python
21
- def test_pagination():
22
- response = client.get('/users?page=1&per_page=25')
23
- assert len(response.json()['items']) == 25
24
- ```
25
-
26
- ### After
27
-
28
- ```typescript
29
- const USER_LOAD_TIMEOUT_MS = 5000;
30
- const EXPECTED_DEFAULT_PAGE_SIZE = 10;
31
-
32
- it('loads user data', async () => {
33
- await page.waitForSelector('.user-card', { timeout: USER_LOAD_TIMEOUT_MS });
34
- expect(await page.$$('.user-item')).toHaveLength(EXPECTED_DEFAULT_PAGE_SIZE);
35
- });
36
- ```
37
-
38
- ```python
39
- DEFAULT_PAGE_SIZE = 25
40
-
41
- def test_pagination():
42
- response = client.get(f'/users?page=1&per_page={DEFAULT_PAGE_SIZE}')
43
- assert len(response.json()['items']) == DEFAULT_PAGE_SIZE
44
- ```
45
-
46
- ---
47
-
48
- ## 2. Copy-Paste Test Duplication
49
-
50
- **Smell:** Nearly identical tests; should use parametrize or shared fixtures.
51
-
52
- ### Before
53
-
54
- ```typescript
55
- it('validates email format for gmail', () => {
56
- expect(validateEmail('user@gmail.com')).toBe(true);
57
- });
58
- it('validates email format for outlook', () => {
59
- expect(validateEmail('user@outlook.com')).toBe(true);
60
- });
61
- it('validates email format for yahoo', () => {
62
- expect(validateEmail('user@yahoo.com')).toBe(true);
63
- });
64
- ```
65
-
66
- ```python
67
- def test_email_gmail():
68
- assert validate_email('user@gmail.com') is True
69
-
70
- def test_email_outlook():
71
- assert validate_email('user@outlook.com') is True
72
-
73
- def test_email_yahoo():
74
- assert validate_email('user@yahoo.com') is True
75
- ```
76
-
77
- ### After
78
-
79
- ```typescript
80
- const validEmails = ['user@gmail.com', 'user@outlook.com', 'user@yahoo.com'];
81
- validEmails.forEach((email) => {
82
- it(`validates email format: ${email}`, () => {
83
- expect(validateEmail(email)).toBe(true);
84
- });
85
- });
86
- // Or use test.each in Jest/Vitest
87
- ```
88
-
89
- ```python
90
- @pytest.mark.parametrize('email', ['user@gmail.com', 'user@outlook.com', 'user@yahoo.com'])
91
- def test_valid_email_formats(email):
92
- assert validate_email(email) is True
93
- ```
94
-
95
- ---
96
-
97
- ## 3. Assertion-Free Tests
98
-
99
- **Smell:** Tests that run code but never assert; they pass even when behavior is wrong.
100
-
101
- ### Before
102
-
103
- ```typescript
104
- it('saves user to database', async () => {
105
- await userService.create({ name: 'Alice', email: 'alice@test.com' });
106
- });
107
- ```
108
-
109
- ```python
110
- def test_create_user():
111
- user_service.create(name='Alice', email='alice@test.com')
112
- ```
113
-
114
- ### After
115
-
116
- ```typescript
117
- it('saves user to database', async () => {
118
- const user = await userService.create({ name: 'Alice', email: 'alice@test.com' });
119
- expect(user.id).toBeDefined();
120
- expect(user.name).toBe('Alice');
121
- const saved = await db.users.findById(user.id);
122
- expect(saved).toEqual(user);
123
- });
124
- ```
125
-
126
- ```python
127
- def test_create_user():
128
- user = user_service.create(name='Alice', email='alice@test.com')
129
- assert user.id is not None
130
- assert user.name == 'Alice'
131
- saved = db.users.find_by_id(user.id)
132
- assert saved == user
133
- ```
134
-
135
- ---
136
-
137
- ## 4. Over-Mocking
138
-
139
- **Smell:** Mocking everything; tests verify mocks, not real behavior.
140
-
141
- ### Before
142
-
143
- ```typescript
144
- it('fetches user', async () => {
145
- const mockFetch = jest.fn().mockResolvedValue({ id: 1, name: 'Alice' });
146
- (global as any).fetch = mockFetch;
147
- const user = await userService.getUser(1);
148
- expect(mockFetch).toHaveBeenCalledWith('/api/users/1');
149
- expect(user.name).toBe('Alice'); // from mock, not real logic
150
- });
151
- ```
152
-
153
- ### After
154
-
155
- ```typescript
156
- it('fetches user from API', async () => {
157
- const mockResponse = { id: 1, name: 'Alice' };
158
- server.use(http.get('/api/users/:id', () => HttpResponse.json(mockResponse)));
159
- const user = await userService.getUser(1);
160
- expect(user.name).toBe('Alice');
161
- expect(user.id).toBe(1);
162
- });
163
- // Or: test integration with real API in integration suite; mock only external deps
164
- ```
165
-
166
- ---
167
-
168
- ## 5. Test Logic (if/for in Tests)
169
-
170
- **Smell:** Conditional logic inside tests; tests should be deterministic and simple.
171
-
172
- ### Before
173
-
174
- ```typescript
175
- it('handles multiple users', () => {
176
- const users = getUsers();
177
- for (const u of users) {
178
- if (u.role === 'admin') {
179
- expect(u.permissions).toContain('delete');
180
- } else {
181
- expect(u.permissions).not.toContain('delete');
182
- }
183
- }
184
- });
185
- ```
186
-
187
- ### After
188
-
189
- ```typescript
190
- it('admin users have delete permission', () => {
191
- const admin = getUsers().find(u => u.role === 'admin');
192
- expect(admin?.permissions).toContain('delete');
193
- });
194
- it('non-admin users lack delete permission', () => {
195
- const regular = getUsers().find(u => u.role !== 'admin');
196
- expect(regular?.permissions).not.toContain('delete');
197
- });
198
- ```
199
-
200
- ---
201
-
202
- ## 6. Ignored Tests Without Explanation
203
-
204
- **Smell:** skip/xfail/todo with no reason; tests get forgotten.
205
-
206
- ### Before
207
-
208
- ```typescript
209
- it.skip('flaky test', () => { /* ... */ });
210
- it.todo('something');
211
- ```
212
-
213
- ```python
214
- @pytest.mark.skip
215
- def test_something():
216
- pass
217
- ```
218
-
219
- ### After
220
-
221
- ```typescript
222
- it.skip('flaky: API returns 500 intermittently; ticket QA-123', () => { /* ... */ });
223
- it.todo('add test for bulk delete when API is ready');
224
- ```
225
-
226
- ```python
227
- @pytest.mark.skip(reason='Flaky: API returns 500 intermittently; ticket QA-123')
228
- def test_something():
229
- pass
230
- ```
231
-
232
- ---
233
-
234
- ## 7. Hardcoded URLs/Selectors
235
-
236
- **Smell:** Brittle strings; should use constants or config.
237
-
238
- ### Before
239
-
240
- ```typescript
241
- await page.goto('https://staging.example.com/login');
242
- await page.click('#root > div > form > button[type="submit"]');
243
- ```
244
-
245
- ```python
246
- driver.get('https://staging.example.com/login')
247
- driver.find_element(By.CSS_SELECTOR, '#root > div > form > button[type="submit"]').click()
248
- ```
249
-
250
- ### After
251
-
252
- ```typescript
253
- const BASE_URL = process.env.TEST_BASE_URL || 'https://staging.example.com';
254
- const SELECTORS = {
255
- loginSubmit: 'button[type="submit"]',
256
- // or use data-testid: '[data-testid="login-submit"]'
257
- };
258
- await page.goto(`${BASE_URL}/login`);
259
- await page.click(SELECTORS.loginSubmit);
260
- ```
261
-
262
- ```python
263
- BASE_URL = os.environ.get('TEST_BASE_URL', 'https://staging.example.com')
264
- LOGIN_SUBMIT = '[data-testid="login-submit"]'
265
-
266
- driver.get(f'{BASE_URL}/login')
267
- driver.find_element(By.CSS_SELECTOR, LOGIN_SUBMIT).click()
268
- ```
@@ -1,93 +0,0 @@
1
- # Test Review Checklist
2
-
3
- Use this checklist systematically when reviewing test files.
4
-
5
- ---
6
-
7
- ## 1. Test Structure
8
-
9
- - [ ] **describe/it nesting** — Logical grouping; max 3–4 levels deep
10
- - [ ] **Setup/teardown** — beforeEach/afterEach or fixtures in correct scope
11
- - [ ] **Test isolation** — Each test independent; no shared mutable state
12
- - [ ] **Arrange-Act-Assert** — Clear three-phase structure
13
- - [ ] **One logical assertion per test** — Single behavior under test
14
-
15
- ### Framework-Specific
16
-
17
- | Framework | Structure |
18
- |-----------|-----------|
19
- | Jest/Vitest | describe → it; beforeEach/afterEach |
20
- | pytest | class or module; fixtures with scope |
21
- | Playwright | test() with test.describe; fixtures |
22
- | Cypress | describe → it; beforeEach |
23
-
24
- ---
25
-
26
- ## 2. Assertion Quality
27
-
28
- - [ ] **Specific assertions** — `expect(x).toBe(y)` not `expect(!!x).toBe(true)` when possible
29
- - [ ] **Meaningful failure messages** — Custom message when assertion is unclear
30
- - [ ] **No assertion-free tests** — Every test asserts something
31
- - [ ] **Correct matchers** — toEqual vs toBe; toContain vs toHaveLength
32
-
33
- ---
34
-
35
- ## 3. Coverage Alignment
36
-
37
- - [ ] **Requirement traceability** — Test IDs or comments link to requirements
38
- - [ ] **Behavior-focused** — Tests verify behavior, not implementation
39
- - [ ] **Edge cases** — Boundaries, empty inputs, error paths covered
40
- - [ ] **No redundant tests** — Same behavior not tested multiple times
41
-
42
- ---
43
-
44
- ## 4. Anti-Patterns
45
-
46
- - [ ] **No magic numbers** — Constants for timeouts, counts, IDs
47
- - [ ] **No copy-paste duplication** — Parametrize or fixtures
48
- - [ ] **No sleep waits** — Explicit waits (waitForSelector, waitForResponse)
49
- - [ ] **No hardcoded URLs/selectors** — Config or constants
50
- - [ ] **No shared mutable state** — Each test gets fresh data
51
- - [ ] **No implementation coupling** — Test public API, not internals
52
- - [ ] **No test logic** — No if/for/switch inside tests
53
- - [ ] **No ignored tests without reason** — skip/xfail/todo with explanation
54
-
55
- ---
56
-
57
- ## 5. Naming Conventions
58
-
59
- - [ ] **Descriptive names** — "should display error when email is invalid"
60
- - [ ] **Consistent style** — should/expect or given-when-then
61
- - [ ] **No implementation details** — "clicks submit button" vs "calls onSubmit handler"
62
-
63
- ---
64
-
65
- ## 6. DRY vs DAMP
66
-
67
- - [ ] **Shared setup** — Common fixtures for repeated setup
68
- - [ ] **Readable over abstract** — DAMP when clarity matters
69
- - [ ] **No over-abstraction** — Test helpers that obscure intent
70
-
71
- ---
72
-
73
- ## 7. Mocking
74
-
75
- - [ ] **Mock only external deps** — APIs, DB, file system
76
- - [ ] **Verify behavior, not calls** — Prefer outcome over call count when possible
77
- - [ ] **Correct teardown** — Mocks restored after test
78
- - [ ] **No over-mocking** — Test real code paths where feasible
79
-
80
- ---
81
-
82
- ## Severity Mapping
83
-
84
- | Finding | Typical Severity |
85
- |---------|------------------|
86
- | Assertion-free test | Critical |
87
- | Shared mutable state | Critical |
88
- | sleep() in test | High |
89
- | Magic numbers everywhere | Medium |
90
- | Copy-paste duplication | Medium |
91
- | Hardcoded URL | Medium |
92
- | skip without reason | Low |
93
- | Naming style inconsistency | Low |
@@ -1,133 +0,0 @@
1
- ---
2
- name: qa-test-strategy
3
- description: Generate comprehensive test strategy documents covering scope, approach, testing types, environments, risk assessment, entry/exit criteria, and resource planning.
4
- output_dir: docs/plans
5
- dependencies:
6
- recommended:
7
- - qa-diagram-generator
8
- - qa-risk-analyzer
9
- ---
10
-
11
- # QA Test Strategy
12
-
13
- ## Purpose
14
-
15
- Create comprehensive test strategy and test plan documents that define the overall approach to testing for a project or release. Aligns with ISO/IEC/IEEE 29119-3 and provides a strategic blueprint for all testing activities.
16
-
17
- ## Trigger Phrases
18
-
19
- - "Create a test strategy for..."
20
- - "Generate test strategy document"
21
- - "Define testing approach for project"
22
- - "Test plan with risk assessment"
23
- - "Comprehensive QA strategy"
24
-
25
- ## Output Sections
26
-
27
- Every test strategy document includes:
28
-
29
- | Section | Content |
30
- | ------- | ------- |
31
- | **Test Scope & Objectives** | In-scope/out-of-scope, measurable goals, success criteria |
32
- | **Testing Types Breakdown & Rationale** | Unit, integration, E2E, performance, security, accessibility, etc. — with rationale for each |
33
- | **Environment Requirements** | Dev, staging, prod parity, data, tooling |
34
- | **Risk Assessment Matrix** | Technical, business, process risks with probability/impact and mitigations |
35
- | **Entry/Exit Criteria** | Conditions to start and complete testing at each level |
36
- | **Resource & Timeline Estimation** | Roles, effort, schedule, dependencies |
37
- | **Defect Management Process** | Triage, severity, workflow, escalation |
38
- | **Definition of Done/Ready** | DoD for stories; DoR for sprint readiness |
39
- | **Test Data Strategy** | Sources, masking, refresh, synthetic data |
40
- | **CI/CD Integration Strategy** | Pipeline gates, automation triggers, reporting |
41
-
42
- ## Testing Pyramid Guidance
43
-
44
- Apply the testing pyramid principle for balanced coverage:
45
-
46
- | Layer | Ratio (typical) | Focus |
47
- | ----- | ----------------- | ----- |
48
- | **Unit** | 70% | Fast, isolated, high volume |
49
- | **Integration** | 20% | Component interactions, APIs |
50
- | **E2E** | 10% | Critical user journeys, smoke |
51
-
52
- Reference `references/testing-types.md` for detailed type descriptions and when to apply each.
53
-
54
- ## Risk-Based Test Prioritization
55
-
56
- 1. **Identify risks** — Technical, business, process (see `references/risk-matrix.md`)
57
- 2. **Score** — Probability × Impact = Risk score
58
- 3. **Prioritize** — High-risk areas get more coverage and earlier testing
59
- 4. **Mitigate** — Allocate exploratory, security, performance tests to high-risk zones
60
-
61
- ## Integration with Other Skills
62
-
63
- | Need | Skill | Usage |
64
- | ---- | ----- | ----- |
65
- | Gantt charts, timelines | qa-diagram-generator | `references/gantt.md` for schedule visualization |
66
- | Mind maps, flowcharts | qa-diagram-generator | `references/mindmap.md`, `references/flowchart.md` for scope/process |
67
- | Detailed sub-plans | qa-plan-creator | Test plan, sprint plan, regression plan, performance plan |
68
- | NFR analysis | qa-nfr-analyst | Performance, security, usability requirements |
69
-
70
- ## Workflow
71
-
72
- 1. **Input:** Project context (scope, tech stack, timeline, constraints)
73
- 2. **Scope:** Define in/out boundaries and objectives
74
- 3. **Types:** Select testing types from `references/testing-types.md` with rationale
75
- 4. **Pyramid:** Apply unit > integration > E2E ratios
76
- 5. **Risk:** Populate risk matrix from `references/risk-matrix.md`
77
- 6. **Criteria:** Apply entry/exit from `references/entry-exit-criteria.md`
78
- 7. **Visuals:** Call qa-diagram-generator for Gantt, mind maps, flowcharts
79
- 8. **Sub-plans:** Call qa-plan-creator for detailed test/sprint/regression plans
80
- 9. **Output:** Complete test strategy document
81
-
82
- ## Scope
83
-
84
- **Can do (autonomous):**
85
- - Generate full test strategy documents from project context
86
- - Populate all 10 output sections
87
- - Apply testing pyramid ratios and risk-based prioritization
88
- - Call qa-diagram-generator for Gantt, mind maps, flowcharts
89
- - Call qa-plan-creator for detailed sub-plans
90
- - Reference testing-types, risk-matrix, entry-exit-criteria
91
-
92
- **Cannot do (requires confirmation):**
93
- - Change project scope or release dates set by stakeholders
94
- - Override organizational test policy or standards
95
- - Assign resources without approval
96
-
97
- **Will not do (out of scope):**
98
- - Execute tests or automation
99
- - Modify production code or environments
100
- - Approve strategy (approval is stakeholder responsibility)
101
-
102
- ## Quality Checklist
103
-
104
- - [ ] All 10 output sections present and populated
105
- - [ ] Test scope clearly defines in/out boundaries
106
- - [ ] Testing types include rationale (why each type)
107
- - [ ] Pyramid ratios applied (unit > integration > E2E)
108
- - [ ] Risk matrix populated with mitigations
109
- - [ ] Entry/exit criteria are testable and level-specific
110
- - [ ] Resource/timeline estimates are realistic
111
- - [ ] Diagrams generated for schedule/scope (Gantt, mind map)
112
- - [ ] References to qa-diagram-generator and qa-plan-creator correct
113
- - [ ] No hardcoded secrets
114
-
115
- ## Troubleshooting
116
-
117
- | Symptom | Likely Cause | Fix |
118
- | ------- | ------------ | --- |
119
- | Strategy too generic | Insufficient context | Ask for scope, tech stack, timeline, team size |
120
- | Missing diagrams | qa-diagram-generator not invoked | Explicitly call for Gantt, mind map, flowchart |
121
- | Wrong testing types | Project type unclear | Clarify web/mobile/API/embedded; use testing-types reference |
122
- | Risk matrix empty | No risk input | Prompt for known risks; use risk-matrix template |
123
- | Entry/exit vague | Subjective language | Use entry-exit-criteria reference; make criteria measurable |
124
- | Pyramid inverted | E2E-heavy approach | Recommend rebalancing; explain pyramid rationale |
125
- | Duplicate content | Overlap with qa-plan-creator | Strategy = high-level; plan = detailed; delegate sub-plans |
126
-
127
- ## Reference Files
128
-
129
- | Topic | Reference |
130
- | ----- | --------- |
131
- | Testing types | `references/testing-types.md` |
132
- | Risk assessment | `references/risk-matrix.md` |
133
- | Entry/exit criteria | `references/entry-exit-criteria.md` |