All sections

16In practice

Cheat sheet

The file map, the commands, the flags, and the five things worth committing to memory. Everything on this page is a summary of something covered earlier.

File map

~/.claude/
├── CLAUDE.md                 # personal memory, all projects
├── settings.json             # personal settings, all projects
├── rules/*.md                # personal conventions
├── skills/<name>/SKILL.md    # personal skills   ⚠ these SHADOW project skills
├── agents/*.md               # personal agents   ⚠ these are SHADOWED BY project agents
└── output-styles/*.md        # personal styles

<project>/
├── CLAUDE.md                 # team memory — committed
├── CLAUDE.local.md           # your memory     — gitignored
└── .claude/
    ├── settings.json         # team settings   — committed
    ├── settings.local.json   # your settings   — gitignored
    ├── rules/*.md            # team conventions, path-scoped
    ├── skills/<name>/SKILL.md
    ├── agents/*.md
    ├── hooks/*.sh
    └── output-styles/*.md

<plugin>/
├── .claude-plugin/plugin.json   # ONLY this file lives here
├── skills/  agents/  hooks/  bin/
└── .mcp.json

Commands

Command Purpose
/init Generate a starting project CLAUDE.md
/memory List and open discovered memory files
/context Show what is in the context window, with token counts
/status Model, output style, permission mode, MCP servers
/config Change settings including outputStyle
/agents List available agents and their source
/subtask <task> Fork the conversation into an isolated task
/plugin install <name>@<marketplace> Install a plugin
/reload-plugins Reload after editing a local plugin
/clear New context, required for output style changes
# prefix in a prompt Append a line to a memory file

Flags

Flag Purpose
--agent <name> Run the whole session as that agent
--agents <json> Define session-only agents
--plugin-dir <path> Load a local plugin without installing
--append-system-prompt <text> One-off system prompt addition
--model <name> Override the model
--permission-mode <mode> Override the permission mode

Precedence, at a glance

Subsystem Winner
Settings Managed → CLI → local → project → user
Skills Enterprise → personal → project
Agents Managed → CLI → project → user → plugin
Permissions deny beats allow, from any scope
Memory files Nobody. All concatenated
Rules Nobody. All concatenated
Hooks Everybody. All matching hooks run

The five things worth memorising

  1. Memory files are additive, not hierarchical. Contradictions are resolved by the model, unpredictably. Remove them rather than ranking them.
  2. Skills: personal beats project. Agents: project beats personal. Opposite directions, no mnemonic.
  3. CLAUDE.md is the most expensive place to put anything. Path-scoped rules and skills are nearly free until used.
  4. Prose is a request; config is a rule; hooks are enforcement. Match the mechanism to how badly you need it to hold.
  5. /context before theorising. Most “Claude ignored my instruction” reports are “the instruction was never loaded”.

A first-day checklist for a new repository

  • /init to generate a starting CLAUDE.md, then cut it to under 200 lines
  • Add CLAUDE.local.md and .claude/settings.local.json to .gitignore
  • Move every language convention out of CLAUDE.md into .claude/rules/<lang>.md with a **/ glob
  • Add permissions.deny for generated code, secrets, and force-push
  • Add a PostToolUse formatter hook
  • Run /skills and /agents and look for names your personal config shadows
  • Run /context and check the configuration total is under a few thousand tokens