Help us improve
Share bugs, ideas, or general feedback.
From soundcheck
Detects concurrency bugs: deadlocks, wrong memory ordering, double-checked locking, and blocking operations inside locks. Use when writing multi-threaded code.
npx claudepluginhub thejefflarson/soundcheck --plugin soundcheckHow this skill is triggered — by the user, by Claude, or both
Slash command
/soundcheck:concurrency-correctnessThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Concurrency bugs that read clean in isolation but produce deadlocks, lost wakeups, or
Race conditions, deadlocks, thread analysis, happens-before relationships.
Reviews Java code for thread safety, race conditions, deadlocks, and Java 21 virtual thread compatibility. Detects version via pom.xml/build.gradle.
Assesses concurrency context, analyzes thread safety, detects race conditions and deadlocks in multi-threaded/async systems using Go goroutines, Rust tokio, Node.js, Python, Java, Elixir actors.
Share bugs, ideas, or general feedback.
Concurrency bugs that read clean in isolation but produce deadlocks, lost wakeups, or data races in production. Race detectors catch triggered races but not structural mistakes. Flags local patterns: lock-around-blocking-call, lock-order in nested acquires, atomic memory order, double-checked locking. Not a replacement for whole-program ownership analysis (borrow checker, lockdep, model checking).
await, sleep, blocking I/O, or a blocking channel send — so every other waiter blocks on the slow thing(L1, L2), another acquires (L2, L1), producing classic AB-BA deadlockFlag the vulnerable code, explain the risk, and suggest a fix establishing these properties. Translate to the concurrency primitives of the audited file — use that language's documented lock, atomic, once-cell, and channel APIs; do not import a recipe from a different language.
await, or sleep on the snapshot. The critical section stays bounded by CPU work only.Criteria apply only to constructs the audited file actually contains; mark inapplicable bullets N/A rather than skipping silently.
await, sleep, blocking I/O, or blocking channel send appears inside a held-lock scope