archtracker-mcp 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ja.md ADDED
@@ -0,0 +1,344 @@
1
+ <p align="right">
2
+ <a href="README.md">🇺🇸 English</a>
3
+ </p>
4
+
5
+ <p align="center">
6
+ <img src="https://img.shields.io/badge/MCP-Compatible-blue?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiAxNWwtNS01IDEuNDEtMS40MUwxMCAxNC4xN2w3LjU5LTcuNTlMMTkgOGwtOSA5eiIvPjwvc3ZnPg==" alt="MCP Compatible">
7
+ <img src="https://img.shields.io/npm/v/archtracker-mcp?style=for-the-badge&color=cb3837&logo=npm" alt="npm version">
8
+ <img src="https://img.shields.io/github/license/un907/archtracker-mcp?style=for-the-badge" alt="License">
9
+ <img src="https://img.shields.io/node/v/archtracker-mcp?style=for-the-badge&logo=node.js" alt="Node.js">
10
+ <img src="https://img.shields.io/github/actions/workflow/status/un907/archtracker-mcp/ci.yml?style=for-the-badge&logo=github&label=CI" alt="CI">
11
+ </p>
12
+
13
+ <h1 align="center">archtracker-mcp</h1>
14
+
15
+ <p align="center">
16
+ <b>AI駆動開発のためのアーキテクチャ & 依存関係トラッカー</b><br>
17
+ MCP サーバー + CLI + Web ビューア + Claude Code Skills
18
+ </p>
19
+
20
+ <p align="center">
21
+ <a href="#クイックスタート">クイックスタート</a> &bull;
22
+ <a href="#機能">機能</a> &bull;
23
+ <a href="#マルチレイヤーアーキテクチャ">マルチレイヤー</a> &bull;
24
+ <a href="#web-ビューア">Web ビューア</a> &bull;
25
+ <a href="#mcp-ツール">MCP ツール</a> &bull;
26
+ <a href="#cli-コマンド">CLI</a>
27
+ </p>
28
+
29
+ ---
30
+
31
+ ## なぜ archtracker?
32
+
33
+ AI エージェントがコードを修正する際、**波及的な影響を見逃します**:
34
+
35
+ | 問題 | archtracker なし | archtracker あり |
36
+ |------|-----------------|-----------------|
37
+ | `auth.ts` を変更 | 12ファイルが依存していることを知らない | 影響を受ける全12ファイルを即座に表示 |
38
+ | リファクタでファイル名変更 | 次のセッションで古いパスを参照 | `context` コマンドで現在の有効パスを取得 |
39
+ | 新しい依存関係を追加 | 結合度の増加が見えない | 差分レポートがアーキテクチャ変更を検出 |
40
+ | PRレビュー | 手動で依存関係を追跡 | CIが自動でアーキテクチャドリフトをチェック |
41
+ | マルチサービス構成 | サービス境界を跨ぐ影響が見えない | レイヤー対応分析でクロスレイヤー接続を検出 |
42
+
43
+ **archtracker-mcp** は依存関係分析、スナップショット差分、影響シミュレーション、インタラクティブな可視化を提供します。MCP ツール、CLI、Web UI、Claude Code Skills からアクセス可能です。
44
+
45
+ ## 機能
46
+
47
+ - **依存関係グラフ分析** — 正規表現ベースの静的解析、**13言語**対応(JS/TS, Python, Rust, Go, Java, C/C++, C#, Ruby, PHP, Swift, Kotlin, Dart, Scala)
48
+ - **マルチレイヤーアーキテクチャ** — 複数サービス/レイヤーを統合グラフとして分析、クロスレイヤー接続の自動検出
49
+ - **インタラクティブ Web ビューア** — D3.js による力学モデルグラフ(凸包レイヤーグループ表示)、階層図、差分ビュー
50
+ - **セキュリティ強化** — XSS安全なHTMLエスケープ、全MCPツールにパストラバーサル防止(v0.6.0)
51
+ - **影響シミュレーション** — ファイルをクリックして推移的な被依存ファイルを可視化(BFS探索)
52
+ - **スナップショット差分** — アーキテクチャスナップショットを保存し、ドリフトを検出
53
+ - **MCP サーバー** — Model Context Protocol 経由で6つのツールを提供
54
+ - **Claude Code Skills** — 6つのスラッシュコマンド(`/arch-check`、`/arch-snapshot`、`/arch-serve` 等)
55
+ - **CI 統合** — `--ci` モード + GitHub Actions ワークフロー自動生成
56
+ - **多言語対応** — 日本語・英語完全対応(`LANG` 環境変数から自動検出)
57
+ - **ダーク/ライトテーマ** — localStorage で設定を永続化
58
+ - **SVG/PNG エクスポート** — ドキュメント用にグラフをエクスポート
59
+
60
+ ## クイックスタート
61
+
62
+ ### インストール
63
+
64
+ ```bash
65
+ npm install -g archtracker-mcp
66
+ ```
67
+
68
+ ### 1. プロジェクトを分析
69
+
70
+ ```bash
71
+ archtracker analyze --target src
72
+ ```
73
+
74
+ ### 2. ベースラインスナップショットを保存
75
+
76
+ ```bash
77
+ archtracker init --target src
78
+ ```
79
+
80
+ ### 3. Web ビューアを起動
81
+
82
+ ```bash
83
+ archtracker serve --target src --watch
84
+ # => http://localhost:3000
85
+ ```
86
+
87
+ ### 4. アーキテクチャドリフトをチェック
88
+
89
+ ```bash
90
+ archtracker check --target src
91
+ ```
92
+
93
+ ## マルチレイヤーアーキテクチャ
94
+
95
+ フロントエンド + バックエンド + 共有ライブラリなど、複数のサービスやレイヤーを持つプロジェクトを統合的に分析できます。
96
+
97
+ ### セットアップ
98
+
99
+ プロジェクトルートに `.archtracker/layers.json` を作成:
100
+
101
+ ```json
102
+ {
103
+ "version": "1.0",
104
+ "layers": [
105
+ {
106
+ "name": "Frontend",
107
+ "targetDir": "frontend/src",
108
+ "language": "javascript",
109
+ "color": "#58a6ff",
110
+ "description": "React Web App"
111
+ },
112
+ {
113
+ "name": "Backend",
114
+ "targetDir": "backend/app",
115
+ "language": "python",
116
+ "color": "#3fb950",
117
+ "description": "FastAPI Server"
118
+ }
119
+ ],
120
+ "connections": [
121
+ {
122
+ "fromLayer": "Frontend",
123
+ "fromFile": "api/client.ts",
124
+ "toLayer": "Backend",
125
+ "toFile": "main.py",
126
+ "type": "api-call",
127
+ "label": "REST API"
128
+ }
129
+ ]
130
+ }
131
+ ```
132
+
133
+ テンプレートの自動生成:
134
+
135
+ ```bash
136
+ archtracker layers init
137
+ ```
138
+
139
+ ### 使い方
140
+
141
+ `layers.json` が存在する場合、全コマンドが自動的にマルチレイヤーモードで動作します:
142
+
143
+ ```bash
144
+ archtracker analyze --root . # 全レイヤーを分析
145
+ archtracker serve --root . --watch # レイヤータブ・凸包表示付き Web ビューア
146
+ archtracker check --root . # クロスレイヤー差分チェック
147
+ ```
148
+
149
+ 各レイヤーは独立した言語設定で個別に分析され、プレフィックス付きパス(例: `Backend/worker.py`)で統合グラフにマージされます。
150
+
151
+ ### Web ビューアでのレイヤー表示
152
+
153
+ - **レイヤータブ**: 複数選択トグルで特定レイヤーにフォーカス(Shift+クリックでソロモード)
154
+ - **凸包グループ**: 各レイヤーが色付きの境界で視覚的にグループ化
155
+ - **クロスレイヤーリンク**: レイヤー間接続を点線で表示(設定で切替可能)
156
+ - **Layer Cohesion スライダー**: レイヤー内ノードの凝集度を調整
157
+ - **差分ハイライト**: 変更を含むレイヤーの境界がハイライト
158
+
159
+ ## Web ビューア
160
+
161
+ インタラクティブな Web ビューアは3つの可視化モードを提供します:
162
+
163
+ ### グラフビュー(力学モデル)
164
+
165
+ ![グラフビュー](docs/screenshots/graph-view-dark.png)
166
+
167
+ - ドラッグ、ズーム、クリックでノードの依存関係を探索
168
+ - ノードをクリックでハイライトを**ピン固定** — 他のノードをホバーして比較
169
+ - 下部のピルでディレクトリごと、上部のタブでレイヤーごとにフィルタリング
170
+ - 重力、レイヤー凝集力、ノードサイズ、フォントサイズ、リンク透明度を調整可能
171
+ - **影響モード**: ファイルをクリックして推移的に影響を受ける全ファイルを表示
172
+
173
+ ![影響シミュレーション](docs/screenshots/impact-simulation.png)
174
+
175
+ #### レイヤーフォーカス
176
+
177
+ ![レイヤーフォーカス](docs/screenshots/layer-focus.png)
178
+
179
+ - レイヤータブを Shift+クリックで**ソロ表示**、他をクリックで追加
180
+ - 凸包でレイヤー境界を表示、破線でクロスレイヤーリンクを表示
181
+ - フィルタ時は物理演算が自動調整され、より明確な分離に
182
+
183
+ ### 階層ビュー(DAGレイアウト)
184
+
185
+ ![階層ビュー](docs/screenshots/hierarchy-view.png)
186
+
187
+ - 依存の深さを示すレイヤー型トップダウンレイアウト
188
+ - クリックでピン固定 + 詳細パネル
189
+ - レイヤー対応フィルタリング + コンパクト再配置
190
+
191
+ ### 差分ビュー
192
+
193
+ ![差分ビュー](docs/screenshots/diff-view.png)
194
+
195
+ - アーキテクチャ変更の色分け可視化
196
+ - 緑=追加、赤=削除、黄=変更、青=影響
197
+ - 変更を含むレイヤー境界のハイライト表示
198
+ - スナップショットが存在する場合に利用可能
199
+
200
+ ```bash
201
+ # ファイル変更の自動リロード付きで起動
202
+ archtracker serve --target src --port 3456 --watch
203
+ ```
204
+
205
+ ## MCP ツール
206
+
207
+ archtracker を MCP サーバーとして Claude Code や MCP 互換 AI エージェントに追加:
208
+
209
+ ```json
210
+ {
211
+ "mcpServers": {
212
+ "archtracker": {
213
+ "command": "npx",
214
+ "args": ["-y", "archtracker-mcp"]
215
+ }
216
+ }
217
+ }
218
+ ```
219
+
220
+ | ツール | 説明 |
221
+ |--------|------|
222
+ | `generate_map` | 依存関係グラフを解析し構造化JSONで返す(プログラム用) |
223
+ | `analyze_existing_architecture` | 包括的な人間向け分析レポート |
224
+ | `save_architecture_snapshot` | `.archtracker/snapshot.json` にスナップショットを保存 |
225
+ | `check_architecture_diff` | スナップショットと現在のコードを比較し影響を表示 |
226
+ | `get_current_context` | 有効なファイルパスとアーキテクチャサマリーを取得 |
227
+ | `search_architecture` | パス、影響範囲、重要度、孤立ファイルで検索 |
228
+
229
+ `.archtracker/layers.json` が存在する場合、全ツールがマルチレイヤーモードを自動検出します。
230
+
231
+ ## CLI コマンド
232
+
233
+ ```
234
+ archtracker init [options] 初期アーキテクチャスナップショットを生成
235
+ archtracker analyze [options] 包括的な分析レポート
236
+ archtracker check [options] スナップショットと現在のコードを比較
237
+ archtracker context [options] アーキテクチャコンテキストを表示(AIセッション用)
238
+ archtracker serve [options] インタラクティブ Web ビューアを起動
239
+ archtracker ci-setup [options] GitHub Actions ワークフローを生成
240
+ archtracker layers init テンプレート layers.json を作成
241
+ archtracker layers list 設定済みレイヤーを一覧表示
242
+
243
+ オプション:
244
+ -t, --target <dir> 対象ディレクトリ(デフォルト: "src")
245
+ -r, --root <dir> プロジェクトルート(デフォルト: ".")
246
+ -l, --language <lang> 対象言語(省略時は自動検出)
247
+ -p, --port <number> Web ビューアのポート(デフォルト: 3000)
248
+ -w, --watch ファイル変更の監視と自動リロード
249
+ -e, --exclude <pattern> 除外パターン(正規表現)
250
+ -n, --top <number> 分析の上位N件(デフォルト: 10)
251
+ --save 分析後にスナップショットを保存
252
+ --ci CIモード: 要確認ファイルがあれば exit 1
253
+ --json JSON形式で出力(context コマンド)
254
+ --lang <locale> 言語: en | ja(LANG から自動検出)
255
+ ```
256
+
257
+ > **マルチレイヤー**: `.archtracker/layers.json` が存在し `--target` が明示指定されていない場合、全コマンドが自動的にマルチレイヤー分析を使用します。`--root` でプロジェクトルートを指定してください。
258
+
259
+ ## Claude Code Skills
260
+
261
+ `skills/` ディレクトリをプロジェクトにコピー:
262
+
263
+ ```bash
264
+ cp -r node_modules/archtracker-mcp/skills/ .claude/skills/
265
+ ```
266
+
267
+ | スキル | 説明 |
268
+ |--------|------|
269
+ | `/arch-analyze` | 包括的なアーキテクチャ分析を実行 |
270
+ | `/arch-check` | スナップショットと現在のコードを比較 |
271
+ | `/arch-snapshot` | 現在のアーキテクチャスナップショットを保存 |
272
+ | `/arch-context` | 有効なファイルパスでAIセッションを初期化 |
273
+ | `/arch-search` | アーキテクチャ検索(パス、影響、重要度、孤立) |
274
+ | `/arch-serve` | インタラクティブ Web ビューアを起動 |
275
+
276
+ 全スキルがマルチレイヤープロジェクトに自動対応します。
277
+
278
+ ## プログラマティック API
279
+
280
+ ```typescript
281
+ import {
282
+ analyzeProject,
283
+ analyzeMultiLayer,
284
+ saveSnapshot,
285
+ loadSnapshot,
286
+ computeDiff,
287
+ formatDiffReport,
288
+ formatAnalysisReport,
289
+ } from "archtracker-mcp";
290
+
291
+ // 単一ディレクトリ分析
292
+ const graph = await analyzeProject("src", { exclude: ["__tests__"] });
293
+
294
+ // マルチレイヤー分析
295
+ const layers = [
296
+ { name: "Frontend", targetDir: "frontend/src", language: "javascript" },
297
+ { name: "Backend", targetDir: "backend/app", language: "python" },
298
+ ];
299
+ const multi = await analyzeMultiLayer(".", layers);
300
+
301
+ // スナップショット
302
+ const snapshot = await saveSnapshot(".", graph);
303
+
304
+ // 差分比較
305
+ const prev = await loadSnapshot(".");
306
+ if (prev) {
307
+ const diff = computeDiff(prev.graph, graph);
308
+ console.log(formatDiffReport(diff));
309
+ }
310
+ ```
311
+
312
+ ## CI / CD
313
+
314
+ ### GitHub Actions ワークフローの自動生成
315
+
316
+ ```bash
317
+ archtracker ci-setup --target src
318
+ # .github/workflows/arch-check.yml を生成
319
+ ```
320
+
321
+ ## 多言語対応
322
+
323
+ `LANG` / `LC_ALL` 環境変数から自動検出されます:
324
+
325
+ ```bash
326
+ LANG=ja_JP.UTF-8 archtracker analyze # 日本語出力
327
+ archtracker --lang ja check # 明示的に日本語指定
328
+ ```
329
+
330
+ Web ビューアでも設定パネルから言語を切り替え可能です。
331
+
332
+ ## 動作要件
333
+
334
+ - **Node.js** >= 18.0.0
335
+
336
+ 対応言語: JavaScript/TypeScript, Python, Rust, Go, Java, C/C++, C#, Ruby, PHP, Swift, Kotlin, Dart, Scala
337
+
338
+ ## コントリビュート
339
+
340
+ [CONTRIBUTING.md](CONTRIBUTING.md) をご覧ください。
341
+
342
+ ## ライセンス
343
+
344
+ [MIT](LICENSE) &copy; un907