agentic-qe 3.7.8 → 3.7.10

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 (569) hide show
  1. package/.claude/skills/.validation/README.md +111 -111
  2. package/.claude/skills/.validation/examples/chaos-engineering-output.example.json +530 -530
  3. package/.claude/skills/.validation/examples/performance-testing-output.example.json +252 -252
  4. package/.claude/skills/.validation/examples/security-testing-output.example.json +413 -413
  5. package/.claude/skills/.validation/examples/testability-scoring-output.example.json +350 -350
  6. package/.claude/skills/.validation/schemas/skill-eval.schema.json +462 -462
  7. package/.claude/skills/.validation/schemas/skill-frontmatter.schema.json +341 -341
  8. package/.claude/skills/.validation/schemas/skill-output-meta.schema.json +199 -199
  9. package/.claude/skills/.validation/schemas/skill-output.template.json +610 -610
  10. package/.claude/skills/.validation/skill-validation-mcp-integration.md +250 -250
  11. package/.claude/skills/.validation/templates/eval.template.yaml +366 -366
  12. package/.claude/skills/.validation/templates/schemas/output.json +145 -145
  13. package/.claude/skills/.validation/templates/security-testing-eval.template.yaml +725 -725
  14. package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +225 -225
  15. package/.claude/skills/.validation/test-data/invalid-output.json +5 -5
  16. package/.claude/skills/.validation/test-data/minimal-output.json +9 -9
  17. package/.claude/skills/.validation/test-data/sample-output.json +73 -73
  18. package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +376 -376
  19. package/.claude/skills/a11y-ally/schemas/output.json +549 -549
  20. package/.claude/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -719
  21. package/.claude/skills/accessibility-testing/schemas/output.json +776 -776
  22. package/.claude/skills/accessibility-testing/test-data/sample-output.json +191 -191
  23. package/.claude/skills/agentic-quality-engineering/schemas/output.json +577 -577
  24. package/.claude/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -696
  25. package/.claude/skills/api-testing-patterns/schemas/output.json +845 -845
  26. package/.claude/skills/aqe-v2-v3-migration/schemas/output.json +513 -513
  27. package/.claude/skills/brutal-honesty-review/schemas/output.json +291 -291
  28. package/.claude/skills/bug-reporting-excellence/schemas/output.json +288 -288
  29. package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -761
  30. package/.claude/skills/chaos-engineering-resilience/schemas/output.json +1205 -1205
  31. package/.claude/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -157
  32. package/.claude/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -542
  33. package/.claude/skills/code-review-quality/schemas/output.json +264 -264
  34. package/.claude/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -410
  35. package/.claude/skills/compatibility-testing/schemas/output.json +551 -551
  36. package/.claude/skills/compliance-testing/evals/compliance-testing.yaml +1107 -1107
  37. package/.claude/skills/compliance-testing/schemas/output.json +845 -845
  38. package/.claude/skills/consultancy-practices/schemas/output.json +282 -282
  39. package/.claude/skills/contract-testing/evals/contract-testing.yaml +748 -748
  40. package/.claude/skills/contract-testing/schemas/output.json +638 -638
  41. package/.claude/skills/database-testing/evals/database-testing.yaml +968 -968
  42. package/.claude/skills/database-testing/schemas/output.json +1446 -1446
  43. package/.claude/skills/debug-loop/SKILL.md +61 -61
  44. package/.claude/skills/enterprise-integration-testing/SKILL.md +735 -735
  45. package/.claude/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -0
  46. package/.claude/skills/enterprise-integration-testing/schemas/output.json +74 -0
  47. package/.claude/skills/enterprise-integration-testing/scripts/validate-config.json +25 -0
  48. package/.claude/skills/iterative-loop/SKILL.md +371 -371
  49. package/.claude/skills/localization-testing/evals/localization-testing.yaml +544 -544
  50. package/.claude/skills/localization-testing/schemas/output.json +325 -325
  51. package/.claude/skills/middleware-testing-patterns/SKILL.md +798 -798
  52. package/.claude/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -0
  53. package/.claude/skills/middleware-testing-patterns/schemas/output.json +58 -0
  54. package/.claude/skills/middleware-testing-patterns/scripts/validate-config.json +25 -0
  55. package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +537 -537
  56. package/.claude/skills/mobile-testing/schemas/output.json +318 -318
  57. package/.claude/skills/mutation-testing/evals/mutation-testing.yaml +652 -652
  58. package/.claude/skills/mutation-testing/schemas/output.json +707 -707
  59. package/.claude/skills/mutation-testing/test-data/sample-output.json +295 -295
  60. package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -450
  61. package/.claude/skills/n8n-expression-testing/schemas/output.json +369 -369
  62. package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -522
  63. package/.claude/skills/n8n-integration-testing-patterns/schemas/output.json +291 -291
  64. package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -493
  65. package/.claude/skills/n8n-security-testing/schemas/output.json +293 -293
  66. package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -500
  67. package/.claude/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -295
  68. package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -497
  69. package/.claude/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -254
  70. package/.claude/skills/observability-testing-patterns/SKILL.md +930 -930
  71. package/.claude/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -0
  72. package/.claude/skills/observability-testing-patterns/schemas/output.json +58 -0
  73. package/.claude/skills/observability-testing-patterns/scripts/validate-config.json +25 -0
  74. package/.claude/skills/pentest-validation/SKILL.md +268 -268
  75. package/.claude/skills/pentest-validation/evals/pentest-validation.yaml +708 -708
  76. package/.claude/skills/pentest-validation/schemas/output.json +281 -281
  77. package/.claude/skills/performance-analysis/evals/performance-analysis.yaml +144 -144
  78. package/.claude/skills/performance-analysis/schemas/output.json +588 -588
  79. package/.claude/skills/performance-testing/evals/performance-testing.yaml +772 -772
  80. package/.claude/skills/performance-testing/schemas/output.json +1184 -1184
  81. package/.claude/skills/pr-review/SKILL.md +61 -61
  82. package/.claude/skills/qcsd-cicd-swarm/SKILL.md +2206 -2206
  83. package/.claude/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -0
  84. package/.claude/skills/qcsd-cicd-swarm/schemas/output.json +86 -0
  85. package/.claude/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -0
  86. package/.claude/skills/qcsd-development-swarm/SKILL.md +2154 -2154
  87. package/.claude/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -0
  88. package/.claude/skills/qcsd-development-swarm/schemas/output.json +72 -0
  89. package/.claude/skills/qcsd-development-swarm/scripts/validate-config.json +25 -0
  90. package/.claude/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -138
  91. package/.claude/skills/qcsd-ideation-swarm/schemas/output.json +568 -568
  92. package/.claude/skills/qcsd-production-swarm/SKILL.md +2781 -2781
  93. package/.claude/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -246
  94. package/.claude/skills/qcsd-production-swarm/schemas/output.json +505 -505
  95. package/.claude/skills/qcsd-production-swarm/scripts/validate-config.json +25 -25
  96. package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -443
  97. package/.claude/skills/qe-chaos-resilience/schemas/output.json +314 -314
  98. package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -459
  99. package/.claude/skills/qe-code-intelligence/schemas/output.json +315 -315
  100. package/.claude/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -513
  101. package/.claude/skills/qe-contract-testing/schemas/output.json +295 -295
  102. package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -494
  103. package/.claude/skills/qe-coverage-analysis/schemas/output.json +286 -286
  104. package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -511
  105. package/.claude/skills/qe-defect-intelligence/schemas/output.json +283 -283
  106. package/.claude/skills/qe-iterative-loop/schemas/output.json +264 -264
  107. package/.claude/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -144
  108. package/.claude/skills/qe-learning-optimization/schemas/output.json +288 -288
  109. package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -506
  110. package/.claude/skills/qe-quality-assessment/schemas/output.json +550 -550
  111. package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -598
  112. package/.claude/skills/qe-requirements-validation/schemas/output.json +587 -587
  113. package/.claude/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -595
  114. package/.claude/skills/qe-security-compliance/schemas/output.json +498 -498
  115. package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -607
  116. package/.claude/skills/qe-test-execution/schemas/output.json +529 -529
  117. package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -148
  118. package/.claude/skills/qe-test-generation/schemas/output.json +439 -439
  119. package/.claude/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -142
  120. package/.claude/skills/qe-visual-accessibility/schemas/output.json +491 -491
  121. package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +494 -494
  122. package/.claude/skills/quality-metrics/schemas/output.json +403 -403
  123. package/.claude/skills/refactoring-patterns/schemas/output.json +475 -475
  124. package/.claude/skills/regression-testing/evals/regression-testing.yaml +504 -504
  125. package/.claude/skills/regression-testing/schemas/output.json +311 -311
  126. package/.claude/skills/release/SKILL.md +347 -347
  127. package/.claude/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -141
  128. package/.claude/skills/risk-based-testing/schemas/output.json +480 -480
  129. package/.claude/skills/security-testing/evals/security-testing.yaml +789 -789
  130. package/.claude/skills/security-testing/schemas/output.json +879 -879
  131. package/.claude/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -163
  132. package/.claude/skills/security-visual-testing/schemas/output.json +486 -486
  133. package/.claude/skills/sfdipot-product-factors/SKILL.md +239 -239
  134. package/.claude/skills/sherlock-review/schemas/output.json +297 -297
  135. package/.claude/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -145
  136. package/.claude/skills/shift-left-testing/schemas/output.json +459 -459
  137. package/.claude/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -147
  138. package/.claude/skills/shift-right-testing/schemas/output.json +418 -418
  139. package/.claude/skills/skills-manifest.json +1 -1
  140. package/.claude/skills/tdd-london-chicago/schemas/output.json +444 -444
  141. package/.claude/skills/technical-writing/schemas/output.json +268 -268
  142. package/.claude/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -148
  143. package/.claude/skills/test-automation-strategy/schemas/output.json +444 -444
  144. package/.claude/skills/test-data-management/evals/test-data-management.yaml +504 -504
  145. package/.claude/skills/test-data-management/schemas/output.json +284 -284
  146. package/.claude/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -142
  147. package/.claude/skills/test-design-techniques/schemas/output.json +295 -295
  148. package/.claude/skills/test-environment-management/schemas/output.json +310 -310
  149. package/.claude/skills/test-idea-rewriting/SKILL.md +229 -229
  150. package/.claude/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -155
  151. package/.claude/skills/test-reporting-analytics/schemas/output.json +329 -329
  152. package/.claude/skills/testability-scoring/evals/testability-scoring.yaml +814 -814
  153. package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -84
  154. package/.claude/skills/testability-scoring/schemas/output.json +606 -606
  155. package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -1007
  156. package/.claude/skills/trust-tier-manifest.json +78 -7
  157. package/.claude/skills/verification-quality/evals/verification-quality.yaml +150 -150
  158. package/.claude/skills/verification-quality/schemas/output.json +432 -432
  159. package/.claude/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -154
  160. package/.claude/skills/visual-testing-advanced/schemas/output.json +294 -294
  161. package/.claude/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -165
  162. package/.claude/skills/wms-testing-patterns/schemas/output.json +150 -150
  163. package/.claude/skills/wms-testing-patterns/scripts/validate-config.json +51 -51
  164. package/CHANGELOG.md +34 -0
  165. package/README.md +169 -900
  166. package/assets/agents/v3/helpers/quality-criteria/evidence-classification.md +116 -116
  167. package/assets/agents/v3/helpers/quality-criteria/htsm-categories.md +139 -139
  168. package/assets/governance/constitution.md +202 -202
  169. package/assets/governance/shards/chaos-resilience.shard.md +221 -221
  170. package/assets/governance/shards/code-intelligence.shard.md +178 -178
  171. package/assets/governance/shards/contract-testing.shard.md +206 -206
  172. package/assets/governance/shards/coverage-analysis.shard.md +146 -146
  173. package/assets/governance/shards/defect-intelligence.shard.md +182 -182
  174. package/assets/governance/shards/learning-optimization.shard.md +248 -248
  175. package/assets/governance/shards/quality-assessment.shard.md +165 -165
  176. package/assets/governance/shards/requirements-validation.shard.md +177 -177
  177. package/assets/governance/shards/security-compliance.shard.md +196 -196
  178. package/assets/governance/shards/test-execution.shard.md +156 -156
  179. package/assets/governance/shards/test-generation.shard.md +128 -128
  180. package/assets/governance/shards/visual-accessibility.shard.md +209 -209
  181. package/assets/hooks/cross-phase-memory.yaml +253 -253
  182. package/assets/patterns/adr-051-booster-patterns.json +78 -78
  183. package/assets/patterns/adr-051-embedding-patterns.json +147 -147
  184. package/assets/patterns/adr-051-integration-summary.json +62 -62
  185. package/assets/patterns/adr-051-reasoning-patterns.json +166 -166
  186. package/assets/patterns/adr-051-router-patterns.json +113 -113
  187. package/assets/patterns/index.json +136 -136
  188. package/assets/skills/.validation/README.md +111 -111
  189. package/assets/skills/.validation/examples/chaos-engineering-output.example.json +530 -530
  190. package/assets/skills/.validation/examples/performance-testing-output.example.json +252 -252
  191. package/assets/skills/.validation/examples/security-testing-output.example.json +413 -413
  192. package/assets/skills/.validation/examples/testability-scoring-output.example.json +350 -350
  193. package/assets/skills/.validation/schemas/skill-eval.schema.json +462 -462
  194. package/assets/skills/.validation/schemas/skill-frontmatter.schema.json +341 -341
  195. package/assets/skills/.validation/schemas/skill-output-meta.schema.json +199 -199
  196. package/assets/skills/.validation/schemas/skill-output.template.json +610 -610
  197. package/assets/skills/.validation/skill-validation-mcp-integration.md +250 -250
  198. package/assets/skills/.validation/templates/eval.template.yaml +366 -366
  199. package/assets/skills/.validation/templates/schemas/output.json +145 -145
  200. package/assets/skills/.validation/templates/security-testing-eval.template.yaml +725 -725
  201. package/assets/skills/.validation/templates/skill-frontmatter.example.yaml +225 -225
  202. package/assets/skills/.validation/test-data/invalid-output.json +5 -5
  203. package/assets/skills/.validation/test-data/minimal-output.json +9 -9
  204. package/assets/skills/.validation/test-data/sample-output.json +73 -73
  205. package/assets/skills/a11y-ally/SKILL.md +1664 -1658
  206. package/assets/skills/a11y-ally/evals/a11y-ally.yaml +376 -0
  207. package/assets/skills/a11y-ally/schemas/output.json +549 -0
  208. package/assets/skills/a11y-ally/scripts/validate-config.json +42 -0
  209. package/assets/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -719
  210. package/assets/skills/accessibility-testing/schemas/output.json +776 -776
  211. package/assets/skills/accessibility-testing/test-data/sample-output.json +191 -191
  212. package/assets/skills/agentic-quality-engineering/schemas/output.json +577 -577
  213. package/assets/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -696
  214. package/assets/skills/api-testing-patterns/schemas/output.json +845 -845
  215. package/assets/skills/aqe-v2-v3-migration/schemas/output.json +513 -513
  216. package/assets/skills/brutal-honesty-review/SKILL.md +5 -0
  217. package/assets/skills/brutal-honesty-review/schemas/output.json +291 -0
  218. package/assets/skills/brutal-honesty-review/scripts/validate-config.json +34 -0
  219. package/assets/skills/bug-reporting-excellence/schemas/output.json +288 -288
  220. package/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -761
  221. package/assets/skills/chaos-engineering-resilience/schemas/output.json +1205 -1205
  222. package/assets/skills/cicd-pipeline-qe-orchestrator/README.md +1 -1
  223. package/assets/skills/cicd-pipeline-qe-orchestrator/SKILL.md +6 -0
  224. package/assets/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -0
  225. package/assets/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -0
  226. package/assets/skills/cicd-pipeline-qe-orchestrator/scripts/validate-config.json +42 -0
  227. package/assets/skills/code-review-quality/schemas/output.json +264 -264
  228. package/assets/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -410
  229. package/assets/skills/compatibility-testing/schemas/output.json +551 -551
  230. package/assets/skills/compliance-testing/evals/compliance-testing.yaml +1107 -1107
  231. package/assets/skills/compliance-testing/schemas/output.json +845 -845
  232. package/assets/skills/consultancy-practices/schemas/output.json +282 -282
  233. package/assets/skills/contract-testing/evals/contract-testing.yaml +748 -748
  234. package/assets/skills/contract-testing/schemas/output.json +638 -638
  235. package/assets/skills/database-testing/evals/database-testing.yaml +968 -968
  236. package/assets/skills/database-testing/schemas/output.json +1446 -1446
  237. package/assets/skills/debug-loop/SKILL.md +61 -61
  238. package/assets/skills/enterprise-integration-testing/SKILL.md +735 -735
  239. package/assets/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -0
  240. package/assets/skills/enterprise-integration-testing/schemas/output.json +74 -0
  241. package/assets/skills/enterprise-integration-testing/scripts/validate-config.json +25 -0
  242. package/assets/skills/localization-testing/evals/localization-testing.yaml +544 -544
  243. package/assets/skills/localization-testing/schemas/output.json +325 -325
  244. package/assets/skills/middleware-testing-patterns/SKILL.md +798 -798
  245. package/assets/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -0
  246. package/assets/skills/middleware-testing-patterns/schemas/output.json +58 -0
  247. package/assets/skills/middleware-testing-patterns/scripts/validate-config.json +25 -0
  248. package/assets/skills/mobile-testing/evals/mobile-testing.yaml +537 -537
  249. package/assets/skills/mobile-testing/schemas/output.json +318 -318
  250. package/assets/skills/mutation-testing/evals/mutation-testing.yaml +652 -652
  251. package/assets/skills/mutation-testing/schemas/output.json +707 -707
  252. package/assets/skills/mutation-testing/test-data/sample-output.json +295 -295
  253. package/assets/skills/n8n-expression-testing/SKILL.md +6 -0
  254. package/assets/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -0
  255. package/assets/skills/n8n-expression-testing/schemas/output.json +369 -0
  256. package/assets/skills/n8n-expression-testing/scripts/validate-config.json +39 -0
  257. package/assets/skills/n8n-integration-testing-patterns/SKILL.md +6 -0
  258. package/assets/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -0
  259. package/assets/skills/n8n-integration-testing-patterns/schemas/output.json +291 -0
  260. package/assets/skills/n8n-integration-testing-patterns/scripts/validate-config.json +34 -0
  261. package/assets/skills/n8n-security-testing/SKILL.md +6 -0
  262. package/assets/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -0
  263. package/assets/skills/n8n-security-testing/schemas/output.json +293 -0
  264. package/assets/skills/n8n-security-testing/scripts/validate-config.json +34 -0
  265. package/assets/skills/n8n-trigger-testing-strategies/SKILL.md +6 -0
  266. package/assets/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -0
  267. package/assets/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -0
  268. package/assets/skills/n8n-trigger-testing-strategies/scripts/validate-config.json +34 -0
  269. package/assets/skills/n8n-workflow-testing-fundamentals/SKILL.md +6 -0
  270. package/assets/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -0
  271. package/assets/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -0
  272. package/assets/skills/n8n-workflow-testing-fundamentals/scripts/validate-config.json +35 -0
  273. package/assets/skills/observability-testing-patterns/SKILL.md +930 -930
  274. package/assets/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -0
  275. package/assets/skills/observability-testing-patterns/schemas/output.json +58 -0
  276. package/assets/skills/observability-testing-patterns/scripts/validate-config.json +25 -0
  277. package/assets/skills/pentest-validation/SKILL.md +268 -268
  278. package/assets/skills/pentest-validation/evals/pentest-validation.yaml +708 -708
  279. package/assets/skills/pentest-validation/schemas/output.json +281 -281
  280. package/assets/skills/pentest-validation/scripts/validate-config.json +12 -0
  281. package/assets/skills/performance-testing/evals/performance-testing.yaml +772 -772
  282. package/assets/skills/performance-testing/schemas/output.json +1184 -1184
  283. package/assets/skills/pr-review/SKILL.md +61 -61
  284. package/assets/skills/qcsd-cicd-swarm/SKILL.md +2206 -2206
  285. package/assets/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -0
  286. package/assets/skills/qcsd-cicd-swarm/schemas/output.json +86 -0
  287. package/assets/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -0
  288. package/assets/skills/qcsd-development-swarm/SKILL.md +2154 -2154
  289. package/assets/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -0
  290. package/assets/skills/qcsd-development-swarm/schemas/output.json +72 -0
  291. package/assets/skills/qcsd-development-swarm/scripts/validate-config.json +25 -0
  292. package/assets/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -0
  293. package/assets/skills/qcsd-ideation-swarm/schemas/output.json +568 -0
  294. package/assets/skills/qcsd-ideation-swarm/scripts/validate-config.json +25 -0
  295. package/assets/skills/qcsd-production-swarm/SKILL.md +2781 -0
  296. package/assets/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -0
  297. package/assets/skills/qcsd-production-swarm/schemas/output.json +505 -0
  298. package/assets/skills/qcsd-production-swarm/scripts/validate-config.json +25 -0
  299. package/assets/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +139 -0
  300. package/assets/skills/qcsd-refinement-swarm/schemas/output.json +811 -0
  301. package/assets/skills/qcsd-refinement-swarm/scripts/validate-config.json +25 -0
  302. package/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -443
  303. package/assets/skills/qe-chaos-resilience/schemas/output.json +314 -314
  304. package/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -459
  305. package/assets/skills/qe-code-intelligence/schemas/output.json +315 -315
  306. package/assets/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -513
  307. package/assets/skills/qe-contract-testing/schemas/output.json +295 -295
  308. package/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -494
  309. package/assets/skills/qe-coverage-analysis/schemas/output.json +286 -286
  310. package/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -511
  311. package/assets/skills/qe-defect-intelligence/schemas/output.json +283 -283
  312. package/assets/skills/qe-iterative-loop/schemas/output.json +264 -264
  313. package/assets/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -144
  314. package/assets/skills/qe-learning-optimization/schemas/output.json +288 -288
  315. package/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -506
  316. package/assets/skills/qe-quality-assessment/schemas/output.json +550 -550
  317. package/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -598
  318. package/assets/skills/qe-requirements-validation/schemas/output.json +587 -587
  319. package/assets/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -595
  320. package/assets/skills/qe-security-compliance/schemas/output.json +498 -498
  321. package/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -607
  322. package/assets/skills/qe-test-execution/schemas/output.json +529 -529
  323. package/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -148
  324. package/assets/skills/qe-test-generation/schemas/output.json +439 -439
  325. package/assets/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -142
  326. package/assets/skills/qe-visual-accessibility/schemas/output.json +491 -491
  327. package/assets/skills/quality-metrics/evals/quality-metrics.yaml +494 -494
  328. package/assets/skills/quality-metrics/schemas/output.json +403 -403
  329. package/assets/skills/refactoring-patterns/schemas/output.json +475 -475
  330. package/assets/skills/regression-testing/evals/regression-testing.yaml +504 -504
  331. package/assets/skills/regression-testing/schemas/output.json +311 -311
  332. package/assets/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -141
  333. package/assets/skills/risk-based-testing/schemas/output.json +480 -480
  334. package/assets/skills/security-testing/evals/security-testing.yaml +789 -789
  335. package/assets/skills/security-testing/schemas/output.json +879 -879
  336. package/assets/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -163
  337. package/assets/skills/security-visual-testing/schemas/output.json +486 -486
  338. package/assets/skills/security-visual-testing/scripts/validate-config.json +45 -0
  339. package/assets/skills/sfdipot-product-factors/SKILL.md +239 -239
  340. package/assets/skills/sherlock-review/SKILL.md +5 -0
  341. package/assets/skills/sherlock-review/schemas/output.json +297 -0
  342. package/assets/skills/sherlock-review/scripts/validate-config.json +35 -0
  343. package/assets/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -145
  344. package/assets/skills/shift-left-testing/schemas/output.json +459 -459
  345. package/assets/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -147
  346. package/assets/skills/shift-right-testing/schemas/output.json +418 -418
  347. package/assets/skills/tdd-london-chicago/schemas/output.json +444 -444
  348. package/assets/skills/technical-writing/schemas/output.json +268 -268
  349. package/assets/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -148
  350. package/assets/skills/test-automation-strategy/schemas/output.json +444 -444
  351. package/assets/skills/test-data-management/evals/test-data-management.yaml +504 -504
  352. package/assets/skills/test-data-management/schemas/output.json +284 -284
  353. package/assets/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -142
  354. package/assets/skills/test-design-techniques/schemas/output.json +295 -295
  355. package/assets/skills/test-environment-management/schemas/output.json +310 -310
  356. package/assets/skills/test-idea-rewriting/SKILL.md +229 -229
  357. package/assets/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -155
  358. package/assets/skills/test-reporting-analytics/schemas/output.json +329 -329
  359. package/assets/skills/testability-scoring/SKILL.md +5 -0
  360. package/assets/skills/testability-scoring/evals/testability-scoring.yaml +814 -0
  361. package/assets/skills/testability-scoring/resources/templates/config.template.js +84 -84
  362. package/assets/skills/testability-scoring/schemas/output.json +606 -0
  363. package/assets/skills/testability-scoring/scripts/generate-html-report.js +1007 -1007
  364. package/assets/skills/testability-scoring/scripts/validate-config.json +42 -0
  365. package/assets/skills/trust-tier-manifest.json +2404 -0
  366. package/assets/skills/verification-quality/evals/verification-quality.yaml +150 -150
  367. package/assets/skills/verification-quality/schemas/output.json +432 -432
  368. package/assets/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -154
  369. package/assets/skills/visual-testing-advanced/schemas/output.json +294 -294
  370. package/assets/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -0
  371. package/assets/skills/wms-testing-patterns/schemas/output.json +150 -0
  372. package/assets/skills/wms-testing-patterns/scripts/validate-config.json +51 -0
  373. package/assets/templates/validation-summary.json +56 -56
  374. package/dist/benchmarks/performance-benchmarks.js +1 -1
  375. package/dist/cli/bundle.js +9158 -2288
  376. package/dist/cli/commands/hooks.d.ts.map +1 -1
  377. package/dist/cli/commands/hooks.js +92 -0
  378. package/dist/cli/commands/hooks.js.map +1 -1
  379. package/dist/cli/commands/mcp.d.ts.map +1 -1
  380. package/dist/cli/commands/mcp.js +11 -9
  381. package/dist/cli/commands/mcp.js.map +1 -1
  382. package/dist/cli/commands/migrate.js +2 -2
  383. package/dist/coordination/constants.d.ts +1 -1
  384. package/dist/coordination/constants.js +1 -1
  385. package/dist/coordination/handlers/coverage-handlers.js +1 -1
  386. package/dist/coordination/handlers/coverage-handlers.js.map +1 -1
  387. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +1 -1
  388. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts.map +1 -1
  389. package/dist/domains/code-intelligence/services/semantic-analyzer.js +1 -1
  390. package/dist/domains/code-intelligence/services/semantic-analyzer.js.map +1 -1
  391. package/dist/domains/coverage-analysis/coordinator.js +1 -1
  392. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +1 -1
  393. package/dist/domains/coverage-analysis/services/coverage-embedder.d.ts +1 -1
  394. package/dist/domains/coverage-analysis/services/coverage-embedder.js +1 -1
  395. package/dist/domains/coverage-analysis/services/gap-detector.js +1 -1
  396. package/dist/domains/coverage-analysis/services/ghost-coverage-analyzer.js +1 -1
  397. package/dist/domains/coverage-analysis/services/hnsw-index.d.ts +2 -2
  398. package/dist/domains/coverage-analysis/services/hnsw-index.js +3 -3
  399. package/dist/domains/coverage-analysis/services/sublinear-analyzer.d.ts +1 -1
  400. package/dist/domains/coverage-analysis/services/sublinear-analyzer.js +1 -1
  401. package/dist/domains/test-execution/services/test-prioritizer.js +1 -1
  402. package/dist/domains/test-generation/context/rust-context-builder.d.ts +31 -0
  403. package/dist/domains/test-generation/context/rust-context-builder.d.ts.map +1 -0
  404. package/dist/domains/test-generation/context/rust-context-builder.js +27 -0
  405. package/dist/domains/test-generation/context/rust-context-builder.js.map +1 -0
  406. package/dist/domains/test-generation/coordinator.js +3 -3
  407. package/dist/domains/test-generation/coordinator.js.map +1 -1
  408. package/dist/domains/test-generation/detectors/mobile-detector.d.ts +41 -0
  409. package/dist/domains/test-generation/detectors/mobile-detector.d.ts.map +1 -0
  410. package/dist/domains/test-generation/detectors/mobile-detector.js +111 -0
  411. package/dist/domains/test-generation/detectors/mobile-detector.js.map +1 -0
  412. package/dist/domains/test-generation/detectors/spring-detector.d.ts +22 -0
  413. package/dist/domains/test-generation/detectors/spring-detector.d.ts.map +1 -0
  414. package/dist/domains/test-generation/detectors/spring-detector.js +37 -0
  415. package/dist/domains/test-generation/detectors/spring-detector.js.map +1 -0
  416. package/dist/domains/test-generation/factories/test-generator-factory.d.ts +2 -1
  417. package/dist/domains/test-generation/factories/test-generator-factory.d.ts.map +1 -1
  418. package/dist/domains/test-generation/factories/test-generator-factory.js +33 -13
  419. package/dist/domains/test-generation/factories/test-generator-factory.js.map +1 -1
  420. package/dist/domains/test-generation/generators/flutter-test-generator.d.ts +107 -0
  421. package/dist/domains/test-generation/generators/flutter-test-generator.d.ts.map +1 -0
  422. package/dist/domains/test-generation/generators/flutter-test-generator.js +590 -0
  423. package/dist/domains/test-generation/generators/flutter-test-generator.js.map +1 -0
  424. package/dist/domains/test-generation/generators/go-test-generator.d.ts +139 -0
  425. package/dist/domains/test-generation/generators/go-test-generator.d.ts.map +1 -0
  426. package/dist/domains/test-generation/generators/go-test-generator.js +654 -0
  427. package/dist/domains/test-generation/generators/go-test-generator.js.map +1 -0
  428. package/dist/domains/test-generation/generators/index.d.ts +8 -0
  429. package/dist/domains/test-generation/generators/index.d.ts.map +1 -1
  430. package/dist/domains/test-generation/generators/index.js +8 -0
  431. package/dist/domains/test-generation/generators/index.js.map +1 -1
  432. package/dist/domains/test-generation/generators/jest-rn-generator.d.ts +95 -0
  433. package/dist/domains/test-generation/generators/jest-rn-generator.d.ts.map +1 -0
  434. package/dist/domains/test-generation/generators/jest-rn-generator.js +591 -0
  435. package/dist/domains/test-generation/generators/jest-rn-generator.js.map +1 -0
  436. package/dist/domains/test-generation/generators/junit5-generator.d.ts +107 -0
  437. package/dist/domains/test-generation/generators/junit5-generator.d.ts.map +1 -0
  438. package/dist/domains/test-generation/generators/junit5-generator.js +588 -0
  439. package/dist/domains/test-generation/generators/junit5-generator.js.map +1 -0
  440. package/dist/domains/test-generation/generators/kotlin-junit-generator.d.ts +109 -0
  441. package/dist/domains/test-generation/generators/kotlin-junit-generator.d.ts.map +1 -0
  442. package/dist/domains/test-generation/generators/kotlin-junit-generator.js +588 -0
  443. package/dist/domains/test-generation/generators/kotlin-junit-generator.js.map +1 -0
  444. package/dist/domains/test-generation/generators/pytest-generator.d.ts +8 -1
  445. package/dist/domains/test-generation/generators/pytest-generator.d.ts.map +1 -1
  446. package/dist/domains/test-generation/generators/pytest-generator.js +57 -0
  447. package/dist/domains/test-generation/generators/pytest-generator.js.map +1 -1
  448. package/dist/domains/test-generation/generators/rust-test-generator.d.ts +80 -0
  449. package/dist/domains/test-generation/generators/rust-test-generator.d.ts.map +1 -0
  450. package/dist/domains/test-generation/generators/rust-test-generator.js +442 -0
  451. package/dist/domains/test-generation/generators/rust-test-generator.js.map +1 -0
  452. package/dist/domains/test-generation/generators/swift-testing-generator.d.ts +97 -0
  453. package/dist/domains/test-generation/generators/swift-testing-generator.d.ts.map +1 -0
  454. package/dist/domains/test-generation/generators/swift-testing-generator.js +482 -0
  455. package/dist/domains/test-generation/generators/swift-testing-generator.js.map +1 -0
  456. package/dist/domains/test-generation/generators/xunit-generator.d.ts +110 -0
  457. package/dist/domains/test-generation/generators/xunit-generator.d.ts.map +1 -0
  458. package/dist/domains/test-generation/generators/xunit-generator.js +611 -0
  459. package/dist/domains/test-generation/generators/xunit-generator.js.map +1 -0
  460. package/dist/domains/test-generation/interfaces.d.ts +11 -2
  461. package/dist/domains/test-generation/interfaces.d.ts.map +1 -1
  462. package/dist/domains/test-generation/prompts/language-prompts.d.ts +29 -0
  463. package/dist/domains/test-generation/prompts/language-prompts.d.ts.map +1 -0
  464. package/dist/domains/test-generation/prompts/language-prompts.js +135 -0
  465. package/dist/domains/test-generation/prompts/language-prompts.js.map +1 -0
  466. package/dist/domains/test-generation/services/compilation-validator.d.ts +43 -0
  467. package/dist/domains/test-generation/services/compilation-validator.d.ts.map +1 -0
  468. package/dist/domains/test-generation/services/compilation-validator.js +134 -0
  469. package/dist/domains/test-generation/services/compilation-validator.js.map +1 -0
  470. package/dist/domains/test-generation/services/index.d.ts +2 -1
  471. package/dist/domains/test-generation/services/index.d.ts.map +1 -1
  472. package/dist/domains/test-generation/services/index.js +3 -1
  473. package/dist/domains/test-generation/services/index.js.map +1 -1
  474. package/dist/domains/test-generation/services/test-file-resolver.d.ts +32 -0
  475. package/dist/domains/test-generation/services/test-file-resolver.d.ts.map +1 -0
  476. package/dist/domains/test-generation/services/test-file-resolver.js +159 -0
  477. package/dist/domains/test-generation/services/test-file-resolver.js.map +1 -0
  478. package/dist/domains/test-generation/services/test-generator.d.ts +10 -0
  479. package/dist/domains/test-generation/services/test-generator.d.ts.map +1 -1
  480. package/dist/domains/test-generation/services/test-generator.js +87 -10
  481. package/dist/domains/test-generation/services/test-generator.js.map +1 -1
  482. package/dist/governance/feature-flags.js +2 -2
  483. package/dist/governance/feature-flags.js.map +1 -1
  484. package/dist/governance/shard-embeddings.js +1 -1
  485. package/dist/init/init-wizard-hooks.d.ts.map +1 -1
  486. package/dist/init/init-wizard-hooks.js +0 -1
  487. package/dist/init/init-wizard-hooks.js.map +1 -1
  488. package/dist/init/phases/07-hooks.d.ts.map +1 -1
  489. package/dist/init/phases/07-hooks.js +0 -2
  490. package/dist/init/phases/07-hooks.js.map +1 -1
  491. package/dist/init/phases/08-mcp.d.ts +8 -4
  492. package/dist/init/phases/08-mcp.d.ts.map +1 -1
  493. package/dist/init/phases/08-mcp.js +13 -31
  494. package/dist/init/phases/08-mcp.js.map +1 -1
  495. package/dist/init/phases/10-workers.js +4 -4
  496. package/dist/init/phases/10-workers.js.map +1 -1
  497. package/dist/init/settings-merge.d.ts.map +1 -1
  498. package/dist/init/settings-merge.js +0 -2
  499. package/dist/init/settings-merge.js.map +1 -1
  500. package/dist/init/token-bootstrap.js +1 -1
  501. package/dist/init/token-bootstrap.js.map +1 -1
  502. package/dist/integrations/rl-suite/algorithms/decision-transformer.js +1 -1
  503. package/dist/kernel/constants.d.ts +2 -2
  504. package/dist/kernel/constants.js +2 -2
  505. package/dist/kernel/hnsw-adapter.js +1 -1
  506. package/dist/kernel/progressive-hnsw-backend.d.ts +2 -2
  507. package/dist/kernel/progressive-hnsw-backend.js +2 -2
  508. package/dist/learning/dream/concept-graph.d.ts +1 -1
  509. package/dist/learning/dream/concept-graph.js +1 -1
  510. package/dist/learning/dream/dream-engine.d.ts +1 -1
  511. package/dist/learning/dream/dream-engine.js +1 -1
  512. package/dist/learning/dream/index.d.ts +1 -1
  513. package/dist/learning/dream/index.js +1 -1
  514. package/dist/learning/dream/types.d.ts +1 -1
  515. package/dist/learning/dream/types.d.ts.map +1 -1
  516. package/dist/learning/dream/types.js +1 -1
  517. package/dist/learning/dream/types.js.map +1 -1
  518. package/dist/learning/token-tracker.js +1 -1
  519. package/dist/learning/token-tracker.js.map +1 -1
  520. package/dist/mcp/bundle.js +7538 -893
  521. package/dist/routing/qe-agent-registry.js +4 -4
  522. package/dist/routing/qe-agent-registry.js.map +1 -1
  523. package/dist/routing/types.d.ts +5 -8
  524. package/dist/routing/types.d.ts.map +1 -1
  525. package/dist/routing/types.js.map +1 -1
  526. package/dist/shared/embeddings/embedding-cache.js +2 -2
  527. package/dist/shared/embeddings/index.d.ts +2 -2
  528. package/dist/shared/embeddings/index.js +2 -2
  529. package/dist/shared/embeddings/nomic-embedder.d.ts +4 -4
  530. package/dist/shared/embeddings/nomic-embedder.js +2 -2
  531. package/dist/shared/embeddings/ollama-client.d.ts +1 -1
  532. package/dist/shared/embeddings/ollama-client.js +2 -2
  533. package/dist/shared/embeddings/ollama-client.js.map +1 -1
  534. package/dist/shared/embeddings/types.d.ts +2 -2
  535. package/dist/shared/embeddings/types.js +2 -2
  536. package/dist/shared/language-detector.d.ts +46 -0
  537. package/dist/shared/language-detector.d.ts.map +1 -0
  538. package/dist/shared/language-detector.js +183 -0
  539. package/dist/shared/language-detector.js.map +1 -0
  540. package/dist/shared/llm/providers/ollama.js +1 -1
  541. package/dist/shared/metrics/code-metrics.d.ts.map +1 -1
  542. package/dist/shared/metrics/code-metrics.js +24 -1
  543. package/dist/shared/metrics/code-metrics.js.map +1 -1
  544. package/dist/shared/parsers/index.d.ts +2 -0
  545. package/dist/shared/parsers/index.d.ts.map +1 -1
  546. package/dist/shared/parsers/index.js +2 -0
  547. package/dist/shared/parsers/index.js.map +1 -1
  548. package/dist/shared/parsers/interfaces.d.ts +81 -0
  549. package/dist/shared/parsers/interfaces.d.ts.map +1 -0
  550. package/dist/shared/parsers/interfaces.js +6 -0
  551. package/dist/shared/parsers/interfaces.js.map +1 -0
  552. package/dist/shared/parsers/multi-language-parser.d.ts +144 -0
  553. package/dist/shared/parsers/multi-language-parser.d.ts.map +1 -0
  554. package/dist/shared/parsers/multi-language-parser.js +1271 -0
  555. package/dist/shared/parsers/multi-language-parser.js.map +1 -0
  556. package/dist/shared/parsers/rust-ownership-analyzer.d.ts +45 -0
  557. package/dist/shared/parsers/rust-ownership-analyzer.d.ts.map +1 -0
  558. package/dist/shared/parsers/rust-ownership-analyzer.js +52 -0
  559. package/dist/shared/parsers/rust-ownership-analyzer.js.map +1 -0
  560. package/dist/shared/parsers/typescript-parser.d.ts +16 -0
  561. package/dist/shared/parsers/typescript-parser.d.ts.map +1 -1
  562. package/dist/shared/parsers/typescript-parser.js +85 -0
  563. package/dist/shared/parsers/typescript-parser.js.map +1 -1
  564. package/dist/shared/types/test-frameworks.d.ts +25 -0
  565. package/dist/shared/types/test-frameworks.d.ts.map +1 -0
  566. package/dist/shared/types/test-frameworks.js +111 -0
  567. package/dist/shared/types/test-frameworks.js.map +1 -0
  568. package/package.json +1 -1
  569. package/scripts/prepare-assets.sh +16 -2
@@ -1,845 +1,845 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://agentic-qe.dev/schemas/skills/api-testing-patterns/output.json",
4
- "title": "API Testing Patterns Skill Output Schema",
5
- "description": "Schema for API testing patterns skill output. Extends the base skill-output template with API-specific structures for contract, integration, component, and load testing.",
6
- "allOf": [
7
- {
8
- "$comment": "Base schema structure from skill-output.template.json",
9
- "type": "object",
10
- "required": ["skillName", "version", "timestamp", "status", "trustTier", "output"],
11
- "properties": {
12
- "skillName": {
13
- "type": "string",
14
- "const": "api-testing-patterns"
15
- },
16
- "version": {
17
- "type": "string",
18
- "pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9]+)?$"
19
- },
20
- "timestamp": {
21
- "type": "string",
22
- "format": "date-time"
23
- },
24
- "status": {
25
- "type": "string",
26
- "enum": ["success", "partial", "failed", "skipped"]
27
- },
28
- "trustTier": {
29
- "type": "integer",
30
- "minimum": 0,
31
- "maximum": 3
32
- }
33
- }
34
- }
35
- ],
36
- "properties": {
37
- "output": {
38
- "type": "object",
39
- "required": ["summary", "testingLevel", "endpointCoverage"],
40
- "properties": {
41
- "summary": {
42
- "type": "string",
43
- "minLength": 10,
44
- "maxLength": 2000,
45
- "description": "Human-readable summary of API testing analysis"
46
- },
47
- "testingLevel": {
48
- "type": "string",
49
- "enum": ["contract", "component", "integration", "e2e", "load", "mixed"],
50
- "description": "Primary API testing level recommended"
51
- },
52
- "apiType": {
53
- "type": "string",
54
- "enum": ["rest", "graphql", "grpc", "websocket", "mixed"],
55
- "description": "Type of API being tested"
56
- },
57
- "endpointCoverage": {
58
- "$ref": "#/$defs/endpointCoverage",
59
- "description": "Coverage analysis for API endpoints"
60
- },
61
- "testRecommendations": {
62
- "type": "array",
63
- "items": {
64
- "$ref": "#/$defs/testRecommendation"
65
- },
66
- "maxItems": 50,
67
- "description": "Recommended API tests to implement"
68
- },
69
- "contractTests": {
70
- "$ref": "#/$defs/contractTestSuite",
71
- "description": "Contract testing specifications"
72
- },
73
- "integrationTests": {
74
- "$ref": "#/$defs/integrationTestSuite",
75
- "description": "Integration testing specifications"
76
- },
77
- "componentTests": {
78
- "$ref": "#/$defs/componentTestSuite",
79
- "description": "Component testing specifications"
80
- },
81
- "loadTests": {
82
- "$ref": "#/$defs/loadTestSuite",
83
- "description": "Load/performance testing specifications"
84
- },
85
- "securityTests": {
86
- "$ref": "#/$defs/securityTestSuite",
87
- "description": "API security testing specifications"
88
- },
89
- "mockConfigurations": {
90
- "type": "array",
91
- "items": {
92
- "$ref": "#/$defs/mockConfiguration"
93
- },
94
- "maxItems": 100,
95
- "description": "Mock/stub configurations for testing"
96
- },
97
- "findings": {
98
- "type": "array",
99
- "items": {
100
- "$ref": "#/$defs/apiFinding"
101
- },
102
- "maxItems": 200,
103
- "description": "API testing gaps and issues found"
104
- },
105
- "recommendations": {
106
- "type": "array",
107
- "items": {
108
- "$ref": "#/$defs/recommendation"
109
- },
110
- "maxItems": 50,
111
- "description": "Actionable recommendations for API testing improvement"
112
- },
113
- "metrics": {
114
- "$ref": "#/$defs/apiMetrics",
115
- "description": "Quantitative API testing metrics"
116
- },
117
- "categories": {
118
- "type": "object",
119
- "additionalProperties": {
120
- "$ref": "#/$defs/categoryScore"
121
- },
122
- "description": "Scores by API testing category"
123
- }
124
- }
125
- },
126
- "metadata": {
127
- "type": "object",
128
- "properties": {
129
- "executionTimeMs": {
130
- "type": "integer",
131
- "minimum": 0
132
- },
133
- "toolsUsed": {
134
- "type": "array",
135
- "items": { "type": "string" }
136
- },
137
- "agentId": {
138
- "type": "string",
139
- "pattern": "^qe-[a-z][a-z0-9-]*$"
140
- },
141
- "apiSpecPath": {
142
- "type": "string",
143
- "description": "Path to OpenAPI/GraphQL spec analyzed"
144
- },
145
- "consumers": {
146
- "type": "array",
147
- "items": { "type": "string" },
148
- "description": "Consumer services for contract testing"
149
- },
150
- "providers": {
151
- "type": "array",
152
- "items": { "type": "string" },
153
- "description": "Provider services for contract testing"
154
- }
155
- }
156
- },
157
- "validation": {
158
- "type": "object",
159
- "properties": {
160
- "schemaValid": { "type": "boolean" },
161
- "contentValid": { "type": "boolean" },
162
- "confidence": {
163
- "type": "number",
164
- "minimum": 0,
165
- "maximum": 1
166
- }
167
- }
168
- },
169
- "learning": {
170
- "type": "object",
171
- "properties": {
172
- "patternsDetected": {
173
- "type": "array",
174
- "items": { "type": "string" }
175
- },
176
- "reward": {
177
- "type": "number",
178
- "minimum": 0,
179
- "maximum": 1
180
- }
181
- }
182
- }
183
- },
184
- "$defs": {
185
- "endpointCoverage": {
186
- "type": "object",
187
- "description": "API endpoint coverage analysis",
188
- "required": ["totalEndpoints", "coveredEndpoints"],
189
- "properties": {
190
- "totalEndpoints": {
191
- "type": "integer",
192
- "minimum": 0,
193
- "description": "Total number of API endpoints"
194
- },
195
- "coveredEndpoints": {
196
- "type": "integer",
197
- "minimum": 0,
198
- "description": "Number of endpoints with test coverage"
199
- },
200
- "coveragePercentage": {
201
- "type": "number",
202
- "minimum": 0,
203
- "maximum": 100,
204
- "description": "Percentage of endpoints with coverage"
205
- },
206
- "byHttpMethod": {
207
- "$ref": "#/$defs/httpMethodCoverage"
208
- },
209
- "byStatusCode": {
210
- "$ref": "#/$defs/statusCodeCoverage"
211
- },
212
- "uncoveredEndpoints": {
213
- "type": "array",
214
- "items": {
215
- "$ref": "#/$defs/endpoint"
216
- },
217
- "description": "List of endpoints without coverage"
218
- },
219
- "partiallyCoveredEndpoints": {
220
- "type": "array",
221
- "items": {
222
- "$ref": "#/$defs/endpoint"
223
- },
224
- "description": "Endpoints with incomplete coverage"
225
- }
226
- }
227
- },
228
- "httpMethodCoverage": {
229
- "type": "object",
230
- "description": "Coverage breakdown by HTTP method",
231
- "properties": {
232
- "GET": { "$ref": "#/$defs/methodCoverageDetail" },
233
- "POST": { "$ref": "#/$defs/methodCoverageDetail" },
234
- "PUT": { "$ref": "#/$defs/methodCoverageDetail" },
235
- "PATCH": { "$ref": "#/$defs/methodCoverageDetail" },
236
- "DELETE": { "$ref": "#/$defs/methodCoverageDetail" },
237
- "OPTIONS": { "$ref": "#/$defs/methodCoverageDetail" },
238
- "HEAD": { "$ref": "#/$defs/methodCoverageDetail" }
239
- }
240
- },
241
- "methodCoverageDetail": {
242
- "type": "object",
243
- "properties": {
244
- "total": { "type": "integer", "minimum": 0 },
245
- "covered": { "type": "integer", "minimum": 0 },
246
- "percentage": { "type": "number", "minimum": 0, "maximum": 100 }
247
- }
248
- },
249
- "statusCodeCoverage": {
250
- "type": "object",
251
- "description": "Coverage breakdown by HTTP status code category",
252
- "properties": {
253
- "2xx": { "$ref": "#/$defs/methodCoverageDetail" },
254
- "3xx": { "$ref": "#/$defs/methodCoverageDetail" },
255
- "4xx": { "$ref": "#/$defs/methodCoverageDetail" },
256
- "5xx": { "$ref": "#/$defs/methodCoverageDetail" }
257
- }
258
- },
259
- "endpoint": {
260
- "type": "object",
261
- "description": "API endpoint definition",
262
- "required": ["method", "path"],
263
- "properties": {
264
- "method": {
265
- "type": "string",
266
- "enum": ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD"]
267
- },
268
- "path": {
269
- "type": "string",
270
- "pattern": "^/.*$",
271
- "description": "API endpoint path"
272
- },
273
- "operationId": {
274
- "type": "string",
275
- "description": "OpenAPI operationId"
276
- },
277
- "summary": {
278
- "type": "string",
279
- "description": "Endpoint description"
280
- },
281
- "tags": {
282
- "type": "array",
283
- "items": { "type": "string" }
284
- },
285
- "parameters": {
286
- "type": "array",
287
- "items": {
288
- "$ref": "#/$defs/parameter"
289
- }
290
- },
291
- "requestBody": {
292
- "$ref": "#/$defs/requestBody"
293
- },
294
- "responses": {
295
- "type": "object",
296
- "additionalProperties": {
297
- "$ref": "#/$defs/response"
298
- }
299
- },
300
- "security": {
301
- "type": "array",
302
- "items": { "type": "object" }
303
- }
304
- }
305
- },
306
- "parameter": {
307
- "type": "object",
308
- "required": ["name", "in"],
309
- "properties": {
310
- "name": { "type": "string" },
311
- "in": {
312
- "type": "string",
313
- "enum": ["query", "path", "header", "cookie"]
314
- },
315
- "required": { "type": "boolean" },
316
- "schema": { "type": "object" }
317
- }
318
- },
319
- "requestBody": {
320
- "type": "object",
321
- "properties": {
322
- "required": { "type": "boolean" },
323
- "contentType": { "type": "string" },
324
- "schema": { "type": "object" }
325
- }
326
- },
327
- "response": {
328
- "type": "object",
329
- "properties": {
330
- "statusCode": { "type": "integer" },
331
- "description": { "type": "string" },
332
- "contentType": { "type": "string" },
333
- "schema": { "type": "object" }
334
- }
335
- },
336
- "testRecommendation": {
337
- "type": "object",
338
- "description": "Recommended API test to implement",
339
- "required": ["id", "testType", "endpoint", "description"],
340
- "properties": {
341
- "id": {
342
- "type": "string",
343
- "pattern": "^API-\\d{3,6}$",
344
- "description": "Recommendation ID"
345
- },
346
- "testType": {
347
- "type": "string",
348
- "enum": ["contract", "integration", "component", "load", "security", "e2e"],
349
- "description": "Type of test recommended"
350
- },
351
- "endpoint": {
352
- "$ref": "#/$defs/endpoint"
353
- },
354
- "description": {
355
- "type": "string",
356
- "maxLength": 500
357
- },
358
- "priority": {
359
- "type": "string",
360
- "enum": ["critical", "high", "medium", "low"]
361
- },
362
- "scenarios": {
363
- "type": "array",
364
- "items": {
365
- "$ref": "#/$defs/testScenario"
366
- },
367
- "description": "Specific test scenarios to implement"
368
- },
369
- "codeExample": {
370
- "type": "string",
371
- "maxLength": 5000,
372
- "description": "Example test code"
373
- },
374
- "framework": {
375
- "type": "string",
376
- "enum": ["supertest", "pact", "rest-assured", "playwright", "k6", "artillery", "jest", "mocha", "vitest"],
377
- "description": "Recommended testing framework"
378
- }
379
- }
380
- },
381
- "testScenario": {
382
- "type": "object",
383
- "description": "Specific test scenario",
384
- "required": ["name", "category"],
385
- "properties": {
386
- "name": {
387
- "type": "string"
388
- },
389
- "category": {
390
- "type": "string",
391
- "enum": ["happy-path", "error-handling", "auth", "validation", "idempotency", "concurrency", "rate-limiting", "pagination", "filtering", "sorting"]
392
- },
393
- "description": {
394
- "type": "string"
395
- },
396
- "expectedStatusCode": {
397
- "type": "integer"
398
- },
399
- "input": {
400
- "type": "object"
401
- },
402
- "assertions": {
403
- "type": "array",
404
- "items": { "type": "string" }
405
- }
406
- }
407
- },
408
- "contractTestSuite": {
409
- "type": "object",
410
- "description": "Contract testing specifications",
411
- "properties": {
412
- "framework": {
413
- "type": "string",
414
- "enum": ["pact", "spring-cloud-contract", "prism", "custom"]
415
- },
416
- "consumers": {
417
- "type": "array",
418
- "items": {
419
- "$ref": "#/$defs/consumer"
420
- }
421
- },
422
- "providers": {
423
- "type": "array",
424
- "items": {
425
- "$ref": "#/$defs/provider"
426
- }
427
- },
428
- "contracts": {
429
- "type": "array",
430
- "items": {
431
- "$ref": "#/$defs/contract"
432
- }
433
- },
434
- "breakingChanges": {
435
- "type": "array",
436
- "items": {
437
- "$ref": "#/$defs/breakingChange"
438
- }
439
- },
440
- "canIDeploy": {
441
- "type": "boolean",
442
- "description": "Whether deployment is safe based on contract verification"
443
- }
444
- }
445
- },
446
- "consumer": {
447
- "type": "object",
448
- "required": ["name"],
449
- "properties": {
450
- "name": { "type": "string" },
451
- "version": { "type": "string" },
452
- "contractVersion": { "type": "string" }
453
- }
454
- },
455
- "provider": {
456
- "type": "object",
457
- "required": ["name"],
458
- "properties": {
459
- "name": { "type": "string" },
460
- "version": { "type": "string" },
461
- "verificationStatus": {
462
- "type": "string",
463
- "enum": ["passed", "failed", "pending"]
464
- }
465
- }
466
- },
467
- "contract": {
468
- "type": "object",
469
- "description": "Consumer-provider contract",
470
- "required": ["consumer", "provider"],
471
- "properties": {
472
- "consumer": { "type": "string" },
473
- "provider": { "type": "string" },
474
- "interactions": {
475
- "type": "array",
476
- "items": {
477
- "$ref": "#/$defs/interaction"
478
- }
479
- },
480
- "status": {
481
- "type": "string",
482
- "enum": ["verified", "failed", "pending"]
483
- }
484
- }
485
- },
486
- "interaction": {
487
- "type": "object",
488
- "description": "Contract interaction",
489
- "required": ["description", "request", "response"],
490
- "properties": {
491
- "description": { "type": "string" },
492
- "request": {
493
- "type": "object",
494
- "properties": {
495
- "method": { "type": "string" },
496
- "path": { "type": "string" },
497
- "headers": { "type": "object" },
498
- "body": {}
499
- }
500
- },
501
- "response": {
502
- "type": "object",
503
- "properties": {
504
- "status": { "type": "integer" },
505
- "headers": { "type": "object" },
506
- "body": {}
507
- }
508
- }
509
- }
510
- },
511
- "breakingChange": {
512
- "type": "object",
513
- "description": "Breaking change detected in API",
514
- "required": ["type", "description", "severity"],
515
- "properties": {
516
- "type": {
517
- "type": "string",
518
- "enum": ["removed-endpoint", "removed-field", "type-change", "required-field-added", "response-change", "status-code-change"]
519
- },
520
- "description": { "type": "string" },
521
- "severity": {
522
- "type": "string",
523
- "enum": ["critical", "high", "medium", "low"]
524
- },
525
- "affectedConsumers": {
526
- "type": "array",
527
- "items": { "type": "string" }
528
- },
529
- "migrationPath": {
530
- "type": "string"
531
- }
532
- }
533
- },
534
- "integrationTestSuite": {
535
- "type": "object",
536
- "description": "Integration testing specifications",
537
- "properties": {
538
- "framework": {
539
- "type": "string",
540
- "enum": ["supertest", "rest-assured", "playwright", "jest", "mocha", "vitest"]
541
- },
542
- "tests": {
543
- "type": "array",
544
- "items": {
545
- "$ref": "#/$defs/integrationTest"
546
- }
547
- },
548
- "dependencies": {
549
- "type": "array",
550
- "items": { "type": "string" },
551
- "description": "External dependencies required (databases, services)"
552
- }
553
- }
554
- },
555
- "integrationTest": {
556
- "type": "object",
557
- "required": ["name", "endpoint"],
558
- "properties": {
559
- "name": { "type": "string" },
560
- "endpoint": { "$ref": "#/$defs/endpoint" },
561
- "setup": { "type": "string" },
562
- "teardown": { "type": "string" },
563
- "assertions": {
564
- "type": "array",
565
- "items": { "type": "string" }
566
- }
567
- }
568
- },
569
- "componentTestSuite": {
570
- "type": "object",
571
- "description": "Component testing specifications",
572
- "properties": {
573
- "framework": {
574
- "type": "string"
575
- },
576
- "mocks": {
577
- "type": "array",
578
- "items": {
579
- "$ref": "#/$defs/mockConfiguration"
580
- }
581
- },
582
- "tests": {
583
- "type": "array",
584
- "items": {
585
- "$ref": "#/$defs/componentTest"
586
- }
587
- }
588
- }
589
- },
590
- "componentTest": {
591
- "type": "object",
592
- "required": ["name"],
593
- "properties": {
594
- "name": { "type": "string" },
595
- "component": { "type": "string" },
596
- "isolatedDependencies": {
597
- "type": "array",
598
- "items": { "type": "string" }
599
- }
600
- }
601
- },
602
- "loadTestSuite": {
603
- "type": "object",
604
- "description": "Load/performance testing specifications",
605
- "properties": {
606
- "framework": {
607
- "type": "string",
608
- "enum": ["k6", "artillery", "jmeter", "locust", "gatling"]
609
- },
610
- "scenarios": {
611
- "type": "array",
612
- "items": {
613
- "$ref": "#/$defs/loadScenario"
614
- }
615
- },
616
- "thresholds": {
617
- "$ref": "#/$defs/performanceThresholds"
618
- }
619
- }
620
- },
621
- "loadScenario": {
622
- "type": "object",
623
- "required": ["name", "endpoint"],
624
- "properties": {
625
- "name": { "type": "string" },
626
- "endpoint": { "$ref": "#/$defs/endpoint" },
627
- "vus": {
628
- "type": "integer",
629
- "description": "Virtual users"
630
- },
631
- "duration": {
632
- "type": "string",
633
- "description": "Test duration (e.g., '5m', '1h')"
634
- },
635
- "rps": {
636
- "type": "integer",
637
- "description": "Requests per second target"
638
- }
639
- }
640
- },
641
- "performanceThresholds": {
642
- "type": "object",
643
- "properties": {
644
- "p95ResponseTime": {
645
- "type": "integer",
646
- "description": "95th percentile response time in ms"
647
- },
648
- "p99ResponseTime": {
649
- "type": "integer",
650
- "description": "99th percentile response time in ms"
651
- },
652
- "errorRate": {
653
- "type": "number",
654
- "minimum": 0,
655
- "maximum": 100,
656
- "description": "Maximum error rate percentage"
657
- },
658
- "throughput": {
659
- "type": "integer",
660
- "description": "Minimum throughput (requests/second)"
661
- }
662
- }
663
- },
664
- "securityTestSuite": {
665
- "type": "object",
666
- "description": "API security testing specifications",
667
- "properties": {
668
- "authTests": {
669
- "type": "array",
670
- "items": {
671
- "$ref": "#/$defs/authTest"
672
- }
673
- },
674
- "inputValidationTests": {
675
- "type": "array",
676
- "items": {
677
- "$ref": "#/$defs/inputValidationTest"
678
- }
679
- },
680
- "rateLimitingTests": {
681
- "type": "array",
682
- "items": { "type": "object" }
683
- }
684
- }
685
- },
686
- "authTest": {
687
- "type": "object",
688
- "required": ["name", "scenario"],
689
- "properties": {
690
- "name": { "type": "string" },
691
- "scenario": {
692
- "type": "string",
693
- "enum": ["missing-token", "expired-token", "invalid-token", "wrong-scope", "cross-user-access"]
694
- },
695
- "expectedStatusCode": {
696
- "type": "integer"
697
- }
698
- }
699
- },
700
- "inputValidationTest": {
701
- "type": "object",
702
- "required": ["name", "validationType"],
703
- "properties": {
704
- "name": { "type": "string" },
705
- "validationType": {
706
- "type": "string",
707
- "enum": ["missing-required", "wrong-type", "out-of-range", "invalid-format", "sql-injection", "xss"]
708
- },
709
- "expectedStatusCode": {
710
- "type": "integer"
711
- }
712
- }
713
- },
714
- "mockConfiguration": {
715
- "type": "object",
716
- "description": "Mock/stub configuration",
717
- "required": ["name", "type"],
718
- "properties": {
719
- "name": { "type": "string" },
720
- "type": {
721
- "type": "string",
722
- "enum": ["wiremock", "pact", "msw", "nock", "prism", "custom"]
723
- },
724
- "endpoint": { "$ref": "#/$defs/endpoint" },
725
- "responses": {
726
- "type": "array",
727
- "items": {
728
- "type": "object",
729
- "properties": {
730
- "statusCode": { "type": "integer" },
731
- "body": {},
732
- "headers": { "type": "object" }
733
- }
734
- }
735
- }
736
- }
737
- },
738
- "apiFinding": {
739
- "type": "object",
740
- "description": "API testing finding/issue",
741
- "required": ["id", "title", "severity", "category"],
742
- "properties": {
743
- "id": {
744
- "type": "string",
745
- "pattern": "^API-\\d{3,6}$"
746
- },
747
- "title": {
748
- "type": "string",
749
- "minLength": 5,
750
- "maxLength": 200
751
- },
752
- "description": {
753
- "type": "string",
754
- "maxLength": 2000
755
- },
756
- "severity": {
757
- "type": "string",
758
- "enum": ["critical", "high", "medium", "low", "info"]
759
- },
760
- "category": {
761
- "type": "string",
762
- "enum": ["coverage-gap", "contract-violation", "auth-issue", "validation-gap", "performance-risk", "documentation-mismatch"]
763
- },
764
- "endpoint": {
765
- "$ref": "#/$defs/endpoint"
766
- },
767
- "remediation": {
768
- "type": "string"
769
- }
770
- }
771
- },
772
- "recommendation": {
773
- "type": "object",
774
- "required": ["id", "title", "priority"],
775
- "properties": {
776
- "id": {
777
- "type": "string",
778
- "pattern": "^REC-\\d{3,6}$"
779
- },
780
- "title": {
781
- "type": "string",
782
- "maxLength": 200
783
- },
784
- "description": {
785
- "type": "string",
786
- "maxLength": 2000
787
- },
788
- "priority": {
789
- "type": "string",
790
- "enum": ["critical", "high", "medium", "low"]
791
- },
792
- "effort": {
793
- "type": "string",
794
- "enum": ["trivial", "low", "medium", "high", "major"]
795
- },
796
- "codeExample": {
797
- "type": "string",
798
- "maxLength": 5000
799
- }
800
- }
801
- },
802
- "apiMetrics": {
803
- "type": "object",
804
- "description": "API testing metrics",
805
- "properties": {
806
- "totalEndpoints": { "type": "integer", "minimum": 0 },
807
- "coveredEndpoints": { "type": "integer", "minimum": 0 },
808
- "contractsCovered": { "type": "integer", "minimum": 0 },
809
- "integrationTestCount": { "type": "integer", "minimum": 0 },
810
- "componentTestCount": { "type": "integer", "minimum": 0 },
811
- "loadTestCount": { "type": "integer", "minimum": 0 },
812
- "securityTestCount": { "type": "integer", "minimum": 0 },
813
- "coveragePercentage": {
814
- "type": "number",
815
- "minimum": 0,
816
- "maximum": 100
817
- },
818
- "duration": { "type": "integer", "minimum": 0 }
819
- }
820
- },
821
- "categoryScore": {
822
- "type": "object",
823
- "required": ["score"],
824
- "properties": {
825
- "score": {
826
- "type": "number",
827
- "minimum": 0,
828
- "maximum": 100
829
- },
830
- "weight": {
831
- "type": "number",
832
- "minimum": 0,
833
- "maximum": 1
834
- },
835
- "description": {
836
- "type": "string"
837
- },
838
- "grade": {
839
- "type": "string",
840
- "pattern": "^[A-F][+-]?$"
841
- }
842
- }
843
- }
844
- }
845
- }
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://agentic-qe.dev/schemas/skills/api-testing-patterns/output.json",
4
+ "title": "API Testing Patterns Skill Output Schema",
5
+ "description": "Schema for API testing patterns skill output. Extends the base skill-output template with API-specific structures for contract, integration, component, and load testing.",
6
+ "allOf": [
7
+ {
8
+ "$comment": "Base schema structure from skill-output.template.json",
9
+ "type": "object",
10
+ "required": ["skillName", "version", "timestamp", "status", "trustTier", "output"],
11
+ "properties": {
12
+ "skillName": {
13
+ "type": "string",
14
+ "const": "api-testing-patterns"
15
+ },
16
+ "version": {
17
+ "type": "string",
18
+ "pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9]+)?$"
19
+ },
20
+ "timestamp": {
21
+ "type": "string",
22
+ "format": "date-time"
23
+ },
24
+ "status": {
25
+ "type": "string",
26
+ "enum": ["success", "partial", "failed", "skipped"]
27
+ },
28
+ "trustTier": {
29
+ "type": "integer",
30
+ "minimum": 0,
31
+ "maximum": 3
32
+ }
33
+ }
34
+ }
35
+ ],
36
+ "properties": {
37
+ "output": {
38
+ "type": "object",
39
+ "required": ["summary", "testingLevel", "endpointCoverage"],
40
+ "properties": {
41
+ "summary": {
42
+ "type": "string",
43
+ "minLength": 10,
44
+ "maxLength": 2000,
45
+ "description": "Human-readable summary of API testing analysis"
46
+ },
47
+ "testingLevel": {
48
+ "type": "string",
49
+ "enum": ["contract", "component", "integration", "e2e", "load", "mixed"],
50
+ "description": "Primary API testing level recommended"
51
+ },
52
+ "apiType": {
53
+ "type": "string",
54
+ "enum": ["rest", "graphql", "grpc", "websocket", "mixed"],
55
+ "description": "Type of API being tested"
56
+ },
57
+ "endpointCoverage": {
58
+ "$ref": "#/$defs/endpointCoverage",
59
+ "description": "Coverage analysis for API endpoints"
60
+ },
61
+ "testRecommendations": {
62
+ "type": "array",
63
+ "items": {
64
+ "$ref": "#/$defs/testRecommendation"
65
+ },
66
+ "maxItems": 50,
67
+ "description": "Recommended API tests to implement"
68
+ },
69
+ "contractTests": {
70
+ "$ref": "#/$defs/contractTestSuite",
71
+ "description": "Contract testing specifications"
72
+ },
73
+ "integrationTests": {
74
+ "$ref": "#/$defs/integrationTestSuite",
75
+ "description": "Integration testing specifications"
76
+ },
77
+ "componentTests": {
78
+ "$ref": "#/$defs/componentTestSuite",
79
+ "description": "Component testing specifications"
80
+ },
81
+ "loadTests": {
82
+ "$ref": "#/$defs/loadTestSuite",
83
+ "description": "Load/performance testing specifications"
84
+ },
85
+ "securityTests": {
86
+ "$ref": "#/$defs/securityTestSuite",
87
+ "description": "API security testing specifications"
88
+ },
89
+ "mockConfigurations": {
90
+ "type": "array",
91
+ "items": {
92
+ "$ref": "#/$defs/mockConfiguration"
93
+ },
94
+ "maxItems": 100,
95
+ "description": "Mock/stub configurations for testing"
96
+ },
97
+ "findings": {
98
+ "type": "array",
99
+ "items": {
100
+ "$ref": "#/$defs/apiFinding"
101
+ },
102
+ "maxItems": 200,
103
+ "description": "API testing gaps and issues found"
104
+ },
105
+ "recommendations": {
106
+ "type": "array",
107
+ "items": {
108
+ "$ref": "#/$defs/recommendation"
109
+ },
110
+ "maxItems": 50,
111
+ "description": "Actionable recommendations for API testing improvement"
112
+ },
113
+ "metrics": {
114
+ "$ref": "#/$defs/apiMetrics",
115
+ "description": "Quantitative API testing metrics"
116
+ },
117
+ "categories": {
118
+ "type": "object",
119
+ "additionalProperties": {
120
+ "$ref": "#/$defs/categoryScore"
121
+ },
122
+ "description": "Scores by API testing category"
123
+ }
124
+ }
125
+ },
126
+ "metadata": {
127
+ "type": "object",
128
+ "properties": {
129
+ "executionTimeMs": {
130
+ "type": "integer",
131
+ "minimum": 0
132
+ },
133
+ "toolsUsed": {
134
+ "type": "array",
135
+ "items": { "type": "string" }
136
+ },
137
+ "agentId": {
138
+ "type": "string",
139
+ "pattern": "^qe-[a-z][a-z0-9-]*$"
140
+ },
141
+ "apiSpecPath": {
142
+ "type": "string",
143
+ "description": "Path to OpenAPI/GraphQL spec analyzed"
144
+ },
145
+ "consumers": {
146
+ "type": "array",
147
+ "items": { "type": "string" },
148
+ "description": "Consumer services for contract testing"
149
+ },
150
+ "providers": {
151
+ "type": "array",
152
+ "items": { "type": "string" },
153
+ "description": "Provider services for contract testing"
154
+ }
155
+ }
156
+ },
157
+ "validation": {
158
+ "type": "object",
159
+ "properties": {
160
+ "schemaValid": { "type": "boolean" },
161
+ "contentValid": { "type": "boolean" },
162
+ "confidence": {
163
+ "type": "number",
164
+ "minimum": 0,
165
+ "maximum": 1
166
+ }
167
+ }
168
+ },
169
+ "learning": {
170
+ "type": "object",
171
+ "properties": {
172
+ "patternsDetected": {
173
+ "type": "array",
174
+ "items": { "type": "string" }
175
+ },
176
+ "reward": {
177
+ "type": "number",
178
+ "minimum": 0,
179
+ "maximum": 1
180
+ }
181
+ }
182
+ }
183
+ },
184
+ "$defs": {
185
+ "endpointCoverage": {
186
+ "type": "object",
187
+ "description": "API endpoint coverage analysis",
188
+ "required": ["totalEndpoints", "coveredEndpoints"],
189
+ "properties": {
190
+ "totalEndpoints": {
191
+ "type": "integer",
192
+ "minimum": 0,
193
+ "description": "Total number of API endpoints"
194
+ },
195
+ "coveredEndpoints": {
196
+ "type": "integer",
197
+ "minimum": 0,
198
+ "description": "Number of endpoints with test coverage"
199
+ },
200
+ "coveragePercentage": {
201
+ "type": "number",
202
+ "minimum": 0,
203
+ "maximum": 100,
204
+ "description": "Percentage of endpoints with coverage"
205
+ },
206
+ "byHttpMethod": {
207
+ "$ref": "#/$defs/httpMethodCoverage"
208
+ },
209
+ "byStatusCode": {
210
+ "$ref": "#/$defs/statusCodeCoverage"
211
+ },
212
+ "uncoveredEndpoints": {
213
+ "type": "array",
214
+ "items": {
215
+ "$ref": "#/$defs/endpoint"
216
+ },
217
+ "description": "List of endpoints without coverage"
218
+ },
219
+ "partiallyCoveredEndpoints": {
220
+ "type": "array",
221
+ "items": {
222
+ "$ref": "#/$defs/endpoint"
223
+ },
224
+ "description": "Endpoints with incomplete coverage"
225
+ }
226
+ }
227
+ },
228
+ "httpMethodCoverage": {
229
+ "type": "object",
230
+ "description": "Coverage breakdown by HTTP method",
231
+ "properties": {
232
+ "GET": { "$ref": "#/$defs/methodCoverageDetail" },
233
+ "POST": { "$ref": "#/$defs/methodCoverageDetail" },
234
+ "PUT": { "$ref": "#/$defs/methodCoverageDetail" },
235
+ "PATCH": { "$ref": "#/$defs/methodCoverageDetail" },
236
+ "DELETE": { "$ref": "#/$defs/methodCoverageDetail" },
237
+ "OPTIONS": { "$ref": "#/$defs/methodCoverageDetail" },
238
+ "HEAD": { "$ref": "#/$defs/methodCoverageDetail" }
239
+ }
240
+ },
241
+ "methodCoverageDetail": {
242
+ "type": "object",
243
+ "properties": {
244
+ "total": { "type": "integer", "minimum": 0 },
245
+ "covered": { "type": "integer", "minimum": 0 },
246
+ "percentage": { "type": "number", "minimum": 0, "maximum": 100 }
247
+ }
248
+ },
249
+ "statusCodeCoverage": {
250
+ "type": "object",
251
+ "description": "Coverage breakdown by HTTP status code category",
252
+ "properties": {
253
+ "2xx": { "$ref": "#/$defs/methodCoverageDetail" },
254
+ "3xx": { "$ref": "#/$defs/methodCoverageDetail" },
255
+ "4xx": { "$ref": "#/$defs/methodCoverageDetail" },
256
+ "5xx": { "$ref": "#/$defs/methodCoverageDetail" }
257
+ }
258
+ },
259
+ "endpoint": {
260
+ "type": "object",
261
+ "description": "API endpoint definition",
262
+ "required": ["method", "path"],
263
+ "properties": {
264
+ "method": {
265
+ "type": "string",
266
+ "enum": ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD"]
267
+ },
268
+ "path": {
269
+ "type": "string",
270
+ "pattern": "^/.*$",
271
+ "description": "API endpoint path"
272
+ },
273
+ "operationId": {
274
+ "type": "string",
275
+ "description": "OpenAPI operationId"
276
+ },
277
+ "summary": {
278
+ "type": "string",
279
+ "description": "Endpoint description"
280
+ },
281
+ "tags": {
282
+ "type": "array",
283
+ "items": { "type": "string" }
284
+ },
285
+ "parameters": {
286
+ "type": "array",
287
+ "items": {
288
+ "$ref": "#/$defs/parameter"
289
+ }
290
+ },
291
+ "requestBody": {
292
+ "$ref": "#/$defs/requestBody"
293
+ },
294
+ "responses": {
295
+ "type": "object",
296
+ "additionalProperties": {
297
+ "$ref": "#/$defs/response"
298
+ }
299
+ },
300
+ "security": {
301
+ "type": "array",
302
+ "items": { "type": "object" }
303
+ }
304
+ }
305
+ },
306
+ "parameter": {
307
+ "type": "object",
308
+ "required": ["name", "in"],
309
+ "properties": {
310
+ "name": { "type": "string" },
311
+ "in": {
312
+ "type": "string",
313
+ "enum": ["query", "path", "header", "cookie"]
314
+ },
315
+ "required": { "type": "boolean" },
316
+ "schema": { "type": "object" }
317
+ }
318
+ },
319
+ "requestBody": {
320
+ "type": "object",
321
+ "properties": {
322
+ "required": { "type": "boolean" },
323
+ "contentType": { "type": "string" },
324
+ "schema": { "type": "object" }
325
+ }
326
+ },
327
+ "response": {
328
+ "type": "object",
329
+ "properties": {
330
+ "statusCode": { "type": "integer" },
331
+ "description": { "type": "string" },
332
+ "contentType": { "type": "string" },
333
+ "schema": { "type": "object" }
334
+ }
335
+ },
336
+ "testRecommendation": {
337
+ "type": "object",
338
+ "description": "Recommended API test to implement",
339
+ "required": ["id", "testType", "endpoint", "description"],
340
+ "properties": {
341
+ "id": {
342
+ "type": "string",
343
+ "pattern": "^API-\\d{3,6}$",
344
+ "description": "Recommendation ID"
345
+ },
346
+ "testType": {
347
+ "type": "string",
348
+ "enum": ["contract", "integration", "component", "load", "security", "e2e"],
349
+ "description": "Type of test recommended"
350
+ },
351
+ "endpoint": {
352
+ "$ref": "#/$defs/endpoint"
353
+ },
354
+ "description": {
355
+ "type": "string",
356
+ "maxLength": 500
357
+ },
358
+ "priority": {
359
+ "type": "string",
360
+ "enum": ["critical", "high", "medium", "low"]
361
+ },
362
+ "scenarios": {
363
+ "type": "array",
364
+ "items": {
365
+ "$ref": "#/$defs/testScenario"
366
+ },
367
+ "description": "Specific test scenarios to implement"
368
+ },
369
+ "codeExample": {
370
+ "type": "string",
371
+ "maxLength": 5000,
372
+ "description": "Example test code"
373
+ },
374
+ "framework": {
375
+ "type": "string",
376
+ "enum": ["supertest", "pact", "rest-assured", "playwright", "k6", "artillery", "jest", "mocha", "vitest"],
377
+ "description": "Recommended testing framework"
378
+ }
379
+ }
380
+ },
381
+ "testScenario": {
382
+ "type": "object",
383
+ "description": "Specific test scenario",
384
+ "required": ["name", "category"],
385
+ "properties": {
386
+ "name": {
387
+ "type": "string"
388
+ },
389
+ "category": {
390
+ "type": "string",
391
+ "enum": ["happy-path", "error-handling", "auth", "validation", "idempotency", "concurrency", "rate-limiting", "pagination", "filtering", "sorting"]
392
+ },
393
+ "description": {
394
+ "type": "string"
395
+ },
396
+ "expectedStatusCode": {
397
+ "type": "integer"
398
+ },
399
+ "input": {
400
+ "type": "object"
401
+ },
402
+ "assertions": {
403
+ "type": "array",
404
+ "items": { "type": "string" }
405
+ }
406
+ }
407
+ },
408
+ "contractTestSuite": {
409
+ "type": "object",
410
+ "description": "Contract testing specifications",
411
+ "properties": {
412
+ "framework": {
413
+ "type": "string",
414
+ "enum": ["pact", "spring-cloud-contract", "prism", "custom"]
415
+ },
416
+ "consumers": {
417
+ "type": "array",
418
+ "items": {
419
+ "$ref": "#/$defs/consumer"
420
+ }
421
+ },
422
+ "providers": {
423
+ "type": "array",
424
+ "items": {
425
+ "$ref": "#/$defs/provider"
426
+ }
427
+ },
428
+ "contracts": {
429
+ "type": "array",
430
+ "items": {
431
+ "$ref": "#/$defs/contract"
432
+ }
433
+ },
434
+ "breakingChanges": {
435
+ "type": "array",
436
+ "items": {
437
+ "$ref": "#/$defs/breakingChange"
438
+ }
439
+ },
440
+ "canIDeploy": {
441
+ "type": "boolean",
442
+ "description": "Whether deployment is safe based on contract verification"
443
+ }
444
+ }
445
+ },
446
+ "consumer": {
447
+ "type": "object",
448
+ "required": ["name"],
449
+ "properties": {
450
+ "name": { "type": "string" },
451
+ "version": { "type": "string" },
452
+ "contractVersion": { "type": "string" }
453
+ }
454
+ },
455
+ "provider": {
456
+ "type": "object",
457
+ "required": ["name"],
458
+ "properties": {
459
+ "name": { "type": "string" },
460
+ "version": { "type": "string" },
461
+ "verificationStatus": {
462
+ "type": "string",
463
+ "enum": ["passed", "failed", "pending"]
464
+ }
465
+ }
466
+ },
467
+ "contract": {
468
+ "type": "object",
469
+ "description": "Consumer-provider contract",
470
+ "required": ["consumer", "provider"],
471
+ "properties": {
472
+ "consumer": { "type": "string" },
473
+ "provider": { "type": "string" },
474
+ "interactions": {
475
+ "type": "array",
476
+ "items": {
477
+ "$ref": "#/$defs/interaction"
478
+ }
479
+ },
480
+ "status": {
481
+ "type": "string",
482
+ "enum": ["verified", "failed", "pending"]
483
+ }
484
+ }
485
+ },
486
+ "interaction": {
487
+ "type": "object",
488
+ "description": "Contract interaction",
489
+ "required": ["description", "request", "response"],
490
+ "properties": {
491
+ "description": { "type": "string" },
492
+ "request": {
493
+ "type": "object",
494
+ "properties": {
495
+ "method": { "type": "string" },
496
+ "path": { "type": "string" },
497
+ "headers": { "type": "object" },
498
+ "body": {}
499
+ }
500
+ },
501
+ "response": {
502
+ "type": "object",
503
+ "properties": {
504
+ "status": { "type": "integer" },
505
+ "headers": { "type": "object" },
506
+ "body": {}
507
+ }
508
+ }
509
+ }
510
+ },
511
+ "breakingChange": {
512
+ "type": "object",
513
+ "description": "Breaking change detected in API",
514
+ "required": ["type", "description", "severity"],
515
+ "properties": {
516
+ "type": {
517
+ "type": "string",
518
+ "enum": ["removed-endpoint", "removed-field", "type-change", "required-field-added", "response-change", "status-code-change"]
519
+ },
520
+ "description": { "type": "string" },
521
+ "severity": {
522
+ "type": "string",
523
+ "enum": ["critical", "high", "medium", "low"]
524
+ },
525
+ "affectedConsumers": {
526
+ "type": "array",
527
+ "items": { "type": "string" }
528
+ },
529
+ "migrationPath": {
530
+ "type": "string"
531
+ }
532
+ }
533
+ },
534
+ "integrationTestSuite": {
535
+ "type": "object",
536
+ "description": "Integration testing specifications",
537
+ "properties": {
538
+ "framework": {
539
+ "type": "string",
540
+ "enum": ["supertest", "rest-assured", "playwright", "jest", "mocha", "vitest"]
541
+ },
542
+ "tests": {
543
+ "type": "array",
544
+ "items": {
545
+ "$ref": "#/$defs/integrationTest"
546
+ }
547
+ },
548
+ "dependencies": {
549
+ "type": "array",
550
+ "items": { "type": "string" },
551
+ "description": "External dependencies required (databases, services)"
552
+ }
553
+ }
554
+ },
555
+ "integrationTest": {
556
+ "type": "object",
557
+ "required": ["name", "endpoint"],
558
+ "properties": {
559
+ "name": { "type": "string" },
560
+ "endpoint": { "$ref": "#/$defs/endpoint" },
561
+ "setup": { "type": "string" },
562
+ "teardown": { "type": "string" },
563
+ "assertions": {
564
+ "type": "array",
565
+ "items": { "type": "string" }
566
+ }
567
+ }
568
+ },
569
+ "componentTestSuite": {
570
+ "type": "object",
571
+ "description": "Component testing specifications",
572
+ "properties": {
573
+ "framework": {
574
+ "type": "string"
575
+ },
576
+ "mocks": {
577
+ "type": "array",
578
+ "items": {
579
+ "$ref": "#/$defs/mockConfiguration"
580
+ }
581
+ },
582
+ "tests": {
583
+ "type": "array",
584
+ "items": {
585
+ "$ref": "#/$defs/componentTest"
586
+ }
587
+ }
588
+ }
589
+ },
590
+ "componentTest": {
591
+ "type": "object",
592
+ "required": ["name"],
593
+ "properties": {
594
+ "name": { "type": "string" },
595
+ "component": { "type": "string" },
596
+ "isolatedDependencies": {
597
+ "type": "array",
598
+ "items": { "type": "string" }
599
+ }
600
+ }
601
+ },
602
+ "loadTestSuite": {
603
+ "type": "object",
604
+ "description": "Load/performance testing specifications",
605
+ "properties": {
606
+ "framework": {
607
+ "type": "string",
608
+ "enum": ["k6", "artillery", "jmeter", "locust", "gatling"]
609
+ },
610
+ "scenarios": {
611
+ "type": "array",
612
+ "items": {
613
+ "$ref": "#/$defs/loadScenario"
614
+ }
615
+ },
616
+ "thresholds": {
617
+ "$ref": "#/$defs/performanceThresholds"
618
+ }
619
+ }
620
+ },
621
+ "loadScenario": {
622
+ "type": "object",
623
+ "required": ["name", "endpoint"],
624
+ "properties": {
625
+ "name": { "type": "string" },
626
+ "endpoint": { "$ref": "#/$defs/endpoint" },
627
+ "vus": {
628
+ "type": "integer",
629
+ "description": "Virtual users"
630
+ },
631
+ "duration": {
632
+ "type": "string",
633
+ "description": "Test duration (e.g., '5m', '1h')"
634
+ },
635
+ "rps": {
636
+ "type": "integer",
637
+ "description": "Requests per second target"
638
+ }
639
+ }
640
+ },
641
+ "performanceThresholds": {
642
+ "type": "object",
643
+ "properties": {
644
+ "p95ResponseTime": {
645
+ "type": "integer",
646
+ "description": "95th percentile response time in ms"
647
+ },
648
+ "p99ResponseTime": {
649
+ "type": "integer",
650
+ "description": "99th percentile response time in ms"
651
+ },
652
+ "errorRate": {
653
+ "type": "number",
654
+ "minimum": 0,
655
+ "maximum": 100,
656
+ "description": "Maximum error rate percentage"
657
+ },
658
+ "throughput": {
659
+ "type": "integer",
660
+ "description": "Minimum throughput (requests/second)"
661
+ }
662
+ }
663
+ },
664
+ "securityTestSuite": {
665
+ "type": "object",
666
+ "description": "API security testing specifications",
667
+ "properties": {
668
+ "authTests": {
669
+ "type": "array",
670
+ "items": {
671
+ "$ref": "#/$defs/authTest"
672
+ }
673
+ },
674
+ "inputValidationTests": {
675
+ "type": "array",
676
+ "items": {
677
+ "$ref": "#/$defs/inputValidationTest"
678
+ }
679
+ },
680
+ "rateLimitingTests": {
681
+ "type": "array",
682
+ "items": { "type": "object" }
683
+ }
684
+ }
685
+ },
686
+ "authTest": {
687
+ "type": "object",
688
+ "required": ["name", "scenario"],
689
+ "properties": {
690
+ "name": { "type": "string" },
691
+ "scenario": {
692
+ "type": "string",
693
+ "enum": ["missing-token", "expired-token", "invalid-token", "wrong-scope", "cross-user-access"]
694
+ },
695
+ "expectedStatusCode": {
696
+ "type": "integer"
697
+ }
698
+ }
699
+ },
700
+ "inputValidationTest": {
701
+ "type": "object",
702
+ "required": ["name", "validationType"],
703
+ "properties": {
704
+ "name": { "type": "string" },
705
+ "validationType": {
706
+ "type": "string",
707
+ "enum": ["missing-required", "wrong-type", "out-of-range", "invalid-format", "sql-injection", "xss"]
708
+ },
709
+ "expectedStatusCode": {
710
+ "type": "integer"
711
+ }
712
+ }
713
+ },
714
+ "mockConfiguration": {
715
+ "type": "object",
716
+ "description": "Mock/stub configuration",
717
+ "required": ["name", "type"],
718
+ "properties": {
719
+ "name": { "type": "string" },
720
+ "type": {
721
+ "type": "string",
722
+ "enum": ["wiremock", "pact", "msw", "nock", "prism", "custom"]
723
+ },
724
+ "endpoint": { "$ref": "#/$defs/endpoint" },
725
+ "responses": {
726
+ "type": "array",
727
+ "items": {
728
+ "type": "object",
729
+ "properties": {
730
+ "statusCode": { "type": "integer" },
731
+ "body": {},
732
+ "headers": { "type": "object" }
733
+ }
734
+ }
735
+ }
736
+ }
737
+ },
738
+ "apiFinding": {
739
+ "type": "object",
740
+ "description": "API testing finding/issue",
741
+ "required": ["id", "title", "severity", "category"],
742
+ "properties": {
743
+ "id": {
744
+ "type": "string",
745
+ "pattern": "^API-\\d{3,6}$"
746
+ },
747
+ "title": {
748
+ "type": "string",
749
+ "minLength": 5,
750
+ "maxLength": 200
751
+ },
752
+ "description": {
753
+ "type": "string",
754
+ "maxLength": 2000
755
+ },
756
+ "severity": {
757
+ "type": "string",
758
+ "enum": ["critical", "high", "medium", "low", "info"]
759
+ },
760
+ "category": {
761
+ "type": "string",
762
+ "enum": ["coverage-gap", "contract-violation", "auth-issue", "validation-gap", "performance-risk", "documentation-mismatch"]
763
+ },
764
+ "endpoint": {
765
+ "$ref": "#/$defs/endpoint"
766
+ },
767
+ "remediation": {
768
+ "type": "string"
769
+ }
770
+ }
771
+ },
772
+ "recommendation": {
773
+ "type": "object",
774
+ "required": ["id", "title", "priority"],
775
+ "properties": {
776
+ "id": {
777
+ "type": "string",
778
+ "pattern": "^REC-\\d{3,6}$"
779
+ },
780
+ "title": {
781
+ "type": "string",
782
+ "maxLength": 200
783
+ },
784
+ "description": {
785
+ "type": "string",
786
+ "maxLength": 2000
787
+ },
788
+ "priority": {
789
+ "type": "string",
790
+ "enum": ["critical", "high", "medium", "low"]
791
+ },
792
+ "effort": {
793
+ "type": "string",
794
+ "enum": ["trivial", "low", "medium", "high", "major"]
795
+ },
796
+ "codeExample": {
797
+ "type": "string",
798
+ "maxLength": 5000
799
+ }
800
+ }
801
+ },
802
+ "apiMetrics": {
803
+ "type": "object",
804
+ "description": "API testing metrics",
805
+ "properties": {
806
+ "totalEndpoints": { "type": "integer", "minimum": 0 },
807
+ "coveredEndpoints": { "type": "integer", "minimum": 0 },
808
+ "contractsCovered": { "type": "integer", "minimum": 0 },
809
+ "integrationTestCount": { "type": "integer", "minimum": 0 },
810
+ "componentTestCount": { "type": "integer", "minimum": 0 },
811
+ "loadTestCount": { "type": "integer", "minimum": 0 },
812
+ "securityTestCount": { "type": "integer", "minimum": 0 },
813
+ "coveragePercentage": {
814
+ "type": "number",
815
+ "minimum": 0,
816
+ "maximum": 100
817
+ },
818
+ "duration": { "type": "integer", "minimum": 0 }
819
+ }
820
+ },
821
+ "categoryScore": {
822
+ "type": "object",
823
+ "required": ["score"],
824
+ "properties": {
825
+ "score": {
826
+ "type": "number",
827
+ "minimum": 0,
828
+ "maximum": 100
829
+ },
830
+ "weight": {
831
+ "type": "number",
832
+ "minimum": 0,
833
+ "maximum": 1
834
+ },
835
+ "description": {
836
+ "type": "string"
837
+ },
838
+ "grade": {
839
+ "type": "string",
840
+ "pattern": "^[A-F][+-]?$"
841
+ }
842
+ }
843
+ }
844
+ }
845
+ }