# Memory Curator

> Manage agent memory through daily logs, session preservation, and knowledge extraction. Use when (1) logging work at end of day, (2) preserving context before /new or /reset, (3) extracting patterns from daily logs to MEMORY.md, (4) searching past decisions and learnings, (5) organizing knowledge for long-term retention. Essential for continuous improvement and avoiding repeated mistakes.

- Skill: `irangareddy/memory-curator` (Agent Skill, multi-file: 9 files)
- Install (CLI): `npx skillmds@latest add irangareddy/memory-curator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/irangareddy/memory-curator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: irangareddy (https://skillmd.com/u/irangareddy)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/irangareddy/memory-curator

---


# Memory Curator

Systematic memory management for agents through daily logging, session preservation, and knowledge extraction.

## Quick Start

### Log Today's Work

```bash
# Append to today's log
python scripts/daily_log.py \
  --workspace ~/.openclaw/workspace \
  --entry "Implemented user authentication with JWT" \
  --category "Key Activities"

# Show today's log
python scripts/daily_log.py --workspace ~/.openclaw/workspace --show
```

### Search Memory

```bash
# Search all memory files
python scripts/search_memory.py \
  --workspace ~/.openclaw/workspace \
  --query "GraphQL"

# Search recent logs only (last 7 days)
python scripts/search_memory.py \
  --workspace ~/.openclaw/workspace \
  --query "authentication" \
  --days 7

# Show recent logs
python scripts/search_memory.py \
  --workspace ~/.openclaw/workspace \
  --recent 5
```

### Extract Session Summary

```bash
# Generate summary from current session
python scripts/extract_session.py \
  --session ~/.openclaw/agents/<agent-id>/sessions/<session-id>.jsonl \
  --output session-summary.md
```

## Core Workflows

### End of Day: Log Activities

**When:** Before ending work session or switching contexts

**Steps:**

1. **Review what was accomplished:**
   - Features implemented
   - Bugs fixed
   - Decisions made
   - Learnings discovered

2. **Append to daily log:**
   ```bash
   python scripts/daily_log.py \
     --workspace ~/.openclaw/workspace \
     --entry "Fixed race condition in payment processing - added mutex lock"
   ```

3. **Add structured entries for important work:**
   ```markdown
   ## Key Activities

   - [14:30] Implemented user profile dashboard with GraphQL
   - [16:00] Fixed infinite re-render in UserContext - memoized provider value

   ## Decisions Made

   - Chose Apollo Client over React Query - better caching + type generation
   - Decided to use JWT in httpOnly cookies instead of localStorage

   ## Learnings

   - Apollo requires `__typename` field for cache normalization
   - React.memo doesn't prevent re-renders from context changes
   ```

**See:** [patterns.md](references/patterns.md) for what to log in different scenarios

### Before Context Switch: Preserve Session

**When:** Before running `/new`, `/reset`, or ending conversation

**Steps:**

1. **Extract session summary:**
   ```bash
   # Get current session ID from system prompt or openclaw status
   python scripts/extract_session.py \
     --session ~/.openclaw/agents/<agent-id>/sessions/<session-id>.jsonl \
     --output ~/session-summary.md
   ```

2. **Review summary and edit Key Learnings section**

3. **Save to daily log:**
   ```bash
   # Append key points to today's log
   cat ~/session-summary.md >> ~/.openclaw/workspace/memory/$(date +%Y-%m-%d).md
   ```

4. **Extract critical context to MEMORY.md if needed:**
   - Non-obvious solutions
   - Important decisions
   - Patterns worth remembering

### Weekly Review: Extract Knowledge

**When:** End of week (Friday/Sunday) or monthly

**Steps:**

1. **Search for patterns in recent logs:**
   ```bash
   python scripts/search_memory.py \
     --workspace ~/.openclaw/workspace \
     --recent 7
   ```

2. **Look for extraction signals:**
   - Repeated issues (3+ occurrences)
   - High-cost learnings (>1 hour to solve)
   - Non-obvious solutions
   - Successful patterns worth reusing

3. **Extract to MEMORY.md:**
   - Add new sections or update existing ones
   - Use problem-solution format
   - Include code examples
   - Add context for when to use

4. **Clean up MEMORY.md:**
   - Remove outdated information
   - Consolidate duplicate entries
   - Update code examples
   - Improve organization if needed

**See:** [extraction.md](references/extraction.md) for detailed extraction patterns

### Daily: Quick Logging

**For rapid context capture during work:**

```bash
# Quick note
python scripts/daily_log.py \
  --workspace ~/.openclaw/workspace \
  --entry "TIL: DataLoader batches requests into single query"

# Decision
python scripts/daily_log.py \
  --workspace ~/.openclaw/workspace \
  --entry "Using Zustand for client state - simpler than Redux" \
  --category "Decisions Made"

# Problem solved
python scripts/daily_log.py \
  --workspace ~/.openclaw/workspace \
  --entry "CORS + cookies: Enable credentials on client + server, Allow-Origin can't be *"
```

## Memory Structure

### Daily Logs (`memory/YYYY-MM-DD.md`)

**Purpose:** Chronological activity tracking

**Content:**
- What was done (timestamped)
- Decisions made
- Problems solved
- Learnings discovered

**Retention:** Keep recent logs accessible, optionally archive logs >90 days

**When to use:**
- "What did I do on [date]?"
- "When did I implement X?"
- Session history
- Activity tracking

### MEMORY.md

**Purpose:** Curated long-term knowledge

**Content:**
- Patterns and best practices
- Common solutions
- Mistakes to avoid
- Useful references

**Organization:** Topic-based, not chronological

**When to use:**
- "How do I solve X?"
- "What's the pattern for Y?"
- Best practices
- Reusable solutions

**See:** [organization.md](references/organization.md) for structure patterns

## Memory Logging Patterns

### What to Log

**Always log:**
- Key implementation decisions (why approach X over Y)
- Non-obvious solutions
- Root causes of bugs
- Architecture decisions with rationale
- Patterns discovered
- Mistakes and how they were fixed

**Don't log:**
- Every file changed (git has this)
- Obvious implementation details
- Routine commits
- Project-specific hacks

**See:** [patterns.md](references/patterns.md) for comprehensive logging guidance

### When to Log

**During work:**
- Quick notes with `daily_log.py --entry`
- Capture decisions as made
- Log problems when solved

**End of day:**
- Review what was accomplished
- Structure important entries
- Add context for tomorrow

**End of week:**
- Extract patterns to MEMORY.md
- Consolidate learnings
- Clean up outdated info

## Knowledge Extraction

### Extraction Criteria

**Extract to MEMORY.md when:**
- Pattern appears 3+ times
- Solution took >1 hour to find
- Solution is non-obvious
- Will save significant time in future
- Applies across multiple projects
- Mistake was costly to debug

**Don't extract:**
- One-off fixes
- Project-specific hacks
- Obvious solutions
- Rapidly changing APIs

### Extraction Format

**Problem-Solution Structure:**

```markdown
## [Technology/Domain]

### [Problem Title]

**Problem:** [Clear description]
**Cause:** [Root cause]
**Solution:** [How to fix]

**Code:**
```js
// Example implementation
```

**Prevention:** [How to avoid]
**Context:** [When this applies]
```

**See:** [extraction.md](references/extraction.md) for detailed extraction workflow

## Scripts Reference

### daily_log.py

Create or append to today's daily log.

```bash
# Append entry
python scripts/daily_log.py \
  --workspace ~/.openclaw/workspace \
  --entry "Your log entry" \
  [--category "Section Name"]

# Create from template
python scripts/daily_log.py \
  --workspace ~/.openclaw/workspace \
  --template

# Show today's log
python scripts/daily_log.py \
  --workspace ~/.openclaw/workspace \
  --show
```

### extract_session.py

Extract summary from session JSONL.

```bash
python scripts/extract_session.py \
  --session ~/.openclaw/agents/<id>/sessions/<session>.jsonl \
  [--output summary.md]
```

Outputs:
- User requests summary
- Tools used
- Files touched
- Template for key learnings

### search_memory.py

Search across all memory files.

```bash
# Search with query
python scripts/search_memory.py \
  --workspace ~/.openclaw/workspace \
  --query "search term" \
  [--days 30]

# Show recent logs
python scripts/search_memory.py \
  --workspace ~/.openclaw/workspace \
  --recent 5
```

## Best Practices

### Daily Discipline

1. **Start of day:** Review yesterday's log, plan today
2. **During work:** Quick notes for decisions and learnings
3. **End of day:** Structure important entries, add context
4. **End of week:** Extract patterns, clean up MEMORY.md

### Context Preservation

**Before `/new` or `/reset`:**
1. Extract session summary
2. Add to daily log
3. Preserve critical context in MEMORY.md

**After major work:**
1. Document what was accomplished
2. Note key learnings
3. Record next steps

### Knowledge Organization

1. **Topic-based structure** - Group by domain, not date
2. **Problem-first titles** - Lead with the problem being solved
3. **Searchable language** - Use specific, findable terms
4. **Flat hierarchy** - Maximum 2 levels deep
5. **Code examples** - Include working examples

**See:** [organization.md](references/organization.md) for detailed structure guidance

## Troubleshooting

### Can't find past decision

1. **Search daily logs first:**
   ```bash
   python scripts/search_memory.py --workspace ~/.openclaw/workspace --query "decision keyword"
   ```

2. **Search MEMORY.md:**
   ```bash
   grep -i "keyword" ~/.openclaw/workspace/MEMORY.md
   ```

3. **Search session logs:**
   ```bash
   rg "keyword" ~/.openclaw/agents/<id>/sessions/*.jsonl
   ```

### Memory files getting too large

1. **Archive old daily logs** (>90 days):
   ```bash
   mkdir -p memory/archive/2025-Q1
   mv memory/2025-01-*.md memory/archive/2025-Q1/
   ```

2. **Split MEMORY.md by domain** if >1000 lines:
   ```
   memory/domains/
   ├── react.md
   ├── graphql.md
   └── database.md
   ```

3. **Link from main MEMORY.md:**
   ```markdown
   ## Domain Knowledge
   - [React Patterns](memory/domains/react.md)
   - [GraphQL Patterns](memory/domains/graphql.md)
   ```

### Not sure what to log

**See:** [patterns.md](references/patterns.md) for comprehensive logging patterns

**Quick rule:** If you spent >15 minutes on it or learned something non-obvious, log it.

## Templates

### Daily Log Template

Located at: `assets/templates/daily-log.md`

Structure:
- Key Activities
- Decisions Made
- Learnings
- Challenges & Solutions
- Context for Tomorrow
- References

### MEMORY.md Template

Located at: `assets/templates/MEMORY-template.md`

Structure:
- Patterns & Best Practices
- Common Solutions
- Learnings
- Mistakes to Avoid
- Useful References

## Tips

1. **Be consistent** - Log every day, extract every week
2. **Be concise** - Future you needs facts, not stories
3. **Be specific** - "Apollo cache normalization" > "cache issue"
4. **Use code** - Examples > explanations
5. **Search first** - Before asking, search your memory
6. **Extract ruthlessly** - If it repeats 3x, extract it
7. **Clean regularly** - Remove outdated info monthly
8. **Version control** - Git commit MEMORY.md changes

## Integration with OpenClaw

### Auto-logging with Hooks

Create a hook to auto-log major events:

```js
// ~/.openclaw/hooks/memory-logger/index.js
export default {
  name: 'memory-logger',
  async onToolCall({ tool, agent }) {
    if (tool === 'write' || tool === 'edit') {
      // Log file modifications
      await exec(`python scripts/daily_log.py --workspace ${agent.workspace} --entry "Modified ${tool.input.file_path}"`)
    }
  }
}
```

### Session Preservation

Add to `AGENTS.md`:

```markdown
## Before /new or /reset

Always preserve context:
1. Extract session summary
2. Add to daily log
3. Save critical decisions to MEMORY.md
```

### Weekly Review Cron

```bash
openclaw cron add \
  --name "weekly-memory-review" \
  --at "Sunday 18:00" \
  --system-event "Time for weekly memory review and knowledge extraction"
```

