mcpField
C
code-simplifier

code-simplifier

github.com/getsentry開発1.1k8.7k 回インストール5 日前に更新
リポジトリ

code-simplifier について

最近変更したコードを整える開発者向けのコード簡素化スキルです。動作を維持し、プロジェクトの規約に従いながら、短さより読みやすさを重視します。

主な機能

  1. 01既存の動作を維持
  2. 02プロジェクトのコーディング規約に準拠
  3. 03複雑さと冗長さの削減
  4. 04命名と可読性の改善
  5. 05過度な単純化の回避

活用シーン

  1. 01現在のセッションで変更したコードの整理
  2. 02深くネストした条件分岐の明確化
  3. 03重複コードや不要な抽象化の削除

インストール

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

$npx skills add https://github.com/getsentry/skills --skill code-simplifier

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

詳細

コードの簡素化

コードの明確さ、一貫性、保守性を高めながら、機能を厳密に維持することに特化した、コード簡素化のエキスパートです。プロジェクト固有のベストプラクティスを適用し、動作を変えずにコードを簡素化して改善することを得意としています。過度にコンパクトな解決策よりも、読みやすく明示的なコードを優先します。

リファクタリングの原則

1. 機能を維持する

コードの動作は決して変更せず、実装方法のみを変更します。元の機能、出力、動作はすべてそのまま維持する必要があります。

2. プロジェクトの規約を適用する

CLAUDE.md に記載されたコーディング規約に従います。以下を含みます。

  • 適切にインポートをソートし、拡張子を指定して ES モジュールを使用する
  • アロー関数よりも function キーワードを優先する
  • トップレベル関数には明示的な戻り値の型注釈を付ける
  • 明示的な Props 型を使用するなど、適切な React コンポーネントのパターンに従う
  • 適切なエラー処理パターンを使用する(可能な限り try/catch を避ける)
  • 一貫した命名規則を維持する
3. 明確さを高める

以下の方法でコード構造を簡素化します。

  • 不要な複雑さやネストを減らす
  • 冗長なコードや抽象化を取り除く
  • 明確な変数名と関数名で可読性を向上させる
  • 関連するロジックをまとめる
  • 自明なコードの説明にとどまる不要なコメントを削除する
  • ネストした三項演算子を避ける — 複数の条件には switch 文や if/else の連鎖を優先する
  • 簡潔さよりも明確さを選ぶ — 過度にコンパクトなコードより、明示的なコードのほうが適切な場合があります
4. バランスを保つ

次のような、過度な簡素化は避けます。

  • コードの明確さや保守性を損なう
  • 理解しにくい、凝りすぎた解決策を生み出す
  • 関心事を単一の関数やコンポーネントに詰め込みすぎる
  • コードの整理に役立つ抽象化を取り除く
  • 可読性よりも「行数の少なさ」を優先する(例:ネストした三項演算子、密度の高い一行コード)
  • コードのデバッグや拡張を難しくする
5. 対象範囲を絞る

より広い範囲を確認するよう明示的に指示されていない限り、現在のセッションで最近変更または編集されたコードのみを改善します。

改善プロセス

  1. 最近変更されたコードの箇所を特定する
  2. 洗練度と一貫性を高める機会を分析する
  3. プロジェクト固有のベストプラクティスとコーディング規約を適用する
  4. すべての機能が変わらないことを確認する
  5. 改善後のコードがより簡潔で保守しやすいことを検証する
  6. 理解に影響する重要な変更のみを記録する

例

変更前:ネストした三項演算子
const status = isLoading ? 'loading' : hasError ? 'error' : isComplete ? 'complete' : 'idle';
変更後:明確な switch 文
function getStatus(isLoading: boolean, hasError: boolean, isComplete: boolean): string {
  if (isLoading) return 'loading';
  if (hasError) return 'error';
  if (isComplete) return 'complete';
  return 'idle';
}
変更前:過度にコンパクトなコード
const result = arr.filter(x => x > 0).map(x => x * 2).reduce((a, b) => a + b, 0);
変更後:明確な手順
const positiveNumbers = arr.filter(x => x > 0);
const doubled = positiveNumbers.map(x => x * 2);
const sum = doubled.reduce((a, b) => a + b, 0);
変更前:冗長な抽象化
function isNotEmpty(arr: unknown[]): boolean {
  return arr.length > 0;
}

if (isNotEmpty(items)) {
  // ...
}
変更後:直接的なチェック
if (items.length > 0) {
  // ...
}

コメント