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,135 @@
1
+ ---
2
+ name: qa-jira-integration
3
+ description: Jira integration for creating issues, managing epics/sprints, syncing with Xray/Zephyr test management, and tracking QA workflows via REST API or Atlassian MCP.
4
+ dependencies:
5
+ recommended:
6
+ - qa-bug-ticket-creator
7
+ - qa-task-creator
8
+ ---
9
+
10
+ # QA Jira Integration
11
+
12
+ ## Purpose
13
+
14
+ Integrate QA workflow with Jira for issue tracking and project management. Create and update issues, manage epics and sprints, link issues to requirements and test cases, and sync with Xray/Zephyr for test management. Use Jira REST API or Atlassian MCP when available.
15
+
16
+ ## Features
17
+
18
+ | Feature | Description |
19
+ | ------- | ----------- |
20
+ | **Create/update issues** | Bug, Story, Task, Sub-task with full field mapping |
21
+ | **Manage epics and sprints** | Create epics, add issues to sprints, manage backlog |
22
+ | **Link issues** | Link to requirements, test cases, parent issues |
23
+ | **Xray/Zephyr integration** | Sync test cases, test executions, traceability |
24
+ | **JQL queries** | Search and report on issues by project, status, assignee |
25
+ | **Transition management** | Move issues through workflow states (To Do → In Progress → Done) |
26
+
27
+ ## Authentication
28
+
29
+ | Variable | Description |
30
+ | -------- | ----------- |
31
+ | `JIRA_BASE_URL` | Jira instance URL (e.g., `https://your-domain.atlassian.net`) |
32
+ | `JIRA_API_TOKEN` | API token from [Atlassian account settings](https://id.atlassian.com/manage-profile/security/api-tokens) |
33
+ | `JIRA_EMAIL` | Email for the Atlassian account (used with API token) |
34
+
35
+ **Basic Auth:** `Authorization: Basic base64(email:api_token)`
36
+
37
+ See `references/api-patterns.md` for request examples.
38
+
39
+ ## Key API Patterns
40
+
41
+ | Operation | Method | Endpoint |
42
+ | --------- | ------ | -------- |
43
+ | Create issue | POST | `/rest/api/3/issue` |
44
+ | Search (JQL) | GET | `/rest/api/3/search?jql=...` |
45
+ | Get issue | GET | `/rest/api/3/issue/{key}` |
46
+ | Update issue | PUT | `/rest/api/3/issue/{key}` |
47
+ | Transition | POST | `/rest/api/3/issue/{key}/transitions` |
48
+ | Link issues | POST | `/rest/api/3/issueLink` |
49
+ | Add comment | POST | `/rest/api/3/issue/{key}/comment` |
50
+ | Add attachment | POST | `/rest/api/3/issue/{key}/attachments` |
51
+
52
+ ## Integration with qa-bug-ticket-creator
53
+
54
+ When qa-bug-ticket-creator produces a bug report:
55
+
56
+ 1. **Map fields** — Use `references/field-mapping.md` to map bug report fields to Jira issue fields
57
+ 2. **Create Jira Bug** — POST to `/rest/api/3/issue` with `issuetype: { name: "Bug" }`
58
+ 3. **Link to test** — If test case key exists, create issue link (e.g., "tests" or "blocks")
59
+ 4. **Optional** — Invoke qa-task-creator for linked fix task; create as Jira Task/Sub-task under same project
60
+
61
+ ## Integration with qa-task-creator
62
+
63
+ When qa-task-creator produces a task:
64
+
65
+ 1. **Map fields** — Map task type to Jira issuetype (Story, Task, Sub-task)
66
+ 2. **Create Jira issue** — POST with appropriate project key and issuetype
67
+ 3. **Link to parent** — If task references a bug, use `parent` for Sub-task or issue link for Task
68
+ 4. **Sprint assignment** — Add to sprint via `fields.customfield_XXXX` (sprint field ID varies by instance)
69
+
70
+ ## Trigger Phrases
71
+
72
+ - "Create Jira issue from [bug report / task]"
73
+ - "File bug in Jira for [test failure]"
74
+ - "Add issue to sprint [name]"
75
+ - "Search Jira for [JQL]"
76
+ - "Transition [PROJ-123] to In Progress"
77
+ - "Link [PROJ-123] to test case [PROJ-456]"
78
+ - "Sync test results to Xray"
79
+
80
+ ## Workflow
81
+
82
+ 1. **Auth** — Load `JIRA_BASE_URL`, `JIRA_EMAIL`, `JIRA_API_TOKEN` from `.env`
83
+ 2. **Map** — Use `references/field-mapping.md` for QA → Jira field mapping
84
+ 3. **Create/Update** — Call REST API or Atlassian MCP
85
+ 4. **Link** — Create issue links, add to epic/sprint as needed
86
+ 5. **Report** — Use JQL for dashboards and status reports
87
+
88
+ ## Scope
89
+
90
+ **Can do (autonomous):**
91
+ - Create Bug, Story, Task, Sub-task via REST API
92
+ - Search issues with JQL
93
+ - Transition issues through workflow
94
+ - Link issues (parent-child, blocks, relates to)
95
+ - Add comments and attachments
96
+ - Map QA bug/task output to Jira fields per `references/field-mapping.md`
97
+ - Integrate with qa-bug-ticket-creator and qa-task-creator for issue creation
98
+
99
+ **Cannot do (requires confirmation):**
100
+ - Create issues in projects without configured access
101
+ - Override user-specified assignee or sprint
102
+ - Delete or bulk-modify issues
103
+
104
+ **Will not do (out of scope):**
105
+ - Modify Jira project configuration or workflows
106
+ - Create custom fields (admin-only)
107
+ - Execute tests or modify application code
108
+
109
+ ## Quality Checklist
110
+
111
+ - [ ] Auth uses env vars; no hardcoded credentials
112
+ - [ ] Field mapping follows `references/field-mapping.md`
113
+ - [ ] Issue types and project keys validated before create
114
+ - [ ] JQL queries are safe (no injection; use parameterization where supported)
115
+ - [ ] Links to qa-bug-ticket-creator / qa-task-creator output preserved
116
+ - [ ] Xray/Zephyr operations follow `references/xray-integration.md` when used
117
+
118
+ ## Troubleshooting
119
+
120
+ | Symptom | Likely Cause | Fix |
121
+ | ------- | ------------ | --- |
122
+ | 401 Unauthorized | Invalid token or email | Regenerate API token; verify JIRA_EMAIL matches token owner |
123
+ | 404 on create | Wrong project key or endpoint | Verify JIRA_BASE_URL; check project key exists |
124
+ | 400 Bad Request | Invalid field value | Check `references/field-mapping.md`; verify custom field IDs |
125
+ | Transition fails | Invalid transition ID | GET `/rest/api/3/issue/{key}/transitions` to list valid transitions |
126
+ | Xray sync fails | Xray not installed or wrong project | Verify Xray app; use Xray-specific endpoints per `references/xray-integration.md` |
127
+ | Field not found | Custom field ID wrong | Use GET `/rest/api/3/field` to list field IDs |
128
+
129
+ ## Reference Files
130
+
131
+ | Topic | File |
132
+ | ----- | ---- |
133
+ | Jira REST API patterns | `references/api-patterns.md` |
134
+ | QA → Jira field mapping | `references/field-mapping.md` |
135
+ | Xray/Zephyr integration | `references/xray-integration.md` |
@@ -0,0 +1,143 @@
1
+ # Jira REST API Patterns
2
+
3
+ *Request/response patterns for common Jira REST API v3 operations.*
4
+
5
+ ---
6
+
7
+ ## Base URL
8
+
9
+ ```
10
+ {JIRA_BASE_URL}/rest/api/3
11
+ ```
12
+
13
+ Headers:
14
+ ```
15
+ Authorization: Basic {base64(email:api_token)}
16
+ Content-Type: application/json
17
+ Accept: application/json
18
+ ```
19
+
20
+ ---
21
+
22
+ ## Create Issue
23
+
24
+ **POST** `/rest/api/3/issue`
25
+
26
+ ```json
27
+ {
28
+ "fields": {
29
+ "project": { "key": "PROJ" },
30
+ "summary": "Login fails when password contains special chars",
31
+ "description": {
32
+ "type": "doc",
33
+ "version": 1,
34
+ "content": [{
35
+ "type": "paragraph",
36
+ "content": [{ "type": "text", "text": "Expected: ... Actual: ..." }]
37
+ }]
38
+ },
39
+ "issuetype": { "name": "Bug" },
40
+ "priority": { "name": "High" },
41
+ "labels": ["auth", "frontend"],
42
+ "components": [{ "name": "Authentication" }]
43
+ }
44
+ }
45
+ ```
46
+
47
+ Response: `201 Created` with `{"key": "PROJ-123", "id": "12345"}`
48
+
49
+ ---
50
+
51
+ ## Search (JQL)
52
+
53
+ **GET** `/rest/api/3/search?jql={jql}&maxResults=50&startAt=0`
54
+
55
+ Example JQL:
56
+ - `project = PROJ AND issuetype = Bug AND status != Done`
57
+ - `sprint in openSprints() AND assignee = currentUser()`
58
+ - `key = PROJ-123`
59
+
60
+ Response: `{"issues": [...], "total": N}`
61
+
62
+ ---
63
+
64
+ ## Transition
65
+
66
+ **GET** `/rest/api/3/issue/{key}/transitions` — List available transitions
67
+
68
+ **POST** `/rest/api/3/issue/{key}/transitions`
69
+
70
+ ```json
71
+ {
72
+ "transition": { "id": "31" }
73
+ }
74
+ ```
75
+
76
+ Transition IDs vary by workflow; fetch via GET first.
77
+
78
+ ---
79
+
80
+ ## Add Comment
81
+
82
+ **POST** `/rest/api/3/issue/{key}/comment`
83
+
84
+ ```json
85
+ {
86
+ "body": {
87
+ "type": "doc",
88
+ "version": 1,
89
+ "content": [{
90
+ "type": "paragraph",
91
+ "content": [{ "type": "text", "text": "Comment text" }]
92
+ }]
93
+ }
94
+ }
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Link Issues
100
+
101
+ **POST** `/rest/api/3/issueLink`
102
+
103
+ ```json
104
+ {
105
+ "type": { "name": "Blocks" },
106
+ "inwardIssue": { "key": "PROJ-123" },
107
+ "outwardIssue": { "key": "PROJ-124" }
108
+ }
109
+ ```
110
+
111
+ Link types: `Blocks`, `Cloners`, `Duplicate`, `Relates`, etc.
112
+
113
+ ---
114
+
115
+ ## Attach File
116
+
117
+ **POST** `/rest/api/3/issue/{key}/attachments`
118
+
119
+ `Content-Type: multipart/form-data` with file part.
120
+
121
+ ---
122
+
123
+ ## Sub-task (Parent)
124
+
125
+ Add `"parent": { "key": "PROJ-100" }` to create sub-task under parent.
126
+
127
+ ---
128
+
129
+ ## Epic Link
130
+
131
+ For classic projects: `"customfield_10014": "PROJ-50"` (field ID varies)
132
+
133
+ For next-gen: Use `parent` or project-specific epic link field.
134
+
135
+ ---
136
+
137
+ ## Add to Sprint
138
+
139
+ **POST** `/rest/api/3/sprint/{sprintId}/issue`
140
+
141
+ Body: `{"issues": ["PROJ-123", "PROJ-124"]}`
142
+
143
+ Or set `customfield_10020` (Sprint field ID varies) on issue create/update.
@@ -0,0 +1,79 @@
1
+ # QA to Jira Field Mapping
2
+
3
+ *Mapping local QA fields (from qa-bug-ticket-creator, qa-task-creator) to Jira fields.*
4
+
5
+ ---
6
+
7
+ ## Bug Report → Jira Bug
8
+
9
+ | QA Bug Field | Jira Field | Jira API Path |
10
+ | ------------ | ---------- | ------------- |
11
+ | Title | Summary | `fields.summary` |
12
+ | Expected Result + Actual Result + Steps | Description | `fields.description` (Atlassian Document Format) |
13
+ | Severity | Priority | `fields.priority.name` |
14
+ | Component/Module | Labels | `fields.labels[]` |
15
+ | Component/Module | Components | `fields.components[].name` |
16
+ | Environment | Description (append) or custom | Custom field or description |
17
+ | Evidence | Attachments / Comment | Attach via `/attachments`; or embed in description |
18
+ | Priority (P1–P5) | Priority or custom | Map P1→Highest, P2→High, etc. |
19
+
20
+ ---
21
+
22
+ ## Task → Jira Story/Task
23
+
24
+ | QA Task Field | Jira Field | Jira API Path |
25
+ | ------------- | ---------- | ------------- |
26
+ | Title | Summary | `fields.summary` |
27
+ | Description + Acceptance criteria | Description | `fields.description` |
28
+ | Task type | Issue type | `fields.issuetype` (Story, Task) |
29
+ | Labels | Labels | `fields.labels[]` |
30
+ | Parent bug | Link or parent | `issueLink` or `fields.parent` |
31
+ | Component | Components | `fields.components[].name` |
32
+
33
+ ---
34
+
35
+ ## Severity → Priority
36
+
37
+ | QA Severity | Jira Priority |
38
+ | ----------- | ------------- |
39
+ | Blocker | Highest |
40
+ | Critical | High |
41
+ | Major | High / Medium |
42
+ | Minor | Medium / Low |
43
+ | Trivial | Low |
44
+
45
+ ---
46
+
47
+ ## Atlassian Document Format (ADF)
48
+
49
+ Description and comments use ADF:
50
+
51
+ ```json
52
+ {
53
+ "type": "doc",
54
+ "version": 1,
55
+ "content": [
56
+ {
57
+ "type": "heading",
58
+ "attrs": { "level": 3 },
59
+ "content": [{ "type": "text", "text": "Expected Result" }]
60
+ },
61
+ {
62
+ "type": "paragraph",
63
+ "content": [{ "type": "text", "text": "User should be able to log in." }]
64
+ }
65
+ ]
66
+ }
67
+ ```
68
+
69
+ For simple text, use a single paragraph node.
70
+
71
+ ---
72
+
73
+ ## Custom Fields
74
+
75
+ Project-specific custom fields have IDs like `customfield_10001`. Use:
76
+
77
+ **GET** `/rest/api/3/field` — List all fields and IDs.
78
+
79
+ Map QA concepts (e.g., Fix Version, Sprint) to the correct custom field ID for the project.
@@ -0,0 +1,85 @@
1
+ # Xray / Zephyr Test Management Integration
2
+
3
+ *Patterns for syncing test cases and execution with Jira via Xray or Zephyr.*
4
+
5
+ ---
6
+
7
+ ## Xray (Xray for Jira)
8
+
9
+ ### Test Case as Jira Issue
10
+
11
+ - **Issue type:** `Test` (or project-specific)
12
+ - **Link types:** Test → Requirement (traceability)
13
+ - **Custom fields:** Steps, Preconditions, Expected Result
14
+
15
+ ### REST API Endpoints (Xray)
16
+
17
+ | Operation | Endpoint |
18
+ | --------- | -------- |
19
+ | Create test | `POST /rest/raven/2.0/api/test` |
20
+ | Link test to requirement | `POST /rest/raven/2.0/api/test/{key}/requirement` |
21
+ | Create test execution | `POST /rest/raven/2.0/api/testexec/{execKey}/test` |
22
+ | Import test results (Xray format) | `POST /rest/raven/2.0/api/import/execution` |
23
+
24
+ ### Import Execution (Cucumber, JUnit, etc.)
25
+
26
+ Xray accepts JUnit XML, Cucumber JSON, and other formats. POST to import endpoint with execution results; Xray creates/updates Test Execution and links to tests.
27
+
28
+ ---
29
+
30
+ ## Zephyr (Zephyr Scale / Squad)
31
+
32
+ ### Test Case as Jira Issue
33
+
34
+ - **Issue type:** `Test` (Zephyr Scale)
35
+ - **Traceability:** Test ↔ Requirement via Zephyr links
36
+
37
+ ### REST API (Zephyr Scale)
38
+
39
+ | Operation | Endpoint |
40
+ | --------- | -------- |
41
+ | Create test | Zephyr Scale REST API (varies by version) |
42
+ | Add to test cycle | Cycle and folder APIs |
43
+ | Record execution | Execution API |
44
+
45
+ Check Zephyr documentation for exact endpoints; they differ between Zephyr for Jira (classic) and Zephyr Scale.
46
+
47
+ ---
48
+
49
+ ## Common Patterns
50
+
51
+ ### 1. Link Test to Requirement
52
+
53
+ After creating a Test issue in Jira:
54
+ - **Xray:** Use Xray REST to link test key to requirement key
55
+ - **Zephyr:** Use Zephyr API for traceability
56
+
57
+ ### 2. Import Automated Results
58
+
59
+ 1. Run tests (Playwright, pytest, Jest, etc.)
60
+ 2. Export results as JUnit XML or Cucumber JSON
61
+ 3. POST to Xray/Zephyr import endpoint
62
+ 4. Map test case IDs (e.g., `PROJ-T123`) to automated test names via mapping or naming convention
63
+
64
+ ### 3. Naming Convention
65
+
66
+ Use consistent naming: `PROJ-T001`, `PROJ-T002` or map `describe/it` or `test_` names to test keys via a mapping file.
67
+
68
+ ---
69
+
70
+ ## Environment Variables
71
+
72
+ | Variable | Description |
73
+ | -------- | ----------- |
74
+ | `JIRA_BASE_URL` | Same as main Jira |
75
+ | `JIRA_API_TOKEN` | Same as main Jira |
76
+ | `XRAY_CLIENT_ID` / `XRAY_CLIENT_SECRET` | For Xray Cloud API (if using OAuth) |
77
+
78
+ ---
79
+
80
+ ## Scope
81
+
82
+ - Create Test issues and link to requirements
83
+ - Import execution results from CI
84
+ - Query test coverage per requirement
85
+ - Sync with qa-test-reporter output (JUnit XML)
@@ -0,0 +1,171 @@
1
+ ---
2
+ name: qa-jmeter-writer
3
+ description: Generate JMeter performance test plans in XML/JMX format with thread groups, samplers, listeners, assertions, and CI-ready configuration.
4
+ output_dir: tests/performance
5
+ ---
6
+
7
+ # QA JMeter Writer
8
+
9
+ ## Purpose
10
+
11
+ Write JMeter test plans (.jmx) from performance test specifications. Transform structured performance requirements (from qa-plan-creator performance plans, qa-nfr-analyst NFR specs) into executable JMeter XML test plans with thread groups, samplers, listeners, assertions, and CI-ready configuration.
12
+
13
+ ## Trigger Phrases
14
+
15
+ - "Write JMeter tests for [API/endpoint]"
16
+ - "Generate JMeter load tests from performance plan"
17
+ - "Create JMeter .jmx for [service]"
18
+ - "JMeter thread group with HTTP samplers"
19
+ - "JMeter test plan with assertions and listeners"
20
+ - "JMeter CSV data parameterization"
21
+ - "JMeter CI integration non-GUI mode"
22
+ - "JMeter distributed load test plan"
23
+ - "JMeter JSON assertion for API"
24
+ - "JMeter JSR223 Groovy preprocessor"
25
+
26
+ ## Key Features
27
+
28
+ | Feature | Description |
29
+ |---------|-------------|
30
+ | **Thread Groups** | Users, ramp-up, loops, duration for load modeling |
31
+ | **HTTP Request Sampler** | URL, method, body, headers, path |
32
+ | **JDBC/JMS Samplers** | Database and messaging protocol support |
33
+ | **Listeners** | Aggregate Report, Summary Report, Graph Results, View Results Tree |
34
+ | **Assertions** | Response Assertion, Duration Assertion, Size Assertion, JSON Assertion |
35
+ | **CSV Data Set Config** | Parameterization from CSV files |
36
+ | **Extractors** | Regular Expression Extractor, JSON Extractor |
37
+ | **Timers** | Constant, Uniform Random, Gaussian for think time |
38
+ | **Pre/Post Processors** | JSR223 (Groovy), BeanShell for correlation |
39
+
40
+ ## Workflow
41
+
42
+ 1. **Read performance plan** — From qa-plan-creator (performance plan) or qa-nfr-analyst (NFR specs)
43
+ 2. **Design thread groups** — Map load profiles to Thread Group (users, ramp-up, loops, duration)
44
+ 3. **Add samplers** — HTTP Request, JDBC, JMS as needed
45
+ 4. **Configure assertions** — Response, Duration, Size, JSON for validation
46
+ 5. **Add listeners** — Aggregate Report, Summary Report for results
47
+ 6. **Generate .jmx** — Produce valid JMeter XML test plan file
48
+
49
+ ## Key Patterns
50
+
51
+ | Pattern | Usage |
52
+ |---------|-------|
53
+ | **Thread Group** | `num_threads`, `ramp_time`, `loops`, `duration` for load modeling |
54
+ | **HTTP Request** | Domain, path, method, body, headers |
55
+ | **Response Assertion** | Status code, response text, response code |
56
+ | **Duration Assertion** | Max response time (ms) |
57
+ | **JSON Assertion** | JSONPath, expected value |
58
+ | **CSV Data Set Config** | Filename, variable names, delimiter |
59
+ | **Regular Expression Extractor** | Regex, template, match number, variable |
60
+ | **JSR223 PreProcessor** | Groovy script for correlation |
61
+
62
+ ### Thread Group Example
63
+
64
+ ```xml
65
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Load Users" enabled="true">
66
+ <stringProp name="ThreadGroup.num_threads">50</stringProp>
67
+ <stringProp name="ThreadGroup.ramp_time">60</stringProp>
68
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController">
69
+ <stringProp name="LoopController.loops">-1</stringProp>
70
+ <stringProp name="ThreadGroup.duration">300</stringProp>
71
+ </elementProp>
72
+ </ThreadGroup>
73
+ ```
74
+
75
+ ### HTTP Request Sampler
76
+
77
+ ```xml
78
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="GET /api/users" enabled="true">
79
+ <stringProp name="HTTPSampler.domain">api.example.com</stringProp>
80
+ <stringProp name="HTTPSampler.path">/api/users</stringProp>
81
+ <stringProp name="HTTPSampler.method">GET</stringProp>
82
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
83
+ </HTTPSamplerProxy>
84
+ ```
85
+
86
+ ### Response Assertion
87
+
88
+ ```xml
89
+ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Status 200" enabled="true">
90
+ <collectionProp name="Assertion.test_strings">
91
+ <stringProp name="49586">200</stringProp>
92
+ </collectionProp>
93
+ <stringProp name="Assertion.custom_message"></stringProp>
94
+ <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
95
+ <boolProp name="Assertion.assume_success">false</boolProp>
96
+ </ResponseAssertion>
97
+ ```
98
+
99
+ See `references/patterns.md` for thread groups, samplers, assertions, extractors, timers, controllers.
100
+
101
+ ## Output
102
+
103
+ - **JMeter test plans** — `.jmx` files in `tests/`, `performance/`, or `jmeter/` per project convention
104
+ - **Run via CLI** — `jmeter -n -t test.jmx -l results.jtl -e -o report/`
105
+ - **CI integration** — Non-GUI mode (`-n`), JTL results (`-l`), HTML report (`-e -o`)
106
+
107
+ ## CI Integration
108
+
109
+ | Option | Description |
110
+ |--------|-------------|
111
+ | `-n` | Non-GUI mode (headless) |
112
+ | `-t test.jmx` | Test plan file |
113
+ | `-l results.jtl` | Results file (JTL/CSV) |
114
+ | `-e` | Generate HTML report after run |
115
+ | `-o report/` | Output directory for HTML report |
116
+ | `-Jprop=value` | Override JMeter properties |
117
+
118
+ ## Scope
119
+
120
+ **Can do (autonomous):**
121
+ - Generate .jmx test plans from performance plans and NFR specs
122
+ - Design thread groups (users, ramp-up, loops, duration)
123
+ - Add HTTP, JDBC, JMS samplers with proper configuration
124
+ - Configure Response, Duration, Size, JSON assertions
125
+ - Add CSV Data Set Config for parameterization
126
+ - Add Regular Expression Extractor, JSON Extractor for correlation
127
+ - Add timers (Constant, Uniform Random) for think time
128
+ - Add JSR223 PreProcessor (Groovy) for dynamic logic
129
+ - Add listeners (Aggregate Report, Summary Report)
130
+ - Generate CI-ready run commands
131
+
132
+ **Cannot do (requires confirmation):**
133
+ - Change production service configuration
134
+ - Target production without explicit consent
135
+ - Add JMeter plugins not in standard distribution
136
+ - Override project JMeter config without approval
137
+
138
+ **Will not do (out of scope):**
139
+ - Execute tests (user runs `jmeter -n -t test.jmx`)
140
+ - Write E2E functional tests (use qa-playwright-ts-writer)
141
+ - Provision load infrastructure (distributed JMeter setup)
142
+ - Modify CI/CD pipelines beyond JMeter integration
143
+
144
+ ## References
145
+
146
+ - `references/patterns.md` — Thread groups, samplers, assertions, extractors, timers, controllers
147
+ - `references/config.md` — CLI mode, properties, plugins, distributed testing
148
+ - `references/best-practices.md` — Non-GUI mode, parameterization, correlation, result analysis
149
+
150
+ ## Quality Checklist
151
+
152
+ - [ ] Thread groups match performance plan load profiles (users, ramp-up, duration)
153
+ - [ ] Assertions validate critical responses (status, duration, size)
154
+ - [ ] No hardcoded secrets; use `${__P()}` or CSV for credentials
155
+ - [ ] Think time (timers) between requests where realistic
156
+ - [ ] Listeners suitable for CI (Aggregate Report, Summary Report; avoid View Results Tree in load runs)
157
+ - [ ] CSV Data Set Config for parameterization when needed
158
+ - [ ] Extractors for correlation when session/token required
159
+ - [ ] Test plan runs in non-GUI mode without errors
160
+
161
+ ## Troubleshooting
162
+
163
+ | Symptom | Likely Cause | Fix |
164
+ |---------|--------------|-----|
165
+ | OutOfMemoryError in JMeter | Too many threads or listeners | Reduce threads; remove View Results Tree; increase JVM heap (`-Xmx`) |
166
+ | Assertions fail in CI | Different baseline or env | Align assertion thresholds; use `${__P()}` for env-specific values |
167
+ | High error rate | Timeouts, 5xx, or wrong assertions | Increase timeout; fix assertion logic; verify endpoint |
168
+ | CSV not found | Relative path | Use absolute path or `${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}` |
169
+ | Correlation fails | Extractor order or regex | Ensure extractor runs before dependent sampler; verify regex |
170
+ | JMX invalid XML | Malformed elements | Validate XML; ensure proper closing tags; check JMeter version compatibility |
171
+ | Slow HTML report | Large JTL file | Use Aggregate Report listener; reduce sample logging; filter by label |