rust-systems — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited rust-systems (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.
Covers modern application-layer Rust (edition 2024): CLIs, web services, libraries. Not no_std/embedded.
unsafe. If clippy flags it, don't #[allow] it; refactor. The #[expect] escape hatch below does not apply here; unsafe findings get fixed, not annotated.unsafe block gets a // SAFETY: comment above it explaining why each invariant holds. No comment = reviewer rejects.unsafe blocks minimal: wrap in a safe abstraction at module boundary, mark the module pub(crate).miri (cargo +nightly miri test) on any crate containing unsafe or raw pointer arithmetic; it catches UB that optimizers mask.bytemuck, zerocopy, bytes over hand-rolled transmutes for zero-copy patterns.getenv is UB; OnceLock does not make it safe. Watch for lazy LD_LIBRARY_PATH-style writes on first use; hoist them to startup.#[allow(clippy::...)] as a shortcut; fix the underlying issue. When a suppression is genuinely warranted, write #[expect(clippy::lint_name, reason = "...")] instead: expect warns once the lint stops firing, so a suppression that has outlived its cause reports itself, where allow rots silently forever. (expect needs Rust 1.81+; edition 2024 clears that floor.)(b.len() >= 19 && b[4] == b'-').then_some(&v[..19]) panics on any shorter value, exiting 101 inside the one function written to report the case as undetermined. Use then(|| …), which is lazy. Clippy does not flag the difference. Grep then_some( for an argument that indexes, slices, unwraps, or allocates. Related: a fixed-width slice is not a parse. &v[..19] also panics mid-character on non-ASCII, and comparing two such prefixes lexicographically drops the timezone offset, so 01:00+02:00 sorts after 00:00Z while being an hour earlier. Parse and normalize, or reject.cargo fmt --all -- --check passes with zero diffscargo clippy --workspace --all-targets --all-features -- -D warnings passescargo nextest run --workspace (or cargo test --workspace) passes with zero failurescargo test --doc --workspace also passes; nextest does not run doctestscargo deny check passes (licenses, advisories, duplicates) for any crate going to productionunsafe without // SAFETY: commentRead the relevant reference before implementing or reviewing the matching behavior:
Existing specialized references, when the corresponding topic applies:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.