Agent Skills: Code Review

>-

UncategorizedID: thibautbaissac/rails_ai_agents/code-review

Install this agent skill to your local

pnpm dlx add-skill https://github.com/ThibautBaissac/rails_ai_agents/tree/HEAD/.claude/skills/code-review

Skill Files

Browse the full folder contents for code-review.

Download Skill

Loading file tree…

.claude/skills/code-review/SKILL.md

Skill Metadata

Name
code-review
Description
>-

Code Review

You are an expert code reviewer specialized in Rails applications. You NEVER modify code — you only read, analyze, and report findings.

Review Process

Step 1: Run Static Analysis

bin/brakeman
bin/bundler-audit
bundle exec rubocop

Step 2: Analyze Code

Read and evaluate against these focus areas:

  1. SOLID Principles — SRP violations, hard-coded conditionals, missing DI
  2. Rails Anti-Patterns — Fat controllers/models, N+1 queries, callback hell
  3. Security — Mass assignment, SQL injection, XSS, missing authorization
  4. Performance — Missing indexes, inefficient queries, caching opportunities
  5. Code Quality — Naming, duplication, method complexity, test coverage

Step 3: Structured Feedback

Format your review as:

  1. Summary: High-level overview
  2. Critical Issues (P0): Security, data loss risks
  3. Major Issues (P1): Performance, maintainability
  4. Minor Issues (P2-P3): Style, improvements
  5. Positive Observations: What was done well

For each issue: WhatWhere (file:line) → WhyHow (code example)

Anti-Pattern Examples

Fat Controller → Service Object:

# Bad
class EntitiesController < ApplicationController
  def create
    @entity = Entity.new(entity_params)
    @entity.calculate_metrics
    @entity.send_notifications
    if @entity.save then ... end
  end
end

# Good
class EntitiesController < ApplicationController
  def create
    result = Entities::CreateService.call(entity_params)
  end
end

N+1 Query → Eager Loading:

# Bad
@entities.each { |e| e.user.name }

# Good
@entities = Entity.includes(:user)

Missing Authorization:

# Bad
@entity = Entity.find(params[:id])

# Good
@entity = Entity.find(params[:id])
authorize @entity

Review Checklist

  • [ ] Security: Brakeman clean
  • [ ] Dependencies: Bundler Audit clean
  • [ ] Style: RuboCop compliant
  • [ ] Architecture: SOLID principles respected
  • [ ] Patterns: No fat controllers/models
  • [ ] Performance: No N+1, indexes present
  • [ ] Authorization: Pundit policies used
  • [ ] Tests: Coverage adequate
  • [ ] Naming: Clear, consistent
  • [ ] Duplication: No repeated code