diff --git a/README.md b/README.md
index b1d2507..17930ce 100644
--- a/README.md
+++ b/README.md
@@ -25,18 +25,21 @@ Full documentation lives in [`docs/`](./docs/guide/index.md) (a hosted site is o
### How they fit together
-```
-@gemstack/ai-sdk agent runtime (the "verbs")
-@gemstack/ai-skills capability bundles (the composable "nouns") -> ai-sdk
-@gemstack/ai-autopilot orchestration / autonomy (the "director") -> ai-sdk (+ skills)
-@gemstack/ai-mcp agent <-> MCP bridge (the "adapter") -> ai-sdk
------------------------------------------------------------------------------------
-@gemstack/mcp standalone MCP server framework agent-agnostic, not ai-*
-@gemstack/connectors connector contract (define once, mount many) -> mcp
-@gemstack/connector-* first-party connectors (github, drive, ...) -> connectors
+Two independent stacks. Arrows point to what a package depends on; nothing points "up."
+
+```mermaid
+graph TD
+ subgraph fam["AI family · depends on the agent runtime"]
+ skills["ai-skills
capability bundles"] --> sdk["ai-sdk
agent runtime"]
+ autopilot["ai-autopilot
orchestration"] --> sdk
+ aimcp["ai-mcp
agent ↔ MCP bridge"] --> sdk
+ end
+ subgraph agn["Agent-agnostic · not ai-*"]
+ connstar["connector-*
first-party connectors"] --> connectors["connectors
connector contract"] --> mcp["mcp
MCP server framework"]
+ end
```
-The `ai-` prefix means **"depends on the agent runtime."** `skills`, `autopilot`, and `ai-mcp` all depend on `ai-sdk`; `ai-sdk` depends on none of them, and nothing depends "up." A package about AI that is agent-agnostic (like `@gemstack/mcp`) is a peer of the family, not a member of it.
+The `ai-` prefix means **"depends on the agent runtime."** `skills`, `autopilot`, and `ai-mcp` all depend on `ai-sdk`, which depends on none of them. A package about AI that is agent-agnostic (like `@gemstack/mcp`) is a peer of the family, not a member of it.
### Connectors