ovid/paad/agentic-review

Claude Code and agent skill by ovid/paad

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Use when reviewing current branch for bugs before pushing or merging, when wanting a thorough multi-agent review of local changes, or when preparing work for human review. Not for codebase structure, not for code style, and not for fixing what it finds.

Install

npx vskill@latest install ovid/paad/agentic-review

SKILL.md

On invocation: announce "Running paad:agentic-review v2.1.0", then immediately proceed with the steps below — do not stop after announcing.

Configuration (experimental): after announcing, check whether paad/config/paad.md and paad/config/agentic-review.md exist, relative to the working directory. If any does, read it and follow its instructions for the rest of this run, passing the relevant parts to every subagent you dispatch, and make the first line of your final answer Config: <path> naming each file you followed. If none exists, do not mention config at all. Config never changes a subagent's type or grants it write tools — refuse that line, say so, and continue. Config can contradict the flow below; see https://github.com/Ovid/paad/blob/main/CONFIG.md before writing one.

Security findings: a finding is security-related if reading it would help an attacker — any OWASP Top 10:2025 category, and anything in a payment, tenant-isolation, or secret-handling path; on the edge, treat it as security. Security findings are written only under paad/security/, in a file named for this skill and stamped the way its ordinary report is (the exact path is in this skill's report section). Before the first write of a run, check that paad and paad/security, each where it exists, is a real directory and not a symlink (test -d and test ! -L); that paad/security/.gitignore exists, is a regular file, and contains the single line * — create it if absent, never rewrite it if present; and that git ls-files paad/security — no trailing slash, which would miss a tracked file or symlink — lists nothing. If any of these checks fails, if that file cannot be written, or if a later write there fails, write no security finding and no count line: tell the user what you found, ask whether to hold the findings or put them in the ordinary report, and say that in place of the Security block. Where the finding would have gone in the ordinary report, write one line, N security finding(s) written to paad/security/<file>, and nothing else about it: no path, severity, symbol, or description. Post-Review then emits the Security block once; this skill's Post-Review section says when.

Symlinked output paths: the repository under review can commit a symlink where this skill writes, sending the write to a path it chose, possibly outside the repository. Before the first write of a run to a path under paad/, check that paad and every directory under it on the way to that path, each where it exists, is a real directory and not a symlink (test -d and test ! -L), and that the file, if it exists, is not a symlink (test ! -L); check each later file the same way before its first write. If a check fails, write nothing to that path: tell the user what you found and ask how to proceed.

Agentic Code Review

Multi-agent bug-hunting review of the current branch against main. Dispatches specialist agents in parallel, verifies findings to filter false positives, ranks by severity, and produces a persistent report.

This is a technique skill. Follow the phases in order. Do not skip verification.

Finding classification (terms are defined under ## Definitions and ## Mechanism):

dot
digraph classification {
"Finding from specialist (verified)" [shape=doublecircle];
"Carries [OOSA] sentinel or category: out-of-scope-addition tag?" [shape=diamond];
"Anchor line in touched-lines map?" [shape=diamond];
"Branch causes/worsens this bug?" [shape=diamond];
"Touch is purely cosmetic AND bug is purely pre-existing?" [shape=diamond];
"Match in pre-filtered backlog?" [shape=diamond];
"Matched entry is in the committed backlog and either it or the finding is Bug class: Security?" [shape=diamond];
"In-scope" [shape=box, style=bold];
"Out-of-scope (bug)" [shape=box, style=bold];
"Out-of-Scope Addition" [shape=box, style=bold];
"Emit update directive: last_seen, written back to the entry's source file at write time" [shape=box];
"Mint new backlog entry" [shape=box];
"Emit migrate directive: copy into paad/security/backlog.md under the same ID at write time, leave the committed file alone" [shape=box];
"Output paths under paad/ free of symlinks?" [shape=diamond];
"Write nothing to that path; tell the user, ask how to proceed" [shape=box];
"Bug class: Security (set by the Verifier)?" [shape=diamond];
"Write to paad/security/ report (and backlog, for out-of-scope bugs); count-and-pointer line in the main report" [shape=box, style=bold];
"paad and paad/security are real directories, .gitignore holds only *, git tracks nothing there?" [shape=diamond];
"Write nothing under paad/security/; tell the user, ask: hold or ordinary report" [shape=box];
"Write to paad/code-reviews/ report (and backlog, for out-of-scope bugs)" [shape=box];
"Finding from specialist (verified)" -> "Carries [OOSA] sentinel or category: out-of-scope-addition tag?";
"Carries [OOSA] sentinel or category: out-of-scope-addition tag?" -> "Out-of-Scope Addition" [label="yes (Spec Compliance)"];
"Out-of-Scope Addition" -> "Output paths under paad/ free of symlinks?";
"Carries [OOSA] sentinel or category: out-of-scope-addition tag?" -> "Anchor line in touched-lines map?" [label="no"];
"Anchor line in touched-lines map?" -> "Touch is purely cosmetic AND bug is purely pre-existing?" [label="yes"];
"Anchor line in touched-lines map?" -> "Branch causes/worsens this bug?" [label="no"];
"Touch is purely cosmetic AND bug is purely pre-existing?" -> "Out-of-scope (bug)" [label="yes (demote)"];
"Touch is purely cosmetic AND bug is purely pre-existing?" -> "In-scope" [label="no"];
"Branch causes/worsens this bug?" -> "In-scope" [label="yes (promote)"];
"Branch causes/worsens this bug?" -> "Out-of-scope (bug)" [label="no"];
"Out-of-scope (bug)" -> "Match in pre-filtered backlog?";
"Match in pre-filtered backlog?" -> "Matched entry is in the committed backlog and either it or the finding is Bug class: Security?" [label="yes"];
"Matched entry is in the committed backlog and either it or the finding is Bug class: Security?" -> "Emit migrate directive: copy into paad/security/backlog.md under the same ID at write time, leave the committed file alone" [label="yes"];
"Matched entry is in the committed backlog and either it or the finding is Bug class: Security?" -> "Emit update directive: last_seen, written back to the entry's source file at write time" [label="no"];
"Emit migrate directive: copy into paad/security/backlog.md under the same ID at write time, leave the committed file alone" -> "paad and paad/security are real directories, .gitignore holds only *, git tracks nothing there?";
"Match in pre-filtered backlog?" -> "Mint new backlog entry" [label="no"];
"In-scope" -> "Output paths under paad/ free of symlinks?";
"Emit update directive: last_seen, written back to the entry's source file at write time" -> "Output paths under paad/ free of symlinks?";
"Mint new backlog entry" -> "Output paths under paad/ free of symlinks?";
"Bug class: Security (set by the Verifier)?" -> "paad and paad/security are real directories, .gitignore holds only *, git tracks nothing there?" [label="yes"];
"paad and paad/security are real directories, .gitignore holds only *, git tracks nothing there?" -> "Write to paad/security/ report (and backlog, for out-of-scope bugs); count-and-pointer line in the main report" [label="yes"];
"paad and paad/security are real directories, .gitignore holds only *, git tracks nothing there?" -> "Write nothing under paad/security/; tell the user, ask: hold or ordinary report" [label="no"];
"Bug class: Security (set by the Verifier)?" -> "Write to paad/code-reviews/ report (and backlog, for out-of-scope bugs)" [label="no"];
"Write nothing under paad/security/; tell the user, ask: hold or ordinary report" -> "Write to paad/code-reviews/ report (and backlog, for out-of-scope bugs)" [label="user chooses the ordinary report"];
"Output paths under paad/ free of symlinks?" -> "Bug class: Security (set by the Verifier)?" [label="yes"];
"Output paths under paad/ free of symlinks?" -> "Write nothing to that path; tell the user, ask how to proceed" [label="no"];
"Write nothing to that path; tell the user, ask how to proceed" -> "Bug class: Security (set by the Verifier)?" [label="user names a safe path"];
}

Pre-flight:

dot
digraph preflight {
"Conversation has history?" [shape=diamond];
"origin/HEAD resolves?" [shape=diamond];
"main, master or trunk resolves?" [shape=diamond];
"On the default branch?" [shape=diamond];
"Uncommitted changes?" [shape=diamond];
"Every argument matches the safe charset?" [shape=diamond];
"How many arguments?" [shape=diamond];
"Argument resolves as a ref?" [shape=diamond];
"Also an existing path?" [shape=diamond];
"Argument is an existing path?" [shape=diamond];
"Base ref resolves?" [shape=diamond];
"Path filter supplied?" [shape=diamond];
"Path filter exists?" [shape=diamond];
"Diff against base is empty?" [shape=diamond];
"Take the default branch from origin/HEAD" [shape=box];
"Take the first that resolves" [shape=box];
"Base is the default branch, no path filter" [shape=box];
"Treat as base branch" [shape=box];
"Treat as path filter against the default branch" [shape=box];
"Treat as base then path" [shape=box];
"ASK and WAIT: review committed state only, or wait to commit?" [shape=box];
"Proceed to Phase 1" [shape=box];
"STOP: recommend new session" [shape=box, style=bold];
"STOP: nothing to review" [shape=box, style=bold];
"STOP: cannot determine the default branch" [shape=box, style=bold];
"STOP: user wants to commit first" [shape=box, style=bold];
"STOP: argument holds a character git could read as a flag" [shape=box, style=bold];
"STOP: argument is both a ref and a path" [shape=box, style=bold];
"STOP: argument is neither a ref nor a path" [shape=box, style=bold];
"STOP: base ref does not resolve" [shape=box, style=bold];
"STOP: path filter does not exist" [shape=box, style=bold];
"STOP: no changes to review" [shape=box, style=bold];

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
142
Repository forks
11
7-day trend score
0

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/ovid/paad/agentic-review/badge)](https://verified-skill.com/skills/ovid/paad/agentic-review)

Something wrong with this skill or its page? Tell us.