@dzhechkov/keysarium 1.7.18 → 1.7.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dz-manifest.json +172 -32
- package/README.md +3 -3
- package/package.json +1 -1
- package/sbom.json +391 -41
- package/src/commands/init.js +10 -0
- package/src/commands/update.js +30 -3
- package/src/utils.js +6 -0
- package/templates/.claude/agents/code-goal-planner.md +441 -3
- package/templates/.claude/skills/feature-adr/SKILL.md +9 -7
- package/templates/.claude/skills/feature-adr/modules/06-implementation-plan.md +1 -1
- package/templates/.claude/skills/feature-adr/modules/09-fleet-qe.md +1 -1
- package/templates/.claude/skills/feature-adr/references/agentic-qe/README.md +11 -9
- package/templates/.claude/skills/feature-adr/references/agentic-qe/UPSTREAM-MANIFEST.json +290 -70
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{chaos-engineering-resilience.md → qe-ref-chaos-engineering-resilience/REFERENCE.md} +13 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-chaos-engineering-resilience/schemas/output.json +1205 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-chaos-engineering-resilience/scripts/validate-config.json +47 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{mutation-testing.md → qe-ref-mutation-testing/REFERENCE.md} +39 -1
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/config.json +14 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/evals/mutation-testing.yaml +651 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/references/mutation-operators.md +38 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/schemas/output.json +707 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/scripts/validate-config.json +44 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-mutation-testing/test-data/sample-output.json +295 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{performance-testing.md → qe-ref-performance-testing/REFERENCE.md} +35 -1
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/config.json +18 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/evals/performance-testing.yaml +771 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/references/k6-patterns.md +72 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/schemas/output.json +1184 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-performance-testing/scripts/validate-config.json +55 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/REFERENCE.md +222 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/schemas/output.json +505 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/scripts/validate-config.json +25 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/01-flag-detection.md +202 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/02-core-agents.md +428 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/03-batch1-results.md +101 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/04-conditional-agents.md +125 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/05-decision-synthesis.md +136 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/06-report-generation.md +181 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/07-learning-persistence.md +157 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/08-feedback-loop.md +122 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-production-swarm/steps/09-final-output.md +140 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{security-testing.md → qe-ref-security-testing/REFERENCE.md} +44 -1
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/config.json +13 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/evals/security-testing.yaml +789 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/references/compliance-agent-commands.md +131 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/references/owasp-top-10.md +66 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/schemas/output.json +879 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/scripts/validate-config.json +45 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-security-testing/templates/security-report.md +44 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{tdd-london-chicago.md → qe-ref-tdd-london-chicago/REFERENCE.md} +21 -1
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-tdd-london-chicago/schemas/output.json +444 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-tdd-london-chicago/scripts/validate-config.json +43 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qcsd-production-swarm.md +0 -108
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skillName": "security-testing",
|
|
3
|
+
"skillVersion": "1.0.0",
|
|
4
|
+
"requiredTools": [
|
|
5
|
+
"jq"
|
|
6
|
+
],
|
|
7
|
+
"optionalTools": [
|
|
8
|
+
"npm",
|
|
9
|
+
"semgrep",
|
|
10
|
+
"trivy",
|
|
11
|
+
"ajv",
|
|
12
|
+
"jsonschema",
|
|
13
|
+
"python3"
|
|
14
|
+
],
|
|
15
|
+
"schemaPath": "schemas/output.json",
|
|
16
|
+
"requiredFields": [
|
|
17
|
+
"skillName",
|
|
18
|
+
"status",
|
|
19
|
+
"output",
|
|
20
|
+
"output.summary",
|
|
21
|
+
"output.findings",
|
|
22
|
+
"output.owaspCategories"
|
|
23
|
+
],
|
|
24
|
+
"requiredNonEmptyFields": [
|
|
25
|
+
"output.summary"
|
|
26
|
+
],
|
|
27
|
+
"mustContainTerms": [
|
|
28
|
+
"OWASP",
|
|
29
|
+
"security",
|
|
30
|
+
"vulnerability"
|
|
31
|
+
],
|
|
32
|
+
"mustNotContainTerms": [
|
|
33
|
+
"TODO",
|
|
34
|
+
"placeholder",
|
|
35
|
+
"FIXME"
|
|
36
|
+
],
|
|
37
|
+
"enumValidations": {
|
|
38
|
+
".status": [
|
|
39
|
+
"success",
|
|
40
|
+
"partial",
|
|
41
|
+
"failed",
|
|
42
|
+
"skipped"
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Security Assessment Report
|
|
2
|
+
|
|
3
|
+
**Project**: {{project_name}}
|
|
4
|
+
**Date**: {{date}}
|
|
5
|
+
**Assessed by**: {{assessor}}
|
|
6
|
+
**Scope**: {{scope_description}}
|
|
7
|
+
|
|
8
|
+
## Executive Summary
|
|
9
|
+
|
|
10
|
+
| Severity | Count | Fixed | Remaining |
|
|
11
|
+
|----------|-------|-------|-----------|
|
|
12
|
+
| Critical | | | |
|
|
13
|
+
| High | | | |
|
|
14
|
+
| Medium | | | |
|
|
15
|
+
| Low | | | |
|
|
16
|
+
| Info | | | |
|
|
17
|
+
|
|
18
|
+
**Overall Risk Level**: {{risk_level}}
|
|
19
|
+
**Recommendation**: {{ship/hold/remediate}}
|
|
20
|
+
|
|
21
|
+
## Findings
|
|
22
|
+
|
|
23
|
+
### Finding 1: {{title}}
|
|
24
|
+
- **Severity**: {{critical/high/medium/low}}
|
|
25
|
+
- **OWASP Category**: {{A01-A10}}
|
|
26
|
+
- **Location**: {{file:line or endpoint}}
|
|
27
|
+
- **Description**: {{what was found}}
|
|
28
|
+
- **Impact**: {{what an attacker could do}}
|
|
29
|
+
- **Reproduction**:
|
|
30
|
+
1. {{step 1}}
|
|
31
|
+
2. {{step 2}}
|
|
32
|
+
- **Remediation**: {{how to fix}}
|
|
33
|
+
- **Status**: {{open/fixed/accepted}}
|
|
34
|
+
|
|
35
|
+
## Tools Used
|
|
36
|
+
- [ ] npm audit
|
|
37
|
+
- [ ] Semgrep SAST
|
|
38
|
+
- [ ] OWASP ZAP DAST
|
|
39
|
+
- [ ] Manual review
|
|
40
|
+
- [ ] Secrets scanning
|
|
41
|
+
|
|
42
|
+
## Sign-off
|
|
43
|
+
- [ ] All critical/high findings addressed or accepted with risk justification
|
|
44
|
+
- [ ] Remediation verified with re-test
|
|
@@ -15,9 +15,20 @@ trust_tier: 2
|
|
|
15
15
|
validation:
|
|
16
16
|
schema_path: schemas/output.json
|
|
17
17
|
validator_path: scripts/validate-config.json
|
|
18
|
-
|
|
19
18
|
---
|
|
20
19
|
|
|
20
|
+
<!-- Vendored from https://github.com/proffesor-for-testing/agentic-qe at 0a6de058575cbe292afe220df105cc74120f7674 (MIT, Copyright (c) 2025 Agentic QE Contributors), 2026-10-24. Bundled references do not install aqe, MCP tools, pattern memory, or fleet runtime. See ../LICENSE.agentic-qe and ../README.md. -->
|
|
21
|
+
|
|
22
|
+
## Keysarium execution adapter
|
|
23
|
+
|
|
24
|
+
This pinned upstream body is methodology inside the bundled feature-ADR pipeline. In Reference Mode, the feature-ADR module that loaded this file owns orchestration and checkpoints. Use the reasoning and output shape below with the host's available tools. Do not treat upstream `aqe` CLI/MCP calls, named agent roles, browser tools, or example absolute paths as installed capabilities. Name a missing capability or evidence in the checkpoint instead of reporting that an upstream step ran. The schemas and eval files are bundled for explicit validation; bundling them does not run those checks automatically.
|
|
25
|
+
|
|
26
|
+
Relative paths such as `schemas/output.json`, `evals/...` and `steps/...` resolve from this skill directory under `references/agentic-qe/`. Direct Extended Mode still requires a separately installed `aqe` runtime; verify each required runtime capability before using it.
|
|
27
|
+
|
|
28
|
+
The upstream `run-history.json` is execution history, not a reference contract, and is intentionally omitted. Do not run an upstream example that reads or writes it unless an installed aqe runtime supplies its own history.
|
|
29
|
+
|
|
30
|
+
<!-- BEGIN AGENTIC-QE UPSTREAM BODY -->
|
|
31
|
+
|
|
21
32
|
# Test-Driven Development: London & Chicago Schools
|
|
22
33
|
|
|
23
34
|
<default_to_action>
|
|
@@ -247,3 +258,12 @@ const tddFleet = await FleetManager.coordinate({
|
|
|
247
258
|
Neither is "right." Choose based on context. Mix as needed. Goal: well-designed, tested code.
|
|
248
259
|
|
|
249
260
|
**With Agents:** Agents excel at generating tests, validating green phase, and suggesting refactorings. Use agents to maintain TDD discipline while humans focus on design decisions.
|
|
261
|
+
|
|
262
|
+
## Gotchas
|
|
263
|
+
|
|
264
|
+
- Agent skips Red phase and writes test + implementation together — enforce "test must fail first" by running test before writing code
|
|
265
|
+
- London school over-mocking creates brittle tests that break on any refactor — mock at architectural boundaries, not every function
|
|
266
|
+
- Chicago school tests become slow as integration scope grows — keep test boundaries tight
|
|
267
|
+
- Agent defaults to jest.mock() for everything — prefer dependency injection for testability
|
|
268
|
+
- Refactor phase is where agent cuts corners most — verify no behavior changes by checking test output is identical
|
|
269
|
+
<!-- END AGENTIC-QE UPSTREAM BODY -->
|
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://agentic-qe.dev/schemas/tdd-london-chicago-output.json",
|
|
4
|
+
"title": "TDD London & Chicago Schools Skill Output Schema",
|
|
5
|
+
"description": "Schema for TDD skill output with red-green-refactor cycles, test-first metrics, and approach comparison.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["skillName", "version", "timestamp", "status", "trustTier", "output"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"skillName": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"const": "tdd-london-chicago",
|
|
12
|
+
"description": "Must be 'tdd-london-chicago'"
|
|
13
|
+
},
|
|
14
|
+
"version": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9]+)?$"
|
|
17
|
+
},
|
|
18
|
+
"timestamp": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"format": "date-time"
|
|
21
|
+
},
|
|
22
|
+
"status": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"enum": ["success", "partial", "failed", "skipped"]
|
|
25
|
+
},
|
|
26
|
+
"trustTier": {
|
|
27
|
+
"type": "integer",
|
|
28
|
+
"minimum": 0,
|
|
29
|
+
"maximum": 3
|
|
30
|
+
},
|
|
31
|
+
"output": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"required": ["summary", "tddCycles", "approach"],
|
|
34
|
+
"properties": {
|
|
35
|
+
"summary": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"minLength": 50,
|
|
38
|
+
"maxLength": 2000
|
|
39
|
+
},
|
|
40
|
+
"tddCycles": {
|
|
41
|
+
"$ref": "#/$defs/tddCycles"
|
|
42
|
+
},
|
|
43
|
+
"approach": {
|
|
44
|
+
"$ref": "#/$defs/tddApproach"
|
|
45
|
+
},
|
|
46
|
+
"testMetrics": {
|
|
47
|
+
"$ref": "#/$defs/testMetrics"
|
|
48
|
+
},
|
|
49
|
+
"codeQuality": {
|
|
50
|
+
"$ref": "#/$defs/codeQuality"
|
|
51
|
+
},
|
|
52
|
+
"findings": {
|
|
53
|
+
"type": "array",
|
|
54
|
+
"items": {
|
|
55
|
+
"$ref": "#/$defs/finding"
|
|
56
|
+
},
|
|
57
|
+
"maxItems": 100
|
|
58
|
+
},
|
|
59
|
+
"recommendations": {
|
|
60
|
+
"type": "array",
|
|
61
|
+
"items": {
|
|
62
|
+
"$ref": "#/$defs/recommendation"
|
|
63
|
+
},
|
|
64
|
+
"maxItems": 50
|
|
65
|
+
},
|
|
66
|
+
"artifacts": {
|
|
67
|
+
"type": "array",
|
|
68
|
+
"items": {
|
|
69
|
+
"$ref": "#/$defs/artifact"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"metadata": {
|
|
75
|
+
"$ref": "#/$defs/metadata"
|
|
76
|
+
},
|
|
77
|
+
"validation": {
|
|
78
|
+
"$ref": "#/$defs/validationResult"
|
|
79
|
+
},
|
|
80
|
+
"learning": {
|
|
81
|
+
"$ref": "#/$defs/learningData"
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"$defs": {
|
|
85
|
+
"tddCycles": {
|
|
86
|
+
"type": "object",
|
|
87
|
+
"required": ["totalCycles", "completedCycles"],
|
|
88
|
+
"properties": {
|
|
89
|
+
"totalCycles": {
|
|
90
|
+
"type": "integer",
|
|
91
|
+
"minimum": 0,
|
|
92
|
+
"description": "Total red-green-refactor cycles"
|
|
93
|
+
},
|
|
94
|
+
"completedCycles": {
|
|
95
|
+
"type": "integer",
|
|
96
|
+
"minimum": 0,
|
|
97
|
+
"description": "Successfully completed cycles"
|
|
98
|
+
},
|
|
99
|
+
"redPhases": {
|
|
100
|
+
"type": "integer",
|
|
101
|
+
"minimum": 0,
|
|
102
|
+
"description": "Number of red phases (failing tests)"
|
|
103
|
+
},
|
|
104
|
+
"greenPhases": {
|
|
105
|
+
"type": "integer",
|
|
106
|
+
"minimum": 0,
|
|
107
|
+
"description": "Number of green phases (passing tests)"
|
|
108
|
+
},
|
|
109
|
+
"refactorPhases": {
|
|
110
|
+
"type": "integer",
|
|
111
|
+
"minimum": 0,
|
|
112
|
+
"description": "Number of refactor phases"
|
|
113
|
+
},
|
|
114
|
+
"averageCycleDuration": {
|
|
115
|
+
"type": "number",
|
|
116
|
+
"minimum": 0,
|
|
117
|
+
"description": "Average cycle duration in milliseconds"
|
|
118
|
+
},
|
|
119
|
+
"cycleDetails": {
|
|
120
|
+
"type": "array",
|
|
121
|
+
"items": {
|
|
122
|
+
"type": "object",
|
|
123
|
+
"properties": {
|
|
124
|
+
"cycleNumber": {
|
|
125
|
+
"type": "integer",
|
|
126
|
+
"minimum": 1
|
|
127
|
+
},
|
|
128
|
+
"phase": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"enum": ["red", "green", "refactor"]
|
|
131
|
+
},
|
|
132
|
+
"duration": {
|
|
133
|
+
"type": "integer",
|
|
134
|
+
"minimum": 0
|
|
135
|
+
},
|
|
136
|
+
"testsWritten": {
|
|
137
|
+
"type": "integer",
|
|
138
|
+
"minimum": 0
|
|
139
|
+
},
|
|
140
|
+
"codeChanges": {
|
|
141
|
+
"type": "integer",
|
|
142
|
+
"minimum": 0
|
|
143
|
+
},
|
|
144
|
+
"status": {
|
|
145
|
+
"type": "string",
|
|
146
|
+
"enum": ["completed", "in-progress", "failed", "skipped"]
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"testFirstRatio": {
|
|
152
|
+
"type": "number",
|
|
153
|
+
"minimum": 0,
|
|
154
|
+
"maximum": 100,
|
|
155
|
+
"description": "Percentage of tests written before implementation"
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"tddApproach": {
|
|
160
|
+
"type": "object",
|
|
161
|
+
"required": ["school", "justification"],
|
|
162
|
+
"properties": {
|
|
163
|
+
"school": {
|
|
164
|
+
"type": "string",
|
|
165
|
+
"enum": ["london", "chicago", "hybrid"],
|
|
166
|
+
"description": "TDD school used"
|
|
167
|
+
},
|
|
168
|
+
"justification": {
|
|
169
|
+
"type": "string",
|
|
170
|
+
"maxLength": 1000,
|
|
171
|
+
"description": "Why this approach was chosen"
|
|
172
|
+
},
|
|
173
|
+
"londonMetrics": {
|
|
174
|
+
"type": "object",
|
|
175
|
+
"properties": {
|
|
176
|
+
"mockCount": {
|
|
177
|
+
"type": "integer",
|
|
178
|
+
"minimum": 0
|
|
179
|
+
},
|
|
180
|
+
"stubCount": {
|
|
181
|
+
"type": "integer",
|
|
182
|
+
"minimum": 0
|
|
183
|
+
},
|
|
184
|
+
"isolationLevel": {
|
|
185
|
+
"type": "string",
|
|
186
|
+
"enum": ["full", "partial", "minimal"]
|
|
187
|
+
},
|
|
188
|
+
"outsideInScore": {
|
|
189
|
+
"type": "number",
|
|
190
|
+
"minimum": 0,
|
|
191
|
+
"maximum": 100
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"chicagoMetrics": {
|
|
196
|
+
"type": "object",
|
|
197
|
+
"properties": {
|
|
198
|
+
"integrationTests": {
|
|
199
|
+
"type": "integer",
|
|
200
|
+
"minimum": 0
|
|
201
|
+
},
|
|
202
|
+
"realCollaborators": {
|
|
203
|
+
"type": "integer",
|
|
204
|
+
"minimum": 0
|
|
205
|
+
},
|
|
206
|
+
"triangulation": {
|
|
207
|
+
"type": "boolean"
|
|
208
|
+
},
|
|
209
|
+
"insideOutScore": {
|
|
210
|
+
"type": "number",
|
|
211
|
+
"minimum": 0,
|
|
212
|
+
"maximum": 100
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
"comparison": {
|
|
217
|
+
"type": "object",
|
|
218
|
+
"properties": {
|
|
219
|
+
"testMaintainability": {
|
|
220
|
+
"type": "string",
|
|
221
|
+
"enum": ["london-better", "chicago-better", "equal"]
|
|
222
|
+
},
|
|
223
|
+
"designFeedback": {
|
|
224
|
+
"type": "string",
|
|
225
|
+
"enum": ["london-better", "chicago-better", "equal"]
|
|
226
|
+
},
|
|
227
|
+
"refactoringEase": {
|
|
228
|
+
"type": "string",
|
|
229
|
+
"enum": ["london-better", "chicago-better", "equal"]
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"testMetrics": {
|
|
236
|
+
"type": "object",
|
|
237
|
+
"properties": {
|
|
238
|
+
"totalTests": {
|
|
239
|
+
"type": "integer",
|
|
240
|
+
"minimum": 0
|
|
241
|
+
},
|
|
242
|
+
"unitTests": {
|
|
243
|
+
"type": "integer",
|
|
244
|
+
"minimum": 0
|
|
245
|
+
},
|
|
246
|
+
"integrationTests": {
|
|
247
|
+
"type": "integer",
|
|
248
|
+
"minimum": 0
|
|
249
|
+
},
|
|
250
|
+
"passing": {
|
|
251
|
+
"type": "integer",
|
|
252
|
+
"minimum": 0
|
|
253
|
+
},
|
|
254
|
+
"failing": {
|
|
255
|
+
"type": "integer",
|
|
256
|
+
"minimum": 0
|
|
257
|
+
},
|
|
258
|
+
"coverage": {
|
|
259
|
+
"type": "number",
|
|
260
|
+
"minimum": 0,
|
|
261
|
+
"maximum": 100
|
|
262
|
+
},
|
|
263
|
+
"branchCoverage": {
|
|
264
|
+
"type": "number",
|
|
265
|
+
"minimum": 0,
|
|
266
|
+
"maximum": 100
|
|
267
|
+
},
|
|
268
|
+
"mutationScore": {
|
|
269
|
+
"type": "number",
|
|
270
|
+
"minimum": 0,
|
|
271
|
+
"maximum": 100
|
|
272
|
+
},
|
|
273
|
+
"testExecutionTime": {
|
|
274
|
+
"type": "integer",
|
|
275
|
+
"minimum": 0
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
"codeQuality": {
|
|
280
|
+
"type": "object",
|
|
281
|
+
"properties": {
|
|
282
|
+
"qualityScore": {
|
|
283
|
+
"type": "number",
|
|
284
|
+
"minimum": 0,
|
|
285
|
+
"maximum": 100
|
|
286
|
+
},
|
|
287
|
+
"cyclomaticComplexity": {
|
|
288
|
+
"type": "number",
|
|
289
|
+
"minimum": 0
|
|
290
|
+
},
|
|
291
|
+
"linesOfCode": {
|
|
292
|
+
"type": "integer",
|
|
293
|
+
"minimum": 0
|
|
294
|
+
},
|
|
295
|
+
"testToCodeRatio": {
|
|
296
|
+
"type": "number",
|
|
297
|
+
"minimum": 0
|
|
298
|
+
},
|
|
299
|
+
"duplications": {
|
|
300
|
+
"type": "number",
|
|
301
|
+
"minimum": 0,
|
|
302
|
+
"maximum": 100
|
|
303
|
+
},
|
|
304
|
+
"designPatterns": {
|
|
305
|
+
"type": "array",
|
|
306
|
+
"items": {
|
|
307
|
+
"type": "string"
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
"finding": {
|
|
313
|
+
"type": "object",
|
|
314
|
+
"required": ["id", "title", "severity", "category"],
|
|
315
|
+
"properties": {
|
|
316
|
+
"id": {
|
|
317
|
+
"type": "string",
|
|
318
|
+
"pattern": "^TDD-\\d{3,6}$"
|
|
319
|
+
},
|
|
320
|
+
"title": {
|
|
321
|
+
"type": "string",
|
|
322
|
+
"minLength": 10,
|
|
323
|
+
"maxLength": 200
|
|
324
|
+
},
|
|
325
|
+
"description": {
|
|
326
|
+
"type": "string",
|
|
327
|
+
"maxLength": 2000
|
|
328
|
+
},
|
|
329
|
+
"severity": {
|
|
330
|
+
"type": "string",
|
|
331
|
+
"enum": ["critical", "high", "medium", "low", "info"]
|
|
332
|
+
},
|
|
333
|
+
"category": {
|
|
334
|
+
"type": "string",
|
|
335
|
+
"enum": ["cycle", "coverage", "design", "mocking", "isolation", "refactoring"]
|
|
336
|
+
},
|
|
337
|
+
"phase": {
|
|
338
|
+
"type": "string",
|
|
339
|
+
"enum": ["red", "green", "refactor"]
|
|
340
|
+
},
|
|
341
|
+
"remediation": {
|
|
342
|
+
"type": "string"
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
"recommendation": {
|
|
347
|
+
"type": "object",
|
|
348
|
+
"required": ["id", "title", "priority"],
|
|
349
|
+
"properties": {
|
|
350
|
+
"id": {
|
|
351
|
+
"type": "string",
|
|
352
|
+
"pattern": "^REC-\\d{3,6}$"
|
|
353
|
+
},
|
|
354
|
+
"title": {
|
|
355
|
+
"type": "string"
|
|
356
|
+
},
|
|
357
|
+
"description": {
|
|
358
|
+
"type": "string"
|
|
359
|
+
},
|
|
360
|
+
"priority": {
|
|
361
|
+
"type": "string",
|
|
362
|
+
"enum": ["critical", "high", "medium", "low"]
|
|
363
|
+
},
|
|
364
|
+
"effort": {
|
|
365
|
+
"type": "string",
|
|
366
|
+
"enum": ["trivial", "low", "medium", "high", "major"]
|
|
367
|
+
},
|
|
368
|
+
"school": {
|
|
369
|
+
"type": "string",
|
|
370
|
+
"enum": ["london", "chicago", "both"]
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
},
|
|
374
|
+
"artifact": {
|
|
375
|
+
"type": "object",
|
|
376
|
+
"required": ["type", "path"],
|
|
377
|
+
"properties": {
|
|
378
|
+
"type": {
|
|
379
|
+
"type": "string",
|
|
380
|
+
"enum": ["test", "report", "coverage", "code"]
|
|
381
|
+
},
|
|
382
|
+
"path": {
|
|
383
|
+
"type": "string"
|
|
384
|
+
},
|
|
385
|
+
"format": {
|
|
386
|
+
"type": "string"
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
},
|
|
390
|
+
"metadata": {
|
|
391
|
+
"type": "object",
|
|
392
|
+
"properties": {
|
|
393
|
+
"executionTimeMs": {
|
|
394
|
+
"type": "integer",
|
|
395
|
+
"minimum": 0
|
|
396
|
+
},
|
|
397
|
+
"toolsUsed": {
|
|
398
|
+
"type": "array",
|
|
399
|
+
"items": {
|
|
400
|
+
"type": "string"
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
"agentId": {
|
|
404
|
+
"type": "string"
|
|
405
|
+
},
|
|
406
|
+
"testFramework": {
|
|
407
|
+
"type": "string"
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
},
|
|
411
|
+
"validationResult": {
|
|
412
|
+
"type": "object",
|
|
413
|
+
"properties": {
|
|
414
|
+
"schemaValid": {
|
|
415
|
+
"type": "boolean"
|
|
416
|
+
},
|
|
417
|
+
"contentValid": {
|
|
418
|
+
"type": "boolean"
|
|
419
|
+
},
|
|
420
|
+
"confidence": {
|
|
421
|
+
"type": "number",
|
|
422
|
+
"minimum": 0,
|
|
423
|
+
"maximum": 1
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
"learningData": {
|
|
428
|
+
"type": "object",
|
|
429
|
+
"properties": {
|
|
430
|
+
"patternsDetected": {
|
|
431
|
+
"type": "array",
|
|
432
|
+
"items": {
|
|
433
|
+
"type": "string"
|
|
434
|
+
}
|
|
435
|
+
},
|
|
436
|
+
"reward": {
|
|
437
|
+
"type": "number",
|
|
438
|
+
"minimum": 0,
|
|
439
|
+
"maximum": 1
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skillName": "tdd-london-chicago",
|
|
3
|
+
"skillVersion": "1.0.0",
|
|
4
|
+
"requiredTools": [
|
|
5
|
+
"jq"
|
|
6
|
+
],
|
|
7
|
+
"optionalTools": [],
|
|
8
|
+
"schemaPath": "schemas/output.json",
|
|
9
|
+
"requiredFields": [
|
|
10
|
+
"skillName",
|
|
11
|
+
"status",
|
|
12
|
+
"output",
|
|
13
|
+
"output.summary",
|
|
14
|
+
"output.tddCycles",
|
|
15
|
+
"output.approach"
|
|
16
|
+
],
|
|
17
|
+
"requiredNonEmptyFields": [],
|
|
18
|
+
"mustContainTerms": [
|
|
19
|
+
"tdd",
|
|
20
|
+
"test",
|
|
21
|
+
"red",
|
|
22
|
+
"green",
|
|
23
|
+
"refactor"
|
|
24
|
+
],
|
|
25
|
+
"mustNotContainTerms": [
|
|
26
|
+
"TODO",
|
|
27
|
+
"FIXME",
|
|
28
|
+
"placeholder"
|
|
29
|
+
],
|
|
30
|
+
"enumValidations": {
|
|
31
|
+
".status": [
|
|
32
|
+
"success",
|
|
33
|
+
"partial",
|
|
34
|
+
"failed",
|
|
35
|
+
"skipped"
|
|
36
|
+
],
|
|
37
|
+
".output.approach.school": [
|
|
38
|
+
"london",
|
|
39
|
+
"chicago",
|
|
40
|
+
"hybrid"
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|