Install
openclaw skills install concurrencyguardRace condition & concurrency safety analyzer -- detects unprotected shared state, missing locks, TOCTOU vulnerabilities, async/await pitfalls, thread-unsafe singletons, and deadlock-prone patterns across all languages
openclaw skills install concurrencyguardConcurrencyGuard scans codebases for concurrency hazards: unprotected shared state, missing mutex/locks, TOCTOU vulnerabilities, async/await pitfalls, thread-unsafe singletons, missing transaction isolation, data races in goroutines, unguarded lazy initialization, non-atomic read-modify-write, and deadlock-prone lock ordering -- across JS/TS, Python, Java, Go, Rust, and C#. It uses regex-based pattern matching against 90+ concurrency safety patterns, lefthook for git hook integration, and produces markdown reports with actionable remediation recommendations. 100% local. Zero telemetry.
concurrencyguard scan [file|directory]One-shot concurrency safety scan of files or directories.
How to execute:
bash "<SKILL_DIR>/scripts/concurrencyguard.sh" scan [target]
What it does:
Example usage scenarios:
concurrencyguard scan .concurrencyguard scan src/server.goconcurrencyguard scan src/concurrencyguard scan .concurrencyguard scan .concurrencyguard scan .concurrencyguard hook installInstall git pre-commit hooks that scan staged files for concurrency issues before every commit.
How to execute:
bash "<SKILL_DIR>/scripts/concurrencyguard.sh" hook install
What it does:
concurrencyguard hook uninstallRemove ConcurrencyGuard git hooks.
bash "<SKILL_DIR>/scripts/concurrencyguard.sh" hook uninstall
concurrencyguard report [directory]Generate a markdown concurrency safety report with findings, severity breakdown, and remediation steps.
bash "<SKILL_DIR>/scripts/concurrencyguard.sh" report [directory]
What it does:
concurrencyguard watch [directory]Continuous file-watching mode that re-scans on every file change.
bash "<SKILL_DIR>/scripts/concurrencyguard.sh" watch [directory]
What it does:
concurrencyguard ci [directory]CI/CD integration mode with strict exit codes and machine-readable output.
bash "<SKILL_DIR>/scripts/concurrencyguard.sh" ci [directory]
What it does:
concurrencyguard team-report [directory]Generate an aggregate team-level concurrency safety report with trend data.
bash "<SKILL_DIR>/scripts/concurrencyguard.sh" team-report [directory]
What it does:
concurrencyguard baseline [directory]Establish a baseline of known concurrency issues for allowlisting.
bash "<SKILL_DIR>/scripts/concurrencyguard.sh" baseline [directory]
What it does:
concurrencyguard statusShow license and configuration information.
bash "<SKILL_DIR>/scripts/concurrencyguard.sh" status
ConcurrencyGuard detects 90+ concurrency safety patterns across 6 categories:
| Category | Examples | Severity |
|---|---|---|
| Shared State (SS) | Global mutable variables, unprotected static fields, module-level mutable state, shared variables without volatile/atomic, global object mutation in worker threads | Critical/High |
| Locking & Mutex (LK) | Missing synchronized in Java, missing lock in C#, missing mutex.Lock() in Go, Lock without Unlock, nested locks (deadlock risk), missing RWMutex, spin locks in user code | Critical/High |
| TOCTOU & Atomicity (TC) | Check-then-act without synchronization, file exists then open, read-modify-write without CAS, double-checked locking without volatile, non-atomic counters | Critical/High |
| Async/Await Pitfalls (AW) | Await in loop (sequential not parallel), missing await, async void, fire-and-forget promises, race conditions after await, missing Promise.all | High/Medium |
| Thread Safety (TS) | Thread-unsafe singleton, HashMap without sync, non-thread-safe datetime, mutable defaults shared across threads, lazy init without double-check | High/Medium |
| Deadlock & Starvation (DL) | Inconsistent lock ordering, holding lock across external call, channel without timeout, unbuffered channel in goroutine, missing select/default, lock held across await | Critical/High |
Users can configure ConcurrencyGuard in ~/.openclaw/openclaw.json:
{
"skills": {
"entries": {
"concurrencyguard": {
"enabled": true,
"apiKey": "YOUR_LICENSE_KEY_HERE",
"config": {
"severityThreshold": "high",
"ignorePatterns": ["**/test/**", "**/fixtures/**", "**/*.test.*"],
"ignoreChecks": [],
"allowlistFile": ".concurrencyguard-allowlist",
"reportFormat": "markdown"
}
}
}
}
}
hook install, prompt to install itThe user might say things like: