@dzhechkov/keysarium 1.7.14 → 1.7.18

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 (84) hide show
  1. package/.dz-manifest.json +215 -55
  2. package/README.md +35 -6
  3. package/README.ru.md +36 -16
  4. package/package.json +3 -3
  5. package/sbom.json +456 -56
  6. package/src/cli.js +32 -2
  7. package/src/commands/doctor.js +25 -1
  8. package/src/commands/init.js +46 -12
  9. package/src/utils.js +1 -0
  10. package/templates/.agents/skills/casarium/SKILL.md +29 -0
  11. package/templates/.claude/agents/code-goal-planner.md +9 -0
  12. package/templates/.claude/commands/analyst-manual.md +4 -2
  13. package/templates/.claude/commands/casarium.md +3 -1
  14. package/templates/.claude/commands/cjm-prototype.md +2 -2
  15. package/templates/.claude/commands/research.md +4 -1
  16. package/templates/.claude/rules/checkpoint-protocol.md +2 -1
  17. package/templates/.claude/rules/research-quality.md +11 -6
  18. package/templates/.claude/shards/phase-2-research.shard.md +12 -8
  19. package/templates/.claude/shards/phase-25-cjm.shard.md +5 -3
  20. package/templates/.claude/skills/analyst-manual-full/SKILL.md +65 -37
  21. package/templates/.claude/skills/feature-adr/SKILL.md +17 -15
  22. package/templates/.claude/skills/feature-adr/modules/03-adr.md +1 -1
  23. package/templates/.claude/skills/feature-adr/modules/03.5-ideation-swarm.md +1 -1
  24. package/templates/.claude/skills/feature-adr/modules/06-implementation-plan.md +2 -2
  25. package/templates/.claude/skills/feature-adr/modules/08-qe.md +1 -1
  26. package/templates/.claude/skills/feature-adr/modules/09-fleet-qe.md +12 -12
  27. package/templates/.claude/skills/feature-adr/references/agentic-qe/LICENSE.agentic-qe +21 -0
  28. package/templates/.claude/skills/feature-adr/references/agentic-qe/README.md +20 -16
  29. package/templates/.claude/skills/feature-adr/references/agentic-qe/UPSTREAM-MANIFEST.json +246 -0
  30. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/README.md +218 -0
  31. package/templates/.claude/skills/feature-adr/references/agentic-qe/{brutal-honesty-review.md → qe-ref-brutal-honesty-review/REFERENCE.md} +14 -1
  32. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/resources/assessment-rubrics.md +295 -0
  33. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/resources/review-template.md +102 -0
  34. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/schemas/output.json +291 -0
  35. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/scripts/assess-code.sh +179 -0
  36. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/scripts/assess-tests.sh +223 -0
  37. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/scripts/validate-config.json +34 -0
  38. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/REFERENCE.md +758 -0
  39. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -0
  40. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/schemas/output.json +74 -0
  41. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/scripts/validate-config.json +25 -0
  42. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/REFERENCE.md +226 -0
  43. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -0
  44. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/schemas/output.json +568 -0
  45. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/scripts/validate-config.json +25 -0
  46. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/01-flag-detection.md +57 -0
  47. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/02-core-agents.md +29 -0
  48. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/03-batch1-results.md +15 -0
  49. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/04-conditional-agents.md +23 -0
  50. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/05-decision-synthesis.md +29 -0
  51. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/06-report-generation.md +18 -0
  52. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/07-learning-persistence.md +29 -0
  53. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/08-final-output.md +18 -0
  54. package/templates/.claude/skills/feature-adr/references/agentic-qe/{qe-coverage-analysis.md → qe-ref-qe-coverage-analysis/REFERENCE.md} +42 -3
  55. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -0
  56. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-coverage-analysis/schemas/output.json +286 -0
  57. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-coverage-analysis/scripts/validate-config.json +42 -0
  58. package/templates/.claude/skills/feature-adr/references/agentic-qe/{qe-requirements-validation.md → qe-ref-qe-requirements-validation/REFERENCE.md} +13 -3
  59. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -0
  60. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-requirements-validation/schemas/output.json +587 -0
  61. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-requirements-validation/scripts/validate-config.json +37 -0
  62. package/templates/.claude/skills/feature-adr/references/agentic-qe/{regression-testing.md → qe-ref-regression-testing/REFERENCE.md} +30 -49
  63. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-regression-testing/evals/regression-testing.yaml +504 -0
  64. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-regression-testing/schemas/output.json +311 -0
  65. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-regression-testing/scripts/validate-config.json +50 -0
  66. package/templates/.claude/skills/feature-adr/references/agentic-qe/{risk-based-testing.md → qe-ref-risk-based-testing/REFERENCE.md} +23 -52
  67. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-risk-based-testing/evals/risk-based-testing.yaml +141 -0
  68. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-risk-based-testing/schemas/output.json +480 -0
  69. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-risk-based-testing/scripts/validate-config.json +25 -0
  70. package/templates/.claude/skills/feature-adr/references/agentic-qe/{shift-left-testing.md → qe-ref-shift-left-testing/REFERENCE.md} +33 -88
  71. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-shift-left-testing/evals/shift-left-testing.yaml +145 -0
  72. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-shift-left-testing/schemas/output.json +459 -0
  73. package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-shift-left-testing/scripts/validate-config.json +25 -0
  74. package/templates/CLAUDE.md +3 -1
  75. package/templates/docs/feature-adr/04-admin-guide.md +1 -1
  76. package/templates/docs/improvement-directions.md +3 -3
  77. package/templates/docs/keysarium/02-admin-guide.md +2 -2
  78. package/templates/docs/keysarium/03-user-guide.md +3 -3
  79. package/templates/docs/keysarium/05-architecture.md +9 -8
  80. package/templates/docs/keysarium/06-user-flows.md +4 -4
  81. package/templates/lib/platform-templates/copilot.md +1 -1
  82. package/templates/lib/platform-templates/opencode.md +1 -1
  83. package/templates/.claude/skills/feature-adr/references/agentic-qe/enterprise-integration-testing.md +0 -111
  84. package/templates/.claude/skills/feature-adr/references/agentic-qe/qcsd-ideation-swarm.md +0 -126
@@ -0,0 +1,145 @@
1
+ skill: shift-left-testing
2
+ version: 1.0.0
3
+ description: >
4
+ Evaluation suite for shift-left testing strategy.
5
+ Tests early defect detection, pre-commit checks, and development-phase validation.
6
+
7
+ models_to_test:
8
+ - claude-sonnet-4-6 # Primary (high accuracy expected)
9
+ - claude-haiku-4-5 # Fast model (minimum quality floor)
10
+
11
+ mcp_integration:
12
+ enabled: true
13
+ namespace: skill-validation
14
+ query_patterns: true
15
+ track_outcomes: true
16
+ store_patterns: true
17
+ target_agents:
18
+ - qe-learning-coordinator
19
+
20
+ learning:
21
+ store_success_patterns: true
22
+ pattern_ttl_days: 90
23
+
24
+ result_format:
25
+ json_output: true
26
+ include_timing: true
27
+ include_token_usage: true
28
+
29
+ setup:
30
+ required_tools:
31
+ - jq
32
+
33
+ test_cases:
34
+
35
+ - id: tc001_pre_commit_validation
36
+ description: "Identify issues before commit"
37
+ category: pre_commit
38
+ priority: critical
39
+
40
+ input:
41
+ code_changes:
42
+ - "function processPayment() { db.query(userInput); }"
43
+ checks:
44
+ - "sql_injection"
45
+ - "xss"
46
+ - "hardcoded_secrets"
47
+
48
+ expected_output:
49
+ must_contain:
50
+ - "SQL injection"
51
+ - "vulnerable"
52
+ - "pre-commit"
53
+
54
+ validation:
55
+ schema_check: true
56
+ keyword_match_threshold: 0.8
57
+
58
+ - id: tc002_unit_test_generation_early
59
+ description: "Generate unit tests during development"
60
+ category: development
61
+ priority: high
62
+
63
+ input:
64
+ code: |
65
+ function calculateDiscount(amount, percentage) {
66
+ return amount * (1 - percentage / 100);
67
+ }
68
+ generate_tests: true
69
+
70
+ expected_output:
71
+ must_contain:
72
+ - "test"
73
+ - "unit"
74
+ - "edge case"
75
+
76
+ validation:
77
+ schema_check: true
78
+
79
+ - id: tc003_code_quality_gates
80
+ description: "Apply quality gates during development"
81
+ category: quality
82
+ priority: high
83
+
84
+ input:
85
+ metrics:
86
+ complexity: 12
87
+ duplication_percent: 5
88
+ test_coverage: 75
89
+
90
+ expected_output:
91
+ must_contain:
92
+ - "quality"
93
+ - "gate"
94
+
95
+ validation:
96
+ schema_check: true
97
+
98
+ - id: tc004_early_architecture_review
99
+ description: "Validate architecture early in development"
100
+ category: architecture
101
+ priority: medium
102
+
103
+ input:
104
+ design:
105
+ layers: ["presentation", "business", "data"]
106
+ patterns: ["MVC", "dependency_injection"]
107
+
108
+ expected_output:
109
+ must_contain:
110
+ - "architecture"
111
+ - "design"
112
+
113
+ validation:
114
+ schema_check: true
115
+
116
+ - id: tc005_developer_feedback
117
+ description: "Provide immediate developer feedback"
118
+ category: feedback
119
+ priority: medium
120
+
121
+ input:
122
+ code_snippet: "const x = 1; const y = 1; const z = x + y;"
123
+ focus_areas: ["readability", "performance"]
124
+
125
+ expected_output:
126
+ must_contain:
127
+ - "feedback"
128
+ - "improve"
129
+
130
+ validation:
131
+ schema_check: true
132
+ allow_partial: true
133
+
134
+ success_criteria:
135
+ pass_rate: 0.9
136
+ critical_pass_rate: 1.0
137
+ avg_reasoning_quality: 0.75
138
+ max_execution_time_ms: 300000
139
+
140
+ metadata:
141
+ author: "qe-shift-left-coordinator"
142
+ created: "2026-02-02"
143
+ coverage_target: >
144
+ Shift-left testing with 5 test cases covering pre-commit validation,
145
+ early test generation, quality gates, architecture review, and developer feedback.
@@ -0,0 +1,459 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://agentic-qe.dev/schemas/shift-left-testing-output.json",
4
+ "title": "AQE Shift-Left Testing Skill Output Schema",
5
+ "description": "Schema for shift-left-testing skill output validation. Extends the base skill-output template with test pyramid analysis, TDD assessment, and CI/CD integration.",
6
+ "type": "object",
7
+ "required": ["skillName", "version", "timestamp", "status", "trustTier", "output"],
8
+ "properties": {
9
+ "skillName": {
10
+ "type": "string",
11
+ "const": "shift-left-testing",
12
+ "description": "Must be 'shift-left-testing'"
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
+ "const": 3
29
+ },
30
+ "output": {
31
+ "type": "object",
32
+ "required": ["summary", "testPyramid", "shiftLeftLevel", "findings", "recommendations"],
33
+ "properties": {
34
+ "summary": {
35
+ "type": "string",
36
+ "minLength": 50,
37
+ "maxLength": 2000,
38
+ "description": "Human-readable summary of shift-left assessment"
39
+ },
40
+ "score": {
41
+ "$ref": "#/$defs/shiftLeftScore"
42
+ },
43
+ "testPyramid": {
44
+ "$ref": "#/$defs/testPyramid",
45
+ "description": "Test pyramid analysis"
46
+ },
47
+ "shiftLeftLevel": {
48
+ "$ref": "#/$defs/shiftLeftLevel",
49
+ "description": "Current shift-left maturity level"
50
+ },
51
+ "cicdIntegration": {
52
+ "$ref": "#/$defs/cicdIntegration",
53
+ "description": "CI/CD pipeline testing integration"
54
+ },
55
+ "tddPractices": {
56
+ "$ref": "#/$defs/tddPractices",
57
+ "description": "TDD/BDD practices assessment"
58
+ },
59
+ "requirementsValidation": {
60
+ "$ref": "#/$defs/requirementsValidation",
61
+ "description": "Early requirements testing"
62
+ },
63
+ "defectCostAnalysis": {
64
+ "$ref": "#/$defs/defectCostAnalysis",
65
+ "description": "Cost of defects by phase"
66
+ },
67
+ "findings": {
68
+ "type": "array",
69
+ "items": {
70
+ "$ref": "#/$defs/shiftLeftFinding"
71
+ },
72
+ "maxItems": 100
73
+ },
74
+ "recommendations": {
75
+ "type": "array",
76
+ "items": {
77
+ "$ref": "#/$defs/shiftLeftRecommendation"
78
+ },
79
+ "maxItems": 50
80
+ },
81
+ "metrics": {
82
+ "$ref": "#/$defs/shiftLeftMetrics"
83
+ },
84
+ "artifacts": {
85
+ "type": "array",
86
+ "items": {
87
+ "$ref": "#/$defs/artifact"
88
+ },
89
+ "maxItems": 50
90
+ }
91
+ }
92
+ },
93
+ "metadata": {
94
+ "$ref": "#/$defs/metadata"
95
+ },
96
+ "validation": {
97
+ "$ref": "#/$defs/validationResult"
98
+ },
99
+ "learning": {
100
+ "$ref": "#/$defs/learningData"
101
+ }
102
+ },
103
+ "$defs": {
104
+ "shiftLeftScore": {
105
+ "type": "object",
106
+ "required": ["value", "max"],
107
+ "properties": {
108
+ "value": {
109
+ "type": "number",
110
+ "minimum": 0,
111
+ "maximum": 100
112
+ },
113
+ "max": {
114
+ "type": "number",
115
+ "const": 100
116
+ },
117
+ "grade": {
118
+ "type": "string",
119
+ "pattern": "^[A-F][+-]?$"
120
+ },
121
+ "maturityLevel": {
122
+ "type": "string",
123
+ "enum": ["level-1", "level-2", "level-3", "level-4"],
124
+ "description": "Shift-left maturity level"
125
+ }
126
+ }
127
+ },
128
+ "testPyramid": {
129
+ "type": "object",
130
+ "required": ["unit", "integration", "e2e"],
131
+ "properties": {
132
+ "unit": {
133
+ "type": "object",
134
+ "properties": {
135
+ "count": { "type": "integer", "minimum": 0 },
136
+ "percentage": { "type": "number", "minimum": 0, "maximum": 100 },
137
+ "target": { "type": "number", "default": 70 },
138
+ "coverage": { "type": "number", "minimum": 0, "maximum": 100 },
139
+ "averageExecutionMs": { "type": "number" },
140
+ "status": { "type": "string", "enum": ["healthy", "needs-attention", "critical"] }
141
+ },
142
+ "description": "Unit tests layer"
143
+ },
144
+ "integration": {
145
+ "type": "object",
146
+ "properties": {
147
+ "count": { "type": "integer", "minimum": 0 },
148
+ "percentage": { "type": "number", "minimum": 0, "maximum": 100 },
149
+ "target": { "type": "number", "default": 20 },
150
+ "coverage": { "type": "number", "minimum": 0, "maximum": 100 },
151
+ "averageExecutionMs": { "type": "number" },
152
+ "status": { "type": "string", "enum": ["healthy", "needs-attention", "critical"] }
153
+ },
154
+ "description": "Integration tests layer"
155
+ },
156
+ "e2e": {
157
+ "type": "object",
158
+ "properties": {
159
+ "count": { "type": "integer", "minimum": 0 },
160
+ "percentage": { "type": "number", "minimum": 0, "maximum": 100 },
161
+ "target": { "type": "number", "default": 10 },
162
+ "coverage": { "type": "number", "minimum": 0, "maximum": 100 },
163
+ "averageExecutionMs": { "type": "number" },
164
+ "status": { "type": "string", "enum": ["healthy", "needs-attention", "critical"] }
165
+ },
166
+ "description": "End-to-end tests layer"
167
+ },
168
+ "pyramidShape": {
169
+ "type": "string",
170
+ "enum": ["healthy-pyramid", "ice-cream-cone", "hourglass", "inverted", "unbalanced"],
171
+ "description": "Current pyramid shape"
172
+ },
173
+ "pyramidScore": {
174
+ "type": "number",
175
+ "minimum": 0,
176
+ "maximum": 100,
177
+ "description": "How close to ideal pyramid (100 = perfect)"
178
+ }
179
+ }
180
+ },
181
+ "shiftLeftLevel": {
182
+ "type": "object",
183
+ "required": ["current", "practices"],
184
+ "properties": {
185
+ "current": {
186
+ "type": "integer",
187
+ "minimum": 0,
188
+ "maximum": 4,
189
+ "description": "Current shift-left level (0-4)"
190
+ },
191
+ "target": {
192
+ "type": "integer",
193
+ "minimum": 0,
194
+ "maximum": 4,
195
+ "description": "Target shift-left level"
196
+ },
197
+ "practices": {
198
+ "type": "object",
199
+ "properties": {
200
+ "level1": {
201
+ "type": "object",
202
+ "properties": {
203
+ "testsInPR": { "type": "boolean" },
204
+ "ciPipeline": { "type": "boolean" },
205
+ "codeReview": { "type": "boolean" }
206
+ },
207
+ "description": "Level 1: Tests in every PR"
208
+ },
209
+ "level2": {
210
+ "type": "object",
211
+ "properties": {
212
+ "tddPractice": { "type": "boolean" },
213
+ "testFirst": { "type": "boolean" },
214
+ "redGreenRefactor": { "type": "boolean" }
215
+ },
216
+ "description": "Level 2: TDD practice"
217
+ },
218
+ "level3": {
219
+ "type": "object",
220
+ "properties": {
221
+ "bddInRefinement": { "type": "boolean" },
222
+ "exampleMapping": { "type": "boolean" },
223
+ "threeAmigos": { "type": "boolean" }
224
+ },
225
+ "description": "Level 3: BDD in refinement"
226
+ },
227
+ "level4": {
228
+ "type": "object",
229
+ "properties": {
230
+ "riskAnalysisInDesign": { "type": "boolean" },
231
+ "testabilityReview": { "type": "boolean" },
232
+ "architectureValidation": { "type": "boolean" }
233
+ },
234
+ "description": "Level 4: Risk analysis in design"
235
+ }
236
+ }
237
+ }
238
+ }
239
+ },
240
+ "cicdIntegration": {
241
+ "type": "object",
242
+ "properties": {
243
+ "hasCI": { "type": "boolean" },
244
+ "testsOnEveryCommit": { "type": "boolean" },
245
+ "pipelineDuration": {
246
+ "type": "object",
247
+ "properties": {
248
+ "total": { "type": "integer", "description": "Total duration in seconds" },
249
+ "unitTests": { "type": "integer" },
250
+ "integrationTests": { "type": "integer" },
251
+ "e2eTests": { "type": "integer" },
252
+ "linting": { "type": "integer" }
253
+ }
254
+ },
255
+ "qualityGates": {
256
+ "type": "array",
257
+ "items": {
258
+ "type": "object",
259
+ "properties": {
260
+ "name": { "type": "string" },
261
+ "stage": { "type": "string" },
262
+ "blocking": { "type": "boolean" },
263
+ "currentStatus": { "type": "string", "enum": ["passing", "failing", "warning"] }
264
+ }
265
+ }
266
+ },
267
+ "fastFeedback": {
268
+ "type": "boolean",
269
+ "description": "Does pipeline provide feedback in < 10 minutes"
270
+ }
271
+ }
272
+ },
273
+ "tddPractices": {
274
+ "type": "object",
275
+ "properties": {
276
+ "tddAdoption": {
277
+ "type": "number",
278
+ "minimum": 0,
279
+ "maximum": 100,
280
+ "description": "Percentage of code developed with TDD"
281
+ },
282
+ "testFirstRatio": {
283
+ "type": "number",
284
+ "minimum": 0,
285
+ "maximum": 100,
286
+ "description": "Percentage of tests written before code"
287
+ },
288
+ "bddAdoption": {
289
+ "type": "number",
290
+ "minimum": 0,
291
+ "maximum": 100,
292
+ "description": "Percentage of features with BDD specs"
293
+ },
294
+ "practicesAssessment": {
295
+ "type": "array",
296
+ "items": {
297
+ "type": "object",
298
+ "properties": {
299
+ "practice": { "type": "string" },
300
+ "implemented": { "type": "boolean" },
301
+ "effectiveness": { "type": "string", "enum": ["poor", "fair", "good", "excellent"] }
302
+ }
303
+ }
304
+ }
305
+ }
306
+ },
307
+ "requirementsValidation": {
308
+ "type": "object",
309
+ "properties": {
310
+ "investCriteria": { "type": "boolean" },
311
+ "testabilityReviewed": { "type": "boolean" },
312
+ "acceptanceCriteria": { "type": "boolean" },
313
+ "examplesProvided": { "type": "boolean" },
314
+ "ambiguityScore": {
315
+ "type": "number",
316
+ "minimum": 0,
317
+ "maximum": 100,
318
+ "description": "How ambiguous are requirements (0=clear, 100=very ambiguous)"
319
+ }
320
+ }
321
+ },
322
+ "defectCostAnalysis": {
323
+ "type": "object",
324
+ "properties": {
325
+ "byPhase": {
326
+ "type": "array",
327
+ "items": {
328
+ "type": "object",
329
+ "properties": {
330
+ "phase": {
331
+ "type": "string",
332
+ "enum": ["requirements", "design", "development", "testing", "production"]
333
+ },
334
+ "relativeCost": {
335
+ "type": "number",
336
+ "description": "Relative cost (requirements = 1x)"
337
+ },
338
+ "defectsFound": {
339
+ "type": "integer",
340
+ "description": "Number of defects found in this phase"
341
+ },
342
+ "percentageFound": {
343
+ "type": "number",
344
+ "description": "Percentage of total defects found in this phase"
345
+ }
346
+ }
347
+ }
348
+ },
349
+ "potentialSavings": {
350
+ "type": "string",
351
+ "description": "Estimated savings from better shift-left"
352
+ }
353
+ }
354
+ },
355
+ "shiftLeftFinding": {
356
+ "type": "object",
357
+ "required": ["id", "title", "type", "severity"],
358
+ "properties": {
359
+ "id": {
360
+ "type": "string",
361
+ "pattern": "^SLT-\\d{3,6}$"
362
+ },
363
+ "title": {
364
+ "type": "string",
365
+ "minLength": 10,
366
+ "maxLength": 200
367
+ },
368
+ "description": { "type": "string" },
369
+ "type": {
370
+ "type": "string",
371
+ "enum": ["pyramid-imbalance", "ci-gap", "tdd-gap", "late-testing", "missing-gate", "slow-feedback", "opportunity"]
372
+ },
373
+ "severity": {
374
+ "type": "string",
375
+ "enum": ["critical", "high", "medium", "low", "info"]
376
+ },
377
+ "phase": {
378
+ "type": "string",
379
+ "enum": ["requirements", "design", "development", "testing", "deployment"],
380
+ "description": "Which phase this finding affects"
381
+ }
382
+ }
383
+ },
384
+ "shiftLeftRecommendation": {
385
+ "type": "object",
386
+ "required": ["id", "title", "priority", "levelImpact"],
387
+ "properties": {
388
+ "id": {
389
+ "type": "string",
390
+ "pattern": "^REC-\\d{3,6}$"
391
+ },
392
+ "title": { "type": "string" },
393
+ "description": { "type": "string" },
394
+ "priority": {
395
+ "type": "string",
396
+ "enum": ["critical", "high", "medium", "low"]
397
+ },
398
+ "levelImpact": {
399
+ "type": "integer",
400
+ "minimum": 1,
401
+ "maximum": 4,
402
+ "description": "Which shift-left level this improves"
403
+ },
404
+ "costReduction": {
405
+ "type": "string",
406
+ "description": "Expected defect cost reduction"
407
+ },
408
+ "effort": {
409
+ "type": "string",
410
+ "enum": ["trivial", "low", "medium", "high", "major"]
411
+ }
412
+ }
413
+ },
414
+ "shiftLeftMetrics": {
415
+ "type": "object",
416
+ "properties": {
417
+ "defectEscapeRate": { "type": "number", "minimum": 0, "maximum": 100 },
418
+ "testCoverage": { "type": "number", "minimum": 0, "maximum": 100 },
419
+ "ciPassRate": { "type": "number", "minimum": 0, "maximum": 100 },
420
+ "averageFeedbackTime": { "type": "integer", "description": "Average CI feedback time in minutes" },
421
+ "tddAdoptionRate": { "type": "number", "minimum": 0, "maximum": 100 }
422
+ }
423
+ },
424
+ "artifact": {
425
+ "type": "object",
426
+ "required": ["type", "path"],
427
+ "properties": {
428
+ "type": { "type": "string" },
429
+ "path": { "type": "string" },
430
+ "format": { "type": "string" },
431
+ "description": { "type": "string" }
432
+ }
433
+ },
434
+ "metadata": {
435
+ "type": "object",
436
+ "properties": {
437
+ "executionTimeMs": { "type": "integer" },
438
+ "agentId": { "type": "string" },
439
+ "modelUsed": { "type": "string" },
440
+ "environment": { "type": "string" }
441
+ }
442
+ },
443
+ "validationResult": {
444
+ "type": "object",
445
+ "properties": {
446
+ "schemaValid": { "type": "boolean" },
447
+ "contentValid": { "type": "boolean" },
448
+ "confidence": { "type": "number" }
449
+ }
450
+ },
451
+ "learningData": {
452
+ "type": "object",
453
+ "properties": {
454
+ "patternsDetected": { "type": "array", "items": { "type": "string" } },
455
+ "reward": { "type": "number" }
456
+ }
457
+ }
458
+ }
459
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "skillName": "shift-left-testing",
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
+ ],
14
+ "requiredNonEmptyFields": [],
15
+ "mustContainTerms": [],
16
+ "mustNotContainTerms": [],
17
+ "enumValidations": {
18
+ ".status": [
19
+ "success",
20
+ "partial",
21
+ "failed",
22
+ "skipped"
23
+ ]
24
+ }
25
+ }
@@ -153,7 +153,9 @@ DISCOVERY → EXPLORE → RESEARCH → CJM PROTO → SOLVE → ARCHITECTU
153
153
  1. **Файлы создаются в момент фазы**, не в Phase 6
154
154
  2. **Phase 2.5 (CJM Prototype) — НИКОГДА НЕ ПРОПУСКАТЬ**
155
155
  3. **08_executive_summary.md — ОБЯЗАТЕЛЕН**
156
- 4. **Research в PARANOID mode** — ноль непроверенных утверждений
156
+ 4. **Research по `.claude/rules/research-quality.md`** — `moderate` для обычных источников;
157
+ `strict`/`paranoid` только при подтверждённых ключах издателей и подписанной выдаче.
158
+ Неподтверждённые сведения помечаются и не становятся основанием решения.
157
159
  5. **{CHOSEN_CJM} передаётся** из Phase 2.5 в Phase 3-5
158
160
  6. **Checkpoint после каждой фазы** — ждём "ок" от пользователя + `<promise>` тег
159
161
  7. **Всё в researches/<slug>/** — не засоряем корень
@@ -252,7 +252,7 @@ rm -rf features/<slug>
252
252
 
253
253
  **Step 1 (Requirements):** Для M+ tiers каждое функциональное требование должно иметь формулировку acceptance criteria, пригодную для верификации на Step 8.
254
254
 
255
- **Step 2 (Research):** Для L/XL tiers все ссылки на аналоги и паттерны должны быть верифицируемы. Применяется принцип PARANOID mode.
255
+ **Step 2 (Research):** Для L/XL tiers ссылки на аналоги и паттерны должны быть проверяемы. Это требование к качеству цитирования, а не автоматическое включение GOAP `paranoid` без ключей издателей и подписанной выдачи.
256
256
 
257
257
  **Step 3 (ADR):** Минимум 2 альтернативы на каждый ADR. Каждая альтернатива содержит pros/cons и trade-off анализ. Выбранный вариант обоснован.
258
258
 
@@ -60,7 +60,7 @@
60
60
  .claude/shards/
61
61
  ├── phase-0-discovery.shard.md ← Правила для Phase 0
62
62
  ├── phase-1-explore.shard.md ← Правила для Phase 1
63
- ├── phase-2-research.shard.md ← Правила для Phase 2 (PARANOID mode)
63
+ ├── phase-2-research.shard.md ← Правила выбора режима и проверки источников Phase 2
64
64
  ├── phase-25-cjm.shard.md ← Правила для Phase 2.5 (MANDATORY)
65
65
  ├── phase-3-solve.shard.md ← Правила для Phase 3
66
66
  ├── phase-4-architecture.shard.md ← Правила для Phase 4
@@ -93,7 +93,7 @@ AQE определяет 7 неизменяемых инвариантов:
93
93
  |-----------|-------------|
94
94
  | CJM Phase 2.5 НИКОГДА не пропускается | Gate check перед Phase 3 |
95
95
  | Executive Summary (08) ОБЯЗАТЕЛЕН | Gate check перед packaging |
96
- | PARANOID mode: ноль unverified claims | Automated scan артефактов Phase 2 |
96
+ | Подтверждённые источники и явные пробелы, без выдуманных цитат | Проверка артефактов Phase 2 |
97
97
  | BTO: judge и generator — разные модели | Model check в BTO pipeline |
98
98
  | Layer 0 rejection = NO escalation без 3 retries | Retry counter в BTO test |
99
99
  | Файлы создаются в момент фазы, не в Phase 6 | File existence check на checkpoint |
@@ -275,7 +275,7 @@ AQE использует semantic promises:
275
275
  |---------|------|----------|
276
276
  | `DISCOVERY_COMPLETE` | Phase 0 | JTBD + конкуренты + ROI проанализированы |
277
277
  | `CASE_EXPLORED` | Phase 1 | Кейс полностью понят, brief создан |
278
- | `RESEARCH_PARANOID_PASSED` | Phase 2 | Все claims верифицированы, zero unverified |
278
+ | `RESEARCH_PARANOID_PASSED` | Phase 2 | Унаследованное имя: evidence gate пройден в выбранном GOAP режиме; подпись издателя не подразумевается |
279
279
  | `CJM_VALIDATED` | Phase 2.5 | CJM прототип создан и выбран |
280
280
  | `SOLUTION_DESIGNED` | Phase 3 | Стратегия решения сформирована |
281
281
  | `ARCHITECTURE_DEFINED` | Phase 4 | C4 диаграммы + sequence flows готовы |