minimalist-surgical-development について
minimalist-surgical-development は、既存コードの構造を保ちながら必要最小限の変更で問題を解決する開発スキルです。Serena MCP を使ったシンボル単位の検索や編集方法も案内します。
主な機能
- 01最小限のコードで要件を解決
- 02既存の構造とスタイルを維持
- 03依頼されていないリファクタリングを回避
- 04標準ライブラリと一般的なパターンを優先
- 05Serena MCP によるシンボル検索と編集
活用シーン
- 01既存コードに小規模な修正を加える
- 02無関係な変更を避けて機能を修正
- 03Serena MCP でシンボルや参照を特定
MCP 対応
コードの調査と編集には、シンボルや参照の検索、シンボル単位の編集など、Serena MCP のシンボルツールを推奨します。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ faulkdev/ github-copilot-superpowers --skill minimalist-surgical-developmentインストール後、Claude Code で/minimalist-surgical-developmentを入力して読み込まれたか確認します。
詳細
ミニマリストかつ外科的な開発
概要
Kent Beck のようにコードを書きましょう。 このスキルでは、変更を小さく、慣例に沿ったものに保ちます。既存の構造への影響を最小限に抑え、必要なコードだけで明示された問題を解決します。
次のような場合に使用します…
- 「最小限の変更」「外科的な修正」「構造を維持」「リファクタリングしない」が重視されている
- ゼロから構築するのではなく、既存のコードを変更するタスクである
- 新しい抽象化、フレームワーク、大規模な書き換えを導入したくなる
症状/キーワード
- 「最小限」「外科的」「差分を小さく」「無関係な箇所には触れない」「スタイルを維持」「リファクタリングなし」「標準ライブラリを優先」「YAGNI」「KISS」
ミニマリストかつ標準的なコード生成
- シンプルさの原則:常に、可能な限り率直でミニマルな解決策を提示します。目的は、コードと複雑さを最小限に抑えて問題を解決することです。時期尚早な最適化や過剰な設計は避けます。
- 標準を優先:標準ライブラリの関数や、広く受け入れられている一般的なプログラミングパターンを強く優先します。サードパーティのライブラリは、そのタスクで業界標準である場合、または不可欠な場合にのみ導入します。
- 複雑な解決策を避ける:複雑なもの、「巧妙な」もの、分かりにくい解決策は提案しません。入り組んだパターンより、読みやすさ、保守性、動作する結果に至る最短の道筋を優先します。
- 依頼の核心に集中する:ユーザーの依頼に直接対応するコードを生成し、追加機能や、言及されていないエッジケースへの対応は加えません。
外科的なコード変更
- 既存のコードを維持する:現在のコードベースを信頼できる唯一の情報源として尊重します。可能な限り、その構造、スタイル、ロジックを維持することを第一の目標とします。
- 必要最小限の変更:新機能を追加したり変更を加えたりする場合、その変更を確実に実装するために必要な既存コードだけを変更します。
- 明示された指示のみ:ユーザーの依頼で明示的に対象とされたコードのみを変更、リファクタリング、削除します。対象外の箇所に対して、依頼されていないリファクタリング、整理、スタイル変更は行いません。
- 置き換えずに統合する:可能な限り、関数やコードブロック全体を置き換えるのではなく、既存の構造に新しいロジックを統合します。
シンボル優先のナビゲーション(Serena MCP)
変更前にコード構造を調べる場合は、ファイル全体を読むよりも、Serena MCP のシンボルツールを優先します。
get_symbols_overview- ファイルの構造(クラス、関数、メソッド)をすばやく要約しますfind_symbol- ファイル全体を読まずに、名前から特定のコードを探しますfind_referencing_symbols- すべての呼び出し箇所を見つけて、変更の影響を把握します
シンボル優先がミニマリストである理由:
- 必要なコードだけを確認し、コンテキストの汚染を減らします
- 編集前に対象を正確に特定し、変更箇所の推測を避けます
- 既存のパターンを見つけ、一貫性を保ちます
- リファクタリングの影響をすばやく確認し、使用箇所が壊れないことを検証します
編集時は、ファイル単位の置換よりシンボル編集ツールを優先します:
- コードの追加には
insert_before_symbol/insert_after_symbolを使用します - 関数の実装を書き換えるには
replace_symbol_bodyを使用します - 関数内の小さな範囲を編集する場合に限り、
replace_content(ファイル単位)を使用します
詳細なシナリオや例については、serena-mcp-integration-guide.md を参照してください。
インテリジェントなツールの使用
- 必要に応じてツールを使用する(サブエージェント経由):リクエストに外部情報の確認や環境との直接的なやり取りが必要な場合は、適切なサブエージェントに必要なツールを使用させ、出典を含むコンテキストパッケージを返してもらいます。オーケストレーターは調査やデータ取得のための I/O を直接行ってはいけません。
- 依頼された場合はコードを直接編集する(サブエージェント経由):コードの変更、リファクタリング、追加を明示的に依頼された場合は、実装サブエージェントに変更をコードベースへ直接適用させます。依頼がない限り、スニペットのコピー&ペーストは避け、サブエージェントが実装する小規模で最小限の差分を基本とします。
- 目的に沿った、的を絞った作業:ツールの使用は、ユーザーの依頼に直接結び付いている必要があります。無関係な検索や変更は行わないでください。ツールによる各アクションは、明示された具体的な目標を達成するために必要な手順でなければなりません。
- ツールを使用する前に意図を伝える:ツールを実行する前に、これから行うアクションとその直接の目的を必ず伝えてください。この説明は簡潔にし、ツール呼び出しの直前に記載してください。
クイックチェックリスト
- 変更を加える前に、調査サブエージェントが出典付きで関連ファイルを確認していることを確認する
- 要件を満たす最小限の差分にする
- 新しいユーティリティを追加するより、既存のユーティリティや抽象化を優先する
- 明確な理由がない限り、新しい依存関係を追加しない
コメント
Markdown 対応