claude-code-review — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited claude-code-review (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
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.
Invoke scripts via `${CLAUDE_PLUGIN_ROOT}/bin/<name>`. That env var is set by Claude Code for every plugin context and gives the absolute path to the marketplace clone — no PATH or cwd assumptions. Bare-command invocation (e.g. claude-review.sh) is NOT reliable: the plugin never puts its scripts on PATH, so bare calls exit 127.Respond in the user's preferred language (detect from their recent messages, or fall back to the language setting in CLAUDE.md).
Arguments: $ARGUMENTS
--base <branch>: full branch diff against a base--commits: review only the most recent commit--files "a.cs b.cs": explicit file listDefault: uncommitted changes. Run git diff --name-only HEAD -- '*.cs' to get the list of changed files. This is the most common case — code has been written but not yet committed.
Override order:
git diff --name-only develop...HEAD -- '*.cs'--base developPass the file list to the review script as --files.
Loop automatically — do not ask the user between rounds. Stop when any of the following is true:
[Critical] issues in the review resultEach round:
#### a. Send to Claude for Review Before sending the diff to Claude, if qq-policy-check.sh is available, run it on the same changed .cs files first. Treat those deterministic findings as already-established local policy results. Claude should focus on bugs, behavior, architecture, and anything not trivially captured by deterministic checks.
Use the Bash tool with run_in_background: true to run in the background:
${CLAUDE_PLUGIN_ROOT}/bin/claude-review.sh $ARGUMENTSThe script calls claude -p, with results output to stdout and Docs/qq/<branch-name>/claude-code-review_<timestamp>.md. Claude CLI review typically takes 2-5 minutes. Using background execution, the system will automatically notify when the command completes — no need to sleep or poll. Notify the user that the background task has been submitted and will continue processing automatically when complete.
From round 2 onward: If the previous round had findings deemed over-engineered, append --prompt to the original arguments:
${CLAUDE_PLUGIN_ROOT}/bin/claude-review.sh $ARGUMENTS --prompt "Review these code changes using the same criteria as round 1 (bugs, architecture, performance, security, style). Additional context: the following suggestions from the previous round were deemed over-engineered and replaced with simpler solutions: <list items and rationale>. Do not re-suggest more complex approaches unless the simpler version introduces a real defect. Classify by severity: [Critical] [Moderate] [Suggestion]."#### b. Summarize Review Results
After the subagent returns, categorize findings by severity:
Present the summary to the user. Do not fix code yet — proceed to the verification step first.
#### c. Independent Verification (required, parallel subagents, gate-enforced)
Review Gate: After the review script runs, a PreToolUse hook blocks Edit/Write on.csandDocs/*.mdfiles until at least 1 verification subagent completes. This is a mechanical constraint — you cannot edit code until findings are verified.
For each critical and moderate issue, dispatch a subagent to verify it in depth — do not draw conclusions from a quick scan in the main session.
Verify against runtime state, not just source. When a finding is about current behavior (wrong values, missed call sites, broken state), the verifying subagent should query the live Unity Editor with tykit (unity_query/unity_object/get-field/call-method/console) — not just read source. Seeshared/tykit-first.mdfor the rule,shared/tykit-reference.mdfor commands.
How to execute: Group all findings that need verification, and for each one (or a cluster of related ones) dispatch a subagent using the Agent tool (subagent_type: "general-purpose", model: "opus"), running in parallel. Each subagent's prompt must include the original finding (verbatim), relevant file paths, and the instructions from ../../shared/verification-prompt.md.
After dispatching all verification subagents, write the expected count to the gate file so the gate knows when all verifications are complete:
source "${CLAUDE_PLUGIN_ROOT}/scripts/platform/detect.sh"
IFS=: read -r ts count _ < "$QQ_TEMP_DIR/review-gate-$PPID"
echo "${ts}:${count}:N" > "$QQ_TEMP_DIR/review-gate-$PPID"(Replace N with the actual number of verification subagents dispatched.)
Aggregate: After all subagents return, consolidate the results and present each finding's verdict and supporting evidence to the user.
#### d. Fix the Code
Handling test failures: If build/test runs reveal pre-existing failures unrelated to this change, ask the user how to proceed:
Do not unilaterally decide "unrelated, skip it" — let the user decide.
#### e. Decide Whether to Continue
[Critical] issues confirmed and fixed → automatically start the next round (back to a)[Critical] issues → output "Review passed" and end the loopPrint === Round N/5 === at the start of each round.
After the review loop ends (for any reason), clean up the gate marker:
source "${CLAUDE_PLUGIN_ROOT}/scripts/platform/detect.sh"
rm -f "$QQ_TEMP_DIR/review-gate-$PPID"After the review loop ends, recommend the next step:
/qq:test to verify?"/qq:test to make sure nothing broke?"/qq:test to check impact, or continue fixing manually?"`--auto` mode: run qq-execute-checkpoint.py pipeline-advance --project . --completed-skill "/qq:claude-code-review" --next-skill "/qq:test", then invoke /qq:test --auto.
claude-review.sh and requires Claude CLI (claude) to be availableDocs/qq/<branch-name>/ where branch name is obtained via git branch --show-current | tr '/' '_'~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.