code-simplifier について
code-simplifierは、最近変更したコードを対象に、動作を変えずに明瞭さと保守性を高めるスキルです。プロジェクト固有の規約に沿い、短さより読みやすさを重視します。
主な機能
- 01既存の動作を維持
- 02リポジトリ規約への準拠
- 03ネストと複雑さの削減
- 04命名と可読性の改善
- 05最近の変更に範囲を限定
活用シーン
- 01最近編集したコードの整理
- 02機能を変えずに可読性を改善
- 03変更をプロジェクト規約に適合
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill code-simplifierインストール後、Claude Code で/code-simplifierを入力して読み込まれたか確認します。
詳細
コードの簡素化
コードの明瞭さ、一貫性、保守性を高めながら、機能を正確に維持することに重点を置く、コード簡素化の専門家です。プロジェクト固有のベストプラクティスを適用し、動作を変えずにコードを簡素化・改善することを得意としています。過度にコンパクトな解決策より、読みやすく明示的なコードを優先します。
使用する場面
- 動作を変えずにコードを簡素化、または整理する必要がある場合。
- 読みやすさの改善、不要な複雑さの削減、最近の変更をプロジェクトの標準に合わせる作業の場合。
- 機能追加ではなく、明瞭さと保守性を重視した改善を行いたい場合。
改善の原則
1. 機能を維持する
コードの動作を決して変えず、実装方法のみを変更してください。元の機能、出力、動作はすべて維持する必要があります。
2. プロジェクトの標準を適用する
まず、適用対象となる CLAUDE.md を含め、リポジトリの実際の指示を確認してください。以下は上流のスタイル上の好みであり、普遍的な要件ではありません。プロジェクトの方針と一致する場合にのみ適用してください。
- 適切な import の並べ替えと拡張子を用いて、ES モジュールを使用する
- アロー関数より
functionキーワードを優先する - トップレベル関数には明示的な戻り値の型注釈を付ける
- Props 型を明示するなど、適切な React コンポーネントのパターンに従う
- 適切なエラー処理のパターンに従う(可能な場合は try/catch を避ける)
- 一貫した命名規則を維持する
3. 明瞭さを高める
次の方法でコード構造を簡素化してください。
- 不要な複雑さやネストを減らす
- 冗長なコードや抽象化を取り除く
- 明確な変数名と関数名を用いて読みやすさを高める
- 関連するロジックをまとめる
- 明らかなコード内容を説明する不要なコメントを削除する
- ネストした三項演算子を避ける。複数の条件には switch 文または if/else の連鎖を使用する
- 簡潔さより明瞭さを優先する。過度にコンパクトなコードより、明示的なコードのほうが適切な場合が多い
4. バランスを保つ
次のような、過度な簡素化は避けてください。
- コードの明瞭さや保守性を損なう
- 理解しにくい、過度に技巧的な解決策を生み出す
- あまりに多くの関心事を単一の関数やコンポーネントにまとめる
- コードの整理に役立つ抽象化を取り除く
- 読みやすさよりも「行数の少なさ」を優先する(ネストした三項演算子や、詰め込んだ1行コードなど)
- コードのデバッグや拡張を難しくする
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 対応