CLAUDE.md の @ インポート記法:別ファイルを読み込ませる書き方と注意点
Claude Code の CLAUDE.md で使える @path 形式のインポート記法を解説します。相対パス・絶対パス・ホームディレクトリの指定、再帰的な読み込みの上限、コードブロック内での扱い、長い規約を分割する構成例を紹介します。
CLAUDE.md が長くなってきたとき、すべてを 1 ファイルに書き続けると読みにくく、コンテキストも圧迫します。Claude Code には、@ に続けてパスを書くとそのファイルの内容を取り込むインポート記法があります。
結論として、@docs/coding-style.md のように 1 行書けば、そのファイルが CLAUDE.md の一部として読み込まれます。
KEY POINT
この記事で分かること
- @ インポートの書き方とパスの指定方法
- 再帰読み込み、コードブロック内の扱いなどの仕様
- 長い規約を分割する構成例
基本の書き方
# プロジェクト概要
Next.js の管理画面。
## 規約
@docs/coding-style.md
## アーキテクチャ
@docs/architecture.md
@ の直後にパスを書きます。パスは CLAUDE.md からの相対パス、または絶対パスです。ホームディレクトリは @~/.claude/my-rules.md のように ~ で指定できます。
| 書き方 | 意味 |
|---|---|
@docs/style.md | CLAUDE.md と同じディレクトリを基準にした相対パス |
@/absolute/path/rules.md | 絶対パス |
@~/.claude/personal.md | ホームディレクトリ基準 |
用語解説
読み込みの確認: /memory コマンドで、CLAUDE.md とインポートされたファイルの一覧が表示されます。パスの間違いで読み込まれていない場合はここで分かります。
仕様上の注意
- 再帰: インポート先のファイルの中で
@を使うと、さらに読み込まれます。深さには上限があるため、2〜3 段までにしてください。 - コードブロック内は無視:
`@example.com`やコードブェンス内の@はインポートとして解釈されません。 - 存在しないパス: エラーにはならず、読み込まれないだけです。
/memoryで確認する習慣をつけてください。 - トークン消費: インポートした内容もセッションごとに送信されます。分割してもトークンは減りません。減らしたいなら、サブディレクトリの CLAUDE.md に移して「必要なときだけ読まれる」ようにします。
分割はトークン節約にはならない
インポートは「管理しやすくする」ための機能です。読み込まれる総量は変わりません。ディレクトリごとに必要な情報が異なるなら、packages/api/CLAUDE.md のように配置し、そのディレクトリの作業時だけ読まれるようにする方が効果があります。
構成例:規約を種類ごとに分ける
リポジトリ/
├── CLAUDE.md
└── docs/
└── ai/
├── commands.md # ビルド・テスト・lint のコマンド
├── conventions.md # コーディング規約
└── forbidden.md # 変更禁止の場所
# CLAUDE.md
@docs/ai/commands.md
@docs/ai/conventions.md
@docs/ai/forbidden.md
## 作業の進め方
- 3 ファイル以上の変更は方針を先に提示する
規約の担当者が分かれている場合や、Codex の AGENTS.md と共通化したい場合に、この構成が役立ちます。AGENTS.md を原本にして @AGENTS.md の 1 行だけで CLAUDE.md を構成する方法は CLAUDE.md・AGENTS.md・GEMINI.md の共通化 を参照してください。
個人用ファイルの取り込み
自分だけのルールをプロジェクトの CLAUDE.md に入れたくない場合は、CLAUDE.local.md を使います(CLAUDE.local.md の使い方)。インポートで @~/.claude/personal.md を CLAUDE.md に書く方法もありますが、その行自体が Git にコミットされてしまうため、個人用には CLAUDE.local.md の方が向いています。
関連する記事
CLAUDE.md 全体の書き方と 3 階層の考え方は、親記事の CLAUDE.md の書き方 を参照してください。
まとめ
@docs/style.mdのように書くと、そのファイルが CLAUDE.md に取り込まれる- 相対パス・絶対パス・
~が使え、コードブロック内の@は無視される - 読み込みは
/memoryで確認する。存在しないパスはエラーにならない - 分割はトークン節約にならない。節約したいならサブディレクトリの CLAUDE.md に移す
よくある質問
- インポートしたファイルの中でさらに @ を使えますか?
- 使えます。ただし再帰の深さには上限があるため、深い入れ子は避けてください。
- コードブロックの中に書いた @ もインポートされますか?
- コードブロックやインラインコードの中の @ はインポートとして扱われません。メールアドレスなどの @ を誤検出しないための仕様です。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。