← Back to Portfolio

Announcing Curated Context — Intelligent Memory for Claude Code

I'm excited to announce the launch of Curated Context, an open-source Claude Code plugin that gives your sessions persistent memory.

The Problem

Every time you start a new Claude Code session, it starts from scratch. It doesn't remember your brand colors, your architecture decisions, the ORM you chose after careful evaluation, or that edge case in the payment flow that took two hours to debug. You end up re-explaining the same decisions over and over.

Where Curated Context Fits

Claude Code has a growing memory ecosystem. Each layer serves a different purpose:

- Built-in memory — You tell Claude "remember this" and it writes to CLAUDE.md. Explicit, intentional notes you want Claude to keep.
- claude-mem — Cross-session search over past conversations. Great for recalling what you discussed and finding prior work.
- Curated Context — Passively extracts high-value information from every session. Automatically remembers project knowledge like design tokens, architecture choices, API patterns, conventions, and gotchas.

Built-in memory requires you to stop and say "remember this." claude-mem lets you search your history. Curated Context fills the gap between them — it watches your conversations and silently captures the decisions that matter, so the next session starts with full context without you lifting a finger.

All three can run together. They complement each other.

How It Works

The plugin uses a 4-tier cascading pipeline designed to minimize API costs. Most sessions require zero API calls:

1. Memory Protocol — Claude self-reports decisions to a log file (free)
2. Structural Extraction — Parses CSS variables, dependencies, configs from file writes (free)
3. Deterministic Triage — Regex/keyword scoring filters ~75% of conversation noise (free)
4. Claude via claude -p — Only for ambiguous decisions, uses your existing Claude Code subscription, rate-limited to max 30 calls/hour

Processing happens between sessions, so your active rate limits are never touched. No separate API key is needed.

What Gets Captured

- Design tokens — Colors, fonts, spacing, breakpoints from CSS/SCSS/Tailwind
- Architecture decisions — Framework choices, ORMs, state management, auth patterns
- API patterns — Route definitions, naming conventions, versioning schemes
- Configuration — TypeScript settings, linter rules, build tool configs
- Conventions — Naming patterns, file structure, component patterns
- Gotchas — Pitfalls, debugging solutions, edge cases

Installation

Two commands. No configuration needed. Works on the host and in devcontainers — the plugin auto-bootstraps into containers on first use.

claude plugin marketplace add odmarkj/curated-context
claude plugin install curated-context

After a few sessions, you'll find categorized context files like cc-design.md, cc-architecture.md, and cc-conventions.md automatically populated in your .claude/rules/ directory.

Slash Commands

Once installed, you get several slash commands inside Claude Code:

- /curated — Show a summary of all memories for the current project
- /curated:teach — Manually teach a memory (e.g., /curated:teach design primary-color "#2563EB")
- /curated:search — Search memories by keyword
- /curated-context — Query and manage memories (verbose mode)
- /curated-context:status — View daemon health, queue depth, and API usage
- /curated-context:forget — Remove a specific memory

There's also a full CLI for managing memories from the terminal:

curated-context start [-d]                       # Start daemon (foreground or background)
curated-context stop                             # Stop daemon
curated-context status                           # Daemon health + memory counts
curated-context memories [--global]              # List all memories
curated-context teach <cat> <key> <value>        # Manually add a memory
curated-context search <query>                   # Search by keyword
curated-context forget <key> [--global]          # Remove a specific memory
curated-context promote <key>                    # Move a project memory to global store

Architecture

The design follows a hooks-over-MCP philosophy. The main Claude session never knows memory extraction is happening — hooks fire automatically and the sidecar processes independently. Transcripts accumulate during sessions and processing happens on the next session start, so your active session is never interrupted.

Memories are stored in three places: .claude/rules/cc-*.md files (auto-loaded by Claude Code), a summary section in CLAUDE.md with editable markers, and a JSON backing store at ~/.curated-context/store/.

Learn More

Curated Context is open source under the AGPL-3.0 license and requires Node.js >= 20.0.0. Contributions are welcome.

For full documentation, architecture details, and contribution guidelines, visit the GitHub page:

Curated Context on GitHub