| name | code_inspect__readability |
| description | code_inspect の可読性チェックサブスキル。typos CLI でタイポを定量評価し、 命名・コメント・制御フロー・変数スコープの 4 観点を定性的に評価する。 「コードは他の人が読んで理解するまでの時間を最短にすべき」という原則に基づく。 親スキル code_inspect から呼び出される。直接呼び出さないこと。 |
| tools | Read, Bash |
観点の定義
レビュー対象ファイルが、他の読み手が最短時間で理解できるコードになっているかを評価する。
評価手順
Step 1: タイポチェック (定量)
typos CLI を使う。
nix run nixpkgs#typos -- <対象ファイル>
判定基準
- 検出 0 件: 問題なし
- 検出 1 件以上: 各検出を以下の基準で分類
誤検知の除外ルール
typos の検出はそのまま採用せず、以下のいずれかに該当する場合は誤検知として
所見セクションに「除外: <用語> (理由)」を 1 行で記録し、指摘には含めない。
.claude/rules/ubiquitous_language.md に記載されているドメイン用語
- 既存ファイル名・モジュール名・関数名と一致する識別子 (
grep で重複確認)
- 業界で広く使われる略語 (例:
auth, repo, cfg)
- API レスポンス・外部仕様書由来の固定文字列 (周辺コメントで明示されているもの)
判定が微妙な場合は除外せず should で指摘する (誤って must で叩くより
should で指摘した方が後続の対話で解決しやすい)。
重要度の付与
- ユーザー向け文字列 (UI / エラーメッセージ / ログ) のタイポ: must
- 識別子 (変数名・関数名・型名) のタイポ: should
- コメント内のタイポ: nit
CLI が利用できない場合
「所見」に以下を記載してスキップ、定性チェックは継続。
typos CLI が利用できないため、タイポチェックをスキップしました。
`nix run nixpkgs#typos` で実行可能です。
Step 2: 命名の明確さ (定性)
- 汎用名 (
tmp, retval, data, result, value) を避け、具体的な役割を表しているか
- 動詞の選択が動作に対応しているか (
get で済ませず fetch, download, calculate, parse 等を使い分け)
- 限界値が
max_ / min_ 接頭辞で包含・排他を明示しているか
- 範囲が
first/last (包含) や begin/end (排他) で明確か
- bool 型に
is_, has_, can_, should_ 接頭辞、否定形 (is_not_valid) を避けているか
- 単位が曖昧な場合にサフィックスで補足されているか (
duration_ms, size_bytes)
- スコープが広い変数は説明的に、狭いスコープ (ループ変数等) は短くしているか
Step 3: コメントの質 (定性)
- 「なぜ (Why)」を書いているか、「何をしているか (What)」になっていないか
- 自明な処理への冗長コメントがないか (
// i をインクリメント)
- 設計判断の背景・トレードオフが必要箇所に記述されているか
- 指示語 (「その」「それ」) を避け、対象を具体的に書いているか
- TODO/FIXME/HACK/XXX マーカーが未解決事項を明示しているか
Step 4: 制御フローの読みやすさ (定性)
- 条件式の語順が自然か (
if length > 10 ○ / if 10 < length ×)
- 肯定形を優先しているか (
if !debug より if debug を先に)
- ガード節と早期リターンでネストを浅く保っているか (3 段以上のネストは要注意)
- 三項演算子が単純な式に限定されネストしていないか
Step 5: 変数スコープと不変性 (定性)
- 変数が最小スコープで宣言されているか
- 不変宣言 (
const, final, let, val, readonly) がデフォルトで使われているか
- 一度しか代入されない変数が mutable で宣言されていないか
- 内側のスコープが外側の変数名をシャドウしていないか
- 変数宣言が最初の使用箇所の近くにあるか
判定基準
- タイポ検出: Step 1 の重要度ルール (must / should / nit) に従う
- 意味の伝わらない汎用名・誤解を招く命名: should
- 自明な処理への冗長コメント / 必要箇所のコメント欠落: should
- 深いネスト・否定条件の連鎖: should
- mutable で宣言された immutable 用途の変数: should
- 上記の軽微な指摘: nit
出力契約
.claude/skills/code_inspect/template/inspect_output.md の規約に従う。
観点名は readability。