概要
「このファイルをimportしているファイルは?」という逆方向の依存検索を追加する。
背景・課題
anvildev + commandindexdev の8パターン性能検証で、CommandIndexが提供する情報にLLMが実装に必要とする情報が含まれていないという根本的な問題が判明した。
具体例: Issue #301(iPad横置きターミナルフルスクリーン)
LLMが実装に必要とした情報:
useFullscreen.ts の使用例 → MarkdownEditor.tsx が既にフルスクリーンを実装している
useSwipeGesture.ts の使用例 → 同上
CommandIndex related TerminalDisplay.tsx が提供した情報:
- TerminalSearchBar, useTerminalSearch, useTerminalScroll, sanitize(全て既存import先)
- useFullscreen, MarkdownEditor は提供されなかった(TerminalDisplayからのimport関係がないため)
原因
related / context / impact は全て順方向の依存グラフ(「このファイルが何をimportしているか」)のみを辿る。逆方向(「このファイルを誰がimportしているか」)は検索できない。
逆方向があれば解決できた
# もし逆依存検索があれば:
commandindexdev search --importers src/hooks/useFullscreen.ts
# → MarkdownEditor.tsx が即座に見つかる
# → 「MarkdownEditorがフルスクリーンをどう実装しているか」という参考実装に到達
全テストパターンでLLMが自力で辿ったパス(useFullscreen → MarkdownEditor)を、CommandIndexが直接提供できるようになる。
提案
commandindexdev search --importers src/hooks/useFullscreen.ts --format json
期待される出力:
{"path": "src/components/worktree/MarkdownEditor.tsx", "import_line": "import { useFullscreen } from '@/hooks/useFullscreen';"}
{"path": "tests/unit/hooks/useFullscreen.test.ts", "import_line": "import { useFullscreen } from '@/hooks/useFullscreen';"}
実装方針
既存のインデックスにはimportグラフの情報が含まれている。これを逆引きするだけで実装可能(新たな解析は不要)。
オプション案
--importers <FILE>: 指定ファイルをimportしているファイル一覧
--used-by <SYMBOL>: 指定シンボルを使用しているファイル一覧(より細かい粒度)
--format json|path|compact: 出力フォーマット
--limit N: 結果件数制限
期待効果
- LLMが「参考実装」に到達するための情報を直接提供できる
- 既存のrelated/context/impactでは到達不可能だった「パターン類似ファイル」の発見が可能になる
優先度
高(実装難度: 低、期待効果: 高)
概要
「このファイルをimportしているファイルは?」という逆方向の依存検索を追加する。
背景・課題
anvildev + commandindexdev の8パターン性能検証で、CommandIndexが提供する情報にLLMが実装に必要とする情報が含まれていないという根本的な問題が判明した。
具体例: Issue #301(iPad横置きターミナルフルスクリーン)
LLMが実装に必要とした情報:
useFullscreen.tsの使用例 → MarkdownEditor.tsx が既にフルスクリーンを実装しているuseSwipeGesture.tsの使用例 → 同上CommandIndex
related TerminalDisplay.tsxが提供した情報:原因
related/context/impactは全て順方向の依存グラフ(「このファイルが何をimportしているか」)のみを辿る。逆方向(「このファイルを誰がimportしているか」)は検索できない。逆方向があれば解決できた
全テストパターンでLLMが自力で辿ったパス(useFullscreen → MarkdownEditor)を、CommandIndexが直接提供できるようになる。
提案
期待される出力:
{"path": "src/components/worktree/MarkdownEditor.tsx", "import_line": "import { useFullscreen } from '@/hooks/useFullscreen';"} {"path": "tests/unit/hooks/useFullscreen.test.ts", "import_line": "import { useFullscreen } from '@/hooks/useFullscreen';"}実装方針
既存のインデックスにはimportグラフの情報が含まれている。これを逆引きするだけで実装可能(新たな解析は不要)。
オプション案
--importers <FILE>: 指定ファイルをimportしているファイル一覧--used-by <SYMBOL>: 指定シンボルを使用しているファイル一覧(より細かい粒度)--format json|path|compact: 出力フォーマット--limit N: 結果件数制限期待効果
優先度
高(実装難度: 低、期待効果: 高)