awesome-skills/code-review-skill

code-review-skill

Provides comprehensive code review guidance for React 19, Vue 3, Angular 17+, Svelte 5, Rust, TypeScript, Java, Java 8, PHP, Ruby, Rails, Python, Django, FastAPI, Go, C/.NET, Kotlin, Swift, Dart, Flutter, NestJS, C/C++, Zig, CSS/Less/Sass, Qt, and more.

Ver código fuente
Documento original del Skill

Contenido del repositorio de origen con títulos, ejemplos, código, tablas, enlaces e imágenes preservados.

Code Review Skill

Transform code reviews from gatekeeping to knowledge sharing through constructive feedback, systematic analysis, and collaborative improvement.

When to Use This Skill

  • Reviewing pull requests and code changes
  • Establishing code review standards for teams
  • Mentoring junior developers through reviews
  • Conducting architecture reviews
  • Creating review checklists and guidelines
  • Improving team collaboration
  • Reducing code review cycle time
  • Maintaining code quality standards

Core Principles

1. The Review Mindset

Goals of Code Review:

  • Catch bugs and edge cases
  • Ensure code maintainability
  • Share knowledge across team
  • Enforce coding standards
  • Improve design and architecture
  • Build team culture

Not the Goals:

  • Show off knowledge
  • Nitpick formatting (use linters)
  • Block progress unnecessarily
  • Rewrite to your preference

2. Effective Feedback

Good Feedback is:

  • Specific and actionable
  • Educational, not judgmental
  • Focused on the code, not the person
  • Balanced (praise good work too)
  • Prioritized (critical vs nice-to-have)
markdown
❌ Bad: "This is wrong."
✅ Good: "This could cause a race condition when multiple users
         access simultaneously. Consider using a mutex here."

❌ Bad: "Why didn't you use X pattern?"
✅ Good: "Have you considered the Repository pattern? It would
         make this easier to test. Here's an example: [link]"

❌ Bad: "Rename this variable."
✅ Good: "[nit] Consider `userCount` instead of `uc` for
         clarity. Not blocking if you prefer to keep it."

3. Review Scope

What to Review:

  • Logic correctness and edge cases
  • Security vulnerabilities
  • Performance implications
  • Test coverage and quality
  • Error handling
  • Documentation and comments
  • API design and naming
  • Architectural fit

What Not to Review Manually:

  • Code formatting (use Prettier, Black, etc.)
  • Import organization
  • Linting violations
  • Simple typos

Review Process

Phase 1: Context Gathering (2-3 minutes)

Before diving into code, understand:

  1. Read PR description and linked issue
  2. Check PR size (>400 lines? Ask to split)
  3. Review CI/CD status (tests passing?)
  4. Understand the business requirement
  5. Note any relevant architectural decisions
For large diffs, pipe the diff through `scripts/pr-analyzer.py` (git diff main...HEAD | python scripts/pr-analyzer.py) to triage complexity and get a suggested review approach before reading.

Phase 2: High-Level Review (5-10 minutes)

  1. Architecture & Design - Does the solution fit the problem?
  1. Performance Assessment - Are there performance concerns?
  1. File Organization - Are new files in the right places?
  2. Testing Strategy - Are there tests covering edge cases?

Phase 3: Line-by-Line Review (10-20 minutes)

For each file, check:

  • Logic & Correctness - Edge cases, off-by-one, null checks, race conditions
  • Security - Input validation, injection risks, XSS, sensitive data
  • Performance - N+1 queries, unnecessary loops, memory leaks
  • Maintainability - Clear names, single responsibility, comments
  • Reuse - Before accepting new code, search for existing utilities/helpers that could replace it. Check adjacent files and shared modules for similar patterns. See Universal Quality Guide for anti-patterns like parameter sprawl, leaky abstractions, nested conditionals, stringly-typed code, TOCTOU, and no-op updates.

Phase 4: Summary & Decision (2-3 minutes)

  1. Summarize key concerns
  2. Highlight what you liked
  3. Make clear decision:
  • ✅ Approve
  • 💬 Comment (minor suggestions)
  • 🔄 Request Changes (must address)
  1. Offer to pair if complex

Review Techniques

Technique 1: The Checklist Method

Use checklists for consistent reviews. See Security Review Guide for comprehensive security checklist.

Technique 2: The Question Approach

Instead of stating problems, ask questions:

markdown
❌ "This will fail if the list is empty."
✅ "What happens if `items` is an empty array?"

❌ "You need error handling here."
✅ "How should this behave if the API call fails?"

Technique 3: Suggest, Don't Command

Use collaborative language:

markdown
❌ "You must change this to use async/await"
✅ "Suggestion: async/await might make this more readable. What do you think?"

❌ "Extract this into a function"
✅ "This logic appears in 3 places. Would it make sense to extract it?"

Technique 4: Differentiate Severity

Use labels to indicate priority:

  • 🔴 [blocking] - Must fix before merge
  • 🟡 [important] - Should fix, discuss if disagree
  • 🟢 [nit] - Nice to have, not blocking
  • 💡 [suggestion] - Alternative approach to consider
  • 📚 [learning] - Educational comment, no action needed
  • 🎉 [praise] - Good work, keep it up!

Severity levels: 🔴 / 🟡 / 🟢 are the three severity tiers used as the standard across all guides in this skill — 🔴 blocks the merge, 🟡 should be addressed, 🟢 is optional. The remaining markers (💡 / 📚 / 🎉) are non-blocking annotations.

Language-Specific Guides

根据审查的代码语言,查阅对应的详细指南:

Language/FrameworkReference FileKey Topics
ReactReact GuideHooks, useEffect, React 19 Actions, RSC, Suspense, TanStack Query v5
Vue 3Vue GuideComposition API, 响应性系统, Props/Emits, Watchers, Composables
Angular 17+Angular GuideSignals, Standalone, RxJS, Zoneless, 模板优化, 测试, 路由守卫, HttpInterceptor
RustRust Guide所有权/借用, Unsafe 审查, 异步代码, 取消安全性, 错误处理
TypeScriptTypeScript Guide类型安全, async/await, 不可变性, 测试, 模块解析, TS 5.x
PythonPython Guide可变默认参数, 异常处理, 类属性
Django / DRFDjango Guide安全审查, N+1 查询, Serializer 反模式, ViewSet, 异步视图
FastAPIFastAPI GuideDepends, Pydantic v2 validation, async correctness, sessions/N+1, auth vs authorization, test-driven verification
JavaJava GuideJava 17/21 新特性, Spring Boot 3, 虚拟线程, Stream/Optional
Java 8 / LegacyJava 8 GuideJava 8, Spring Boot 2, javax.*, Stream/Optional, java.time, CompletableFuture
PHPPHP GuidePHP 8.x type system, PDO, security review, Composer, PHPUnit/PHPStan
Ruby / RailsRuby GuideRuby semantics, Rails 8, Active Record, Active Job, security, testing
C# / .NETC# GuideC# 12 特性, 异步编程, EF Core 性能, ASP.NET Core, LINQ
GoGo Guide错误处理, goroutine/channel, context, 接口设计
Kotlin / AndroidKotlin Guide协程, Flow, Jetpack Compose, 空安全, 内存泄漏, 架构模式
Swift / SwiftUISwift GuideOptionals, Swift Concurrency, Sendable/actors, SwiftUI property wrappers, value vs reference types, API design
Dart / FlutterDart GuideWidget rebuilds, const constructors, null safety, isolates, async in build, Riverpod/Bloc, platform channels, keys, disposal
NestJSNestJS Guide依赖注入, 分层架构, DTO 验证, Guard/Interceptor, 循环依赖
Svelte / SvelteKitSvelte GuideRunes, Load 函数, Form Actions, Store 迁移, SSR/CSR 边界
CC Guide指针/缓冲区, 内存安全, UB, 安全编码, 可移植性, 测试
C++C++ GuideRAII, 智能指针, C++20/23, constexpr, 测试
ZigZig GuideAllocators, error unions, defer/errdefer, comptime, C interop
CSS/Less/SassCSS Guide变量规范, !important, 性能优化, 响应式, 兼容性
QtQt Guide对象模型, 信号/槽, Model/View, QML, Qt6 迁移, 测试

Cross-Cutting Guides

Language-agnostic patterns applicable to all code reviews:

TopicReference FileKey Topics
Architecture ReviewArchitecture Review GuideSOLID, anti-patterns, coupling/cohesion, dependency direction
Performance ReviewPerformance Review GuideWeb Vitals, N+1, algorithm complexity, memory leaks, caching
Security ReviewSecurity Review GuideSQLi, XSS, CSRF, SSRF, IDOR, 命令注入, 跨语言示例
Universal QualityUniversal Quality GuideReuse audit, parameter sprawl, leaky abstractions, nested conditionals, stringly-typed code, TOCTOU, no-op updates, redundant state
Common BugsCommon Bugs ChecklistLanguage-specific bug patterns, common pitfalls
SQL Injection PreventionSQL Injection GuideParameterized queries, ORM safety, 6 languages, dynamic identifiers, detection
XSS PreventionXSS Prevention GuideOutput encoding, CSP, 5 frameworks, input validation vs encoding, detection
N+1 QueriesN+1 Queries GuideEager loading, batch fetching, DataLoader, 5 languages, detection
Error HandlingError Handling GuideFail fast, error hierarchy, 7 languages, anti-patterns, logging
Async & ConcurrencyConcurrency GuideGoroutines, async/await, actors, structured concurrency, 7 languages
Review Best PracticesCode Review Best PracticesCommunication, reviewer mindset, giving feedback, severity labels

Additional Resources