elixir-code-review について
elixir-code-reviewは、Elixirコードをレビューするスキルで、スタイル、パターンマッチ、OTP、ドキュメント、セキュリティを扱います。状況に応じたルールと根拠確認により、対応が必要な指摘と問題のない記述を区別します。
主な機能
- 01Elixirの命名とコードスタイル確認
- 02パターンマッチとエラー処理の確認
- 03GenServerとSupervisorのレビュー項目
- 04ドキュメントとセキュリティの確認
- 05状況別ルールと根拠確認ゲート
活用シーン
- 01Elixirのモジュールと関数構成のレビュー
- 02with節とパターンマッチの確認
- 03GenServerとSupervisorコードの評価
- 04ドキュメントとセキュリティ実践の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ existential-birds/ beagle --skill elixir-code-reviewインストール後、Claude Code で/elixir-code-reviewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/code-style.mddocumentation.mdotp-basics.mdpattern-matching.md詳細
Elixir コードレビュー
クイックリファレンス
| 問題の種類 | 参照先 |
|---|---|
| 命名、書式、モジュール構成 | references/code-style.md |
| With 節、ガード、分解 | references/pattern-matching.md |
| GenServer、Supervisor、Application | references/otp-basics.md |
| @moduledoc、@doc、@spec、ドクテスト | references/documentation.md |
レビューチェックリスト
コードスタイル
- モジュール名は CamelCase、関数名は snake_case になっている
- パイプチェーンは関数呼び出しではなく、生データから始まっている
- プライベート関数はパブリック関数の後にまとめられている
- 引数のない関数呼び出しに不要な括弧がない
パターンマッチング
- 適切な場合、条件分岐ではなくパターンマッチングを使用している
- With 節でエラーケースを処理している
- 可能な場合、実行時チェックの代わりにガードを使用している
- 分解は関数本体ではなく関数ヘッドで行っている
OTP の基本
- GenServer では、負荷の高い初期化処理に handle_continue を使用している
- Supervisor で適切な再起動戦略を使用している
- GenServer コールバックにブロッキング呼び出しがない
- call と cast を適切に使い分けている(同期と非同期)
ドキュメント
- すべてのパブリック関数に @doc と @spec がある
- モジュールに目的を説明する @moduledoc がある
- 適切な場合、純粋関数にドクテストがある
- 実際にパブリックな関数に @doc false が指定されていない
セキュリティ
- ユーザー入力に対して
String.to_atom/1を使用していない(to_existing_atom/1を使用) - 信頼できない入力に対して
Code.eval_string/1を使用していない -
:safeオプションなしで:erlang.binary_to_term/1を使用していない
有効なパターン(指摘しないこと)
- パターンマッチ用の空の関数節 -
def foo(nil), do: nilは有効なガードです - 単一の変換での
|>の使用 - 可読性の選択であり、誤りではありません - コールバック実装での
@doc false- コールバックは behaviour レベルでドキュメント化されています - @spec のないプライベート関数 - 内部関数では @spec は任意です
Kernel.apply/3の使用 - モジュールと関数が既知の場合の動的ディスパッチとして有効です
コンテキストに応じたルール
| 問題 | 次の場合にのみ指摘 |
|---|---|
| @spec がない | 関数がパブリックで、かつエクスポートされている |
| 汎用的な rescue | 具体的な例外型を使用できる |
| ネストした case/cond | 2 階層を超えている |
参照先を読み込むタイミング
- モジュール名や関数名をレビューする場合 → code-style.md
- with/case/cond 文をレビューする場合 → pattern-matching.md
- GenServer/Supervisor のコードをレビューする場合 → otp-basics.md
- @doc/@moduledoc をレビューする場合 → documentation.md
ゲート — 報告前に実施
レビュー対象の一括処理では、次の手順を順番に実施してください。各ステップを通過するまで、指摘事項を公開しないでください。
- プロトコルの読み込み — review-verification-protocol を読み、使用する各指摘カテゴリ(未使用、検証、セキュリティ、パフォーマンスなど)について、そのチェックを適用してください。合格条件: すべての実質的な指摘について、満たしたプロトコルのサブセクションを示せるか、理由を添えて該当なし(純粋なスタイル)と述べられること。
- 根拠の明示 — 合格条件: 各指摘に、具体的な箇所(
path:lineまたは行範囲)、あるいはModule.function/arityとファイルからの短い引用を含めること。 - 成果物による主張の裏付け — 未使用コード、検証の欠落、セキュリティリスクなどの主張について、合格条件: 裏付けとなる成果物(例:検索結果、ファイルを読み取った範囲)を添付するか、確認できていない内容を明記した明確な質問/不確実な項目に格下げすること。
指摘事項を提出する前に
まず「ゲート — 報告前に実施」(上記のセクション)を完了してください。検証プロトコルは、これらのゲートに必須の入力情報です。
コメント
Markdown 対応