Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Adversarial review of code quality findings. Challenges insights with counter-evidence, verifies claims against source code, and produces structured verdicts. Triggers on 'insight-challenge', 'challenge finding', '审查发现'.
.claude/skills/catlog22-insight-challenge/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | 148% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 123% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 87% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 242% | 0% |
Adversarial review of code quality findings. Challenges insights with counter-evidence, verifies claims against source code, and produces structured verdicts.
适用场景: 当需要对代码审查、质量分析、或架构评估中的发现进行对抗性验证时使用。
┌─────────────────────────────────────────────────────────────┐
│ Insight Challenge (SKILL.md) — Adversarial Review │
│ → Parse finding → Read source → Challenge → Verdict │
└─────────────────────────────────────────────────────────────┘
│
┌──────────┬───────────┼───────────┬──────────┐
↓ ↓ ↓ ↓ │
┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │
│Phase 1 │ │Phase 2 │ │Phase 3 │ │Phase 4 │ │
│ Parse │ │ Source │ │Challenge│ │Verdict │ │
│Finding │ │ Review │ │Analysis │ │Report │ │
└───┬────┘ └───┬────┘ └───┬────┘ └───┬────┘ │
│ │ │ │ │
finding source counter- structured │
parsed code evidence verdict │Findings can be provided as JSON or structured text:
json{ "id": "HIGH-01", "title": "知识边类型 resolves/documents 未在 types.ts 声明", "severity": "high", "file": "src/graph/kg/db/types.ts", "line": 58, "description": "issue-extractor 使用 'resolves' 边类型...", "evidence": "types.ts KnowledgeEdgeKind: defines, constrains...", "suggestion": "补齐缺失的边类型声明", "design_ref": "Gap 2 — 12 CodeEdgeKind + 9 KnowledgeEdgeKind" }
Or structured text:
HIGH-01: 知识边类型 resolves/documents 未在 types.ts 声明
Severity: high
File: src/graph/kg/db/types.ts:58
Claim: issue-extractor 使用 'resolves' 边类型但未在类型系统中声明
Evidence: types.ts KnowledgeEdgeKind 列表中缺少 'resolves'For each claim in the finding:
Challenge strategies:
Produce structured output:
json{ "finding_id": "HIGH-01", "challenge_result": "overturned|weakened|confirmed", "confidence": 95, "reasoning": "Detailed explanation of why the finding was challenged or confirmed", "counter_evidence": [ "Source file line 64: 'resolves' IS declared in KnowledgeEdgeKind", "Design doc specifies 20 edge types, not 28" ], "supporting_evidence": [], "adjusted_severity": "none|high|medium|low", "recommendation": "Dismiss this finding; the claimed gap does not exist" }
| Verdict | Meaning | When to Use | |---------|---------|-------------| | overturned | Finding is factually incorrect | Source code directly contradicts the claim | | weakened | Finding is partially correct but overstated | Some evidence supports it, but severity/scope is wrong | | confirmed | Finding is accurate | Source code supports all claims |
Claim: "Type X is not declared"
Challenge: Read the type file → check if X exists in type union/enum
Counter: "Line N shows X IS declared in the type definition"Claim: "Design requires N items, implementation has M"
Challenge: Read design doc → verify the claimed requirement
Counter: "Design doc actually specifies K items, not N"Claim: "Code uses type X but X is not defined"
Challenge: Check both usage site AND definition site
Counter: "X is defined at line N in file Y"Claim: "Missing 7 edge types (total should be 28)"
Challenge: Check what the "28" actually refers to
Counter: "The 28 refers to language types, not edge types; edge types are 21"The challenge produces a markdown report:
markdown## Challenge Report: <finding_id> **Verdict**: <overturned|weakened|confirmed> **Confidence**: <0-100>% **Adjusted Severity**: <none|high|medium|low> ### Original Finding <finding summary> ### Counter-Evidence - <evidence point 1> - <evidence point 2> ### Supporting Evidence - <evidence point 1> (if any) ### Reasoning <detailed explanation> ### Recommendation <action recommendation>
| Scenario | Resolution | |----------|------------| | Referenced file not found | Report file missing; verdict = weakened (potentially stale) | | Line number out of range | Search for the claimed content; adjust line reference | | Design doc not found | Skip design verification; note in report | | Ambiguous evidence | Present both sides; lower confidence score | | Multiple findings batch | Process each independently; produce per-finding verdicts |
Skill(skill="insight-challenge", args='{"id":"HIGH-01","title":"...","file":"src/types.ts","line":58,...}')spawn_agent({ task_name: "insight_challenge", message: "Execute skill insight-challenge, args: findings.json" })Challenge this finding:
Claim: Function X is not exported
File: src/utils.ts:45
Evidence: grep shows no export keyword| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | pass→fail | 7,824 | 3,876 | -50% | 1 | 1 | 0% | 1,410 | 2,291 | +62% | 0 | 0 | — |
case-11 | fail→pass | 7,002 | 5,327 | -24% | 1 | 1 | 0% | 1,080 | 2,676 | +148% | 0 | 0 | — |
case-16 | fail→pass | 8,482 | 5,668 | -33% | 1 | 1 | 0% | 1,224 | 2,728 | +123% | 0 | 0 | — |
case-17 | fail→pass | 17,131 | 7,676 | -55% | 1 | 1 | 0% | 2,473 | 3,040 | +23% | 0 | 0 | — |
case-18 | pass→pass | 8,872 | 15,174 | +71% | 1 | 1 | 0% | 1,276 | 2,815 | +121% | 0 | 0 | — |
case-04 | pass→pass | 11,195 | 10,221 | -9% | 1 | 1 | 0% | 1,950 | 3,686 | +89% | 0 | 0 | — |
case-01 | fail→fail | 17,622 | 4,877 | -72% | 1 | 1 | 0% | 2,842 | 2,158 | -24% | 0 | 0 | — |
case-02 | fail→fail | 4,626 | 6,950 | +50% | 1 | 1 | 0% | 309 | 2,307 | +647% | 0 | 0 | — |
case-03 | fail→fail | 15,410 | 5,752 | -63% | 1 | 1 | 0% | 2,306 | 2,173 | -6% | 0 | 0 | — |
case-06 | pass→fail | 12,503 | 29,368 | +135% | 1 | 1 | 0% | 2,239 | 6,804 | +204% | 0 | 0 | — |
case-07 | fail→fail | 4,079 | 7,976 | +96% | 1 | 1 | 0% | 658 | 3,157 | +380% | 0 | 0 | — |
case-08 | fail→fail | 13,403 | 6,942 | -48% | 1 | 1 | 0% | 2,080 | 2,944 | +42% | 0 | 0 | — |
case-09 | fail→pass | 12,398 | 11,149 | -10% | 1 | 1 | 0% | 1,941 | 3,628 | +87% | 0 | 0 | — |
case-10 | fail→pass | 4,955 | 5,703 | +15% | 1 | 1 | 0% | 839 | 2,873 | +242% | 0 | 0 | — |
case-12 | fail→pass | 9,262 | 7,335 | -21% | 1 | 1 | 0% | 1,362 | 2,799 | +106% | 0 | 0 | — |
case-13 | fail→pass | 17,450 | 12,988 | -26% | 1 | 1 | 0% | 2,340 | 4,059 | +73% | 0 | 0 | — |
case-14 | fail→pass | 12,040 | 6,374 | -47% | 1 | 1 | 0% | 2,115 | 2,845 | +35% | 0 | 0 | — |
case-15 | fail→pass | 16,681 | 5,425 | -67% | 1 | 1 | 0% | 2,629 | 2,720 | +3% | 0 | 0 | — |
case-19 | fail→pass | 4,188 | 5,558 | +33% | 1 | 1 | 0% | 617 | 2,805 | +355% | 0 | 0 | — |
case-20 | fail→pass | 7,139 | 4,975 | -30% | 1 | 1 | 0% | 1,047 | 2,632 | +151% | 0 | 0 | — |
case-21 | fail→pass | 8,704 | 6,111 | -30% | 1 | 1 | 0% | 1,358 | 2,831 | +108% | 0 | 0 | — |
case-22 | pass→pass | 15,120 | 7,911 | -48% | 1 | 1 | 0% | 2,204 | 3,002 | +36% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 19 comparable cases. 4 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.