All skills

security-review (everything-claude-code)

ECC security-review: no better at finding planted vulnerabilities than plain Codex, at about the same tokens

SituationalSafe

24.9 / 30

Lift over no skill: -0.16

Situational: the lift -0.16 is under +1.0. Recommended needs a total of 22/30, output quality of 3.5, and a lift of +1.0.

SOTA

Pass

Tested with Codex.

Covers Codex, Claude Code

Codex CLI 0.166 (SOTA tier): 18 graded runs. A pass here also covers Claude Code under our tier rule; it says nothing about the second tier.

Scores

Each dimension is 0 to 5 and the six add up to the total out of 30. 5 is better on every dimension. Cost 5 means cheap and fast. Install 5 means easy.

Trigger reliability
5.0
Lift over no skill
1.8
Output quality
4.1
Token and time cost
5.0
Install and portability
4.0
Safety
5.0

Security review

Safe

Static scan: 5 CRITICAL / 6 HIGH / 4 MEDIUM. Manual review: Safe to run in a no-network sandbox (scanner findings explained). A clean scan does not prove a skill safe.

Install

npx skills@latest add affaan-m/everything-claude-code --skill security-review

Source

Pinned commit: b38be6a7f6350964d59328b52f0624e1d1d552d1

Tested: 2026-11-02

What we tested

  • Review a small service module — Security-review orders_service.py before I merge it. List the problems you find, most serious first. Do not change any files.
  • Review an auth helper — Security-review auth_handlers.py: I just wrote it for our login flow. List the problems, most serious first. Do not change any files.
  • Review upload endpoints — Security-review upload_api.py. List the vulnerabilities, most serious first. Do not change any files.

Pros

  • The skill was picked up without being named: Skill file read in 6/6 treatment runs.
  • No token overhead: 1.03x the tokens of no skill.

Cons

  • No measurable lift over no skill (-0.16, inside the noise).
  • A one-sentence prompt scored 4.29, against 4.06 with the skill (-0.23).
  • Test caveat: Task t1 contains three planted items that are not security issues, which caps the best possible recall near 3.1.
  • n=2 per task per arm; differences under about 1 point are noise.

Review

Codex CLI 0.166 (gpt-6-astra, low reasoning) on a Mac test machine, a fresh temporary project and temporary HOME/TMPDIR/caches per run, skill installed (treatment) or absent (control) or absent with the skill's core requirement squeezed into one sentence appended to the prompt (one-liner group), 2 runs per group per task, network off, /tmp writes blocked. The prompts never mention the skill (except the wording noted below). Three small files with 8 planted problems each (a service module, an auth helper, upload endpoints) and a read-only 'list the problems, most serious first' request. The order service includes three problems that are not security flaws (an off-by-one boundary, a resource leak, float money), which a security review is expected to skip, so on that task a security reviewer can find at most 5 of 8 and the score tops out near 3.1.

Three-arm comparison

ArmMean score (0-5)Tokens per run
Without the skill4.2260k
One-sentence prompt4.2944k
With the skill4.0662k

Measured with Codex CLI over 18 runs, scored by rule-based checks with no LLM judge. Total 24.9 / 30, verdict Situational.

Disclosure: Task t1 contains three planted items that are not security issues, which caps the best possible recall near 3.1.

Verdict: Situational (24.9 / 30). Source: affaan-m/everything-claude-code, skills/security-review, pinned at commit b38be6a. Install: npx skills@latest add affaan-m/everything-claude-code --skill security-review. Licence: MIT (repo LICENSE).

What it is

The security-review skill from affaan-m/everything-claude-code (ECC): a security checklist for when you add authentication, handle user input, work with secrets, create API endpoints or implement payments. About 1,800 words of Markdown in SKILL.md (secrets management, input validation, SQL injection, authentication and authorization, XSS, CSRF, rate limiting, sensitive data exposure, dependency security, with short good/bad code examples and a pre-deployment checklist) and one extra Markdown file on cloud infrastructure security. No scripts.

How we tested

Codex CLI 0.166 (gpt-6-astra, low reasoning) on a Mac test machine, a fresh temporary project and temporary HOME/TMPDIR/caches per run, skill installed (treatment) or absent (control) or absent with the skill's core requirement squeezed into one sentence appended to the prompt (one-liner group), 2 runs per group per task, network off, /tmp writes blocked. The prompts never mention the skill (except the wording noted below).

Three small files with 8 planted problems each (a service module, an auth helper, upload endpoints) and a read-only 'list the problems, most serious first' request. The order service includes three problems that are not security flaws (an off-by-one boundary, a resource leak, float money), which a security review is expected to skip, so on that task a security reviewer can find at most 5 of 8 and the score tops out near 3.1.

  1. Review a small service module — Security-review orders_service.py before I merge it. List the problems you find, most serious first. Do not change any files.
  2. Review an auth helper — Security-review auth_handlers.py: I just wrote it for our login flow. List the problems, most serious first. Do not change any files.
  3. Review upload endpoints — Security-review upload_api.py. List the vulnerabilities, most serious first. Do not change any files.

Scoring is programmatic (hidden tests / planted-issue recall / constraint checks / render+OCR where relevant), 0–5 per run. No LLM judge decided any score.

Results

The one-liner given to the third group: "Check the code against a security checklist: hardcoded secrets, unvalidated input, SQL/command injection, broken authentication and authorization, unsafe file uploads, sensitive data in errors or logs, and missing rate limiting, citing the exact line for each finding."

TaskControl scoreOne-linerWith skillControl tokensOne-liner tokensWith-skill tokensSkill read
t1-orders2.893.122.4260k44k72k2/2
t2-auth4.775.04.7759k44k61k2/2
t3-upload5.04.775.059k44k51k2/2

Mean score: 4.22 without vs 4.06 with the skill (delta -0.16). Tokens per run: 60k vs 62k (1.03x); time 38s vs 44s. One-liner group: 4.29 (the skill's gain over the one-liner: -0.23; one-liner's own gain over no skill: +0.08); one-liner tokens 44k per run, so the skill costs 1.40x the one-liner.

What happened

  • No gain. Mean score 4.22 without the skill, 4.29 with a one-sentence security checklist, 4.06 with the skill. Planted-issue recall: 4.8 of 8 per run without, 4.9 with the one-liner, 4.5 with the skill.
  • The skill was a little worse on the order-service task: 2.4 average against 2.9 for control and 3.1 for the one-liner (2 and 3 planted items found per run, against 3-4 for the others). That is within the noise at n=2.
  • On the auth helper and the upload endpoints every group found 7 or 8 of 8 planted problems; both are classic textbook flaws (md5, path traversal, pickle, command injection) that plain Codex already knows.
  • The skill is read in 6/6 runs. It costs 62k tokens per run against 60k (1.03x) and 44k with the one-liner (1.41x): the one-liner runs were the cheapest, because they read less before answering.
  • A scoring caveat: items are matched by regex, so a differently worded finding can count as a miss.

Dimension scores

DimensionScoreWhy
1_output_quality4.06

Mean score 4.06/5 with the skill (programmatic checks, see per-task table).

2_lift_vs_no_skill1.84

-0.16 points vs 4.22 without the skill (n=2 per task; under ~1 point is noise).

3_trigger5.0Skill file read in 6/6 treatment runs.
4_instructions_portability4

Plain Markdown checklist, mostly JS/TS and Supabase-flavoured examples; applies to other stacks only by analogy.

5_efficiency51.03x tokens (62k vs 60k per run) and 1.17x time (44s vs 38s).
6_safety_hygiene5

Markdown only; scanner hits are code examples (process.env, fetch, template strings) inside the checklist.

Limits of this test

  • Three small single-file reviews with textbook flaws; subtler problems (business-logic authorization, race conditions, supply chain) were not planted.
  • The skill's cloud/infrastructure checklist and pre-deployment list were not exercised: no infrastructure files in the test.
  • Recall only; false positives and the quality of fix advice were not scored.
  • n = 2 per group per task: differences under about 1 point are noise.
  • Rule-based scoring measures what the checks can see; it cannot judge taste or whether a result is the best possible.

Security

See security.md. Scan: 5 CRITICAL / 6 HIGH / 4 MEDIUM. Verdict: safe to run (no-network sandbox). A clean scan does not prove a skill safe.

Bottom line

A reasonable checklist, but plain Codex already finds the same textbook vulnerabilities, and one sentence listing the same categories did as well for about 70% of the tokens. The skill adds nothing measurable on this kind of code review; it may serve as a prompt for a team that wants a consistent checklist.

Transcript

Run log for security-review: Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.
Columns: task, arm-run, score (0-5), tokens, seconds, checks passed, skill files the agent opened.

t1-orders control-1: score 3.12, tokens 60493, secs 36.1, checks 1/2, opened nothing
t1-orders control-2: score 2.66, tokens 60831, secs 41.9, checks 1/2, opened nothing
t1-orders oneliner-1: score 3.12, tokens 44382, secs 32.3, checks 1/2, opened nothing
t1-orders oneliner-2: score 3.12, tokens 44393, secs 35.0, checks 1/2, opened nothing
t1-orders treatment-1: score 2.19, tokens 73335, secs 69.3, checks 1/2, opened security-review
t1-orders treatment-2: score 2.66, tokens 72383, secs 54.7, checks 1/2, opened security-review
t2-auth control-1: score 4.53, tokens 59839, secs 37.6, checks 2/2, opened nothing
t2-auth control-2: score 5.0, tokens 59894, secs 37.4, checks 2/2, opened nothing
t2-auth oneliner-1: score 5.0, tokens 44259, secs 36.9, checks 2/2, opened nothing

18 runs, 3 artifacts

Sample output

SOTA · With the skill: final message (t1-orders, run 1, Codex)

Found six security issues, ordered by severity. Exposure depends on how callers expose these functions; no caller code was provided. 1. **High — SQL injection** — [orders_service.py:9](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:9) `order_id` is interpolated directly into SQL. An input such as `0 OR 1=1` bypasses the intended lookup condition; crafted `UNION` queries could extract other database data. Bind `order_id` as a parameter. 2. **High — Missing cancellation authorization** — [orders_service.py:13](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:13) `current_user` is never used. Anyone able to invoke this function can cancel another user’s order by supplying its ID. Enforce ownership or an authorized administrative role before updating it. 3. **High — Arbitrary file overwrite through exports** — [orders_service.py:39](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:39) `open(path, "w")` immediately truncates any accessible target and follows symlinks. If callers control `path`, they can overwrite files with the service’s permissions—even before the query succeeds. Use server-generated filenames within a controlled export directory and prevent traversal and symlink escapes. 4. **High — Cross-user order export** — [orders_service.py:40](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:40) The export accepts any `user_id` without checking the requester’s identity or permissions. A caller can export another customer’s records. Derive the user ID from authenticated context and explicitly authorize administrative exports. 5. **High if valid — Embedded payment credential and credential logging** — [orders_service.py:4](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:4), [orders_service.py:48](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:48) A live-looking API key is embedded in source and would be printed after successful gateway calls. Its validity is unverified; the current gateway stub always raises. If real, rotate it, load its replacement from secret storage, and remove credential logging. 6. **Medium — Untrusted payment values lack validation** — [orders_service.py:31](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:31), [orders_service.py:45](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:45) Totals trust supplied prices and quantities, while `charge` accepts an amount without matching it to the stored order. If client-controlled, these permit manipulated totals or underpayment. Retrieve authoritative prices, validate quantities and amounts, and compute the charge server-side. No files were changed. This was a static review; the sandbox blocked the attempted in-memory verification.

See Pro