validate-judge — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited validate-judge (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Measure whether a judge prompt agrees with human labels.
Setup → Design → Calibrate → ► Validate → Execute → Diagnose → IterateThis skill follows generate-judges. It produces confidence that the judge works before you run kensa eval at scale. Skip this if your judge uses only deterministic checks.
Accuracy is misleading when classes are imbalanced. If 90% of outputs pass, a judge that always says "pass" gets 90% accuracy but catches zero failures.
Both must be high. Low TPR means the judge is too strict (false negatives). Low TNR means the judge is too lenient (false positives).
Target: TPR ≥ 90% and TNR ≥ 90%. Adjust threshold if the domain demands it.
You need 8-20 labeled examples. More is better but diminishing returns after ~20.
Source 1: Extract from traces. If you have prior eval runs:
kensa report --format jsonRead the agent outputs from results. Present each output to the user and ask: "pass or fail?" Record their verdict.
Source 2: Manually authored. Write realistic outputs that cover:
Source 3: From judge prompt examples. The few-shot examples in the judge YAML are training data. Do NOT reuse them as validation data, that measures memorization, not generalization. Write fresh examples.
Save to .kensa/labels/{judge-name}.yaml:
examples:
- output: "Agent output text here..."
label: pass
- output: "Another output..."
label: failBalance the dataset: roughly equal pass and fail examples. Skewed datasets make TPR or TNR unreliable.
uv run python ${CLAUDE_SKILL_DIR}/scripts/validate_judge.py <judge-name> .kensa/labels/<judge-name>.yamlOptions:
--threshold 0.9: minimum TPR and TNR (default: 0.9)--json: machine-readable outputThe script loads the judge prompt, runs it against each labeled example, and reports the confusion matrix.
Read the output. Focus on disagreements:
Low TPR (too strict): The judge rejects outputs that humans accept. Read the false negatives, what did the judge cite as the failure reason?
Low TNR (too lenient): The judge accepts outputs that humans reject. Read the false positives, what did the judge miss?
Both low: The criterion is ambiguous. The judge is guessing. Rewrite the criterion to be more specific, or split into multiple judges.
After adjusting the judge prompt (pass/fail definitions, examples):
uv run python ${CLAUDE_SKILL_DIR}/scripts/validate_judge.py <judge-name> .kensa/labels/<judge-name>.yamlDo NOT add the validation examples to the judge prompt's few-shot examples. That contaminates the validation set. If you want to add examples to the prompt, write new ones.
Typical iteration count: 2-4 rounds. If you're past 5 rounds, the criterion may be too subjective for automated judging, consider splitting it or using deterministic checks instead.
Once the judge is validated, use bootstrap resampling to estimate the true pass rate on unlabeled data with confidence intervals:
uv run python ${CLAUDE_SKILL_DIR}/scripts/validate_judge.py <judge-name> .kensa/labels/<judge-name>.yaml --bootstrapThis resamples the validation set 1000 times, computes the bias-corrected pass rate each time (using Rogan-Gladen: (apparent + TNR - 1) / (TPR + TNR - 1)), and reports the median with a 95% CI. The CI tells you how much to trust the number given your validation set size.
If the CI is wide (e.g., 40%–80%), you need more labeled examples. If it's tight (e.g., 62%–68%), you have enough.
kensa judge (env var → API key → error).~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.