simplify について
simplify は、観測可能な動作と公開契約を保ちながら実装を簡潔にするためのコーディングスキルです。作業範囲の確認から編集、検証、報告までを案内します。
主な機能
- 01コード、呼び出し元、テスト、差分の確認
- 02重複や不要な抽象化の特定
- 03範囲を限定した動作維持の編集
- 04関連テストの実行と差分の確認
- 05変更、検証結果、リスクの報告
活用シーン
- 01作業ツリーの保留中の変更を簡潔化
- 02インターフェースを変えずに実装を整理
- 03重要な動作が維持されているかを確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ scottwater/ skills --skill simplifyインストール後、Claude Code で/simplifyを入力して読み込まれたか確認します。
詳細
簡素化
観察可能な動作を変えずに、依頼された実装を改善します。
1. 対象範囲を定める
リポジトリのガイダンスを読み、実装、その呼び出し元、テスト、現在の差分を確認します。ユーザーが指定した範囲を使用します。指定がない場合は、現在の作業ツリーにある未反映の変更に対象を限定し、リポジトリ全体の整理には広げません。
実装が維持すべき動作と公開契約を特定します。この実装に属する変更と、無関係なユーザーの作業を区別します。意図する動作や責任範囲に重大な曖昧さがある場合は、編集する前に確認します。
2. 実質的な簡素化を見つける
次の点を確認します。
- 重複しているロジック、データ、ヘルパー、テスト
- より直接的に表現できる制御フローや状態
- 不要な間接化、ラッパー、抽象化、設定
- 再編成によって責任の所在が明確になる、分散したコード
- 対象の実装には不要な互換性経路や防御的な分岐
- 動作と無関係なコメント、書式変更、名前変更、その他の差分
- カバレッジが重複する、実装の詳細を検証する、または意味のある回帰検出につながらないテスト
新しい抽象化を追加するより、削除や単純で局所的なコードを優先します。実際の不変条件を管理する、実際の複数の呼び出し元で重複を減らす、または安定した境界を保護する抽象化は維持します。見える複雑さを隠れた結合に置き換えてはいけません。
重要な動作、境界、失敗ケース、回帰を証明するテストは維持します。シグナルがすでに別の場所で得られている場合、または対象の動作自体が削除された場合に限り、テストを削除します。残すテストで、維持する契約を引き続き確認できるようにします。
3. 実装を改善する
複雑さや差分を実質的に減らす、最小限で一貫性のある編集を行います。ユーザーが明示的に変更を許可していない限り、外部動作、公開インターフェース、データ形式、エラー、サイドエフェクト、サポート対象のエッジケースを維持します。
定めた対象範囲内で作業します。一貫性を理由に周辺コードを書き換えたり、変更のある作業ツリー内の無関係な作業を上書きしたりしてはいけません。
4. 維持できていることを検証する
最終差分を確認し、意図しない動作変更や不要な編集がないことを確かめます。まず関連するテストを絞って実行し、その後、リポジトリで必要とされる、より広範なテスト、型チェック、リント、フォーマットのコマンドを実行します。テストを削除した場合は、残したテストで重要な動作を引き続き検証できることを確認します。
検証に失敗した場合は、簡素化を修正するか、安全でない変更を元に戻します。検証を通すために、アサーションを弱めたり、失敗したテストを削除したりしてはいけません。
5. 報告する
次の内容をまとめます。
- 簡素化または削除した内容
- 動作が維持されている理由
- 実行した検証とその結果
- 簡素化するとリスクが高まる、または動作が変わるため、変更しなかった箇所
対象の実装が実質的に簡素化され、この作業で加えた無関係な差分が最終差分に含まれず、維持した動作を新たに検証した証拠がある場合に、この作業は完了です。