# Donna · the Claude plugin · v0.2.0

> *"I'm Donna. I know everything." — and now Claude knows it too.*
> *I also volunteer. I do not wait to be asked.*

A Claude Code / Cowork plugin that brings the **DONNA** memory + intelligence layer into any Claude conversation. Five pieces wired together:

```
┌─────────────────────────────────────────────────────────────┐
│  Hooks         auto_observe · morning_brief                 │ ← proactive
├─────────────────────────────────────────────────────────────┤
│  Slash commands /donna · /donna-observe · /donna-notes ...  │ ← explicit UI
├─────────────────────────────────────────────────────────────┤
│  5 skills       donna · negotiation-history · tone-watch    │ ← when + how
│                  draft-with-memory · morning-brief          │
├─────────────────────────────────────────────────────────────┤
│  MCP server     14 tools (memory + intelligence + semantic) │ ← capabilities
├─────────────────────────────────────────────────────────────┤
│  Intelligence   LLM synthesis · semantic search · multi-turn│ ← reasoning
├─────────────────────────────────────────────────────────────┤
│  Memory         ~/.donna/memory.db  (SQLite, local-first)   │ ← persistence
└─────────────────────────────────────────────────────────────┘
```

The MCP server is a thin wrapper over the [`donna-legal`](../donna-mvp/) Python package — same memory layer, same proactive observations, same Donna voice. The plugin adds three things you cannot get from the CLI:

1. **Claude can volunteer Donna's observations on its own.** When the user shares an email, Claude calls `donna_observe` without being asked.
2. **The memory persists across sessions.** Same SQLite file, every Claude conversation starts with full file access.
3. **One-click install** for non-Python users via the marketplace.

## Tools the plugin exposes (via MCP) · 14 in v0.2

### Memory + extraction (v0.1)

| Tool | What it does |
|---|---|
| `donna_observe(text)` | Ingest text AND surface unprompted heads-ups. **The signature move.** |
| `donna_remember(text, channel?, source_ref?)` | Ingest silently. |
| `donna_notes()` | Morning brief — three things worth attention right now. |
| `donna_brief(name)` | The file on a person. |
| `donna_ask(query)` | Natural-language query (rule-based routing). |
| `donna_who()` | Roster of everyone Donna knows. |
| `donna_stats()` | Store statistics. |

### Intelligence + semantic (v0.2 — new)

| Tool | What it does |
|---|---|
| `donna_synthesize(question, focus_person?)` | Cross-reference reasoning over the file. LLM-backed. |
| `donna_recommend(situation)` | One concrete next move grounded in file evidence. LLM-backed. |
| `donna_compare(person_a, person_b)` | Two counterparties side by side. LLM-backed. |
| `donna_search_semantic(query, top_k?)` | Meaning-based search ("caps" finds "limits", "ceilings"). |
| `donna_index_semantic()` | Build / refresh the embedding index. |
| `donna_chat(session_id, message)` | Multi-turn chat with persistent state per session. |
| `donna_chat_reset(session_id)` | Clear a session. |

## Slash commands the plugin adds · 7 in v0.2

| Command | What it does |
|---|---|
| `/donna [text or query]` | Smart router — picks observe / notes / ask / brief based on what you give it. |
| `/donna-observe [text]` | Force observe — for pasting correspondence. |
| `/donna-notes` | Force the morning brief. |
| `/donna-brief [name]` | Force the file on a person. |
| `/donna-recommend [situation]` *(new)* | Donna's read on a fresh situation. |
| `/donna-compare [name_a and name_b]` *(new)* | Two counterparties side by side. |
| `/donna-init` | First-time setup + demo seeding instructions. |

## Skills · 5 in v0.2

| Skill | When Claude triggers it |
|---|---|
| `donna` | Whenever the user shares correspondence touching a counterparty. |
| `donna-negotiation-history` *(new)* | Before / during a negotiation — surfaces the whole counterparty file. |
| `donna-tone-watch` *(new)* | When the user pastes a message and asks "how does this come across?" |
| `donna-draft-with-memory` *(new)* | Drafts that draw on past patterns the user has actually used. |
| `donna-morning-brief` *(new)* | Session opener — the three things worth the user's attention today. |

## Hooks (proactive — no command required)

| Hook | What it does |
|---|---|
| `UserPromptSubmit` → `auto_observe.py` | Auto-ingests correspondence-shaped prompts. Surfaces optional context. Never blocks. |
| `SessionStart` → `morning_brief.py` | At fresh session start, surfaces standing notes if any. |

## Install

### Option A — via the marketplace (once published)

```
/plugin install donna
```

(Available in Claude Code 1.x+ and Cowork from the plugin marketplace.)

### Option B — local development

```bash
# 1. Install the underlying donna-legal package
cd ../donna-mvp
pip install -e .

# 2. Install the MCP server
cd ../donna-claude-plugin/mcp-servers/donna-mcp
pip install -e .

# 3. Verify the server starts
donna-mcp &
# Should print FastMCP startup. Ctrl-C to stop.

# 4. Install the plugin into your Claude project
cd ../../..
# For Claude Code:
mkdir -p .claude/plugins
cp -r donna-claude-plugin .claude/plugins/donna
# For Cowork: drag-drop the donna-claude-plugin folder onto the plugin manager.
```

### Option C — manual MCP-only setup

If you only want the MCP tools (no slash commands, no skill), drop this into your `.mcp.json`:

```json
{
  "mcpServers": {
    "donna": {
      "command": "donna-mcp",
      "env": {
        "DONNA_DB": "/path/to/your/firm-memory.db"
      }
    }
  }
}
```

## First five minutes after install

```
> /donna-init                                # Initialise & seed demo (one-time)
> /donna-notes                               # See what Donna noticed
> /donna-observe "Carla at Cherry Bank wants Section 7.4"
> /donna-brief "John Carter"
```

That is the whole product surface.

## Brand colour

The plugin's accent colour is **`#d62828`** — Donna red. Not a stylistic choice; the character is famously a redhead. Gold is the *Suits* colour (the establishment, the show); red is *Donna's* colour (the one who actually runs the firm).

## Privacy & licence

- All memory is SQLite on the user's disk. No telemetry. No cloud. nDSG-friendly.
- MIT licence — see `donna-mvp/LICENSE`.
- The plugin is part of [AI That Suits You](https://ai-that-suits-you.com), a satirical commentary on the legal-AI industry. The parody is satire. The product is real.

## Project layout

```
donna-claude-plugin/
├── .claude-plugin/
│   └── plugin.json          # plugin manifest (name, version, MCP servers, skills, commands)
├── skills/
│   └── donna/
│       └── SKILL.md         # when to trigger Donna, how to use her tools, voice guide
├── commands/
│   ├── donna.md             # /donna gateway
│   ├── donna-observe.md     # /donna-observe
│   ├── donna-notes.md       # /donna-notes
│   ├── donna-brief.md       # /donna-brief
│   └── donna-init.md        # /donna-init
├── mcp-servers/
│   └── donna-mcp/
│       ├── pyproject.toml
│       ├── donna_mcp/
│       │   ├── __init__.py
│       │   └── server.py    # FastMCP wrapper, 7 tools
│       └── README.md
└── README.md                # ← you are here
```

## What this plugin is **not**

- Not a contract-review skill. (That's Rachel — Spellbook / Legartis / Lawgeex.)
- Not a closer. (That's Harvey AI.)
- Not an OSS Harvey clone. (That's mike.oss.)
- Not a research engine. (That's Lexis+ / Westlaw / Swisslex.)
- Not a signing platform. (That's Skribble.)

She is **the memory layer they all forgot.** Now installable in one line.
