Loading...
Loading...
Diagnose and auto-fix Vue.js / Nuxt project issues — reactivity, performance, security, accessibility, Nuxt SSR, Pinia, and dead code. Use when checking, reviewing, or fixing a Vue codebase.
npx skill4agent add healerlab/vue-doctor vue-doctor| Goal | Command |
|---|---|
| Auto-fix issues (agents — start here) | |
| Human-readable scan | |
| Only changed files (fast PR check) | |
| CI gate (fail under a threshold) | |
| Score only | |
--no-dead-code--no-lint--diff--json--fixnpx vue-doctor@latest . --json--diff maindiagnostics[]filelinecolumnseveritycategoryrulemessagefixfileline:columnfixseverity: "error"warning--jsonscore.valuesummary.errors{
"schema": "vue-doctor/diagnosis@1",
"score": { "value": 82, "label": "Great" },
"project": { "framework": "nuxt3", "vueVersion": "^3.4.0", "typescript": true },
"summary": { "total": 5, "errors": 1, "warnings": 4, "byCategory": { "Reactivity": 2 } },
"diagnostics": [
{
"file": "src/components/User.vue",
"line": 12, "column": 1,
"severity": "error",
"category": "Reactivity",
"rule": "vue-doctor/reactivity-destructure-props",
"message": "Destructuring props loses reactivity in Vue 3",
"fix": "Use toRefs(props) or access props.xxx directly"
}
],
"diff": null,
"elapsedMs": 1240
}0--min-score1--min-scorenpx vue-doctor@latest . --min-score 80 # exits 1 if health < 80| Rule | How to fix |
|---|---|
| Use |
| Use |
| Add |
| Wrap with |
| Use store actions or |
| Emit an event to the parent, or copy the prop into local |
| Extract sub-components to get the file under 300 lines |
| Replace the in-template method call with a |
| Move |
| Add an |
| Sanitize HTML (e.g. DOMPurify) or use |
| Move |
| |
| Migrate to Composition API with |
import { diagnose } from "@healerlab/vue-doctor/api";
const result = await diagnose("./path/to/vue-project");
console.log(result.score); // { score: 82, label: "Great" }
console.log(result.diagnostics); // Array<Diagnostic>.vue-doctorrc{
"ignore": {
"rules": ["vue/no-v-html"],
"files": ["src/generated/**"]
}
}