Agent skill

Review

by tetherto in tetherto/qvac

Run a comprehensive code review with 4 specialized reviewers (security, correctness, performance, consistency) in parallel.

Apache-2.0Auto-check: warningsDevelopment

Install Review

The automated check flagged lines worth reading first. See the safety section below.

skills CLI
$ npx skills add tetherto/qvac --skill review -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install tetherto/qvac review --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/tetherto/qvac.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/ocr-ggml/.agent/skills/review .claude/skills/review && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
review
GitHub stars
681
Token cost
~3.3k tokens
SKILL.md length
1,588 words
Files
1
Skills in repo
50
Repo updated
First seen
Licence
Apache-2.0

At a glance

Run a comprehensive code review with 4 specialized reviewers (security, correctness, performance, consistency) in parallel.

  • Works in 7 steps: Determine review target → Get the diff → Launch specialized reviewers in parallel → …
  • Tasks that involve Code review
  • SKILL.md covers Usage, Arguments, Workflow and Notes
  • Calls git and gh; reaches github.com

What it does

Review is an agent skill from tetherto/qvac. Run a comprehensive code review with 4 specialized reviewers (security, correctness, performance, consistency) in parallel.

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Code review. The repository describes itself as: Open-source local AI SDK - run AI on-device with no cloud, no API keys. Supports GGUF, RAG, image, music, and video generation, speech-to-text, P2P inference, and more… The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Code review

Example prompts

  • “/review”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Determine review target
  2. Get the diff
  3. Launch specialized reviewers in parallel
  4. Check for forbidden files
  5. Collect and present results
  6. Write the feedback document
  7. Offer to fix

What it can do on your machine

Read from SKILL.md and the folder at commit c3a6030. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Review loads about 3.3k tokens when it runs. Until then it costs about 33 tokens; SKILL.md has 1,588 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~33
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: warnings

The automated check found patterns that need a careful read before installing.

  • WarningMentions a credentials file (SSH keys, cloud or package-manager tokens)SKILL.md:126
    - `.npmrc`, `.env`, or credential files must NOT be in the diff

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from tetherto/qvac at commit c3a6030, republished under its Apache-2.0 licence (© tetherto). 1,588 words, ~3,287 tokens.

Download SKILL.mdSave it as .claude/skills/review/SKILL.md (or your agent's skills folder).
name
review
description
Run a comprehensive code review with 4 specialized reviewers (security, correctness, performance, consistency) in parallel.
argument-hint
[PR#|branch] [--only security|correctness|performance|consistency] [--depth standard|max]

Code Review

Run a comprehensive code review using 4 specialized review agents: security, correctness, performance, and consistency.

Usage

/review              # review current branch changes vs main
/review #1561        # review a PR by number
/review branch-name  # review a specific branch vs main
/review --only security,correctness  # run only specific reviewers
/review #1561 --depth max            # maximum-depth pass (every reviewer on the session model)

Arguments

  • No argument: review current branch changes against main
  • #<number> or <number>: review a GitHub PR
  • <branch-name>: review a specific branch against main
  • --only <list>: comma-separated list of reviewers to run (security, correctness, performance, consistency). Default: all 4.
  • --depth <standard|max>: review depth. standard uses the per-reviewer default models (see Step 3). max runs a maximum-depth pass: all reviewers on the session model — the model this session is itself running on, which is the strongest model the review is allowed to use — unless review.maxDepthModel pins an explicit model. Default comes from review.depth in packages/ocr-ggml/.agent/config.json (falls back to standard if absent); the flag overrides the config.

Workflow

Step 1: Determine review target

Parse $ARGUMENTS to determine the review target:

  • If argument starts with # or is a number → PR review mode
  • If argument is a branch name → branch review mode
  • If no argument → current branch review mode

Extract --only flag if present to filter which reviewers to launch.

Extract --depth flag if present. If absent, read review.depth from packages/ocr-ggml/.agent/config.json; if the file or field is missing, use standard.

Determine the session model family — the model this session is itself running on — from the session's own model identity (Claude Code states it in context, e.g. "powered by the model named Opus 5", exact ID claude-opus-5[1m] → family opus). Map it to one of haiku, sonnet, opus, fable. If it cannot be determined, skip the clamping in Step 3 and use the table defaults as-is.

Step 2: Get the diff

PR review mode:

bash
gh pr diff <number> --repo tetherto/qvac
gh pr view <number> --repo tetherto/qvac --json title,body,commits,headRefOid,headRefName,baseRefName

Branch review mode:

bash
git diff main...<branch>
git log main..<branch> --oneline
git rev-parse <branch>

Current branch mode:

bash
git diff main...HEAD
git log main..HEAD --oneline
git rev-parse HEAD

If the diff is empty, report "No changes to review" and stop.

Record the exact commit reviewed. Keep headRefOid (or the git rev-parse output) — it goes in the report header in Step 5. Findings cite file:line as the file reads at that commit, so without the SHA nobody can later tell a stale line number from a fixed finding.

Step 3: Launch specialized reviewers in parallel

Launch the selected review agents in parallel as sub-agents.

For each agent, set:

  • subagent_type to the reviewer name
  • model per the depth table below (Claude Code only — Cursor CLI inherits the parent model)
  • prompt with enough context for the sub-agent to work independently (see template below). The prompt's "Do NOT fix code — report findings only" line is the read-only guarantee — reviewers must not modify files.

Model per reviewer and depth:

Reviewer--depth standard (default)--depth max
security-revieweropussession model
correctness-revieweropussession model
performance-reviewersonnetsession model
consistency-reviewersonnetsession model
  • Model ladder, weakest → strongest: haiku < sonnet < opus < fable.
  • The session model is a ceiling at every depth. The model passed to a reviewer is the weaker of (table value, session model family). A Sonnet session therefore runs correctness on sonnet at standard depth, not opus; an Opus session runs a max pass entirely on opus, not fable.
  • --depth max raises every reviewer to the ceiling: all four run on the session model family.
  • Correctness gets opus by default at standard depth: the bugs that matter most here are cross-file C++ lifetime/concurrency issues (object teardown across threads, GPU-kernel edge cases) that need deeper reasoning than diff-local pattern matching.
  • Security gets opus for the same reason. The vulnerabilities that matter in this repo are not diff-local patterns — they are multi-file trust-boundary questions: whether a pull_request_target workflow lets fork code reach a credential, whether an approval gate binds to a mutable ref, whether a composite action three files away persists a token into a workspace that untrusted code later reads. Answering those means reading the called action, the gate implementation and the environment configuration together, and confirming the claim against the live repo rather than pattern-matching the diff. A reviewer that stops at the diff produces plausible-sounding findings on the wrong lines.
  • review.maxDepthModel in packages/ocr-ggml/.agent/config.json defaults to "session" (use the session model). Setting it to an explicit model name (fable, opus, …) pins max depth to that model and bypasses the ceiling — an escape hatch for deliberately escalating past the session model.
  • If the local Claude Code version rejects the resolved model name, fall back to opus; if that is also rejected, omit model and let the agent definition decide.
  • On Cursor CLI there is no per-agent model override — reviewers inherit the parent model, which matches the ceiling rule by construction. For a maximum-depth pass, run the parent session on the strongest available model.

Agents to launch (all 4 unless --only filters):

  1. security-reviewer — injection, auth bypass, credential exposure, OWASP patterns
  2. correctness-reviewer — logic bugs, edge cases, race conditions, test coverage
  3. performance-reviewer — allocations, blocking calls, memory leaks, N+1
  4. consistency-reviewer — cross-addon pattern enforcement, architecture alignment

Prompt template — adapt [target], [diff-command], and [domain] for each reviewer:

Review the code changes on [target] in repo tetherto/qvac.
To get the diff, run: [diff-command]
Focus only on [domain] issues.
Report each finding with: severity, file path and line, description, impact, and fix recommendation.
If no issues found, report: "No [domain] issues identified."
Do NOT fix code — report findings only.

Where [diff-command] is:

  • PR mode: gh pr diff <number> --repo tetherto/qvac
  • Branch mode: git diff main...<branch>
  • Current branch mode: git diff main...HEAD
Step 4: Check for forbidden files

While reviewers run, do a quick check:

  • .npmrc, .env, or credential files must NOT be in the diff
  • If found, warn immediately
Step 5: Collect and present results

Collect results from all reviewers and present a unified report.

Every written report opens with this header block, immediately under the H1, before any prose. It is a required part of the output, not decoration — see the note below:

markdown
# Code Review — <target>

**PR:** [<title>](https://github.com/<owner>/<repo>/pull/<n>)
**Reviewed at:** `<owner>/<repo>@<head-sha>` · **Base:** `<base-branch>` · **Head:** `<head-branch>`
**Reviewed:** <YYYY-MM-DD> · **Depth:** <standard|max> · **Reviewers:** security, correctness, performance, consistency

For branch or current-branch mode, drop the **PR:** line and use **Reviewed at:** \<repo>@<sha>` · **Base:** `main` · **Head:** `<branch>``.

For a report covering several PRs, repeat the block under each per-PR heading rather than once at the top — each PR has its own head SHA, and a stack's shared summary table is not a substitute for it.

Then the findings themselves:

### Security
[findings or "No issues"]

### Correctness
[findings or "No issues"]

### Performance
[findings or "No issues"]

### Consistency
[findings or "No issues"]

### Summary
- Total findings: X (Y critical, Z warnings)
- Recommendation: [ready to merge / needs fixes / needs discussion]
Show full SKILL.md (642 more words)Show less
Step 6: Write the feedback document

Always write the report to a file — do not ask first. The chat summary is ephemeral; the file is what /post-feedback consumes to file line-anchored PR comments, and what a human re-reads days later.

Path — repo root of the working repo (alongside the existing PR*-feedback.md docs):

ModeFilename
PR reviewPR<number>-claude-feedback.md
Branch / current branch<branch-slug>-claude-feedback.md (slashes → -, e.g. feature-QVAC-22734-claude-feedback.md)

The claude segment is the tool that produced the review. On Cursor it is cursor instead. This is not cosmetic: both tools review the same PRs, and a shared PR<n>-feedback.md would have one silently overwrite the other. A plain PR<n>-feedback.md is reserved for a human-merged consolidation of both. Re-reviewing the same PR with the same tool overwrites the same path — /post-feedback keeps its own run state keyed on the PR, so a fresh document is not a fresh conversation.

Required shape. /post-feedback parses this document, and it refuses documents whose findings are only table rows or only bullets. Every finding must be a heading with a ref line:

markdown
#### [SEVERITY · domain] one-line title
`path/to/file.ext:17-18`

*First whole sentence, in italics, on its own line.*

<prose body: evidence, why it is wrong, impact, then the fix>
  • SEVERITY ∈ CRITICAL · HIGH · MEDIUM · LOW · NIT. domain ∈ the four reviewer names.
  • The ref line is the bare backticked path, on the first non-blank line after the heading.
  • The italic sentence is the finding's identity — /post-feedback opens the posted comment with it verbatim. Nothing may sit between the ref line and that sentence.
  • Group findings under ## Security / ## Correctness / ## Performance / ## Consistency.
  • Put non-postable material (verified-clean notes, resolved questions, corrected reviewer claims) under headings without a severity tag, so it is never offered as a comment.

Also carry over into the file, beyond the chat summary:

  • The Step 5 header block verbatim, plus a Finding identity note explaining the italic-sentence rule.
  • Findings deduplicated across reviewers — one entry per defect, noting cross-confirmation, not one entry per reviewer that found it.
  • Any reviewer claim you disproved, under a ## Corrected reviewer claim heading. Reviewers are wrong often enough that silently dropping a bad finding loses the correction.

Verify every line number before writing it. Reviewers report anchors that do not exist — a sed -n or grep -n against the file at the reviewed SHA costs seconds and these anchors become PR comment positions. If you corrected any, say so in a note near the top of the document so nobody "restores" them.

Then tell the user the path in your chat reply.

Step 7: Offer to fix

After presenting the report, ask the user:

Found X issues. Want me to fix the actionable ones? (y/n)

If the user says yes:

  1. Fix each actionable issue directly
  2. Commit each fix: fix: [description]
  3. Re-run build/tests to verify
  4. Report what was fixed

Do NOT fix:

  • Performance suggestions requiring architectural changes
  • Consistency deviations that may be intentional
  • Anything marked as "needs discussion"

Notes

  • All 4 reviewers run in parallel via sub-agents for speed
  • On Claude Code, set model per the depth table in Step 3 (opus for correctness and security, sonnet for the pattern-oriented reviewers), clamped to the session model family; --depth max runs all four on the session model
  • On Cursor CLI, reviewers inherit the parent model (no model override available)
  • The skill itself coordinates and synthesizes — it does not duplicate reviewer work
  • Writing the feedback document (Step 6) is unconditional — it is the deliverable, not an optional extra. The chat report is a summary of it, not a substitute
  • Does NOT push to remote — the user handles that
  • The Step 5 header block is consumed by /post-feedback, which files these findings as line-anchored PR comments. **Reviewed at:** gives it the commit the file:line references were written against, so it can say "this document is 12 commits stale" up front instead of discovering it one rejected comment at a time; **PR:** gives it a machine-readable target instead of guessing from the filename. Do not drop either line as boilerplate — a report without them still reads fine to a human and silently degrades the tool that consumes it.

© tetherto, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in packages/ocr-ggml/.agent/skills/review of tetherto/qvac.

Open the folder on GitHubat commit c3a6030

Compare with similar skills

Review next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Review compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Review this skilltetherto/qvac681—~3.3kAutomated safety check: WarnApache-2.0
Chisle ReviewJayPokale/Chisle633—~362Automated safety check: PassMIT
RAG Code Reviewlyonzin/knowledge-rag290—~1.8kAutomated safety check: PassMIT
Code Reviewnstarman/quax143—~3.2kAutomated safety check: PassApache-2.0
3dgs Code Reviewerjaccen/Awesome-Gaussian-Skills161—~2.9kAutomated safety check: PassApache-2.0
Promptkitmicrosoft/PromptKit110—~420Automated safety check: PassMIT

Similar skills

  • Chisle Review

    JayPokale/Chisle

    Review a diff or file through the Chisle lens: flag over-engineering, speculative abstractions, reinvented stdlib, and verbose code that a lazier approach would shrink.

    633 GitHub stars~362 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • RAG Code Review

    lyonzin/knowledge-rag

    When performing code review on a PR, diff, snippet, or "look at this change" request, first consult the corpus for related ADRs, coding standards, prior patterns, and similar files.

    290 GitHub stars~1.8k tokensUpdated 4 days ago
    DevelopmentAuto-check passed
  • Code Review

    nstarman/quax

    A skill your agent uses when reviewing a pull request or diff in the quax repository.

    143 GitHub stars~3.2k tokensUpdated 4 days ago
    DevelopmentAuto-check passed
  • 3dgs Code Reviewer

    jaccen/Awesome-Gaussian-Skills

    Review 3DGS implementation code for correctness, performance bugs, and best practices.

    161 GitHub stars~2.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Promptkit

    microsoft/PromptKit

    Official

    PromptKit composition engine. An agent skill from microsoft/PromptKit.

    110 GitHub stars~420 tokensUpdated 20 days ago
    DevelopmentAuto-check passed
  • Create Agent Template

    harness/harness-skills

    Generate Harness Agent Template files for AI-powered automation agents.

    115 GitHub stars~2.2k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from tetherto/qvac

All 50 skills in this repo
  • Creates a Solutions page in the QVAC documentation website from a real use case, generalizing the case into reusable guidance and registering the page in the site navigation.

    681 GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Qv Docs Update

    tetherto/qvac

    Updates the docs website after a change to the SDK or CLI. An agent skill from tetherto/qvac.

    681 GitHub stars~11k tokensUpdated today
    Auto-check passed
  • Qv Agent Stack Sync

    tetherto/qvac

    Plan and prepare the QVAC agent-stack release cascade across @qvac/inference, @qvac/sdk, @qvac/cli, @qvac/ai-sdk-provider, @qvac/opencode-plugin, and @qvac/openclaw-plugin.

    681 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Run the deterministic code-quality audit, turn related findings into contextual remediation groups, prepare approval-gated Asana proposals, reconcile recurring runs, or configure twice-monthly…

    681 GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Review C++ changes for string parameter and call-site efficiency conventions (std::stringview, std::string&&, const std::string&, const char, and TransparentStringMap lookup).

    681 GitHub stars~702 tokensUpdated today
    Auto-check passed
  • Qv Addon Changelog

    tetherto/qvac

    Generate changelog entries for a target add-on package. An agent skill from tetherto/qvac.

    681 GitHub stars~1.7k tokensUpdated today
    Auto-check passed

Questions about Review

What does Review do?

Run a comprehensive code review with 4 specialized reviewers (security, correctness, performance, consistency) in parallel. Review is an agent skill from tetherto/qvac. Run a comprehensive code review with 4 specialized reviewers (security, correctness, performance, consistency) in parallel.

When should I use Review?

Review fits situations like: tasks that involve Code review.

How do I install Review in Claude Code?

Run `npx skills add tetherto/qvac --skill review -a claude-code`. Or copy the skill folder (packages/ocr-ggml/.agent/skills/review in tetherto/qvac) into .claude/skills/review in your project. Claude Code loads it when a task matches its description.

How do I install Review in Codex?

Run `npx skills add tetherto/qvac --skill review -a codex`. Or copy the skill folder (packages/ocr-ggml/.agent/skills/review in tetherto/qvac) into .agents/skills/review in your project. Codex loads it when a task matches its description.

Can I use Review in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tetherto/qvac --skill review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/review, .gemini/skills/review, .github/skills/review and .opencode/skills/review in your project.

What does Review need to run?

Going by SKILL.md and its folder, Review needs the command-line tools its instructions call (git and gh).

Does Review access the network?

SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Review safe to install?

Our automated static check of SKILL.md flagged 1 warning(s): mentions a credentials file (ssh keys, cloud or package-manager tokens). Read the flagged lines before installing; the check is not a guarantee either way.

What licence does Review use?

Review is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Review use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Review?

Skills that share tags, products or a category with Review: Chisle Review (JayPokale/Chisle, 633 stars), RAG Code Review (lyonzin/knowledge-rag, 290 stars), Code Review (nstarman/quax, 143 stars) and 3dgs Code Reviewer (jaccen/Awesome-Gaussian-Skills, 161 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Review?

tetherto (a GitHub organization) maintains it in tetherto/qvac, which has 681 GitHub stars. The repository holds 50 skills in this directory. The repository was last updated on October 7, 2026.

Source: tetherto/qvac on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.