audit-vs-fix-discipline — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited audit-vs-fix-discipline (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 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.
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.
<!-- Last updated: 2026-05-19T12:00+10:00 -->
Audits produce findings. Fixes happen separately, on explicit user request.
Violating the letter of this rule violates the spirit. "Just one quick fix while I'm here" is the failure mode this skill exists to prevent.
audit, review, investigate, check, scan, look at, look over, go through, inspect, find issues in, what's wrong with, how's the X looking, is the X any good, tell me about the X.
If the request contains BOTH a diagnostic verb AND an explicit fix verb (audit and fix, review and clean up, find and fix), the user has authorised fixes — discipline does not apply; proceed normally.
While in audit mode you MUST:
Want me to fix any of these? Specify by number, severity tier, or "fix all P0". Then stop.A clean audit is a valid outcome. Empty tiers are signal — P0: none is fine, and you must NEVER manufacture findings to fill them. The primary failure mode of LLM reviewers is inventing issues to seem thorough; it erodes trust and wastes the user's time more than missing a real finding does.
Confidence gate: ≥80% sure it's a real problem, or drop it. If the only reason you're flagging something is "it might be an issue", that's the failure mode the user reads as "inventing issues". Speculation belongs in Suggested follow-ups, not in a tiered finding.
Pre-report 4-question check. Before adding any finding to a tier, answer:
file:line?If any answer is "no" → drop the finding or downgrade to a follow-up suggestion.
Pre-filtered exclusion list — do NOT flag:
Apply this exclusion list before running the 4-question check.
Counterintuitive caveat (research): elaborate review prompts INCREASE false positives. Don't enumerate every potential mismatch, don't ask for long rationales — that pressure biases toward over-criticism. Stay terse, gate hard, drop liberally.
git add, git commit, or any state-changing git command.| Excuse | Reality |
|---|---|
| "It's a one-line fix, faster to just do it." | The user can read a one-line fix from a finding. The cost is consistency, not keystrokes. |
| "Critical security bug — has to be fixed now." | Report it as P0 with the proposed fix in the body. User decides timing. |
| "Lint errors are pre-existing, not part of this audit." | If you see them, report them at P1. The user asked you to audit — that includes whatever you find. |
| "The user clearly meant to fix it." | If they meant fix, they'd say fix. Ambiguous prompts default to audit mode. |
| "I'll just fix the trivial ones and report the rest." | This is the most common violation. Don't. |
| "I'll batch the audit and the fixes into one response to save round-trips." | Round-trips are the point. The audit is a checkpoint for scope. |
| "The diff is small enough that the audit + fix is one logical change." | The audit is the deliverable. The fix is a separate deliverable. |
| "I should fill in P1/P2 to look thorough." | Empty tiers are valid signal. "P0: none" is a correct result. Manufactured findings erode trust. |
| "It might be an issue, I'll flag it just in case." | If you're <80% sure, drop it. Speculation belongs in Suggested follow-ups, not findings. |
Edit or Write during an audit.Each of these means: STOP. Go back to findings-only mode.
## Audit: <scope> — <criteria>
### P0 (blocking)
- `path/to/file.ts:42` — <one-line finding>. <one-sentence why it matters>.
### P1 (quality / correctness risk)
- `path/to/file.ts:88` — ...
### P2 (nits)
- `path/to/file.ts:120` — ...
### Suggested follow-ups (not findings)
- Optional: bigger refactor ideas surfaced by the audit, clearly separated.
---
Want me to fix any of these? Specify by number, by tier ("fix all P0"), or by file.If a tier is empty, say "P0: none" — don't omit the header. Empty headers are signal.
foo() broken?") with a one-shot answer — no formal audit needed.Before producing findings, check the project root for REVIEW.md. If present, read it — its calibration overrides this skill's defaults. Common overrides:
When REVIEW.md and this skill disagree, REVIEW.md wins — it's the user's per-project policy.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.