agentic-qe 3.8.2 → 3.8.3

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 (217) hide show
  1. package/.claude/skills/README.md +29 -7
  2. package/.claude/skills/TRUST-TIERS.md +26 -10
  3. package/.claude/skills/a11y-ally/SKILL.md +10 -1
  4. package/.claude/skills/accessibility-testing/SKILL.md +2 -0
  5. package/.claude/skills/agentic-quality-engineering/SKILL.md +1 -1
  6. package/.claude/skills/api-testing-patterns/SKILL.md +8 -0
  7. package/.claude/skills/api-testing-patterns/config.json +14 -0
  8. package/.claude/skills/api-testing-patterns/templates/api-test-scaffold.md +87 -0
  9. package/.claude/skills/bug-reporting-excellence/SKILL.md +14 -0
  10. package/.claude/skills/code-review-quality/SKILL.md +14 -0
  11. package/.claude/skills/compatibility-testing/SKILL.md +1 -54
  12. package/.claude/skills/compliance-testing/SKILL.md +8 -0
  13. package/.claude/skills/compliance-testing/config.json +13 -0
  14. package/.claude/skills/consultancy-practices/SKILL.md +1 -32
  15. package/.claude/skills/context-driven-testing/SKILL.md +0 -41
  16. package/.claude/skills/contract-testing/SKILL.md +12 -0
  17. package/.claude/skills/contract-testing/config.json +13 -0
  18. package/.claude/skills/contract-testing/references/agent-commands.md +103 -0
  19. package/.claude/skills/contract-testing/references/provider-states.md +45 -0
  20. package/.claude/skills/coverage-drop-investigator/SKILL.md +90 -0
  21. package/.claude/skills/coverage-guard/SKILL.md +82 -0
  22. package/.claude/skills/coverage-guard/scripts/check-coverage.sh +42 -0
  23. package/.claude/skills/database-testing/SKILL.md +0 -10
  24. package/.claude/skills/debug-loop/SKILL.md +1 -1
  25. package/.claude/skills/e2e-flow-verifier/SKILL.md +78 -0
  26. package/.claude/skills/enterprise-integration-testing/SKILL.md +1 -1
  27. package/.claude/skills/exploratory-testing-advanced/SKILL.md +8 -0
  28. package/.claude/skills/exploratory-testing-advanced/references/heuristic-cheatsheet.md +48 -0
  29. package/.claude/skills/freeze-tests/SKILL.md +67 -0
  30. package/.claude/skills/freeze-tests/scripts/block-test-edits.sh +27 -0
  31. package/.claude/skills/localization-testing/SKILL.md +0 -17
  32. package/.claude/skills/mobile-testing/SKILL.md +2 -49
  33. package/.claude/skills/mutation-testing/SKILL.md +26 -0
  34. package/.claude/skills/mutation-testing/config.json +14 -0
  35. package/.claude/skills/mutation-testing/references/mutation-operators.md +38 -0
  36. package/.claude/skills/mutation-testing/run-history.json +6 -0
  37. package/.claude/skills/no-skip/SKILL.md +74 -0
  38. package/.claude/skills/no-skip/scripts/check-skips.sh +28 -0
  39. package/.claude/skills/pair-programming/SKILL.md +1 -1
  40. package/.claude/skills/pentest-validation/SKILL.md +2 -3
  41. package/.claude/skills/performance-testing/SKILL.md +21 -0
  42. package/.claude/skills/performance-testing/config.json +18 -0
  43. package/.claude/skills/performance-testing/references/k6-patterns.md +72 -0
  44. package/.claude/skills/performance-testing/run-history.json +6 -0
  45. package/.claude/skills/pr-review/SKILL.md +3 -3
  46. package/.claude/skills/qcsd-cicd-swarm/SKILL.md +1 -1
  47. package/.claude/skills/qcsd-development-swarm/SKILL.md +1 -1
  48. package/.claude/skills/qcsd-ideation-swarm/SKILL.md +1 -1
  49. package/.claude/skills/qcsd-production-swarm/SKILL.md +1 -1
  50. package/.claude/skills/qcsd-refinement-swarm/SKILL.md +1 -1
  51. package/.claude/skills/qe-chaos-resilience/SKILL.md +2 -2
  52. package/.claude/skills/qe-code-intelligence/SKILL.md +9 -1
  53. package/.claude/skills/qe-coverage-analysis/SKILL.md +28 -1
  54. package/.claude/skills/qe-coverage-analysis/run-history.json +6 -0
  55. package/.claude/skills/qe-defect-intelligence/SKILL.md +1 -1
  56. package/.claude/skills/qe-learning-optimization/SKILL.md +1 -1
  57. package/.claude/skills/qe-quality-assessment/SKILL.md +29 -2
  58. package/.claude/skills/qe-quality-assessment/run-history.json +6 -0
  59. package/.claude/skills/qe-requirements-validation/SKILL.md +1 -1
  60. package/.claude/skills/qe-test-execution/SKILL.md +9 -1
  61. package/.claude/skills/qe-test-generation/SKILL.md +15 -1
  62. package/.claude/skills/qe-test-generation/config.json +14 -0
  63. package/.claude/skills/qe-test-generation/templates/test-scaffold-jest.md +72 -0
  64. package/.claude/skills/qe-visual-accessibility/SKILL.md +1 -1
  65. package/.claude/skills/quality-metrics/SKILL.md +3 -77
  66. package/.claude/skills/regression-testing/SKILL.md +13 -48
  67. package/.claude/skills/risk-based-testing/SKILL.md +6 -51
  68. package/.claude/skills/security-testing/SKILL.md +30 -0
  69. package/.claude/skills/security-testing/config.json +13 -0
  70. package/.claude/skills/security-testing/references/compliance-agent-commands.md +131 -0
  71. package/.claude/skills/security-testing/references/owasp-top-10.md +66 -0
  72. package/.claude/skills/security-testing/run-history.json +6 -0
  73. package/.claude/skills/security-testing/templates/security-report.md +44 -0
  74. package/.claude/skills/security-watch/SKILL.md +93 -0
  75. package/.claude/skills/security-watch/scripts/scan-security.sh +46 -0
  76. package/.claude/skills/shift-left-testing/SKILL.md +16 -87
  77. package/.claude/skills/skill-stats/SKILL.md +79 -0
  78. package/.claude/skills/skills-manifest.json +1 -1
  79. package/.claude/skills/strict-tdd/SKILL.md +72 -0
  80. package/.claude/skills/strict-tdd/scripts/enforce-red-phase.sh +36 -0
  81. package/.claude/skills/tdd-london-chicago/SKILL.md +8 -0
  82. package/.claude/skills/test-automation-strategy/SKILL.md +13 -64
  83. package/.claude/skills/test-data-management/SKILL.md +1 -104
  84. package/.claude/skills/test-design-techniques/SKILL.md +2 -151
  85. package/.claude/skills/test-environment-management/SKILL.md +0 -47
  86. package/.claude/skills/test-failure-investigator/SKILL.md +99 -0
  87. package/.claude/skills/test-metrics-dashboard/SKILL.md +97 -0
  88. package/.claude/skills/trust-tier-manifest.json +135 -61
  89. package/.claude/skills/validation-pipeline/SKILL.md +1 -1
  90. package/.claude/skills/verification-quality/SKILL.md +15 -1
  91. package/.claude/skills/xp-practices/SKILL.md +2 -109
  92. package/CHANGELOG.md +29 -0
  93. package/README.md +5 -1
  94. package/assets/skills/README.md +173 -0
  95. package/assets/skills/TRUST-TIERS.md +174 -0
  96. package/assets/skills/a11y-ally/SKILL.md +10 -1
  97. package/assets/skills/accessibility-testing/SKILL.md +2 -0
  98. package/assets/skills/agentic-quality-engineering/SKILL.md +1 -1
  99. package/assets/skills/api-testing-patterns/SKILL.md +8 -0
  100. package/assets/skills/api-testing-patterns/config.json +14 -0
  101. package/assets/skills/api-testing-patterns/templates/api-test-scaffold.md +87 -0
  102. package/assets/skills/bug-reporting-excellence/SKILL.md +14 -0
  103. package/assets/skills/code-review-quality/SKILL.md +14 -0
  104. package/assets/skills/compatibility-testing/SKILL.md +1 -54
  105. package/assets/skills/compliance-testing/SKILL.md +8 -0
  106. package/assets/skills/compliance-testing/config.json +13 -0
  107. package/assets/skills/consultancy-practices/SKILL.md +1 -32
  108. package/assets/skills/context-driven-testing/SKILL.md +0 -41
  109. package/assets/skills/contract-testing/SKILL.md +12 -0
  110. package/assets/skills/contract-testing/config.json +13 -0
  111. package/assets/skills/contract-testing/references/agent-commands.md +103 -0
  112. package/assets/skills/contract-testing/references/provider-states.md +45 -0
  113. package/assets/skills/coverage-drop-investigator/SKILL.md +90 -0
  114. package/assets/skills/coverage-guard/SKILL.md +82 -0
  115. package/assets/skills/coverage-guard/scripts/check-coverage.sh +42 -0
  116. package/assets/skills/database-testing/SKILL.md +0 -10
  117. package/assets/skills/debug-loop/SKILL.md +1 -1
  118. package/assets/skills/e2e-flow-verifier/SKILL.md +78 -0
  119. package/assets/skills/enterprise-integration-testing/SKILL.md +1 -1
  120. package/assets/skills/exploratory-testing-advanced/SKILL.md +8 -0
  121. package/assets/skills/exploratory-testing-advanced/references/heuristic-cheatsheet.md +48 -0
  122. package/assets/skills/freeze-tests/SKILL.md +67 -0
  123. package/assets/skills/freeze-tests/scripts/block-test-edits.sh +27 -0
  124. package/assets/skills/localization-testing/SKILL.md +0 -17
  125. package/assets/skills/mobile-testing/SKILL.md +2 -49
  126. package/assets/skills/mutation-testing/SKILL.md +26 -0
  127. package/assets/skills/mutation-testing/config.json +14 -0
  128. package/assets/skills/mutation-testing/references/mutation-operators.md +38 -0
  129. package/assets/skills/mutation-testing/run-history.json +6 -0
  130. package/assets/skills/no-skip/SKILL.md +74 -0
  131. package/assets/skills/no-skip/scripts/check-skips.sh +28 -0
  132. package/assets/skills/pair-programming/SKILL.md +1 -1
  133. package/assets/skills/pentest-validation/SKILL.md +2 -3
  134. package/assets/skills/performance-testing/SKILL.md +21 -0
  135. package/assets/skills/performance-testing/config.json +18 -0
  136. package/assets/skills/performance-testing/references/k6-patterns.md +72 -0
  137. package/assets/skills/performance-testing/run-history.json +6 -0
  138. package/assets/skills/pr-review/SKILL.md +3 -3
  139. package/assets/skills/qcsd-cicd-swarm/SKILL.md +1 -1
  140. package/assets/skills/qcsd-development-swarm/SKILL.md +1 -1
  141. package/assets/skills/qcsd-ideation-swarm/SKILL.md +1 -1
  142. package/assets/skills/qcsd-production-swarm/SKILL.md +1 -1
  143. package/assets/skills/qcsd-refinement-swarm/SKILL.md +1 -1
  144. package/assets/skills/qe-chaos-resilience/SKILL.md +2 -2
  145. package/assets/skills/qe-code-intelligence/SKILL.md +9 -1
  146. package/assets/skills/qe-coverage-analysis/SKILL.md +28 -1
  147. package/assets/skills/qe-coverage-analysis/run-history.json +6 -0
  148. package/assets/skills/qe-defect-intelligence/SKILL.md +1 -1
  149. package/assets/skills/qe-learning-optimization/SKILL.md +1 -1
  150. package/assets/skills/qe-quality-assessment/SKILL.md +29 -2
  151. package/assets/skills/qe-quality-assessment/run-history.json +6 -0
  152. package/assets/skills/qe-requirements-validation/SKILL.md +1 -1
  153. package/assets/skills/qe-test-execution/SKILL.md +9 -1
  154. package/assets/skills/qe-test-generation/SKILL.md +15 -1
  155. package/assets/skills/qe-test-generation/config.json +14 -0
  156. package/assets/skills/qe-test-generation/templates/test-scaffold-jest.md +72 -0
  157. package/assets/skills/qe-visual-accessibility/SKILL.md +1 -1
  158. package/assets/skills/quality-metrics/SKILL.md +3 -77
  159. package/assets/skills/regression-testing/SKILL.md +13 -48
  160. package/assets/skills/risk-based-testing/SKILL.md +6 -51
  161. package/assets/skills/security-testing/SKILL.md +30 -0
  162. package/assets/skills/security-testing/config.json +13 -0
  163. package/assets/skills/security-testing/references/compliance-agent-commands.md +131 -0
  164. package/assets/skills/security-testing/references/owasp-top-10.md +66 -0
  165. package/assets/skills/security-testing/run-history.json +6 -0
  166. package/assets/skills/security-testing/templates/security-report.md +44 -0
  167. package/assets/skills/security-watch/SKILL.md +93 -0
  168. package/assets/skills/security-watch/scripts/scan-security.sh +46 -0
  169. package/assets/skills/shift-left-testing/SKILL.md +16 -87
  170. package/assets/skills/skill-stats/SKILL.md +79 -0
  171. package/assets/skills/strict-tdd/SKILL.md +72 -0
  172. package/assets/skills/strict-tdd/scripts/enforce-red-phase.sh +36 -0
  173. package/assets/skills/tdd-london-chicago/SKILL.md +8 -0
  174. package/assets/skills/test-automation-strategy/SKILL.md +13 -64
  175. package/assets/skills/test-data-management/SKILL.md +1 -104
  176. package/assets/skills/test-design-techniques/SKILL.md +2 -151
  177. package/assets/skills/test-environment-management/SKILL.md +0 -47
  178. package/assets/skills/test-failure-investigator/SKILL.md +99 -0
  179. package/assets/skills/test-metrics-dashboard/SKILL.md +97 -0
  180. package/assets/skills/trust-tier-manifest.json +135 -61
  181. package/assets/skills/validation-pipeline/SKILL.md +1 -1
  182. package/assets/skills/verification-quality/SKILL.md +15 -1
  183. package/assets/skills/xp-practices/SKILL.md +2 -109
  184. package/dist/cli/bundle.js +110 -24
  185. package/dist/init/opencode-installer.js +2 -3
  186. package/dist/init/phases/07-hooks.js +3 -3
  187. package/dist/init/settings-merge.js +1 -2
  188. package/dist/init/skills-installer.d.ts +10 -0
  189. package/dist/init/skills-installer.js +68 -6
  190. package/dist/integrations/ruvector/sona-persistence.d.ts +6 -0
  191. package/dist/integrations/ruvector/sona-persistence.js +26 -1
  192. package/dist/mcp/bundle.js +29 -8
  193. package/dist/mcp/entry.js +6 -6
  194. package/dist/migration/agent-compat.js +2 -2
  195. package/package.json +2 -2
  196. package/.claude/skills/aqe-v2-v3-migration/schemas/output.json +0 -513
  197. package/.claude/skills/aqe-v2-v3-migration/skill.md +0 -325
  198. package/.claude/skills/qe-contract-testing/SKILL.md +0 -223
  199. package/.claude/skills/qe-contract-testing/evals/qe-contract-testing.yaml +0 -513
  200. package/.claude/skills/qe-contract-testing/schemas/output.json +0 -295
  201. package/.claude/skills/qe-contract-testing/scripts/validate-config.json +0 -42
  202. package/.claude/skills/qe-security-compliance/SKILL.md +0 -260
  203. package/.claude/skills/qe-security-compliance/evals/qe-security-compliance.yaml +0 -595
  204. package/.claude/skills/qe-security-compliance/schemas/output.json +0 -498
  205. package/.claude/skills/qe-security-compliance/scripts/validate-config.json +0 -41
  206. package/.opencode/skills/qe-contract-testing.yaml +0 -45
  207. package/.opencode/skills/qe-security-compliance.yaml +0 -45
  208. package/assets/skills/aqe-v2-v3-migration/schemas/output.json +0 -513
  209. package/assets/skills/aqe-v2-v3-migration/skill.md +0 -325
  210. package/assets/skills/qe-contract-testing/SKILL.md +0 -223
  211. package/assets/skills/qe-contract-testing/evals/qe-contract-testing.yaml +0 -513
  212. package/assets/skills/qe-contract-testing/schemas/output.json +0 -295
  213. package/assets/skills/qe-contract-testing/scripts/validate-config.json +0 -42
  214. package/assets/skills/qe-security-compliance/SKILL.md +0 -260
  215. package/assets/skills/qe-security-compliance/evals/qe-security-compliance.yaml +0 -595
  216. package/assets/skills/qe-security-compliance/schemas/output.json +0 -498
  217. package/assets/skills/qe-security-compliance/scripts/validate-config.json +0 -41
@@ -0,0 +1,103 @@
1
+ # Contract Testing — Agent CLI Commands & Advanced Patterns
2
+
3
+ Merged from `qe-contract-testing`. Use these when working with v3 agent-specific contract capabilities.
4
+
5
+ ## AQE CLI Commands
6
+
7
+ ```bash
8
+ # Generate contract from API spec
9
+ aqe contract generate --api openapi.yaml --output contracts/
10
+
11
+ # Verify provider against contracts
12
+ aqe contract verify --provider http://localhost:3000 --contracts contracts/
13
+
14
+ # Check breaking changes between versions
15
+ aqe contract breaking --old api-v1.yaml --new api-v2.yaml
16
+
17
+ # Test GraphQL schema
18
+ aqe contract graphql --schema schema.graphql --operations queries/
19
+ ```
20
+
21
+ ## Agent Workflow
22
+
23
+ ```typescript
24
+ // Contract generation
25
+ Task("Generate API contracts", `
26
+ Analyze the REST API and generate consumer contracts:
27
+ - Parse OpenAPI specification
28
+ - Identify critical endpoints
29
+ - Generate Pact contracts
30
+ - Include example requests/responses
31
+ Output to contracts/ directory.
32
+ `, "qe-api-contract")
33
+
34
+ // Breaking change detection
35
+ Task("Check API compatibility", `
36
+ Compare API v2.0 against v1.0:
37
+ - Detect removed endpoints
38
+ - Check parameter changes
39
+ - Verify response schema changes
40
+ - Identify deprecations
41
+ Report breaking vs non-breaking changes.
42
+ `, "qe-api-compatibility")
43
+ ```
44
+
45
+ ## GraphQL Contract Testing
46
+
47
+ ```typescript
48
+ await graphqlTester.testContracts({
49
+ schema: 'schema.graphql',
50
+ operations: 'queries/**/*.graphql',
51
+ validation: {
52
+ queryValidity: true,
53
+ responseShapes: true,
54
+ nullability: true,
55
+ deprecations: true
56
+ }
57
+ });
58
+ ```
59
+
60
+ ## Event Contract Testing
61
+
62
+ ```typescript
63
+ await contractTester.eventContracts({
64
+ schema: 'events/schemas/',
65
+ events: {
66
+ 'user.created': {
67
+ schema: 'UserCreatedEvent.json',
68
+ examples: ['examples/user-created.json']
69
+ },
70
+ 'order.completed': {
71
+ schema: 'OrderCompletedEvent.json',
72
+ examples: ['examples/order-completed.json']
73
+ }
74
+ },
75
+ compatibility: 'backward'
76
+ });
77
+ ```
78
+
79
+ ## Contract Report Interface
80
+
81
+ ```typescript
82
+ interface ContractReport {
83
+ summary: { contracts: number; passed: number; failed: number; warnings: number };
84
+ consumers: { name: string; contracts: ContractResult[]; compatibility: 'compatible' | 'breaking' | 'unknown' }[];
85
+ breakingChanges: { type: string; location: string; description: string; impact: 'high' | 'medium' | 'low'; migration: string }[];
86
+ deprecations: { item: string; deprecatedIn: string; removeIn: string; replacement: string }[];
87
+ }
88
+ ```
89
+
90
+ ## Pact Broker Integration
91
+
92
+ ```typescript
93
+ await contractTester.withBroker({
94
+ brokerUrl: 'https://pact-broker.example.com',
95
+ auth: { token: process.env.PACT_TOKEN },
96
+ operations: { publish: true, canIDeploy: true, webhooks: true }
97
+ });
98
+ ```
99
+
100
+ ## Coordination
101
+
102
+ **Primary Agents**: qe-api-contract, qe-api-compatibility, qe-graphql-tester
103
+ **Coordinator**: qe-contract-coordinator
@@ -0,0 +1,45 @@
1
+ # Provider States Reference
2
+
3
+ Provider states define the preconditions that must exist on the provider for a contract interaction to succeed.
4
+
5
+ ## Pattern: State Setup
6
+ ```javascript
7
+ // provider-states.js
8
+ const states = {
9
+ 'a user exists': async () => {
10
+ await db.users.create({ id: 1, name: 'Test User', email: 'test@example.com' });
11
+ },
12
+ 'no users exist': async () => {
13
+ await db.users.deleteAll();
14
+ },
15
+ 'user 1 has 3 orders': async () => {
16
+ await db.users.create({ id: 1, name: 'Test User' });
17
+ await db.orders.bulkCreate([
18
+ { userId: 1, status: 'shipped' },
19
+ { userId: 1, status: 'pending' },
20
+ { userId: 1, status: 'delivered' }
21
+ ]);
22
+ }
23
+ };
24
+ ```
25
+
26
+ ## Common Mistakes
27
+ 1. **State not cleaned up** — use transactions or truncate after each test
28
+ 2. **Hardcoded IDs** — use factories or fixtures that generate consistent IDs
29
+ 3. **Missing state** — provider test passes without state setup (no data = no error)
30
+ 4. **Overly specific states** — "user John with email john@..." couples to consumer
31
+
32
+ ## Pact Broker Webhook Setup
33
+ ```bash
34
+ # Verify provider when consumer publishes new contract
35
+ curl -X POST ${PACT_BROKER_URL}/webhooks \
36
+ -H "Content-Type: application/json" \
37
+ -d '{
38
+ "events": [{ "name": "contract_content_changed" }],
39
+ "request": {
40
+ "method": "POST",
41
+ "url": "${CI_TRIGGER_URL}",
42
+ "body": { "pact_url": "${pactbroker.pactUrl}" }
43
+ }
44
+ }'
45
+ ```
@@ -0,0 +1,90 @@
1
+ ---
2
+ name: coverage-drop-investigator
3
+ description: "Use when test coverage has dropped and you need to find which changes caused it and what tests to add. Traces coverage regressions to specific commits and files."
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Coverage Drop Investigator
8
+
9
+ Runbook-style skill for investigating coverage regressions. Identifies which changes caused coverage to drop and recommends targeted tests.
10
+
11
+ ## Activation
12
+
13
+ ```
14
+ /coverage-drop-investigator
15
+ ```
16
+
17
+ ## Investigation Flow
18
+
19
+ ### Step 1: Measure Current Coverage
20
+
21
+ ```bash
22
+ # Generate coverage report
23
+ npx jest --coverage --coverageReporters=json-summary
24
+
25
+ # View summary
26
+ cat coverage/coverage-summary.json | jq '.total'
27
+ ```
28
+
29
+ ### Step 2: Find When Coverage Dropped
30
+
31
+ ```bash
32
+ # Compare coverage with main branch
33
+ git stash && npx jest --coverage --coverageReporters=json-summary
34
+ mv coverage/coverage-summary.json coverage/baseline.json
35
+ git stash pop && npx jest --coverage --coverageReporters=json-summary
36
+
37
+ # Compare
38
+ jq -s '.[0].total.statements.pct as $baseline | .[1].total.statements.pct as $current | {baseline: $baseline, current: $current, delta: ($current - $baseline)}' coverage/baseline.json coverage/coverage-summary.json
39
+ ```
40
+
41
+ ### Step 3: Identify Uncovered Files
42
+
43
+ ```bash
44
+ # Find files with lowest coverage
45
+ cat coverage/coverage-summary.json | jq 'to_entries | map(select(.key != "total")) | sort_by(.value.statements.pct) | .[0:10] | .[] | {file: .key, statements: .value.statements.pct, branches: .value.branches.pct}'
46
+ ```
47
+
48
+ ### Step 4: Map to Recent Changes
49
+
50
+ ```bash
51
+ # Find recently changed files with low coverage
52
+ git diff --name-only main...HEAD | while read file; do
53
+ jq --arg f "$file" '.[$f] // empty | {file: $f, statements: .statements.pct}' coverage/coverage-summary.json
54
+ done
55
+ ```
56
+
57
+ ### Step 5: Recommend Tests
58
+
59
+ For each uncovered file, identify:
60
+ 1. **Uncovered functions** — need new test cases
61
+ 2. **Uncovered branches** — need conditional test cases (if/else paths)
62
+ 3. **Uncovered lines** — may indicate dead code or missing edge cases
63
+
64
+ ### Step 6: Report
65
+
66
+ ```markdown
67
+ ## Coverage Drop Report
68
+ - **Current**: {{current_pct}}%
69
+ - **Baseline (main)**: {{baseline_pct}}%
70
+ - **Delta**: {{delta}}%
71
+ - **Files causing drop**:
72
+ | File | Coverage | Changed Lines | Tests Needed |
73
+ |------|----------|--------------|-------------|
74
+ | {{file}} | {{pct}}% | {{lines}} | {{count}} |
75
+ - **Recommended action**: {{write_tests / accept_drop / mark_as_excluded}}
76
+ ```
77
+
78
+ ## Composition
79
+
80
+ After investigation:
81
+ - **`/qe-test-generation`** — generate tests for uncovered files
82
+ - **`/mutation-testing`** — verify existing tests actually catch bugs
83
+ - **`/coverage-guard`** — prevent future drops
84
+
85
+ ## Gotchas
86
+
87
+ - Coverage can drop because NEW code was added without tests, not because tests were removed
88
+ - 100% coverage is not always the goal — focus on critical paths, not getters/setters
89
+ - Branch coverage drops are more concerning than line coverage drops — branches indicate logic paths
90
+ - Coverage tools may count generated code or type definitions — exclude with coveragePathIgnorePatterns
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: coverage-guard
3
+ description: "Use when you want to prevent coverage regressions during development. Activate with /coverage-guard to warn when coverage drops below threshold after code changes."
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Coverage Guard Mode
8
+
9
+ When activated, checks coverage after test runs and warns if it drops below the configured threshold.
10
+
11
+ ## What It Does
12
+
13
+ After any test execution (via Bash tool), compares coverage to the threshold in config.json. Warns (doesn't block) if coverage decreased.
14
+
15
+ ## Activation
16
+
17
+ ```
18
+ /coverage-guard
19
+ ```
20
+
21
+ ## Configuration
22
+
23
+ Edit `config.json` in this skill directory to set thresholds:
24
+
25
+ ```json
26
+ {
27
+ "thresholds": {
28
+ "statements": 80,
29
+ "branches": 70,
30
+ "functions": 75,
31
+ "lines": 80
32
+ },
33
+ "coverageCommand": "npx jest --coverage --coverageReporters=json-summary",
34
+ "coverageFile": "coverage/coverage-summary.json"
35
+ }
36
+ ```
37
+
38
+ ## Hook Configuration
39
+
40
+ ```json
41
+ {
42
+ "hooks": {
43
+ "PostToolUse": [
44
+ {
45
+ "matcher": "Bash",
46
+ "hook": ".claude/skills/coverage-guard/scripts/check-coverage.sh",
47
+ "condition": "command contains 'jest' OR command contains 'vitest' OR command contains 'npm test'"
48
+ }
49
+ ]
50
+ }
51
+ }
52
+ ```
53
+
54
+ ## Enforcement Logic
55
+
56
+ ```bash
57
+ #!/bin/bash
58
+ # check-coverage.sh
59
+ COVERAGE_FILE="coverage/coverage-summary.json"
60
+ THRESHOLD=80
61
+
62
+ if [ -f "$COVERAGE_FILE" ]; then
63
+ STATEMENTS=$(jq '.total.statements.pct' "$COVERAGE_FILE")
64
+ BRANCHES=$(jq '.total.branches.pct' "$COVERAGE_FILE")
65
+
66
+ if (( $(echo "$STATEMENTS < $THRESHOLD" | bc -l) )); then
67
+ echo "WARNING: Statement coverage ($STATEMENTS%) below threshold ($THRESHOLD%)"
68
+ echo "Coverage dropped — check which files lost coverage."
69
+ fi
70
+
71
+ if (( $(echo "$BRANCHES < 70" | bc -l) )); then
72
+ echo "WARNING: Branch coverage ($BRANCHES%) below 70%"
73
+ fi
74
+ fi
75
+ ```
76
+
77
+ ## Gotchas
78
+
79
+ - Coverage check runs AFTER the test command — if tests crash, no coverage report is generated
80
+ - Coverage-summary.json must be configured as a reporter — default Jest config may not include it
81
+ - Threshold comparisons use floating point — `79.999%` will trigger below `80%` threshold
82
+ - Branch coverage is typically 10-15% lower than line coverage — set thresholds accordingly
@@ -0,0 +1,42 @@
1
+ #!/bin/bash
2
+ # check-coverage.sh — Coverage Guard hook
3
+ # Checks coverage after test runs and warns if below threshold.
4
+ # Called by PostToolUse hook on Bash commands containing jest/vitest/npm test
5
+
6
+ COVERAGE_FILE="coverage/coverage-summary.json"
7
+ THRESHOLD=${COVERAGE_THRESHOLD:-80}
8
+ BRANCH_THRESHOLD=${BRANCH_COVERAGE_THRESHOLD:-70}
9
+
10
+ if [ ! -f "$COVERAGE_FILE" ]; then
11
+ # No coverage report generated — skip silently
12
+ exit 0
13
+ fi
14
+
15
+ # Extract coverage percentages
16
+ STATEMENTS=$(node -e "console.log(require('./$COVERAGE_FILE').total.statements.pct)" 2>/dev/null)
17
+ BRANCHES=$(node -e "console.log(require('./$COVERAGE_FILE').total.branches.pct)" 2>/dev/null)
18
+ FUNCTIONS=$(node -e "console.log(require('./$COVERAGE_FILE').total.functions.pct)" 2>/dev/null)
19
+
20
+ if [ -z "$STATEMENTS" ]; then
21
+ exit 0
22
+ fi
23
+
24
+ EXIT_CODE=0
25
+
26
+ # Check statement coverage
27
+ if [ "$(echo "$STATEMENTS < $THRESHOLD" | bc -l 2>/dev/null)" = "1" ]; then
28
+ echo "WARNING: Statement coverage (${STATEMENTS}%) below threshold (${THRESHOLD}%)"
29
+ EXIT_CODE=1
30
+ fi
31
+
32
+ # Check branch coverage
33
+ if [ -n "$BRANCHES" ] && [ "$(echo "$BRANCHES < $BRANCH_THRESHOLD" | bc -l 2>/dev/null)" = "1" ]; then
34
+ echo "WARNING: Branch coverage (${BRANCHES}%) below threshold (${BRANCH_THRESHOLD}%)"
35
+ EXIT_CODE=1
36
+ fi
37
+
38
+ if [ $EXIT_CODE -eq 0 ]; then
39
+ echo "Coverage OK: statements=${STATEMENTS}%, branches=${BRANCHES}%, functions=${FUNCTIONS}%"
40
+ fi
41
+
42
+ exit $EXIT_CODE
@@ -58,14 +58,6 @@ When testing database operations:
58
58
  | **Transaction** | ACID properties | Concurrent access |
59
59
  | **Performance** | Query speed | Optimization |
60
60
 
61
- ### ACID Properties
62
- | Property | Test Focus |
63
- |----------|------------|
64
- | **Atomicity** | All or nothing (rollback on error) |
65
- | **Consistency** | Constraints always valid |
66
- | **Isolation** | Concurrent transactions don't interfere |
67
- | **Durability** | Committed data persists |
68
-
69
61
  ---
70
62
 
71
63
  ## Schema Testing
@@ -242,8 +234,6 @@ const dbFleet = await FleetManager.coordinate({
242
234
 
243
235
  ## Remember
244
236
 
245
- **Database bugs are catastrophic.** Data loss is unrecoverable. Corruption spreads silently. Performance issues compound.
246
-
247
237
  **Test migrations before production:** Forward works, rollback works, data preserved, performance acceptable. Never deploy untested migrations.
248
238
 
249
239
  **With Agents:** `qe-test-data-architect` generates realistic test data with referential integrity. `qe-test-executor` validates migrations automatically in CI/CD.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: debug-loop
3
- description: Hypothesis-driven autonomous debugging with real command validation
3
+ description: "Use when debugging a failing test or runtime error with hypothesis-driven investigation, autonomous command validation, and systematic root cause elimination."
4
4
  trust_tier: 0
5
5
  domain: debugging
6
6
  ---
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: e2e-flow-verifier
3
+ description: "Use when verifying complete user flows end-to-end with Playwright, recording video evidence, and asserting state at each step. For product verification with real browser automation."
4
+ user-invocable: true
5
+ ---
6
+
7
+ # E2E Flow Verifier
8
+
9
+ Product verification skill that drives user flows with Playwright, asserts state at each step, and records video evidence.
10
+
11
+ ## Activation
12
+
13
+ ```
14
+ /e2e-flow-verifier [flow-name]
15
+ ```
16
+
17
+ ## Flow Verification Pattern
18
+
19
+ ```typescript
20
+ import { test, expect } from '@playwright/test';
21
+
22
+ test.describe('{{Flow Name}}', () => {
23
+ // Record video for evidence
24
+ test.use({
25
+ video: 'on',
26
+ screenshot: 'on',
27
+ trace: 'on',
28
+ });
29
+
30
+ test('complete user journey', async ({ page }) => {
31
+ // Step 1: Navigate
32
+ await page.goto('{{base_url}}');
33
+ await expect(page).toHaveTitle(/{{expected_title}}/);
34
+
35
+ // Step 2: Authenticate (if needed)
36
+ await page.fill('[data-testid="email"]', '{{test_user}}');
37
+ await page.fill('[data-testid="password"]', '{{test_password}}');
38
+ await page.click('[data-testid="login-btn"]');
39
+ await expect(page.locator('[data-testid="dashboard"]')).toBeVisible();
40
+
41
+ // Step 3: Perform action
42
+ await page.click('[data-testid="{{action_element}}"]');
43
+ await expect(page.locator('[data-testid="{{result_element}}"]')).toContainText('{{expected_text}}');
44
+
45
+ // Step 4: Verify state change
46
+ // Assert both UI state AND backend state
47
+ const apiResponse = await page.request.get('/api/{{resource}}');
48
+ expect(apiResponse.status()).toBe(200);
49
+ const data = await apiResponse.json();
50
+ expect(data.{{field}}).toBe('{{expected_value}}');
51
+ });
52
+ });
53
+ ```
54
+
55
+ ## Evidence Collection
56
+
57
+ After each flow verification:
58
+ 1. **Video** — `test-results/{{flow-name}}/video.webm`
59
+ 2. **Screenshots** — at each assertion point
60
+ 3. **Trace** — `test-results/{{flow-name}}/trace.zip` (open with `npx playwright show-trace`)
61
+ 4. **Network log** — HAR file with all API calls
62
+
63
+ ## Common Flows to Verify
64
+
65
+ | Flow | Steps | Critical Assertions |
66
+ |------|-------|-------------------|
67
+ | Sign-up | Register → Verify email → Login | Account created, session valid |
68
+ | Purchase | Browse → Add to cart → Checkout → Pay | Order created, payment processed |
69
+ | Profile | Login → Edit profile → Save | Changes persisted, shown on reload |
70
+ | Search | Enter query → Filter → Select result | Results relevant, filters work |
71
+
72
+ ## Gotchas
73
+
74
+ - Agent writes Playwright tests but doesn't run them — always execute and check video evidence
75
+ - Selectors break on deployment — use `data-testid` attributes, never CSS classes
76
+ - Tests pass locally but fail in CI — headless browser behavior differs, use `--headed` for debugging
77
+ - Auth tokens in E2E tests expire — use fresh login per test, not shared tokens
78
+ - Video evidence is large — clean up after verification, keep only failure videos
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: enterprise-integration-testing
3
- description: "Orchestration skill for enterprise integration testing across SAP, middleware, WMS, and backend systems. Covers E2E enterprise flows, SAP-specific patterns (RFC, BAPI, IDoc, OData, Fiori), cross-system data validation, and enterprise quality gates."
3
+ description: "Use when testing enterprise integrations across SAP, middleware, WMS, or backend systems, validating E2E enterprise flows, testing SAP-specific patterns (RFC, BAPI, IDoc, OData, Fiori), or enforcing cross-system quality gates."
4
4
  category: enterprise-integration
5
5
  priority: high
6
6
  tokenEstimate: 2000
@@ -201,3 +201,11 @@ const exploratoryFleet = await FleetManager.coordinate({
201
201
  Not random clicking. Structured, skilled investigation guided by heuristics and oracles. Document discoveries in real-time. Pair testing amplifies findings.
202
202
 
203
203
  **With Agents:** Agents generate variations, recognize patterns, and maintain session notes while humans apply judgment and intuition. Combine agent thoroughness with human insight.
204
+
205
+ ## Gotchas
206
+
207
+ - Agent treats exploratory testing as scripted test execution — remind it: exploration means learning + adapting in real-time
208
+ - Session notes from agents lack the "why I tried this" reasoning — explicitly ask for decision rationale
209
+ - 90-minute sessions cause context overflow — cap at 45 minutes with explicit debrief
210
+ - Agent defaults to happy-path exploration — explicitly assign "Bad Neighborhood" or "Saboteur" tours for negative testing
211
+ - SFDIPOT heuristics are misapplied when agent doesn't understand the domain — provide domain context upfront
@@ -0,0 +1,48 @@
1
+ # Exploratory Testing Heuristic Cheat Sheet
2
+
3
+ ## SFDIPOT (What to Test)
4
+ | Factor | Questions to Ask |
5
+ |--------|-----------------|
6
+ | **Structure** | What is it made of? What are the components? |
7
+ | **Function** | What does it do? What are all the features? |
8
+ | **Data** | What data does it process? Boundary values? |
9
+ | **Interfaces** | How does it connect to other things? APIs? UI? |
10
+ | **Platform** | What does it depend on? OS? Browser? Network? |
11
+ | **Operations** | How will it be used? By whom? How often? |
12
+ | **Time** | What changes over time? Timeouts? Scheduling? |
13
+
14
+ ## FEW HICCUPPS (How to Recognize Problems)
15
+ | Oracle | What to Compare Against |
16
+ |--------|----------------------|
17
+ | **Familiar** | Does it work like similar products I know? |
18
+ | **Explainable** | Can I explain what it does to someone? |
19
+ | **World** | Does it match how the real world works? |
20
+ | **History** | Is it consistent with previous versions? |
21
+ | **Image** | Does it match the organization's brand/values? |
22
+ | **Comparable** | How does it compare to competitors? |
23
+ | **Claims** | Does it match specs, docs, marketing? |
24
+ | **Users** | Does it serve the actual users' needs? |
25
+ | **Product** | Is it internally consistent? |
26
+ | **Purpose** | Does it fulfill its reason for existing? |
27
+ | **Standards** | Does it meet relevant standards (WCAG, RFC)? |
28
+
29
+ ## Test Tours (How to Explore)
30
+ | Tour | Strategy |
31
+ |------|----------|
32
+ | **Guidebook** | Follow the documentation exactly |
33
+ | **Money** | Test the revenue-critical features |
34
+ | **Landmark** | Navigate between major features |
35
+ | **Bad Neighborhood** | Focus on historically buggy areas |
36
+ | **Intellectual** | Test the most complex features |
37
+ | **FedEx** | Follow data through the system |
38
+ | **Garbage Collector** | Navigate to least-used features |
39
+ | **Saboteur** | Try to break things intentionally |
40
+
41
+ ## Session Charter Template
42
+ ```
43
+ CHARTER: Explore [target area]
44
+ WITH: [resources/tools/heuristics]
45
+ TO DISCOVER: [what we're looking for]
46
+ TIME BOX: [45/60/90 minutes]
47
+ PRIORITY: [P0/P1/P2]
48
+ ```
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: freeze-tests
3
+ description: "Use when refactoring production code and you want to ensure test files are not modified. Activate with /freeze-tests to block all edits to test files for safe refactoring."
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Freeze Tests Mode
8
+
9
+ When activated, blocks all modifications to test files. Use during refactoring to ensure behavior (as captured by tests) is preserved.
10
+
11
+ ## What It Does
12
+
13
+ Blocks Write and Edit operations on any file matching test patterns:
14
+ - `**/*.test.{ts,js,tsx,jsx}`
15
+ - `**/*.spec.{ts,js,tsx,jsx}`
16
+ - `**/__tests__/**`
17
+ - `**/tests/**`
18
+
19
+ ## Activation
20
+
21
+ ```
22
+ /freeze-tests
23
+ ```
24
+
25
+ Deactivate with `/freeze-tests off`.
26
+
27
+ ## Hook Configuration
28
+
29
+ ```json
30
+ {
31
+ "hooks": {
32
+ "PreToolUse": [
33
+ {
34
+ "matcher": "Write|Edit",
35
+ "hook": ".claude/skills/freeze-tests/scripts/block-test-edits.sh",
36
+ "condition": "file matches **/*.test.* OR **/*.spec.* OR **/__tests__/** OR **/tests/**"
37
+ }
38
+ ]
39
+ }
40
+ }
41
+ ```
42
+
43
+ ## Enforcement Logic
44
+
45
+ ```bash
46
+ #!/bin/bash
47
+ # block-test-edits.sh
48
+ FILE="$1"
49
+
50
+ if echo "$FILE" | grep -qP '\.(test|spec)\.(ts|js|tsx|jsx)$|__tests__|/tests/'; then
51
+ echo "BLOCKED: Test files are frozen during refactoring."
52
+ echo "If tests need updating, deactivate with: /freeze-tests off"
53
+ exit 1
54
+ fi
55
+ ```
56
+
57
+ ## When to Use
58
+
59
+ 1. **Refactoring**: Changing code structure without changing behavior
60
+ 2. **Performance optimization**: Making code faster without changing logic
61
+ 3. **Dependency updates**: Upgrading libraries while preserving behavior
62
+
63
+ ## Gotchas
64
+
65
+ - Frozen tests can't be fixed if they break during refactoring — that's the point (the refactoring broke behavior)
66
+ - If a refactoring requires test changes, it's not a pure refactoring — deactivate and treat as a feature change
67
+ - This doesn't prevent running tests — only modifying test files
@@ -0,0 +1,27 @@
1
+ #!/bin/bash
2
+ # block-test-edits.sh — Freeze Tests hook
3
+ # Blocks all modifications to test files during refactoring.
4
+ # Called by PreToolUse hook on Write/Edit targeting test files.
5
+
6
+ FILE="$1"
7
+
8
+ if [ -z "$FILE" ]; then
9
+ exit 0
10
+ fi
11
+
12
+ # Check if file matches test patterns
13
+ if echo "$FILE" | grep -qP '\.(test|spec)\.(ts|js|tsx|jsx)$' 2>/dev/null; then
14
+ echo "BLOCKED: Test files are frozen during refactoring."
15
+ echo "File: $FILE"
16
+ echo "Deactivate with: /freeze-tests off"
17
+ exit 1
18
+ fi
19
+
20
+ if echo "$FILE" | grep -qP '__tests__/|/tests/' 2>/dev/null; then
21
+ echo "BLOCKED: Test directories are frozen during refactoring."
22
+ echo "File: $FILE"
23
+ echo "Deactivate with: /freeze-tests off"
24
+ exit 1
25
+ fi
26
+
27
+ exit 0
@@ -49,19 +49,6 @@ When testing multi-language/region support:
49
49
  - Before international releases
50
50
  - After UI changes
51
51
 
52
- ### i18n vs l10n
53
- | Term | Full Name | Focus |
54
- |------|-----------|-------|
55
- | **i18n** | Internationalization | Building for localization |
56
- | **l10n** | Localization | Adapting for specific locale |
57
-
58
- ### Common Locale Formats
59
- | Type | US (en-US) | UK (en-GB) | Japan (ja-JP) |
60
- |------|------------|------------|---------------|
61
- | **Date** | 10/24/2025 | 24/10/2025 | 2025/10/24 |
62
- | **Currency** | $1,234.56 | £1,234.56 | ¥1,235 |
63
- | **Number** | 1,234.56 | 1,234.56 | 1,234.56 |
64
-
65
52
  ---
66
53
 
67
54
  ## Translation Coverage Testing
@@ -219,8 +206,4 @@ const l10nFleet = await FleetManager.coordinate({
219
206
 
220
207
  ## Remember
221
208
 
222
- **Don't hardcode. Externalize all user-facing strings.** Every string visible to users must come from translation files, not code.
223
-
224
- **Test with native speakers, not just translation files.** Machine translations and translation files can have context issues that only native speakers catch.
225
-
226
209
  **With Agents:** Agents validate translation coverage, detect hardcoded strings, test locale-specific formatting, and verify RTL layouts automatically across all supported languages.