qa-skills 3.0.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 +168 -0
  2. package/bin/cli.js +42 -0
  3. package/dist/agents/registry.d.ts +5 -0
  4. package/dist/agents/registry.d.ts.map +1 -0
  5. package/dist/agents/registry.js +101 -0
  6. package/dist/agents/registry.js.map +1 -0
  7. package/dist/agents/types.d.ts +9 -0
  8. package/dist/agents/types.d.ts.map +1 -0
  9. package/dist/agents/types.js +2 -0
  10. package/dist/agents/types.js.map +1 -0
  11. package/dist/dependencies.d.ts +21 -0
  12. package/dist/dependencies.d.ts.map +1 -0
  13. package/dist/dependencies.js +125 -0
  14. package/dist/dependencies.js.map +1 -0
  15. package/dist/installer.d.ts +25 -0
  16. package/dist/installer.d.ts.map +1 -0
  17. package/dist/installer.js +437 -0
  18. package/dist/installer.js.map +1 -0
  19. package/dist/scaffold.d.ts +27 -0
  20. package/dist/scaffold.d.ts.map +1 -0
  21. package/dist/scaffold.js +182 -0
  22. package/dist/scaffold.js.map +1 -0
  23. package/package.json +40 -0
  24. package/skills/qa-accessibility-test-writer/SKILL.md +127 -0
  25. package/skills/qa-accessibility-test-writer/references/axe-core-patterns.md +349 -0
  26. package/skills/qa-accessibility-test-writer/references/best-practices.md +184 -0
  27. package/skills/qa-accessibility-test-writer/references/wcag-tests.md +331 -0
  28. package/skills/qa-api-contract-curator/SKILL.md +104 -0
  29. package/skills/qa-api-contract-curator/references/breaking-changes.md +363 -0
  30. package/skills/qa-api-contract-curator/references/openapi-structure.md +404 -0
  31. package/skills/qa-browser-data-collector/SKILL.md +132 -0
  32. package/skills/qa-browser-data-collector/references/data-collection-checklist.md +91 -0
  33. package/skills/qa-browser-data-collector/references/playwright-mcp-patterns.md +113 -0
  34. package/skills/qa-bug-ticket-creator/SKILL.md +148 -0
  35. package/skills/qa-bug-ticket-creator/references/bug-report-format.md +149 -0
  36. package/skills/qa-bug-ticket-creator/references/severity-guide.md +81 -0
  37. package/skills/qa-bug-ticket-creator/templates/bug-ticket-template.md +39 -0
  38. package/skills/qa-changelog-analyzer/SKILL.md +134 -0
  39. package/skills/qa-changelog-analyzer/references/git-analysis-patterns.md +138 -0
  40. package/skills/qa-changelog-analyzer/references/impact-mapping.md +120 -0
  41. package/skills/qa-clickup-integration/SKILL.md +166 -0
  42. package/skills/qa-clickup-integration/references/api-patterns.md +102 -0
  43. package/skills/qa-clickup-integration/references/field-mapping.md +71 -0
  44. package/skills/qa-codeceptjs-writer/SKILL.md +136 -0
  45. package/skills/qa-codeceptjs-writer/references/best-practices.md +207 -0
  46. package/skills/qa-codeceptjs-writer/references/config.md +255 -0
  47. package/skills/qa-codeceptjs-writer/references/patterns.md +285 -0
  48. package/skills/qa-coverage-analyzer/SKILL.md +166 -0
  49. package/skills/qa-coverage-analyzer/references/best-practices.md +142 -0
  50. package/skills/qa-coverage-analyzer/references/coverage-dimensions.md +155 -0
  51. package/skills/qa-coverage-analyzer/references/tools.md +204 -0
  52. package/skills/qa-cypress-writer/SKILL.md +134 -0
  53. package/skills/qa-cypress-writer/references/assertions.md +121 -0
  54. package/skills/qa-cypress-writer/references/best-practices.md +82 -0
  55. package/skills/qa-cypress-writer/references/config.md +121 -0
  56. package/skills/qa-cypress-writer/references/patterns.md +170 -0
  57. package/skills/qa-data-factory/SKILL.md +126 -0
  58. package/skills/qa-data-factory/references/factory-patterns.md +164 -0
  59. package/skills/qa-data-factory/references/faker-guide.md +131 -0
  60. package/skills/qa-diagram-generator/SKILL.md +125 -0
  61. package/skills/qa-diagram-generator/references/c4-model.md +53 -0
  62. package/skills/qa-diagram-generator/references/charts.md +58 -0
  63. package/skills/qa-diagram-generator/references/class-diagram.md +85 -0
  64. package/skills/qa-diagram-generator/references/er-diagram.md +69 -0
  65. package/skills/qa-diagram-generator/references/flowchart.md +92 -0
  66. package/skills/qa-diagram-generator/references/from-screenshot.md +45 -0
  67. package/skills/qa-diagram-generator/references/gantt.md +49 -0
  68. package/skills/qa-diagram-generator/references/journey.md +50 -0
  69. package/skills/qa-diagram-generator/references/mindmap.md +75 -0
  70. package/skills/qa-diagram-generator/references/sequence.md +69 -0
  71. package/skills/qa-diagram-generator/references/state-diagram.md +56 -0
  72. package/skills/qa-discovery-interview/SKILL.md +182 -0
  73. package/skills/qa-discovery-interview/references/completeness-checklist.md +53 -0
  74. package/skills/qa-discovery-interview/references/conflict-patterns.md +101 -0
  75. package/skills/qa-discovery-interview/references/qa-categories.md +147 -0
  76. package/skills/qa-discovery-interview/templates/qa-brief-template.md +168 -0
  77. package/skills/qa-environment-checker/SKILL.md +142 -0
  78. package/skills/qa-environment-checker/references/dependency-matrix.md +101 -0
  79. package/skills/qa-environment-checker/references/health-checks.md +209 -0
  80. package/skills/qa-environment-checker/templates/env-readiness-template.md +64 -0
  81. package/skills/qa-flaky-detector/SKILL.md +153 -0
  82. package/skills/qa-flaky-detector/references/ci-analysis.md +140 -0
  83. package/skills/qa-flaky-detector/references/flaky-patterns.md +247 -0
  84. package/skills/qa-github-issues-enhanced/SKILL.md +175 -0
  85. package/skills/qa-github-issues-enhanced/references/issue-templates.md +425 -0
  86. package/skills/qa-github-issues-enhanced/references/label-taxonomy.md +130 -0
  87. package/skills/qa-github-issues-enhanced/references/workflow-patterns.md +188 -0
  88. package/skills/qa-httpx-writer/SKILL.md +138 -0
  89. package/skills/qa-httpx-writer/references/assertions.md +195 -0
  90. package/skills/qa-httpx-writer/references/best-practices.md +140 -0
  91. package/skills/qa-httpx-writer/references/config.md +212 -0
  92. package/skills/qa-httpx-writer/references/patterns.md +262 -0
  93. package/skills/qa-jest-writer/SKILL.md +131 -0
  94. package/skills/qa-jest-writer/references/assertions.md +125 -0
  95. package/skills/qa-jest-writer/references/best-practices.md +136 -0
  96. package/skills/qa-jest-writer/references/config.md +134 -0
  97. package/skills/qa-jest-writer/references/patterns.md +172 -0
  98. package/skills/qa-jira-integration/SKILL.md +135 -0
  99. package/skills/qa-jira-integration/references/api-patterns.md +143 -0
  100. package/skills/qa-jira-integration/references/field-mapping.md +79 -0
  101. package/skills/qa-jira-integration/references/xray-integration.md +85 -0
  102. package/skills/qa-jmeter-writer/SKILL.md +171 -0
  103. package/skills/qa-jmeter-writer/references/best-practices.md +157 -0
  104. package/skills/qa-jmeter-writer/references/config.md +204 -0
  105. package/skills/qa-jmeter-writer/references/patterns.md +242 -0
  106. package/skills/qa-junit5-writer/SKILL.md +157 -0
  107. package/skills/qa-junit5-writer/references/assertions.md +118 -0
  108. package/skills/qa-junit5-writer/references/config.md +97 -0
  109. package/skills/qa-junit5-writer/references/patterns.md +162 -0
  110. package/skills/qa-k6-writer/SKILL.md +155 -0
  111. package/skills/qa-k6-writer/references/best-practices.md +236 -0
  112. package/skills/qa-k6-writer/references/config.md +219 -0
  113. package/skills/qa-k6-writer/references/patterns.md +304 -0
  114. package/skills/qa-linear-integration/SKILL.md +137 -0
  115. package/skills/qa-linear-integration/references/api-patterns.md +249 -0
  116. package/skills/qa-linear-integration/references/field-mapping.md +121 -0
  117. package/skills/qa-locust-writer/SKILL.md +151 -0
  118. package/skills/qa-locust-writer/references/best-practices.md +126 -0
  119. package/skills/qa-locust-writer/references/config.md +170 -0
  120. package/skills/qa-locust-writer/references/patterns.md +235 -0
  121. package/skills/qa-manual-test-designer/SKILL.md +145 -0
  122. package/skills/qa-manual-test-designer/references/exploratory-charters.md +138 -0
  123. package/skills/qa-manual-test-designer/references/personas.md +146 -0
  124. package/skills/qa-manual-test-designer/templates/exploratory-charter-template.md +47 -0
  125. package/skills/qa-manual-test-designer/templates/test-case-template.md +31 -0
  126. package/skills/qa-mobile-test-writer/SKILL.md +144 -0
  127. package/skills/qa-mobile-test-writer/references/best-practices.md +214 -0
  128. package/skills/qa-mobile-test-writer/references/config.md +309 -0
  129. package/skills/qa-mobile-test-writer/references/patterns.md +304 -0
  130. package/skills/qa-nfr-analyst/SKILL.md +177 -0
  131. package/skills/qa-nfr-analyst/references/iso-25010-model.md +159 -0
  132. package/skills/qa-nfr-analyst/references/owasp-wstg-baseline.md +202 -0
  133. package/skills/qa-nfr-analyst/references/wcag-checklist.md +184 -0
  134. package/skills/qa-nfr-analyst/templates/owasp-checklist-template.md +89 -0
  135. package/skills/qa-nfr-analyst/templates/wcag-checklist-template.md +48 -0
  136. package/skills/qa-orchestrator/SKILL.md +132 -0
  137. package/skills/qa-orchestrator/references/handoff-chains.md +105 -0
  138. package/skills/qa-orchestrator/references/pipeline-modes.md +115 -0
  139. package/skills/qa-orchestrator/references/scheduler-rules.md +84 -0
  140. package/skills/qa-pact-writer/SKILL.md +133 -0
  141. package/skills/qa-pact-writer/references/best-practices.md +100 -0
  142. package/skills/qa-pact-writer/references/config.md +135 -0
  143. package/skills/qa-pact-writer/references/patterns.md +161 -0
  144. package/skills/qa-plan-creator/SKILL.md +139 -0
  145. package/skills/qa-plan-creator/references/introduction-plan.md +43 -0
  146. package/skills/qa-plan-creator/references/migration-plan.md +44 -0
  147. package/skills/qa-plan-creator/references/onboarding-plan.md +46 -0
  148. package/skills/qa-plan-creator/references/performance-plan.md +44 -0
  149. package/skills/qa-plan-creator/references/regression-plan.md +45 -0
  150. package/skills/qa-plan-creator/references/release-plan.md +45 -0
  151. package/skills/qa-plan-creator/references/sprint-plan.md +44 -0
  152. package/skills/qa-plan-creator/references/test-plan.md +59 -0
  153. package/skills/qa-plan-creator/references/uat-plan.md +43 -0
  154. package/skills/qa-plan-creator/templates/checklist-template.md +36 -0
  155. package/skills/qa-plan-creator/templates/regression-checklist-template.md +49 -0
  156. package/skills/qa-plan-creator/templates/release-checklist-template.md +46 -0
  157. package/skills/qa-plan-creator/templates/test-plan-template.md +74 -0
  158. package/skills/qa-playwright-py-writer/SKILL.md +156 -0
  159. package/skills/qa-playwright-py-writer/references/best-practices.md +194 -0
  160. package/skills/qa-playwright-py-writer/references/config.md +195 -0
  161. package/skills/qa-playwright-py-writer/references/patterns.md +212 -0
  162. package/skills/qa-playwright-ts-writer/SKILL.md +151 -0
  163. package/skills/qa-playwright-ts-writer/references/assertions.md +109 -0
  164. package/skills/qa-playwright-ts-writer/references/best-practices.md +191 -0
  165. package/skills/qa-playwright-ts-writer/references/config.md +144 -0
  166. package/skills/qa-playwright-ts-writer/references/patterns.md +171 -0
  167. package/skills/qa-pytest-writer/SKILL.md +145 -0
  168. package/skills/qa-pytest-writer/references/assertions.md +149 -0
  169. package/skills/qa-pytest-writer/references/best-practices.md +97 -0
  170. package/skills/qa-pytest-writer/references/config.md +176 -0
  171. package/skills/qa-pytest-writer/references/patterns.md +251 -0
  172. package/skills/qa-qase-integration/SKILL.md +149 -0
  173. package/skills/qa-qase-integration/references/api-reference.md +354 -0
  174. package/skills/qa-qase-integration/references/ci-integration.md +196 -0
  175. package/skills/qa-qase-integration/references/field-mapping.md +157 -0
  176. package/skills/qa-requirements-generator/SKILL.md +152 -0
  177. package/skills/qa-requirements-generator/references/iso-29148-structure.md +153 -0
  178. package/skills/qa-requirements-generator/references/requirement-patterns.md +278 -0
  179. package/skills/qa-rest-assured-writer/SKILL.md +137 -0
  180. package/skills/qa-rest-assured-writer/references/best-practices.md +50 -0
  181. package/skills/qa-rest-assured-writer/references/config.md +124 -0
  182. package/skills/qa-rest-assured-writer/references/patterns.md +192 -0
  183. package/skills/qa-risk-analyzer/SKILL.md +158 -0
  184. package/skills/qa-risk-analyzer/references/impact-analysis.md +133 -0
  185. package/skills/qa-risk-analyzer/references/risk-factors.md +123 -0
  186. package/skills/qa-robot-framework-writer/SKILL.md +147 -0
  187. package/skills/qa-robot-framework-writer/references/best-practices.md +249 -0
  188. package/skills/qa-robot-framework-writer/references/config.md +204 -0
  189. package/skills/qa-robot-framework-writer/references/libraries.md +273 -0
  190. package/skills/qa-robot-framework-writer/references/patterns.md +216 -0
  191. package/skills/qa-security-test-writer/SKILL.md +123 -0
  192. package/skills/qa-security-test-writer/references/best-practices.md +155 -0
  193. package/skills/qa-security-test-writer/references/owasp-top10.md +331 -0
  194. package/skills/qa-security-test-writer/references/zap-config.md +258 -0
  195. package/skills/qa-selenium-java-writer/SKILL.md +143 -0
  196. package/skills/qa-selenium-java-writer/references/best-practices.md +59 -0
  197. package/skills/qa-selenium-java-writer/references/config.md +143 -0
  198. package/skills/qa-selenium-java-writer/references/patterns.md +170 -0
  199. package/skills/qa-selenium-py-writer/SKILL.md +150 -0
  200. package/skills/qa-selenium-py-writer/references/best-practices.md +175 -0
  201. package/skills/qa-selenium-py-writer/references/config.md +224 -0
  202. package/skills/qa-selenium-py-writer/references/patterns.md +255 -0
  203. package/skills/qa-shortcut-integration/SKILL.md +143 -0
  204. package/skills/qa-shortcut-integration/references/api-patterns.md +126 -0
  205. package/skills/qa-shortcut-integration/references/field-mapping.md +66 -0
  206. package/skills/qa-spec-auditor/SKILL.md +162 -0
  207. package/skills/qa-spec-auditor/references/audit-checklist.md +144 -0
  208. package/skills/qa-spec-auditor/references/drift-patterns.md +207 -0
  209. package/skills/qa-spec-writer/SKILL.md +143 -0
  210. package/skills/qa-spec-writer/references/gherkin-guide.md +253 -0
  211. package/skills/qa-spec-writer/references/specification-patterns.md +274 -0
  212. package/skills/qa-spring-test-writer/SKILL.md +170 -0
  213. package/skills/qa-spring-test-writer/references/best-practices.md +57 -0
  214. package/skills/qa-spring-test-writer/references/config.md +179 -0
  215. package/skills/qa-spring-test-writer/references/patterns.md +235 -0
  216. package/skills/qa-supertest-writer/SKILL.md +150 -0
  217. package/skills/qa-supertest-writer/references/assertions.md +192 -0
  218. package/skills/qa-supertest-writer/references/best-practices.md +102 -0
  219. package/skills/qa-supertest-writer/references/config.md +166 -0
  220. package/skills/qa-supertest-writer/references/patterns.md +242 -0
  221. package/skills/qa-task-creator/SKILL.md +142 -0
  222. package/skills/qa-task-creator/references/linking-patterns.md +127 -0
  223. package/skills/qa-task-creator/references/task-types.md +169 -0
  224. package/skills/qa-task-creator/templates/task-template.md +24 -0
  225. package/skills/qa-test-doc-compiler/SKILL.md +114 -0
  226. package/skills/qa-test-doc-compiler/references/agile-tailoring.md +220 -0
  227. package/skills/qa-test-doc-compiler/references/iso-29119-3-documents.md +302 -0
  228. package/skills/qa-test-healer/SKILL.md +101 -0
  229. package/skills/qa-test-healer/references/diagnosis-patterns.md +142 -0
  230. package/skills/qa-test-healer/references/fix-strategies.md +177 -0
  231. package/skills/qa-test-reporter/SKILL.md +130 -0
  232. package/skills/qa-test-reporter/references/best-practices.md +162 -0
  233. package/skills/qa-test-reporter/references/iso-29119-reports.md +236 -0
  234. package/skills/qa-test-reporter/references/report-formats.md +287 -0
  235. package/skills/qa-test-reviewer/SKILL.md +142 -0
  236. package/skills/qa-test-reviewer/references/anti-patterns.md +268 -0
  237. package/skills/qa-test-reviewer/references/review-checklist.md +93 -0
  238. package/skills/qa-test-strategy/SKILL.md +133 -0
  239. package/skills/qa-test-strategy/references/entry-exit-criteria.md +176 -0
  240. package/skills/qa-test-strategy/references/risk-matrix.md +102 -0
  241. package/skills/qa-test-strategy/references/testing-types.md +143 -0
  242. package/skills/qa-testcase-from-docs/SKILL.md +161 -0
  243. package/skills/qa-testcase-from-docs/references/test-case-format.md +196 -0
  244. package/skills/qa-testcase-from-docs/references/test-design-techniques.md +126 -0
  245. package/skills/qa-testcase-from-docs/templates/test-case-template.md +31 -0
  246. package/skills/qa-testcase-from-ui/SKILL.md +109 -0
  247. package/skills/qa-testcase-from-ui/references/ui-element-patterns.md +126 -0
  248. package/skills/qa-testcase-from-ui/references/visual-analysis-guide.md +146 -0
  249. package/skills/qa-testcase-from-ui/templates/test-case-template.md +31 -0
  250. package/skills/qa-visual-regression-writer/SKILL.md +175 -0
  251. package/skills/qa-visual-regression-writer/references/best-practices.md +154 -0
  252. package/skills/qa-visual-regression-writer/references/config.md +220 -0
  253. package/skills/qa-visual-regression-writer/references/patterns.md +213 -0
  254. package/skills/qa-vitest-writer/SKILL.md +141 -0
  255. package/skills/qa-vitest-writer/references/assertions.md +105 -0
  256. package/skills/qa-vitest-writer/references/best-practices.md +62 -0
  257. package/skills/qa-vitest-writer/references/config.md +127 -0
  258. package/skills/qa-vitest-writer/references/patterns.md +141 -0
  259. package/skills/qa-webdriverio-writer/SKILL.md +145 -0
  260. package/skills/qa-webdriverio-writer/references/best-practices.md +176 -0
  261. package/skills/qa-webdriverio-writer/references/config.md +240 -0
  262. package/skills/qa-webdriverio-writer/references/patterns.md +269 -0
@@ -0,0 +1,242 @@
1
+ # Supertest Patterns
2
+
3
+ ## CRUD Endpoints
4
+
5
+ ### GET (List)
6
+
7
+ ```ts
8
+ describe('GET /users', () => {
9
+ it('returns 200 with user list', async () => {
10
+ const res = await request(app)
11
+ .get('/users')
12
+ .expect(200)
13
+ .expect('Content-Type', /json/)
14
+
15
+ expect(res.body).toHaveProperty('users')
16
+ expect(Array.isArray(res.body.users)).toBe(true)
17
+ })
18
+
19
+ it('returns 401 when unauthenticated', () =>
20
+ request(app).get('/users').expect(401))
21
+ })
22
+ ```
23
+
24
+ ### GET (Single)
25
+
26
+ ```ts
27
+ describe('GET /users/:id', () => {
28
+ it('returns 200 with user', async () => {
29
+ const res = await request(app)
30
+ .get('/users/1')
31
+ .set('Authorization', `Bearer ${token}`)
32
+ .expect(200)
33
+
34
+ expect(res.body).toMatchObject({ id: 1, email: expect.any(String) })
35
+ })
36
+
37
+ it('returns 404 when not found', () =>
38
+ request(app)
39
+ .get('/users/99999')
40
+ .set('Authorization', `Bearer ${token}`)
41
+ .expect(404))
42
+ })
43
+ ```
44
+
45
+ ### POST (Create)
46
+
47
+ ```ts
48
+ describe('POST /users', () => {
49
+ it('returns 201 with created user', async () => {
50
+ const res = await request(app)
51
+ .post('/users')
52
+ .set('Content-Type', 'application/json')
53
+ .send({ email: 'test@example.com', name: 'Test User' })
54
+ .expect(201)
55
+
56
+ expect(res.body).toHaveProperty('id')
57
+ expect(res.body.email).toBe('test@example.com')
58
+ })
59
+
60
+ it('returns 400 on validation error', () =>
61
+ request(app)
62
+ .post('/users')
63
+ .set('Content-Type', 'application/json')
64
+ .send({ email: 'invalid' })
65
+ .expect(400))
66
+ })
67
+ ```
68
+
69
+ ### PUT/PATCH (Update)
70
+
71
+ ```ts
72
+ describe('PUT /users/:id', () => {
73
+ it('returns 200 with updated user', async () => {
74
+ const res = await request(app)
75
+ .put('/users/1')
76
+ .set('Authorization', `Bearer ${token}`)
77
+ .send({ name: 'Updated Name' })
78
+ .expect(200)
79
+
80
+ expect(res.body.name).toBe('Updated Name')
81
+ })
82
+ })
83
+ ```
84
+
85
+ ### DELETE
86
+
87
+ ```ts
88
+ describe('DELETE /users/:id', () => {
89
+ it('returns 204 on success', () =>
90
+ request(app)
91
+ .delete('/users/1')
92
+ .set('Authorization', `Bearer ${token}`)
93
+ .expect(204))
94
+
95
+ it('returns 404 when not found', () =>
96
+ request(app)
97
+ .delete('/users/99999')
98
+ .set('Authorization', `Bearer ${token}`)
99
+ .expect(404))
100
+ })
101
+ ```
102
+
103
+ ## Authentication
104
+
105
+ ### Bearer Token
106
+
107
+ ```ts
108
+ let token: string
109
+
110
+ beforeAll(async () => {
111
+ const res = await request(app)
112
+ .post('/auth/login')
113
+ .send({ email: 'test@example.com', password: 'secret' })
114
+ token = res.body.token
115
+ })
116
+
117
+ it('accesses protected route', () =>
118
+ request(app)
119
+ .get('/users')
120
+ .set('Authorization', `Bearer ${token}`)
121
+ .expect(200))
122
+ ```
123
+
124
+ ### API Key
125
+
126
+ ```ts
127
+ request(app)
128
+ .get('/api/data')
129
+ .set('X-API-Key', process.env.TEST_API_KEY)
130
+ .expect(200)
131
+ ```
132
+
133
+ ### Cookies (Session)
134
+
135
+ ```ts
136
+ const agent = request.agent(app)
137
+
138
+ beforeAll(async () => {
139
+ await agent
140
+ .post('/auth/login')
141
+ .send({ email: 'test@example.com', password: 'secret' })
142
+ .expect(200)
143
+ })
144
+
145
+ it('uses session cookie', () => agent.get('/users').expect(200))
146
+ ```
147
+
148
+ ### Basic Auth
149
+
150
+ ```ts
151
+ request(app)
152
+ .get('/admin')
153
+ .auth('user', 'password')
154
+ .expect(200)
155
+ ```
156
+
157
+ ## File Upload
158
+
159
+ ```ts
160
+ import path from 'path'
161
+
162
+ describe('POST /upload', () => {
163
+ it('uploads file and returns 201', async () => {
164
+ const res = await request(app)
165
+ .post('/upload')
166
+ .attach('file', path.join(__dirname, 'fixtures/sample.pdf'))
167
+ .expect(201)
168
+
169
+ expect(res.body).toHaveProperty('url')
170
+ })
171
+
172
+ it('returns 400 when no file', () =>
173
+ request(app).post('/upload').expect(400))
174
+ })
175
+ ```
176
+
177
+ ## Error Responses
178
+
179
+ ```ts
180
+ it('returns 400 with validation errors', async () => {
181
+ const res = await request(app)
182
+ .post('/users')
183
+ .send({})
184
+ .expect(400)
185
+
186
+ expect(res.body).toHaveProperty('errors')
187
+ expect(Array.isArray(res.body.errors)).toBe(true)
188
+ })
189
+
190
+ it('returns 500 structure on server error', async () => {
191
+ const res = await request(app)
192
+ .get('/trigger-error')
193
+ .expect(500)
194
+
195
+ expect(res.body).toMatchObject({
196
+ error: expect.any(String),
197
+ message: expect.any(String),
198
+ })
199
+ })
200
+ ```
201
+
202
+ ## Pagination
203
+
204
+ ```ts
205
+ describe('GET /users with pagination', () => {
206
+ it('returns paginated results', async () => {
207
+ const res = await request(app)
208
+ .get('/users?page=1&limit=10')
209
+ .expect(200)
210
+
211
+ expect(res.body).toMatchObject({
212
+ users: expect.any(Array),
213
+ total: expect.any(Number),
214
+ page: 1,
215
+ limit: 10,
216
+ })
217
+ expect(res.body.users.length).toBeLessThanOrEqual(10)
218
+ })
219
+
220
+ it('returns 400 for invalid page', () =>
221
+ request(app).get('/users?page=-1').expect(400))
222
+ })
223
+ ```
224
+
225
+ ## Query Parameters
226
+
227
+ ```ts
228
+ request(app)
229
+ .get('/search')
230
+ .query({ q: 'test', limit: 5 })
231
+ .expect(200)
232
+ ```
233
+
234
+ ## Custom Headers
235
+
236
+ ```ts
237
+ request(app)
238
+ .get('/api/data')
239
+ .set('X-Request-ID', 'test-123')
240
+ .set('Accept', 'application/json')
241
+ .expect(200)
242
+ ```
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: qa-task-creator
3
+ description: Generate work tasks from QA analysis, coverage gaps, and bug reports. Works standalone for any task creation or paired with qa-bug-ticket-creator for linked fix tasks.
4
+ dependencies:
5
+ recommended:
6
+ - qa-bug-ticket-creator
7
+ ---
8
+
9
+ # QA Task Creator
10
+
11
+ ## Purpose
12
+
13
+ Generate structured work tasks from QA analysis outputs, coverage gaps, spec-auditor findings, risk-analyzer results, and bug reports. Supports two usage patterns: **standalone** (create tasks directly from user request) and **paired** with qa-bug-ticket-creator (auto-create linked fix/enhancement tasks from bugs).
14
+
15
+ ## Dual-Use Pattern
16
+
17
+ | Mode | Trigger | Output |
18
+ | ---- | ------- | ------ |
19
+ | **Standalone** | User requests task creation from description, coverage gap, or spec finding | GitHub Issue (or Jira/Linear format) with full task details |
20
+ | **Paired** | Bug ticket created by qa-bug-ticket-creator | Linked fix task referencing the bug; optionally enhancement tasks for related improvements |
21
+
22
+ When paired: bug ticket → fix task; fix task links back to bug via GitHub issue reference (e.g., "Fixes #123").
23
+
24
+ ## Input Sources
25
+
26
+ | Source | Task Type | Example |
27
+ | ------ | --------- | ------- |
28
+ | **Coverage gaps** | Development / QA | "Add unit tests for AuthService.login() — 0% coverage" |
29
+ | **Spec-auditor findings** | Development / Documentation | "Implement validation per spec section 4.2" |
30
+ | **Risk-analyzer output** | Development / QA | "Add integration tests for payment flow — high risk" |
31
+ | **Bug reports** | Development (fix) | "Fix null pointer in checkout when cart is empty" |
32
+ | **User request** | Any | "Create task to refactor user API" |
33
+
34
+ ## Task Types
35
+
36
+ | Type | Description | Typical Assignee |
37
+ | ---- | ----------- | ---------------- |
38
+ | **Development** | Implement, fix, refactor, optimize | Dev |
39
+ | **QA** | Write tests, increase coverage, update test data | QA |
40
+ | **Documentation** | Update specs, add diagrams, API docs | Dev/QA |
41
+ | **Enhancement** | Performance, validation, UI polish | Dev |
42
+
43
+ See `references/task-types.md` for templates and examples.
44
+
45
+ ## Output Format
46
+
47
+ Tasks follow GitHub Issue / Jira / Linear story format:
48
+
49
+ - **Title** — Clear, actionable (verb + object)
50
+ - **Description** — Context, acceptance criteria, links to source
51
+ - **Labels** — `task`, `development`, `qa`, `documentation`, `enhancement`, component tags
52
+ - **Links** — Parent bug, requirement, coverage gap, or spec section
53
+ - **Acceptance criteria** — Testable conditions for done
54
+
55
+ ## Auto-Linking
56
+
57
+ Tasks automatically link to their source:
58
+
59
+ | Source | Link Format |
60
+ | ------ | ----------- |
61
+ | Bug | "Fixes #123" or "Related to #123" in body; GitHub auto-links |
62
+ | Requirement | Link to requirement doc or ticket |
63
+ | Coverage gap | File:line reference, module name |
64
+ | Spec section | Section reference (e.g., "Spec §4.2") |
65
+
66
+ See `references/linking-patterns.md` for patterns.
67
+
68
+ ## Integrations
69
+
70
+ | Integration | Use |
71
+ | ----------- | --- |
72
+ | **GitHub MCP** | Create issues, search for duplicates, link to bugs |
73
+ | **qa-bug-ticket-creator** | Consume bug ticket output; create linked fix task |
74
+ | **qa-coverage-analyzer** | Consume coverage gap output |
75
+ | **qa-spec-writer / qa-requirements-generator** | Consume spec/requirement references |
76
+
77
+ ## Trigger Phrases
78
+
79
+ - "Create a task to [description]"
80
+ - "Generate fix task for bug #123"
81
+ - "Create tasks from coverage gaps in [path]"
82
+ - "Task from spec-auditor findings"
83
+ - "Linked fix task for [bug summary]"
84
+ - "Work items from risk analysis"
85
+ - "Development task for [feature/fix]"
86
+
87
+ ## Workflow
88
+
89
+ 1. **Input** — User request, bug ticket, coverage gap, spec finding, or risk output
90
+ 2. **Task type** — Classify as Development / QA / Documentation / Enhancement
91
+ 3. **Content** — Title, description, acceptance criteria, labels
92
+ 4. **Links** — Add references to parent bug, requirement, or source
93
+ 5. **Duplicate check** — Search existing issues for similar tasks (optional)
94
+ 6. **Create** — Create GitHub Issue via GitHub MCP; output link
95
+
96
+ ## Scope
97
+
98
+ **Can do (autonomous):**
99
+ - Create tasks from user description, bug tickets, coverage gaps, spec findings
100
+ - Classify task type and assign appropriate labels
101
+ - Link tasks to parent bugs, requirements, coverage gaps
102
+ - Create GitHub Issues via GitHub MCP
103
+ - Search for duplicate tasks before creating
104
+ - Work paired with qa-bug-ticket-creator for linked fix tasks
105
+
106
+ **Cannot do (requires confirmation):**
107
+ - Assign to specific users without approval
108
+ - Set milestones or due dates without user input
109
+ - Create tasks in Jira/Linear (reference format only; adapters future)
110
+
111
+ **Will not do (out of scope):**
112
+ - Execute development or testing work
113
+ - Modify code or configurations
114
+ - Approve or prioritize tasks (stakeholder responsibility)
115
+
116
+ ## Quality Checklist
117
+
118
+ - [ ] Task title is actionable (verb + object)
119
+ - [ ] Description includes context and acceptance criteria
120
+ - [ ] Links to parent bug/requirement/coverage gap when applicable
121
+ - [ ] Labels match task type and component
122
+ - [ ] Acceptance criteria are testable
123
+ - [ ] No hardcoded secrets; repo/org from user or env
124
+ - [ ] Duplicate check performed when creating from coverage/spec
125
+
126
+ ## Troubleshooting
127
+
128
+ | Symptom | Likely Cause | Fix |
129
+ | ------- | ------------ | --- |
130
+ | Task too vague | Insufficient context from source | Add explicit acceptance criteria; request clarification |
131
+ | Missing link to bug | Bug ticket not passed or not found | Verify bug exists; include bug number in description |
132
+ | Wrong task type | Misclassification of input | Use `references/task-types.md`; ask user to confirm |
133
+ | Duplicate created | Search query too narrow | Broaden search terms; check similar open issues |
134
+ | GitHub MCP fails | Token missing, repo access | Verify GitHub MCP config; use markdown output as fallback |
135
+ | Paired mode not linking | qa-bug-ticket-creator output not consumed | Ensure bug ticket number is passed; use "Fixes #N" in body |
136
+
137
+ ## Reference Files
138
+
139
+ | Topic | File |
140
+ | ----- | ---- |
141
+ | Task type templates and examples | `references/task-types.md` |
142
+ | Linking patterns (bugs, requirements, coverage) | `references/linking-patterns.md` |
@@ -0,0 +1,127 @@
1
+ # Linking Patterns for Tasks
2
+
3
+ *How to link tasks to bugs, requirements, coverage gaps, and spec sections.*
4
+
5
+ ---
6
+
7
+ ## GitHub Issue Linking
8
+
9
+ ### Fixes (auto-close)
10
+
11
+ Use in issue body or PR description:
12
+ ```
13
+ Fixes #123
14
+ ```
15
+ or
16
+ ```
17
+ Closes #123
18
+ ```
19
+ GitHub will auto-close issue #123 when the PR is merged.
20
+
21
+ ### Related (no auto-close)
22
+
23
+ ```
24
+ Related to #123
25
+ ```
26
+ or
27
+ ```
28
+ See also #456
29
+ ```
30
+
31
+ ### In title (avoid)
32
+
33
+ Do not put issue numbers in task titles; use the body for links.
34
+
35
+ ---
36
+
37
+ ## Bug → Fix Task
38
+
39
+ **Pattern:** Bug ticket created first; fix task references it.
40
+
41
+ 1. **qa-bug-ticket-creator** creates bug #123
42
+ 2. **qa-task-creator** creates fix task with body:
43
+ ```
44
+ Fixes #123
45
+
46
+ [Task description and acceptance criteria]
47
+ ```
48
+ 3. When fix PR is merged, GitHub auto-closes #123
49
+
50
+ **When to use "Fixes" vs "Related to":**
51
+ - **Fixes** — Task directly resolves the bug
52
+ - **Related to** — Task is related (e.g., adds test for bug; doesn't fix root cause)
53
+
54
+ ---
55
+
56
+ ## Requirement → Task
57
+
58
+ **Pattern:** Task implements or validates a requirement.
59
+
60
+ **Link format:**
61
+ ```
62
+ Implements: REQ-001 (User must be able to reset password)
63
+ ```
64
+ or
65
+ ```
66
+ Requirement: [link to requirement doc] §2.3
67
+ ```
68
+
69
+ **Traceability:** Keep requirement ID in task body for traceability matrix.
70
+
71
+ ---
72
+
73
+ ## Coverage Gap → Task
74
+
75
+ **Pattern:** Coverage analyzer identifies gap; task adds tests.
76
+
77
+ **Link format:**
78
+ ```
79
+ Coverage gap: src/auth/AuthService.ts:45-78 (0% coverage)
80
+ ```
81
+ or
82
+ ```
83
+ Module: AuthService.login() — 0% coverage per coverage report [date]
84
+ ```
85
+
86
+ **File:line** helps developer locate the code to test.
87
+
88
+ ---
89
+
90
+ ## Spec Section → Task
91
+
92
+ **Pattern:** Spec-auditor or manual review finds discrepancy; task updates implementation or spec.
93
+
94
+ **Link format:**
95
+ ```
96
+ Spec reference: §4.2 Validation Rules
97
+ ```
98
+ or
99
+ ```
100
+ Spec: docs/spec.md §4.2 — Implement validation per spec
101
+ ```
102
+
103
+ ---
104
+
105
+ ## Chained Links (Bug → Fix → Test)
106
+
107
+ When creating a fix task, consider also creating a QA task for regression coverage:
108
+
109
+ 1. **Bug #123** — "Checkout crashes with empty cart"
110
+ 2. **Fix task #124** — "Fix null pointer in checkout" — Fixes #123
111
+ 3. **QA task #125** — "Add regression test for empty cart checkout" — Related to #123
112
+
113
+ Link QA task to bug so it's traceable; fix task handles the code change.
114
+
115
+ ---
116
+
117
+ ## Jira / Linear (Future Adapters)
118
+
119
+ When adapters are added:
120
+
121
+ | System | Link format |
122
+ | ------ | ----------- |
123
+ | **Jira** | `PROJ-123` in description; Jira auto-links |
124
+ | **Linear** | `BUG-456` or `[Linear Issue](url)` |
125
+ | **Azure DevOps** | `AB#123` for work item reference |
126
+
127
+ For now, output markdown with explicit links; user can paste into Jira/Linear.
@@ -0,0 +1,169 @@
1
+ # Task Type Templates and Examples
2
+
3
+ *Reference for classifying and structuring work tasks.*
4
+
5
+ ---
6
+
7
+ ## Development Tasks
8
+
9
+ ### Implement (new feature)
10
+
11
+ **Template:**
12
+ - **Title:** Implement [feature] in [component]
13
+ - **Description:** Add [feature] per [spec/requirement reference]. [Context].
14
+ - **Acceptance criteria:** [List of testable conditions]
15
+ - **Labels:** `task`, `development`, `feature`
16
+
17
+ **Example:**
18
+ ```
19
+ Title: Implement email validation in UserRegistrationForm
20
+ Description: Add client-side and server-side email validation per spec §3.2.
21
+ Acceptance criteria:
22
+ - Valid emails (RFC 5322) pass validation
23
+ - Invalid formats show inline error message
24
+ - Server returns 400 with error code for invalid email
25
+ Labels: task, development, feature, frontend
26
+ ```
27
+
28
+ ### Fix (bug)
29
+
30
+ **Template:**
31
+ - **Title:** Fix [symptom] in [component]
32
+ - **Description:** [Bug summary]. Fixes #[bug-number].
33
+ - **Acceptance criteria:** [Conditions that verify fix]
34
+ - **Labels:** `task`, `development`, `bug`
35
+
36
+ **Example:**
37
+ ```
38
+ Title: Fix null pointer when cart is empty in checkout
39
+ Description: Checkout crashes when user proceeds with empty cart. Fixes #456.
40
+ Acceptance criteria:
41
+ - Empty cart shows "Add items to cart" message
42
+ - Checkout button disabled when cart empty
43
+ - No null pointer exceptions in checkout flow
44
+ Labels: task, development, bug, checkout
45
+ ```
46
+
47
+ ### Refactor
48
+
49
+ **Template:**
50
+ - **Title:** Refactor [component] to [goal]
51
+ - **Description:** [Current state] → [desired state]. [Rationale].
52
+ - **Acceptance criteria:** [Behavior preserved; improvements verified]
53
+ - **Labels:** `task`, `development`, `refactor`
54
+
55
+ ### Optimize
56
+
57
+ **Template:**
58
+ - **Title:** Optimize [operation] in [component]
59
+ - **Description:** [Current performance] → [target]. [Approach].
60
+ - **Acceptance criteria:** [Measurable performance criteria]
61
+ - **Labels:** `task`, `development`, `performance`
62
+
63
+ ---
64
+
65
+ ## QA Tasks
66
+
67
+ ### Write tests
68
+
69
+ **Template:**
70
+ - **Title:** Add [test type] for [component/feature]
71
+ - **Description:** [Coverage gap or risk]. [Scope].
72
+ - **Acceptance criteria:** [Coverage target, scenarios covered]
73
+ - **Labels:** `task`, `qa`, `testing`
74
+
75
+ **Example:**
76
+ ```
77
+ Title: Add unit tests for AuthService.login()
78
+ Description: AuthService.login() has 0% coverage. High-risk authentication path.
79
+ Acceptance criteria:
80
+ - Happy path: valid credentials return token
81
+ - Invalid credentials return 401
82
+ - Locked account returns 423
83
+ - Coverage ≥ 90% for AuthService
84
+ Labels: task, qa, testing, auth
85
+ ```
86
+
87
+ ### Increase coverage
88
+
89
+ **Template:**
90
+ - **Title:** Increase test coverage for [module] to [target]%
91
+ - **Description:** Current: [X]%. Target: [Y]%. Gaps: [list].
92
+ - **Acceptance criteria:** [Coverage threshold; critical paths covered]
93
+ - **Labels:** `task`, `qa`, `coverage`
94
+
95
+ ### Update test data
96
+
97
+ **Template:**
98
+ - **Title:** Update test data for [scenario]
99
+ - **Description:** [What changed; why data needs update].
100
+ - **Acceptance criteria:** [Data valid; tests pass]
101
+ - **Labels:** `task`, `qa`, `test-data`
102
+
103
+ ---
104
+
105
+ ## Documentation Tasks
106
+
107
+ ### Update specs
108
+
109
+ **Template:**
110
+ - **Title:** Update [spec/doc] for [change]
111
+ - **Description:** [What changed in implementation]. [Sections to update].
112
+ - **Acceptance criteria:** [Spec reflects current behavior; examples updated]
113
+ - **Labels:** `task`, `documentation`, `spec`
114
+
115
+ ### Add diagrams
116
+
117
+ **Template:**
118
+ - **Title:** Add [diagram type] for [topic]
119
+ - **Description:** [Purpose]. [Scope]. Use qa-diagram-generator patterns.
120
+ - **Acceptance criteria:** [Diagram accurate; embedded in doc]
121
+ - **Labels:** `task`, `documentation`, `diagram`
122
+
123
+ ### API docs
124
+
125
+ **Template:**
126
+ - **Title:** Document [API/endpoint] in OpenAPI
127
+ - **Description:** [Endpoint]. [Request/response]. [Examples].
128
+ - **Acceptance criteria:** [OpenAPI valid; examples runnable]
129
+ - **Labels:** `task`, `documentation`, `api`
130
+
131
+ ---
132
+
133
+ ## Enhancement Tasks
134
+
135
+ ### Performance
136
+
137
+ **Template:**
138
+ - **Title:** Improve [metric] for [component]
139
+ - **Description:** [Current] → [target]. [Approach].
140
+ - **Acceptance criteria:** [Benchmark before/after]
141
+ - **Labels:** `task`, `enhancement`, `performance`
142
+
143
+ ### Validation
144
+
145
+ **Template:**
146
+ - **Title:** Add validation for [input/flow]
147
+ - **Description:** [Gap]. [Validation rules].
148
+ - **Acceptance criteria:** [Invalid inputs rejected; errors clear]
149
+ - **Labels:** `task`, `enhancement`, `validation`
150
+
151
+ ### UI polish
152
+
153
+ **Template:**
154
+ - **Title:** Polish [UI element] for [improvement]
155
+ - **Description:** [Current UX issue]. [Desired state].
156
+ - **Acceptance criteria:** [Visual/UX criteria]
157
+ - **Labels:** `task`, `enhancement`, `ui`
158
+
159
+ ---
160
+
161
+ ## Task Type Selection Matrix
162
+
163
+ | Input Source | Primary Type | Secondary |
164
+ | ------------ | ------------ | --------- |
165
+ | Bug report | Development (fix) | QA (regression test) |
166
+ | Coverage gap | QA (write tests) | Development (if implementation missing) |
167
+ | Spec finding | Development / Documentation | QA |
168
+ | Risk analysis | QA / Development | Documentation |
169
+ | User request | Varies | — |
@@ -0,0 +1,24 @@
1
+ # Task
2
+
3
+ ## [TASK-{ID}] {Title}
4
+
5
+ **Type:** {Dev | QA | Docs | Enhancement}
6
+ **Priority:** {P1 | P2 | P3 | P4}
7
+ **Assignee:** {name or unassigned}
8
+ **Estimate:** {story points or hours}
9
+
10
+ ## Description
11
+ {Brief description of the task}
12
+
13
+ ## Acceptance Criteria
14
+ - [ ] {Criterion 1}
15
+ - [ ] {Criterion 2}
16
+ - [ ] {Criterion 3}
17
+
18
+ ## Related Items
19
+ - **Bug:** [BUG-{ID}]
20
+ - **Requirement:** [REQ-{ID}]
21
+ - **Coverage Gap:** {description}
22
+
23
+ ## Labels
24
+ `type/{type}` `priority/{level}` `component/{name}`