Skip to main content
ClaudeWave
Skill44.1k repo starsupdated today

memory

The memory skill provides a two-layer persistent storage system for Claude instances within the nanobot framework. It maintains automated files for bot personality (SOUL.md), user profiles (USER.md), and long-term facts (MEMORY.md) managed by the Dream system, alongside a searchable append-only history log (history.jsonl) for retrieving past events and interactions using grep-based queries. Use this skill when you need to reference contextual information, access historical records, or maintain continuity across conversations without manual editing of protected memory files.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/HKUDS/nanobot /tmp/memory && cp -r /tmp/memory/nanobot/skills/memory ~/.claude/skills/memory
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Memory

## Structure

- `SOUL.md` — Bot personality and communication style. **Managed by Dream.** Do NOT edit.
- `USER.md` — User profile and preferences. **Managed by Dream.** Do NOT edit.
- `memory/MEMORY.md` — Long-term facts (project context, important events). **Managed by Dream.** Do NOT edit.
- `memory/history.jsonl` — append-only JSONL, not loaded into context. Prefer the built-in `grep` tool to search it.

## Search Past Events

`memory/history.jsonl` is JSONL format — each line is a JSON object with `cursor`, `timestamp`, `content`.

- For broad searches, start with `grep(..., path="memory", glob="*.jsonl", output_mode="count")` or the default `files_with_matches` mode before expanding to full content
- Use `output_mode="content"` plus `context_before` / `context_after` when you need the exact matching lines
- Use `fixed_strings=true` for literal timestamps or JSON fragments
- Use `head_limit` / `offset` to page through long histories
- Use `exec` only as a last-resort fallback when the built-in search cannot express what you need

Examples (replace `keyword`):
- `grep(pattern="keyword", path="memory/history.jsonl", case_insensitive=true)`
- `grep(pattern="2026-04-02 10:00", path="memory/history.jsonl", fixed_strings=true)`
- `grep(pattern="keyword", path="memory", glob="*.jsonl", output_mode="count", case_insensitive=true)`
- `grep(pattern="oauth|token", path="memory", glob="*.jsonl", output_mode="content", case_insensitive=true)`

## Important

- **Do NOT edit SOUL.md, USER.md, or MEMORY.md.** They are automatically managed by Dream.
- If you notice outdated information, it will be corrected when Dream runs next.
- Users can view Dream's activity with the `/dream-log` command.