@oro.ad/nuxt-claude-devtools
@oro.ad/nuxt-claude-devtools
Nuxt DevTools integration for Claude Code AI assistant. Chat with Claude directly from your Nuxt DevTools panel with full support for skills, agents, and slash commands.
Features
Core
- Chat Interface β Interactive chat with Claude AI directly in DevTools
- Overlay Mode β Lightweight floating chat panel that works without DevTools (
devtools: false) - Streaming Responses β Real-time streaming output from Claude with stop generation support
- Voice Input β Speech-to-text for hands-free messaging
- File Attachments β Attach images (camera/gallery) and files to messages
- Session Management β Start new conversations or continue previous ones
- Chat History β Browse and restore previous conversations
Context & Integration
- Context Chips β Send viewport size, browser info, and routing context with messages
- Component Picker β Select Vue components from the page to add as context
- LLMS Sources β Configure external documentation URLs (llms.txt format)
Extensibility
- Skills β Markdown-based skills to extend Claude's capabilities (
.claude/skills/<name>/SKILL.md) - Subagents β Specialized AI agents for delegated tasks (
.claude/agents/<name>.md) - Slash Commands β Custom commands with YAML frontmatter (
.claude/commands/<name>.md) - Documentation β Manage project docs that Claude can reference (
.claude/docs/) - MCP Servers β Manage Model Context Protocol servers (add, remove, list)
Collaboration & Access
- Collaborative Mode β Share chat sessions with team members via link
- Tunnel Support β Remote access via cloudflared tunnel
- Mobile Support β Responsive bottom-sheet UI with swipe gestures
Prerequisites
- Claude Code CLI must be installed and authenticated
- Nuxt 3.x or 4.x with DevTools enabled
Quick Setup
- Install the module:
# Using pnpm
pnpm add -D @oro.ad/nuxt-claude-devtools
# Using yarn
yarn add --dev @oro.ad/nuxt-claude-devtools
# Using npm
npm install --save-dev @oro.ad/nuxt-claude-devtools
- Add to your
nuxt.config.ts:
export default defineNuxtConfig({
modules: ['@oro.ad/nuxt-claude-devtools'],
devtools: {
enabled: true,
},
claudeDevtools: {
enabled: true,
claude: {
command: 'claude', // Path to Claude CLI
args: [], // Additional CLI arguments
},
},
})
- Start your Nuxt dev server and open DevTools β you'll see a new "AI" tab.
Configuration
| Option | Type | Default | Description |
|---|---|---|---|
enabled | boolean | true | Enable/disable the module |
debug | boolean | false | Enable debug logging in console |
claude.command | string | 'claude' | Path to Claude CLI executable |
claude.args | string[] | [] | Additional arguments for Claude CLI |
plugins.cachePath | string | undefined | Path to Claude plugins cache directory |
overlay.enabled | boolean | false | Enable the floating chat overlay |
Overlay Mode
When you don't need full DevTools integration, use overlay mode for a lightweight chat experience:
export default defineNuxtConfig({
modules: ['@oro.ad/nuxt-claude-devtools'],
devtools: {
enabled: false, // Disable DevTools
},
claudeDevtools: {
enabled: true,
overlay: {
enabled: true, // Enable floating chat overlay
},
},
})
The overlay appears as a floating button (FAB) in the corner of your app:
- Desktop: Draggable floating panel,
Ctrl+Shift+Kto toggle - Mobile: Full-width bottom sheet with swipe-to-close
- Features: Voice input, slash commands, markdown rendering, collaborative sharing
Usage
Chat Interface
- Open Nuxt DevTools (press
Shift + Option + Dor click the Nuxt icon) - Navigate to the "AI" tab
- Type your message and press Enter
- Claude will respond with streaming output
The module automatically uses --continue for follow-up messages within a session. Click "New Chat" to start a fresh conversation.
Context Chips
Add contextual information to your messages using the chips next to the input field:
| Chip | Context Provided |
|---|---|
| Viewport | App window dimensions (width Γ height) |
| User Agent | Browser and OS information |
| Routing | Current route path, query params, page component file |
Click a chip to toggle it on/off. Active chips will include their context with your next message.
Component Picker
Click "Add Component" to select Vue components directly from your running app. The component's file path will be included as context, allowing Claude to read and understand the component code.
Skills
Skills extend Claude's capabilities with specialized knowledge. Create markdown files with YAML frontmatter:
Location: .claude/skills/<skill-name>/SKILL.md
---
description: Vue 3 Composition API expert
model: sonnet
---
You are an expert in Vue 3 Composition API...
## Guidelines
- Always use `<script setup lang="ts">`
- Follow TypeScript best practices
Frontmatter options:
| Field | Description |
|---|---|
description | Brief description (required) |
model | Model to use: sonnet, opus, haiku |
argumentHint | Hint for skill arguments (e.g., <query>) |
Subagents
Subagents are specialized AI agents that Claude can delegate tasks to:
Location: .claude/agents/<agent-name>.md
---
name: code-reviewer
description: Reviews code for quality and best practices
model: sonnet
tools: Read, Grep, Glob
skills:
- typescript-strict
- vue-composition-api
---
You are a code reviewer. Your job is to:
1. Review code for bugs and issues
2. Suggest improvements
3. Check for security vulnerabilities
Frontmatter options:
| Field | Description |
|---|---|
name | Agent name (kebab-case) |
description | Brief description |
model | Model: sonnet, opus, haiku |
tools | Comma-separated list of allowed tools |
disallowedTools | Tools to exclude |
skills | Array of skill names to preload |
permissionMode | default, acceptEdits, dontAsk, bypassPermissions, plan |
Slash Commands
Create custom commands with markdown and YAML frontmatter:
Location: .claude/commands/<command-name>.md
---
description: Generate a Vue component
allowedTools: Read, Write, Edit
---
Generate a Vue 3 component with:
- `<script setup lang="ts">`
- Typed props with `defineProps<T>()`
- CSS variables for styling
Invoke with /<command-name> in the chat.
Documentation
Store project documentation that Claude can reference:
Location: .claude/docs/
Create markdown files for architecture, components, API reference, etc. Claude will use these as context when answering questions about your project.
MCP Servers
Manage Model Context Protocol servers directly from DevTools:
- Click the "MCP" button in the chat header
- View configured servers
- Add new servers (stdio, HTTP, or SSE transport)
- Remove existing servers
Example MCP servers:
- GitHub:
npx -y @modelcontextprotocol/server-github - Nuxt UI:
https://ui.nuxt.com/mcp(HTTP)
Collaborative Mode
Share your chat session with team members:
- Click the Share button in the chat header
- Enter a nickname (required for collaboration)
- Copy and share the generated link
- Team members opening the link join the same session
Features:
- Real-time message sync between all participants
- Nicknames displayed on messages from other users
- Own messages appear on the right (green), others on the left (purple)
- Share links can include pre-set nicknames via
oro_share_nicknameURL parameter
LLMS Sources
Configure external documentation URLs in llms.txt format:
- Go to the Docs tab in DevTools
- Add URLs to documentation sources
- Claude can fetch and use these when answering questions
Supported formats:
- Direct markdown URLs
- llms.txt manifest files
- API documentation endpoints
Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Nuxt DevTools β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Claude DevTools Panel β β
β β (iframe at /__claude-devtools) β β
β β β β
β β Pages: β β
β β - / Chat interface β β
β β - /skills Skills manager β β
β β - /agents Subagents manager β β
β β - /commands Slash commands manager β β
β β - /docs Documentation & LLMS sources β β
β β - /mcp MCP servers config β β
β β - /plugins Plugin marketplace β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β Socket.IO β (or)
βΌ βΌ
ββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ
β Chat Overlay β β Multiple Clients β
β (Floating Panel) β β (Collaborative Mode) β
β β β β
β - Desktop: Draggableβ β Client A ββββ β
β - Mobile: Bottom β β Client B ββββΌββ Shared β
β sheet with swipe β β Client C ββββ Session β
ββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ
β
β Socket.IO
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Claude Session Server β
β βββββββββββββββββββ ββββββββββββββββββββββββββββββββ
β β Socket.IO Hub βββββΆβ Claude CLI Process ββ
β β β β (spawn with --resume) ββ
β β Managers: β ββββββββββββββββββββββββββββββββ
β β - Skills β β
β β - Agents β ββββββββββββββββββββββββββββββββ
β β - Commands β β File Storage ββ
β β - Docs β β .claude-devtools/ ββ
β β - History β β .claude/skills/ ββ
β β - Share β β .claude/agents/ ββ
β β - Plugins β β .claude/commands/ ββ
β βββββββββββββββββββ β .claude/docs/ ββ
β ββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
File Structure
.claude/
βββ settings.local.json # Local permissions
βββ skills/ # Skills (markdown)
β βββ <skill-name>/
β βββ SKILL.md
βββ agents/ # Subagents (markdown)
β βββ <agent-name>.md
βββ commands/ # Slash commands (markdown)
β βββ <command-name>.md
βββ docs/ # Documentation
βββ *.md
Development
# Install dependencies
npm install
# Install dependencies for client
cd ./client
npm install
cd ../
# Generate type stubs
npm run dev:prepare
# Start playground with hot reload
npm run dev
# Build for production
npm run prepack
# Run linter
npm run lint
Project Structure
βββ src/
β βββ module.ts # Nuxt module definition
β βββ devtools.ts # DevTools UI setup
β βββ runtime/
β βββ logger.ts # Logging utility
β βββ overlay/ # Lightweight chat overlay
β β βββ components/
β β βββ ChatOverlay.vue # Main overlay component
β β βββ MarkdownContent.vue # Markdown renderer
β β βββ ToolCallBlock.vue # Tool call display
β βββ shared/ # Shared code (overlay + client)
β β βββ composables/
β β β βββ useClaudeChat.ts # Chat logic
β β β βββ useVoiceInput.ts # Speech recognition
β β β βββ useShare.ts # Collaborative sharing
β β βββ types.ts # TypeScript types
β β βββ constants.ts # Shared constants
β βββ server/
β βββ claude-session.ts # Socket.IO server & Claude process
β βββ skills-manager.ts # Skills CRUD operations
β βββ agents-manager.ts # Agents CRUD operations
β βββ commands-manager.ts # Commands CRUD operations
β βββ docs-manager.ts # Documentation & LLMS management
β βββ history-manager.ts # Chat history management
β βββ share-manager.ts # Collaborative session management
β βββ plugins-manager.ts # Plugin marketplace
βββ client/ # DevTools panel UI (Nuxt app)
β βββ pages/
β β βββ index.vue # Chat interface
β β βββ skills.vue # Skills manager
β β βββ agents.vue # Subagents manager
β β βββ commands.vue # Slash commands manager
β β βββ docs.vue # Documentation & LLMS viewer
β β βββ mcp.vue # MCP servers management
β β βββ plugins.vue # Plugin marketplace
β βββ composables/
β β βββ useClaudeChat.ts # Socket, messages, session
β β βββ useMessageContext.ts # Context chips logic
β β βββ useVoiceInput.ts # Speech recognition
β β βββ useAutocomplete.ts # Docs/commands autocomplete
β β βββ useComponentPicker.ts # Component selection
β β βββ useShare.ts # Collaborative sharing
β βββ nuxt.config.ts
βββ playground/ # Development playground
Showcase
Check out real-world use cases and demos at nuxt-claude-devtools.oro.ad
Have an interesting use case? We'd love to feature it! Send your story to jobsbystr@gmail.com.
Security Notes
- The module only runs in development mode (
nuxt.options.dev) - Uses
--dangerously-skip-permissionsflag for Claude CLI (development only) - Socket.IO server runs on a dedicated port
- All file operations are scoped to
.claude/directory
License
This project is licensed under the GNU General Public License v3.0 (GPL-3.0).