@dzhechkov/p-replicator 1.5.10 → 1.5.13
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/package.json +1 -1
- package/templates/.claude/skills/brutal-honesty-review/SKILL.md +18 -1
- package/templates/.claude/skills/brutal-honesty-review/evals/brutal-honesty-review.yaml +61 -0
- package/templates/.claude/skills/brutal-honesty-review/schemas/output.json +292 -0
- package/templates/.claude/skills/brutal-honesty-review/scripts/validate-config.json +34 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dzhechkov/p-replicator",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.13",
|
|
4
4
|
"description": "P-Replicator — Claude Code toolkit for AI-assisted product development (Vibe Coding). Full /replicate pipeline, 10 modular skills (194K+ chars), /harvest knowledge extraction, swarm agents, quality gates, security patterns, cross-project learning.",
|
|
5
5
|
"main": "src/cli.js",
|
|
6
6
|
"bin": {
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: brutal-honesty-review
|
|
3
|
-
description: Unvarnished technical criticism combining Linus Torvalds precision, Gordon Ramsay standards, and James Bach BS-detection. Use when code
|
|
3
|
+
description: "Unvarnished technical criticism combining Linus Torvalds' precision, Gordon Ramsay's standards, and James Bach's BS-detection. Use when code/tests need harsh reality checks, certification schemes smell fishy, or technical decisions lack rigor. No sugar-coating, just surgical truth about what's broken and why."
|
|
4
|
+
category: quality-review
|
|
5
|
+
priority: high
|
|
6
|
+
tokenEstimate: 1200
|
|
7
|
+
agents: [qe-code-reviewer, qe-quality-gate, qe-security-auditor]
|
|
8
|
+
implementation_status: optimized
|
|
9
|
+
optimization_version: 1.0
|
|
10
|
+
last_optimized: 2025-12-03
|
|
11
|
+
dependencies: []
|
|
12
|
+
quick_reference_card: true
|
|
13
|
+
tags: [code-review, honesty, critical-thinking, technical-criticism, quality]
|
|
14
|
+
trust_tier: 2
|
|
15
|
+
validation:
|
|
16
|
+
schema_path: schemas/output.json
|
|
17
|
+
validator_path: scripts/validate-config.json
|
|
4
18
|
---
|
|
5
19
|
|
|
6
20
|
# Brutal Honesty Review
|
|
@@ -24,6 +38,9 @@ When brutal honesty is needed:
|
|
|
24
38
|
- Level 3 (Brutal): "This is negligent. You're exposing user data because..."
|
|
25
39
|
|
|
26
40
|
**DO NOT USE FOR:** Junior devs' first PRs, demoralized teams, public forums, low psychological safety
|
|
41
|
+
|
|
42
|
+
## Minimum Findings Enforcement
|
|
43
|
+
All brutal honesty reviews enforce a minimum of 3 weighted findings (CRITICAL=3, HIGH=2, MEDIUM=1, LOW=0.5). If the initial review finds fewer, escalate to deeper analysis. Brutally honest reviewers should ALWAYS find something -- if you can't, explain exactly why with evidence.
|
|
27
44
|
</default_to_action>
|
|
28
45
|
|
|
29
46
|
## Quick Reference Card
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
skill: brutal-honesty-review
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
description: >
|
|
4
|
+
Evaluation suite for the brutal-honesty-review skill. Tests that the three
|
|
5
|
+
reviewer modes (Linus precision, Ramsay standards, Bach BS-detection) produce
|
|
6
|
+
unvarnished, specific, evidence-backed criticism — and that they do NOT
|
|
7
|
+
sugar-coat genuine defects or fabricate findings on clean code.
|
|
8
|
+
|
|
9
|
+
models_to_test:
|
|
10
|
+
- claude-3.5-sonnet
|
|
11
|
+
- claude-3-haiku
|
|
12
|
+
|
|
13
|
+
mcp_integration:
|
|
14
|
+
enabled: true
|
|
15
|
+
namespace: skill-validation
|
|
16
|
+
query_patterns: true
|
|
17
|
+
track_outcomes: true
|
|
18
|
+
store_patterns: true
|
|
19
|
+
target_agents:
|
|
20
|
+
- qe-learning-coordinator
|
|
21
|
+
- qe-code-reviewer
|
|
22
|
+
|
|
23
|
+
learning:
|
|
24
|
+
store_success_patterns: true
|
|
25
|
+
store_failure_patterns: true
|
|
26
|
+
pattern_ttl_days: 90
|
|
27
|
+
min_confidence_to_store: 0.7
|
|
28
|
+
|
|
29
|
+
result_format:
|
|
30
|
+
json_output: true
|
|
31
|
+
include_timing: true
|
|
32
|
+
include_token_usage: true
|
|
33
|
+
|
|
34
|
+
scenarios:
|
|
35
|
+
- id: BHR-1
|
|
36
|
+
name: Real defect — must be called out specifically
|
|
37
|
+
input: >
|
|
38
|
+
Code with a genuine bug (e.g. an unhandled null path, a SQL string
|
|
39
|
+
concatenation, a swallowed exception).
|
|
40
|
+
expect:
|
|
41
|
+
- The review names the exact defect with file/line, not vague "could be better".
|
|
42
|
+
- At least one mode (Linus/Ramsay/Bach) flags it as a real problem.
|
|
43
|
+
- A concrete fix or direction is given, not just criticism.
|
|
44
|
+
|
|
45
|
+
- id: BHR-2
|
|
46
|
+
name: Clean code — no fabricated findings
|
|
47
|
+
input: A small, correct, well-tested function with no real issues.
|
|
48
|
+
expect:
|
|
49
|
+
- The review does NOT invent severe findings to appear thorough.
|
|
50
|
+
- If it nitpicks, it labels them as nits, not blockers.
|
|
51
|
+
|
|
52
|
+
- id: BHR-3
|
|
53
|
+
name: Certification/claim smell test
|
|
54
|
+
input: A README claiming "100% coverage" or "fully secure" without evidence.
|
|
55
|
+
expect:
|
|
56
|
+
- Bach BS-detection mode challenges the unsubstantiated claim.
|
|
57
|
+
- Asks for the evidence behind the claim.
|
|
58
|
+
|
|
59
|
+
pass_criteria:
|
|
60
|
+
- Findings are specific (cite location) and evidence-backed.
|
|
61
|
+
- No sugar-coating of real defects; no fabrication on clean code.
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://agentic-qe.dev/schemas/skills/brutal-honesty-review/output.json",
|
|
4
|
+
"title": "Brutal Honesty Review Skill Output Schema",
|
|
5
|
+
"description": "Schema for brutal-honesty-review skill output. Validates unvarnished technical criticism with actionable recommendations.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["skillName", "version", "timestamp", "status", "trustTier", "output"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"skillName": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"const": "brutal-honesty-review"
|
|
12
|
+
},
|
|
13
|
+
"version": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9]+)?$"
|
|
16
|
+
},
|
|
17
|
+
"timestamp": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"format": "date-time"
|
|
20
|
+
},
|
|
21
|
+
"status": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"enum": ["success", "partial", "failed", "skipped"]
|
|
24
|
+
},
|
|
25
|
+
"trustTier": {
|
|
26
|
+
"type": "integer",
|
|
27
|
+
"minimum": 1,
|
|
28
|
+
"maximum": 3
|
|
29
|
+
},
|
|
30
|
+
"output": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"required": ["summary", "reviewFindings", "codeQuality"],
|
|
33
|
+
"properties": {
|
|
34
|
+
"summary": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"minLength": 50,
|
|
37
|
+
"maxLength": 3000,
|
|
38
|
+
"description": "Brutally honest executive summary"
|
|
39
|
+
},
|
|
40
|
+
"reviewFindings": {
|
|
41
|
+
"type": "array",
|
|
42
|
+
"items": {
|
|
43
|
+
"$ref": "#/$defs/reviewFinding"
|
|
44
|
+
},
|
|
45
|
+
"minItems": 1,
|
|
46
|
+
"maxItems": 200,
|
|
47
|
+
"description": "Detailed findings with no sugar-coating"
|
|
48
|
+
},
|
|
49
|
+
"codeQuality": {
|
|
50
|
+
"$ref": "#/$defs/codeQuality"
|
|
51
|
+
},
|
|
52
|
+
"severity": {
|
|
53
|
+
"$ref": "#/$defs/severityBreakdown"
|
|
54
|
+
},
|
|
55
|
+
"recommendations": {
|
|
56
|
+
"type": "array",
|
|
57
|
+
"items": {
|
|
58
|
+
"$ref": "#/$defs/recommendation"
|
|
59
|
+
},
|
|
60
|
+
"maxItems": 100,
|
|
61
|
+
"description": "Actionable improvement recommendations"
|
|
62
|
+
},
|
|
63
|
+
"technicalDebt": {
|
|
64
|
+
"$ref": "#/$defs/technicalDebt"
|
|
65
|
+
},
|
|
66
|
+
"readabilityScore": {
|
|
67
|
+
"type": "number",
|
|
68
|
+
"minimum": 0,
|
|
69
|
+
"maximum": 100
|
|
70
|
+
},
|
|
71
|
+
"maintainabilityScore": {
|
|
72
|
+
"type": "number",
|
|
73
|
+
"minimum": 0,
|
|
74
|
+
"maximum": 100
|
|
75
|
+
},
|
|
76
|
+
"verdict": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"enum": ["ship-it", "needs-work", "major-issues", "do-not-merge", "rewrite-needed"],
|
|
79
|
+
"description": "Final honest verdict"
|
|
80
|
+
},
|
|
81
|
+
"metrics": {
|
|
82
|
+
"$ref": "#/$defs/metrics"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"metadata": {
|
|
87
|
+
"$ref": "#/$defs/metadata"
|
|
88
|
+
},
|
|
89
|
+
"validation": {
|
|
90
|
+
"$ref": "#/$defs/validationResult"
|
|
91
|
+
},
|
|
92
|
+
"learning": {
|
|
93
|
+
"$ref": "#/$defs/learningData"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"$defs": {
|
|
97
|
+
"reviewFinding": {
|
|
98
|
+
"type": "object",
|
|
99
|
+
"required": ["id", "title", "severity", "category", "honestAssessment"],
|
|
100
|
+
"properties": {
|
|
101
|
+
"id": {
|
|
102
|
+
"type": "string",
|
|
103
|
+
"pattern": "^REV-\\d{3,6}$"
|
|
104
|
+
},
|
|
105
|
+
"title": {
|
|
106
|
+
"type": "string",
|
|
107
|
+
"minLength": 10,
|
|
108
|
+
"maxLength": 200
|
|
109
|
+
},
|
|
110
|
+
"description": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"maxLength": 2000
|
|
113
|
+
},
|
|
114
|
+
"severity": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"enum": ["critical", "high", "medium", "low", "nitpick"]
|
|
117
|
+
},
|
|
118
|
+
"category": {
|
|
119
|
+
"type": "string",
|
|
120
|
+
"enum": ["architecture", "design", "implementation", "performance", "security", "maintainability", "readability", "testing", "documentation", "naming"]
|
|
121
|
+
},
|
|
122
|
+
"honestAssessment": {
|
|
123
|
+
"type": "string",
|
|
124
|
+
"minLength": 20,
|
|
125
|
+
"maxLength": 2000,
|
|
126
|
+
"description": "Brutally honest assessment with no softening"
|
|
127
|
+
},
|
|
128
|
+
"location": {
|
|
129
|
+
"type": "object",
|
|
130
|
+
"properties": {
|
|
131
|
+
"file": { "type": "string" },
|
|
132
|
+
"line": { "type": "integer", "minimum": 1 },
|
|
133
|
+
"endLine": { "type": "integer", "minimum": 1 },
|
|
134
|
+
"function": { "type": "string" }
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
"codeSnippet": {
|
|
138
|
+
"type": "string",
|
|
139
|
+
"maxLength": 5000
|
|
140
|
+
},
|
|
141
|
+
"suggestedFix": {
|
|
142
|
+
"type": "string",
|
|
143
|
+
"maxLength": 5000
|
|
144
|
+
},
|
|
145
|
+
"effort": {
|
|
146
|
+
"type": "string",
|
|
147
|
+
"enum": ["trivial", "low", "medium", "high", "major"]
|
|
148
|
+
},
|
|
149
|
+
"blocking": {
|
|
150
|
+
"type": "boolean",
|
|
151
|
+
"description": "Whether this blocks merging"
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"codeQuality": {
|
|
156
|
+
"type": "object",
|
|
157
|
+
"required": ["overallScore", "grade"],
|
|
158
|
+
"properties": {
|
|
159
|
+
"overallScore": {
|
|
160
|
+
"type": "number",
|
|
161
|
+
"minimum": 0,
|
|
162
|
+
"maximum": 100
|
|
163
|
+
},
|
|
164
|
+
"grade": {
|
|
165
|
+
"type": "string",
|
|
166
|
+
"pattern": "^[A-F][+-]?$"
|
|
167
|
+
},
|
|
168
|
+
"dimensions": {
|
|
169
|
+
"type": "object",
|
|
170
|
+
"properties": {
|
|
171
|
+
"correctness": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
172
|
+
"readability": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
173
|
+
"maintainability": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
174
|
+
"performance": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
175
|
+
"security": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
176
|
+
"testability": { "type": "number", "minimum": 0, "maximum": 100 }
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"strengths": {
|
|
180
|
+
"type": "array",
|
|
181
|
+
"items": { "type": "string" }
|
|
182
|
+
},
|
|
183
|
+
"weaknesses": {
|
|
184
|
+
"type": "array",
|
|
185
|
+
"items": { "type": "string" }
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
"severityBreakdown": {
|
|
190
|
+
"type": "object",
|
|
191
|
+
"properties": {
|
|
192
|
+
"critical": { "type": "integer", "minimum": 0 },
|
|
193
|
+
"high": { "type": "integer", "minimum": 0 },
|
|
194
|
+
"medium": { "type": "integer", "minimum": 0 },
|
|
195
|
+
"low": { "type": "integer", "minimum": 0 },
|
|
196
|
+
"nitpick": { "type": "integer", "minimum": 0 },
|
|
197
|
+
"blocking": { "type": "integer", "minimum": 0 }
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"recommendation": {
|
|
201
|
+
"type": "object",
|
|
202
|
+
"required": ["id", "title", "priority", "impact"],
|
|
203
|
+
"properties": {
|
|
204
|
+
"id": {
|
|
205
|
+
"type": "string",
|
|
206
|
+
"pattern": "^REC-\\d{3,6}$"
|
|
207
|
+
},
|
|
208
|
+
"title": {
|
|
209
|
+
"type": "string",
|
|
210
|
+
"maxLength": 200
|
|
211
|
+
},
|
|
212
|
+
"description": {
|
|
213
|
+
"type": "string",
|
|
214
|
+
"maxLength": 2000
|
|
215
|
+
},
|
|
216
|
+
"priority": {
|
|
217
|
+
"type": "string",
|
|
218
|
+
"enum": ["critical", "high", "medium", "low"]
|
|
219
|
+
},
|
|
220
|
+
"impact": {
|
|
221
|
+
"type": "string",
|
|
222
|
+
"enum": ["transformative", "significant", "moderate", "minor"]
|
|
223
|
+
},
|
|
224
|
+
"relatedFindings": {
|
|
225
|
+
"type": "array",
|
|
226
|
+
"items": { "type": "string" }
|
|
227
|
+
},
|
|
228
|
+
"effort": {
|
|
229
|
+
"type": "string",
|
|
230
|
+
"enum": ["trivial", "low", "medium", "high", "major"]
|
|
231
|
+
},
|
|
232
|
+
"codeExample": {
|
|
233
|
+
"type": "string",
|
|
234
|
+
"maxLength": 5000
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
"technicalDebt": {
|
|
239
|
+
"type": "object",
|
|
240
|
+
"properties": {
|
|
241
|
+
"totalDebtHours": { "type": "number", "minimum": 0 },
|
|
242
|
+
"debtRatio": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
243
|
+
"categories": {
|
|
244
|
+
"type": "array",
|
|
245
|
+
"items": {
|
|
246
|
+
"type": "object",
|
|
247
|
+
"properties": {
|
|
248
|
+
"category": { "type": "string" },
|
|
249
|
+
"hours": { "type": "number" },
|
|
250
|
+
"priority": { "type": "string" }
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
"metrics": {
|
|
257
|
+
"type": "object",
|
|
258
|
+
"properties": {
|
|
259
|
+
"filesReviewed": { "type": "integer", "minimum": 0 },
|
|
260
|
+
"linesReviewed": { "type": "integer", "minimum": 0 },
|
|
261
|
+
"totalFindings": { "type": "integer", "minimum": 0 },
|
|
262
|
+
"blockingIssues": { "type": "integer", "minimum": 0 },
|
|
263
|
+
"suggestedFixes": { "type": "integer", "minimum": 0 }
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
"metadata": {
|
|
267
|
+
"type": "object",
|
|
268
|
+
"properties": {
|
|
269
|
+
"executionTimeMs": { "type": "integer", "minimum": 0 },
|
|
270
|
+
"toolsUsed": { "type": "array", "items": { "type": "string" } },
|
|
271
|
+
"agentId": { "type": "string", "pattern": "^qe-[a-z][a-z0-9-]*$" },
|
|
272
|
+
"reviewScope": { "type": "string" },
|
|
273
|
+
"reviewType": { "type": "string", "enum": ["full", "incremental", "focused"] }
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
"validationResult": {
|
|
277
|
+
"type": "object",
|
|
278
|
+
"properties": {
|
|
279
|
+
"schemaValid": { "type": "boolean" },
|
|
280
|
+
"contentValid": { "type": "boolean" },
|
|
281
|
+
"confidence": { "type": "number", "minimum": 0, "maximum": 1 }
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
"learningData": {
|
|
285
|
+
"type": "object",
|
|
286
|
+
"properties": {
|
|
287
|
+
"patternsDetected": { "type": "array", "items": { "type": "string" } },
|
|
288
|
+
"reward": { "type": "number", "minimum": 0, "maximum": 1 }
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skillName": "brutal-honesty-review",
|
|
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.reviewFindings",
|
|
15
|
+
"output.codeQuality"
|
|
16
|
+
],
|
|
17
|
+
"requiredNonEmptyFields": [],
|
|
18
|
+
"mustContainTerms": [
|
|
19
|
+
"review",
|
|
20
|
+
"code"
|
|
21
|
+
],
|
|
22
|
+
"mustNotContainTerms": [
|
|
23
|
+
"TODO",
|
|
24
|
+
"FIXME"
|
|
25
|
+
],
|
|
26
|
+
"enumValidations": {
|
|
27
|
+
".status": [
|
|
28
|
+
"success",
|
|
29
|
+
"partial",
|
|
30
|
+
"failed",
|
|
31
|
+
"skipped"
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
}
|