Borrowing it
Nothing to install: this file belongs to arcasilesgroup/ai-engineering. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/arcasilesgroup/ai-engineering/main/.agents/skills/ai-review/SKILL.mdgit clone --depth 1 https://github.com/arcasilesgroup/ai-engineeringWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/arcasilesgroup/ai-engineering/ai-review)<a href="https://agentmods.dev/skills/arcasilesgroup/ai-engineering/ai-review"><img src="https://agentmods.dev/badge/skills/arcasilesgroup/ai-engineering/ai-review/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/arcasilesgroup/ai-engineering/ai-review"><img src="https://agentmods.dev/badge/skills/arcasilesgroup/ai-engineering/ai-review.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00179 | $0.01162 |
| Opus 5 | $0.00089 | $0.00581 |
| Sonnet 5 | $0.00036 | $0.00232 |
| Haiku 4.5 | $0.00018 | $0.00116 |
Grade A, and why
ai-review scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 86 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Judge the diff
The tier to ask for
Review is hard reasoning about a stranger's change; ask the top tier, the model the
repository's [models] section configures for it — never a model name coded here, and
never a provider the repository did not choose. model_router maps review (and plan and
audit) to the top tier; if the pin leaves it unconfigured, fall back to default_tier.
Say which tier you ran on so the command event's tier_model can be read against
reality.
What it produces
Findings, each one at file:line, each with the smallest change that would resolve it.
Steps
- Read the spec and the plan first. Half of all real findings are "this is not what was agreed", and you cannot see those from the diff alone.
- Read the diff whole before commenting on any part of it. A finding about a line that the next hunk deletes wastes the author's afternoon. If it does not fit in one pass, say so in the first line of the report, review it in named parts, and list the parts you have not read. A truncated pass reads exactly like a complete one, which is the failure this framework exists to cure, arriving as a confident report about the half that fit.
- Work the checklists in
references/, one lens at a time, and every lens in that directory is one of them: correctness, security, performance, testing, compatibility, architecture, simplification, docs, frontend and motion. Each is a separate pass; mixing them is how the security one gets skipped. Skip a lens the diff cannot touch and name the one you skipped — a lens nothing routes to is a checklist nobody works. Within each, follow the data flow: where the value enters, what may change it, where it is read. Then read the business rule the change encodes, not only the code — a lens applied to lines finds what is wrong, and only the rule says what is wrong here. - Never report what a tool already reports. Formatting, lint, secrets, dependency vulnerabilities — those ran in CI, and repeating them buries the findings only a person could have made. If the gate did not run, say that instead of standing in for it.
- For each finding: what breaks, the inputs that break it, and the smallest fix. A finding without a failing scenario is an opinion, and it should be labelled as one.
- Before you call anything blocking, try to kill it, and default to dismissing: re-read the file around the line, not the hunk, and look for the guard, caller, framework behaviour or config that makes the scenario impossible. Dismiss it too when the bug is real and the fix you would propose is wrong, or worse than the code. A real bug you are unsure of still blocks; a theoretical one you are certain of does not. Say what you tried to kill and what lived.
- Say what is good, once, briefly, and only where it is load-bearing. Then rank findings by what you would actually block on.
What ships with it
11 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- corpus.md 3.2 KB
- references/architecture.md 972 B
- references/compatibility.md 501 B
- references/correctness.md 797 B
- references/docs.md 1.3 KB
- references/frontend.md 2.4 KB
- references/motion.md 1.2 KB
- references/performance.md 450 B
- references/security.md 1.2 KB
- references/simplification.md 1.1 KB
- references/testing.md 2.4 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 86 lines · 179 tokens per session scan A 3096a16922be
ai-review is a skill published in the GitHub repository arcasilesgroup/ai-engineering (54 stars, last pushed yesterday), licensed Apache-2.0. It adds 179 tokens to every session and 1,162 once invoked, about $0.0009 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
rework-rate
Measure and interpret PR rework rate — the emerging 5th DORA metric.
audit
Audits recent work against its Definition of Done and project patterns. Runs the test suite, compares code against the spec, and reports PASS / PARTIAL / FAIL. Also runs the Critical Gate — a safety scan of the diff for destructive or dangerous operations. Generates an incremental prompt pack for any gaps found. With…
codex-review
Use this skill when users ask for code review, review pending changes, or inspect the latest commit with Codex-based review workflows. It prepares context, runs project linting, and reviews the result.
phoenix-review
Review completed work against the Intent Contract's acceptance criteria using objective evidence, not opinion — re-run every check, confirm no regressions, inspect the tamper-evident trace, and surface only real issues (bugs, unmet criteria, regressions). Use before shipping, after a feature is built, or when the user…
pr-classify
A pull-request review process that classifies findings as Critical, Important, or Optional. A pull request is a proposed code change submitted for review before it is merged into the project.
pr-recheck
Second-pass re-review of a PR that already has review comments. Re-reads the diff and new commits against the existing open threads, marks each as addressed / partial / not addressed, resolves the addressed ones, and then either approves (only when everything is clean) or drafts new inline comments. Use when the user…