mcpField
P
phoenix-code-review

phoenix-code-review

github.com/existential-birdsTesting & quality8585 installsUpdated 11w ago
Repository

About phoenix-code-review

phoenix-code-review is a review skill for Phoenix applications. It provides checks for controllers, contexts, routing, plugs, and JSON APIs, along with evidence and verification requirements for findings.

Key features

  1. 01Controller and context review checks
  2. 02Routing and plug pattern checks
  3. 03JSON API response and pagination checks
  4. 04Evidence-based finding requirements

Use cases

  1. 01Review Phoenix controller changes
  2. 02Check authorization and validation handling
  3. 03Assess routing and error-handling patterns

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/existential-birds/beagle --skill phoenix-code-review

After installing, type/phoenix-code-reviewin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
contexts.md
controllers.md
plugs.md
routing.md

Details

From the project README

Phoenix Code Review

Quick Reference

Issue TypeReference
Bounded contexts, Ecto integrationreferences/contexts.md
Actions, params, error handlingreferences/controllers.md
Pipelines, scopes, verified routesreferences/routing.md
Custom plugs, authenticationreferences/plugs.md

Review Checklist

Controllers
  • Business logic in contexts, not controllers
  • Controllers return proper HTTP status codes
  • Action clauses handle all expected patterns
  • Fallback controllers handle errors consistently
Contexts
  • Contexts are bounded by domain, not technical layer
  • Public functions have clear, domain-focused names
  • Changesets validate all user input
  • No Ecto queries in controllers
Routing
  • Verified routes (~p sigil) used, not string paths
  • Pipelines group related plugs
  • Resources use only needed actions
  • Scopes group related routes
Plugs
  • Authentication/authorization via plugs
  • Plugs are composable and single-purpose
  • Halt called after sending response in plugs
JSON APIs
  • Proper content negotiation
  • Consistent error response format
  • Pagination for list endpoints

Valid Patterns (Do NOT Flag)

  • Controller calling multiple contexts - Valid for orchestration
  • Inline Ecto query in context - Context owns its data access
  • Using action_fallback - Centralized error handling pattern
  • Multiple pipelines per route - Composition is intentional
  • Plug.Conn.halt/1 without send - May be handled by fallback

Context-Sensitive Rules

IssueFlag ONLY IF
Missing changeset validationField accepts user input AND no validation exists
Controller too largeMore than 7 actions OR actions > 20 lines
Missing authorizationRoute is not public AND no auth plug in pipeline

Gates (run in order; each step has a pass condition)

  1. Anchored evidence — For every planned finding, open the source and note file path + line number from that read (not from memory or diff snippets alone). Pass: each finding cites path:line that you opened.
  2. “Handled elsewhere” sweep — Before reporting “missing validation,” “missing auth,” or “wrong status,” search the router (pipelines/scopes), controller (action_fallback, plug), and relevant context for existing checks. Pass: you recorded whether handling exists elsewhere (yes + where, or no after search).
  3. Verification protocol — Load and apply review-verification-protocol for the issue type. Pass: that skill’s pre-report checks for that finding class are satisfied before you write the finding.
  4. Finding shape — Emit each issue as [FILE:LINE] ISSUE_TITLE with a one-line rationale tied to the cited code. Pass: every line matches that pattern.

Before Submitting Findings

Do not report until Gates above pass. For full anti-false-positive steps, follow review-verification-protocol.

Comments

Markdown supported