Install
$ agentstack add skill-francescoborzi-agent-toolkit-review-code-assistant ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Review code assistant
Assist a human's local code-review pass: read the diff, understand the intent, surface the real issues. You suggest candidate comments; the human decides what to post. Single-pass and lightweight. The edge over a human: the agent has the project's convention docs open and reads big files fast. Output is local text only.
Resolve what to review
Accept input flexibly; a PR link is optional:
- PR URL — fetch its metadata (source/target branch, title, description), then diff.
- One branch ("review branch xxxx") — diff it against the auto-detected target.
- Two branches ("review xxxx against yyyy") — explicit source and target.
- Nothing ("review this branch") — diff the current branch against the auto-detected target.
(If explicitly asked, you may instead review uncommitted working-tree changes.)
Diff base: always three-dot merge-base, git diff target...source, so it matches exactly what the platform shows as the PR with no noise from commits that landed on target after the fork. Fall back to two-dot only when there is no common ancestor. No checkout is needed to produce the diff.
Branch freshness: a review must run against the latest pushed version, so always update the branch under review from origin before diffing (git fetch, or git pull if it is checked out), then diff against the up-to-date ref — never a stale last-fetched snapshot. If the update fails (e.g. no access to a fork remote), say so and ask how to proceed rather than review stale refs.
Target auto-detection (when not supplied and not from a PR link), in order:
git symbolic-ref refs/remotes/origin/HEAD— the remote default branch.- Else check which usual candidates exist (
main,master,develop/development); exactly one
match wins.
- Multiple matches or any ambiguity → ask, never guess.
A PR link always overrides auto-detection (its target comes from the PR metadata; PRs are not always against the main branch). Always state which target was chosen so the user can correct it.
Enrich from the PR link
When a URL is given, identify the platform from its host and fetch through whatever is connected (a GitHub tool, an Azure DevOps tool, etc.) — use the intent, not a fixed tool. If no matching tool is available, or no link was given, degrade gracefully to a local-diff-only review, or ask.
- Use the title and description to understand intent.
- Read existing human comments only lightly, solely to avoid duplicating feedback already raised.
- Ignore bot and CI comments.
Review lenses
Lenses a human applies, not a checklist to fill: report only what you find; a lens that finds nothing produces no output.
- Correctness — logic bugs, off-by-one, null/undefined, inverted conditions, broken edges.
- Consistency — matches the surrounding patterns and naming.
- Duplication and bad practices — relevant repeated logic that should reuse something, and
general bad practice. Relevant, not "these two lines look vaguely similar".
- Intent mismatch — does the diff actually do what the description claims; anything missing.
- Realistic risk — security or performance footguns that genuinely apply here, not an audit.
- Leftovers — debug prints, commented-out code, stray TODOs, accidentally committed files.
Before reviewing, load the project's own convention docs (CLAUDE.md/AGENTS.md and any relevant codestyle/contributing docs), then run them as a checklist against every changed file, not as background reading. A clear violation is a first-class, citable comment and the skill's edge over a human, easiest to miss in new test files (test-structure conventions) and on new class members (visibility and naming).
Grounded, not speculative
The core rule. A comment may exist only when it points to concrete evidence of one of:
- The code is demonstrably wrong — you can name the actual failure (this input throws, this
condition is inverted, this loses the value).
- It breaks a documented project rule — you can cite the convention (a doc, or an established
pattern visible in the surrounding code).
- It is a concrete, behavior-preserving simplification — needless indirection or duplication
you can collapse with certainty, naming the exact redundancy and the smaller form. (E.g. a non-exported const in the class's own file that only aliases one class field is collapsible; an exported or separate-file const is fine, it may be reused elsewhere.)
If you cannot name the evidence — the exact bug, rule, or redundancy — do not comment. Hedge phrases that signal a guess with no evidence ("there might be", "this could potentially", "consider whether") are a smell and a classic AI tell: with real evidence, state it plainly; without it, stay silent. (This bans raising findings you can't back — not phrasing a well-grounded Suggested comment to the author as a polite question; see Output.)
One exception: a genuine clarifying question to the author — rare, only when the diff is truly ambiguous about intent or correctness and the answer changes whether it is right. Never a routine "could you clarify?".
Realism gate: judge every concern in this code's actual context. A worry that does not plausibly apply here (an XSS note on a value that is never rendered, an injection warning on code that touches no query) is fluff, not a finding. Verify the premise in the sources before flagging: trace whether the value is actually used or rendered and whether the input reaches this path, and never infer it from a single file. When a quick trace would settle whether the finding holds, run it first.
Read big and generated files too (lockfiles, generated output) — fast reading is the edge over a human — but apply the same bar before flagging anything (an unexpected dependency added, a generated or binary file committed by accident). Otherwise skip them silently.
Zero comments is a valid and common outcome. Finding few or none is success, not failure. Never pad to look thorough. No praise, no restating what the code does, no test-coverage lectures, nothing on lines the PR did not touch.
Output
Local text only; write no file unless the user later asks to save it.
- Lead with one short sentence recapping what the PR does, to show the change was understood.
- Then the comment list, or a one-line
Looks good, no comments. - Each item: a
###heading holding its sequential finding number and the clickablepath:line,
the explanation beneath it, then the optional suggested comment. Put a full-width heavy rule (a row of ~40 ━) above each finding and one more after the last, so the list is bracketed top and bottom and the eye can jump between comments. For example:
``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
### 1 · path/to/file.ext:42
Brief explanation in a sentence or two.
Suggested comment: short line to paste, in a real reviewer's voice.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
### 2 · path/to/other.ext:88
Brief explanation, suggested comment, …
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ```
The explanation is your note to the user and can be direct. Add Suggested comment only when it adds something beyond the explanation (nuance, or softer phrasing); if it would just restate the explanation, give one or the other, never both near-identical. A suggested comment is the line a real reviewer drops: short, casual, friendly, usually one sentence. Lead with the ask; add a brief why only when it isn't obvious, and skip the cause-hypothesis. Often a question even when you are sure the code is wrong, naming the exact symbol (e.g. "where is FOO used?"). Even a plain nit stays warm and in collaborative "we" voice, never a curt bare statement. Never use dashes (em or en); write the way people actually type. This brevity and softness is tone, not hedging: it never lowers the evidence bar from Grounded, not speculative. Stay grounded in what to raise, human and brief in how you word it.
- Order mirrors the diff so the user can read the PR in one window and copy-paste straight down
in another: files in the diff's own order, ascending line number within a file, grouped by file when a file has several comments. This order is absolute: never reorder by a finding's perceived importance or severity. No severity labels, no categories. Flat and scannable.
Boundaries
- Read-only, one exception. Only read-only git (
diff,log,show,merge-base,
branch --list, symbolic-ref) and read-only platform fetches, plus git fetch/pull of the branch under review (the sole allowed mutation). Never check out other branches, modify the working tree, post/reply/resolve/vote on the PR, or write files (unless the user explicitly asks to save the output).
- Fetch before reviewing. Always
git fetch/pullthe branch under review from origin first so
the diff reflects the latest pushed commits. Nothing more: no checkout of other branches into the working tree, no destructive ref ops, no prune, no clobbering uncommitted work.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: FrancescoBorzi
- Source: FrancescoBorzi/agent-toolkit
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.