mcpField
D
duck-simplify

duck-simplify

github.com/sprngr開発855 回インストール2 週間前に更新
リポジトリ

duck-simplify について

duck-simplifyは、レビュー、設計、デバッグでコードの簡素化を分析するスキルです。複雑さの削減や意味の分岐リスクの検出を支援し、削除、再利用、標準機能を優先しながら、実装の最終判断はユーザーに委ねます。

主な機能

  1. 01複雑さのホットスポット特定
  2. 02呼び出し元と設定利用状況の確認
  3. 03影響の大きい簡素化案を最大3件提示
  4. 04削除、再利用、標準機能を優先
  5. 05意味的な重複と分岐リスクの確認

活用シーン

  1. 01コード案の階層構造の評価
  2. 02分岐しそうな重複ロジックの発見
  3. 03新しい抽象化や設定の必要性の検討
  4. 04再利用と独自実装の比較

インストール

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

$npx skills add https://github.com/sprngr/rubber-duck --skill duck-simplify

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

同梱ファイルreferences/GUARDRAILS.md

詳細

Simplify 🦆。形を小さくして、動作はそのままにします。繰り返しを減らすだけでなく、乖離を防ぎます。

目的

セキュリティ、正確性、明示された要件を損なわずに、最も価値の高い簡素化を見つけます。

哲学上のガードレール(スキル固有)

共有ガードレールは references/GUARDRAILS.md から引き継ぎます。

スキル固有の差分:

  • 複雑さの削減に関するガイダンスのみを行います。最終的な実装判断はユーザーに委ねます。

起動条件

レビュー/設計/デバッグのコンテキストで、意味上の重複や乖離のレビューを含む、複雑さを最小限に抑える視点が必要な場合に使用します。

手順

1. スコープを明確にする(不明確な場合)
  • コンテキストが不十分な場合は、的を絞った確認質問を1~3件行います
  • 根拠が不足している場合は、前提を明示します

必須:

  • コード/提案のスコープ

ドライモードで必須:

  • 意味上の重複が疑われる候補スコープを2つ以上

任意:

  • 制約(期限、可読性の基準、チームの好み)

制約が不明確な場合は、的を絞った確認質問を1件行います。

2. 簡素化の観点でレビューする
  1. 複雑さのホットスポットを特定します(レイヤー、分岐、設定項目、間接化)。
  2. 推奨する前に、根拠(呼び出し元、分岐数、設定の使用状況)を確認します。
  3. 影響の大きい簡素化を最大3件提示します。
  4. 新しい抽象化より、削除/再利用/標準ライブラリ/ネイティブ機能を優先します。
  5. DRY モードでは、意味上の重複(構文だけの重複ではないこと)を確認し、Diverges when と Extract start を含め、安全性を保てる最小の抽出境界を優先します。
  6. 簡素化によって信頼境界/アクセシビリティ/明示された要件が損なわれる場合は拒否し、安全な代替案を提案します。
  7. 可読性を高める小さな繰り返しや、リスクの低いリテラル/定数は指摘しません。
3. 指摘事項を出力する

標準モード:

指摘事項ごとに1行:

<prefix> <path[:line|scope]> — <complexity cost>. Fix: <smaller shape>.

接頭辞:

  • 🪶 yagni: まだ正当化されていない抽象化/設定
  • 📚 stdlib: 標準ライブラリで置き換えられる独自コード
  • 🧱 native: プラットフォーム機能で置き換えられる依存関係/独自レイヤー
  • ✂️ shrink: 同じ動作をより少ない行数で実現
  • 🗑️ delete: 置き換えずに削除できる未使用/推測的コード
  • ❓ question: 意図が不明なため判断できない

最後の行:

totals: <n> findings, <n> questions. net: -<N> lines possible.

ドライモード(DRY/重複排除/乖離に焦点):

指摘事項ごとに1行:

<prefix> <path[:line|scopeA<->scopeB]> — <duplicated behavior + drift risk>. Diverges when: <future change trigger>. Extract start: <path:line>. Fix: <extraction boundary>.

ドライモードの接頭辞:

  • 🟡 risk: 乖離する可能性が高い、意味のある重複
  • 🔵 nit: 整理する価値のある軽微な重複
  • ❓ question: コンテキストが不足しており、抽出方法を決められない

ドライモードの最後の行:

totals: <n> findings, <n> questions. coverage: semantic-dup=<checked|partial|missing>; extraction-start=<provided|missing>.

範囲外

  • セキュリティ/ロールバックの重大度に関する責任は負いません(duck-risk/duck-review)。
  • テスト不足に関する責任は負いません(duck-triage)。
  • 最終的な PR スレッドの書式設定に関する責任は負いません(duck-review)。

コメント