7月2日、Collabnixが「Claude Code Memory: How to Use CLAUDE.md, Custom Slash Commands and Skills」と題した記事を公開した。この記事では、Claude CodeにおけるCLAUDE.md・メモリシステム・カスタムスラッシュコマンドの実践的な使い方について詳しく紹介されている。
Claude Codeを使い込んでいると、「セッションをまたぐとプロジェクトの文脈が毎回リセットされる」という問題にぶつかる。CLAUDE.mdとカスタムスラッシュコマンドはその解決策だ。この記事では、プロジェクトに永続的なコンテキストを持たせる具体的な設定方法を解説している。なお、同種のコンテキスト管理の仕組みとしてはCursorのルールファイル(.cursorrules)が広く知られているが、Claude Codeは複数スコープのCLAUDE.mdとスラッシュコマンドを組み合わせる点に独自性がある。
CLAUDE.md ── セッションをまたぐ「記憶」を与える
CLAUDE.mdは、Claudeがセッション開始時に必ず読み込むMarkdownファイルだ。プロジェクト専用のシステムプロンプトとして機能する。まず自動生成から始められる:
cd my-project
claude
> /init
# Claudeがコードベースを読み取り、CLAUDE.mdを自動生成する
記事では本番品質のテンプレートも公開されている。ポイントは「Claudeに判断させたいことを全部書く」という姿勢だ:
# CLAUDE.md
## Project: E-Commerce API
Node.js 20 + Express + PostgreSQL + TypeScript
## Architecture
- src/routes/ → API route handlers
- src/services/ → Business logic
- src/models/ → Prisma DB models
- src/middleware/ → Auth, rate limiting, error handling
- tests/ → Jest unit and integration tests
## Coding Standards
- Use TypeScript strict mode always
- Named exports only (no default exports)
- Use Zod for all request validation
- Use Result pattern for error handling (never throw)
- Every new function needs a JSDoc comment
- Every new file needs a corresponding test file
## Git
- Branch naming: feat/, fix/, chore/, docs/
- Commit format: conventional commits (feat: add user endpoint)
- Never commit directly to main
アーキテクチャ構成、コーディング規約、テスト方針、Gitルールまで一か所にまとめることで、Claudeが毎回同じ前提でコードを書くようになる。
4階層のメモリシステム
Claude Codeのメモリは4つのスコープに分かれており、より内側(プロジェクト固有)のファイルほど優先度が高く、外側(グローバル)のファイルを上書きする形で読み込まれる:
| 優先度 | ファイルパス | スコープの説明 |
|---|---|---|
| 低(ベース) | ~/.claude/CLAUDE.md |
全プロジェクト共通・個人設定 |
| ↓ | ./CLAUDE.md |
プロジェクトルート全体に適用 |
| ↓ | ./src/CLAUDE.md |
特定サブディレクトリにのみ適用 |
| 高(最優先) | ./.claude/CLAUDE.md |
プロジェクト代替パス(ルートと同等) |
つまり読み込み時はグローバル→プロジェクト→サブディレクトリの順に積み重なり、競合する設定がある場合は内側のファイルが勝つ。グローバルの~/.claude/CLAUDE.mdには、個人的な作業スタイルを書くのが実用的だ:
# My name is Alex. I prefer concise explanations.
# Always use pnpm, never npm or yarn.
# I work in TypeScript. Prefer functional patterns over OOP.
記事ではセッション中に記憶を追加するコマンドとして以下も紹介されている:
> /memory add "We decided to use Redis for session storage, not JWT"
> /memory # 現在のメモリ一覧を確認
※編集部の考察:/memory addコマンドはClaude Codeの公式ドキュメントでは現時点で明示的に確認できない。元記事がこの構文を実在するものとして紹介しているため本稿でも記載するが、バージョンによっては動作しない可能性がある。試して動作しない場合は、CLAUDE.mdへ直接記述する方法で代替するとよい。
カスタムスラッシュコマンド(スキル)── 再利用できるプロンプトテンプレート
この記事で最も即効性が高いのがこの機能だ。**.claude/commands/以下にMarkdownファイルを置くだけ**でカスタムコマンドが作れる。コマンド名はファイル名がそのまま使われる。
mkdir -p .claude/commands
ls .claude/commands/
# code-review.md
# new-feature.md
# security-audit.md
# release-notes.md
たとえばcode-review.mdはこう書く:
Review the staged git changes (`git diff --staged`) for:
1. **Bugs** - logic errors, null pointer risks, off-by-one errors
2. **Security** - injection risks, unvalidated input, exposed secrets
3. **Performance** - unnecessary loops, missing indexes, N+1 queries
4. **Code quality** - naming, duplication, complexity
5. **Test coverage** - are new functions tested?
Format your output as:
## Summary
## Issues Found
- [CRITICAL] description
- [WARNING] description
- [SUGGESTION] description
## Verdict
APPROVE / REQUEST CHANGES
セッション内でこう呼び出す:
> /project:code-review
> /project:new-feature "user profile picture upload with S3"
> /project:security-audit
$ARGUMENTSという変数を使えばコマンドに引数を渡せる。new-feature.mdのテンプレートに$ARGUMENTSを埋め込んでおくと、/project:new-feature "〇〇" の形で機能仕様を渡せる仕組みだ。
~/.claude/commands/に置けばグローバルコマンドになり、全プロジェクトで/user:コマンド名として使える。PRの説明文生成(pr-desc.md)やコード解説(explain.md)など、プロジェクトをまたいで使いたいテンプレートに向いている。
新規プロジェクト用セットアップスクリプト
記事の末尾では、CLAUDE.mdと基本コマンドをまとめて生成するシェルスクリプトも公開されている。スクリプトはプロジェクト名と技術スタックを引数に取り、プロジェクト概要・アーキテクチャ構成・コーディング規約・Gitルールを含むCLAUDE.mdと、code-review・new-feature・security-audit・release-notesの4つのコマンドファイルを.claude/commands/以下に自動生成する:
chmod +x setup-claude.sh
./setup-claude.sh "My API" "Node.js TypeScript PostgreSQL"
# → CLAUDE.md と .claude/commands/ を自動生成
スクリプト実行後にclaudeを起動して/initを走らせると、Claudeがコードベースを読んでCLAUDE.mdをさらに洗練させてくれる、という流れになっている。生成直後のファイルはあくまで汎用テンプレートなので、プロジェクト固有の規約や意思決定はこの段階で追記しておくのが実用上の勘どころだ。
CLAUDE.mdにプロジェクト規約を書き込み、よく使うレビューや機能追加のフローをスラッシュコマンド化しておけば、セッション開始直後から文脈共有のやり取りを省ける。チームで同じリポジトリを使う場合は、CLAUDE.mdと.claude/commands/をGit管理対象に含めると全員が同じ設定を共有できる。Claude Code全体の概要については公式ドキュメントも合わせて参照するとよい。
詳細はClaude Code Memory: How to Use CLAUDE.md, Custom Slash Commands and Skillsを参照していただきたい。