MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
Explain what just happened under the hood — the context, MCP tools, and hooks behind Dex's last response — as AI education.
$ npx skills add davekilleen/Dex --skill xray -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install davekilleen/Dex xray --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/xray .claude/skills/xray && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "xray" agent skill from https://github.com/davekilleen/Dex/tree/main/.claude/skills/xray into .claude/skills/xray/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xray", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/davekilleen/Dex/tree/main/.claude/skills/xrayType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add davekilleen/Dex --skill xray -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install davekilleen/Dex xray --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/xray .agents/skills/xray && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "xray" agent skill from https://github.com/davekilleen/Dex/tree/main/.claude/skills/xray into .agents/skills/xray/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xray", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add davekilleen/Dex --skill xray -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install davekilleen/Dex xray --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/xray .cursor/skills/xray && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "xray" agent skill from https://github.com/davekilleen/Dex/tree/main/.claude/skills/xray into .cursor/skills/xray/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xray", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/davekilleen/Dex.git --path .claude/skills/xray--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add davekilleen/Dex --skill xray -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install davekilleen/Dex xray --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/xray .gemini/skills/xray && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "xray" agent skill from https://github.com/davekilleen/Dex/tree/main/.claude/skills/xray into .gemini/skills/xray/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xray", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install davekilleen/Dex xrayInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add davekilleen/Dex --skill xray -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/xray .github/skills/xray && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "xray" agent skill from https://github.com/davekilleen/Dex/tree/main/.claude/skills/xray into .github/skills/xray/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xray", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add davekilleen/Dex --skill xray -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install davekilleen/Dex xray --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/davekilleen/Dex.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/xray .opencode/skills/xray && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "xray" agent skill from https://github.com/davekilleen/Dex/tree/main/.claude/skills/xray into .opencode/skills/xray/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xray", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
xrayExplain what just happened under the hood — the context, MCP tools, and hooks behind Dex's last response — as AI education.
Xray is an agent skill from davekilleen/Dex. 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.
Its SKILL.md is about 5.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering MCP servers. The repository describes itself as: Your AI Chief of Staff — a personal operating system starter kit that adapts to your role. No coding required. The licence is MIT.
Read from SKILL.md and the folder at commit 227f78e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
claudeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Xray loads about 5.7k tokens when it runs. Until then it costs about 68 tokens; SKILL.md has 1,242 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from davekilleen/Dex at commit 227f78e, republished under its MIT licence (© davekilleen). 1,242 words, ~5,705 tokens.
.claude/skills/xray/SKILL.md (or your agent's skills folder).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:
## 🔬 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.
## 🧠 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.
## 🏗️ 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:**
```markdown
## USER_EXTENSIONS_START
<!-- Your personal additions go here -->
## USER_EXTENSIONS_ENDWhen you start a chat, things happen BEFORE you type anything.
What hooks do:
Current hooks in Dex:
The power: You can ADD hooks. Want weather loaded at session start? Your calendar? Write a hook, and it's there every session.
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?
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?
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 configurationWhy plain Markdown?
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 messageThere's no magic database. No proprietary format. No cloud service.
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
---
## MODE: Session Boot Sequence (`/xray boot`)
**Purpose:** Detailed walkthrough of what happens when a session starts.
### Output Format
```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 DetectionIs 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.
## 🛠️ 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:
```markdown
## USER_EXTENSIONS_START
### My Preferences
- I'm a morning person — suggest important work before noon
- "The board" always means my company's board of directors
- Never suggest scheduling meetings on Wednesdays (my focus day)
## USER_EXTENSIONS_ENDThis survives updates. When you run /dex-update, this block is preserved.
Make a reusable workflow:
.claude/skills/my-skill/SKILL.md---
name: my-skill
description: What it does in one line
---
# My Custom Skill
## When to Use
[Trigger conditions]
## Steps
[Instructions for Claude to follow]
## Output Format
[What the result should look like]/my-skillExample ideas:
/standup-prep - Generate daily standup update/client-brief - Create client meeting brief/weekly-email - Draft weekly summary emailInject context at every session start:
Example ideas:
Give Claude new capabilities:
Run /create-mcp for guided setup.
Example ideas:
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.
---
## Usage Tracking
After running `/xray`, silently update `System/usage_log.md`:
- Check `X-ray transparency (/xray)` in the discovery section
If 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"
---
## Tone Guidelines
- **Concrete over abstract** — Use specific examples from their conversation
- **Show don't tell** — Point to actual files, tools, actions
- **Empowering not impressive** — Goal is their understanding, not your cleverness
- **Inviting curiosity** — End with pathways to learn more
---
## Track Usage (Silent)
Call the `mark_feature_used` tool on the `dex-analytics` MCP server with `xray`. This ticks the feature's box in `System/usage_log.md`, which is what `/dex-level-up` reads to recommend features that have not been tried. It writes locally and sends nothing, so it runs whether or not analytics is enabled.
**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".© davekilleen, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/xray of davekilleen/Dex.
Open the folder on GitHubat commit 227f78e
Xray next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Xray this skilldavekilleen/Dex | 493 | — | ~5.7k | Automated safety check: Pass | MIT | |
| MCP Server Builderanthropics/skills | 180k | 63 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server BuildershareAI-lab/learn-claude-code | 78k | 5 repos | ~1.2k | Automated safety check: Pass | MIT | |
| MCP Integration for Pluginsanthropics/claude-plugins-official | 38k | 11 repos | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| Microsoft Skill CreatorMicrosoftDocs/mcp | 1.9k | 3 repos | ~2.1k | Automated safety check: Pass | CC-BY-4.0 | |
| Crush Configurationcharmbracelet/crush | 29k | — | ~3.7k | Automated safety check: Pass | Custom licence |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
shareAI-lab/learn-claude-code
Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.
anthropics/claude-plugins-official
Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.
MicrosoftDocs/mcp
Create agent skills for Microsoft technologies using official documentation.
charmbracelet/crush
Explains how to configure the Crush coding agent with crushrc or crush.json, covering providers, models, LSPs, MCP servers, hooks, permissions and config precedence.
mksglu/context-mode
Routes large command, file, API and browser output through context-mode tools so only the needed result enters the agent's context, instead of dumping it via Bash.
davekilleen/Dex
This skill should be used when working with DSPy.rb, a Ruby framework for building type-safe, composable LLM applications.
davekilleen/Dex
Adopt a full published Heydex profile by handle ('set me up like @davekilleen').
davekilleen/Dex
Package one workflow — how you use Dex for a specific job — into a shareable DexDiff methodology doc.
davekilleen/Dex
Expert guidance for creating, writing, and refining Claude Code Skills.
davekilleen/Dex
Report a Dex bug to the Dex team with zero homework — Dex investigates locally, builds a privacy-safe report, shows it to you (or auto-sends if you've chosen that), and tracks the ticket until it's…
davekilleen/Dex
This skill should be used when writing Ruby and Rails code in DHH's distinctive 37signals style.
Categories
Explain what just happened under the hood — the context, MCP tools, and hooks behind Dex's last response — as AI education. Xray is an agent skill from davekilleen/Dex. Explain what just happened under the hood — the context, MCP tools, and hooks behind Dex's last response — as AI education.
Xray fits situations like: the user says how did you do that; what just happened; explain the mechanics.
Run `npx skills add davekilleen/Dex --skill xray -a claude-code`. Or copy the skill folder (.claude/skills/xray in davekilleen/Dex) into .claude/skills/xray in your project. Claude Code loads it when a task matches its description.
Run `npx skills add davekilleen/Dex --skill xray -a codex`. Or copy the skill folder (.claude/skills/xray in davekilleen/Dex) into .agents/skills/xray in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add davekilleen/Dex --skill xray -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/xray, .gemini/skills/xray, .github/skills/xray and .opencode/skills/xray in your project.
Going by SKILL.md and its folder, Xray needs the command-line tools its instructions call (claude).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Xray is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.7k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Xray: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), MCP Integration for Plugins (anthropics/claude-plugins-official, 38k stars) and Microsoft Skill Creator (MicrosoftDocs/mcp, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
davekilleen (a GitHub user) maintains it in davekilleen/Dex, which has 493 GitHub stars. The repository holds 61 skills in this directory. The repository was last updated on October 8, 2026.
Source: davekilleen/Dex on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.