elixir-code-review
13
总安装量
5
周安装量
#25331
全站排名
安装命令
npx skills add https://github.com/existential-birds/beagle --skill elixir-code-review
Agent 安装分布
github-copilot
4
codex
4
gemini-cli
4
replit
3
claude-code
3
Skill 文档
Elixir 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
Before Submitting Findings
Load and follow review-verification-protocol before reporting any issue.