Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Explain what just happened under the hood — the context, MCP tools, and hooks behind Dex's last response — as AI education. Use when the user says 'how did you do that', 'what just happened', 'explain the mechanics'. Not for a system health check; use `dex-doctor`.
.claude/skills/davekilleen-xray/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 389% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 214% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 268% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 674% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 421% | 0% |
Default behavior: Explain what just happened in THIS conversation — the specific tools, files, and context that were used, with educational explanations of WHY.
With qualifiers: Deep dive into specific topics (AI fundamentals, Dex architecture, how to extend).
The best way to learn is by examining what just happened, not abstract concepts. When you run /xray:
The outcome: Users learn AI by examining their own conversations, then go deeper if curious.
Tone: Like a senior engineer doing a code review of what just happened. "Here's what I did and why."
When user just says /xray with no qualifier: → Immediately explain what happened in this conversation → Don't show a menu, just show the work
| Command | What it does | |---------|--------------| | /xray | (default) Explain what just happened in this chat | | /xray ai or /xray fundamentals | First principles: context windows, tokens, statelessness | | /xray dex or /xray architecture | How Dex works: CLAUDE.md, hooks, MCPs, skills | | /xray boot or /xray session start | The session startup sequence | | /xray extend or /xray customize | How to customize and build on Dex yourself |
This is the primary mode. When user runs /xray, explain what happened.
Look at the current conversation and identify:
<previous_session_memories> etc.)Output format:
markdown## 🔬 X-Ray: What Just Happened Let me explain what happened under the hood in our conversation. --- ### 📖 The Story of This Chat Here's what I did, step by step: **1. Session Started** Before you typed anything, the system loaded: - `CLAUDE.md` (~X tokens) — My personality, your preferences, available tools - Session memories from earlier today — [list what was injected] - [Any other context visible from hooks] **Why this matters:** Without those session memories, I'd have no idea about [specific context]. That came from a **session hook** that runs before you type. **2. You Asked: "[summarize their first message]"** To respond, I: - Read `[file 1]` — Because [reason] - Read `[file 2]` — To check [what] - Used [tool/MCP] — To [action] **Why these files?** Your CLAUDE.md tells me where to look. It says [quote relevant instruction]. Without those instructions, I wouldn't know your file structure. **3. [Continue for each major exchange in the conversation]** --- ### 🔧 Tools Used This Session | Tool | Times Used | What For | |------|------------|----------| | `read` | X | Reading vault files | | `write` | X | Creating new content | | `edit` | X | Updating existing files | | `bash` | X | Running commands | | [other tools] | X | [purpose] | **Why tools matter:** Without tools, I can only generate text. Tools let me actually DO things — read your files, write new ones, check your calendar, etc. --- ### 💡 Key Insight: The Context Window Everything I "know" right now is what's in the **context window**:
┌─────────────────────────────────────────────────┐ │ What I can see (the context window) │ ├─────────────────────────────────────────────────┤ │ ✓ CLAUDE.md (loaded at start) │ │ ✓ Session memories (injected by hooks) │ │ ✓ Our full conversation so far │ │ ✓ Every file I've read this session │ │ ✓ Every tool result I've received │ ├─────────────────────────────────────────────────┤ │ ✗ Files I haven't read │ │ ✗ Previous sessions (unless summarized) │ │ ✗ Anything not loaded into context │ └─────────────────────────────────────────────────┘
If something isn't in this window, I literally don't know it exists.
---
### 📁 Files Touched This Session
**Read (loaded into my context):**
- `[file]` — [why it was needed]
- [continue for each file]
**Written/Modified:**
- `[file]` — [what was created/changed]
- [continue for each file]
**Why this matters:** Every file I read uses "tokens" (space in the context
window). I try to read only what's relevant, not everything.
---
### 🎓 Concepts You Just Saw in Action
| What Happened | The Underlying Concept |
|---------------|------------------------|
| I knew about earlier conversations | **Session hooks** inject context at start |
| I read CLAUDE.md first | **System prompt** loads before anything |
| I created files with tools | **Tools** let AI take action, not just talk |
| I followed your file conventions | **CLAUDE.md instructions** define your structure |
| I didn't know about [X] | **Context limitation** — only know what's loaded |
---
### 🔮 What You Could Customize
Based on what just happened:
**1. Add to CLAUDE.md**
If you want me to always [behavior], add it to your `USER_EXTENSIONS` block.
**2. Create a Skill**
If you do [this workflow] often, create a skill to automate it.
**3. Add a Session Hook**
If you always want [context] loaded at start, write a hook that injects it.
---
### 🎓 Want to Go Deeper?
- `/xray ai` — First principles: context windows, tokens, statelessness
- `/xray dex` — Full architecture: CLAUDE.md, hooks, MCPs, skills, vault
- `/xray boot` — The session startup sequence in detail
- `/xray extend` — Step-by-step guide to customizing
Or ask anything: "How do hooks work?", "What's an MCP?", "How can I add my own tools?"/xray ai)Purpose: Teach the core concepts that make everything else make sense.
markdown## 🧠 How AI Actually Works Let me explain the core concepts that underpin everything Dex does. --- ### The Big Truth: AI Has No Memory **The fundamental problem:** Every time you start a new chat, Claude has amnesia. It doesn't remember yesterday's conversation. It doesn't know your name, your projects, or what you discussed last week. This is true for ALL LLM-based AI — ChatGPT, Claude, Gemini, all of them. **Why?** LLMs are "stateless." They process text in, text out, with no permanent storage between sessions. Each conversation starts from zero. **So how does Dex remember things?** We engineer around the limitation. That's what Dex is — clever engineering to give a forgetful AI the *appearance* of memory, context, and continuity. --- ### Concept 1: The Context Window When you chat with an AI, there's an invisible "window" of text the AI can see:
┌─────────────────────────────────────────────────┐ │ THE CONTEXT WINDOW │ │ (Everything the AI knows about THIS chat) │ ├─────────────────────────────────────────────────┤ │ • System prompt (CLAUDE.md) │ │ • Injected context (session memories, etc.) │ │ • Our conversation so far │ │ • Any files I've read │ │ • Tool results (MCP responses) │ └─────────────────────────────────────────────────┘ ↓ AI generates response based on ALL of this
**Key insight:** The AI can only work with what's IN the context window.
If information isn't in there, the AI doesn't know it exists.
**Dex's job:** Get the RIGHT information INTO that window at the RIGHT time.
---
### Concept 2: Tokens (The Currency)
Context windows are measured in "tokens" (roughly 4 characters = 1 token).
- Claude's window: ~200,000 tokens (~150,000 words)
- Your CLAUDE.md: ~4,500 tokens
- A typical person page: ~500 tokens
**Why it matters:** There's a budget. Load too much context and you hit limits
or slow things down. Load too little and the AI lacks crucial information.
**Dex's approach:** Selective loading. Don't dump everything — load what's
*relevant* to what you're asking about.
---
### Concept 3: System Prompts (The Personality)
Before your first message, there's already text in the context window:
the **system prompt**. For Dex, that's `CLAUDE.md`.
┌─────────────────────────────────────────────────┐ │ CLAUDE.md (loaded before you type anything) │ ├─────────────────────────────────────────────────┤ │ "You are Dex, a personal knowledge assistant" │ │ "User's pillars: your pillars]" │ │ "When tasks are mentioned, use Work MCP" │ │ "Person pages are in 05-Areas/People/" │ │ ... (hundreds more lines of context) │ └─────────────────────────────────────────────────┘
**The power move:** Everything in CLAUDE.md influences EVERY response.
It's like setting the AI's personality and knowledge before you say hello.
---
### Concept 4: Tools (How AI Does Things)
Claude can't *do* things by default — it can only generate text. But with
**tools**, it can take actions:
- Read files from your computer
- Write new files
- Run commands
- Query databases
- Call APIs
In Dex, tools come from **MCP servers** (Model Context Protocol). Each MCP
gives Claude new capabilities.
**Without tools:** Claude can only talk.
**With tools:** Claude can take action on your behalf.
---
### Concept 5: The Conversation Loop
Here's what happens every time you send a message:
↓
↓
↓
↓
**Key insight:** Each turn, Claude sees MORE context (the history grows).
Long conversations = more context = closer to limits.
---
### So What?
Understanding these fundamentals helps you:
1. **Know why Dex loads things at session start** — to get context into the window
2. **Understand why some info is "missing"** — it wasn't loaded into context
3. **See opportunities to extend** — what else could be loaded? what tools could help?
---
**Want to see Dex's specific architecture?** Try `/xray dex`/xray dex)Purpose: Explain the specific building blocks that make Dex work.
markdown## 🏗️ How Dex Works: The Architecture Now that you understand AI fundamentals, here's how Dex engineers around the limitations to create something useful. --- ### The Core Insight **Problem:** Claude forgets everything between sessions. **Solution:** Store everything in FILES and reload context intelligently.
┌─────────────────────────────────────────────────┐ │ YOUR VAULT │ │ (Plain Markdown files YOU own) │ ├─────────────────────────────────────────────────┤ │ • CLAUDE.md - Core context & personality │ │ • 05-Areas/People/ - Relationship memory │ │ • 03-Tasks/Tasks.md - Work in progress │ │ • System/Session_Memory/ - Past conversations │ │ • System/Work_In_Progress.md - Active projects │ └─────────────────────────────────────────────────┘ ↓ loaded at session start ↓ ┌─────────────────────────────┐ │ AI Context Window │ └─────────────────────────────┘
**The magic:** Your knowledge lives in files. AI reads files.
Therefore, AI can "remember" by reading what was written before.
---
### Building Block 1: CLAUDE.md (The Brain)
The system prompt that defines who Dex is and how it behaves.
**Location:** `/CLAUDE.md` (root of your vault)
**Contains:**
- Your user profile (name, role, company)
- Your strategic pillars
- How Dex should behave
- What skills are available
- References to other docs
**Why it matters:** This loads FIRST, before anything else. It shapes every
response. Edit this, and you change how Dex thinks.
**You can customize:**<!-- Your personal additions go here -->
---
### Building Block 2: Session Hooks (The Boot Sequence)
When you start a chat, things happen BEFORE you type anything.
**What hooks do:**
- Inject session memories from recent conversations
- Surface relevant context (person info, project status)
- Pre-load data you'll likely need
**Current hooks in Dex:**
- Session memories injection
- Person context surfacing
- Company context surfacing
**The power:** You can ADD hooks. Want weather loaded at session start?
Your calendar? Write a hook, and it's there every session.
---
### Building Block 3: MCP Servers (The Toolbox)
MCP = Model Context Protocol. It's how Claude gets superpowers.
Each MCP server gives Claude new abilities:
| Server | What It Does |
|--------|--------------|
| **Work MCP** | Task management with deduplication and pillar alignment |
| **Calendar MCP** | Reads your Apple Calendar |
| **Granola MCP** | Searches meeting transcripts |
| **Career MCP** | Career evidence tracking and analysis |
**Why MCPs instead of just reading files?**
- **Speed:** Pre-process data instead of parsing raw files
- **Logic:** Implement business rules (like "can't have 4 P0 tasks")
- **Integration:** Connect to external systems
---
### Building Block 4: Skills (The Playbook)
Skills are structured instructions for multi-step workflows.
**Location:** `.claude/skills/[skill-name]/SKILL.md`
**Examples:**
- `/daily-plan` - Check calendar, review tasks, generate plan
- `/meeting-prep` - Load person context, surface recent discussions
- `/xray` - This skill you're running right now!
**Why skills?**
- **Consistency:** Same workflow every time
- **Complexity:** Handle multi-step processes
- **Reusability:** Build once, use forever
---
### Building Block 5: The Vault (The Memory)
Everything persists to Markdown files:
Your Vault/ ├── 00-Inbox/ ← Capture zone ├── 03-Tasks/ ← Active tasks ├── 04-Projects/ ← Time-bound work ├── 05-Areas/ ← Ongoing responsibilities │ ├── People/ ← Person pages │ └── Companies/ ← Company profiles ├── 06-Resources/ ← Reference material └── System/ ← Dex configuration
**Why plain Markdown?**
- You own it forever (no vendor lock-in)
- Works anywhere (Obsidian, VS Code, any editor)
- AI can read and write it
- Version control with Git if you want
---
### How It All Connects
Session starts ↓ Hooks fire (inject context) ↓ CLAUDE.md loads (personality + instructions) ↓ You type your message ↓ Claude reads relevant files (on-demand) ↓ Claude uses MCPs (if needed) ↓ Response generated + files updated ↓ Repeat for each message
---
### Key Insight: It's All Text
There's no magic database. No proprietary format. No cloud service.
- CLAUDE.md is text
- Skills are text
- Your notes are text
- Session memories are text
Claude reads text, processes it, generates text, writes text.
**Everything you're experiencing is text transformation.**
Understanding this is liberating — you can read, edit, and extend anything.
---
**Want to see the session startup in detail?** Try `/xray boot`
**Ready to customize?** Try `/xray extend`/xray boot)Purpose: Detailed walkthrough of what happens when a session starts.
markdown## 🚀 What Happens When You Start a Chat Let me walk you through exactly what happens from the moment you open a new chat to when you type your first message. --- ### The Boot Sequence (In Order) #### Step 1: Environment Detection
Is this Claude Desktop? Claude Code? Cursor? PI? ↓ Each environment has slightly different capabilities
#### Step 2: Settings LoadRead configuration files ↓ This defines which hooks to run and which MCPs are available
#### Step 3: Hooks Fire (CRITICAL)Pre-session hooks run in order: ↓ ┌─────────────────────────────────────────────┐ │ Session memory injection │ │ → Reads System/Session_Memory/date].md │ │ → Injects summaries of recent conversations │ │ → AI "remembers" what you discussed before │ └─────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ Context injectors │ │ → Person context ready when you mention │ │ names │ │ → Company context ready when relevant │ └─────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────┐ │ (Your custom hooks could go here) │ │ → Whatever YOU want loaded at start │ └─────────────────────────────────────────────┘
**This is where the magic happens!** Hooks let you inject ANY context
before the conversation starts.
#### Step 4: CLAUDE.md LoadsThe entire CLAUDE.md file enters the context window: ↓ • Your profile (name, role, company) • Your strategic pillars • Behavior guidelines • Reference to skills and tools • User extensions (YOUR customizations)
#### Step 5: MCPs ConnectMCP servers become available: ↓ • Calendar MCP → Ready to check schedule • Work MCP → Ready to manage tasks • Granola MCP → Ready to search meetings
#### Step 6: Ready for InputNOW you can type your first message.
The AI already has: • Your personality and preferences (CLAUDE.md) • Recent conversation summaries (from hooks) • Relevant context (from hooks) • Access to tools (MCPs)
---
### What This Means for You
**The AI doesn't start from zero.** By the time you type your first message,
Claude already knows who you are, what you've been working on, and what
tools are available.
**The boot sequence IS the memory system.** It's how a stateless AI
"remembers" who you are.
---
### 💡 Customization Opportunity
**What else could be loaded at session start?**
Ideas for hooks:
1. Today's calendar events
2. Current sprint goals
3. Recent Git commits
4. Weather for outdoor planning
5. Your daily intention
**The pattern:** Anything you want the AI to "know" at the start of every
session can be injected via a hook.
---
**Ready to create your own customizations?** Try `/xray extend`/xray extend)Purpose: Practical guide to customization.
markdown## 🛠️ How to Extend Dex Now that you understand how it works, here's how to make it your own. --- ### Level 1: Edit CLAUDE.md (5 minutes) **The simplest customization.** Add your own instructions: 1. Open `CLAUDE.md` in any editor 2. Find the `USER_EXTENSIONS` section 3. Add your rules:
**This survives updates.** When you run `/dex-update`, this block is preserved.
---
### Level 2: Create a Skill (30 minutes)
**Make a reusable workflow:**
1. Create folder: `.claude/skills/my-skill/`
2. Create file: `SKILL.md`
name: my-skill description: What it does in one line
Trigger conditions]
Instructions for Claude to follow]
What the result should look like]
3. Use it: Just type `/my-skill`
**Example ideas:**
- `/standup-prep` - Generate daily standup update
- `/client-brief` - Create client meeting brief
- `/weekly-email` - Draft weekly summary email
---
### Level 3: Create a Hook (1 hour)
**Inject context at every session start:**
1. Create a script that outputs the context you want
2. The output gets injected into the AI's context window
3. Now every conversation starts with that knowledge
**Example ideas:**
- Inject today's calendar at start
- Load current sprint goals
- Show recent Git commits
---
### Level 4: Create an MCP Server (Half day)
**Give Claude new capabilities:**
Run `/create-mcp` for guided setup.
**Example ideas:**
- Todoist MCP - Sync tasks with Todoist
- Notion MCP - Read/write to Notion
- Weather MCP - Get current conditions
---
### The Extension Philosophy
**Dex is scaffolding, not a finished product.** It's a starting point you customize.
The goal isn't to use Dex "as is" forever — it's to understand it well
enough to make it truly yours.
**Question for you:** What do you wish the AI knew at the start of
every session? That's your first extension.After running /xray, silently update System/usage_log.md:
X-ray transparency (/xray) in the discovery sectionIf user runs specific educational modes, update the AI Education Progress section:
/xray ai → Check "Understands context windows", "Understands tokens"/xray dex → Check "Understands system prompts", "Understands tools/MCPs"/xray boot → Check "Understands session hooks"/xray extend → Check "Understands vault architecture"Update System/usage_log.md to mark AI transparency education as used.
Analytics (Silent):
Call track_event with event_name xray_used and properties:
mode (context/tokens/prompts/tools/hooks/vault/extend)This only fires if the user has opted into analytics. No action needed if it returns "analytics_disabled".
Other measured skills in the registry, with their headline benchmark lift.