← SkillSafe / Blocking Call Audit

Does this async Rust block the runtime, drop its tasks or deadlock on a lock?

Paste or drop the files behind one Tokio service or worker - an axum or TCP server, a queue consumer, a poller, a batch job - and its Cargo.toml. Your browser reads every file and checks its async code: std::thread::sleep or a blocking HTTP, file or database call on a runtime worker, a future built and never awaited, a JoinHandle dropped, a std::sync::Mutex guard still held at an .await, block_on inside the runtime, a loop that never awaits, select! over futures that are not cancel safe, unbounded channels and fan-out, tokio features the build is missing. Free, before you sign in, and nothing is uploaded. Then pick a lane: the audit gives exact edits for each finding, or the fix lane writes the whole fixed files - and the page re-checks both.

The companies, hosts and values in the examples are invented. The first three are audits (the first also carries a saved fix run of its edited code, one click after the audit), the last two fix runs; each comes with a saved model reply, so you can see the whole page without signing in or spending a credit.

Paid run

The audit rates the runtime, tasks, cancellation and resources, confirms or dismisses every flag below, adds what rules cannot see, and gives exact before/after edits for each finding - which the page applies to your paste and re-checks.

nothing pasted yet
Drop the .rs files and Cargo.toml, or the crate folder (they are joined into one paste, each keeps its path), or
Paste Rust code to price the run.

What this does, and what it does not

The check is a reading of the text, not a compiler: nothing is built or run. Each file is lexed so strings, raw strings, char literals and comments are never mistaken for code, its braces are rebuilt so each fn, impl, async block, loop and select! has its exact extent, use declarations are resolved so sleep is known to be std::thread::sleep or tokio::time::sleep, and each flag carries the catalogue id it comes from and the line it points at. Checks only see what you paste: whether a function from another crate or module blocks, or is async, is outside the check (it is noted, not assumed), and cargo build, cargo clippy and tokio-console remain the ground truth for types, Send bounds and tasks that stall.

The paid lanes see your paste and the page's facts. Every quote and edit they return is checked against your paste, every edit and every returned file is put back and re-checked, and a reply that repeats a credential from your paste is called out. A paste stays in this browser unless you run a lane. Derived from the agent skill @wshobson/rust-async-patterns by Seth Hobson (wshobson/agents, MIT). Sources are listed in llms.txt.