Skip to main content
Glama
gapra

@gapra/nuxt-migration-mcp

by gapra

@gapra/nuxt-migration-mcp

npm version npm downloads license

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


No installation needed — use npx to run directly, or install globally.

Option A: Run with npx (zero install)

npx @gapra/nuxt-migration-mcp

Option B: Install globally

npm install -g @gapra/nuxt-migration-mcp
# then run:
nuxt-migration-mcp

Configure 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 build

Step 2: Create .env file

cp .env.example .env

Edit .env:

MIGRATION_SOURCE_PATH=/path/to/your/nuxt2-project
MIGRATION_TARGET_PATH=/path/to/your/nuxt4-project

Auto-detect: The server automatically searches for .env in 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 dev

Harness 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_order

  • Access: 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_proposal

  • Flow: 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_file

  • State: 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 rollback

Safety 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:orchestrator

Quick 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_PATH from your .env or environment variables

  • Run 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:

  1. Configure paths - Use configure_migration to set source (Nuxt 2) and target (Nuxt 4) paths

  2. Audit source - Run audit tools to find migration issues in Nuxt 2 codebase

  3. Generate code - Use generation tools to create code in Nuxt 4 target

  4. Write custom - Use write_file for any custom code

Example Workflow

// 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.jsstores/deals.ts

  • assets/mixins/useDeals.jscomposables/useDeals.ts

  • components/DealCard.vuecomponents/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

start_migration

Auto-detect config and run full audit in one command

✅ (optional)

audit_nuxt_migration

Full codebase audit for all migration patterns

audit_async_data

Detect asyncData/fetch hooks → useAsyncData/useFetch

audit_esm_compatibility

Find CommonJS require/module.exports (ESM incompatible)

-

audit_nuxt4_structure

Check directory structure for Nuxt 4 app/ requirement

-

audit_deprecated_modules

Detect deprecated @nuxtjs/* packages, suggest replacements

-

audit_tracking

Find analytics calls and feature flags

audit_vuex_stores

Analyze Vuex stores for Pinia migration

audit_mixins

Find mixins for composable conversion

audit_api_migration

Find RxJS for async/await conversion

audit_components

Analyze Vue components for Options API

get_migration_summary

Get migration status and recommended order

-

configure_migration

Set source/target paths dynamically

-

Code Generation Tools (Target - Nuxt 3/4)

Tool

Description

Module Support

generate_pinia_store

Generate Pinia store with state, actions, getters

generate_composable

Generate Vue composable with Composition API

generate_async_data_composable

Generate useAsyncData composable from asyncData()

generate_component

Generate Vue component with <script setup>

generate_api

Generate API functions with async/await

generate_type

Generate TypeScript interface

write_file

Write custom content to target codebase

list_target_structure

List target folder structure

generate_from_audit

Auto-generate files from audit with mapping

write_generated_files

Write multiple generated files at once

Migration Coverage (2026)

Pattern

Nuxt 2

Nuxt 3/4

Detection

Generator

Options API

export default {}

<script setup>

Vuex

Vuex.Store

Pinia

Mixins

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:

  1. Set MIGRATION_SOURCE_PATH to point to any Nuxt 2 codebase

  2. The server will analyze patterns in that codebase

  3. 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-b

Auto-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"

{} (uses .env)

"migrate /pages/deals"

{ module: "deals" }

"migration for pages/integrations/emails"

{ module: "integrations/emails" }

"migrate from /path/a to /path/b"

{ sourcePath: "/path/a", targetPath: "/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.md

Agent 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.json

  • Validate 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_component

  • generatormcp_validate_proposal

  • generatormcp_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 preserved

Output:

{
  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 safety

Agent 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 updated

Skills

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:

  1. Initialize Scan - Set module scope, create audit context

  2. Source Code Discovery - Find .vue, .js, .ts files

  3. Pattern Matching - Apply regex patterns for Vuex, mixins, Options API, RxJS

  4. Dependency Mapping - Track cross-file dependencies

  5. Complexity Assessment - Score files by transformation difficulty

  6. Risk Flagging - Identify high-risk transformations

  7. Priority Sorting - Order by impact + risk + dependencies

  8. Structured Output - Return JSON with counts, details, recommendations

Pattern Catalog:

  • Vuex: mapState, mapGetters, mapActions, $store.dispatch

  • Mixins: mixins: [...], mixin file imports

  • Options API: export default { data(), methods: {}, computed: {} }

  • RxJS: .pipe(, .subscribe(, Observable, Subject

  • Tracking: $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 defineStore with TypeScript

  • Map $store.dispatchstore.action()

  • Replace mapGetters → direct refs

  • Confidence algorithm: Based on mutation complexity

2. Mixin → Composable

  • Extract mixin methods and data

  • Convert to export function use[Name]() pattern

  • Handle lifecycle hooks → watch/onMounted

  • Preserve reactivity with ref/reactive

  • Confidence: Lower if uses complex this references

3. Options API → Composition API

  • Convert data()ref()/reactive()

  • Convert methods → functions

  • Convert computedcomputed()

  • Convert mounted()onMounted()

  • Handle this.$refs and component communication

4. RxJS → async/await

  • Convert Observable.pipe() → async functions

  • Replace .subscribe() → await + try/catch

  • Handle 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:

  1. Discover Custom Components - Scan for components with custom styling

  2. Fetch Design System Catalog - Get available components and specs from target design system

  3. Map Components - Match custom components to design system equivalents

  4. Transform Components - Replace with design system components and tokens

  5. Apply Design Tokens - Replace hardcoded colors, spacing, typography with tokens

  6. Validate Accessibility - Ensure WCAG 2.1 AA compliance

  7. 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 patterns

  • Check 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.7

Decision 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 tools
audit_api_migrationB

Audit API layer for RxJS Observables and suggest conversion to async/await pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleNoOptional module path to audit

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleNoOptional module path to audit

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleNoOptional module path to audit (e.g., "deals", "tickets")

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleNoOptional module path to audit (e.g., "deals", "auth")

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleNoOptional module path to audit (e.g., "deals", "tickets")
configPathNoOptional path to config file with MIGRATION_SOURCE_PATH

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleNoOptional module path to audit (e.g., "deals", "tickets")

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleNoOptional module path to audit (e.g., "deals", "auth")

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourcePathYesAbsolute path to source Nuxt 2 codebase
targetPathNoAbsolute path to target Nuxt 4 codebase

TDQS

B3/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the API (e.g., 'user', 'products')
relativePathYesRelative path in target (e.g., 'api/users.ts')
moduleNoOptional module name to prefix path (e.g., 'deals', 'tickets')
targetPathNoOptional absolute target path override
methodsNoHTTP methods to generate (get, post, put, delete)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesComposable name (e.g., 'usePosts')
relativePathYesRelative path in target (e.g., 'composables/usePosts.ts')
moduleNoOptional module name
targetPathNoOptional absolute target path override
endpointNoAPI endpoint to fetch from
keyNoCache key for useAsyncData
hasLazyLoadNoWhether to use lazy loading

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the component (e.g., 'UserCard', 'Button')
relativePathYesRelative path in target (e.g., 'components/UserCard.vue')
moduleNoOptional module name to prefix path (e.g., 'deals', 'tickets')
targetPathNoOptional absolute target path override
propsNoOptional props to include
emitsNoOptional emits to include
hasStoreNoWhether component uses a Pinia store
storeNameNoName of the store if hasStore is true

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the composable (e.g., 'useAuth', 'useFetch')
relativePathYesRelative path in target (e.g., 'composables/useAuth.ts')
moduleNoOptional module name to prefix path (e.g., 'deals', 'tickets')
targetPathNoOptional absolute target path override
propsNoOptional props/refs to include
returnValuesNoOptional values to return

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleNoOptional module to generate for (e.g., 'deals', 'auth')
typeNoType of files to generate (default: all)
targetPathNoOptional absolute target path override

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the store (e.g., 'user', 'auth')
relativePathYesRelative path in target (e.g., 'stores/user.ts')
moduleNoOptional module name to prefix path (e.g., 'deals', 'tickets')
targetPathNoOptional absolute target path override
statePropertiesNoOptional state properties to include
actionsNoOptional actions to include
gettersNoOptional getters to include

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the type (e.g., 'User', 'Product')
relativePathYesRelative path in target (e.g., 'types/User.ts')
moduleNoOptional module name to prefix path (e.g., 'deals', 'tickets')
targetPathNoOptional absolute target path override

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoOptional relative path within target (e.g., 'components', 'stores')
depthNoDepth of directory to traverse (default: 3)
targetPathNoOptional absolute target path override

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourcePathNoOptional absolute path to source Nuxt 2 codebase (overrides .env/config)
targetPathNoOptional absolute path to target Nuxt 4 codebase (overrides .env/config)
moduleNoOptional specific module to migrate (e.g., 'deals', 'tickets')
configPathNoOptional path to .env config file

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
relativePathYesRelative path in target (e.g., 'composables/useAuth.ts')
moduleNoOptional module name to prefix path (e.g., 'deals', 'tickets')
targetPathNoOptional absolute target path override
contentYesFile content to write

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesArray of files to write
targetPathNoOptional absolute target path override

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 23 tool updatesv1.3.4
    • First observedaudit_api_migration
    • First observedaudit_async_data
    • First observedaudit_components
    • First observedaudit_deprecated_modules
    • First observedaudit_esm_compatibility
    • First observedaudit_mixins
    • First observedaudit_nuxt_migration
    • First observedaudit_nuxt4_structure
    • First observedaudit_tracking
    • First observedaudit_vuex_stores
    • First observedconfigure_migration
    • First observedgenerate_api
    • First observedgenerate_async_data_composable
    • First observedgenerate_component
    • First observedgenerate_composable
    • First observedgenerate_from_audit
    • First observedgenerate_pinia_store
    • First observedgenerate_type
    • First observedget_migration_summary
    • First observedlist_target_structure
    • First observedstart_migration
    • First observedwrite_file
    • First observedwrite_generated_files

TDQS

A3.5/5.0
Disambiguation4/5

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.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with underscores (audit_*, generate_*, configure_migration, etc.), making naming predictable and clear.

Tool Count5/5

23 tools cover the migration lifecycle thoroughly without being excessive. Each tool serves a clear purpose in auditing, generating, or managing the migration process.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Assists 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.
    6
    15
    AGPL 3.0
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to safely upgrade JavaScript and TypeScript projects through dependency analysis, upgrade path detection, breaking change identification, codemod application, and PR summary generation.
    14
    19
    MIT

Latest Blog Posts

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