Every new session you repeat the same things: "use pnpm, not npm", "tests run with make test", "don't touch the legacy/ folder". The /memory command in Verboo Code ends that: you write those rules once in a Markdown file and the CLI loads the file at the start of every session. This guide shows which files exist, where each one lives and how to write a rule that applies to only part of the codebase.
What does /memory do in Verboo Code?
It opens a picker with your instruction files and edits the one you choose in your text editor. If the file doesn't exist yet, the CLI creates it empty before opening it.
/memory
After you choose, the CLI replies Opened memory file at followed by the real path of the file. The editor comes from the $VISUAL variable and, if that is not set, from $EDITOR. To change it:
export EDITOR="code --wait"
Which instruction files does Verboo Code read?
Four levels, loaded in this order. Whatever loads last weighs more, so the project rule beats the global rule, and the personal one beats the project one.
| Level | File | What for |
|---|---|---|
| Managed | CLAUDE.md in the system managed folder | Company policy, the same for everyone on the machine |
| User memory | ~/.verboo/CLAUDE.md and ~/.verboo/rules/*.md | Your preferences across all projects |
| Project memory | AGENTS.md (or CLAUDE.md if there is no AGENTS.md), .claude/CLAUDE.md and .claude/rules/*.md | Repository rules, versioned in git |
| Local | CLAUDE.local.md | Personal rules for this project only, kept out of git |
If you set VERBOO_CONFIG_DIR, the User memory file lives inside that folder instead of ~/.verboo/.
AGENTS.md or CLAUDE.md?
Prefer AGENTS.md. In each folder, Verboo Code looks for AGENTS.md first and only uses CLAUDE.md when AGENTS.md does not exist. They don't add up: if a repository has both in the same folder, only AGENTS.md is loaded. When you choose Project memory in /memory, the file created is the AGENTS.md of the current folder.
How does the CLI find the project files?
It walks up from the folder where you opened the session to the root of the disk and reads the instruction file at each level. In a monorepo, that lets you keep a general rule at the root and a more specific one in packages/api/: open the session in packages/api/ and both load, with the closer one weighing more.
my-monorepo/
├── AGENTS.md # general rules
└── packages/
└── api/
├── AGENTS.md # API rules, weigh more
└── CLAUDE.local.md # your notes, out of git
Add CLAUDE.local.md to .gitignore. It exists precisely for what should not reach the team: paths on your machine, local test credentials, personal preferences.
What should go in AGENTS.md?
Only what the agent would get wrong without reading it. Build and test commands that aren't the obvious ones, team conventions, folders that must not be touched. The code sets 40,000 characters as the recommended maximum per file, and all of it enters the context of every session, so shorter is better.
# Project
- Package manager: pnpm. Never run npm install.
- Tests: make test. Run before saying you're done.
- Don't edit anything in legacy/, the team is migrating it.
- Commit messages in the imperative.
@docs/architecture.md
To generate a first draft from the code, run /init: it analyzes the repository and proposes the instruction file. Then review it and cut what is obvious.
How do I import another file with @?
Write @ followed by the path on a text line of the instruction file. The imported file enters the context before the file that imported it. That way you reuse the documentation you already have instead of copying it.
| Syntax | Resolves to |
|---|---|
@docs/stack.md | Relative path (same as @./docs/stack.md) |
@~/notes/standards.md | Path from your home folder |
@/etc/team/rules.md | Absolute path |
Three details from the code that save you trouble: @ does not work inside a code block, a file that doesn't exist is silently ignored, and only text files are loaded (.md, .txt, .json, .yaml, source code and similar). Images and PDFs are left out. Circular imports don't hang anything: each file is loaded only once.
How do I create a rule that applies to only one folder?
Create a .md in .claude/rules/ with paths: in the frontmatter. That rule does not load at session start: it loads only when the agent reads a file that matches the pattern.
mkdir -p .claude/rules
---
paths: src/api/**/*.ts, src/api/**/*.test.ts
---
- Every new endpoint needs a contract test.
- Errors return { code, message }, never a bare string.
The field accepts several comma-separated patterns, or a YAML list, and understands braces: src/*.{ts,tsx} becomes src/*.ts and src/*.tsx. A file in .claude/rules/ without paths: always applies, as if it were part of AGENTS.md. Subfolders of rules/ are read too, so you can organize by topic.
What about automatic memory?
That's a different thing. Besides the files you write, Verboo Code has an automatic memory, on by default, where the agent itself stores what it learned about you and the project. The /memory picker shows an Auto-memory: on row to toggle it and an Open auto-memory folder option to see what was saved. To turn it off with an environment variable:
export CLAUDE_CODE_DISABLE_AUTO_MEMORY=1
Team rules belong in AGENTS.md, which is reviewable in git. Automatic memory is for what the agent discovers while working, not a replacement for written instructions.
How does this fit with the other commands?
- /plan follows the
AGENTS.mdrules when building the plan, so conventions written there already show up in the plan. - /compact summarizes the conversation, but the instruction files stay on disk.
- An instruction is a request, not a lock. To actually block a command, use /permissions or a hook.
- To pin the response language, see how to lock a fixed language.
An AGENTS.md with imports enters the context of every session, and context is tokens. In Verboo Code tokens are unlimited, so you can document the whole project without cutting rules to save: create your account at verboo.ai, open the CLI in your repository and run /memory.



