elixir-code-review skill
✓ VerifiedReviews Elixir code for idiomatic patterns, OTP principles, pattern matching, and documentation standards.
- GitHub stars
- 87
- Files
- 5
- Last commit
- Sep 15, 2026
- License
- Apache-2.0
- Allowed tools
- —
What does the elixir-code-review skill do?
elixir-code-review reviews Elixir code for idiomatic patterns, OTP principles, pattern matching, and documentation standards.
Summary generated from the skill's SKILL.md.
About the elixir-code-review skill
Reviewing Elixir source files for idiomatic patterns and OTP principles is the primary function of this skill. Developers can use it to audit .ex and .exs files to ensure they follow established standards for module structure, pattern matching, and documentation. An agent should load this skill when tasked with checking GenServer implementations, supervisor restart strategies, or verifying that public functions include appropriate @doc and @spec attributes.
The tool evaluates code against specific reference files including code-style.md, pattern-matching.md, otp-basics.md, and documentation.md. It identifies security risks such as the improper use of String.to_atom/1 on user input or unsafe binary conversions. Every finding must be anchored with a specific path:line locator or module function arity to ensure accuracy. The process requires following a verification protocol to validate findings before they are reported to the user.
What an agent can do with it
- 1Audit OTP implementationCheck if GenServers are correctly using handle_continue for expensive initialization tasks.
- 2Verify documentation standardsEnsure all exported functions have the required @doc and @spec attributes.
- 3Identify security vulnerabilitiesScan code for dangerous functions like String.to_atom/1 being used on untrusted input.
- 4Enforce pattern matching best practicesReview code to ensure destructuring is used in function heads rather than the function body.
Written from the skill's SKILL.md. Every use case is checked against a quote from it.
How to install the elixir-code-review skill
Each command copies the skill folder into the client's skills directory. Restart the client or start a new session to load it.Install the elixir-code-review skill in Plugin
/plugin marketplace add existential-birds/beagle /plugin install beagle-elixir@existential-birds
Install the elixir-code-review skill in Claude Code
~/.claude/skills/elixir-code-review/SKILL.md
$ npx degit existential-birds/beagle/plugins/beagle-elixir/skills/elixir-code-review ~/.claude/skills/elixir-code-reviewInstall the elixir-code-review skill in Claude Code (project)
.claude/skills/elixir-code-review/SKILL.md
$ npx degit existential-birds/beagle/plugins/beagle-elixir/skills/elixir-code-review .claude/skills/elixir-code-reviewInstall the elixir-code-review skill in Codex
~/.agents/skills/elixir-code-review/SKILL.md
$ npx degit existential-birds/beagle/plugins/beagle-elixir/skills/elixir-code-review ~/.agents/skills/elixir-code-reviewInstall the elixir-code-review skill in Gemini CLI
~/.gemini/skills/elixir-code-review/SKILL.md
$ npx degit existential-birds/beagle/plugins/beagle-elixir/skills/elixir-code-review ~/.gemini/skills/elixir-code-reviewInstall the elixir-code-review skill in Claude.ai
npx degit existential-birds/beagle/plugins/beagle-elixir/skills/elixir-code-review elixir-code-review && zip -r elixir-code-review.zip elixir-code-review # claude.ai → Customize → Skills → + → Create skill → Upload a skill → elixir-code-review.zip
Automated checks
Ran Nov 15, 2026Full report →Passed our automated checks. That is not a security audit: read the scripts before you let an agent run them. How checks work
- Source repository linked and reachableexistential-birds/beagle/plugins/beagle-elixir/skills/elixir-code-review is public and reachablegithub.com/existential-birds/beagle/tree/HEAD/plugins/beagle ↗Pass
- Open source license (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗Pass
- Commit or release in the last yearLast commit 2026-09-15github.com/existential-birds/beagle/commits ↗Pass
- No download-and-run or credential theft in scriptsNo scripts in the skill folderPass
- No hidden instructions in SKILL.mdNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/existential-birds/beagle/blob/HEAD/plugins/beagle ↗Pass
- Pre-approved tools are scopedNo pre-approved tools; the agent asks before using onegithub.com/existential-birds/beagle/blob/HEAD/plugins/beagle ↗Pass
- SKILL.md follows the Agent Skills formatValid name and description; says when to use it; 82 linesgithub.com/existential-birds/beagle/blob/HEAD/plugins/beagle ↗Pass
SKILL.md
View on GitHubElixir Code Review
Quick Reference
| Issue Type | Reference |
|---|---|
| Naming, formatting, module structure | references/code-style.md |
| With clauses, guards, destructuring | references/pattern-matching.md |
| GenServer, Supervisor, Application | references/otp-basics.md |
| @moduledoc, @doc, @spec, doctests | references/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/1on user input (useto_existing_atom/1) - No
Code.eval_string/1on untrusted input - No
:erlang.binary_to_term/1without:safeoption
Valid Patterns (Do NOT Flag)
- Empty function clause for pattern match -
def foo(nil), do: nilis valid guard - Using
|>with single transformation - Readability choice, not wrong @doc falseon 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
| Issue | Flag ONLY IF |
|---|---|
| Missing @spec | Function is public AND exported |
| Generic rescue | Specific exception types available |
| Nested case/cond | More 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.
- 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).
- Anchored evidence — Pass: Each finding includes a concrete locator:
path:line(or line range), orModule.function/arityplus a short quoted snippet from the file. - 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.
Files in this skill
5elixir-code-review skill questions
How do I install the elixir-code-review skill in Claude Code?
Run npx degit existential-birds/beagle/plugins/beagle-elixir/skills/elixir-code-review ~/.claude/skills/elixir-code-review. Claude Code loads skills from ~/.claude/skills (all projects) or .claude/skills (one project) and uses a skill when its description matches the task.
Which clients can use the elixir-code-review skill?
Any client that reads the Agent Skills format: Claude Code, Codex, Gemini CLI and claude.ai (upload as a ZIP). Scripts in the skill run only where the client allows code execution.
Are private functions required to have @spec documentation?
No, @spec is considered optional for internal private functions.