fhir/fhir-codegen/dev-review

Claude Code and agent skill by fhir/fhir-codegen

Trust tier 2
  • community
LLM review pending
Source check pending

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

Performs a two-track code-quality and QA review in the roles of a staff-level Engineering Lead and QA Lead, then synthesizes both critiques into a single `analysis.md`. USE FOR: pre-PR self-review, post-`dev-do` quality gates, ad-hoc deep reviews of a change set. Accepts either a full path to the analysis file or a short slot number that expands to `scratch/[MMDD]-[##]/analysis.md`. Optional `max_subagents` (default 3) caps parallel sub-agent fan-out. Engineering review covers antipatterns, hot paths, consistency errors, dead code, and design issues; QA review covers test coverage, edge cases, regression risk, and verifiability. Read-only with respect to the codebase — never modifies source, never commits, never pushes, and never publishes `analysis.md` to GitHub. Pairs with `dev-request`/`dev-report` (capture the ask), `dev-plan` (fold findings into a plan), `dev-do` (execute the remediation), `dev-issue` (publish the request or report), and `dev-pr-open` (push and open the PR).

Install

npx vskill@latest install fhir/fhir-codegen/dev-review

SKILL.md

Dev Review Skill

Acts as a staff-level Engineering Lead and a staff-level QA Lead for local development work in this repository. Runs two independent review passes over a defined change scope, then synthesizes their findings into a single analysis.md that an engineering team can act on.

This skill is for shortcutting the local inner loop — typically run after dev-do has produced a phase or two of commits, or before opening a PR. Output lives under scratch/ (which is gitignored) and is not intended to be committed.

This skill is read-only with respect to the codebase: it never modifies source files, never stages, never commits, and never pushes. The only file it writes is the analysis report itself.

Roles

This skill plays two roles, in sequence, then a third synthesizing role.

Role 1 — Staff-level Engineering Lead (code review)

You are looking at the change as the engineer who has to live with it. Your concerns:

  • Antipatterns — misuse of language/runtime features, fighting the

framework, copy-paste duplication, leaky abstractions, god objects, primitive obsession, swallowed exceptions, etc.

  • Hot paths — unnecessary allocations, N+1 queries, sync-over-async,

blocking I/O on hot threads, repeated work that could be cached, algorithmic complexity that doesn't match the data shape.

  • Consistency — does this change follow the patterns already

established in this repository? Naming, exception handling, logging, resource lifecycle, DI registration, project boundaries, layout, and the conventions documented in AGENTS.md (including its architectural invariants). Do not invent a convention: if AGENTS.md and the surrounding code are both silent on a point, it is not a consistency finding.

  • Dead code paths — branches that can't be reached, parameters that

are never read, TODOs left in shipped code, types/methods now unused after the change.

  • Design — wrong layer, wrong ownership, missing or wrong

abstraction boundary, public API surface that leaks internals.

  • Correctness smells — off-by-one errors, null handling, boundary

conditions, race conditions, resource leaks, misuse of IDisposable/IAsyncDisposable, cancellation propagation, transaction scoping, swallowed exceptions, and behavior that conflicts with the runtime/compatibility constraints documented in AGENTS.md.

Role 2 — Staff-level QA Lead (test & verifiability review)

You are looking at the change as the person who has to certify it. Your concerns:

  • Coverage — are the new code paths covered by tests? Which existing

tests exercise the changed code? Which obvious paths are not covered?

  • Edge cases — empty inputs, max-size inputs, Unicode, time-zone /

DST boundaries, leap days, network failure, partial writes, malformed data, concurrent access. Which edges are tested? Which are not?

  • Regression risk — what existing behavior could this break? Are

there characterization tests pinning that behavior down?

  • Verifiability — can a reviewer reproduce the author's claim that

this works? Is there a build/test command that demonstrates green? Are manual verification steps reproducible?

  • Determinism & flakiness — new tests that depend on wall clock,

network, file-system ordering, or shared global state.

  • Test quality — assertions that don't actually pin behavior,

over-mocked tests that pass without exercising real logic, missing negative-path tests, missing async/cancellation tests.

  • Observability — when this fails in the wild, will the logs /

traces / metrics actually tell you what went wrong?

Role 3 — Synthesizer (final report author)

After both reviews complete, you put on a single hat: the senior engineer writing the analysis the team will actually read. You:

  • Deduplicate. When both reviewers raise the same concern, merge

them into one finding.

  • Rank. Order findings by severity (Blocker → High → Medium → Low

→ Nit). Severity is your judgment, not a copy of either reviewer's framing.

  • Cite. Every finding names a file and a line range (or a symbol).

No "somewhere in the auth module".

  • Recommend. Each finding ends with a concrete next step

(fix here / add test for X / open a follow-up ticket / accept and document).

  • Stay actionable. Drop noise — style nits that the formatter would

catch, "consider renaming this variable", restating what the code obviously does. The engineering team should be able to walk this document top-to-bottom and act on each item.

Inputs

  1. Target (required) — where to write the analysis. One of:
  • A full path (absolute or repo-relative) to a .md file. Used

verbatim. Example: scratch/0423-02/analysis.md, C:\path\to\repo\scratch\0501-04\analysis.md.

  • A slot number (one or more digits, e.g. 2, 02, 14).

Expands to scratch/<MMDD>-<##>/analysis.md, where:

  • <MMDD> is today's local date (zero-padded month + day).
  • <##> is the slot number, always zero-padded to two digits.
  • When given a number, confirm the resolved path back to the user

in your first response.

  • The parent directory is created if missing. The analysis file is

overwritten if it already exists, after showing the user a short notice that you're replacing the prior analysis.

  1. Scope (optional) — what to review. If the user names a scope,

honor it verbatim. Accepted forms:

  • working-tree — staged + unstaged changes vs HEAD.
  • last-commit — HEAD~1..HEAD.
  • since-push — local commits ahead of the upstream branch

(@{u}..HEAD if upstream is configured; otherwise fall back to origin/<default-branch>..HEAD).

  • full — the entire repo (use only when explicitly requested;

reviews are time-boxed and partitioned in this case).

  • A commit range (<sha>..<sha>), a single SHA, a

branch name, or a list of file paths. Used verbatim.

  • `plan-slot` — the commits produced by the sibling

plan.md in the same slot directory (see Scope Resolution below).

  1. Optional focus — free-form text. Examples: "focus on the

ingestion path", "I'm worried about the new transaction handling", "skip the test files". Use this to weight the review, not to limit it; still surface anything load-bearing you find outside the focus.

  1. `max_subagents` (optional, default `3`) — maximum number of

sub-agents to run in parallel at any given time. 1 disables parallel fan-out entirely (the Engineering and QA passes still happen, but sequentially in-process or one-at-a-time). Hard upper bound: 8. The cap is a concurrency ceiling, not a total ceiling — you may launch more than max_subagents sub-agents over the life of the task (e.g., when partitioning a large full scope) as long as no more than max_subagents are running at the same time.

Scope Resolution (when Scope is not supplied)

This is the order of operations:

  1. Detect a sibling `plan.md`. If the resolved analysis path is

scratch/<MMDD>-<##>/analysis.md and a plan.md exists in the same directory, attempt `plan-slot` scope:

  • Read plan.md's ## Progress Log and collect the SHA from every

COMMIT entry. Ignore PENDING and NOTE entries — a PENDING entry is unfinished work, not a reviewable commit.

  • The review scope is exactly that set of commits. Do not

collapse it into an oldest-parent..newest range unless you have verified the commits are contiguous (each one's parent is the previous), because an unverified range silently pulls in unrelated intervening commits. Otherwise inspect each SHA individually with git show <sha> and union the results.

  • Echo the resolved commit list and file set to the user.
  • If the plan exists but no COMMIT entries are recorded yet (e.g.

the plan is Draft or Ready-to-execute), fall through to step 2.

  1. No plan, or plan with no commits: stop and ask the user to

choose. Offer these options exactly:

  • full — review all code in the repo.
  • since-push — local commits not yet on the upstream branch.
  • last-commit — just HEAD.
  • working-tree — uncommitted changes only.

Do not guess. Wait for the user's choice before starting either review pass.

Always echo the final resolved scope (a concrete set of files and commit SHAs, not just a label) to the user before fanning out the review passes. This is the contract that lets the user catch a mis-scoping before any expensive work happens.

Workflow

  1. Resolve the analysis path. Echo it.
  2. Resolve the review scope as described above. Echo the concrete

file list and (where applicable) commit list. If analysis.md already exists, note that you'll overwrite it.

  1. Pre-flight.
  • Confirm the working tree state with git status so you know

whether working-tree scope would actually contain anything.

  • Read AGENTS.md at the repository root for the canonical build

and test commands, code style, and architectural invariants. If it is absent, fall back to README.md / CONTRIBUTING.md and note in the report which source you used. You will not run these commands, but you will reference them in the QA review, so they must be real. Never invent one.

  • Identify the affected project(s) so the commands you cite are

correctly scoped.

  1. Run the two review passes. Prefer running them in parallel as

sub-agents (one general-purpose or code-review agent per role) so they can't anchor on each other. Each sub-agent:

  • Receives the same resolved scope and focus text.
  • Receives an explicit role brief (Engineering Lead or QA Lead,

with the bullet list from "Roles" above).

  • Returns a structured list of findings with file paths, line

ranges, severity, and a recommendation per finding.

  • Is read-only — explicitly forbidden from editing source or

running mutating commands.

  1. Synthesize. Put on the synthesizer hat. Merge duplicates,

re-rank by severity, drop noise, write the final report using the format below.

  1. Sanity-check a report containing any Blocker, High, or

architecture-level recommendation with a registered review specialist when available. Otherwise use a fresh general-purpose sub-agent explicitly prompted to act as an adversarial/rubber-duck reviewer. Adopt critique findings that prevent miscommunication; set aside findings that bloat the report. Briefly note in your reply what (if anything) changed.

  1. Write `analysis.md`. Overwrite if present.
  2. Report back with: the resolved analysis path, the resolved

scope, finding counts by severity, and the top 3 findings (one line each).

Report Format

markdown
# Code & QA Review: {short title — what was reviewed}
| | |
|-|-|
| Slot | `scratch/<MMDD>-<##>/` (or full path) |
| Issue | [#N](<url>) — or `not published` |
| Scope | {label + concrete description, e.g., `plan-slot` (3 commits, 14 files)} |
| Status | Draft / Ready-for-team |
| Created | {YYYY-MM-DD} |
| Reviewers | Engineering Lead + QA Lead (synthesized) |
## TL;DR
{3–5 sentences. What was reviewed, the overall health verdict
(Ship / Ship-with-fixes / Do-not-ship), and the single most important
thing the team should do next.}
## Scope
-**Commits:** {list of SHAs + subjects, oldest → newest, or "n/a"}
-**Files:** {bulleted list of files reviewed, grouped by project}
-**Excluded:** {anything intentionally not reviewed, with reason}
-**Focus:** {echo of the user's focus text, or "general review"}
## Findings
Findings are **synthesized** from both reviews and ranked by severity.
Each finding is independently actionable.
### Blocker
#### B1. {Short title}

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

Security

  • Security scanPassed, 95 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
154
Repository forks
57
7-day trend score
25

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/fhir/fhir-codegen/dev-review/badge)](https://verified-skill.com/skills/fhir/fhir-codegen/dev-review)

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