tanstack-devtools — Claude Code skill: what it does, how to install
Helps AI agents configure the unified TanStack debugging panel for React. Useful when combining Query, Router, and AI devtools in a single view.
npx skills add tanstack-skills/tanstack-skills --skill tanstack-devtools -a claude-codeWhat tanstack-devtools does
This skill teaches coding agents how to mount the centralized TanStack devtools panel. Instead of opening separate windows for TanStack Query and Router, you render a single TanStackDevtools component from @tanstack/react-devtools. The panel supports built-in tabs and custom plugins for inspecting application state.
The core runs on Solid.js to keep overhead minimal. An integrated AI plugin supports TanStack AI workflows, tracking token counts, streaming chunks, and tool calls. If you use Vite, @tanstack/devtools/vite handles automated setup.
The library is currently in alpha. Only React is supported right now, while Vue and Angular packages are still planned. You must wrap the panel in development checks like process.env.NODE_ENV or lazy loading to prevent test panels from ending up in production builds.
What it helps with
- consolidate Query and Router devtools into one panel
- inspect tool calls, streaming chunks, and token usage in TanStack AI
- register custom plugins for application state debugging
- integrate the official Vite plugin for automated devtools setup
Example prompts for the agent
- Show me how to install @tanstack/react-devtools and mount Query and Router plugins.
- Configure TanStack Devtools with the AI devtools panel to trace token consumption and tool calls.
- Write a custom state inspector plugin for TanStack Devtools.
How to install tanstack-devtools
1Skills CLI (Vercel)
npx skills add tanstack-skills/tanstack-skills --skill tanstack-devtools -a claude-code2Manually: put the files in place
~/.claude/skills/tanstack-devtools/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/tanstack-devtools/
1Skills CLI (Vercel)
npx skills add tanstack-skills/tanstack-skills --skill tanstack-devtools -a codex2Manually: put the files in place
.agents/skills/tanstack-devtools/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add tanstack-skills/tanstack-skills --skill tanstack-devtools -a cursor2Manually: put the files in place
.cursor/skills/tanstack-devtools/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install tanstack-skills/tanstack-skills tanstack-devtools2Manually: put the files in place
.github/skills/tanstack-devtools/SKILL.md1Skills CLI (Vercel)
npx skills add tanstack-skills/tanstack-skills --skill tanstack-devtools -a gemini-cli2Platform CLI
gemini skills install https://github.com/tanstack-skills/tanstack-skills --path plugins/tanstack-devtools/skills/tanstack-devtoolsManually: put the files in place
.devin/skills/tanstack-devtools/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add tanstack-skills/tanstack-skills --skill tanstack-devtools -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about tanstack-devtools
How to install tanstack-devtools in Claude Code?
Run npx skills add tanstack-skills/tanstack-skills --skill tanstack-devtools -a claude-code. The agent will receive instructions and setup patterns for the devtools panel.
What does the tanstack-devtools skill do?
It provides coding agents with setup guides and code samples for the unified TanStack debugging interface. This includes configurations for Query, Router, TanStack AI, and Vite.
Can I use tanstack-devtools with Vue or Solid?
Currently, only @tanstack/react-devtools is released in alpha. Packages for Solid, Vue, and Angular are listed as planned.
Source text
SKILL.md · MIT
---
name: tanstack-devtools
description: Centralized, extensible devtools panel for TanStack libraries with a plugin architecture.
---
## Overview
TanStack Devtools provides a unified debugging interface that consolidates devtools for TanStack Query, Router, and other libraries into a single panel. It features a framework-agnostic plugin architecture, real-time state inspection, and support for custom plugins. Built with Solid.js for lightweight performance.
**React:** `@tanstack/react-devtools`
**Core:** `@tanstack/devtools`
**Status:** Alpha
## Installation
```bash
npm install @tanstack/react-devtools
```
## Basic Setup
```tsx
import { TanStackDevtools } from '@tanstack/react-devtools'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
const queryClient = new QueryClient()
function App() {
return (
<QueryClientProvider client={queryClient}>
<TanStackDevtools />
{/* Your app content */}
<MyApp />
</QueryClientProvider>
)
}
```
## Built-in Plugins
### Query Devtools
```tsx
import { TanStackDevtools } from '@tanstack/react-devtools'
import { ReactQueryDevtoolsPanel } from '@tanstack/react-query-devtools'
function App() {
return (
<QueryClientProvider client={queryClient}>
<TanStackDevtools
plugins={[
{
id: 'react-query',
name: 'React Query',
render: () => <ReactQueryDevtoolsPanel />,
},
]}
/>
<MyApp />
</QueryClientProvider>
)
}
```
### Router Devtools
```tsx
import { TanStackDevtools } from '@tanstack/react-devtools'
import { TanStackRouterDevtoolsPanel } from '@tanstack/react-router-devtools'
function App() {
return (
<TanStackDevtools
plugins={[
{
id: 'router',
name: 'Router',
render: () => <TanStackRouterDevtoolsPanel router={router} />,
},
]}
/>
)
}
```
### Combined Setup
```tsx
import { TanStackDevtools } from '@tanstack/react-devtools'
import { ReactQueryDevtoolsPanel } from '@tanstack/react-query-devtools'
import { TanStackRouterDevtoolsPanel } from '@tanstack/react-router-devtools'
function App() {
return (
<QueryClientProvider client={queryClient}>
<TanStackDevtools
plugins={[
{
id: 'react-query',
name: 'React Query',
render: () => <ReactQueryDevtoolsPanel />,
},
{
id: 'router',
name: 'Router',
render: () => <TanStackRouterDevtoolsPanel router={router} />,
},
]}
/>
<MyApp />
</QueryClientProvider>
)
}
```
### AI Devtools
For debugging TanStack AI workflows:
```tsx
import { TanStackDevtools } from '@tanstack/react-devtools'
import { AIDevtoolsPanel } from '@tanstack/ai-react/devtools'
function App() {
return (
<TanStackDevtools
plugins={[
{
id: 'ai',
name: 'AI',
render: () => <AIDevtoolsPanel />,
},
]}
/>
)
}
```
AI Devtools features:
- **Message Inspector** - View full conversation history with metadata
- **Token Usage** - Track input/output tokens and costs per request
- **Streaming Visualization** - Real-time view of streaming chunks
- **Tool Call Debugging** - Inspect tool calls, parameters, and results
- **Thinking/Reasoning Viewer** - Debug reasoning tokens from thinking models
- **Adapter Switching** - Test different providers in development
## Plugin System
### Plugin Interface
```typescript
interface DevtoolsPlugin {
id: string // Unique identifier
name: string // Display name in the devtools panel
render: () => JSX.Element // React component to render
}
```
### Custom Plugins
```tsx
import { TanStackDevtools } from '@tanstack/react-devtools'
// Custom state inspector plugin
const stateInspectorPlugin = {
id: 'state-inspector',
name: 'State',
render: () => (
<div style={{ padding: '16px' }}>
<h3>Application State</h3>
<pre>{JSON.stringify(appState, null, 2)}</pre>
</div>
),
}
// Custom network logger plugin
const networkLoggerPlugin = {
id: 'network-logger',
name: 'Network',
render: () => <NetworkLoggerPanel />,
}
function App() {
return (
<TanStackDevtools
plugins={[
stateInspectorPlugin,
networkLoggerPlugin,
]}
/>
)
}
```
### Dynamic Plugin Registration
```tsx
function App() {
const [plugins, setPlugins] = useState<DevtoolsPlugin[]>([])
useEffect(() => {
// Register plugins conditionally
const activePlugins: DevtoolsPlugin[] = []
if (process.env.NODE_ENV === 'development') {
activePlugins.push({
id: 'debug',
name: 'Debug',
render: () => <DebugPanel />,
})
}
setPlugins(activePlugins)
}, [])
return <TanStackDevtools plugins={plugins} />
}
```
## Vite Plugin Integration
```typescript
// vite.config.ts
import { defineConfig } from 'vite'
import { tanstackDevtools } from '@tanstack/devtools/vite'
export default defineConfig({
plugins: [
tanstackDevtools(),
],
})
```
## Production Considerations
```tsx
// Only include devtools in development
function App() {
return (
<>
{process.env.NODE_ENV === 'development' && (
<TanStackDevtools plugins={plugins} />
)}
<MyApp />
</>
)
}
// Or use lazy loading
const TanStackDevtools = lazy(() =>
import('@tanstack/react-devtools').then((m) => ({ default: m.TanStackDevtools }))
)
```
## Framework Support
| Framework | Package | Status |
|-----------|---------|--------|
| React | `@tanstack/react-devtools` | Alpha |
| Solid | `@tanstack/solid-devtools` | Planned |
| Vue | `@tanstack/vue-devtools` | Planned |
| Angular | `@tanstack/angular-devtools` | Planned |
## Features
- **Unified Panel** - Single interface for all TanStack debugging
- **Real-time Updates** - Live monitoring of state changes
- **Plugin Architecture** - Extensible with custom and third-party plugins
- **Built-in Plugins** - Query, Router, and AI devtools panels
- **Lightweight** - Built with Solid.js for minimal overhead
- **Type-safe** - Full TypeScript support for plugin definitions
- **Framework-agnostic Core** - Plugin logic works across frameworks
## Best Practices
1. **Conditionally include in production** - use environment checks or code splitting
2. **Use specific plugins** rather than loading all available ones
3. **Give plugins unique IDs** to prevent conflicts
4. **Keep plugin render functions lightweight** - avoid expensive computations
5. **Use the Vite plugin** for automatic setup in Vite-based projects
6. **Combine Query + Router + AI plugins** for full-stack TanStack debugging
7. **Create domain-specific plugins** for app-level state inspection
8. **Use AI devtools** when debugging streaming, tool calls, or token usage
## Common Pitfalls
- Including devtools in production builds without tree-shaking
- Using duplicate plugin IDs (causes rendering conflicts)
- Heavy render functions in plugins (slows down the devtools panel)
- Forgetting to wrap with QueryClientProvider when using Query plugin
- Not passing the router instance to Router devtools panel
© tanstack-skills · MIT · tanstack-skills/tanstack-skills