mcpField
C
code-review-russ-cox

code-review-russ-cox

github.com/wilbeibiテスト・品質243 回インストール3 日前に更新
リポジトリ

code-review-russ-cox について

code-review-russ-cox は、変更案や既存パッケージをレビューするスキルです。保守コスト、設計境界、依存関係、エラー処理、テスト、ドキュメントを評価し、監査ではリファクタリング計画も示します。

主な機能

  1. 014段階で変更をレビュー
  2. 026つの観点でパッケージを監査
  3. 03レイヤー構成と依存コストを確認
  4. 04エラー、テスト、可観測性を評価
  5. 05削除を重視したリファクタリング計画を作成

活用シーン

  1. 01プルリクエストや依存追加案のレビュー
  2. 02既存パッケージの監査
  3. 03段階的なパッケージ改修の計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/wilbeibi/wilbeibi-skills --skill code-review-russ-cox

インストール後、Claude Code で/code-review-russ-coxを入力して読み込まれたか確認します。

同梱ファイルREFERENCE.md

詳細

code-review-russ-cox

コードを長期的な保守コストで評価します。コードが存在すべきか、適切なレイヤーに置かれているか、境界、エラー、テスト、ドキュメントが Go チームの基準を満たすかを判断します。入力に応じて、2 つのモードを使い分けます。

  • 変更レビュー — 入力が差分、PR、提案された機能、新しい依存関係の場合:4 つの観点から順に確認します。
  • パッケージ監査 — 入力が既存のコード(「監査」「磨き込み」「リファクタリング」「このパッケージの問題点」など)の場合:対象をドキュメントコメント、テスト、インポートも含めてすべて読み、呼び出し元も一部確認してから、6 つの観点を検討します。最後に、何を削除するかを基準に評価したリファクタリング計画を提示します。

どちらのモードでも、まずコードが解決する問題を 1 文で述べます。できなければ、質問してください。確立されたコードベースでは、新しいものを評価する前に既存のプリミティブを探します。最もよくある発見は、すでに同じ機能を果たすヘルパー、インターフェース、パッケージが存在することです。

変更レビュー — 4 つの観点

  1. 機能の膨張 — 既存の要素を組み合わせても解決できない、現実的な問題を解決しますか? 5 年間の保守コストに見合うユーザー価値がありますか?
  2. レイヤーの誤り — 挙動を担うレイヤーを修正せず、症状に対処していませんか?
  3. 依存関係の肥大化 — その依存関係が実際に何をするのか、どのような推移的コストが加わるのか、20〜50 行で置き換えられないかを確認します。目安:難しい部分はインポートし、核心部分は自分たちで実装し、小さなものはコピーします。
  4. 品質負債 — 新しいメンテナーが 6 か月後にも理解できますか? 負債を残す場合、具体的な解消のきっかけが設定されていますか?

パッケージ監査 — 6 つの観点

これらは原則であり、適合性チェックリストではありません。それぞれをコードベース固有の言葉、エコシステム、規模に合わせて解釈し、該当しない観点は黙って省略します(CLI スクリプトには監査する境界がなく、ステートレスなライブラリには長時間実行されるループがありません)。別のプロジェクトの流儀を要求する指摘は決して書かず、原則と、それをこのコードベースに適用した形を示します。

  1. 境界 — ストレージ、ネットワーク、LLM、時計、実行など、各外部境界において、コードは最小限のインターフェースを所有し、重い依存関係を末端のパッケージに隔離していますか? 外部の型が内部の境界を越えていませんか? 各インターフェースの隣に偽物の実装があり、ドキュメントで紹介されていますか?
  2. 合成による効果 — 下位の抽象化を踏まえて、各単位はほぼ自明なものになっていますか? パッケージが肥大化しているなら、その下位の抽象化に問題があります。明示的な状態、イテレーターのスタック、キュー、ステートマシンが、主に実行を再開する位置を記録するためのものなら、直接的な制御フローによって単位を単純にできないか検討します。設定はオブジェクトのメソッドやフィールドにし、必須の依存関係はコンストラクターの位置引数にします。呼び出し元が 1 つしかない場合、関数オプションや設定構造体の定型コードは使いません。
  3. エラーの扱い — 誰の問題かによって分けます。プログラマーのミスや壊れた不変条件には、文書化された方針に従い、速やかに失敗するよう panic や assert を使います。想定される環境起因の失敗には、コンテキスト付きの回復可能なエラーを使います。長時間実行されるループでは、1 件の不良データによって処理全体が止まらないよう、ログを記録して続行します。エラー経路はテストされていますか?
  4. 可観測性 — ロガーは依存関係として注入し、グローバルにはしません。構造化されたキーと値の属性を使います。メッセージ文字列は安定した小文字の識別子とし、可変データは補間せず属性に格納します。テストのログはテストハーネスを経由させ、失敗時にのみ表示されるようにします。
  5. テスト — すべてのインターフェースに偽物の実装を用意します。テストは決定的にし、タイミングや競合状態に依存させません。ネットワーク呼び出しには記録・再生を使います。フィクスチャは人が編集できる形式にします。複数の実装があるインターフェースには適合性テストスイートを用意します。カバレッジの不足は放置せず、コメントで理由を説明します。
  6. ドキュメントとスタイル — すべてのパッケージに実質的なパッケージドキュメントを用意します。メインパッケージのドキュメントは、常に最新のアーキテクチャ案内にします。ドキュメントコメントでは、仕組みではなく契約、エッジケース、コストの特性を説明します。コストの高い API は高コストに見え、安価な API は安価に見えるようにします。インラインコメントは「なぜ」だけを書きます。TODO には検討したトレードオフを添えます。本質的な設計上の疑問は、曖昧にせず記録します。

普遍的なテスト

  • シンプルさ: 賢い新人にも2分で説明できます。
  • 削除: 削除しても重要なことが何も変わらないなら、削除します。
  • 組み合わせ: 既存のプリミティブを無理なく組み合わせられるなら、それを使います。
  • 未来の自分: 障害対応中にも理解できます。
  • 抽象化: 3つの実際のユースケースが現れるまで、一般化を待ちます。

出力の契約

  • 指摘を先に示します:Must fix、Consider、Open questions。空のセクションは省略します。求められない限り、称賛は含めません。
  • 変更レビューの指摘には [Pass N | file:line]、監査の指摘には [Dim N | file:line] を付けます。
  • 各指摘では、存在すべきでないもの、別のレイヤーに移すべきもの、または簡素化すべきものを示し、具体的な代替案を1つ挙げます。形をスケッチし、単に指摘するだけにしないでください。
  • 監査モードの最後には Refactor plan を記載します。効果の大きい順に手順を並べ、それぞれで削除または簡素化できるものを明記します。各手順は単独でリリースでき、1つのPRとしてレビュー可能で、各段階でテストがすべて成功する必要があります。動作を変更する手順にはその旨を示します。
  • 最後に簡潔な Summary を記載します。

各評価軸の背後にある理念、危険信号の一覧、表現パターン、oscar-repo の実例については、REFERENCE.md を参照してください。

コメント