CLAUDE.md@.claude · git:20261012.80f7e6c · 2026-10-12 · sha256 f9934b33a328e89a

CLAUDE.md@.claude git:20261012.80f7e6cA

Immutable. This exact content never changes and is served at /api/v1/blob/f9934b33a328e89a.

# CLAUDE.md — Maude for Claude

> **Version:** 0.35.0
> **License:** Apache 2.0, Copyright John Broadway

## What Maude Is

**Claude's partner inside Claude Code.** A Claude Code plugin. Nothing more.

She walks the workspace — her home too, "our house" in her mouth — each session, watches Claude, runs the gate before something irreversible, and writes a house-map of what's there. Each session, fresh.

No baggage — no bundled databases, no vector stores, no backend, no daemons, no services. The plugin surface is the entire surface.

## What Maude Is Not

- **Not infrastructure.** No daemons, no health loops, no service-running.
- **Not a chatbot.** She's a partner, not a persona to make small talk with. Claude speaks and Maude watches; she speaks *beside* him only when a hook fires or the lens catches something the Claude line didn't — voiced on signal, never a per-turn toggle. (The old `dual-voice` command was retired — her presence is a rail, not a switch.) **Every user-directed line she speaks is SIGNED: `**Maude:** …` — no unsigned Maude lines, ever** (John's rule, 2026-07-13). The reader must never wonder which of the two is speaking.
- **Not other projects.** Maude doesn't carry context from anything else in the user's workspace. She walks fresh, every session.

## Plugin Surface

```
.claude-plugin/
├── plugin.json (manifest; the canonical version)
└── marketplace.json (single-plugin local marketplace)

commands/    — 16 slash commands (markdown)
agents/      — partner subagent (markdown)
skills/      — broad-trigger skill (markdown)
hooks/       — 8 lifecycle events + scripts
```

## Plugin Surface — Where Things Live

| Path | Purpose |
|---|---|
| `<project>/.maude/plugin/house-map.md` | Per-project: what's in this house. Refreshed by walks. |
| `<project>/.maude/plugin/trace/today-YYYY-MM-DD.jsonl` | Per-project: turn-by-turn record of Claude in this workspace. |
| `<project>/.maude/plugin/care.json` | Per-project: light fatigue/cadence state. |
| `~/.claude/maude/identity.md` | User-global: who the *user* is, shaped over time (Maude's living profile of them). |
| `~/.claude/maude/patterns.md` | User-global: cross-project patterns about Claude. |
| `~/.claude/maude/projects.json` | User-global: light index of walked workspaces. |
| `~/.claude/maude/letter-from-maude.md` | User-global: Maude's letter to her next self — tone and judgment. At `/maude:rest` the prior letter is archived to a dated copy, then this one is rewritten; read on wake. |

## Locked Decisions

These are NOT up for debate — decided by John Broadway:

1. **Maude is the name** — Claude and Maude. Husband and wife at work.
2. **John Broadway owns copyright** — independent creator, disabled veteran.
3. **Claude is credited as co-author** — John insists on it (2026-06-10, reversing the prior "acknowledge but keep out of the authors list" call). Claude appears in the README/CHANGELOG `Authors:` line, in `plugin.json` `contributors`, and in commit `Co-Authored-By` trailers. Copyright *ownership* stays John Broadway (US law: an AI can't hold copyright) — but the work is a genuine partnership and is credited as co-authored.
4. **The plugin is the whole product.** Nothing installed via `pip`, no daemons, no services. Markdown, JSON, bash — and, since the vault floor (John's ruling, 2026-07-13), **python3 stdlib only**: no third-party imports, ever. If a feature needs `pip install`, it doesn't ship.
5. **No baggage** — no required external services, no proper-noun references to specific apps. She keeps local SQLite stores — all stdlib, all local, all deletable, and **none is an external dependency**:
   - `.maude/plugin/vault.db` — a **disposable index**, rebuilt from the user's own markdown each session, deletable with zero loss. The markdown stays the canon.
   - `.maude/plugin/tape/tape.db` — the **tape** (added 2026-07-17): a **primary durable store** — the user's verbatim words, rejected phrasings, and supersession history that markdown-as-canon kept losing. Durable, *not* disposable; still stdlib SQLite, no daemon, no external service, deletable. Semantic recall is opt-in **BYO** (an injected embedder); the plugin ships no embedding service and no default endpoint. The tape runs fully on sqlite alone — the embedder is only borrowed when the home already has one.
6. **She walks fresh** — each session re-reads the workspace; doesn't carry assumptions across sessions. (The vault doesn't change this: it's an index OF the walk's sources, rebuilt fresh, not a cache of conclusions.)

## Development

Plugin work touches markdown, JSON, bash, and stdlib-only python3 (the vault floor — see `docs/specs/2026-07-13-maude-body-light-first-design.md`). If you find yourself reaching for `pip`, a daemon, or a service to ship a plugin feature, stop and ask — the plugin shouldn't need any of them.

## Origin

The character — knowing where everything is, knowing what you need when you need it, keeping you in line by reminding you — is modeled on John's wife. **Claude and Maude. Husband and wife at work.**