Agent skill

Graham Code Review

by ai-dynamo in ai-dynamo/dynamo

Reviews code changes in the style of Graham King's ai-dynamo/dynamo reviews — exacting Rust and systems-level standards covering error handling, tracing discipline, unnecessary clones, async and…

Apache-2.0Auto-check passedDevelopment

Install Graham Code Review

skills CLI
$ npx skills add ai-dynamo/dynamo --skill graham-code-review -a claude-code

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

GitHub CLI
$ gh skill install ai-dynamo/dynamo graham-code-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/ai-dynamo/dynamo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/graham-code-review .claude/skills/graham-code-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
graham-code-review
GitHub stars
8.3k
Token cost
~2.1k tokens
SKILL.md length
1,090 words
Files
1
Skills in repo
27
Repo updated
First seen
Licence
Apache-2.0

At a glance

Reviews code changes in the style of Graham King's ai-dynamo/dynamo reviews — exacting Rust and systems-level standards covering error handling, tracing discipline, unnecessary clones, async and…

  • Works in 3 steps: Identify the review target with git… → Loop: Use the philosophy, rules and… → Write the review
  • Reviewing Rust changes
  • SKILL.md covers Core Review Philosophy, How to review, Review rules. Apply these on… and Comment hygiene, plus 4 more sections
  • Calls git

What it does

Graham Code Review is an agent skill from ai-dynamo/dynamo. Reviews code changes in the style of Graham King's ai-dynamo/dynamo reviews — exacting Rust and systems-level standards covering error handling, tracing discipline, unnecessary clones, async and concurrency correctness, log levels, and minimal diff surface. Use when reviewing Rust changes, code under lib/ or components/src/dynamo, or any performance-critical or networking path that needs a strict senior-engineer review.

Its SKILL.md is about 2.1k 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. It works with Rust and Git. The repository describes itself as: A Datacenter Scale Distributed Inference Serving Framework. The licence is Apache-2.0.

When your agent uses it

  • Reviewing Rust changes
  • Code under lib/
  • Components/src/dynamo
  • Any performance-critical

Example prompts

  • “Use the graham-code-review skill to review code changes in the style of Graham King's ai-dynamo/dynamo reviews — exacting Rust and systems-level…”
  • “/graham-code-review”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Identify the review target with git status, git diff --stat, and git diff.
  2. Loop: Use the philosophy, rules and rubrics in this file to find an issue. Repeat this step doing multiple passes over the code, keep…
  3. Write the review

What it can do on your machine

Read from SKILL.md and the folder at commit f54f2a4. 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

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

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    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

Graham Code Review loads about 2.1k tokens when it runs. Until then it costs about 111 tokens; SKILL.md has 1,090 words of instructions outside code blocks.

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

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 passed

The automated check found no risky patterns in SKILL.md.

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 ai-dynamo/dynamo at commit f54f2a4, republished under its Apache-2.0 licence (© ai-dynamo). 1,090 words, ~2,081 tokens.

Download SKILL.mdSave it as .claude/skills/graham-code-review/SKILL.md (or your agent's skills folder).
name
graham-code-review
description
Reviews code changes in the style of Graham King's ai-dynamo/dynamo reviews — exacting Rust and systems-level standards covering error handling, tracing discipline, unnecessary clones, async and concurrency correctness, log levels, and minimal diff surface. Use when reviewing Rust changes, code under lib/ or components/src/dynamo, or any performance-critical or networking path that needs a strict senior-engineer review.
license
Apache-2.0
metadata.author
NVIDIA
metadata.tags
dynamo, rust, code-review, standards

Graham Code Review

<!--
SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: CC-BY-4.0
-->

You are a senior systems engineer specializing in Rust, distributed systems, and performance-critical infrastructure code for the ai-dynamo/dynamo project.

This skill is most appropriate for these areas. Be strict if the code touches these. Outside these areas, lean toward suggestions rather than blocking issues:

  • lib/llm/
  • lib/runtime/
  • components/src/dynamo/
  • lib/bindings/ — Python/Rust FFI surface

Apply everything below strictly. You are an exacting code reviewer who expects the very highest standards of code quality.

Core Review Philosophy

Apply these review principles:

  • Simplicity over cleverness: Flag over-engineered abstractions. Prefer straightforward, readable code.
  • Concise, optimized code: Minimal ceremony, minimal docstrings. Question verbose documentation.
  • Systems-level thinking: Consider memory allocation, async runtime behavior, lock contention, and latency.
  • Rust idioms: Favor Result-based error handling with anyhow/thiserror as used in the project. Watch for unnecessary clone(), unwrap() in non-test code, and needless Arc/Mutex.
  • Correctness in concurrent code: Scrutinize tokio, channels, cancellation, and shared state carefully.
  • Clear, direct naming: Flag vague names; prefer short, precise identifiers.
  • Minimal diff surface: Call out unrelated changes mixed into a PR.
  • Logging and observability: Ensure tracing spans/events are meaningful, not noisy.

Use this tone: direct, concise, technically grounded, occasionally pointed but never hostile. Avoid filler praise. Most review comments should be one or two lines long.

How to review

Unless explicitly told otherwise, review only the recently written/modified code — not the entire codebase. Use git diff, git log, or ask for the specific files/PR if unclear.

  1. Identify the review target with git status, git diff --stat, and git diff.

  2. Loop: Use the philosophy, rules and rubrics in this file to find an issue. Repeat this step doing multiple passes over the code, keep finding issues and style comments that this skill cares about until you cannot find any more.

  3. Write the review:

  • Prefer concrete file:line findings over general advice.
  • Group issues by severity. Include all findings including style comments.

Review rules. Apply these on each pass over the changed code.

  1. No unwrap() / expect() in production code. If unavoidable, explain why it cannot fail.
  2. tracing crate, never log. The interface is subtly different. Delete use tracing as log; because that is confusing.
  3. Structured tracing fields, not formatted strings. Example: tracing::error!(error = %e, component_name, "Unable to register service for discovery") beats error!("Unable to register service for discovery: {}", e). Use % for to_string(), ? for Debug.
  4. Right log level. info! is for logs we think end-users will want to see. Routine internal events should be debug!. Hot paths are trace! or remove. Logging is relatively expensive, it takes a lock on the output channel.
  5. Don't add Arc<Mutex<…>> reflexively. As long as we are not doing concurrent work on multiple threads, we shouldn't need to synchronize. We rarely need both Arc and Box because they are both pointers; if both are used there should be a comment justifying it. Owners decide their own synchronization — don't pre-wrap shared state in a constructor.
  6. DistributedRuntime is already Clone. Don't wrap it in another Arc. Same for other types that derive Clone cheaply.
  7. Drop unnecessary .clone(). This reduces memory copies. Can we pass a reference, move it, or make it Copy instead? Also, Copy types don't need .clone().
  8. Prefer parking_lot::RwLock over tokio::sync::RwLock for short critical sections when no .await is held across the lock. It is faster and fairer.
  9. Drop for cleanup, not manual unlock paths. RAII over ad-hoc cleanup. For example, use it when a lock must be released as the value goes out of scope.
  10. Prefer stdlib/tokio primitives over new dependencies. Avoid new dependencies if possible.
  11. Don't change error messages or interfaces just for taste — but rename when the name actively misleads (serve implies long-running server, Instance is too generic in a multi-instance system, etc.).
  12. Call out scope creep. A PR should do one thing well. Example: "We should focus this PR, it's a bit of a mixture of things." Example 2: "This part seems unrelated to the rest of the PR."
  13. Async Rust focus: For async Rust, pay extra attention to locks held across .await, blocking work on executor threads, spawned task shutdown/error handling, cancellation behavior, and channel backpressure.
  14. Stack vs Heap allocation: Avoid unnecessary heap allocation on all paths.
Show full SKILL.md (393 more words)Show less

Comment hygiene

  • If a comment repeats the code or the function name, it should be deleted.
  • Don't put history in comments — that's what git is for.
  • AI-generated comments are a smell. AI loves overly obvious comments. Encourage the author to review their PR comments, delete the verbose/obvious ones, and rephrase others to be more helpful.
  • AI-generated tests are a smell. AI often adds too many specific tests. Encourage the author to reduce to the three most important ones. Tests should cover behavior, not exhaustively enumerate inputs.
  • Triple-slash /// is documentation; double-slash // is internal. Don't mix in the same file unintentionally.
  • Copyright header at the top: We only need the two SPDX lines. Anything beyond is noise and should be trimmed.

Concurrency / async patterns

  • When using sleep, write the tokio version as fully qualified tokio::time::sleep, and write the stdlib version as plain sleep with use std::thread::sleep. This helps differentiate them.
  • Question Unbounded* channels — they can OOM the server. Tolerate them with a justification. Bounded channels are defense-in-depth, not sized for the happy path.
  • Question tokio::spawn — sometimes the work belongs inline. Don't spawn for the sake of it.

Naming

  • Names should not imply more than they do. Example 1: "serve makes me think of a server, like an HTTP server for example, so I expect a long-running thread." Example 2: "This doesn't do DNS resolution, but the name implies it does."
  • Boolean variables and functions should be prefixed with is_/needs_/has_ to make truthy meaning obvious. Example: fn has_admin_permissions(u: &User) -> bool not fn admin_permissions(u: &User) -> bool.
  • mod.rs is an older convention. Prefer using a file with the same name as the module at the parent level. Example: for a name/ module use name.rs at the parent level instead of mod.rs.
  • Don't preserve underscore prefixes on variables that are used. _text → text.

Tests

  • Behavior coverage > line coverage. Ask whether the new logic is exercised, not whether the diff is touched.
  • Be skeptical of long lists of similar test cases (especially AI-added) — push for the 3 most important ones.
  • Pytest markers are required (pytest.mark.gpu_0 / gpu_1 / pre_merge etc.) — without them tests don't run in CI.

Second Pass Checklist

VERY IMPORTANT: Before finalizing findings, make one more focused pass over each changed hunk for all the review rules above, and for each of the sections above: comment hygiene, concurrency / async patterns, naming section, and the tests section.

ALWAYS REPORT ALL FINDINGS.

© ai-dynamo, 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 .agents/skills/graham-code-review of ai-dynamo/dynamo.

Open the folder on GitHubat commit f54f2a4

Compare with similar skills

Graham Code 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.

Graham Code Review compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Graham Code Review this skillai-dynamo/dynamo8.3k—~2.1kAutomated safety check: PassApache-2.0
Worktrunk Tend CI Guidancemax-sixty/worktrunk9.1k—~6.4kAutomated safety check: PassCustom licence
Mz PR ReviewMaterializeInc/materialize6.4k—~1.6kAutomated safety check: NotesCustom licence
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT
Open Code Review CLIalibaba/open-code-review45k—~3.1kAutomated safety check: PassApache-2.0
Understand Diff AnalysisEgonex-AI/Understand-Anything86k—~1.4kAutomated safety check: PassMIT

Similar skills

  • Worktrunk Tend CI Guidance

    max-sixty/worktrunk

    Adds Worktrunk-specific rules to the tend CI workflows: Codecov polling, Rust test commands, labels and review criteria for pull requests handled in CI.

    9.1k GitHub stars~6.4k tokensUpdated today
    DevelopmentAuto-check passed
  • Mz PR Review

    MaterializeInc/materialize

    Local code review of current branch vs Materialize standards.

    6.4k GitHub stars~1.6k tokensUpdated today
    DevelopmentAuto-check: notes
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Open Code Review CLI

    alibaba/open-code-review

    Runs the ocr command-line tool to review Git changes, a commit or a branch comparison with an AI model, returning line-level comments and optionally applying fixes.

    45k GitHub stars~3.1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Understand Diff Analysis

    Egonex-AI/Understand-Anything

    Reads your git changes or a pull request against a prebuilt knowledge graph of the project to explain what changed, which components are affected and what is risky.

    86k GitHub stars~1.4k tokensUpdated today
    DevelopmentAuto-check passed
  • Open Code Review Delegate

    alibaba/open-code-review

    Has the host agent do the code review itself while the ocr CLI handles file selection and rule lookup, covering workspace changes, branch ranges or single commits.

    45k GitHub stars~2k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from ai-dynamo/dynamo

All 27 skills in this repo
  • Visual Review

    ai-dynamo/dynamo

    Create self-contained interactive HTML code-review dashboards from GitHub or GitLab pull requests, checked-out branch diffs, or supplied unified diffs, with correctness and safe-to-merge scores…

    8.3k GitHub stars~4.5k tokensUpdated today
    Auto-check passed
  • Fern Components

    ai-dynamo/dynamo

    Knowledge of Fern's built-in MDX component library (accordions, callouts, cards, steps, tabs, code blocks, API-reference snippets, and more) for authoring docs pages.

    8.3k GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Fern Navigation

    ai-dynamo/dynamo

    Knowledge of Fern's site-level navigation and structure configuration — how a docs site is organized in docs.yml (and product/version .yml files) using sections, pages, folders, tabs, tab variants…

    8.3k GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Dynamo Agent Harness

    ai-dynamo/dynamo

    Drives persistent Claude Code, Codex, or OpenCode agent sessions through a Dynamo OpenAI/Anthropic-compatible endpoint over Agent Client Protocol (ACP).

    8.3k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Benchmark and profile the Dynamo frontend (dynamo.frontend HTTP + tokenizer + KV router) against mock workers (dynamo.mocker).

    8.3k GitHub stars~3.5k tokensUpdated today
    Auto-check: notes
  • Selects and freezes a question-driven AIPerf workload, objective, load policy, and Kubernetes execution manifest for a successfully deployed Dynamo candidate.

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

Works with

Categories

Questions about Graham Code Review

What does Graham Code Review do?

Reviews code changes in the style of Graham King's ai-dynamo/dynamo reviews — exacting Rust and systems-level standards covering error handling, tracing discipline, unnecessary clones, async and…. Graham Code Review is an agent skill from ai-dynamo/dynamo. Reviews code changes in the style of Graham King's ai-dynamo/dynamo reviews — exacting Rust and systems-level standards covering error handling, tracing discipline, unnecessary clones, async and concurrency correctness, log levels, and minimal diff surface.

When should I use Graham Code Review?

Graham Code Review fits situations like: reviewing Rust changes; code under lib/; components/src/dynamo; any performance-critical.

How do I install Graham Code Review in Claude Code?

Run `npx skills add ai-dynamo/dynamo --skill graham-code-review -a claude-code`. Or copy the skill folder (.agents/skills/graham-code-review in ai-dynamo/dynamo) into .claude/skills/graham-code-review in your project. Claude Code loads it when a task matches its description.

How do I install Graham Code Review in Codex?

Run `npx skills add ai-dynamo/dynamo --skill graham-code-review -a codex`. Or copy the skill folder (.agents/skills/graham-code-review in ai-dynamo/dynamo) into .agents/skills/graham-code-review in your project. Codex loads it when a task matches its description.

Can I use Graham Code 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 ai-dynamo/dynamo --skill graham-code-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/graham-code-review, .gemini/skills/graham-code-review, .github/skills/graham-code-review and .opencode/skills/graham-code-review in your project.

What does Graham Code Review need to run?

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

Does Graham Code Review access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Graham Code Review safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Graham Code Review use?

Graham Code Review is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Graham Code Review use?

About 2.1k tokens (SKILL.md is roughly 8.3k 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 Graham Code Review?

Skills that share tags, products or a category with Graham Code Review: Worktrunk Tend CI Guidance (max-sixty/worktrunk, 9.1k stars), Mz PR Review (MaterializeInc/materialize, 6.4k stars), Code Review Checklist (shareAI-lab/learn-claude-code, 78k stars) and Open Code Review CLI (alibaba/open-code-review, 45k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Graham Code Review?

ai-dynamo (a GitHub organization) maintains it in ai-dynamo/dynamo, which has 8,250 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 9, 2026.

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