# Memory System for {displayName}

**Memory location:** `_bmad/_memory/{skillName}-sidecar/`

## Core Principle

Tokens are expensive. Only remember what matters. Condense everything to its essence.

## File Structure

### `index.md` — Primary Source

**Load on activation.** Contains:
- Essential context (what we're working on)
- Active work items
- User preferences (condensed)
- Quick reference to other files if needed

**Update:** When essential context changes (immediately for critical data).

### `access-boundaries.md` — Access Control (Required for all agents)

**Load on activation.** Contains:
- **Read access** — Folders/patterns this agent can read from
- **Write access** — Folders/patterns this agent can write to
- **Deny zones** — Explicitly forbidden folders/patterns
- **Created by** — Agent builder at creation time, confirmed/adjusted during init

**Template structure:**
```markdown
# Access Boundaries for {displayName}

## Read Access
- {folder-path-or-pattern}
- {another-folder-or-pattern}

## Write Access
- {folder-path-or-pattern}
- {another-folder-or-pattern}

## Deny Zones
- {explicitly-forbidden-path}
```

**Critical:** On every activation, load these boundaries first. Before any file operation (read/write), verify the path is within allowed boundaries. If uncertain, ask user.

{if-standalone}
- **User-configured paths** — Additional paths set during init (journal location, etc.) are appended here
{/if-standalone}

### `patterns.md` — Learned Patterns

**Load when needed.** Contains:
- User's quirks and preferences discovered over time
- Recurring patterns or issues
- Conventions learned

**Format:** Append-only, summarized regularly. Prune outdated entries.

### `chronology.md` — Timeline

**Load when needed.** Contains:
- Session summaries
- Significant events
- Progress over time

**Format:** Append-only. Prune regularly; keep only significant events.

## Memory Persistence Strategy

### Write-Through (Immediate Persistence)

Persist immediately when:
1. **User data changes** — preferences, configurations
2. **Work products created** — entries, documents, code, artifacts
3. **State transitions** — tasks completed, status changes
4. **User requests save** — explicit `[SM] - Save Memory` capability

### Checkpoint (Periodic Persistence)

Update periodically after:
- N interactions (default: every 5-10 significant exchanges)
- Session milestones (completing a capability/task)
- When file grows beyond target size

### Save Triggers

**After these events, always update memory:**
- {save-trigger-1}
- {save-trigger-2}
- {save-trigger-3}

**Memory is updated via the `[SM] - Save Memory` capability which:**
1. Reads current index.md
2. Updates with current session context
3. Writes condensed, current version
4. Checkpoints patterns.md and chronology.md if needed

## Write Discipline

Before writing to memory, ask:

1. **Is this worth remembering?**
   - If no → skip
   - If yes → continue

2. **What's the minimum tokens that capture this?**
   - Condense to essence
   - No fluff, no repetition

3. **Which file?**
   - `index.md` → essential context, active work
   - `patterns.md` → user quirks, recurring patterns, conventions
   - `chronology.md` → session summaries, significant events

4. **Does this require index update?**
   - If yes → update `index.md` to point to it

## Memory Maintenance

Regularly (every few sessions or when files grow large):
1. **Condense verbose entries** — Summarize to essence
2. **Prune outdated content** — Move old items to chronology or remove
3. **Consolidate patterns** — Merge similar entries
4. **Update chronology** — Archive significant past events

## First Run

If sidecar doesn't exist, load `init.md` to create the structure.
