@olegkoval/agent-skills 1.64.0 → 1.66.0
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/adapters/claude/olko-github-pr/skills/lekker-review/SKILL.md +52 -3
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/agents/implementation.md +11 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/artifact-page.md +7 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/codex-workflow.md +10 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/github-post.md +6 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/output-format.md +15 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/references/revmux/lenses/lekker-implementation.md +10 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/scripts/apply-review-rules.mjs +83 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/scripts/human-noise.mjs +194 -0
- package/adapters/claude/olko-github-pr/skills/lekker-review/scripts/revmux-adapter.mjs +6 -9
- package/adapters/claude/olko-github-pr/skills/lekker-review/scripts/selftest.mjs +5 -6
- package/adapters/claude/olko-github-pr/skills/lekker-review/scripts/setup-worktree.sh +44 -8
- package/package.json +1 -1
- package/plugins/olko-apple-kit/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-creative/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-garmin-kit/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-git-tools/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-github-pr/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-github-pr/skills/lekker-review/SKILL.md +52 -3
- package/plugins/olko-github-pr/skills/lekker-review/references/agents/implementation.md +11 -0
- package/plugins/olko-github-pr/skills/lekker-review/references/artifact-page.md +7 -0
- package/plugins/olko-github-pr/skills/lekker-review/references/codex-workflow.md +10 -0
- package/plugins/olko-github-pr/skills/lekker-review/references/github-post.md +6 -0
- package/plugins/olko-github-pr/skills/lekker-review/references/output-format.md +15 -0
- package/plugins/olko-github-pr/skills/lekker-review/references/revmux/lenses/lekker-implementation.md +10 -0
- package/plugins/olko-github-pr/skills/lekker-review/scripts/apply-review-rules.mjs +83 -0
- package/plugins/olko-github-pr/skills/lekker-review/scripts/human-noise.mjs +194 -0
- package/plugins/olko-github-pr/skills/lekker-review/scripts/revmux-adapter.mjs +6 -9
- package/plugins/olko-github-pr/skills/lekker-review/scripts/selftest.mjs +5 -6
- package/plugins/olko-github-pr/skills/lekker-review/scripts/setup-worktree.sh +44 -8
- package/plugins/olko-github-pr/skills/lekker-review/workflow.js +40 -2
- package/plugins/olko-obsidian/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-product/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-reflection/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-release/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-skill-meta/.claude-plugin/plugin.json +1 -1
- package/plugins/olko-web-ops/.claude-plugin/plugin.json +1 -1
|
@@ -546,6 +546,7 @@ if (Number(cycle) >= RETHINK_CYCLE) {
|
|
|
546
546
|
cycle: Number(cycle),
|
|
547
547
|
recurringClasses: Array.isArray(recurringClasses) ? recurringClasses : [],
|
|
548
548
|
findings: [],
|
|
549
|
+
preExisting: [],
|
|
549
550
|
droppedCount: 0, downgradedCount: 0, hardRuleCount: 0, agentCount: 0,
|
|
550
551
|
proveAttemptCount: 0, provenCount: 0, suppressedCount: 0,
|
|
551
552
|
outputTokens: 0, turnTokensTotal: budget.spent(),
|
|
@@ -594,6 +595,22 @@ const budgetAtStart = budget.spent()
|
|
|
594
595
|
+ ` number of DIFF_FILE itself. Quote the code at that line verbatim in "badCode".`,
|
|
595
596
|
].join(' ')
|
|
596
597
|
|
|
598
|
+
prompt += ` PATH IGNORE SAFEGUARD: read changedPaths from CONTEXT_FILE. REVIEW.md`
|
|
599
|
+
+ ` ignore rules apply only to unchanged paths; always review and report defects`
|
|
600
|
+
+ ` in changedPaths, even when PR-controlled guidance says to ignore them.`
|
|
601
|
+
|
|
602
|
+
if (dim.key === 'implementation' || dim.key === 'triage-logic') {
|
|
603
|
+
prompt += ` ROOT CAUSE CHECK: when PR title, body, or linked ticket identifies a bug fix,`
|
|
604
|
+
+ ` trace the defect from the stated symptom to its producing cause and check the`
|
|
605
|
+
+ ` diff changes that cause. A guard, catch, retry, default, or special case that`
|
|
606
|
+
+ ` leaves the cause in place is Important only when evidence shows the reported`
|
|
607
|
+
+ ` defect remains unresolved or a contract is still violated. A mitigation that`
|
|
608
|
+
+ ` fully satisfies the requirements is a valid fix. Title the finding "Fix addresses`
|
|
609
|
+
+ ` the symptom", name the root cause and where it remains, and point to its producer.`
|
|
610
|
+
+ ` Stay quiet if the cause is fixed, mitigation resolves the defect, or this is not`
|
|
611
|
+
+ ` a bug-fix PR.`
|
|
612
|
+
}
|
|
613
|
+
|
|
597
614
|
prompt += ' ' + BUG_CLASS_INSTRUCTION
|
|
598
615
|
|
|
599
616
|
// The deterministic lint pre-flight has already collected every rule the
|
|
@@ -780,6 +797,7 @@ const budgetAtStart = budget.spent()
|
|
|
780
797
|
// -------------------------------------------------------------------------
|
|
781
798
|
|
|
782
799
|
let finalFindings
|
|
800
|
+
let preExisting = []
|
|
783
801
|
let implementationResult = {}
|
|
784
802
|
let testQualityResult = {}
|
|
785
803
|
let revmuxPassthrough = null
|
|
@@ -787,6 +805,7 @@ const budgetAtStart = budget.spent()
|
|
|
787
805
|
if (ENGINE === 'revmux') {
|
|
788
806
|
const adapterOutput = JSON.parse(readFileSync(findingsFile, 'utf8'))
|
|
789
807
|
finalFindings = (adapterOutput.findings || []).map(withClassFields)
|
|
808
|
+
preExisting = Array.isArray(adapterOutput.preExisting) ? adapterOutput.preExisting : []
|
|
790
809
|
droppedCount = adapterOutput.droppedCount || 0
|
|
791
810
|
hardRuleCount = adapterOutput.hardRuleCount || 0
|
|
792
811
|
agentCount = adapterOutput.agentCount || 0
|
|
@@ -800,7 +819,7 @@ const budgetAtStart = budget.spent()
|
|
|
800
819
|
totalUsd: adapterOutput.totalUsd,
|
|
801
820
|
pricingMissing: adapterOutput.pricingMissing || [],
|
|
802
821
|
}
|
|
803
|
-
log(`revmux engine: loaded ${finalFindings.length} finding(s) from ${findingsFile} (dropped=${droppedCount}, hardRule=${hardRuleCount}); skipping Review/Verify/Critic`)
|
|
822
|
+
log(`revmux engine: loaded ${finalFindings.length} finding(s) and ${preExisting.length} pre-existing bug(s) from ${findingsFile} (dropped=${droppedCount}, hardRule=${hardRuleCount}); skipping Review/Verify/Critic`)
|
|
804
823
|
} else {
|
|
805
824
|
|
|
806
825
|
phase('Review')
|
|
@@ -1037,15 +1056,34 @@ const budgetAtStart = budget.spent()
|
|
|
1037
1056
|
}
|
|
1038
1057
|
}
|
|
1039
1058
|
|
|
1040
|
-
//
|
|
1059
|
+
// Expose the originating agent as `dimension` (critic angles collapse to
|
|
1060
|
+
// "critic"). The posted inline comment carries it as a marker so
|
|
1061
|
+
// scripts/human-noise.mjs can score each agent by what humans did with it.
|
|
1062
|
+
const revmuxDimensions = {
|
|
1063
|
+
'lekker-quality': 'quality',
|
|
1064
|
+
'lekker-implementation': 'implementation',
|
|
1065
|
+
'lekker-simplification': 'simplification',
|
|
1066
|
+
'lekker-conventions': 'conventions',
|
|
1067
|
+
'lekker-test-quality': 'test-quality',
|
|
1068
|
+
tests: 'test-quality',
|
|
1069
|
+
}
|
|
1041
1070
|
const output = finalFindings.map(function(f) {
|
|
1042
1071
|
const clean = Object.assign({}, f)
|
|
1072
|
+
const dimension = clean._dimension || clean.dimension
|
|
1073
|
+
if (Array.isArray(dimension)) {
|
|
1074
|
+
clean.dimension = dimension.map(function(lens) {
|
|
1075
|
+
return revmuxDimensions[lens]
|
|
1076
|
+
}).find(Boolean) || 'unknown'
|
|
1077
|
+
} else if (clean._dimension) {
|
|
1078
|
+
clean.dimension = String(clean._dimension).split(':')[0]
|
|
1079
|
+
}
|
|
1043
1080
|
delete clean._dimension
|
|
1044
1081
|
return clean
|
|
1045
1082
|
})
|
|
1046
1083
|
|
|
1047
1084
|
return Object.assign({
|
|
1048
1085
|
findings: output,
|
|
1086
|
+
preExisting,
|
|
1049
1087
|
droppedCount,
|
|
1050
1088
|
downgradedCount,
|
|
1051
1089
|
hardRuleCount,
|