@dzhechkov/keysarium 1.7.15 → 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.
- package/.dz-manifest.json +213 -53
- package/README.md +29 -6
- package/README.ru.md +17 -0
- package/package.json +3 -3
- package/sbom.json +454 -54
- package/src/cli.js +32 -2
- package/src/commands/doctor.js +25 -1
- package/src/commands/init.js +46 -12
- package/src/utils.js +1 -0
- package/templates/.agents/skills/casarium/SKILL.md +29 -0
- package/templates/.claude/agents/code-goal-planner.md +9 -0
- package/templates/.claude/commands/casarium.md +3 -1
- package/templates/.claude/commands/cjm-prototype.md +2 -2
- package/templates/.claude/commands/research.md +4 -1
- package/templates/.claude/rules/checkpoint-protocol.md +2 -1
- package/templates/.claude/rules/research-quality.md +11 -6
- package/templates/.claude/shards/phase-2-research.shard.md +12 -8
- package/templates/.claude/shards/phase-25-cjm.shard.md +5 -3
- package/templates/.claude/skills/feature-adr/SKILL.md +17 -15
- package/templates/.claude/skills/feature-adr/modules/03-adr.md +1 -1
- package/templates/.claude/skills/feature-adr/modules/03.5-ideation-swarm.md +1 -1
- package/templates/.claude/skills/feature-adr/modules/06-implementation-plan.md +2 -2
- package/templates/.claude/skills/feature-adr/modules/08-qe.md +1 -1
- package/templates/.claude/skills/feature-adr/modules/09-fleet-qe.md +12 -12
- package/templates/.claude/skills/feature-adr/references/agentic-qe/LICENSE.agentic-qe +21 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/README.md +20 -16
- package/templates/.claude/skills/feature-adr/references/agentic-qe/UPSTREAM-MANIFEST.json +246 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/README.md +218 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{brutal-honesty-review.md → qe-ref-brutal-honesty-review/REFERENCE.md} +14 -1
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/resources/assessment-rubrics.md +295 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/resources/review-template.md +102 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/schemas/output.json +291 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/scripts/assess-code.sh +179 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/scripts/assess-tests.sh +223 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-brutal-honesty-review/scripts/validate-config.json +34 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/REFERENCE.md +758 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/schemas/output.json +74 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-enterprise-integration-testing/scripts/validate-config.json +25 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/REFERENCE.md +226 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/schemas/output.json +568 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/scripts/validate-config.json +25 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/01-flag-detection.md +57 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/02-core-agents.md +29 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/03-batch1-results.md +15 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/04-conditional-agents.md +23 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/05-decision-synthesis.md +29 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/06-report-generation.md +18 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/07-learning-persistence.md +29 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qcsd-ideation-swarm/steps/08-final-output.md +18 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{qe-coverage-analysis.md → qe-ref-qe-coverage-analysis/REFERENCE.md} +42 -3
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-coverage-analysis/schemas/output.json +286 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-coverage-analysis/scripts/validate-config.json +42 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{qe-requirements-validation.md → qe-ref-qe-requirements-validation/REFERENCE.md} +13 -3
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-requirements-validation/schemas/output.json +587 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-qe-requirements-validation/scripts/validate-config.json +37 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{regression-testing.md → qe-ref-regression-testing/REFERENCE.md} +30 -49
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-regression-testing/evals/regression-testing.yaml +504 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-regression-testing/schemas/output.json +311 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-regression-testing/scripts/validate-config.json +50 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{risk-based-testing.md → qe-ref-risk-based-testing/REFERENCE.md} +23 -52
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-risk-based-testing/evals/risk-based-testing.yaml +141 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-risk-based-testing/schemas/output.json +480 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-risk-based-testing/scripts/validate-config.json +25 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/{shift-left-testing.md → qe-ref-shift-left-testing/REFERENCE.md} +33 -88
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-shift-left-testing/evals/shift-left-testing.yaml +145 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-shift-left-testing/schemas/output.json +459 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-ref-shift-left-testing/scripts/validate-config.json +25 -0
- package/templates/CLAUDE.md +3 -1
- package/templates/docs/feature-adr/04-admin-guide.md +1 -1
- package/templates/docs/improvement-directions.md +3 -3
- package/templates/docs/keysarium/02-admin-guide.md +2 -2
- package/templates/docs/keysarium/03-user-guide.md +3 -3
- package/templates/docs/keysarium/05-architecture.md +9 -8
- package/templates/docs/keysarium/06-user-flows.md +4 -4
- package/templates/lib/platform-templates/copilot.md +1 -1
- package/templates/lib/platform-templates/opencode.md +1 -1
- package/templates/.claude/skills/feature-adr/references/agentic-qe/enterprise-integration-testing.md +0 -111
- 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
|
+
}
|
package/templates/CLAUDE.md
CHANGED
|
@@ -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
|
|
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
|
|
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 ← Правила
|
|
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
|
-
|
|
|
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 |
|
|
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 готовы |
|