mcpField
E
elixir-code-review

elixir-code-review

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

About elixir-code-review

elixir-code-review is a skill for reviewing Elixir code, covering style, pattern matching, OTP, documentation, and security. Its context-sensitive rules and evidence gates help distinguish actionable findings from valid patterns that should not be flagged.

Key features

  1. 01Checks for Elixir naming and code style
  2. 02Pattern matching and error-handling checks
  3. 03GenServer and Supervisor review checklist
  4. 04Documentation and security checks
  5. 05Context-sensitive rules and evidence gates

Use cases

  1. 01Reviewing Elixir module and function structure
  2. 02Checking with clauses and pattern matching
  3. 03Assessing GenServer and Supervisor code
  4. 04Verifying documentation and security practices

Install

Copy the command and run it in a terminal.

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

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

Bundled files

References and scripts installed along with SKILL.md.

references/
code-style.md
documentation.md
otp-basics.md
pattern-matching.md

Details

From the project README

Elixir Code Review

Quick Reference

Issue TypeReference
Naming, formatting, module structurereferences/code-style.md
With clauses, guards, destructuringreferences/pattern-matching.md
GenServer, Supervisor, Applicationreferences/otp-basics.md
@moduledoc, @doc, @spec, doctestsreferences/documentation.md

Review Checklist

Code Style
  • Module names are CamelCase, function names are snake_case
  • Pipe chains start with raw data, not function calls
  • Private functions grouped after public functions
  • No unnecessary parentheses in function calls without arguments
Pattern Matching
  • Functions use pattern matching over conditionals where appropriate
  • With clauses have else handling for error cases
  • Guards used instead of runtime checks where possible
  • Destructuring used in function heads, not body
OTP Basics
  • GenServers use handle_continue for expensive init work
  • Supervisors use appropriate restart strategies
  • No blocking calls in GenServer callbacks
  • Proper use of call vs cast (sync vs async)
Documentation
  • All public functions have @doc and @spec
  • Modules have @moduledoc describing purpose
  • Doctests for pure functions where appropriate
  • No @doc false on genuinely public functions
Security
  • No String.to_atom/1 on user input (use to_existing_atom/1)
  • No Code.eval_string/1 on untrusted input
  • No :erlang.binary_to_term/1 without :safe option

Valid Patterns (Do NOT Flag)

  • Empty function clause for pattern match - def foo(nil), do: nil is valid guard
  • Using |> with single transformation - Readability choice, not wrong
  • @doc false on callback implementations - Callbacks documented at behaviour level
  • Private functions without @spec - @spec optional for internals
  • Using Kernel.apply/3 - Valid for dynamic dispatch with known module/function

Context-Sensitive Rules

IssueFlag ONLY IF
Missing @specFunction is public AND exported
Generic rescueSpecific exception types available
Nested case/condMore than 2 levels deep

When to Load References

  • Reviewing module/function naming → code-style.md
  • Reviewing with/case/cond statements → pattern-matching.md
  • Reviewing GenServer/Supervisor code → otp-basics.md
  • Reviewing @doc/@moduledoc → documentation.md

Gates — before reporting

Do these in order for the review batch. Do not publish findings until each step passes.

  1. Protocol loaded — Read review-verification-protocol and apply its checks for each finding category you use (unused, validation, security, performance, etc.). Pass: For every substantive finding, you can name which protocol subsection you satisfied or state N/A with reason (pure style).
  2. Anchored evidence — Pass: Each finding includes a concrete locator: path:line (or line range), or Module.function/arity plus a short quoted snippet from the file.
  3. Claims backed by artifacts — For assertions like unused code, missing validation, or security risk, Pass: You attach the supporting artifact (e.g. search results, file read scope) or downgrade the item to an explicit question / uncertain with what you did not verify.

Before Submitting Findings

Complete Gates — before reporting (section above) first; the verification protocol is mandatory input to those gates.

Comments

Markdown supported