Claude Codeで複数のフォルダを横断して作業したい人向け
本体プロジェクトと参照用の素材集(画像・動画・ドキュメント等)が別フォルダに分かれている場面、または複数のリポジトリ(プロジェクト一式の保存箱)を並列に見せたい場面で、起動コマンドの後ろにくっつけて両方を作業範囲に入れる。
Claude Codeを起動する場所は1つのフォルダだけど、そのフォルダの外にある素材も一緒に見せたい。たとえば料理ブログのリポジトリで作業していて、写真は別フォルダに置いてある、みたいな状況です。--add-dir はこの「別フォルダも一緒に見せる」を起動時に指示する追加スイッチです。
普通に claude と叩くと、起動した場所のフォルダ1個しかClaudeは触れません。これだと外の素材を読みに行けない。--add-dir を後ろにつけると、その指定したフォルダもまとめて読み書き対象に入ってくれます。
噛み砕くと
新しい職場の初日に「あなたの机はここ。隣の部屋の資料棚も使っていいよ」と言われる感じです。机(=起動フォルダ)が主戦場で、資料棚(=追加フォルダ)は読み書きに使える参照先という関係。
資料棚を追加で開放する宣言を、入社初日(=起動時)にやるのが --add-dir。仕事を始めたあとから「やっぱりこの棚も使わせて」と追加するのが、別物の /add-dir です。
起動時に1回だけ宣言する。あとから足したいなら別の手段
これは起動の瞬間に効く指定です。claude を打つときに後ろにくっつけて、そのセッションの間ずっと有効。途中で気が変わって外したり、別のフォルダに差し替えたりはできません。
起動後にフォルダを足したくなった場合は、Claudeとの会話画面で /add-dir という別物のスラッシュコマンドを叩きます。混同しがちなので注意。
「料理ブログ本体と画像素材集を一緒に見せる」を例に、実際の手順を見る
状況: 料理ブログのプロジェクトが ~/projects/cooking-blog にあって、レシピ写真は別の場所 ~/Pictures/recipe-photos にためてある。Claudeに記事を書かせるとき、文章を書きながら「写真は何があるか」を参照させたい。
ステップ1: 普通に起動して、何が読めるか確認する
まず --add-dir なしで起動すると、何が起きるか見てみます。
$ cd ~/projects/cooking-blog
$ claude
会話画面に入ったら「~/Pictures/recipe-photos の中身を一覧して」と頼んでみます。Claudeは「許可されていないフォルダなので読めない」と返します。当然です、起動した場所はあくまで cooking-blog 配下だけだから。
ステップ2: 一度終了して、--add-dir つきで起動し直す
会話画面で Ctrl+C や /exit で抜けます。今度は写真フォルダも一緒に開放した状態で立ち上げ直す。
$ claude --add-dir ~/Pictures/recipe-photos
これで起動フォルダ(~/projects/cooking-blog)と追加フォルダ(~/Pictures/recipe-photos)の両方がClaudeの作業範囲に入りました。
ステップ3: 追加したフォルダの中身を見せてもらう
同じ質問を投げます。
> ~/Pictures/recipe-photos の中身を一覧して
今度は tomato-pasta-01.jpg、cream-stew-stepbystep.jpg みたいな実ファイル名がずらっと返ってきます。Claudeがそのフォルダを読めるようになった証拠です。
ステップ4: 本体側のファイルを書きながら、写真フォルダを参照させる
ここが本番。レシピ記事の下書きを書きつつ、写真フォルダのファイル名を本文中に差し込む流れ。
> recipes/tomato-pasta.md を新規作成して。
本文には ~/Pictures/recipe-photos の中から
トマトパスタっぽい写真ファイル名を3枚分、
Markdownの画像リンクで埋め込んで
Claudeは追加フォルダ側の中身を見て、「tomato-pasta-01.jpg」みたいな実在するファイル名を本体側のMarkdownに書き込んでくれます。ここで重要なのは、Claudeが追加フォルダを「読めた」だけじゃなく、本体側のファイルに「書き込めた」という両方の動作が成立していることです。
ステップ5: 複数のフォルダを一度に追加する
素材集が画像と動画で別フォルダに分かれてるみたいな場合、同じ書き方で複数並べられます。書き方は2通りあって、どちらでも同じ結果になります。
# 書き方A: --add-dir を繰り返す
$ claude --add-dir ~/Pictures/recipe-photos --add-dir ~/Movies/recipe-videos
# 書き方B: --add-dir のあとに半角スペースで並べる
$ claude --add-dir ~/Pictures/recipe-photos ~/Movies/recipe-videos
公式ドキュメントの例は書き方Bで紹介されています(claude --add-dir ../apps ../lib)。私は書き方Aの「フォルダごとに --add-dir を繰り返す」のほうが、あとからシェルの履歴を見返したときに「どこを追加したか」がパッと分かるので好みです。ここで初心者がやりがちな勘違い: Bの書き方で「--add-dir A B C」と書くとAだけ追加されると思いがちですが、ちゃんとB・Cも追加されます。
ステップ6: セッションを終了して再開すると、追加フォルダ指定は消える
会話を /exit で抜けて、あとから claude -c(直前の会話を再開)で戻ると、追加フォルダの指定は引き継がれません。「あれ、さっき写真フォルダ見えてたのに」となりがちなポイント。再開するときも毎回 --add-dir を書き足す必要があります。
# これは起動フォルダしか開放されていない状態で再開する
$ claude -c
# 写真フォルダも引き継ぎたいなら、自分で書き直す
$ claude -c --add-dir ~/Pictures/recipe-photos
毎回書き直すのが面倒なら、設定ファイル .claude/settings.json の additionalDirectories に書いておくと、--add-dir を書かなくても常時開放されます。プロジェクトで固定の参照先がある場合はこっちのほうが楽です。
つまり --add-dir は何をしてくれるのか
- やってくれる: 起動フォルダの外にある別フォルダを、そのセッションの読み書き対象に追加する。複数指定もOK
- やってくれない: これは起動の瞬間に1回だけ効く指定なので、あとから途中で外す・差し替えるはできない(その場合は
/exitして起動し直す) - 意味が薄い場面: 単一フォルダで完結するプロジェクト。たとえば1つのリポジトリの中で全部の作業が閉じている場合、追加フォルダはむしろ邪魔(後述の落とし穴参照)
使いどころ3シナリオ
シナリオ1: 本体プロジェクトと参照用の素材集が別フォルダ
料理ブログ・写真集・デザイン制作などで、文章や設定ファイルは ~/projects/blog に、画像や動画素材は ~/Pictures/blog-assets に分けているケース。本体側で記事を書くときに、素材フォルダのファイル名を参照させたい場面で claude --add-dir ~/Pictures/blog-assets として起動します。素材を全部本体リポジトリに突っ込まずに済むので、本体側がスッキリ保てます。
シナリオ2: 複数のリポジトリを並べて作業したい
家計簿アプリの開発で、フロントエンド側 ~/work/budget-frontend、サーバー側 ~/work/budget-backend、共有のデザインドキュメント ~/work/budget-docs が3つの別リポジトリに分かれているとします。フロントエンド側で起動して、両方を一気に見せながら「サーバーのAPI仕様書(~/work/budget-docs/api.md)を見て、フロント側のコードに合わせて」と頼める。3つを1つにまとめるリファクタリングをするときも、--add-dir で並べて見せれば矛盾が見つけやすくなります。
シナリオ3: ドキュメント集と実装コードが別フォルダで管理されている
OSSをcloneしてきた直後で、本体は ~/oss/awesome-tool、関連ドキュメントの一部が別リポジトリ ~/oss/awesome-tool-docs に分かれている、みたいな構成。実装を読み解きながらドキュメントを書き足していくときに claude --add-dir ~/oss/awesome-tool-docs で両方見せる。Claudeに「実装の挙動とドキュメントの記述がズレてる箇所を出して」と聞いて、両方比較してもらうのに便利です。
初心者が踏みやすい落とし穴
- 絶対指定で書くのを習慣にする。
~はホームフォルダに展開されるのでOKだけど、../somethingみたいな相対指定は、今いる場所が変わると違うフォルダを指してしまいます。事故のもと - 追加したフォルダはClaudeの「書き込み先」にも入る。読むだけのつもりでも、Claudeが
recipe-photos/edited.jpgを上書きする可能性があります。大事な写真フォルダや本番データを--add-dirで足すなら、その前にバックアップを取るか、許可モード(permission mode)をplanやdefaultにして、編集前に確認が入るようにしておく - セッションを再開(
claude -c、claude -r)すると追加指定は引き継がれない。再開コマンドにも--add-dirを書き足し直すか、最初から.claude/settings.jsonのadditionalDirectoriesに書いて永続化しておく - 追加フォルダの中の
.claude/設定はほとんど読まれない。覚え書きファイルのCLAUDE.md、サブエージェント、コマンド類は追加フォルダ側からは無視されます。例外はSkills(.claude/skills/)だけ。「追加フォルダのCLAUDE.mdも読んでほしい」場合は、起動時に環境変数CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1を立てる必要があります - フォルダ名にスペースが入っているとき、引用符を忘れない。Macで「Recipe Photos」みたいに半角スペース入りのフォルダ名は
--add-dir "~/Pictures/Recipe Photos"のようにダブルクオートで囲む。囲まないと、シェルが「Recipe」と「Photos」を別物として読んでしまってエラーになります - 存在しないフォルダを書くと起動時にエラーで止まる。
--add-dirは指定パスがフォルダとして存在するかチェックしてから起動します。タイポしたまま走らせて気づかない、ということは起きないので親切設計 - 「ちょっと見せたいだけ」なら
/add-dirのほうが早い。すでに会話を始めていて、わざわざ抜けて起動し直すのが面倒な場面では、会話画面で/add-dir <フォルダ>と打てば同じことができます。--add-dirは最初から見せるフォルダが決まっている時、/add-dirは途中で必要になった時、と使い分けるのがいい
書き方
claude --add-dir <追加したいフォルダの居場所> [<追加したいフォルダ2> ...]
やってみるとこうなる
入力
claude --add-dir ~/Pictures/recipe-photos
出力例
Welcome to Claude Code
cwd: /Users/ayano/projects/cooking-blog
additional directories:
- /Users/ayano/Pictures/recipe-photos
> ~/Pictures/recipe-photos の中身を一覧して
(Claudeが追加フォルダの中身を読んでファイル名を返す)
tomato-pasta-01.jpg
cream-stew-stepbystep.jpg
... など
このページに出てきた言葉
- 起動フォルダ
- <code>claude</code> コマンドを叩いたときに、自分が今いるフォルダ。Claudeはここを「家」だと思って動く
- セッション
- Claudeとの1回の会話のかたまり。<code>claude</code> で始めて、終了するまでの一連のやり取り
- スラッシュコマンド
- Claudeとの会話画面で <code>/</code> から始める特殊なコマンド。<code>/add-dir</code> のように打つと命令として解釈される
- ~(チルダ)
- 自分のホームフォルダを表す省略記号。<code>~/Pictures</code> は「ホームフォルダの中のPicturesフォルダ」を指す
- 絶対指定/相対指定
- 絶対指定は <code>/Users/ayano/Pictures</code> のような完全な居場所。相対指定は <code>../sister-project</code> のような今いる場所からの位置
- シェル
- ターミナル(黒い画面)の中で、自分が打ったコマンドを受け取って実行してくれるプログラム
- 許可モード(permission mode)
- Claudeにファイル編集をどこまで自動で許すかの設定。<code>default</code>(毎回確認)/<code>acceptEdits</code>(自動でOK)/<code>plan</code>(実行せず計画だけ)など
- 環境変数
- パソコンが起動時に覚えてる設定値。<code>CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1</code> のようにキーと値で書く
- リポジトリ
- プロジェクトのファイル一式と変更履歴をまとめて保存する箱(GitHub上で見えるあれ)
- clone(クローン)
- GitHubのリポジトリ(プロジェクト一式)を、自分のパソコンにコピーしてくる操作