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.
- package/README.md +168 -0
- package/bin/cli.js +42 -0
- package/dist/agents/registry.d.ts +5 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/registry.js +101 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/types.d.ts +9 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/dependencies.d.ts +21 -0
- package/dist/dependencies.d.ts.map +1 -0
- package/dist/dependencies.js +125 -0
- package/dist/dependencies.js.map +1 -0
- package/dist/installer.d.ts +25 -0
- package/dist/installer.d.ts.map +1 -0
- package/dist/installer.js +437 -0
- package/dist/installer.js.map +1 -0
- package/dist/scaffold.d.ts +27 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +182 -0
- package/dist/scaffold.js.map +1 -0
- package/package.json +40 -0
- package/skills/qa-accessibility-test-writer/SKILL.md +127 -0
- package/skills/qa-accessibility-test-writer/references/axe-core-patterns.md +349 -0
- package/skills/qa-accessibility-test-writer/references/best-practices.md +184 -0
- package/skills/qa-accessibility-test-writer/references/wcag-tests.md +331 -0
- package/skills/qa-api-contract-curator/SKILL.md +104 -0
- package/skills/qa-api-contract-curator/references/breaking-changes.md +363 -0
- package/skills/qa-api-contract-curator/references/openapi-structure.md +404 -0
- package/skills/qa-browser-data-collector/SKILL.md +132 -0
- package/skills/qa-browser-data-collector/references/data-collection-checklist.md +91 -0
- package/skills/qa-browser-data-collector/references/playwright-mcp-patterns.md +113 -0
- package/skills/qa-bug-ticket-creator/SKILL.md +148 -0
- package/skills/qa-bug-ticket-creator/references/bug-report-format.md +149 -0
- package/skills/qa-bug-ticket-creator/references/severity-guide.md +81 -0
- package/skills/qa-bug-ticket-creator/templates/bug-ticket-template.md +39 -0
- package/skills/qa-changelog-analyzer/SKILL.md +134 -0
- package/skills/qa-changelog-analyzer/references/git-analysis-patterns.md +138 -0
- package/skills/qa-changelog-analyzer/references/impact-mapping.md +120 -0
- package/skills/qa-clickup-integration/SKILL.md +166 -0
- package/skills/qa-clickup-integration/references/api-patterns.md +102 -0
- package/skills/qa-clickup-integration/references/field-mapping.md +71 -0
- package/skills/qa-codeceptjs-writer/SKILL.md +136 -0
- package/skills/qa-codeceptjs-writer/references/best-practices.md +207 -0
- package/skills/qa-codeceptjs-writer/references/config.md +255 -0
- package/skills/qa-codeceptjs-writer/references/patterns.md +285 -0
- package/skills/qa-coverage-analyzer/SKILL.md +166 -0
- package/skills/qa-coverage-analyzer/references/best-practices.md +142 -0
- package/skills/qa-coverage-analyzer/references/coverage-dimensions.md +155 -0
- package/skills/qa-coverage-analyzer/references/tools.md +204 -0
- package/skills/qa-cypress-writer/SKILL.md +134 -0
- package/skills/qa-cypress-writer/references/assertions.md +121 -0
- package/skills/qa-cypress-writer/references/best-practices.md +82 -0
- package/skills/qa-cypress-writer/references/config.md +121 -0
- package/skills/qa-cypress-writer/references/patterns.md +170 -0
- package/skills/qa-data-factory/SKILL.md +126 -0
- package/skills/qa-data-factory/references/factory-patterns.md +164 -0
- package/skills/qa-data-factory/references/faker-guide.md +131 -0
- package/skills/qa-diagram-generator/SKILL.md +125 -0
- package/skills/qa-diagram-generator/references/c4-model.md +53 -0
- package/skills/qa-diagram-generator/references/charts.md +58 -0
- package/skills/qa-diagram-generator/references/class-diagram.md +85 -0
- package/skills/qa-diagram-generator/references/er-diagram.md +69 -0
- package/skills/qa-diagram-generator/references/flowchart.md +92 -0
- package/skills/qa-diagram-generator/references/from-screenshot.md +45 -0
- package/skills/qa-diagram-generator/references/gantt.md +49 -0
- package/skills/qa-diagram-generator/references/journey.md +50 -0
- package/skills/qa-diagram-generator/references/mindmap.md +75 -0
- package/skills/qa-diagram-generator/references/sequence.md +69 -0
- package/skills/qa-diagram-generator/references/state-diagram.md +56 -0
- package/skills/qa-discovery-interview/SKILL.md +182 -0
- package/skills/qa-discovery-interview/references/completeness-checklist.md +53 -0
- package/skills/qa-discovery-interview/references/conflict-patterns.md +101 -0
- package/skills/qa-discovery-interview/references/qa-categories.md +147 -0
- package/skills/qa-discovery-interview/templates/qa-brief-template.md +168 -0
- package/skills/qa-environment-checker/SKILL.md +142 -0
- package/skills/qa-environment-checker/references/dependency-matrix.md +101 -0
- package/skills/qa-environment-checker/references/health-checks.md +209 -0
- package/skills/qa-environment-checker/templates/env-readiness-template.md +64 -0
- package/skills/qa-flaky-detector/SKILL.md +153 -0
- package/skills/qa-flaky-detector/references/ci-analysis.md +140 -0
- package/skills/qa-flaky-detector/references/flaky-patterns.md +247 -0
- package/skills/qa-github-issues-enhanced/SKILL.md +175 -0
- package/skills/qa-github-issues-enhanced/references/issue-templates.md +425 -0
- package/skills/qa-github-issues-enhanced/references/label-taxonomy.md +130 -0
- package/skills/qa-github-issues-enhanced/references/workflow-patterns.md +188 -0
- package/skills/qa-httpx-writer/SKILL.md +138 -0
- package/skills/qa-httpx-writer/references/assertions.md +195 -0
- package/skills/qa-httpx-writer/references/best-practices.md +140 -0
- package/skills/qa-httpx-writer/references/config.md +212 -0
- package/skills/qa-httpx-writer/references/patterns.md +262 -0
- package/skills/qa-jest-writer/SKILL.md +131 -0
- package/skills/qa-jest-writer/references/assertions.md +125 -0
- package/skills/qa-jest-writer/references/best-practices.md +136 -0
- package/skills/qa-jest-writer/references/config.md +134 -0
- package/skills/qa-jest-writer/references/patterns.md +172 -0
- package/skills/qa-jira-integration/SKILL.md +135 -0
- package/skills/qa-jira-integration/references/api-patterns.md +143 -0
- package/skills/qa-jira-integration/references/field-mapping.md +79 -0
- package/skills/qa-jira-integration/references/xray-integration.md +85 -0
- package/skills/qa-jmeter-writer/SKILL.md +171 -0
- package/skills/qa-jmeter-writer/references/best-practices.md +157 -0
- package/skills/qa-jmeter-writer/references/config.md +204 -0
- package/skills/qa-jmeter-writer/references/patterns.md +242 -0
- package/skills/qa-junit5-writer/SKILL.md +157 -0
- package/skills/qa-junit5-writer/references/assertions.md +118 -0
- package/skills/qa-junit5-writer/references/config.md +97 -0
- package/skills/qa-junit5-writer/references/patterns.md +162 -0
- package/skills/qa-k6-writer/SKILL.md +155 -0
- package/skills/qa-k6-writer/references/best-practices.md +236 -0
- package/skills/qa-k6-writer/references/config.md +219 -0
- package/skills/qa-k6-writer/references/patterns.md +304 -0
- package/skills/qa-linear-integration/SKILL.md +137 -0
- package/skills/qa-linear-integration/references/api-patterns.md +249 -0
- package/skills/qa-linear-integration/references/field-mapping.md +121 -0
- package/skills/qa-locust-writer/SKILL.md +151 -0
- package/skills/qa-locust-writer/references/best-practices.md +126 -0
- package/skills/qa-locust-writer/references/config.md +170 -0
- package/skills/qa-locust-writer/references/patterns.md +235 -0
- package/skills/qa-manual-test-designer/SKILL.md +145 -0
- package/skills/qa-manual-test-designer/references/exploratory-charters.md +138 -0
- package/skills/qa-manual-test-designer/references/personas.md +146 -0
- package/skills/qa-manual-test-designer/templates/exploratory-charter-template.md +47 -0
- package/skills/qa-manual-test-designer/templates/test-case-template.md +31 -0
- package/skills/qa-mobile-test-writer/SKILL.md +144 -0
- package/skills/qa-mobile-test-writer/references/best-practices.md +214 -0
- package/skills/qa-mobile-test-writer/references/config.md +309 -0
- package/skills/qa-mobile-test-writer/references/patterns.md +304 -0
- package/skills/qa-nfr-analyst/SKILL.md +177 -0
- package/skills/qa-nfr-analyst/references/iso-25010-model.md +159 -0
- package/skills/qa-nfr-analyst/references/owasp-wstg-baseline.md +202 -0
- package/skills/qa-nfr-analyst/references/wcag-checklist.md +184 -0
- package/skills/qa-nfr-analyst/templates/owasp-checklist-template.md +89 -0
- package/skills/qa-nfr-analyst/templates/wcag-checklist-template.md +48 -0
- package/skills/qa-orchestrator/SKILL.md +132 -0
- package/skills/qa-orchestrator/references/handoff-chains.md +105 -0
- package/skills/qa-orchestrator/references/pipeline-modes.md +115 -0
- package/skills/qa-orchestrator/references/scheduler-rules.md +84 -0
- package/skills/qa-pact-writer/SKILL.md +133 -0
- package/skills/qa-pact-writer/references/best-practices.md +100 -0
- package/skills/qa-pact-writer/references/config.md +135 -0
- package/skills/qa-pact-writer/references/patterns.md +161 -0
- package/skills/qa-plan-creator/SKILL.md +139 -0
- package/skills/qa-plan-creator/references/introduction-plan.md +43 -0
- package/skills/qa-plan-creator/references/migration-plan.md +44 -0
- package/skills/qa-plan-creator/references/onboarding-plan.md +46 -0
- package/skills/qa-plan-creator/references/performance-plan.md +44 -0
- package/skills/qa-plan-creator/references/regression-plan.md +45 -0
- package/skills/qa-plan-creator/references/release-plan.md +45 -0
- package/skills/qa-plan-creator/references/sprint-plan.md +44 -0
- package/skills/qa-plan-creator/references/test-plan.md +59 -0
- package/skills/qa-plan-creator/references/uat-plan.md +43 -0
- package/skills/qa-plan-creator/templates/checklist-template.md +36 -0
- package/skills/qa-plan-creator/templates/regression-checklist-template.md +49 -0
- package/skills/qa-plan-creator/templates/release-checklist-template.md +46 -0
- package/skills/qa-plan-creator/templates/test-plan-template.md +74 -0
- package/skills/qa-playwright-py-writer/SKILL.md +156 -0
- package/skills/qa-playwright-py-writer/references/best-practices.md +194 -0
- package/skills/qa-playwright-py-writer/references/config.md +195 -0
- package/skills/qa-playwright-py-writer/references/patterns.md +212 -0
- package/skills/qa-playwright-ts-writer/SKILL.md +151 -0
- package/skills/qa-playwright-ts-writer/references/assertions.md +109 -0
- package/skills/qa-playwright-ts-writer/references/best-practices.md +191 -0
- package/skills/qa-playwright-ts-writer/references/config.md +144 -0
- package/skills/qa-playwright-ts-writer/references/patterns.md +171 -0
- package/skills/qa-pytest-writer/SKILL.md +145 -0
- package/skills/qa-pytest-writer/references/assertions.md +149 -0
- package/skills/qa-pytest-writer/references/best-practices.md +97 -0
- package/skills/qa-pytest-writer/references/config.md +176 -0
- package/skills/qa-pytest-writer/references/patterns.md +251 -0
- package/skills/qa-qase-integration/SKILL.md +149 -0
- package/skills/qa-qase-integration/references/api-reference.md +354 -0
- package/skills/qa-qase-integration/references/ci-integration.md +196 -0
- package/skills/qa-qase-integration/references/field-mapping.md +157 -0
- package/skills/qa-requirements-generator/SKILL.md +152 -0
- package/skills/qa-requirements-generator/references/iso-29148-structure.md +153 -0
- package/skills/qa-requirements-generator/references/requirement-patterns.md +278 -0
- package/skills/qa-rest-assured-writer/SKILL.md +137 -0
- package/skills/qa-rest-assured-writer/references/best-practices.md +50 -0
- package/skills/qa-rest-assured-writer/references/config.md +124 -0
- package/skills/qa-rest-assured-writer/references/patterns.md +192 -0
- package/skills/qa-risk-analyzer/SKILL.md +158 -0
- package/skills/qa-risk-analyzer/references/impact-analysis.md +133 -0
- package/skills/qa-risk-analyzer/references/risk-factors.md +123 -0
- package/skills/qa-robot-framework-writer/SKILL.md +147 -0
- package/skills/qa-robot-framework-writer/references/best-practices.md +249 -0
- package/skills/qa-robot-framework-writer/references/config.md +204 -0
- package/skills/qa-robot-framework-writer/references/libraries.md +273 -0
- package/skills/qa-robot-framework-writer/references/patterns.md +216 -0
- package/skills/qa-security-test-writer/SKILL.md +123 -0
- package/skills/qa-security-test-writer/references/best-practices.md +155 -0
- package/skills/qa-security-test-writer/references/owasp-top10.md +331 -0
- package/skills/qa-security-test-writer/references/zap-config.md +258 -0
- package/skills/qa-selenium-java-writer/SKILL.md +143 -0
- package/skills/qa-selenium-java-writer/references/best-practices.md +59 -0
- package/skills/qa-selenium-java-writer/references/config.md +143 -0
- package/skills/qa-selenium-java-writer/references/patterns.md +170 -0
- package/skills/qa-selenium-py-writer/SKILL.md +150 -0
- package/skills/qa-selenium-py-writer/references/best-practices.md +175 -0
- package/skills/qa-selenium-py-writer/references/config.md +224 -0
- package/skills/qa-selenium-py-writer/references/patterns.md +255 -0
- package/skills/qa-shortcut-integration/SKILL.md +143 -0
- package/skills/qa-shortcut-integration/references/api-patterns.md +126 -0
- package/skills/qa-shortcut-integration/references/field-mapping.md +66 -0
- package/skills/qa-spec-auditor/SKILL.md +162 -0
- package/skills/qa-spec-auditor/references/audit-checklist.md +144 -0
- package/skills/qa-spec-auditor/references/drift-patterns.md +207 -0
- package/skills/qa-spec-writer/SKILL.md +143 -0
- package/skills/qa-spec-writer/references/gherkin-guide.md +253 -0
- package/skills/qa-spec-writer/references/specification-patterns.md +274 -0
- package/skills/qa-spring-test-writer/SKILL.md +170 -0
- package/skills/qa-spring-test-writer/references/best-practices.md +57 -0
- package/skills/qa-spring-test-writer/references/config.md +179 -0
- package/skills/qa-spring-test-writer/references/patterns.md +235 -0
- package/skills/qa-supertest-writer/SKILL.md +150 -0
- package/skills/qa-supertest-writer/references/assertions.md +192 -0
- package/skills/qa-supertest-writer/references/best-practices.md +102 -0
- package/skills/qa-supertest-writer/references/config.md +166 -0
- package/skills/qa-supertest-writer/references/patterns.md +242 -0
- package/skills/qa-task-creator/SKILL.md +142 -0
- package/skills/qa-task-creator/references/linking-patterns.md +127 -0
- package/skills/qa-task-creator/references/task-types.md +169 -0
- package/skills/qa-task-creator/templates/task-template.md +24 -0
- package/skills/qa-test-doc-compiler/SKILL.md +114 -0
- package/skills/qa-test-doc-compiler/references/agile-tailoring.md +220 -0
- package/skills/qa-test-doc-compiler/references/iso-29119-3-documents.md +302 -0
- package/skills/qa-test-healer/SKILL.md +101 -0
- package/skills/qa-test-healer/references/diagnosis-patterns.md +142 -0
- package/skills/qa-test-healer/references/fix-strategies.md +177 -0
- package/skills/qa-test-reporter/SKILL.md +130 -0
- package/skills/qa-test-reporter/references/best-practices.md +162 -0
- package/skills/qa-test-reporter/references/iso-29119-reports.md +236 -0
- package/skills/qa-test-reporter/references/report-formats.md +287 -0
- package/skills/qa-test-reviewer/SKILL.md +142 -0
- package/skills/qa-test-reviewer/references/anti-patterns.md +268 -0
- package/skills/qa-test-reviewer/references/review-checklist.md +93 -0
- package/skills/qa-test-strategy/SKILL.md +133 -0
- package/skills/qa-test-strategy/references/entry-exit-criteria.md +176 -0
- package/skills/qa-test-strategy/references/risk-matrix.md +102 -0
- package/skills/qa-test-strategy/references/testing-types.md +143 -0
- package/skills/qa-testcase-from-docs/SKILL.md +161 -0
- package/skills/qa-testcase-from-docs/references/test-case-format.md +196 -0
- package/skills/qa-testcase-from-docs/references/test-design-techniques.md +126 -0
- package/skills/qa-testcase-from-docs/templates/test-case-template.md +31 -0
- package/skills/qa-testcase-from-ui/SKILL.md +109 -0
- package/skills/qa-testcase-from-ui/references/ui-element-patterns.md +126 -0
- package/skills/qa-testcase-from-ui/references/visual-analysis-guide.md +146 -0
- package/skills/qa-testcase-from-ui/templates/test-case-template.md +31 -0
- package/skills/qa-visual-regression-writer/SKILL.md +175 -0
- package/skills/qa-visual-regression-writer/references/best-practices.md +154 -0
- package/skills/qa-visual-regression-writer/references/config.md +220 -0
- package/skills/qa-visual-regression-writer/references/patterns.md +213 -0
- package/skills/qa-vitest-writer/SKILL.md +141 -0
- package/skills/qa-vitest-writer/references/assertions.md +105 -0
- package/skills/qa-vitest-writer/references/best-practices.md +62 -0
- package/skills/qa-vitest-writer/references/config.md +127 -0
- package/skills/qa-vitest-writer/references/patterns.md +141 -0
- package/skills/qa-webdriverio-writer/SKILL.md +145 -0
- package/skills/qa-webdriverio-writer/references/best-practices.md +176 -0
- package/skills/qa-webdriverio-writer/references/config.md +240 -0
- 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}`
|