mcpField
C
codebase-comprehension-algorithms

codebase-comprehension-algorithms

github.com/pproenca開発218139 回インストール11 週間前に更新
リポジトリ

codebase-comprehension-algorithms について

コードベースをドメインやアーキテクチャ構造に対応づけるため、確立されたアルゴリズムの選定を支援するリファレンススキルです。コーディングエージェントやエンジニア向けに、グラフ構築、クラスタリング、語彙分析、検証を根拠に基づいて案内します。

主な機能

  1. 019カテゴリ、47項目のルール
  2. 02グラフ構築とクラスタリング手法
  3. 03コード向け語彙前処理
  4. 04アーキテクチャ復元とトピックモデリング
  5. 05検証指標と安定性チェック

活用シーン

  1. 01未知のコードベースのドメイン整理
  2. 02機能を実装するファイルの特定
  3. 03リファクタリング時の境界確認
  4. 04文書化された構造とコードの照合

インストール

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

$npx skills add https://github.com/pproenca/dot-skills --skill codebase-comprehension-algorithms

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
arch-acdc-subgraph-patterns.md
arch-bunch-with-mq-fitness.md
arch-dsm-partitioning.md
arch-limbo-information-bottleneck.md
arch-reflexion-model.md
clust-hdbscan-density-based.md
clust-infomap-mdl-on-random-walks.md
clust-leiden-not-louvain.md
clust-mcl-markov-clustering.md
clust-spectral-laplacian-fiedler.md
clust-stochastic-block-model.md
clust-walktrap-short-random-walks.md
evol-filter-large-commits.md
evol-logical-coupling-as-architectural-signal.md
evol-mine-cochange-with-lift-and-confidence.md
evol-temporal-decay-on-edge-weights.md
graph-bipartite-file-term-for-joint-structure.md
graph-collapse-sccs-before-clustering.md
graph-combine-signals-in-multilayer-graphs.md
graph-filter-omnipresent-utilities-before-clustering.md
graph-pick-edge-type-by-question-asked.md
graph-weight-edges-by-information-content.md
info-mdl-for-model-selection.md
info-mutual-information-as-coupling.md
info-naturalness-of-code-as-quality-signal.md
info-normalized-compression-distance.md

詳細

コミュニティにおけるコードベース理解とドメインマッピングのアルゴリズムに関するベストプラクティス

コードベースを理解しやすい機能/ビジネスドメインにマッピングするために有効なアルゴリズムを、実務者向けにまとめたリファレンスです。これらの手法の多くは、ソフトウェアアーキテクチャの復元やソフトウェアリポジトリのマイニングに関する文献で扱われていますが、現場のエンジニアにはほとんど知られていません。しかし、コーディングエージェントが日々求められる「このコードベースは何をしていて、その機能はどこにあるのか?」という問いに答えるには、まさに適した手法です。

47 のルールは、実行ライフサイクルへの影響度に基づいて整理されています。パイプラインの早い段階での誤った判断(どのグラフを構築するか、どの識別子を残すか)は、その後のすべてに影響します。CRITICAL の 3 つのカテゴリ(graph-、clust-、valid-)は、誤った判断を後から挽回できないものです。まず、これらをお読みください。

対象範囲:査読済みの文献または定評ある書籍に基づく実証済みのアルゴリズムです。Newman の Networks、Leskovec-Rajaraman-Ullman の Mining of Massive Datasets、Ganter-Wille の Formal Concept Analysis に加え、ICSE/FSE/TSE/PNAS/JMLR の論文を 40 本以上取り上げています。チュートリアルサイト、Stack Overflow、マーケティング記事は含みません。GNN/CodeBERT/code2vec(まだ「数十年にわたって実証済み」とは言えません)と、リファクタリングのレシピに関する内容(react-refactor や typescript-refactor などの関連スキルで扱います)は、意図的に将来のバージョンに先送りしています。

適用する場面

次のような場合に、これらのルールを使用してください。

  • 不慣れなコードベースにエージェントを適応させる場合:「このコードベースがドメインごとに何をしているのか説明してください」
  • アーキテクチャマップを作成する場合:「主なサブシステムとその接続関係は何ですか?」
  • 機能の実装箇所を特定する場合:「決済/認証/検索を実装しているファイルはどれですか?」
  • リファクタリングをレビューする場合:「この変更はアーキテクチャ上の境界を守っていますか?」
  • アーキテクチャ上の負債を検出する場合:「予想外に結合しているファイルはどれですか?」
  • 既存の分解を検証する場合:「README に記載されたアーキテクチャは、コードと一致していますか?」
  • 上記のいずれかに使うアルゴリズムを選ぶ場合 — ユーザーが求めているのは、感覚的な判断ではなく、実証済みの手法です

優先度別のルールカテゴリ

#カテゴリプレフィックス影響度内容
1グラフの構築とエッジの重み付けgraph-CRITICAL構築するグラフ、広範なフィルタリング、サイクル処理、マルチレイヤー
2コミュニティ検出とクラスタリングclust-CRITICALLeiden、Infomap、SBM、MCL、Walktrap、スペクトラル、HDBSCAN
3検証と品質指標valid-CRITICALMoJoFM、ARI/NMI、解像度限界、コンセンサス、変更予測、アブレーション
4識別子と言語的前処理lex-HIGHSamurai による分割、略語の展開、TF-IDF/BM25、語幹処理、V-O 解析
5ソフトウェア固有のアーキテクチャ復元arch-HIGHBunch + MQ、ACDC、Limbo、Reflexion、DSM
6ソースコードのトピックモデリングtopic-HIGHLDA、LSI/SVD、NMF、HDP、一貫性に基づく K の選択
7進化的結合と共変更のマイニングevol-HIGHLift/confidence/support、大規模コミットのフィルタリング、時間減衰、論理的結合
8情報理論的手法info-MEDIUM-HIGH正規化圧縮距離、相互情報量、MDL、コードの自然さ
9中心性、階層、ラベリングrank-MEDIUMPageRank、HITS、媒介中心性、TextRank/YAKE によるラベル生成

クイックリファレンス

1. グラフ構築とエッジの重み付け(重要)
2. コミュニティ検出とクラスタリング(重要)
  • clust-leiden-not-louvain — Louvain はノードの 5~25% で、互いにつながっていないコミュニティを生成します(Traag 2019)
  • clust-infomap-mdl-on-random-walks — ランダムウォークに対する MDL。フローに意味のあるグラフに適した手法です
  • clust-stochastic-block-model — ベイズ手法で階層的にクラスタリングし、データから K を学習します。非同類選好構造にも対応します
  • clust-mcl-markov-clustering — フローシミュレーションを使用します。バイオインフォマティクスで広く使われ、ノイズに強い手法です
  • clust-walktrap-short-random-walks — ランダムウォーク距離と階層的凝集型クラスタリング
  • clust-spectral-laplacian-fiedler — ラプラシアンの固有ベクトルを使って、最適な k 分割の正規化カットを実現します
  • clust-hdbscan-density-based — グラフではなく、ファイルの埋め込み表現を使ってクラスタリングする場合に使用します
3. 検証と品質指標(重要)
4. 識別子と字句の前処理(高)
5. ソフトウェア固有のアーキテクチャ復元(高)
6. ソースコードのトピックモデリング(高)
7. 進化的結合と変更の共起マイニング(高)
8. 情報理論的手法(中~高)
9. 中心性、階層、ラベリング(中級)

使用方法

まず、エージェントが答えようとしている問いから始めます。

  • 「このコードベースの主なドメインは何ですか?」 → graph-(グラフを選択)→ clust-(Leiden / Infomap / SBM)→ topic-(ラベルを付与)→ valid-(安定性を確認し、アブレーションを実施)
  • 「機能 X を実装しているファイルはどれですか?」 → テーマの位置を特定するには topic-lda-on-source-code、X のファイルをシードとしてパーソナライズド PageRank を実行するには rank-pagerank-for-module-importance
  • 「アーキテクチャの中核はどこですか?」 → 依存関係グラフに対して rank-pagerank-for-module-importance と rank-hits-hubs-and-authorities を使用します
  • 「README に記載されたアーキテクチャはコードと一致していますか?」 → この用途に特化して設計されているのが arch-reflexion-model です
  • 「(静的な依存関係だけでなく)実際の結合度はどの程度ですか?」 → evol-logical-coupling-as-architectural-signal と evol-mine-cochange-with-lift-and-confidence
  • 「特徴量を設計せずにクラスタリングするにはどうすればよいですか?」 → info-normalized-compression-distance
  • 「クラスタはどの程度の大きさが適切ですか?」 → valid-be-aware-of-resolution-limit と topic-hdp-for-nonparametric-topic-count
  • 「分解が適切かどうかを判断するにはどうすればよいですか?」 → valid- カテゴリー全体を使用します。複数の代理指標による評価は必須です

このスキルの基本的な考え方は、まず適切なグラフを構築すること(どこにでも現れるファイルは除外します)、グラフと問いに合ったアルゴリズムを選ぶこと、語彙的なシグナルが重要な場合はコードに特化した前処理パイプライン(Samurai + ストップワード + ステミング + TF-IDF)を使用すること、そして必ず検証することです。専門家による正解データがある場合は MoJoFM を、ない場合はコンセンサス + 変更共起予測 + アブレーションを使用します。

コード例が Python で書かれているのは、参照実装(networkx、igraph、leidenalg、scikit-learn、gensim、graph-tool、hdbscan)がすべて Python で利用できるためです。ここでの考え方は、どの言語にも応用できます。

参照ファイル

ファイル説明
references/_sections.mdカテゴリーの定義と順序
assets/templates/_template.md新しいルール用のテンプレート
metadata.jsonバージョンと参照情報
AGENTS.md自動生成された目次ナビゲーション

関連スキル

  • computer-science-algorithms — アルゴリズムとデータ構造のリファレンス(このスキルでは MinHash/LSH、Aho-Corasick などについて相互参照しています)
  • complexity-optimizer — ここで特定するホットパスの静的解析
  • design-to-react-algorithms — デザインからコードへの構造復元を支援するスキル

コメント