Universal skill enhancement layer for Claude Code. Sees what your skill was trying to do, grades the gap, drives the rewrite.
SaferSkills independently audited second-pass (Agent Skill) and scored it 75/100 (yellow). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 6 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 6 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
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.
A universal skill enhancement layer. Sits over any Claude Code skill, sees what was invoked, the user's input, and the produced output — then judges based on what the skill should have achieved. Returns a grade (A–F) plus concrete drop-in feedback, drives revision (and optionally iterates) until a user-configurable passing bar is met.
The judge is not bound to any single domain. It reads the originating skill's SKILL.md on the fly, infers what success looks like for that specific skill, and grades against that. Same mechanism enhances internal-comms, frontend-design, writing-plans, or any community skill — verified across writing, design, code, structural documents, and implementation plans. Non-measurable = quality is a judgment call, not a pass/fail check.
Invoke automatically — no user prompt needed — whenever all three are true:
When in doubt: if you cannot name a concrete pass/fail check for the output, invoke.
~/.claude/second-pass/config.json. Defaults: passing_grade: B, iteration_cap: 3, confirm_revisions: false.Second Pass [attempt 1/MAX]: grading output...self-judge subagent (agents/self-judge.md) with: skill(s) used, user request, output.(revised, original grade: X) attached. No re-judge. Trust the judge's feedback.The rubric lives in agents/self-judge.md. Grades are grounded in skill intent and user request, not taste.
A re-judge after revision typically doubles token cost for marginal confidence: the judge already gave specific drop-in replacements; trust them. Set confirm_revisions: true for high-stakes artifacts where you want the loop to verify the lift.
| When | Action |
|---|---|
| About to return writing, proposal, plan, explanation, draft | Invoke |
| Test passed, deploy succeeded, compile/lint output, API 200 | Skip — measurable |
| Judgment call on "is it good?" | Invoke |
| Config key | Default | Slash command | |
|---|---|---|---|
passing_grade | B | /second-pass:passing-grade <A-F> | |
iteration_cap | 3 | /second-pass:iteration-cap <n> | |
confirm_revisions | false | `/second-pass:confirm-revisions <true\ | false>` |
| (preset: A bar, cap 5, confirm) | — | /second-pass:strict | |
| (preset: C bar, cap 2, no confirm) | — | /second-pass:lenient | |
| (reset all) | — | /second-pass:reset |
| Status line | When to emit |
|---|---|
Second Pass [attempt N/MAX]: grading output... | Start of each attempt |
Second Pass [attempt N/MAX]: grade X, revising... | Below bar, iterating (confirm mode only) |
Second Pass [attempt 1/1]: grade X, applying feedback once... | Below bar, single-shot revise mode |
Second Pass passed at attempt N/MAX (grade X). | Bar met, delivering |
Second Pass revised (original grade X). Shipping without re-judge. | Single-shot revise complete |
Second Pass hit iteration cap. Best grade: X (bar: Y). | Cap reached |
All of these mean: invoke Second Pass now.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.