review-systems — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited review-systems (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
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.
This extends the standard code-review skill (.claude/skills/code-review/SKILL.md) with systems-level checks. Run the standard review first, then apply these checks on top.
/review-systems command/review when the code involves I/O, concurrency, or will run in productionRun the standard code review first:
Then apply these systems-level checks.
Every OS resource opened must be closed. No exceptions.
| Resource | Correct Pattern | Failure Mode |
|---|---|---|
| Files | with open(...) as f: | fd leak, hits ulimit, OSError: Too many open files |
| DB connections | Context manager or connection pool .close() | Connection pool exhaustion, DB max_connections hit |
| Sockets | with socket.socket() as s: or explicit .close() in finally | fd leak, TIME_WAIT accumulation, port exhaustion |
| Subprocesses | with subprocess.Popen() as p: or explicit .wait() | Zombie processes, fd leak (stdin/stdout/stderr pipes) |
| Thread pools | with ThreadPoolExecutor() as pool: | Threads never join, process hangs on exit |
| Temp files | with tempfile.NamedTemporaryFile() as f: | Disk fills up, /tmp exhaustion |
| Locks | with lock: | Deadlock if exception before release() |
Review question: "What happens if an exception fires between the resource open and the resource close? Does the cleanup still run?"
What does this code cost in memory?
Check for:
list where generator would suffice (materializing 10M rows vs streaming them)+= creates a new string each time, O(n^2) total)def f(data=[]) -- mutable default, lives forever on the function object)Review question: "If this runs on a 10M-row dataset, what's the peak memory? Does it need to hold everything in memory at once?"
pymalloc note: Python's memory allocator (pymalloc) uses arenas of 256KB. An arena is only released to the OS when ALL blocks in it are freed. One surviving object pins the entire arena. This is why peak RSS rarely decreases even after del. For long-running servers, this means: avoid creating and destroying millions of small objects in a cycle -- the arenas pin.
Check for:
open() has a matching close() (or is in a with block)close_fds=True is default in Python 3, but verify for subprocess)Review question: "If this endpoint handles 1000 requests/second, how many file descriptors are open at steady state?"
Python's Global Interpreter Lock means: one thread executes Python bytecode at a time. Threading gives I/O concurrency, not CPU parallelism.
Check for:
ProcessPoolExecutor)hashlib, zlib -- these DO run in parallel in threadstime.sleep() releases the GIL (good for testing concurrency, misleading for benchmarking CPU work)dict[key] += 1 is not atomic)Review question: "Is this I/O-bound or CPU-bound? Does the concurrency model match?"
Walk through these scenarios:
| Factor | Question |
|---|---|
| 10x data | "If the input file is 10x larger, does the code still work? Does it OOM?" |
| 100x concurrency | "If 100 users hit this endpoint simultaneously, what breaks first? Connections? Memory? CPU?" |
| 1000x records | "If the database has 1M rows instead of 1K, which queries become slow? Is there an index?" |
| Slow network | "If the external API takes 30 seconds instead of 300ms, what happens? Timeout? Thread pool exhaustion?" |
| Disk full | "If the disk is full, does the write fail gracefully or corrupt state?" |
| Dependency down | "If the database/cache/API is unreachable, does the code hang, crash, or degrade gracefully?" |
For each external dependency, check:
except: pass swallows production fires.)Review question: "What happens at 3 AM when the database goes down? Does this code tell you what happened, or do you have to guess?"
After the standard review feedback, add:
## Systems Review
**Resource cleanup:** [PASS/ISSUE: description]
**Memory footprint:** [estimated for typical input / concern at scale]
**FD hygiene:** [PASS/ISSUE: description]
**GIL analysis:** [I/O-bound: threads OK / CPU-bound: needs processes / Mixed: needs refactor]
**Scale projection:** [what breaks first at 10x/100x]
**Failure modes:** [what happens when dependencies fail]
**Systems challenge question:** [one question that tests production thinking].claude/rules/systems-thinking.md when a failure mode matches.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.