AIのRulesを検索するTUIツールを作った
社内のAIルールって絶対組織全体で共有した方がいいけど、どうやって共有、管理するのがベストなの?ってずっと思ってるkazu-gorです。
同じリポジトリであればすぐに見つけることはできるけど、他のプロジェクトが具体的にどんなルールを設定してるのかは、組織で仕組みを作るもしくは自分で見に行かない限りは知り得ないよなーと。
なのでそういった設定ファイルやらルールファイルやらを効率的に検索・閲覧するツールを作ってみようと思ってrules-explorerというTUIを作ってみた。
なんでTUIツール?
課題解決の為にTUIツール使うみたいな前段だったけど、本音はTUIツールが好きで自分でも作ってみたかったから。
その後に丁度いい題材あるじゃんって思って実装した。
このツール is 何
rules-explorerは、ローカルのCursor rulesやClaude設定ファイル検索して、プレビュー・編集できるツール。
対象ファイル
カレントディレクトリ配下を探索して、下記条件でパターンマッチしたファイルをUIに表示する。
- Cursor
.cursor/rules/*.mdc
- Claude:
CLAUDE.md
.claude/*
このツールで何ができる
🔍 検索
ファイルパスと内容の両方を同時に検索し、入力に応じて結果をフィルタリングする。
👀 ライブプレビュー
選択したファイルの内容をプレビューで表示し、ファイルを開かずに内容を確認できる。
⌨️ 操作(キーマッピング)
キーマップにはうるさいので、ないと癇癪おこすマップは全部詰め込んだ。
キー | 動作 |
---|---|
Tab | 検索フィールドとファイルリスト間の移動 |
↑ / ↓ | ファイル一覧の移動 |
Ctrl+P / Ctrl+N | ファイル一覧の移動 |
e | 選択ファイルの編集 |
Ctrl+C / Escape | アプリケーション終了 |
使用技術
- Go 1.24.4+
TUIライブラリ
下記2つ完結で、UIとキーマップ、テーマ周りはサクッと実装できた。便利。
プロジェクト構造
実装はVibeなので具体知りたい人はコード読んでください。
rules-explorer/
├── cmd/rules-explorer/main.go # エントリーポイント
├── internal/
│ ├── app/ # アプリケーション層
│ │ ├── app.go # メインアプリケーション
│ │ └── config.go # 設定管理
│ ├── core/ # コア層
│ │ ├── types/types.go # 型定義とインターフェース
│ │ └── search/filter.go # 検索フィルター実装
│ ├── file/explorer.go # ファイル操作
│ └── ui/ # UI層
│ ├── components/ # UIコンポーネント
│ ├── layout/layout.go # レイアウト管理
│ └── theme/ # テーマシステム
└── go.mod
デモ
やってみた感想
こんなサクッと作れると思ったのでVibe完結で形にはできてよかった。
検索の要件は満たされているが、使っていて感じる課題も結構ある。
まずローカルに落とさないと検索できないのは致命的。cloneするなら普通にRules見た方がカロリー低いでしょ。
あと、ディレクトリの階層にした方が見やすくなりそう。複数のリポジトリを跨ぐように検索をかけると、パフォーマンス下がりまくるし、ディレクトリが階層化されてないのでとてもみづらい。
これはすぐ直せると思うが。
最後に、欲を言えば検索を自然言語でしたい。 ファイル名と内容の検索である程度ヒットはするが、より具体のニュアンスを検索に反映させたい。
気が乗れば改善します