code-simplifier について
最近変更したコードを整える開発者向けのコード簡素化スキルです。動作を維持し、プロジェクトの規約に従いながら、短さより読みやすさを重視します。
主な機能
- 01既存の動作を維持
- 02プロジェクトのコーディング規約に準拠
- 03複雑さと冗長さの削減
- 04命名と可読性の改善
- 05過度な単純化の回避
活用シーン
- 01現在のセッションで変更したコードの整理
- 02深くネストした条件分岐の明確化
- 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. 対象範囲を絞る
より広い範囲を確認するよう明示的に指示されていない限り、現在のセッションで最近変更または編集されたコードのみを改善します。
改善プロセス
- 最近変更されたコードの箇所を特定する
- 洗練度と一貫性を高める機会を分析する
- プロジェクト固有のベストプラクティスとコーディング規約を適用する
- すべての機能が変わらないことを確認する
- 改善後のコードがより簡潔で保守しやすいことを検証する
- 理解に影響する重要な変更のみを記録する
例
変更前:ネストした三項演算子
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) {
// ...
}
コメント
Markdown 対応