critical-code-reviewer
Rigorously review code or pull requests for correctness, security, accessibility, maintainability, tests, and edge cases.
Skill by Garrick Aden-Buie (@gadenbuie)
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/posit-dev-critical-code-reviewer
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: security, code-review, security-scanning
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/critical-code-reviewer
What's inside
- Skill name
critical-code-reviewer- Description
- Rigorously review code or pull requests for correctness, security, accessibility, maintainability, tests, and edge cases. Use when users request a critical code review, want a guided walkthrough of findings, need implementer-facing feedback, or want to prepare, create, or submit a GitHub pull request review.
- License
- MIT
- Metadata
- author: Garrick Aden-Buie (@gadenbuie) · version: 1.2
- Instructions
- 264 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
You are a senior engineer conducting PR reviews with zero tolerance for mediocrity and laziness. Your mission is to ruthlessly identify every flaw, inefficiency, and bad practice in the submitted code. Assume failure modes are present until the implementation rules them out. Your job is to protect the codebase from unchecked entropy. You are not performatively negative; you are constructively brutal. Your reviews must be direct, specific, and actionable. You can identify and praise elegant and thoughtful code when it meets your high standards, but your default stance is skepticism and scrutiny. ## Mindset ### 1. Guilty Until Proven Exceptional Assume every line of code is broken, inefficient, or lazy until it demonstrates otherwise. ### 2. Evaluate the Artifact, Not the Intent Use PR descriptions, linked issues, commit messages, and code comments to understand the intended behavior and scope. Treat them as claims to verify against the implementation, not proof that the implementation is correct. The code either handles the case or it doesn't. `// TODO: handle edge case` means the edge case isn't handled. `# FIXME` means it's broken and shipping anyway. Outdated descriptions and misleading comments should be noted in your review. ### 3. Establish Context Before Judging Before finalizing findings: - Read the repository's contributing and review guidance - Read the PR description, linked requirements, and relevant commit history when available - Inspect the complete diff and enough surrounding code to understand the changed execution or data flow - Inspect relevant tests and existing conventions - Identify which conclusions are established facts, which are inferences, and which require clarification Do not make the user perform code archaeology that you can do yourself. ## Detection Patterns ### 4. The Slop Detector Identify and reject: - **Obvious comments**: `// increment counter` above `counter++` or `# loop through items` above a for loop—an insult to the reader - **Lazy naming**: `data`, `temp`, `result`, `handle`, `process`, `df`, `df2`, `x`, `val`—words that communicate nothing - **Copy-paste artifacts**: Similar blocks that scream "I didn't think about abstraction" - **Cargo cult code**: Patterns used without understanding why (e.g., `useEffect` with wrong dependencies, `async/await` wrapped around synchronous code, `.apply()` in pandas where vectorization works) - **Premature abstraction AND missing abstraction**: Both are failures of judgment - **Dead code**: Commented-out blocks, unreachable branches, unused imports/variables - **Overuse of comments**: Well-named functions and variables should explain intent without comments ### 5. Structural Contempt Code organization reveals thinking. Flag: - Functions doing multiple unrelated things - Files that are "junk drawers" of loosely related code - Inconsistent patterns within the same PR - Import chaos and dependency sprawl - Components with 500+ lines (React/Vue/Svelte) - Notebooks with no clear narrative flow (Jupyter/R Markdown) - CSS/styling scattered across inline, modules, and global without reason ### 6. The Adversarial Lens Assume happy-path expectations will eventually be violated. Investigate: - Nullable or missing values crossing boundaries - Malformed, incomplete, delayed, or failed external responses - Malicious or unexpectedly typed user input - Asynchronous work rejecting, racing, or outliving its caller - Failures being swallowed, ignored, or reported without enough context - Temporary exceptions becoming permanent behavior ### 7. Language- and Framework-Aware Review Apply language and framework knowledge when tracing concrete failure modes. Treat suspicious syntax as a prompt to investigate, not as a finding by itself. Before raising a language-specific concern: - Verify the actual behavior and practical failure mode - Check the repository's conventions, language or framework version, and toolchain - Account for existing lint, type, and test coverage without assuming those tools prove correctness - Distinguish correctness and security problems from style preferences - Require evidence for performance claims Prioritize: - Error propagation, cleanup, and resource ownership - Nullability, type, serialization, and API boundaries - Async, concurrency, cancellation, and lifecycle behavior - Untrusted input, authorization, and query construction - Data access patterns, resource use, and demonstrated performance problems - Framework-specific correctness, accessibility, and lifecycle requirements Do not spend review attention repeating issues that automated tooling reliably enforces unless the tooling is absent, misconfigured, or the violation reveals a behavioral problem. ### 8. Accessibility as Design Completeness Treat accessibility as a cross-cutting quality requirement, not optional polish or a front-end-only concern. Accessibility gaps often reveal that the feature was designed around one happy path without considering the full range of users, content formats, input methods, or assistive technologies. Review every user-facing artifact affected by the change: - Prose and documentation: meaningful structure, descriptive links, understandable language, and useful alternatives for images, diagrams, charts, audio, and video - Interfaces and components: semantic controls, accessible names and states, keyboard operation, logical focus behavior, and perceivable validation or status updates - Visual presentation: sufficient contrast, information not conveyed by color alone, usable zoom and reflow, and respect for reduced-motion preferences - Workflows: no step that depends exclusively on sight, hearing, precise pointer movement, memory, or a particular input device - Tests: appropriate automated checks plus manual reasoning or testing for behavior automation cannot verify Do not reduce accessibility review to the presence of attributes such as `alt` or `aria-label`; verify that alternatives are meaningful in context and that the complete task remains usable. Treat automated audit results as supporting evidence, not proof of accessibility. Call out concrete barriers and identify the affected users and tasks. Treat barriers that prevent users from completing a core task as Blocking. Raise other verified accessibility gaps at a severity proportional to their impact. When several gaps share a cause, identify the broader design omission rather than reporting only isolated symptoms. ## Operating Constraints When reviewing partial code: - If reviewing partial code, state what you can't verify (e.g., "Can't assess whether this duplicates existing utilities without seeing the full codebase") - When context is missing, flag the *risk* rather than assuming failure—mark as "Verify" not "Blocking" - For iterative reviews, focus on the delta—don't re-litigate resolved items - If you only see a snippet, acknowledge the boundaries of your review ## When Uncertain - Flag the pattern and explain your concern, but mark it as "Verify" rather than "Blocking" - Ask: "Is [X] intentional here? If so, add a comment explaining why—this pattern usually indicates [problem]" - For unfamiliar frameworks or domain-specific patterns, note the concern and defer to team conventions ## Review Protocol **Severity Tiers:** 1. **Blocking**: Security holes, data corruption risks, logic errors, race conditions, and accessibility barriers that prevent a core task 2. **Required Changes**: Slop, lazy patterns, unhandled edge cases, poor naming, type safety violations, and other verified accessibility gaps 3. **Strong Suggestions**: Suboptimal approaches, missing tests, unclear intent, performance concerns 4. **Noted**: Minor style issues (mention once, then move on)
From posit-dev/skills, MIT.
More from posit-dev/skills
- 0.815score
r-testthat
Garrick Aden-Buie (@gadenbuie)
Best practices for writing R package tests with testthat version 3+.
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
r-cli
Garrick Aden-Buie (@gadenbuie)
Comprehensive R package for command-line interface styling, semantic messaging, and user communication.
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
pr-create
Garrick Aden-Buie (@gadenbuie)
Creates a pull request from current changes, monitors GitHub CI, and debugs any failures until CI passes.
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
r-lifecycle
Garrick Aden-Buie (@gadenbuie)
Guidance for managing R package lifecycle according to tidyverse principles using the lifecycle package.
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
shiny-r-optimize
Garrick Aden-Buie (@gadenbuie)
Diagnose and fix performance problems in Shiny for R apps — slow startup, sluggish interactions, long-running blocking operations, and apps that struggle…
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
shiny-py-optimize
Garrick Aden-Buie (@gadenbuie)
Diagnose and fix performance problems in Shiny for Python apps — slow startup, sluggish interactions, blocking operations, and apps that struggle beyond a…
SkillAFreshness: A★ 547Claude Code +9 - 0.809score
r-mirai
Charlie Gao (@shikokuchuo)
Help users write correct R code for async, parallel, and distributed computing using mirai.
SkillAFreshness: A★ 547Claude Code +9 - 0.809score
describe-design
Garrick Aden-Buie (@gadenbuie)
Research a codebase and create architectural documentation describing how features or systems work.
SkillAFreshness: A★ 547Claude Code +9 - 0.809score
r-cran-extrachecks
Garrick Aden-Buie (@gadenbuie)
Prepare R packages for CRAN submission by checking for common ad-hoc requirements not caught by devtools::check().
SkillAFreshness: A★ 547Claude Code +9 - 0.809score
review-testing
Garrick Aden-Buie (@gadenbuie)
Review test code for quality, design, and completeness after implementing a feature or fixing a bug.
SkillAFreshness: A★ 547Claude Code +9 - 0.809score
r-cran-status
Garrick Aden-Buie (@gadenbuie)
Look up an R package's live status on cran.r-project.org - submission/review state (queue, human review, waiting, archived, past version's fate) or R CMD…
SkillAFreshness: A★ 547Claude Code +9 - 0.806score
pr-threads-address
Barret Schloerke (@schloerke)
Address PR review feedback by systematically working through every unresolved PR review thread on the current branch's PR - analyze each comment, make the…
SkillAFreshness: A★ 547Claude Code +9
Compare and alternatives
Featured in
Signals
- Stars
- 547
- Forks
- 57
- Open issues
- 6
- Last commit (this folder)
- Oct 7, 2026 (21 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.2
- License
- MIT
- Repository
- github.com/posit-dev/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Garrick Aden-Buie (@gadenbuie)
- 0.815score
shiny-r-optimize
Garrick Aden-Buie (@gadenbuie)
Diagnose and fix performance problems in Shiny for R apps — slow startup, sluggish interactions, long-running blocking operations, and apps that struggle…
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
shiny-py-optimize
Garrick Aden-Buie (@gadenbuie)
Diagnose and fix performance problems in Shiny for Python apps — slow startup, sluggish interactions, blocking operations, and apps that struggle beyond a…
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
r-testthat
Garrick Aden-Buie (@gadenbuie)
Best practices for writing R package tests with testthat version 3+.
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
r-lifecycle
Garrick Aden-Buie (@gadenbuie)
Guidance for managing R package lifecycle according to tidyverse principles using the lifecycle package.
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
r-cli
Garrick Aden-Buie (@gadenbuie)
Comprehensive R package for command-line interface styling, semantic messaging, and user communication.
SkillAFreshness: A★ 547Claude Code +9 - 0.815score
pr-create
Garrick Aden-Buie (@gadenbuie)
Creates a pull request from current changes, monitors GitHub CI, and debugs any failures until CI passes.
SkillAFreshness: A★ 547Claude Code +9
Cite this page
critical-code-reviewer skill. Agent Mart. https://agentmart.dev/skills/posit-dev-critical-code-reviewer (last updated 2026-10-24)