Memory commands
memory
Check, list, locate, and repair the shared memory in the working directory. Each subcommand reads project memory in .agnostic-ai/memory/, then personal memory in .agnostic-ai/local/memory/, or in the personal folder shared across worktrees with memory.personal: repo. Missing memory folders are skipped.
agnostic-ai memory lint # run only the memory checks
agnostic-ai memory index # rebuild each MEMORY.md from its fact files
agnostic-ai memory list # print each fact's scope, type, and title
agnostic-ai memory path # print each memory folder's absolute path
agnostic-ai memory import --from claude # copy facts from another memory store
memory lintreports LINT039 to LINT044, the memory findingslintanddoctoralso report. It exits 1 on an error, or on a warning with--strict.--jsonprints the same format aslint --json, withcommandset tomemory lint.memory indexdrops merge conflict markers, links to missing files, and repeated links. Every other line stays in place, headings and notes included. It then adds a- [name](file.md): descriptionline from the YAML fields at the top of each fact without one. Run it after two tools edit the index at once.- The type comes from
metadata.type, or from a top-leveltypeas Claude Code's auto memory writes it. - With no memory folder,
memory lintsays so and exits 0. memory listprints facts in index order. The title is the index line's link text, or the fact'snamewhen no line links it.memory pathprints onescope folderline per memory folder, project first, as absolute paths. It works from any folder inside the project and from a linked worktree, and prints a folder that does not exist yet. Withmemory.personal: repo, every worktree of the repository gets the same personal folder. Theshared-memory-policyrule has tools without a session-start hook run it.memory importcopies fact files from another memory store into personal memory and adds their index lines.--from claudereads Claude Code's own store, the folder it used before sync pointed it at personal memory.--from checkoutand--from reporead the other personal folder after amemory.personalswitch.--pathreads any folder with aMEMORY.mdand one file per fact. Every tool reads personal memory, so run--dry-runfirst: it lists each fact with its description, and--only <file>copies just the ones you name. The source never changes. Lines of the source index that link no fact come along as one more fact (claude-index-notes.mdfor--from claude). A fact whose file name personal memory already has stays as it is, and a symlink or a file with a line that looks like a secret is skipped; the report names each. A fact already there byte for byte gets its index line back if the index lacks it, so a rerun finishes an import that stopped. Import refuses a personal folder with files Git tracks, and first adds the checkout folder to Git's exclude list when Git would track it. It lists each fact it handled in.importedinside the personal folder, so LINT043 stops counting a fact you delete or merge afterwards.--dry-runprints the plan and writes nothing.
| Flag | Description |
|---|---|
--strict | With memory lint, exit 1 on warnings too. |
--json | With memory lint, print {version, command, findings} on stdout. |
--from | With memory import, the store to copy from: claude, checkout, or repo. |
--path | With memory import, a folder to copy from instead of --from. |
--only | With memory import, copy only this fact file; repeat the flag for more. |
--dry-run | With memory import, print what would be copied and write nothing. |