Promptshelf
CLAUDE.md Playground
Interactive
CLAUDE.md Playground · visualize scope inheritance

See exactly what Claude reads at session start.

Paste your CLAUDE.md across all four scopes. Toggle each on or off. See the concatenated context Claude Code actually loads, walk the subdirectory lazy-loading tree, resolve @-imports up to 5 hops. Everything runs in your browser — no signup, no upload, free. Compound tool for the CLAUDE.md guide.

Tool 01 · Scope Stack

Toggle the 4 scopes. See the merged context.

Claude Code concatenates discovered CLAUDE.md files into context at session start — it doesn't pick one. When rules conflict, your last-read scope wins (by convention).

Concatenated context

0 chars
Toggle a scope on and start typing to see what Claude Code would concatenate into its context window.
Tool 02 · Subdirectory Walker

Click a file. See which CLAUDE.md files load.

Subdirectory CLAUDE.md files are lazy-loaded — Claude only concatenates them when it actually reads files inside that directory. Click a file in the tree to see the walk.

Click a file in the tree

Walk-up rule: Claude concatenates every CLAUDE.md and CLAUDE.local.md from the file's directory upward to repo root. Plus any always-loaded scopes (Project root, User, Managed). Subdirectory files don't load until Claude reads inside them.
Tool 03 · @-Import Resolver

Paste a CLAUDE.md with imports. See it resolved.

Use @path/to/file.md to import another file's contents. Relative paths resolve against the importing file, not the working directory. Recursion stops after 5 hops.

Input · main CLAUDE.md

@path/to/file.md
Simulated file fixtures (editable in browser)
Depth 0 · 0 imports resolved

Resolved context

0 chars
Paste a CLAUDE.md with @ imports to see how Claude Code would expand it at session start.
How it works

Three things the playground teaches.

Signal 01

Claude reads all scopes, not one

Managed, Project, User, Local — each loaded scope gets concatenated into the context window. Nothing is overridden. When two files say opposite things, Claude arbitrates in the moment.

Signal 02

Subdirectory CLAUDE.md is lazy

A /src/auth/CLAUDE.md only loads when Claude reads files inside /src/auth. Not at session start. Plan your nested files around what Claude touches, not what exists.

Signal 03

@-imports expand up to 5 hops

Imports resolve relative to the importing file. Recursion is bounded — if your import graph has cycles or nests deeper than 5, only part of your content ever reaches Claude's context.

Questions

Frequently asked

Does the playground ship my CLAUDE.md anywhere?

No. Everything runs locally in your browser. There is no backend, no analytics call, no upload. You can pull the page offline and it keeps working.

Are the scope paths the actual defaults Claude Code uses?

Yes. Enterprise managed path is platform-specific (/Library/Application Support/ClaudeCode/CLAUDE.md on macOS, /etc/claude-code/CLAUDE.md on Linux/WSL, C:\Program Files\ClaudeCode\CLAUDE.md on Windows). Project CLAUDE.md can live at the repo root or inside ./.claude/. User scope is ~/.claude/CLAUDE.md. CLAUDE.local.md is gitignored by convention and appends after project CLAUDE.md at the same directory level.

What does the /init command do?

It generates a starter ./CLAUDE.md at your repo root by analyzing your codebase. If one already exists, it suggests improvements rather than overwriting. You can run it any time; the playground is a faster way to iterate on the contents than re-running /init.

Why does Claude pick one rule over another when they conflict?

The documented behavior is "Claude may pick arbitrarily" on conflicts. In practice, later-read content tends to win (recency bias of language models), which is why Anthropic's docs note that CLAUDE.local.md is appended last at each directory level — it's where your personal overrides live. The safer fix: don't write conflicting rules across scopes in the first place.

Can I use the playground for Copilot's .github/copilot-instructions.md or Cursor rules?

Not yet — the scope model is Claude-specific. Copilot's equivalent is a single .github/copilot-instructions.md plus per-path .instructions.md files (see the Copilot Customization Kit). Cursor uses .cursor/rules/*.mdc files (see the Cursor Rules Kit). Different inheritance models; if enough people ask, a Cursor/Copilot playground is next.

If you enjoyed this

More Promptshelf tools

Free. No signup. Same author.

Saved you time? Tip the maker in BTC — no account, no signup, just paste.

BTC bc1qs04leape97ner4wqa98n94l9n0gv9aa84eg4ux