โœฆ

Stop Repeating Yourself to Claude Code

The 2 repos that make it remember how you work.

You commented REPOS. Here's the full breakdown.

Every Claude Code session starts fresh. Your preferences, your tone, your workflow rules โ€” gone. You type the same instructions again. Session after session. "Use TypeScript strict." "Run tests first." "Match my brand voice."

Most people try to fix this with a massive CLAUDE.md file. They dump every rule, preference, and instruction into one document. The file grows to 200+ lines. Claude loads all of it every session โ€” even when 80% has nothing to do with the current task.

Two free repos fix both problems. One handles rules. The other handles memory.

REPO 01

CARL

Context Augmentation & Reinforcement Layer

CARL replaces the monolithic CLAUDE.md with domain files โ€” small groups of rules that load based on what you're doing right now.

Writing code? Your dev rules load. Creating content? Your content rules load. Switch tasks and the rules swap automatically. No manual switching. No bloated context.

How it works

You create domain files in a .carl/ folder. Each domain has a name, recall keywords, and a set of rules. When you mention a keyword, CARL loads the matching domain. When the task changes, old rules unload and new ones take their place.

carl-demo.sh
$ "Build a React component"

CARL: Loading [GLOBAL] [DEV]
โ†’ test before marking complete
โ†’ read files before editing
โ†’ use absolute paths

$ "Write a carousel about AI tools"

CARL: Loading [GLOBAL] [CONTENT]
โ†’ use brand voice from memory
โ†’ follow 8-slide framework
โ†’ apply stop-slop rules

// Zero manual switching.

CARL ships with example domains. The real value is writing your own. Every workflow you repeat becomes a domain. Every mistake Claude keeps making becomes a rule. Over time, CARL learns how you work โ€” through files you control, not AI magic.

The domains I built

I run 4 custom CARL domains: DEV for coding (strict mode, test-first, read before edit), CONTENT for carousels and captions (brand voice, demand framework, stop-slop rules), RESEARCH for trend analysis (source quality, date filtering, synthesis format), and CLIENT for project-specific preferences (naming, tech stack, tone). Each domain is 15-30 lines. They load when relevant and disappear when they're not.

GitHub

github.com/ChristopherKahler/carl

291 stars ยท MIT License ยท Mac, Windows, Linux

REPO 02

BASE

Builder's Automated State Engine

CARL handles rules. BASE handles memory.

Long Claude Code sessions have a hidden problem: important decisions you made early in the session get buried under thousands of lines of tool output and code. A design decision at minute 5, a correction at minute 20, a key insight at minute 45 โ€” technically Claude "saw" them but they've drifted so far back in context they stop influencing behaviour.

BASE fixes this with a system called PSMM (Persistent Session Memory Manager). When something significant happens, Claude logs it. On every subsequent prompt, BASE re-injects those entries into Claude's context. Important moments stay relevant for the entire session.

What BASE tracks

Session memory (decisions, corrections, insights that stay hot), project tracking across multiple workspaces, workspace health metrics, and a portfolio dashboard for managing everything you're building. BASE turns Claude Code from a per-session tool into a workspace that maintains itself.

base-session.sh
minute 5: "Use the carousel framework, not tips"
PSMM: Logged as session insight โœ“

minute 20: "Stop-slop: no binary contrasts"
PSMM: Logged as correction โœ“

minute 45: "Rate limit angle passed honesty check"
PSMM: Logged as decision โœ“

// All three stay active at minute 90.
// No drift. No forgotten corrections.

BASE also works with CARL. When a session insight becomes something you want enforced permanently, BASE can stage it as a CARL rule proposal. Your temporary correction graduates into a persistent rule. The two systems feed each other.

GitHub

github.com/ChristopherKahler/base

Part of the CARL ecosystem ยท MIT License

TOGETHER

How they connect

CARL and BASE are independent โ€” each works without the other. Together they cover both sides of the persistence problem.

CARL
Rules & preferences
Loads by task context
Stored in domain files
Governs behaviour
BASE
Memory & state
Persists across prompts
Logged automatically
Manages context

CARL decides what rules to enforce. BASE ensures important decisions stay relevant. Between them, Claude Code stops losing your preferences and stops forgetting what happened 20 minutes ago.

Both repos are built by Christopher Kahler and are part of a larger 6-tool ecosystem that includes PAUL (structured dev workflow), SEED (project incubator), AEGIS (multi-agent codebase audits), and Skillsmith (reusable skill builder). CARL and BASE are the foundation layer. Everything else plugs into them.

Getting started

Both install in under 5 minutes. You need Node.js and Claude Code.

install.sh
# Install CARL
$ npm i -g @chrisai/carl-core

# Install BASE
$ npm i -g @chrisai/base-engine

# Restart Claude Code
# Both are now active.

After install, CARL creates a .carl/ folder with example domains. Start by editing those to match your workflow, then create your own domains as you discover patterns in how you work.

BASE starts logging session memory immediately. Use the MCP tools to check what's been captured and how it's influencing Claude's behaviour.

How I use them

I built 4 CARL domains for my workflow. Each one is a markdown file with 15-30 rules.

๐Ÿ“ .carl/domains/

dev.md
Strict mode, test-first, read before edit, absolute
paths, verify output before committing

content.md
Brand voice, 8-slide demand framework, stop-slop
rules, caption format, hashtag strategy

research.md
Source quality filters, date recency, synthesis
format, competitor analysis structure

client.md
Per-client naming, tech stack, tone preferences,
delivery format, scope boundaries

When I open Claude Code and say "write a carousel about Claude Code repos," CARL auto-loads my content domain. My brand voice loads. My carousel framework loads. My copy rules load. I don't mention any of them. CARL matches the keywords and handles it.

When I switch to debugging a client project, the content rules unload and my dev + client domains load instead. Different task, different rules, zero manual switching.

Meanwhile BASE keeps session memory alive across the entire session. If I decide at minute 10 that a carousel topic failed the honesty check, that decision stays active at minute 60 when I'm writing the caption. No drift. No forgotten corrections.

Where to start

Install CARL first. Write one domain file for the workflow you repeat most often. For most people that's either coding or content creation. Keep it short โ€” 15-20 rules. Use it for a week. You'll notice Claude stops needing repeated instructions within the first session.

Then install BASE. Let it run in the background for a few sessions. Check the session memory logs and see what it captures. You'll start to see patterns in the corrections you make โ€” those patterns become new CARL rules.

Both repos have detailed README files with examples and configuration guides. Start there, then adapt for your own workflow.

Coming next

The CARL domain files I use for content creation

The exact rules. The keyword triggers.
Ready to copy into your own setup.

Follow @mikemeansbusiness_ai

If this was useful, reply with your workflow. I'll tell you which domain to build first.

โ€” Mike

โœฆ Mike Means Business ยท @mikemeansbusiness_ai