Skip to content
Agentmart
Submit a tool

evidence-driven-claim-validator

Reject LLM-generated root-cause claims that aren't supported by the actual evidence dict — claim mentions "memory" but no host_metrics?

Skill by kjuhwa

IndexedMIT
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/kjuhwa-evidence-driven-claim-validator

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Reject LLM-generated root-cause claims that aren't supported by the actual evidence dict — claim mentions "memory" but no host_metrics? mark not-validated. Uses a per-keyword evidence requirement table and outputs a confidence score.

Use cases: ml, agent-building

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/evidence-driven-claim-validator

What's inside

Skill name
evidence-driven-claim-validator
Description
Reject LLM-generated root-cause claims that aren't supported by the actual evidence dict — claim mentions "memory" but no host_metrics? mark not-validated. Uses a per-keyword evidence requirement table and outputs a confidence score.
License
MIT
Instructions
59 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Evidence-Driven Claim Validator

## When to use
Your LLM returns a list of "validated claims" (with `extract_evidence_sources` references) but you don't trust them. You want a deterministic post-filter: each claim is checked against the real evidence dict, and a weighted confidence score is computed so downstream nodes can decide whether to loop or publish.

## How it works
- Per-claim keyword detection: if claim mentions "memory" or "cpu", evidence must include `host_metrics.data` or RDS metrics; "log/error/fail" requires logs; "rds/postgres/database" requires RDS metrics or events; etc.
- `validate_claim(claim, evidence)` returns a bool; `validate_and_categorize_claims` reshuffles claims between `validated` and `non_validated` lists based on the actual check.
- `extract_evidence_sources(claim, evidence)` attaches a list of "real" sources (cloudwatch_logs, datadog_monitors, ...) to each validated claim — falls back to the generic `evidence_analysis` sentinel.
- `calculate_validity_score` weighs validated-with-real-sources at 1.0, validated-but-failed-our-check at 0.5, non-validated at 0.0, plus a +0.1 bonus when at least one claim has non-generic evidence sources.

## Example
```python
def validate_claim(claim, evidence):
    cl = claim.lower()
    has_dd = bool(evidence.get("datadog_logs") or evidence.get("datadog_error_logs"))

    if any(k in cl for k in ("log","error","fail")) and not _has_any_logs(evidence):
        return False
    if any(k in cl for k in ("memory","cpu")) and not (
        evidence.get("host_metrics", {}).get("data")
        or _has_rds_metrics(evidence) or _has_performance_insights(evidence)
        or (any(kw in cl for kw in ("monitor","datadog")) and has_dd)
    ):
        return False
    if any(k in cl for k in ("rds","postgres","database","replication","connection",
                              "storage","disk","failover","reboot")) and not (
        _has_rds_metrics(evidence) or _has_rds_events(evidence)
        or _has_performance_insights(evidence)
    ):
        return False
    # ... lambda, s3, schema, vendor, k8s checks ...
    return True

def calculate_validity_score(validated, non_validated):
    if not validated and not non_validated: return 0.0
    score = total = 0.0
    for c in validated:
        srcs = c.get("evidence_sources", [])
        has_real = any(s != "evidence_analysis" for s in srcs)
        if c.get("validation_status") == "validated":
            score += 1.0 if has_real else 0.8
        else:
            score += 0.5
        total += 1.0
    total += len(non_validated)
    base = score / total if total else 0.0
    has_real_evidence = any(
        s != "evidence_analysis" for c in validated for s in c.get("evidence_sources", [])
    )
    return min(1.0, round(base + (0.1 if has_real_evidence and validated else 0), 2))
```

## Gotchas
- Keep the keyword tables close to the evidence shape; if you add a new evidence key, add the corresponding claim-keyword check. Otherwise the validator silently rubber-stamps new categories.
- The 0.8 vs 1.0 split between "validated with generic sources" vs "validated with real sources" is what makes the score meaningful — without it, a model that always answers "evidence_analysis" gets perfect scores.
- Apply this AFTER masking is reversed; otherwise placeholder strings won't match keyword checks.

From kjuhwa/skills-hub, MIT.

More from kjuhwa/skills-hub

Signals

Stars
0
Forks
0
Open issues
17
Last commit (this folder)
Apr 25, 2026 (6 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from kjuhwa

Cite this page

evidence-driven-claim-validator skill. Agent Mart. https://agentmart.dev/skills/kjuhwa-evidence-driven-claim-validator (last updated 2026-10-24)