audit — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited audit (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.
.claude/autoimprove/config.md exists. If not, stop: "Run /autoimprove:setup first."Run the measure skill to get the composite score and per-metric breakdown. Capture both the scores AND the raw command output for each metric.
For each metric defined in the config:
tsc --noEmit 2>&1, pnpm test 2>&1, pnpm lint 2>&1)Parse the raw output from each command to count specific issues:
error TS for TypeScript, error: for Rust). Group by file.For each metric with a gap (score < max):
ceil(issue_count / issues_per_iteration) using these heuristics:Read weights dynamically from .claude/autoimprove/config.md. If a metric is not applicable, skip it and redistribute weight as the measure skill already handles.
Sort areas by efficiency (highest pts/iteration first).
Print the audit report:
━━━ Codebase Audit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Current Score: XX/100
[Metric 1]: XX/WW [progress bar] (gap pts to max) or ✓ maxed
[Metric 2]: XX/WW [progress bar] (gap pts to max) or ✓ maxed
[Metric 3]: XX/WW [progress bar] (gap pts to max) or ✓ maxed
[Metric 4]: XX/WW [progress bar] (gap pts to max) or ✓ maxed
━━━ Fastest Path to 100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# Area Gap Issues Est. iterations Efficiency
1 [best area] Xpts N items M iterations X.X pts/iter ← best
2 [next area] Xpts N items M iterations X.X pts/iter
...
Total: ~N iterations to reach 100/100
⚡ Estimated token usage: ~XXXK tokens (rough estimate, actual usage varies)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━The progress bar uses filled blocks (█) and empty blocks (░), scaled to 10 characters per metric.
If score is 100/100: Still print the full report (progress bars, efficiency table with all zeroes, and token estimate of ~0K tokens) so the output format is always consistent. After the report, print "Nothing to improve." and stop — do not prompt for the interactive fix loop.
If build fails: Show build as #1 priority with a note: "⚠️ Build is failing — other metrics may be unreliable. Fix the build first."
If only one area has a gap: Skip the selection prompt. Just ask: "Fix [area]? (~N iterations, ~XXXK tokens) (Y/n)"
Check for interrupted session first: If .claude/autoimprove/log.md exists and the last session has IN_PROGRESS status, show: "↩️ You have an interrupted session. Use /autoimprove:continue to resume, or continue with this audit for a fresh start."
Prompt the user:
Would you like to start fixing? (Y/n)If no: Stop. User can run /autoimprove:improve manually.
If yes:
Which area? (Enter number, or press Enter for #1 — [area name], ~N iterations)
>If the user picks a number, use that area's estimate. If they press Enter, use the most efficient area.
Count all **Branch:** autoimprove/experiment- entries in .claude/autoimprove/log.md (if it exists) to determine the experiment offset.
Invoke the improve-loop skill directly with:
newRe-run the measurement suite (Step 1-3) to get updated scores. Then show:
━━━ Area Complete: [area name] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Score: XX → YY/100 (+delta)
[area]: WW/WW ██████████ ✓ maxed
Remaining work:
# Area Gap Est. iterations Efficiency
1 [next] Xpts M iterations X.X pts/iter
...
Remaining: ~N iterations (~XXXK tokens)
Continue to next area? (Y/n)If yes: Repeat the selection prompt (or auto-select if only one area left). Start a new improve-loop session for that area.
If no: Stop. Print final score.
If all areas maxed: "🎉 Codebase score: 100/100. All areas maxed!"
If the improve loop finishes its estimated iterations but the area isn't maxed yet, show actual results:
Area [name] partially improved: XX → YY (expected ZZ)
Run more iterations on this area? (Y/n)If yes, run more iterations (re-estimate based on remaining gap). If no, move to the next area.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.