mcpField
C
code-simplifier

code-simplifier

github.com/meleantonio開発66276 回インストール10 週間前に更新
リポジトリ

code-simplifier について

Code Simplifierは、動作を維持しながら変更箇所や指定コードを整理する開発者向けスキルです。複雑さの軽減と可読性の向上に加え、フォーマット、Lint、テストによる確認を行います。

主な機能

  1. 01複雑な関数や条件分岐の分割
  2. 02命名とコード可読性の改善
  3. 03未使用・冗長なコードの削除
  4. 04Pythonらしい書き方の適用
  5. 05フォーマット、Lint、テストの実行

活用シーン

  1. 01機能追加や修正後のコード整理
  2. 02指定したファイルやディレクトリの簡素化
  3. 03リファクタリング後の動作維持を確認

インストール

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

$npx skills add https://github.com/meleantonio/awesome-econ-ai-stuff --skill code-simplifier

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

同梱ファイルindex.md

詳細

コードの簡素化

変更を加えた後に、コードを整理して簡素化します。

使用するタイミング

機能や修正を完了した後にこのスキルを実行し、コードが整理され、読みやすく、保守しやすい状態であることを確認します。

簡素化の目標

複雑さを軽減する
  • 長い関数を、より小さく目的を絞った関数に分割します
  • ネストの深さを減らします(最大3階層)
  • 複雑な条件式を簡素化します
  • マジックナンバーを名前付き定数に置き換えます
可読性を向上させる
  • 説明的な変数名と関数名を使用します
  • 自明でないロジックには、理解を助けるコメントを追加します
  • 一貫したフォーマットを保ちます
  • 不要なコメントを削除します
Python らしいパターンを適用する
  • 適切な場合は、リスト/辞書/セット内包表記を使用します
  • リソース管理には with 文を使用します
  • 手動のインデックス指定の代わりに enumerate() を使用します
  • 並行して反復処理する場合は zip() を使用します
  • 文字列の書式設定には f-string を使用します
  • ファイルパスには pathlib を使用します
整理する
  • 使用されていないインポートを削除します
  • 使用されていない変数を削除します
  • コメントアウトされたコードを削除します
  • 冗長なコードパスを削除します
  • 重複するロジックをまとめます

ワークフロー

  1. 変更されたファイルを特定する

    • 現在のセッションで変更されたファイルを対象にします
    • または、引数としてファイル/ディレクトリを指定します
  2. 各ファイルを分析する

    • 簡素化できる箇所を確認します
    • 効果の大きい改善を優先します
  3. 簡素化を適用する

    • 段階的に変更します
    • 元の動作を維持します
    • 変更ごとにテストを実行します
  4. フォーマットとリント

    • ruff format . を実行します
    • ruff check --fix . を実行します
  5. 検証する

    • テストを実行します:pytest
    • 動作が変わっていないことを確認します

引数

簡素化するファイルまたはディレクトリを任意で指定できます。

使用方法:

  • /code-simplifier - 最近変更されたファイルを簡素化します
  • /code-simplifier src/module.py - 特定のファイルを簡素化します
  • /code-simplifier src/ - ディレクトリ全体を簡素化します

変換例

変換前:

result = []
for i in range(len(items)):
    if items[i].is_valid == True:
        result.append(items[i].value)

変換後:

result = [item.value for item in items if item.is_valid]

変換前:

if x != None:
    if y != None:
        if z != None:
            process(x, y, z)

変換後:

if all(v is not None for v in (x, y, z)):
    process(x, y, z)

コメント