@gapra/nuxt-migration-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@gapra/nuxt-migration-mcpStart migration audit for Nuxt 2 project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@gapra/nuxt-migration-mcp
MCP (Model Context Protocol) Server for Nuxt 2/3 to Nuxt 3/4 migration analysis and automation.
Overview
This MCP server provides tools to analyze, audit, and automatically migrate codebases from Nuxt 2 (Vue 2) to Nuxt 3 / Nuxt 4 (Vue 3) — covering everything from detection to code generation and file writing. It can be integrated with any MCP-compatible AI assistant or editor, including Claude (Anthropic), Cursor, GitHub Copilot, Windsurf, Cline, Continue, Zed, and more.
Related MCP server: HeroUI Migration MCP
Features
Start Migration - One-command full audit covering all migration categories
Audit Nuxt Migration - Detect Options API, Vuex, SCSS, RxJS, mixins, asyncData/fetch, plugin signatures
Audit Tracking - Find analytics/tracking calls (Mixpanel, gtag, dataLayer) and feature flags
Audit Vuex Stores - Analyze Vuex stores and suggest Pinia migration
Audit Mixins - Find Vue mixins and suggest composable conversion
Audit API Migration - Detect RxJS usage and suggest async/await pattern
Audit Components - Find components using Options API and SCSS
Audit asyncData/fetch - Detect Nuxt 2 data fetching hooks that require useAsyncData/useFetch migration
Audit ESM Compatibility - Find CommonJS require/module.exports incompatible with Nuxt 3/4
Audit Nuxt 4 Structure - Check project directory layout for app/ subdirectory requirement
Audit Deprecated Modules - Detect deprecated @nuxtjs/* packages and suggest replacements
Generate Code - Create Pinia stores, composables, components, API functions, useAsyncData composables, and types
Write Files - Write custom content directly to target codebase
Auto-detect .env - Automatically finds MIGRATION_SOURCE_PATH from .env file
Installation
There are two ways to use this MCP server:
Method | Best For |
via npm / npx | Quick setup, always latest version, no cloning needed |
Local clone | Development, customization, or contributing |
Method 1: via npm (Recommended)
No installation needed — use npx to run directly, or install globally.
Option A: Run with npx (zero install)
npx @gapra/nuxt-migration-mcpOption B: Install globally
npm install -g @gapra/nuxt-migration-mcp
# then run:
nuxt-migration-mcpConfigure your MCP client
Claude Desktop — edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"nuxt-migration": {
"command": "npx",
"args": ["@gapra/nuxt-migration-mcp"],
"env": {
"MIGRATION_SOURCE_PATH": "/path/to/your/nuxt2-project",
"MIGRATION_TARGET_PATH": "/path/to/your/nuxt4-project"
}
}
}
}Cursor — edit ~/.cursor/mcp.json:
{
"mcpServers": {
"nuxt-migration": {
"command": "npx",
"args": ["@gapra/nuxt-migration-mcp"],
"env": {
"MIGRATION_SOURCE_PATH": "/path/to/your/nuxt2-project",
"MIGRATION_TARGET_PATH": "/path/to/your/nuxt4-project"
}
}
}
}VS Code — edit .vscode/mcp.json in your workspace:
{
"servers": {
"nuxt-migration": {
"command": "npx",
"args": ["@gapra/nuxt-migration-mcp"],
"env": {
"MIGRATION_SOURCE_PATH": "/path/to/your/nuxt2-project",
"MIGRATION_TARGET_PATH": "/path/to/your/nuxt4-project"
}
}
}
}Method 2: Local Clone
Use this if you want to customize the server, contribute, or run in development mode.
Step 1: Clone and install
git clone https://github.com/gapra/gp-nuxt-migration-mcp.git
cd gp-nuxt-migration-mcp
npm install
npm run buildStep 2: Create .env file
cp .env.example .envEdit .env:
MIGRATION_SOURCE_PATH=/path/to/your/nuxt2-project
MIGRATION_TARGET_PATH=/path/to/your/nuxt4-projectAuto-detect: The server automatically searches for
.envin the current directory and parent directory.
Step 3: Configure your MCP client
Claude Desktop — edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"nuxt-migration": {
"command": "node",
"args": ["/absolute/path/to/nuxt-migration-mcp/dist/index.js"],
"env": {
"MIGRATION_SOURCE_PATH": "/path/to/your/nuxt2-project",
"MIGRATION_TARGET_PATH": "/path/to/your/nuxt4-project"
}
}
}
}Cursor — edit ~/.cursor/mcp.json:
{
"mcpServers": {
"nuxt-migration": {
"command": "node",
"args": ["/absolute/path/to/nuxt-migration-mcp/dist/index.js"],
"env": {
"MIGRATION_SOURCE_PATH": "/path/to/your/nuxt2-project",
"MIGRATION_TARGET_PATH": "/path/to/your/nuxt4-project"
}
}
}
}VS Code — edit .vscode/mcp.json in your workspace:
{
"servers": {
"nuxt-migration": {
"command": "node",
"args": ["/absolute/path/to/nuxt-migration-mcp/dist/index.js"],
"env": {
"MIGRATION_SOURCE_PATH": "/path/to/your/nuxt2-project"
}
}
}
}Development mode (watch)
npm run devHarness Engineering Architecture (NEW!)
This MCP server now implements a Harness Engineering pattern inspired by agentic orchestration. The system is organized into three specialized MCP servers that coordinate migration workflow:
Architecture Overview
┌─────────────────────────────────────────────────────────────┐
│ Orchestrator MCP │
│ • Coordinates multi-phase workflow │
│ • Maintains authoritative state │
│ • Validates proposals │
│ • Manages rollback │
└─────────────────────────────────────────────────────────────┘
↓ ↓
┌──────────────────┐ ┌──────────────────┐
│ Analysis MCP │ │ Generator MCP │
│ (Read-only) │ │ (Read + Write) │
│ │ │ │
│ • Audit patterns│ │ • Propose code │
│ • Scan source │ │ • Validate │
│ • Suggest order │ │ • Write files │
└──────────────────┘ └──────────────────┘Three MCP Servers
1. Analysis MCP (Read-Only)
Sandbox: Enabled (read-only access)
Purpose: Audit source codebase patterns
Tools:
scan_source_patterns,audit_*_patterns,suggest_migration_orderAccess: Public state only
2. Generator MCP (Read + Write)
Sandbox: Disabled (needs write access)
Purpose: Generate and write code transformations
Tools:
propose_*,validate_proposal,write_validated_proposalFlow: Propose → Validate → Write (with backups)
3. Orchestrator MCP (Full Control)
Sandbox: Disabled (manages state)
Purpose: Coordinate workflow and maintain state
Tools:
start_orchestrated_migration,get_migration_state,rollback_fileState: Manages
.migration/migration_state.json
Orchestrated Workflow
Instead of manually chaining tools, use the orchestrated workflow:
# 1. Start orchestrated migration
Call: orchestratorMcp.start_orchestrated_migration()
# 2. Analysis phase (automated)
→ analysisMcp.scan_source_patterns()
→ analysisMcp.suggest_migration_order()
# 3. Transform phase
→ generatorMcp.propose_pinia_store()
→ generatorMcp.validate_proposal()
→ generatorMcp.write_validated_proposal()
# 4. Validation phase
→ Check confidence scores
→ Review generated code
# 5. Report phase
→ orchestratorMcp.get_migration_summary()State Management
All operations are tracked in .migration/ directory:
.migration/
├── migration_state.json # Authoritative state
├── migration_log.md # Human-readable log
├── actions/
│ ├── audits.jsonl # Analysis operations
│ ├── generations.jsonl # Generator operations
│ └── validations.jsonl # Validation results
└── backups/ # Automatic backups for rollbackSafety Features
✅ Proposal-based workflow: All changes require validation before writing
✅ Automatic backups: Files backed up before overwrite
✅ Rollback support:
orchestratorMcp.rollback_file()to undo changes✅ Confidence scoring: Track confidence for each transformation
✅ Audit trail: Complete JSONL logs of all operations
VS Code Integration
The .vscode/mcp.json configuration enables all three servers:
{
"servers": {
"analysisMcp": { "sandboxEnabled": true },
"generatorMcp": { "sandboxEnabled": false },
"orchestratorMcp": { "sandboxEnabled": false }
}
}Enable GitHub Copilot agent support in .vscode/settings.json:
{
"chat.agentSkillsLocations": { ".github/skills": true },
"chat.agentFilesLocations": { ".github/agents": true },
"chat.mcp.autostart": true,
"chat.useAgentSkills": true
}Running MCP Servers
# Build all servers
npm run build
# Run individual servers (production)
npm run mcp:analysis
npm run mcp:generator
npm run mcp:orchestrator
# Development mode (watch)
npm run mcp:dev:analysis
npm run mcp:dev:generator
npm run mcp:dev:orchestratorQuick Start
Once your MCP client is configured (see Installation), use the start_migration tool to kick off a full audit:
{
"name": "start_migration",
"arguments": {}
}The tool will automatically:
Detect
MIGRATION_SOURCE_PATHfrom your.envor environment variablesRun a full audit of the codebase (Vuex, mixins, API, components, tracking)
Return a prioritized migration plan
With specific module or paths
{
"name": "start_migration",
"arguments": {
"sourcePath": "/path/to/nuxt2",
"targetPath": "/path/to/nuxt3",
"module": "deals"
}
}With custom config path
{
"name": "start_migration",
"arguments": {
"configPath": "/path/to/custom.env"
}
}Workflow
The typical migration workflow:
Configure paths - Use
configure_migrationto set source (Nuxt 2) and target (Nuxt 4) pathsAudit source - Run audit tools to find migration issues in Nuxt 2 codebase
Generate code - Use generation tools to create code in Nuxt 4 target
Write custom - Use
write_filefor any custom code
Example Workflow
Quick Start (Recommended)
// Start full migration audit - auto-detects .env
{
"name": "start_migration",
"arguments": {}
}Manual Step-by-Step
// 1. Configure paths
{
"name": "configure_migration",
"arguments": {
"sourcePath": "/projects/my-nuxt2-app",
"targetPath": "/projects/my-nuxt4-app"
}
}
// 2. Audit specific module (e.g., 'deals')
{
"name": "audit_vuex_stores",
"arguments": {
"module": "deals"
}
}
// 3. Generate Pinia store for specific module
{
"name": "generate_pinia_store",
"arguments": {
"name": "deals",
"module": "deals",
"relativePath": "stores/deals.ts",
"stateProperties": ["items", "isLoading"],
"actions": ["fetchDeals", "createDeal"]
}
}
// 4. Generate component for specific module
{
"name": "generate_component",
"arguments": {
"name": "DealCard",
"module": "deals",
"relativePath": "components/DealCard.vue",
"props": ["deal", "status"],
"hasStore": true,
"storeName": "dealsStore"
}
}Per-Module Usage
All tools now support per-module operations:
Audit Specific Module
{
"name": "audit_vuex_stores",
"arguments": {
"module": "auth"
}
}Generate for Specific Module
{
"name": "generate_composable",
"arguments": {
"name": "useAuth",
"module": "auth",
"relativePath": "useAuth.ts",
"returnValues": ["user", "login", "logout"]
}
}This will create the file at: modules/auth/composables/useAuth.ts
Intelligent Path Mapping
The MCP now supports intelligent path mapping that follows Nuxt folder conventions:
List Target Structure
See what folders already exist in your target codebase:
{
"name": "list_target_structure",
"arguments": {
"path": "components",
"depth": 2
}
}Output:
{
"success": true,
"structure": [
{ "name": "components", "path": "components", "type": "directory", "children": [...] },
{ "name": "stores", "path": "stores", "type": "directory", "children": [...] },
{ "name": "composables", "path": "composables", "type": "directory", "children": [...] }
]
}Auto-Generate from Audit
Automatically generate files following Nuxt conventions:
{
"name": "generate_from_audit",
"arguments": {
"module": "deals",
"type": "all"
}
}This will scan source and map:
store/modules/deals.js→stores/deals.tsassets/mixins/useDeals.js→composables/useDeals.tscomponents/DealCard.vue→components/DealCard.vue
Generate and Write Multiple Files
{
"name": "generate_from_audit",
"arguments": {
"module": "deals",
"type": "store"
}
}Then write the results:
{
"name": "write_generated_files",
"arguments": {
"files": [
{
"targetFile": "stores/deals.ts",
"content": "import { defineStore } from 'pinia'..."
}
]
}
}Available Tools
Audit Tools (Source - Nuxt 2/3)
Tool | Description | Module Support |
| Auto-detect config and run full audit in one command | ✅ (optional) |
| Full codebase audit for all migration patterns | ✅ |
| Detect asyncData/fetch hooks → useAsyncData/useFetch | ✅ |
| Find CommonJS require/module.exports (ESM incompatible) | - |
| Check directory structure for Nuxt 4 app/ requirement | - |
| Detect deprecated @nuxtjs/* packages, suggest replacements | - |
| Find analytics calls and feature flags | ✅ |
| Analyze Vuex stores for Pinia migration | ✅ |
| Find mixins for composable conversion | ✅ |
| Find RxJS for async/await conversion | ✅ |
| Analyze Vue components for Options API | ✅ |
| Get migration status and recommended order | - |
| Set source/target paths dynamically | - |
Code Generation Tools (Target - Nuxt 3/4)
Tool | Description | Module Support |
| Generate Pinia store with state, actions, getters | ✅ |
| Generate Vue composable with Composition API | ✅ |
| Generate useAsyncData composable from asyncData() | ✅ |
| Generate Vue component with | ✅ |
| Generate API functions with async/await | ✅ |
| Generate TypeScript interface | ✅ |
| Write custom content to target codebase | ✅ |
| List target folder structure | ✅ |
| Auto-generate files from audit with mapping | ✅ |
| Write multiple generated files at once | ✅ |
Migration Coverage (2026)
Pattern | Nuxt 2 | Nuxt 3/4 | Detection | Generator |
Options API |
|
| ✅ | ✅ |
Vuex |
| Pinia | ✅ | ✅ |
Mixins |
| Composables | ✅ | ✅ |
RxJS | Observables | async/await | ✅ | ✅ |
asyncData/fetch | Lifecycle hooks | useAsyncData/useFetch | ✅ | ✅ |
ESM Compatibility | require/CJS | import/ESM | ✅ | - |
Directory Structure | Flat root | app/ subdirectory | ✅ | - |
Deprecated Modules | @nuxtjs/axios, @nuxtjs/auth, etc. | $fetch, nuxt-auth-utils | ✅ | - |
Plugin Signatures | inject context | defineNuxtPlugin | ✅ | - |
Tailwind v3 → v4 | @tailwind directives | @import 'tailwindcss' | ✅ | - |
SCSS | @import, @mixin | Atomic CSS / design tokens | ✅ | - |
Example Output
Audit Output
{
"summary": {
"totalFiles": 150,
"totalIssues": 42,
"bySeverity": {
"error": 15,
"warning": 20,
"info": 7
}
},
"recommendations": [
"Priority: Migrate Options API components to Composition API",
"Convert SCSS to Atomic CSS with design tokens"
]
}Code Generation Examples
Generate Pinia Store
{
"name": "generate_pinia_store",
"arguments": {
"name": "auth",
"module": "auth",
"relativePath": "stores/auth.ts",
"stateProperties": ["user", "token", "isAuthenticated"],
"actions": ["login", "logout", "fetchUser"],
"getters": ["isLoggedIn", "currentUser"]
}
}Generate Component
{
"name": "generate_component",
"arguments": {
"name": "UserCard",
"module": "users",
"relativePath": "components/UserCard.vue",
"props": ["user", "size"],
"emits": ["click"],
"hasStore": true,
"storeName": "userStore"
}
}Generate Composable
{
"name": "generate_composable",
"arguments": {
"name": "useAuth",
"module": "auth",
"relativePath": "composables/useAuth.ts",
"props": [],
"returnValues": ["user", "isAuthenticated", "login", "logout"]
}
}Write Custom File with Module
{
"name": "write_file",
"arguments": {
"module": "deals",
"relativePath": "utils/helper.ts",
"content": "export function formatDate(date: Date): string { ... }"
}
}Reusability
This MCP server is designed to be service-agnostic. To use with different projects:
Set
MIGRATION_SOURCE_PATHto point to any Nuxt 2 codebaseThe server will analyze patterns in that codebase
The pattern detection is generic and works with any Vue 2 → Vue 3 migration
For Other Services/Products
Simply change the environment variable or config to point to different source codebases:
# For Project A
MIGRATION_SOURCE_PATH=/path/to/project-a
# For Project B
MIGRATION_SOURCE_PATH=/path/to/project-bAuto-Trigger Configuration
You can configure your AI client to automatically call start_migration when the user wants to migrate Nuxt 2 to Nuxt 3/4. This way, users can simply type natural language prompts like:
"migrate nuxt 2 to nuxt 4"
"upgrade to nuxt 3"
"migrate this project to nuxt"
"start migration for pages/integrations/emails"
Claude Desktop
Edit your Claude Desktop config at ~/Library/Application Support/Claude/settings.json:
{
"mcpServers": {
"nuxt-migration": {
"command": "node",
"args": ["/absolute/path/to/nuxt-migration-mcp/dist/index.js"],
"env": {
"MIGRATION_SOURCE_PATH": "/path/to/your/nuxt2/project"
}
}
},
"instructions": "When user wants to migrate Nuxt 2 to Nuxt 3/4 (keywords: 'migrate nuxt', 'nuxt 2 to nuxt', 'upgrade nuxt', 'start migration'), automatically call the start_migration tool from nuxt-migration MCP. Extract source/target paths from the prompt if provided, otherwise use MIGRATION_SOURCE_PATH environment variable."
}Cursor
Edit your Cursor config at ~/.cursor/settings/mcp.json or through Cursor Settings > Features > Models > Advanced > Claude API:
{
"mcpServers": {
"nuxt-migration": {
"command": "node",
"args": ["/absolute/path/to/nuxt-migration-mcp/dist/index.js"],
"env": {
"MIGRATION_SOURCE_PATH": "/path/to/your/nuxt2/project"
}
}
}
}Then add custom instructions in Cursor Settings > Features > AI Settings > Custom Instructions:
When user wants to migrate Nuxt 2 to Nuxt 3/4, automatically call start_migration tool from nuxt-migration MCP. Keywords: 'migrate nuxt', 'nuxt 2 to nuxt', 'upgrade nuxt', 'migration nuxt'.VS Code (with Copilot)
VS Code doesn't have native MCP support yet. Use UVX or the MCP for VS Code extension.
After installing the extension, configure in VS Code settings (settings.json):
{
"mcpServers": {
"nuxt-migration": {
"command": "node",
"args": ["/absolute/path/to/nuxt-migration-mcp/dist/index.js"],
"env": {
"MIGRATION_SOURCE_PATH": "/path/to/your/nuxt2/project"
}
}
}
}Trigger Keywords
The AI will automatically trigger when user mentions:
"migrate nuxt", "migration nuxt", "upgrade nuxt", "start migration", "nuxt 2 to nuxt 3/4"
Parsing Prompts
The AI will extract information from natural prompts:
User Prompt | Extracted Parameters |
"migrate nuxt 2 to nuxt 4" |
|
"migrate /pages/deals" |
|
"migration for pages/integrations/emails" |
|
"migrate from /path/a to /path/b" |
|
Example Prompts
Here are example prompts users can type and the AI will auto-trigger:
Basic Migration:
User: "migrate nuxt 2 to nuxt 4"
User: "migration nuxt 2 to nuxt 3"
User: "upgrade this project to nuxt 3"
User: "start migration nuxt 2 to nuxt 4"With Specific Module:
User: "migrate nuxt 2 - module deals"
User: "migration for pages/deals"
User: "migrate the deals page to nuxt 3"
User: "start migration for auth module"With Specific Page/Path:
User: "migrate pages/integrations/emails/index.vue"
User: "migration for pages/dashboard"
User: "migrate the file pages/products/index.vue"
User: "start migration for components/Header.vue"With Custom Paths:
User: "migrate from /Users/me/old-nuxt2 to /Users/me/new-nuxt3"
User: "migration /path/to/nuxt2 -> /path/to/nuxt3"
User: "migrate nuxt 2 at /projects/web to /projects/web-v3"Combined:
User: "migrate nuxt 2 to nuxt 4 for module deals, target at /nuxt3-project"
User: "migration pages/integrations/emails from /old to /new"Project Structure
nuxt-migration-mcp/
├── src/
│ ├── core/
│ │ ├── config.ts # Configuration loader
│ │ ├── patterns.ts # Pattern definitions
│ │ └── analyzer.ts # Code analysis logic
│ ├── tools/
│ │ ├── nuxt-migration.ts
│ │ ├── tracking.ts
│ │ ├── vuex-to-pinia.ts
│ │ ├── composable-migration.ts
│ │ ├── api-migration.ts
│ │ ├── component-migration.ts
│ │ ├── generator.ts # Code generation for target
│ │ └── directory.ts # Directory listing & intelligent mapping
│ ├── types/
│ │ └── index.ts
│ └── index.ts # MCP server entry
├── package.json
├── tsconfig.json
└── README.mdAgent Architecture
The system implements a multi-agent orchestration pattern with specialized agents that coordinate through MCP servers. Agents are invoked using the @agent syntax in GitHub Copilot Chat.
Available Agents
@orchestrator - Main Coordinator
Purpose: Orchestrates the complete migration workflow across all phases
Responsibilities:
Spawn and coordinate subagents (@auditor, @transformer, @validator, @design-system-migrator)
Maintain migration state in
.migration/migration_state.jsonValidate subagent outputs against contracts
Resolve conflicts between transformations
Provide migration summaries and status reports
MCP Tools: orchestratorMcp.* (all orchestrator server tools)
Workflow:
1. Audit Phase → spawn @auditor
2. Transform Phase → spawn @transformer for each pattern
3. Design System Phase → spawn @design-system-migrator for UI components
4. Validate Phase → spawn @validator for proposals
5. Report Phase → generate summary@auditor - Pattern Detection Specialist
Purpose: Read-only analysis of Nuxt 2 source codebase
Responsibilities:
Scan source code for migration patterns
Detect Vuex stores, mixins, Options API, RxJS usage
Assess complexity and risk levels
Suggest migration order
Generate structured audit reports
MCP Tools: analysisMcp.* (all analysis server tools)
Skills: Uses pattern-detection skill for systematic scanning
Constraints:
❌ Cannot modify any files
✅ Can read source codebase and state files
✅ Sandboxed for safety
@transformer - Code Generator
Purpose: Generate Nuxt 3/4 code from detected patterns
Responsibilities:
Propose code transformations (Vuex→Pinia, Mixin→Composable, etc.)
Assign confidence scores (0.60-1.00)
Validate proposals before writing
Write validated code to target codebase
Create automatic backups
MCP Tools: generatorMcp.* (all generator server tools)
Skills: Uses code-transformation skill for transformation workflows
Safety:
Requires confidence ≥ 0.60 for proposals
All writes require validation
Automatic file backups before overwrite
@validator - Quality Assurance
Purpose: Validate code transformation proposals
Responsibilities:
Verify proposal completeness
Check confidence thresholds (≥0.60)
Validate file safety (no overwrites without backup)
Check syntax correctness
Assess security risks
Verify TypeScript/Nuxt conventions
Provide pass/fail/review decisions
MCP Tools: Limited search and read tools
Skills: Uses safety-validation skill for comprehensive checks
Output:
{
approved: boolean,
overall_status: 'pass' | 'fail' | 'review',
can_auto_approve: boolean,
checks: { /* detailed results */ }
}@design-system-migrator - Design System Specialist
Purpose: Migrate custom components and styling to target codebase's design system
Responsibilities:
Auto-detect design system from target codebase (Element Plus, Vuetify, Ant Design, etc.)
Discover custom UI components with manual styling
Map components to detected design system equivalents
Replace hardcoded values with design tokens
Transform components to use design system library
Validate design token usage and accessibility
Ensure consistent UI/UX across migration
Supported Design Systems:
Element Plus, Vuetify, Ant Design Vue, Quasar (Vue)
Material UI, Chakra UI (React/Vue)
Tailwind CSS (utility-class based)
Custom Design Systems
MCP Tools:
file/read,directory/list(auto-detection)generatormcp_propose_componentgeneratormcp_validate_proposalgeneratormcp_write_validated_proposal
Skills: Uses design-system-migration skill for component transformation
Workflow:
0. Auto-Detect → Identify design system from package.json + token files
1. Discover → Scan for custom components and styling
2. Map → Find design system component equivalents
3. Transform → Replace with design system components + tokens
4. Validate → Ensure functionality and a11y preservedOutput:
{
design_system: { name: string, package: string, version: string },
components_migrated: ComponentMigration[],
tokens_applied: { colors: number, spacing: number, typography: number },
unmappable: ComponentIssue[]
}Using Agents in Copilot Chat
# Start orchestrated migration
@orchestrator Start a new Nuxt 2 to Nuxt 4 migration
# Audit specific module
@auditor Scan the auth module for patterns
# Generate transformation
@transformer Convert the deals Vuex store to Pinia
# Migrate to design system
@design-system-migrator Replace all button components with our design system
# Validate proposal
@validator Check proposal #abc123 for safetyAgent Coordination Example
User → @orchestrator: "Migrate the deals module"
@orchestrator spawns @auditor:
@auditor scans deals module → finds Vuex store, 3 mixins, 5 components
@auditor returns structured audit report
@orchestrator spawns @transformer (for Vuex store):
@transformer proposes Pinia store → confidence: 0.85
@transformer spawns @validator
@validator checks proposal → approved: true
@transformer writes stores/deals.ts
@orchestrator spawns @transformer (for mixin #1):
@transformer proposes composable → confidence: 0.92
@transformer spawns @validator
@validator checks proposal → approved: true
@transformer writes composables/useDeals.ts
@orchestrator reports:
✅ Deals module migrated
- 1 Pinia store created
- 3 composables created
- 5 components updatedSkills
Skills are domain-specific workflows that agents invoke to perform complex tasks. Located in .github/skills/.
pattern-detection
Used By: @auditor
Purpose: Systematic pattern detection in Nuxt 2 codebase
Workflow:
Initialize Scan - Set module scope, create audit context
Source Code Discovery - Find .vue, .js, .ts files
Pattern Matching - Apply regex patterns for Vuex, mixins, Options API, RxJS
Dependency Mapping - Track cross-file dependencies
Complexity Assessment - Score files by transformation difficulty
Risk Flagging - Identify high-risk transformations
Priority Sorting - Order by impact + risk + dependencies
Structured Output - Return JSON with counts, details, recommendations
Pattern Catalog:
Vuex:
mapState,mapGetters,mapActions,$store.dispatchMixins:
mixins: [...], mixin file importsOptions API:
export default { data(), methods: {}, computed: {} }RxJS:
.pipe(,.subscribe(,Observable,SubjectTracking:
$mixpanel,gtag(,dataLayer.push
Output:
{
"patterns_found": {
"vuex_stores": 5,
"mixins": 12,
"options_api": 23
},
"complexity_scores": { /* file-level scores */ },
"dependencies": { /* cross-references */ },
"recommendations": ["Migrate Vuex first...", "..."]
}code-transformation
Used By: @transformer
Purpose: Systematic code transformation workflows
Transformations:
1. Vuex → Pinia
Extract state, getters, actions, mutations
Convert to Pinia
defineStorewith TypeScriptMap
$store.dispatch→store.action()Replace
mapGetters→ direct refsConfidence algorithm: Based on mutation complexity
2. Mixin → Composable
Extract mixin methods and data
Convert to
export function use[Name]()patternHandle lifecycle hooks → watch/onMounted
Preserve reactivity with
ref/reactiveConfidence: Lower if uses complex
thisreferences
3. Options API → Composition API
Convert
data()→ref()/reactive()Convert
methods→ functionsConvert
computed→computed()Convert
mounted()→onMounted()Handle
this.$refsand component communication
4. RxJS → async/await
Convert
Observable.pipe()→ async functionsReplace
.subscribe()→ await + try/catchHandle cancellation with AbortController
Preserve error handling
Quality Standards:
✅ TypeScript with strict types
✅ Composition API with
<script setup>✅ Proper error handling
✅ design-system-migration
Used By: @design-system-migrator
Purpose: Migrate custom components and styling to the target design system
Workflow:
Discover Custom Components - Scan for components with custom styling
Fetch Design System Catalog - Get available components and specs from target design system
Map Components - Match custom components to design system equivalents
Transform Components - Replace with design system components and tokens
Apply Design Tokens - Replace hardcoded colors, spacing, typography with tokens
Validate Accessibility - Ensure WCAG 2.1 AA compliance
Verify Quality - Check component API, props mapping, functionality
Design Tokens:
Colors: Primary, secondary, error, success, warning, neutral
Spacing: xs (4px), sm (8px), md (16px), lg (24px), xl (32px)
Typography: Font family, sizes, weights, line heights
Border Radius: sm (4px), md (8px), lg (12px), full (9999px)
Shadows: Elevation levels for depth
Quality Standards:
✅ Replace all hardcoded values with design tokens
✅ Maintain original functionality
✅ WCAG 2.1 AA accessibility (4.5:1 contrast)
✅ Keyboard navigation support
✅ Proper ARIA attributes
Nuxt 3/4 auto-imports
✅ Modern ES syntax
safety-validation
Used By: @validator
Purpose: Comprehensive validation of transformation proposals
7-Phase Validation:
Phase 1: Proposal Verification
Check required fields (proposal_id, source_file, target_file, code)
Verify transformation type
Ensure confidence score exists
Phase 2: Confidence Check
Minimum threshold: 0.60
Flag < 0.70 for manual review
Auto-approve ≥ 0.85
Phase 3: File Safety
Check if target file exists
Verify backup will be created
Prevent accidental overwrites
Phase 4: Syntax Validation
Parse TypeScript/Vue syntax
Check for syntax errors
Validate template syntax in .vue files
Phase 5: Security Assessment
Check for hardcoded secrets
Verify no
eval()or dangerous patternsCheck for XSS vulnerabilities in templates
Phase 6: Convention Compliance
Verify Nuxt 3/4 conventions
Check file naming (kebab-case)
Validate import paths
Ensure TypeScript usage
Phase 7: Risk Assessment
risk_level = (
file_complexity * 0.3 +
dependency_count * 0.2 +
(1 - confidence) * 0.5
)
// High risk if > 0.7Decision Logic:
if (has_errors || security_issues || confidence < 0.60) {
return 'fail'
} else if (risk_level > 0.7 || confidence < 0.70) {
return 'review' // Manual approval needed
} else {
return 'pass' // Auto-approve
}Hooks
Hooks are event handlers that execute at specific points in the agent workflow. Located in .github/hooks/.
migration-validator Hook
Event: SubagentStop - Triggered when a subagent completes
Purpose: Validate subagent outputs before allowing completion
Implementation: .github/hooks/migration-validator.ts
Validation by Agent Type:
@auditor Output
Required fields:
- agent: 'auditor'
- phase: 'audit'
- action: string
- timestamp: ISO string
- results: { patterns_found, ... }
- recommendations: string[]@transformer Output
Required fields:
- agent: 'transformer'
- phase: 'transform'
- action: 'propose' | 'validate' | 'write'
- migration_type: string
- timestamp: ISO string
For 'propose':
- proposal_id: string
- confidence: number (0.6-1.0)
For 'validate':
- validation_result: object
For 'write':
- result: { status: string }@validator Output
Required fields:
- agent: 'validator'
- phase: 'validate'
- proposal_id: string
- validation_result: {
approved: boolean,
overall_status: 'pass' | 'fail' | 'review',
can_auto_approve: boolean,
checks: object
}Action Recording: When validation passes, the hook automatically records to:
.migration/actions/audits.jsonl- For @auditor.migration/actions/generations.jsonl- For @transformer.migration/actions/validations.jsonl- For @validator.migration/migration_log.md- Human-readable log
Hook Result:
{
allowed: true, // Allow completion
validated: true, // Passed validation
agent: 'auditor',
timestamp: '2026-04-06T...'
}
// Or on failure:
{
allowed: false, // Block completion
validated: false,
agent: 'transformer',
error: 'Missing proposal_id',
suggestion: 'Please provide output matching the transformer agent contract'
}Benefits:
✅ Enforces structured contracts
✅ Prevents incomplete outputs
✅ Automatic audit trail
✅ Type-safe validation
✅ Helpful error messages
Author
Gapra (gapraart@gmail.com)
License
MIT
Available Tools
23 toolsaudit_api_migrationB
Audit API layer for RxJS Observables and suggest conversion to async/await pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Optional module path to audit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must disclose behavioral traits. It mentions auditing and suggesting conversion but does not specify whether the tool modifies files, produces a report, or has side effects. This lack of detail hinders the agent's ability to anticipate outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the tool's purpose. Every word is necessary, and no extraneous information is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has only one optional parameter and no output schema, the description is minimally adequate. However, it fails to explain what form the audit output takes (e.g., console output, suggestions in code) or how it integrates with the migration workflow, leaving some gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with descriptions. The tool description adds 'Optional module path to audit,' mirroring the schema's description. No additional meaning is provided beyond what the schema already states, earning a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool audits the API layer for RxJS Observables and suggests conversion to async/await. This is specific and distinguishes from sibling audit tools that focus on other aspects (e.g., audit_components, audit_deprecated_modules).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like audit_async_data or get_migration_summary. The description does not indicate prerequisites or scenarios where this tool is appropriate, leaving the agent to infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_async_dataB
Detect Nuxt 2 asyncData() and fetch() lifecycle hooks that must be converted to useAsyncData() or useFetch() in Nuxt 3/4.
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Optional module path to audit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as side effects, read-only nature, permissions, or error states. For a detection tool, it is unclear whether it modifies files or only outputs a report.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately states the tool's purpose. There is no redundancy or wasted words, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, the description does not explain what the detection produces (e.g., report, list, or modifications). It lacks details on how to interpret results or next steps, leaving the agent with an incomplete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for the single parameter 'module' with a description. The tool description does not add any extra meaning beyond the schema, so it meets the baseline but provides no additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Detect' and identifies the exact resource 'Nuxt 2 asyncData() and fetch() lifecycle hooks that must be converted to useAsyncData() or useFetch() in Nuxt 3/4'. It clearly distinguishes from sibling tools that target other aspects of migration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives like audit_nuxt_migration or audit_tracking. No exclusions or when-not-to-use contexts are mentioned, leaving the agent to infer use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_componentsB
Audit Vue components for Options API and SCSS usage. Recommends Composition API and Atomic CSS migration.
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Optional module path to audit (e.g., "deals", "tickets") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It states the tool audits and recommends, but it does not clarify whether it modifies files, side effects, or whether it is read-only. The lack of detail on what 'audit' entails (e.g., returns report, writes files) is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the action and resource. Every sentence adds value: first states the audit, second states the recommendation. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain what the audit returns (e.g., list of files, actionable recommendations). It omits details on output format, making it incomplete for an agent to understand what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'module'. The description adds an example but no additional meaning beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool audits Vue components for Options API and SCSS usage and recommends migration to Composition API and Atomic CSS. It distinguishes from sibling audit tools by focusing on components and specific migration targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for auditing components in preparation for migration, but it does not explicitly state when to use it versus alternatives like 'audit_mixins' or 'audit_deprecated_modules'. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_deprecated_modulesA
Detect deprecated @nuxtjs/* modules in package.json and nuxt.config that are incompatible with Nuxt 3/4. Suggests modern replacements.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states the tool detects and suggests replacements but does not disclose whether it is read-only, requires authentication, or has side effects. The simple action 'detect' suggests non-destructive behavior, but the description could be more explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. Clearly states action, target, and outcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description is clear for a zero-parameter tool, it omits details about the output format (e.g., list of modules, replacement suggestions). Given no output schema, the description should provide more context on what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the description naturally adds no parameter details. According to the rubric, zero parameters warrant a baseline of 4. The description does not need to elaborate further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: detecting deprecated @nuxtjs/* modules in specific config files and suggesting replacements. It distinguishes itself from sibling audit tools by focusing on deprecated modules specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like audit_api_migration or audit_async_data. While the mention of Nuxt 3/4 incompatibility implies migration context, it fails to differentiate or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_esm_compatibilityA
Audit source codebase for CommonJS patterns (require, module.exports, __dirname) incompatible with Nuxt 3/4 ESM-only environment.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states only the scanning action but does not disclose whether the tool is read-only, modifies files, requires permissions, or returns a report. Lack of behavioral details beyond purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no extraneous words. Every part is necessary: verb, resource, patterns, environment. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with zero parameters and no output schema, the description covers the core function adequately. Minor gap: it does not mention output format (e.g., list of issue files) or side effects, but given low complexity, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0 parameters, so no param info is needed. Baseline for 0 params is 4. The description adds context about what patterns are audited, but since no parameters exist, it cannot add parameter semantics. A score of 4 reflects that the description meets baseline without deficiency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'audit' and resource 'source codebase for CommonJS patterns', listing concrete patterns (require, module.exports, __dirname) and target environment (Nuxt 3/4 ESM-only). It clearly distinguishes from sibling audit tools that focus on different aspects like API migration or components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when migrating to ESM in Nuxt 3/4, but lacks explicit when-to-use, when-not-to-use, or alternatives. An agent can infer context from the purpose, but no direct guidance on selection among sibling audit tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_mixinsA
Audit Vue mixins and suggest conversion to composables. Identifies data, methods, and computed properties to extract.
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Optional module path to audit (e.g., "deals", "auth") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states the tool audits and suggests conversion without mentioning side effects, permissions, or whether it performs write operations. The description is adequate but lacks detail on behavior (e.g., read-only, output format).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states the main action, second specifies what it identifies. No wasted words, front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one optional parameter and no output schema, the description is adequate but lacks context about return values or whether the tool generates files. Missing details on what 'suggest' means operationally.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter. The description does not add new meaning beyond the schema's description. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb ('Audit') and resource ('Vue mixins') with a specific purpose ('suggest conversion to composables'). It distinguishes from sibling tools by focusing on mixins and listing specific elements to extract (data, methods, computed).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool over alternatives (e.g., audit_components, audit_async_data). The description implies use for mixin-to-composable conversion but does not provide context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_nuxt4_structureA
Audit the project directory structure for Nuxt 4 compatibility. Nuxt 4 requires source files inside an app/ subdirectory.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as whether the tool is read-only, what side effects occur, or what the output looks like. For a zero-parameter audit tool, it should mention it does not modify files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences convey purpose and key constraint. No wasted words; essential information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately states what the tool checks, but lacks information about the output format or how results are presented. Given no output schema, the description should hint at what the agent can expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (0 params, schema coverage 100%). Baseline score of 4 is appropriate since description adds no parameter details, but none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The tool name and description clearly state it audits Nuxt 4 structure compatibility. The specific requirement (source files in app/ subdirectory) is called out, distinguishing it from other audit tools focusing on different aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like audit_nuxt_migration. The purpose implies it's for checking directory structure, but without context of when an agent should select it over other audit tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_nuxt_migrationB
Audit source codebase for Nuxt 2 to Nuxt 4 migration issues. Detects Options API, Vuex, SCSS, RxJS, mixins, and other legacy patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Optional module path to audit (e.g., "deals", "tickets") | |
| configPath | No | Optional path to config file with MIGRATION_SOURCE_PATH |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It states the tool 'detects' issues but does not disclose whether it modifies files, the output format, side effects, or expected runtime. Given the absence of annotations, more detail is needed for safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately conveys the core purpose and lists key detection targets. It is front-loaded with the main action and avoids any redundant or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of parameters and absence of output schema, the description provides a basic overview but lacks details on the audit results, how to interpret them, and any default behavior when no configPath is provided. It is minimally complete but leaves gaps for effective usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters (module, configPath) already described in the schema. The tool description adds no extra meaning beyond the schema descriptions. As per guidelines, baseline is 3 when schema coverage is high, and the description does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: auditing a Nuxt codebase for migration issues from version 2 to 4. It specifies the verb 'audit' and the resource 'source codebase', and lists specific legacy patterns it detects (Options API, Vuex, SCSS, RxJS, mixins), distinguishing it from sibling tools that focus on individual aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks any guidance on when to use this tool versus its many siblings (e.g., audit_mixins, audit_vuex_stores). No context is provided about prerequisites, expected workflow, or which tool to choose for specific scenarios. This omission forces the agent to infer usage without direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_trackingB
Audit source codebase for analytics tracking calls and feature flags. Finds Mixpanel, gtag, dataLayer, and other tracking patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Optional module path to audit (e.g., "deals", "tickets") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Lacks annotations. Description does not disclose behavioral traits such as whether the tool modifies files, requires network access, or what side effects occur. With no annotations, the description should cover these but doesn't.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. Front-loaded with the main action and lists example patterns efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and description does not explain return values or format. Acceptable but incomplete for an agent to fully understand what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one optional parameter 'module' described as an optional path. The description adds no extra detail beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool audits source code for analytics tracking calls and feature flags, listing specific patterns (Mixpanel, gtag, dataLayer), making it distinct from sibling tools that audit other aspects like deprecated modules or components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus other audit tools. Does not specify prerequisites, expected conditions, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_vuex_storesA
Audit Vuex stores and suggest migration to Pinia. Identifies state, mutations, actions, and getters to convert.
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Optional module path to audit (e.g., "deals", "auth") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It mentions what the tool identifies (state, mutations, etc.) but does not disclose whether the tool modifies anything, requires permissions, or has side effects. Essential behavioral traits are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences that directly state the tool's purpose and the elements it identifies. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description provides adequate but minimal information. It does not explain the output format, whether migration suggestions are applied automatically, or any constraints on modules. It meets basic needs but lacks completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single optional parameter 'module' with 100% coverage. The description does not add any additional meaning beyond the schema's description. Baseline is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to audit Vuex stores and suggest migration to Pinia, listing specific elements it identifies (state, mutations, actions, getters). It differentiates from sibling tools like audit_nuxt_migration or audit_api_migration by focusing specifically on Vuex stores.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for Vuex store migration auditing but does not explicitly state when to use it over alternatives, nor does it provide any exclusion criteria or prerequisites. Context from sibling tool names helps infer scope, but the description itself offers no explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_migrationB
Configure migration source and target paths.
| Name | Required | Description | Default |
|---|---|---|---|
| sourcePath | Yes | Absolute path to source Nuxt 2 codebase | |
| targetPath | No | Absolute path to target Nuxt 4 codebase |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says 'configure', implying a write operation, but provides no details on effects, reversibility, validation, or required permissions. Since no annotations exist, the description should disclose more.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it sacrifices necessary details. It is not overly long but could be restructured to include key behavioral info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's role as a configuration step, the description should explain what 'configure' does (e.g., saves to a file, validates paths). Without this, and with no output schema, the description is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The tool description adds no new meaning beyond the schema, resulting in a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Configure' and the resource 'migration source and target paths', which is specific and distinguishes from sibling tools that audit or generate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like start_migration or audit tools. It does not mention prerequisites or ordering, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_apiB
Generate API functions in the target Nuxt 4 codebase. Creates a new API file with async/await pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the API (e.g., 'user', 'products') | |
| relativePath | Yes | Relative path in target (e.g., 'api/users.ts') | |
| module | No | Optional module name to prefix path (e.g., 'deals', 'tickets') | |
| targetPath | No | Optional absolute target path override | |
| methods | No | HTTP methods to generate (get, post, put, delete) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states creation of a new API file with async/await pattern, but does not disclose whether it overwrites existing files, required permissions, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with key action, no wasted words. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description lacks details on expected output (e.g., file path, success response) and behavioral boundaries. For a generation tool, this is insufficient for an agent to fully understand consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds nothing beyond what the schema already describes for parameters. The description does not provide additional context or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates API functions in a Nuxt 4 codebase, which is specific and distinguishable from sibling tools like generate_composable or generate_component. The verb 'Generate' and resource 'API functions' are precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., generate_from_audit, write_file). There are no exclusions or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_async_data_composableB
Generate a useAsyncData composable to replace Nuxt 2 asyncData() or fetch() lifecycle hooks.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Composable name (e.g., 'usePosts') | |
| relativePath | Yes | Relative path in target (e.g., 'composables/usePosts.ts') | |
| module | No | Optional module name | |
| targetPath | No | Optional absolute target path override | |
| endpoint | No | API endpoint to fetch from | |
| key | No | Cache key for useAsyncData | |
| hasLazyLoad | No | Whether to use lazy loading |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden of behavioral disclosure. It only states the tool generates a composable but does not disclose whether it overwrites existing files, requires specific project structure, or what side effects occur. This is insufficient for a generation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded. It efficiently conveys the core purpose without extraneous words. Could be slightly improved by noting output format, but still effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters, no output schema, and no annotations, the description is too minimal. It lacks details on return value, file creation behavior, prerequisites, and migration context beyond the basic purpose. Schema covers parameter definitions but overall usage context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for all 7 parameters, so baseline is 3. The description does not add meaning beyond what the schema already provides; it does not explain how parameters like 'endpoint' or 'hasLazyLoad' affect generation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Generate', the specific resource 'useAsyncData composable', and the context 'to replace Nuxt 2 asyncData() or fetch() lifecycle hooks.' This distinguishes it from siblings like generate_composable or generate_component.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for Nuxt 2 to Nuxt 3 migration of asyncData/fetch hooks, but does not explicitly state when to use this tool versus alternatives like generate_composable or generate_from_audit. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_componentC
Generate a Vue component in the target Nuxt 4 codebase. Creates a new component with Composition API.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the component (e.g., 'UserCard', 'Button') | |
| relativePath | Yes | Relative path in target (e.g., 'components/UserCard.vue') | |
| module | No | Optional module name to prefix path (e.g., 'deals', 'tickets') | |
| targetPath | No | Optional absolute target path override | |
| props | No | Optional props to include | |
| emits | No | Optional emits to include | |
| hasStore | No | Whether component uses a Pinia store | |
| storeName | No | Name of the store if hasStore is true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Minimal disclosure beyond 'creates a new component'. No mention of side effects like file overwriting, permission requirements, or where the file is created. Annotations are absent, so description carries full burden but fails to provide meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficient two-sentence description with no redundancy. However, it could be slightly more informative without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters and no output schema, description is too brief. Lacks details on generation conventions, store integration behavior, and output file structure. Incomplete for an agent to fully understand the tool's effect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all 8 parameters with descriptions (100% coverage). Description adds no extra meaning to parameters; it only states 'with Composition API'. Baseline of 3 is appropriate as schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it generates a Vue component in Nuxt 4 using Composition API. Distinguishes from sibling tools like generate_api, generate_composable, etc., by specifying 'Vue component'. However, could be more precise about the file type (e.g., .vue) and script setup style.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like generate_composable or generate_from_audit. Does not mention any prerequisites or context for choosing this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_composableB
Generate a composable in the target Nuxt 4 codebase. Creates a new composable file with Vue 3 Composition API.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the composable (e.g., 'useAuth', 'useFetch') | |
| relativePath | Yes | Relative path in target (e.g., 'composables/useAuth.ts') | |
| module | No | Optional module name to prefix path (e.g., 'deals', 'tickets') | |
| targetPath | No | Optional absolute target path override | |
| props | No | Optional props/refs to include | |
| returnValues | No | Optional values to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It indicates the tool 'creates a new composable file', which is a write operation, but does not disclose behavior on file existence, required permissions, side effects, or error handling. Behavioral details are insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the core action and quality. It avoids fluff but could be slightly more informative without losing conciseness. Still, it is well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters (2 required), no output schema, and no annotations, the description is too minimal. It does not explain the generation process, file creation behavior, or provide examples. For a code generation tool, more completeness is needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 6 parameters (e.g., 'Name of the composable (e.g., 'useAuth', 'useFetch')'). The tool description adds no additional parameter-level meaning beyond the schema. Baseline 3 is appropriate as the schema already documents the parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Generate a composable in the target Nuxt 4 codebase. Creates a new composable file with Vue 3 Composition API.' It specifies the resource (composable), target framework (Nuxt 4), and API style (Vue 3 Composition API). This distinguishes it from sibling tools like generate_api or generate_component.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives like generate_from_audit or generate_type. It does not state prerequisites, typical use cases, or when not to use it. The context is purely descriptive without usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_from_auditC
Auto-generate files based on audit findings with intelligent path mapping. Scans source and creates corresponding files in target following Nuxt patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Optional module to generate for (e.g., 'deals', 'auth') | |
| type | No | Type of files to generate (default: all) | |
| targetPath | No | Optional absolute target path override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It mentions 'intelligent path mapping' but does not disclose whether files are overwritten, permissions needed, or any side effects. For a code generation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two sentences. It could be slightly more structured, but there are no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 optional parameters and no output schema. The description fails to explain what the output is (e.g., list of generated files) or any side effects, making it incomplete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-described in the schema. The description adds no extra context beyond what the schema provides, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's function: auto-generating files from audit findings with intelligent path mapping. It distinguishes from sibling specific generate tools by being audit-based, though it could emphasize this more clearly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the specific generate tools (e.g., generate_api, generate_component). No prerequisites or usage context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_pinia_storeB
Generate a Pinia store in the target Nuxt 4 codebase. Creates a new store file with state, actions, and getters.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the store (e.g., 'user', 'auth') | |
| relativePath | Yes | Relative path in target (e.g., 'stores/user.ts') | |
| module | No | Optional module name to prefix path (e.g., 'deals', 'tickets') | |
| targetPath | No | Optional absolute target path override | |
| stateProperties | No | Optional state properties to include | |
| actions | No | Optional actions to include | |
| getters | No | Optional getters to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that the tool creates a new store file with state, actions, and getters, but it does not disclose what happens if the file already exists, whether it overwrites or appends, what permissions are needed, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and detail. Every sentence earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters, 2 required, and no output schema or annotations, the description is too brief. It lacks information on return values, behavior on file conflicts, or prerequisites. A more complete description would include these details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with each parameter already described. The tool description adds minimal extra meaning by linking stateProperties, actions, and getters to the store's components. Baseline of 3 is appropriate as schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates a Pinia store in a Nuxt 4 codebase, specifying the verb 'generate', resource 'Pinia store', and mentions creating a file with state, actions, and getters. It effectively distinguishes itself from sibling tools like generate_api or generate_composable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a Pinia store is needed, but it provides no explicit guidance on when to use this tool versus alternatives such as audit_vuex_stores or generate_from_audit. No exclusions or when-not-to-use context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_typeC
Generate a TypeScript type/interface in the target Nuxt 4 codebase.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the type (e.g., 'User', 'Product') | |
| relativePath | Yes | Relative path in target (e.g., 'types/User.ts') | |
| module | No | Optional module name to prefix path (e.g., 'deals', 'tickets') | |
| targetPath | No | Optional absolute target path override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states the action without disclosing behavioral traits such as file overwriting, permission needs, or side effects on the codebase.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It conveys the core purpose, though could include more behavioral details without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and simple parameter structure, the description covers the basic action but lacks information on return values, side effects, or how the generated file is handled, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the schema itself provides clear parameter semantics. The description adds no extra meaning beyond summarizing the purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a TypeScript type/interface in a Nuxt 4 codebase, using specific verb and resource. However, it does not explicitly distinguish this from sibling tools like generate_component or generate_api, relying on the name and context to imply the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., other generate tools), nor are there usage conditions or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_migration_summaryA
Get summary of migration status including source/target paths and recommended migration order.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only states what the tool returns but does not disclose any behavioral traits such as side effects, required prior actions, or safety (e.g., read-only).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that conveys the purpose without wasted words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and no annotations, the description is minimal but sufficient for a simple summary tool. However, it could benefit from additional context, such as when the summary is available or how it relates to other migration tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100%. The description does not need to add parameter information, and it correctly implies no inputs are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'migration summary', and specifies the included content (source/target paths, recommended migration order). It distinguishes itself from sibling tools which are primarily audit, configure, generate, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention any prerequisites, context, or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_target_structureA
List the directory structure of the target Nuxt 4 codebase. Useful for understanding existing folder structure.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional relative path within target (e.g., 'components', 'stores') | |
| depth | No | Depth of directory to traverse (default: 3) | |
| targetPath | No | Optional absolute target path override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, leaving the description to cover behavioral traits. It only states it lists directory structure, but does not disclose that it is a read-only operation, what happens with invalid paths, or any potential side effects. The description is too minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant information. The first sentence front-loads the core purpose, and the second adds context. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 optional params, no output schema), the description covers the essential purpose and use case adequately. It might miss mentioning the return format (e.g., tree structure), but it is sufficiently complete for the complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all 3 parameters have descriptions in the schema). The description does not add any extra meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'List the directory structure of the target Nuxt 4 codebase' with a clear verb and resource. It distinguishes itself from sibling tools (e.g., audit_* or generate_*) which are about analysis or generation, not listing directory structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Useful for understanding existing folder structure' implies when to use it, but there is no explicit guidance on when not to use it or mention of alternatives. However, no siblings directly compete, so the implied usage is acceptable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_migrationA
Start full Nuxt 2 to Nuxt 3/4 migration process. Automatically detects MIGRATION_SOURCE_PATH from .env, config file, or environment variables. Runs comprehensive audit of the entire codebase including components, stores, composables, API layer, and tracking patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| sourcePath | No | Optional absolute path to source Nuxt 2 codebase (overrides .env/config) | |
| targetPath | No | Optional absolute path to target Nuxt 4 codebase (overrides .env/config) | |
| module | No | Optional specific module to migrate (e.g., 'deals', 'tickets') | |
| configPath | No | Optional path to .env config file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It mentions automatic detection and a comprehensive audit, but it does not clarify whether the tool is read-only, if it writes files, if it is blocking, or if it requires prior configuration. This leaves gaps for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The first sentence states the purpose, and the second adds auto-detection and audit scope. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main action and auto-detection, but it does not describe the output or return value. With no output schema, the agent is left wondering what happens after starting the migration. The presence of sibling tools like get_migration_summary suggests follow-up actions, but these are not referenced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage. The description adds value by explaining the override behavior for sourcePath, targetPath, and configPath, and the optional nature of module, thus providing context beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts a full Nuxt 2 to Nuxt 3/4 migration process. It specifies the versions and mentions a comprehensive audit of the codebase, distinguishing it from sibling tools that focus on specific audit or generation tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage to start the migration and mentions automatic detection of the source path, but it does not explicitly differentiate when to use this tool versus alternatives like configure_migration or get_migration_summary. It provides clear context for when it should be invoked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileC
Write any content to a file in the target Nuxt 4 codebase.
| Name | Required | Description | Default |
|---|---|---|---|
| relativePath | Yes | Relative path in target (e.g., 'composables/useAuth.ts') | |
| module | No | Optional module name to prefix path (e.g., 'deals', 'tickets') | |
| targetPath | No | Optional absolute target path override | |
| content | Yes | File content to write |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states 'write any content' but does not disclose crucial behaviors such as whether existing files are overwritten, if directories are created, or any safety considerations. This is insufficient for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, extremely concise with no extraneous information. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool having 4 parameters and no output schema, the description is very brief and does not explain return values, error handling, file overwrite behavior, or path resolution. It is incomplete for a tool that modifies files.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 4 parameters have descriptions in the schema, so the schema coverage is 100%. The tool description adds no additional meaning beyond the schema, earning a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'write' and resource 'file in the target Nuxt 4 codebase', making the purpose evident. However, it does not explicitly differentiate from the sibling tool 'write_generated_files', which may cause confusion about when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'write_generated_files' or 'generate_*' tools. The agent is left to infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_generated_filesA
Write multiple generated files to target. Use with generate_from_audit output.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Array of files to write | |
| targetPath | No | Optional absolute target path override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. Does not mention overwrite behavior, directory creation, error handling, or authorization needs. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences, front-loaded with the action and use case. No extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple (2 params, no output schema), but description lacks details on side effects, path resolution, and error states. Adequate for basic understanding but missing common behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. Description adds no new information about parameters; it merely restates the schema's 'Array of files' and 'optional target path override'. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb (Write) and resource (multiple generated files), and distinguishes from sibling write_file by implying batch operation. 'Use with generate_from_audit output' ties it to a specific workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use with generate_from_audit output.' Provides context but does not mention alternatives or when not to use, e.g., for single file use write_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
23 tool updates
v1.3.4- First observed
audit_api_migration - First observed
audit_async_data - First observed
audit_components - First observed
audit_deprecated_modules - First observed
audit_esm_compatibility - First observed
audit_mixins - First observed
audit_nuxt_migration - First observed
audit_nuxt4_structure - First observed
audit_tracking - First observed
audit_vuex_stores - First observed
configure_migration - First observed
generate_api - First observed
generate_async_data_composable - First observed
generate_component - First observed
generate_composable - First observed
generate_from_audit - First observed
generate_pinia_store - First observed
generate_type - First observed
get_migration_summary - First observed
list_target_structure - First observed
start_migration - First observed
write_file - First observed
write_generated_files
TDQS
Tools are mostly distinct, but the comprehensive audit_nuxt_migration overlaps with specific audits like audit_async_data. However, descriptions clarify their scope, so confusion is minimal.
All tools follow a consistent verb_noun pattern with underscores (audit_*, generate_*, configure_migration, etc.), making naming predictable and clear.
23 tools cover the migration lifecycle thoroughly without being excessive. Each tool serves a clear purpose in auditing, generating, or managing the migration process.
The tool surface covers the core migration workflow (audit, generate, write, summary), but lacks verification or rollback tools. Minor gaps that agents can work around.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Architecture docs and patterns for NestJS + Nuxt full-stack apps
DORA OS Conductor — 16-tool meta-orchestrator for DORA compliance workflow automation.
Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.
AI-native Day 0 modernization platform for PRDs, architecture, work orders, and code transformation.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables migration of test automation projects from WebDriverIO to Playwright using AST-based transformations. Provides tools for analyzing tests, converting syntax, refactoring to Page Object Model, and generating migration reports.9-
- AlicenseBqualityDmaintenanceAssists in migrating HeroUI v2 and NextUI projects to HeroUI v3 beta through automated project scanning, file analysis, and guided code rewrites. It provides specialized tools for auditing Tailwind configurations and comparing component changes using an integrated documentation corpus.615AGPL 3.0
- AlicenseBqualityDmaintenanceEnables AI agents to safely upgrade JavaScript and TypeScript projects through dependency analysis, upgrade path detection, breaking change identification, codemod application, and PR summary generation.1419MIT
- FlicenseNot gradedqualityDmaintenanceAudits dbt Core projects for migration blockers and generates actionable guidance for migrating to dbt Cloud, including auto-fixing deprecated syntax.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gapra/gp-nuxt-migration-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server