Source: https://learn.nodegx.io/advanced/claude-code-in-depth
Summary: The Claude Code features worth knowing when you build NodeGX apps — CLAUDE.md, memory, skills, plan mode and hooks — and which ones NodeGX already covers.

# Claude Code in depth

Claude Code has a handful of features that change how it works with you. NodeGX already sets up the most important one, CLAUDE.md, in every project. This page covers the rest, and what's worth your time.

## CLAUDE.md: the file Claude reads first

CLAUDE.md is a plain Markdown file. Claude Code reads it at the start of every conversation, so anything in it is a standing instruction.

| Where | What it's for |
|-------|---------------|
| `~/.claude/CLAUDE.md` | You, in every folder and every project |
| `CLAUDE.md` in the project folder | This project |
| `CLAUDE.local.md` in the project folder | Your own notes for this project, kept out of Git |

**NodeGX writes the project one for you.** Every NodeGX project gets a `CLAUDE.md` when it is created, or when it is opened in NodeGX without one. It names the app, tells Claude to change the app through NodeGX's tools rather than by editing the files under `components/`, and lists the project's docs if it has them.

NodeGX never overwrites it. Edit it and it stays edited.

**Where your own rules go:**

- **About you** (who you are, how you like to be talked to): NodeGX's **About you** preferences, which reach Claude in every NodeGX project. See [Tell Claude who you are](https://learn.nodegx.io/setup/about-you). Use `~/.claude/CLAUDE.md` if you want it in all your Claude Code work.
- **About this app** (how it should look, what it must never do): `docs/CONVENTIONS.md` in the project. NodeGX tells Claude to read it before building, and NodeGX's own built-in AI reads it too. If the project has no `docs/` folder, ask Claude to create the file.
- **About how Claude Code works here** (anything only Claude Code needs): the project's `CLAUDE.md`.

Keep all of them short. A rule Claude can't find in a long file is a rule it doesn't follow.

## The connection files

Connecting NodeGX leaves two registrations. A registration is an entry that tells Claude Code how to start one of NodeGX's connectors (MCP servers: small programs that give Claude tools).

- **`nodegx`**, for your user account. **Connect Claude Code** adds it. It works in any folder, and it can list, open and create projects.
- **`nodegx-<folder name>`**, in the project's `.mcp.json`. NodeGX writes it when the project is created or opened. Start Claude Code inside the project folder and it offers this one, already pointed at that project. It asks you to approve it once.

`.mcp.json` holds paths to this computer's copy of NodeGX, so NodeGX adds it to `.gitignore`. Someone who clones the project gets their own the first time they open it in NodeGX.

## Memory: notes Claude keeps for itself

Separately from CLAUDE.md, Claude Code keeps its own notes as you work. Correct it, or tell it how you like things done, and it can save that for next time. It loads the first 200 lines (or 25KB) of its memory index at the start of every conversation.

Two things to know:

- **It stays on this computer.** It isn't shared with your other machines or anyone else on the project. Anything the project needs belongs in `docs/CONVENTIONS.md` or CLAUDE.md.
- **It isn't Chat's memory.** What Claude remembers about you in the Chat tab doesn't reach the Code tab.

Keep lessons small: one lesson per note, with a line saying why it matters. The test for saving one: *would a fresh conversation waste half an hour without it?* If not, leave it out.

## Skills: instructions you'd otherwise retype

A skill is a folder with a `SKILL.md` file in it. It holds instructions for one job, plus a description of when to use it. Claude loads it when that job comes up, or you call it by typing `/skill-name`.

| Where | Who gets it |
|-------|-------------|
| `~/.claude/skills/<name>/SKILL.md` | You, in every project |
| `.claude/skills/<name>/SKILL.md` | Everyone working on this project |

The first one worth making is for the words in your app. Claude's own writing is easy to spot. A short skill fixes that:

```markdown
---
name: copywriting
description: House voice for any text a user will read. Use when writing page text, buttons, emails or error messages.
---

- Plain words, short sentences. British spelling.
- No hype words: game-changer, unlock, seamless, powerful.
- No long dashes. Use a full stop, comma or brackets.
- Say what the thing does for the reader.
```

**The rule for when to make one:** the third time you type the same instructions, ask Claude to turn them into a skill. It will write the folder and file for you.

A rule that applies to everything belongs in CLAUDE.md or `docs/CONVENTIONS.md`, not a skill.

## Plan mode: see the plan before anything changes

Permission modes set how much Claude asks before it acts.

| Mode | What it does |
|------|--------------|
| `default` | Asks before it edits files or runs commands |
| `acceptEdits` | Edits files without asking, still asks before running commands |
| `plan` | Reads and plans only. Changes nothing until you approve the plan |

Switch with the mode selector in the desktop app, or **Shift+Tab** in the terminal. Leave the other modes (`auto`, `dontAsk`, `bypassPermissions`) alone until you know exactly what you're letting through.

A new NodeGX app already gets a plan: Claude scopes it with you and writes a brief and a build plan into the project. See [Plan before you build](https://learn.nodegx.io/plan/scoping). Plan mode is for **changes to an app that already exists**. Use it for anything bigger than a small fix.

Then read the plan. The most common way I see a build go wrong is someone saying "just do it" without reading what Claude spelled out. The plan is your chance to catch that for free.

## Hooks: mostly not needed

Hooks run a script automatically at set moments, for example after every edit or when Claude finishes a turn. People often use them to check Claude's work after each change.

NodeGX already does that: every change is checked before it is saved, and a wrong one is refused with an explanation. Leave hooks until you hit a specific problem one would solve.

## Commands worth knowing

| Command | What it does |
|---------|--------------|
| `/clear` | Starts a fresh conversation. Use it between jobs |
| `/model` | Switches model |
| `/usage` | Shows how much of your limits you've used |
| `/rewind` (or **Esc Esc**) | Goes back to an earlier point in the conversation |
| **Esc** | Stops Claude mid-step |
| `/resume` | Reopens an earlier conversation |

In the terminal, **Option+P** (Mac) or **Alt+P** switches model without typing a command. If a command doesn't respond in the desktop app, look for the matching button.

**`/rewind` and NodeGX.** Claude Code's rewind restores files Claude edited directly. Changes Claude makes through NodeGX's tools go through NodeGX, not Claude's own file edits, so don't count on rewind to undo them. Keep your project in Git so you can always go back: see [GitHub basics](https://learn.nodegx.io/online/github-basics).

## Quick reference

- NodeGX writes each project's `CLAUDE.md` and `.mcp.json`, and never overwrites them.
- Rules about you: **About you**. Rules about the app: `docs/CONVENTIONS.md`.
- Memory is per computer, and separate from Chat's.
- Third time you type the same instructions, make a skill.
- Plan mode for changes bigger than a small fix, then read the plan.
- Hooks: skip them. NodeGX already checks every change.
