improve-codebase-architecture
コードベースを調査して、浅いモジュールを深掘りすることでテスト性を向上させ、アーキテクチャ改善の機会を見つけることができます。アーキテクチャの改善を望む場合、リファクタリングの機会を探したい場合、密結合したモジュールを統合したい場合、またはコードベースをAIにとってより理解しやすくしたい場合に使用してください。
description の原文を見る
Explore a codebase to find opportunities for architectural improvement, focusing on making the codebase more testable by deepening shallow modules. Use when user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make a codebase more AI-navigable.
SKILL.md 本文
コードベースアーキテクチャの改善
AIのようにコードベースを探索し、アーキテクチャ上の摩擦を表面化させ、テスト可能性向上の機会を発見し、モジュール深化のリファクタRFCをGitHubイシューとして提案します。
深いモジュール(John Ousterhout著『A Philosophy of Software Design』)は、小さなインターフェースが大きな実装を隠しています。深いモジュールはより高いテスト可能性を持ち、AIナビゲーション性に優れており、内部ではなく境界でテストできます。
プロセス
1. コードベースを探索する
Agent ツールを subagent_type=Explore で使用してコードベースを自然に移動します。厳密なヒューリスティクスに従わず、有機的に探索し、摩擦を感じた箇所をメモします:
- 1つの概念を理解するために多くの小さなファイル間を移動する必要がある箇所はどこか?
- モジュールが非常に浅く、インターフェースが実装とほぼ同じくらい複雑な箇所はどこか?
- 純粋関数がテスト可能性のためだけに抽出されているが、実際のバグはそれらがどのように呼び出されるかに隠れている箇所はどこか?
- 密結合モジュールがモジュール間の境界に統合リスクを生み出している箇所はどこか?
- コードベースのどの部分がテストされていない、またはテスト困難か?
体験する摩擦こそが信号です。
2. 候補を提示する
深化の機会の番号付きリストを提示します。各候補について以下を表示します:
- クラスタ:関連するモジュール/概念
- なぜ密結合しているのか:共有型、呼び出しパターン、概念の共同所有
- 依存カテゴリ:
REFERENCE.mdの4つのカテゴリを参照 - テスト影響:既存のどのテストが境界テストで置き換わるか
まだインターフェースを提案しないでください。ユーザーに「これらのうちどれを掘り下げたいですか?」と聞きます。
3. ユーザーが候補を選ぶ
4. 問題空間をフレームする
サブエージェントを起動する前に、選択された候補の問題空間をユーザー向けに説明します:
- 新しいインターフェースが満たす必要のある制約
- それが依存する必要のある依存関係
- 制約を具体的にするための大まかな図示的コードスケッチ。これは提案ではなく、制約を明確にするための方法です
これをユーザーに表示してから、すぐにステップ5に進みます。ユーザーはサブエージェントが並行して作業している間に読んで考えます。
5. 複数のインターフェースを設計する
Agent ツールを使用して3つ以上のサブエージェントを並行して起動します。各エージェントは深化されたモジュール用に根本的に異なるインターフェースを生成する必要があります。
各サブエージェントに個別の技術ブリーフ(ファイルパス、密結合の詳細、依存カテゴリ、隠れるもの)をプロンプトします。このブリーフはステップ4のユーザー向け説明とは無関係です。各エージェントに異なる設計制約を与えます:
- エージェント1:「インターフェースを最小化する。最大で1~3つのエントリーポイント」
- エージェント2:「柔軟性を最大化する。多くのユースケースと拡張性をサポート」
- エージェント3:「最も一般的な呼び出し元に最適化する。デフォルトケースを簡単に」
- エージェント4(該当する場合):「ポート&アダプターパターンで境界を越えた依存関係を設計」
各サブエージェントが出力するもの:
- インターフェースシグネチャ(型、メソッド、パラメータ)
- 呼び出し元がどのように使用するかを示す使用例
- 内部で隠れている複雑性
- 依存戦略(依存関係の処理方法。
REFERENCE.md参照) - トレードオフ
設計を順番に提示してから、散文で比較します。
比較後、独自の推奨を示します:どの設計が最も強力か、そしてなぜか。異なる設計の要素がうまく組み合わさる場合は、ハイブリッドを提案します。主観的になってください。ユーザーは強力な見方を求めており、メニューだけではありません。
6. ユーザーがインターフェースを選ぶ(または推奨を受け入れる)
7. リファクタRFCを作成する
refactors/ ディレクトリ内にリファクタRFCを作成します。REFERENCE.md のテンプレートを使用します。ユーザーに作成前にレビューするよう求めないでください。作成して、URLを共有するだけです。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- psaunderualberta
- ライセンス
- MIT
- 最終更新
- 2026/5/11
Source: https://github.com/psaunderualberta/differentiable-privacy-percentages / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。