skill-quality — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited skill-quality (Agent Skill) and scored it 91/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 1 high-severity and 0 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} is the classic direct prompt-injection phrasing. Placed in a skill body that the agent reads as trusted instructions, it tries to make the agent abandon its prior rules and follow whatever comes next — a full system-prompt override.
ignore/disregard/forget … previous instructions sentence.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.
Improve skills by translating observed failures into small, testable contract changes. A good skill change explains when the behavior applies, what future agents must do, how evals will catch regressions, and what evidence proves the change helped.
This skill governs skill and eval quality decisions. It does not authorize release preparation, version bumps, commits, generated workspace commits, or unrelated package rewrites.
Start from the failure signal, not from a preferred rewrite. Collect only the evidence needed for the current decision:
benchmark.json, benchmark.md, grader output,and human feedback.
SKILL.md, references, scripts, README text, CHANGELOG.md, andeval definitions.
failures are only visible in transcripts.
Label implementation-affecting claims as Primary source, Local investigation, Unproven, or Accepted risk. Do not treat old session memory, a plausible fix, a single passing run, or a reviewer preference as proof. If the evidence shows no contract gap, do not polish by default. Report that no tracked change is needed and name the evidence that supports that decision.
For any proposal that creates or changes a skill or eval, include a short evidence map before the contract delta. Label the claims that justify the current proposal, not only instructions for future subagents or graders. Typical entries are: user request or supplied eval result as Primary source; local transcript, file, or benchmark inspection as Local investigation; inferred patterns or expected failure modes as Unproven; and known but accepted gaps as Accepted risk.
When session history is part of the task, split extraction work across subagents when available. Give each agent a bounded session range or question, have it write temporary per-session notes under /tmp, and synthesize the patterns yourself before editing tracked files.
When delegated review, extraction, or benchmark analysis may affect a tracked skill/eval decision, pass a compact quality lens to the delegate instead of assuming this skill context transfers. Name the delegated mode, such as contract review, eval hardening, benchmark triage, or history extraction; ask for evidence, inferred risks, unsupported claims, what should not change, and, for eval work, expected-output leakage, common assertion applicability, and baseline plausibility. Do not require the full skill for narrow lookups.
For session-history audits, count actual skill use only when the record shows a user trigger, assistant declaration, skill-body read tied to a substantive decision, or decision behavior in a substantive task. Separate current audit sessions, eval-runner sandbox sessions, search-command echoes, quoted skill bodies, session metadata, and reference-only file reads from historical usage evidence.
Before counting a session-history candidate as evidence, build a turn-level inclusion ledger. For each candidate, record the session path, turn identifier or boundary evidence, skill trigger/read/decision evidence, tracked patch evidence, verification evidence or explicit verification absence, classification, and any exclusion or low-confidence reason. Treat one user request plus its directly associated assistant/tool/edit/verification sequence before the next unrelated user request as the same turn. If the log cannot support that boundary, or if skill-quality use, patches, and verification only co-occur in different turns of the same JSONL file, mark the candidate low-confidence or excluded instead of counting it.
When the audit is counting skill/eval edit sessions, a same-turn no-change decision may be recorded separately as actual skill use, but it is not edit evidence unless the same turn also has a tracked patch or an explicit post-edit verification absence.
Planning or requirements-spec workflows remain primary when they are creating plans or specs. Use this skill only as an auxiliary lens when that work turns failures, session-history patterns, review comments, or benchmark evidence into future skill behavior, acceptance criteria, eval discrimination, or benchmark-proof requirements. Eval tooling work is relevant only when it affects prompt delivery, grading fidelity, baseline compatibility, metric provenance, artifact completeness, or report claims.
Before treating a surprising, repeated, tool-related, artifact-related, or transcript-contradicted eval failure as a skill defect, classify the failure surface: skill contract gap, eval assertion gap, measurement or recording gap, prompt or invocation mismatch, grader-boundary issue, or run variance/noise. If the classification points outside the skill contract, fix or record that boundary instead of tightening skill prose.
Before changing skill text or eval behavior, write a one-sentence contract delta:
When <trigger/context>, the skill should <observable behavior>, because <stable reason>, and it must not <known degeneration>.Use that sentence to decide which files change. If the failure cannot be stated as an observable contract, keep investigating instead of adding prose.
Good contract deltas name the abstract dimension behind the example:
current-slice blocker instead of one display-name fixture.artifact freshness instead of one missing image path.benchmark completeness instead of one fake Config B row.local-anchor preservation from one phrase such as header handoff, whilepreserving the concrete anchor as evidence when useful.
After naming the abstract dimension, choose the owning artifact before adding standing SKILL.md guidance.
Make the smallest coupled change that closes the contract gap:
SKILL.md: trigger-independent behavior rules, scope boundaries, stop gates,and short decision rules.
references/: heavy guidance, detailed checklists, domain variants, orreusable research that would bloat SKILL.md.
scripts/: deterministic repeated work that agents keep rebuilding duringeval runs.
a caller can proceed. Prefer these over doc-only promises when past failures show agents skipped the rule.
evals/<skill-name>/evals.json: pressure cases and expectations that provethe new contract and guard old behavior.
README.md and CHANGELOG.md: only when the changed behavior is describedthere or user-visible for this repository.
A fixture, anecdote, or local case mapped to a reusable dimension still needs artifact placement. Put broad trigger-independent obligations in SKILL.md; put heavier reusable guidance in references/ with explicit applicability; keep narrow pressure cases in evals or local notes; and touch README or changelog only when they own or describe the behavior.
When editing skill text, preserve modality, exceptions, exact paths, commands, field names, local anchors, and absence statuses. Shorten only when the shorter text keeps the same applicability, obligation, proof path, and failure behavior.
Do not bump version fields unless the user explicitly asked for release preparation. Record unreleased behavior under CHANGELOG.md ## [Unreleased]. Keep frontmatter descriptions focused on trigger conditions. Do not summarize a workflow there; agents may follow the metadata instead of loading the skill body.
Update evals in the same change set as behavior changes. Evals should be discriminating, observable, and hard to pass with the old failure mode.
when it is valid for every eval, including exact-format and verbatim-output cases.
it will govern, including activation-only, exact-format, localized, verbatim, narrow-boundary, and no-change cases. Move scenario-specific stop gates or narrow behavior into per-eval expectations.
decisions, not against style taste.
expected_output or an expected-output summary tothe executor, keep that summary high-level: describe the evidence shape and output category, not the target decision or named contract. Put discriminating answer details only in grader-only assertions, fixtures, or hidden grader material so the baseline is not handed the target behavior.
assertions, not only to delegated eval work: a SKILL.md line or self-authored assertion must not copy a grader assertion's wording or a literal prompt phrase verbatim. Name the abstract dimension (Failure To Contract) and keep the concrete phrase only as a labeled example.
global skill lists, fake baselines, universal checklists, weak proof substitutes, unsupported claims, stale assumptions, or overfit fixture names.
with_skill andwithout_skill usually means the assertion is not discriminating.
or add a programmatic check when the property is mechanical. When you relax or delete an assertion or a both-config-pass eval to clear a failure, record the discrimination lost and add a compensating assertion or an explicit Accepted risk.
instead of teaching the skill to invent that fact.
External eval prompts stay under evals/<skill-name>/; generated run output stays under evals/<skill-name>/workspace/<agent>/ and is not committed unless the user explicitly asks.
For this repository, use the shared runner:
python3 skills/skill-eval/scripts/eval_runner.py validate evals/<skill-name>/evals.json
python3 skills/skill-eval/scripts/eval_runner.py run evals/<skill-name>/evals.json --agent codex --config with_skill,without_skill --runs 1
python3 skills/skill-eval/scripts/eval_runner.py report evals/<skill-name>/workspace/codex/iteration-NKeep eval workflows provider-neutral and file-contract based. Do not make the shared runner depend on local-only skill snapshots, one host's UI, or Claude-Code-only paths. For this repository's with_skill runs, use the authoritative source skill package directly; do not substitute an installed host skill tool, .agents/skills snapshot, .claude/skills link, or cached skill copy.
run drives execution, grading, aggregation, and reporting end to end. It spawns fresh executor subprocesses with the prompt only, then fresh grader subprocesses with the recorded output plus assertions. No agent hand-runs prompts, hand-records outputs, injects token counts, or grades its own output. run writes iteration_manifest.json and, per run, prompt.md, grader_prompt.md, outputs/, grading.json, metrics.json, and run.json, plus benchmark.json and benchmark.md at the iteration root.
report <iteration-dir> only re-renders benchmark.md from benchmark.json; it must not start a server, open a browser, bind a port, write a PID file, or leave a background process.
Treat missing metrics, missing grades, missing configs, failed or timed-out executors, grader failures, omitted assertions, or reused legacy artifacts as incomplete proof, not as a pass. Also treat an abnormal aggregate-metric shift between runs — for example mean_tokens collapsing — or executor batching that loses per-eval isolation as a stop-and-verify condition, not a pass.
Runner artifacts prove what the runner invoked, recorded, graded, and aggregated. When a claim or assertion depends on prompt delivery, host, tool, delegation, file, artifact, metric, timing, or other execution proof, audit the evidence surface and compare the proof requirement with the recorded output set before reading the grade as a skill signal or making root-cause or skill-quality claims. Inspect the recorded invocation, output artifact, metric source, or equivalent non-response evidence. Final-response prose, copied invocation IDs, role labels, and self-reported call counts are not execution proof unless corroborated by recorded host or runner evidence or an equivalent non-response artifact.
Pure graders stay bound to the suite assertions recorded for the run. The change owner treats surprising, repeated, missing, ambiguous, or both-config-passing grades as evidence to interpret before editing skill or eval behavior.
Treat eval execution as a data-boundary decision. Do not send private skill packages, eval prompts, fixtures, outputs, or session excerpts to an external agent or hosted service unless the user or project explicitly authorizes that data movement. Prefer local file-contract workflows when privacy is unclear.
Compare behavior before declaring improvement:
expected-output summaries, named capability hints, assertion applicability, and whether the eval is regression-only before claiming skill value.
without_skill pass ratewith_skill rate whose magnitude of help is unreadable because thebaseline delta was not measured or read
regressions only when transcript evidence, run data, or a predefined budget proves the cost is not justified by useful behavior.
the proof live only in host UI, private transcript, or unrecorded tool state?
beyond the user's goal?
the old case guarded are still covered by another eval? Lost coverage is a regression even when every remaining eval passes.
If repeated wording-only contract changes do not move the targeted failure, stop tightening prose. Inspect runner recording, prompt delivery, grader inputs, assertion scope, output-set completeness, and run variance before another skill text edit. When that stop condition becomes tracked behavior, add or propose generic eval coverage for the retry-stop and proof-boundary rule instead of a local-case checklist.
If a targeted fix makes one eval pass while the same failure mechanism appears in another eval, stop treating the remaining failure as a local wording problem. Classify the shared mechanism, choose its owning artifact, and update the broad rule or eval pressure that owns it before adding another per-eval wording patch. Keep invalid placeholder text out of executable commands, final-answer templates, and other user-copyable guidance; if a placeholder must be discussed as evidence, label it as non-copyable evidence instead of a template.
If adding a missing recorded evidence artifact changes the outcome, describe the prior result as a measurement-boundary correction or proof-path reclassification unless a separate run isolates a skill-contract change as the cause.
When the proof path, recording contract, assertion boundary, or skill text changes, rerun before claiming improvement. Treat single-run headline deltas and unstable baselines as caveats. If an action happened but the proof was not recorded, fix or downgrade the proof claim instead of making the agent deny or hide the real action.
Do not claim quality, token, time, reliability, safety, or trigger improvement unless the run data or review evidence proves that exact claim. Writing improved or optimized specifically requires a closing rerun on a clean, complete run — same eval set, per-eval isolation, complete metrics, both configs; without it, label the effect Unproven or Accepted risk rather than a pass.
Before finalizing, reject these common regressions:
checklists, or single-example taxonomies into SKILL.md unless multiple independent evidence sources or a user-approved scope make them part of the skill contract.
SKILL.md or a self-authored assertion instead of naming the abstract dimension.
skill should be self-contained or provider-neutral.
instead of reading the body.
targeted failure unchanged.
wording problem instead of a shared mechanism.
because nearby prose says to replace it later.
become impossible to satisfy.
proof.
aggregate metrics, or lost per-eval isolation — as proof of improvement.
Before reporting completion:
classified by failure surface before skill text changed?
artifact evidence rather than prose-only IDs or counts?
always-visible SKILL.md guidance?
statuses?
required?
For historical patterns behind these rules, read references/session-patterns.md when the task asks for rationale or when a change feels like it could make the skill larger but not better.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.