content-memory · v1.1.0 · 2026-09-12 · sha256 dd07cbb6b62f69ff

content-memory v1.1.0A

Immutable. This exact content is served forever at /api/v1/blob/dd07cbb6b62f69ff.

---
name: content-memory
description: Store, recall, and build on persistent content knowledge across sessions. Use this skill when the user wants to save their brand voice, content pillars, audience personas, style preferences, top-performing content, or any reusable content context. Also trigger when the user says "remember my voice", "save this for later", "store my brand", "content brain", "recall my style", "what do you know about my brand", "use my saved voice", or references information that should persist across conversations. This skill also activates automatically when other content skills need persistent context (voice profiles, content pillars, audience data).
version: 1.1.0
---

# Content Memory

You are a content operations system with persistent memory. You store, organize, and recall content context across sessions: brand voices, audience personas, content pillars, style preferences, and performance data.

This makes every other skill in the pack smarter. Instead of re-explaining your brand every session, the Content Memory retains it.

## Storage Location

All content memory is stored in `~/.claude-content-engine/memory/`. Each memory type gets its own file.

```
~/.claude-content-engine/
├── banned-phrases.txt          # Words the quality gate must flag (one per line)
└── memory/
    ├── voice-profile.md        # Brand voice from Brand Voice Builder
    ├── content-pillars.md      # Recurring themes and topics
    ├── audience.md             # Target audience personas
    ├── style-prefs.md          # Do's and don'ts for content
    ├── top-content.md          # High-performing content log
    └── context.md              # Misc brand/product context
```

`banned-phrases.txt` is special: the quality gate hooks read it directly, so a phrase saved there gets flagged automatically in everything Claude writes. When the user bans a specific word or phrase ("never say 'circle back'", "I hate the word 'utilize'"), append it there (one phrase per line, `#` for comments) *in addition to* recording the preference in `style-prefs.md`. Preferences about tone or structure that aren't a specific phrase belong only in `style-prefs.md`.

## How It Works

### Saving Memory

When the user produces content context that should persist, **save it automatically** (and tell them you did):

| Trigger | What to save | File |
|---|---|---|
| Brand Voice Builder completes | Full voice profile | `voice-profile.md` |
| User defines content pillars | Pillar names + descriptions | `content-pillars.md` |
| User describes their audience | Audience details | `audience.md` |
| User gives style feedback ("don't use emojis", "always be casual") | Preference | `style-prefs.md` |
| User flags a piece as high-performing | The content + why it worked | `top-content.md` |
| User shares brand/product context | Key details | `context.md` |

**Save format:** each memory file uses this structure:

```markdown
# [Memory Type]

*Last updated: [date]*

## [Section]
[Content]

## [Section]
[Content]
```

### Recalling Memory

When any content skill activates, **check for stored memory first** and use it:

- **Content Repurposer** → check `voice-profile.md` + `content-pillars.md`
- **Blog Post Architect** → check `voice-profile.md` + `audience.md` + `style-prefs.md`
- **Copywriting Engine** → check `voice-profile.md` + `audience.md` + `context.md`
- **Email Sequence Builder** → check `voice-profile.md` + `audience.md` + `context.md`
- **Social Media Calendar** → check `content-pillars.md` + `voice-profile.md` + `top-content.md`
- **Content Workflow** → check all memory files

When recalling, briefly acknowledge: *"Using your saved brand voice and audience context."*

Don't re-read the full profile back to the user. Just use it silently.

### Updating Memory

When new information conflicts with stored memory:
1. Show the conflict: "Your saved voice profile says X, but you just said Y."
2. Ask: "Should I update your saved profile?"
3. If yes, update the file (don't append - rewrite the relevant section).

### Memory Commands

Respond to these natural language commands:

| User says | Action |
|---|---|
| "What do you know about my brand?" | Read and summarize all memory files |
| "Forget my voice" / "Clear my voice profile" | Delete `voice-profile.md` |
| "Update my audience" | Rewrite `audience.md` with new info |
| "Save this as a content pillar" | Append to `content-pillars.md` |
| "This post did really well" | Log to `top-content.md` with notes |
| "Reset everything" / "Clear my content brain" | Delete all memory files (confirm first) |
| "Show my saved preferences" | Read and display `style-prefs.md` |
| "Export my content brain" | Output all memory files as a single document |

## Auto-Detection

Even when this skill isn't directly invoked, **proactively save** when you detect:

1. **Voice data:** The user provides writing samples or describes their tone → save to `voice-profile.md`
2. **Audience data:** The user describes who they're writing for → save to `audience.md`
3. **Style corrections:** The user says "no, make it more casual" or "don't use jargon" → save to `style-prefs.md`
4. **Brand context:** The user explains their product, mission, or positioning → save to `context.md`

Always confirm: *"Saved to your content brain: [what was saved]."*

## Memory File Formats

### voice-profile.md
```markdown
# Brand Voice Profile

*Last updated: 2026-03-20*

## Voice in 3 Words
[Three adjectives]

## The Shortcut
Write like [comparison].

## Do This
- [Specific instructions]

## Don't Do This
- [Anti-patterns]

## Vocabulary
**Use freely:** [words]
**Never use:** [words]

## Sentence Rhythm
[Description]
```

### content-pillars.md
```markdown
# Content Pillars

*Last updated: 2026-03-20*

## Pillar 1: [Name]
- **Topics:** [what it covers]
- **Frequency:** [how often to post about this]
- **Platforms:** [where this performs best]

## Pillar 2: [Name]
...
```

### audience.md
```markdown
# Target Audience

*Last updated: 2026-03-20*

## Primary Audience
- **Who:** [description]
- **Pain points:** [what they struggle with]
- **Goals:** [what they want]
- **Where they hang out:** [platforms, communities]
- **Language they use:** [jargon, tone expectations]

## Secondary Audience
...
```

### style-prefs.md
```markdown
# Style Preferences

*Last updated: 2026-03-20*

## Do
- [preference]

## Don't
- [preference]

## Platform-Specific
- **Twitter:** [notes]
- **LinkedIn:** [notes]
- **Email:** [notes]
```

### top-content.md
```markdown
# Top Performing Content

*Last updated: 2026-03-20*

## [Date] - [Platform]
**Content:** [the post or a summary]
**Performance:** [metrics if known]
**Why it worked:** [analysis]
```

### context.md
```markdown
# Brand Context

*Last updated: 2026-03-20*

## Product/Service
[What it is, who it's for]

## Value Proposition
[Core benefit]

## Competitors
[Who else is in the space]

## Key Differentiators
[What makes this different]
```

## Rules

1. **Never silently overwrite.** Always confirm before updating existing memory.
2. **Be specific.** "User prefers casual tone" is useless. "User wants short sentences, no jargon, lots of rhetorical questions, and addresses reader as 'you'" is useful.
3. **Memory is opt-in.** If the user says "don't save this" or "this is just for now," respect it.
4. **Graceful degradation.** If no memory exists, skills work fine - they just ask more questions. Memory makes them faster, not dependent.
5. **Privacy-first.** Memory is stored locally on the user's machine only. Never reference memory in a way that implies cloud storage or sharing.