TL;DR: Claude Code に rg, fd, jq 等のインストール済みコマンドをユーザールール(~/.claude/rules/)で教えると、grep より rg、find より fd を自動で選ぶようになって作業効率が上がる。プロンプト一発で棚卸しできる。
背景
Claude Code は grep, find, cat といった基本的なUNIXコマンドは知っていますが、自分のマシンに rg(ripgrep)や fd がインストールされているかは知りません。
結果として、せっかく高速なツールが入っているのに毎回 grep を使ったり、which rg で存在確認してから使ったりと、ちょっともったいないことになります。
ルールファイルに「このマシンにはこれが入ってるよ」と教えておけば、セッション開始直後から最適なコマンドを選んでくれるようになります。
プロンプト一発で棚卸しする
Claude Code にこのプロンプトを投げるだけで、コマンドの調査からルールファイル生成まで一気にやってくれます。
このマシンで利用できるエージェント操作で特に有用なUNIXコマンド(rg, jq, fd, yq 等)を調査して。
1. エージェント操作に有用だが未インストールのものは優先度別に分類し、AskUserQuestion でインストールするかインストールコマンドを表示するかユーザーに聞いて
2. インストールが必要なコマンドは、ユーザーがインストールしたら続行するようにして
3. 再度インストール済の調査を行ない、インストール済みコマンドの一覧と推奨代替コマンド対応表(grep→rg 等)を ~/.claude/rules/unix-commands.md に簡潔に記述して保存して
ポイントをいくつか:
- 具体例を挙げる(
rg, jq, fd, yq)ことで、「この方向性のツール」と Claude Code が理解しやすくなる - ステップを分けることで、未インストールのものを勝手に入れられず、ユーザーが選んでからインストールできる
- 推奨代替コマンド対応表を指示することで、
grep→rgのような置き換えルールが自動生成される ~/.claude/rules/に保存を指示することで、次回以降のセッションでも自動的に適用される
もっとカジュアルにやりたいなら、これだけでも同様の流れになります:
https://php-tips.com/2026/03/30/claude-code-unix-commands-rules/
の記事を元にUNIXコマンドの棚卸しをして
なぜユーザールール(~/.claude/rules/)なのか
UNIXコマンドはマシンの環境に依存するもので、プロジェクトごとに変わるものではないですよね。ユーザールール(~/.claude/rules/)に置けば全プロジェクトで共通適用されますし、チームメンバーの環境が異なってもリポジトリには影響しません。
逆に、プロジェクト固有のツール(例えば php artisan や cake コマンド)はプロジェクトルール(.claude/rules/)に書く方が適切です。
生成されるルールファイルの例
実際に生成される ~/.claude/rules/unix-commands.md はこんな感じになります(抜粋):
# Unix Commands for Agent Operations
## Installed Commands
### Search & Explore
| Command | Path | Purpose |
|---------|-----------------------|----------------------------|
| `rg` | `/opt/homebrew/bin/rg` | Fast text search (ripgrep) |
| `fd` | `/opt/homebrew/bin/fd` | Fast file finder |
| `tree` | `/opt/homebrew/bin/tree` | Directory tree display |
### Data Processing
| Command | Path | Purpose |
|-----------|---------------------------|------------------------|
| `jq` | `/opt/homebrew/bin/jq` | JSON processor |
| `yq` | `/opt/homebrew/bin/yq` | YAML/XML processor |
| `gron` | `/opt/homebrew/bin/gron` | Make JSON greppable |
| `sqlite3` | `/usr/bin/sqlite3` | SQLite database operations |
特に効果が大きいのが「推奨代替コマンド」セクションです:
## Recommended Alternatives
| Standard | Preferred | Why |
|----------|-----------|--------------------------------------------------|
| `grep` | `rg` | Faster, recursive by default, respects .gitignore |
| `find` | `fd` | Intuitive syntax, faster, respects .gitignore |
| `sed` | `sd` | Literal regex, intuitive syntax |
| `cat` | `bat` | Syntax highlighting, line numbers |
| `curl` | `xh` | Concise syntax, colorized JSON output |
| `du` | `dust` | Visual disk usage display |
この「Recommended Alternatives」セクションがあることで、Claude Code が自動的にモダンなコマンドを優先して使うようになります。「grep → rg」と明示されていれば、もう grep を使うことはなくなりますね。
もうひとつ地味に大きいメリットとして、コマンドラインがすっきりして間違えにくくなるという点があります。たとえば sed の置換は sed -i '' 's/old/new/g' file のようにクォートやフラグが複雑ですが、sd なら sd 'old' 'new' file で済みます。find の -name や -exec を組み合わせる呪文も、fd なら直感的な構文で書けます。Claude Code が生成するコマンドのミスが減るので、手戻りも少なくなるかもしれません。
生成されたルールは約800トークン分ぐらいのサイズでした。トークン消費が気になる場合は、 simplify でコンパクトにするとよいでしょう。
/simplify ~/.claude/rules/unix-commands.md
私の場合、250トークンぐらいになりました。
余談
私もプロンプトで流しましたが、全く知らないツールコマンドもいっぱいでてきました。
ast-grep はコードの構文木を解析して検索・置換できるツールで、単純なテキスト検索よりも安全にリファクタリングできそうです。
gron は JSON を grep しやすいフラットな形式に変換してくれるツールで、jq とはまた違ったアプローチで便利です。
こういうのも教えてもらえるのはありがたいですね。