Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Review code changes with the Security Review subagent. Computes diffs, launches a security-review subagent, and summarizes findings by severity. Use when the user asks to run /review-security or wants a security-focused code review.
.claude/skills/kunanonj-cursor-review-security/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 82% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 17% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -29% | 0% |
Use this skill when the user asks to run /review-security.
Launch exactly one security-review subagent with:
readonly: truerun_in_background: false unless explicitly asked to run in backgrounddescription: "Security Review"subagent_type: "security-review"The review subagent computes the local diff from the repository path, so do not compute the diff yourself before launching it. The repository path should be the active workspace or repository root for the code the user wants reviewed.
By default, the review subagent infers the repository's actual base branch, such as main, when computing branch changes. In most cases, do not provide Base Branch. Only provide it if you know the current branch or PR should be compared against a specific branch other than the repository's default base branch, such as when you created the current branch from another branch.
Special case: if the user explicitly asks to review a specific PR or branch, make sure that target is checked out before launching the subagent:
github.com/... /review, review {link}, or review {branch-name}.Use this exact prompt shape:
textFull Repository Path: <absolute repository path> Diff: <one of: "branch changes", "uncommitted changes"> Base Branch: <only include this line when reviewing branch changes against a known specific base branch> Custom Instructions: <only include this line when the user gave specific review instructions>
Default to branch changes, which reviews branch changes against the merge-base with the default/base branch, including committed, staged, and unstaged changes. If the user asks to review only uncommitted, local working tree, dirty, or not-yet-committed changes, use uncommitted changes.
If the review subagent fails before producing findings, inspect the failure text.
Full Repository Path, missing Diff, wrong prompt shape, or wrong subagent type, correct the invocation and retry it once immediately.After the subagent finishes, summarize the result:
file:line.Do not fix findings or rerun review unless the user explicitly asks for that next step.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-19 | pass→pass | 5,250 | 25,175 | +380% | 1 | 1 | 0% | 966 | 2,717 | +181% | 0 | 0 | — |
case-01 | fail→fail | 10,908 | 19,456 | +78% | 1 | 1 | 0% | 1,251 | 3,860 | +209% | 0 | 0 | — |
case-02 | fail→fail | 6,013 | 25,002 | +316% | 1 | 1 | 0% | 742 | 1,839 | +148% | 0 | 0 | — |
case-03 | fail→fail | 9,383 | 37,011 | +294% | 1 | 1 | 0% | 926 | 4,763 | +414% | 0 | 0 | — |
case-04 | fail→fail | 7,835 | 35,300 | +351% | 1 | 1 | 0% | 838 | 4,678 | +458% | 0 | 0 | — |
case-05 | fail→fail | 8,870 | 22,468 | +153% | 1 | 1 | 0% | 812 | 2,406 | +196% | 0 | 0 | — |
case-06 | fail→fail | 12,533 | 14,589 | +16% | 1 | 1 | 0% | 1,057 | 2,581 | +144% | 0 | 0 | — |
case-07 | fail→fail | 10,207 | 17,313 | +70% | 1 | 1 | 0% | 1,032 | 3,070 | +197% | 0 | 0 | — |
case-08 | pass→fail | 9,084 | 21,876 | +141% | 1 | 1 | 0% | 1,057 | 1,566 | +48% | 0 | 0 | — |
case-09 | fail→pass | 14,423 | 16,460 | +14% | 1 | 1 | 0% | 1,686 | 3,076 | +82% | 0 | 0 | — |
case-10 | fail→pass | 11,648 | 14,701 | +26% | 1 | 1 | 0% | 1,411 | 2,076 | +47% | 0 | 0 | — |
case-11 | fail→fail | 4,525 | 5,765 | +27% | 1 | 1 | 0% | 756 | 1,148 | +52% | 0 | 0 | — |
case-12 | fail→fail | 8,555 | 3,384 | -60% | 1 | 1 | 0% | 1,570 | 1,398 | -11% | 0 | 0 | — |
case-13 | fail→pass | 9,628 | 6,358 | -34% | 1 | 1 | 0% | 1,680 | 1,836 | +9% | 0 | 0 | — |
case-14 | fail→pass | 7,387 | 3,004 | -59% | 1 | 1 | 0% | 1,135 | 1,333 | +17% | 0 | 0 | — |
case-15 | fail→fail | 6,514 | 2,470 | -62% | 1 | 1 | 0% | 1,083 | 1,049 | -3% | 0 | 0 | — |
case-16 | fail→pass | 8,871 | 2,365 | -73% | 1 | 1 | 0% | 1,505 | 1,073 | -29% | 0 | 0 | — |
case-17 | fail→fail | 5,416 | 2,811 | -48% | 1 | 1 | 0% | 544 | 1,328 | +144% | 0 | 0 | — |
case-18 | pass→pass | 3,509 | 3,624 | +3% | 1 | 1 | 0% | 487 | 1,308 | +169% | 0 | 0 | — |
case-20 | pass→pass | 13,742 | 7,796 | -43% | 1 | 1 | 0% | 1,190 | 1,429 | +20% | 0 | 0 | — |
case-21 | pass→pass | 11,785 | 7,292 | -38% | 1 | 1 | 0% | 2,311 | 2,232 | -3% | 0 | 0 | — |
case-22 | pass→pass | 8,691 | 6,146 | -29% | 1 | 1 | 0% | 1,786 | 2,041 | +14% | 0 | 0 | — |
case-23 | pass→pass | 7,513 | 7,379 | -2% | 1 | 1 | 0% | 1,486 | 1,629 | +10% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 18 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +17 percentage points is the difference between those two pass rates over the 18 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.