review-clean-code について
review-clean-code は、プログラムの動作を変えずに、Clean Code の 7 つの観点から実装品質を確認するコードレビュースキルです。問題を重大度順に整理し、読みやすいレポートと構造化レポートを出力します。
主な機能
- 017 つのコード品質観点を確認
- 02問題の重大度を評価
- 03重大度順のレポート
- 04既存の動作を維持
- 05範囲別の並列レビューに対応
活用シーン
- 01命名と関数設計のレビュー
- 02重複や過剰設計の検出
- 03プロジェクト規約との一貫性確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ heyvhuang/ ship-faster --skill review-clean-codeインストール後、Claude Code で/review-clean-codeを入力して読み込まれたか確認します。
同梱ファイルdetailed-examples.mdlanguage-patterns.md
詳細
クリーンコードレビュー
「Clean Code」の原則に基づき、影響の大きい7つのレビュー観点に焦点を当てます。
レビューワークフロー
Review Progress:
- [ ] 1. Scan codebase: identify files to review
- [ ] 2. Check each dimension (naming, functions, DRY, YAGNI, magic numbers, clarity, conventions)
- [ ] 3. Rate severity (High/Medium/Low) for each issue
- [ ] 4. Generate report sorted by severity
基本原則:機能を維持する
すべての提案は実装方法のみを対象とし、コードの機能、出力、動作の変更は提案しません。
チェック項目
1. 命名の問題(意味のある名前)
以下を確認します:
data1、temp、result、info、objなど、意味のない名前- 同じ概念に対する命名の不統一(
get/fetch/retrieveが混在)
// ❌
const d = new Date();
const data1 = fetchUser();
// ✅
const currentDate = new Date();
const userProfile = fetchUser();
2. 関数の問題(小さな関数 + SRP)
以下を確認します:
- 100行を超える関数
- 3個を超えるパラメーター
- 複数の処理を行う関数
// ❌ 7 parameters
function processOrder(user, items, address, payment, discount, coupon, notes)
// ✅ Use parameter object
interface OrderParams { user: User; items: Item[]; shipping: Address; payment: Payment }
function processOrder(params: OrderParams)
3. 重複の問題(DRY)
以下を確認します:
- 類似したif-else構造
- 類似したデータ変換/エラーハンドリングのロジック
- コピー&ペーストの痕跡
4. 過剰な設計(YAGNI)
以下を確認します:
- 一度もtrueにならない
if (config.legacyMode)分岐 - 実装が1つだけのインターフェース
- 不要なtry-catchやif-else
// ❌ YAGNI violation: unused compatibility code
if (config.legacyMode) {
// 100 lines of compatibility code
}
5. マジックナンバー(ハードコーディングを避ける)
以下を確認します:
- 説明のない数値
- ハードコーディングされた文字列
// ❌
if (retryCount > 3) // What is 3?
setTimeout(fn, 86400000) // How long is this?
// ✅
const MAX_RETRY_COUNT = 3;
const ONE_DAY_MS = 24 * 60 * 60 * 1000;
6. 構造の明瞭さ(読みやすさを優先)
以下を確認します:
- ネストした三項演算子
- 過度に簡潔な一行コード
- 深い条件分岐のネスト(3階層を超える)
// ❌ Nested ternary
const status = a ? (b ? 'x' : 'y') : (c ? 'z' : 'w');
// ✅ Use switch or if/else
function getStatus(a, b, c) {
if (a) return b ? 'x' : 'y';
return c ? 'z' : 'w';
}
7. プロジェクト規約(一貫性)
以下を確認します:
- インポート順序の混在(外部ライブラリと内部モジュール)
- 関数宣言スタイルの不統一
- 命名規則の混在(camelCaseとsnake_case)
// ❌ Inconsistent style
import { api } from './api'
import axios from 'axios' // External lib should come first
const handle_click = () => { ... } // Mixed naming style
// ✅ Unified style
import axios from 'axios'
import { api } from './api'
function handleClick(): void { ... }
ヒント
プロジェクト規約は、
CLAUDE.md、AGENTS.md、またはプロジェクトで定められたコーディング規約を参照してください。
重大度レベル
| レベル | 基準 |
|---|---|
| 高 | 保守性/可読性に影響するため、すぐに修正する必要があります |
| 中 | 改善の余地があり、修正を推奨します |
| 低 | コードの不吉な臭いであり、最適化は任意です |
出力形式
### [Issue Type]: [Brief Description]
- **Principle**: [Clean Code principle]
- **Location**: `file:line`
- **Severity**: High/Medium/Low
- **Issue**: [Specific description]
- **Suggestion**: [Fix direction]
成果物(パイプラインモード)
- 出力:
clean-code-review.md(人が読めるレポート) - 出力:
clean-code-review.json(集約/重複排除/統計用の構造化された問題一覧)
参考資料
詳細な例:detailed-examples.mdを参照してください
- 各観点(命名、関数、DRY、YAGNI、マジックナンバー)の全事例
言語別パターン:language-patterns.mdを参照してください
- TypeScript/JavaScriptでよくある問題
- Pythonでよくある問題
- Goでよくある問題
マルチエージェント並列実行
並列マルチエージェント実行では、以下の観点で分割します:
- チェック項目別 - 観点ごとにエージェントを1つ(合計7つ)
- モジュール/ディレクトリ別 - モジュールごとにエージェントを1つ
- 言語別 - TypeScript、Python、Goそれぞれにエージェントを1つ
- ファイル種別別 - コンポーネント、フック、ユーティリティ、型定義
例:/review-clean-code --scope=componentsまたは--dimension=naming
集約時には、重複排除と重大度の統一評価が必要です。
コメント
Markdown 対応