Skip to content

Instructions

The Instructions section lists every instruction file that applies to the open directory, in the order Claude Code loads it.

The Instructions timetable: six files numbered in load order with their scope bullet, status, reason, line count and git visibilityThe Instructions timetable: six files numbered in load order with their scope bullet, status, reason, line count and git visibility
  1. The managed CLAUDE.md in your organisation’s managed folder, the claudeMd key of managed settings, then every .md file under the managed folder’s .claude/rules/.
  2. ~/.claude/CLAUDE.md, then every .md file under ~/.claude/rules/.
  3. For each folder from the top of the filesystem down to the open directory: CLAUDE.md, .claude/CLAUDE.md, the .md files under .claude/rules/, CLAUDE.local.md, AGENTS.md and .claude/AGENTS.md.

Rule folders are searched in subfolders too. Instruction files in folders below the open directory load only when Claude works with a file there; use When Claude touches a file to see them.

Each file has one of three statuses:

  • loaded: in context from the start of every session here.
  • on match: a rule with a paths field in its frontmatter. It loads only when Claude reads or edits a file that matches. A rule whose paths only match everything, such as **, loads every session instead, as Claude Code treats it like one without the field. ccdesk matches paths the way Claude Code 2.1.296 does, with .gitignore rules, and in places that differs from the docs’ table: a pattern without a slash matches at any depth, so *.md matches docs/guide.md and not only Markdown files in the project root; ** matches folders whose names start with a dot; case does not count; and src/** matches a src folder at any depth. A project rule’s patterns are read from the folder holding its .claude, and those of your own and managed rules from the directory the session starts in.
  • skipped: present, but Claude Code does not load it. The Why column says which rule applies.

A file is skipped when:

  • it is an AGENTS.md, and a CLAUDE.md or CLAUDE.local.md exists in any folder from the top of the filesystem down to the open directory (~/.claude/CLAUDE.md does not count), or a CLAUDE.md already imports it or links to it;
  • it is a CLAUDE.md, .claude/CLAUDE.md, rule or CLAUDE.local.md at the filesystem root, such as /CLAUDE.md or C:\CLAUDE.md, where Claude Code does not look;
  • it is a file that loaded earlier, reached again under another name through a link, such as a .claude/CLAUDE.md that links to CLAUDE.md;
  • your claudeMdExcludes setting matches its path, or for a link, its target’s. As in Claude Code, * and ** also match folders whose names start with a dot, such as .claude, and a glob written through a linked folder matches the files it leads to, except on Windows for a glob that starts with a drive letter, where Claude Code does not follow the link either;
  • it is larger than 4 MiB, which Claude Code does not load, managed files included;
  • a plugin setting limits instruction files to CLAUDE.md only, or to managed files only. Managed-only keeps the managed folder’s rules as well as its CLAUDE.md: Claude Code 2.1.296 drops only user, project and local files, though its docs name only the managed CLAUDE.md;
  • it is an AGENTS.md, and an enabledPlugins entry in any settings file turns off the built-in plugin that reads it (cc-plugin-agents-md@builtin, or agents-md@builtin before v2.1.285), as /plugin does. For this plugin, any value but true turns it off. Claude Code then reads CLAUDE.md files only, and the managed-only setting does not apply either;
  • it is a project or local rule that links to a file outside the project, and you have not approved imports from outside the project;
  • the open directory is a git worktree inside its main checkout, such as one in .claude/worktrees, and the file is a CLAUDE.md, .claude/CLAUDE.md or rule of a main checkout folder above it. Claude Code reads the worktree’s own copies instead; the main checkout’s CLAUDE.local.md still loads.

A file can pull in others with @path/to/file lines. ccdesk follows them the way Claude Code does: after the frontmatter, outside code blocks, inline code and HTML comments, relative to the importing file, ~/ for your home folder, up to four levels deep. A # and what follows it are left out, so @docs/guide.md#setup imports docs/guide.md, but punctuation is not: @README.md. names a file called README.md.. The inspector lists each file’s imports and marks the ones that are missing, larger than 4 MiB, outside the project, or waiting for your approval, and the ones Claude Code does not load because they are not text files, such as images, or because claudeMdExcludes matches them.

Imports from your user or managed files load without asking. Imports in project or local files that point outside the project wait until you accept Claude Code’s prompt for external imports, which it records in ~/.claude.json.

The Visibility column says who else gets the file:

  • tracked in git: everyone who clones the repository;
  • untracked: only you for now, until it is committed;
  • git-ignored: only you;
  • only you: a file in your own ~/.claude;
  • organisation: a managed file.

A file that is a link into ~/.agents is marked, because other coding agents that read ~/.agents share it.

ccdesk flags three things on instruction files that load, with a count after the file’s name and the details in the inspector:

  • the file is longer than 200 lines, which the Claude Code docs suggest staying under;
  • a paragraph of 60 characters or more repeats one in an earlier file, so Claude reads it twice;
  • an @import points at a file that does not exist.

Instruction files that exist but cannot be read, for example because of their permissions or a link that loops, are listed at the top of the page, and so is a rules folder that links to a network location, which Claude Code does not follow. So are memory, subagent, skill and command files that cannot be read, and any of these that is not valid JSON: a settings file, ~/.claude.json, a .mcp.json, managed-mcp.json, and a plugin’s plugin.json or hooks/hooks.json. A missing file is not listed.

ccdesk does not edit instruction files. Use the open button in the inspector to change one in your editor; the page picks up the change within a second.