Review Vue 3 code for Composition API, reactivity, components, state (Pinia), routing, and performance. Framework-only atomic skill; output is a findings list.
Review only the framework conventions of Vue 3 code. Do not define the scope (diff vs codebase) and do not run security/architecture analysis; the scope and cognitive skills handle those. Emit a findings list in the standard format for aggregation. Concentrate on the Composition API and <script setup>, reactivity (ref/reactive, computed/watch), component boundaries and props/emits, state (Pinia/store), routing and guards, performance (v-memo, for example) and accessibility where relevant.
Core Objective
Primary goal: produce a Vue 3 framework findings list covering Composition API usage, reactivity correctness, component boundaries, state management, routing, performance and accessibility across the given code scope.
Success criteria (all of them must hold):
✅ Vue 3 framework scope only: only Vue 3 framework conventions were reviewed; no scope selection, security or architecture analysis was performed
✅ All seven Vue dimensions covered: Composition API/script setup, reactivity (ref/reactive/computed/watch), component boundaries/props/emits, state (Pinia), routing/guards, render performance, and accessibility where relevant
✅ Findings format compatible: every finding carries location, category (framework-vue), severity, title, description and an optional suggestion
✅ Component/file references: every finding points at a specific file:line or component name
✅ Non-Vue code excluded: Vue-specific rules are not applied to non-Vue files unless they are explicitly in scope
Acceptance test: does the output carry a Vue 3-centred findings list, with component/file references covering every relevant framework dimension, and without security, architecture or scope analysis?
Scope Boundaries
This skill owns:
Composition API and <script setup> correctness (defineProps, defineEmits, defineExpose, lifecycle hooks)
Reactivity correctness (ref vs reactive, computed vs watch, prop mutation, deep reactivity)
Accessibility (semantic HTML, ARIA, form labels, focus management)
This skill does not own:
Scope selection — the scope comes from the caller
Security analysis (XSS, injection risk) — use review-security
Architecture analysis — use review-architecture
Language/runtime (JavaScript/TypeScript) conventions — use general JS/TS analysis, or note them as a separate concern
A full orchestrated review — use orchestrate-code-review
Handoff point: once every Vue finding has been emitted, hand off to orchestrate-code-review for aggregation. For XSS risks (v-html misuse, unsanitized content), note them and suggest review-security.
Use Cases
Orchestrated review: used as the framework step when orchestrate-code-review runs scope → language → framework → library → cognitive over a Vue project.
Vue-only review: when the user wants to check Vue/frontend framework conventions alone.
Pre-PR Vue checklist: confirm that Composition API usage, reactivity and component contracts are correct.
When to use: when the code under review is Vue 3 and the task includes framework quality. The scope is set by the caller or the user.
Behavior
What this skill covers
Analyze: Vue 3 framework conventions inside the given code scope (files or a diff supplied by the caller). It does not decide the scope; it takes the code scope as input.
Do not: perform scope selection, a security review or an architecture review; do not apply Vue rules to non-Vue files unless they are in scope (a mixed repository, for example).
Review checklist (Vue framework only)
Composition API and script setup: prefer <script setup> and the Composition API; correct use of defineProps, defineEmits, defineExpose; lifecycle hooks (onMounted, onUnmounted and so on).
Reactivity: correct use of ref vs reactive; computed vs watch; avoid mutating props; deep reactivity and unwrapping in templates.
Component boundaries: explicit props/emits contracts; avoid prop drilling where a store or provide/inject fits; one responsibility per component.
State (Pinia/store): appropriate use of the Pinia (or Vuex) store; avoid duplicating server state in several places; actions vs direct mutation.
Routing and guards: Vue Router usage; navigation guards and lazy loading; route param and query handling.
Performance: v-memo for expensive list rendering; avoid needless re-renders; key usage in lists.
Accessibility: semantic HTML and ARIA where relevant; form labels and focus management.
Tone and references
Professional and technical: cite a concrete location (file:line or component name). Emit findings carrying location, category, severity, title, description, suggestion.
Input and Output
Input
Code scope: files or directories (or a diff) holding Vue 3 code (.vue, or .ts that uses the Vue API). Supplied by the user or by the scope skill.
Output
Emit zero or more findings in the format defined in specs/findings-list.md, with Categoryframework-vue.
The category for this skill is framework-vue.
Restrictions
Hard Boundaries
Do not perform scope selection, security or architecture review. Stay inside Vue 3 framework conventions.
Do not land a conclusion without a concrete location or an actionable suggestion.
Do not apply Vue-specific rules to non-Vue code unless it is explicitly in scope.
Skill Boundaries
Do not do these (other skills handle them):
Do not select or define the code scope - the caller or orchestrate-code-review sets it
Do not perform security analysis (XSS, injection) — use review-security
Do not perform architecture analysis — use review-architecture
When to stop and hand off:
Once every Vue finding has been emitted, hand it to orchestrate-code-review for aggregation
When an XSS risk turns up (unsafe v-html usage, for example), note it and suggest review-security
When the user wants a full review (scope + language + cognitive), redirect to orchestrate-code-review
Self-Check
Core success criteria
Vue 3 framework scope only: only Vue 3 framework conventions were reviewed; no scope selection, security or architecture analysis was performed
All seven Vue dimensions covered: Composition API/script setup, reactivity (ref/reactive/computed/watch), component boundaries/props/emits, state (Pinia), routing/guards, render performance, and accessibility where relevant
Findings format conformant: every finding carries location, category (framework-vue), severity, title, description and an optional suggestion
Component/file references: every finding points at a specific file:line or component name
Non-Vue code excluded: Vue-specific rules are not applied to non-Vue files unless they are explicitly in scope
Process quality checks
Were only the Vue framework dimensions reviewed (no scope/security/architecture)?
Were the relevant Composition API, reactivity, component, state, routing and performance aspects covered?
Does every finding carry location, category=framework-vue, severity, title, description and an optional suggestion?
Is every issue tied to a file:line or a component?
Acceptance test
Does the output carry a Vue 3-centred findings list, with component/file references covering every relevant framework dimension, and without security, architecture or scope analysis?
Examples
Example 1: mutating props
Input: a component that assigns to a prop in its script or template.
Expected: emit a finding for the prop mutation (major/minor); suggest local state or an emit to the parent. category=framework-vue.
Example 2: missing key in v-for
Input: a v-for with no :key, or with an unstable key (the array index, for example).
Expected: emit a finding on list identity and performance; suggest a stable, unique key. category=framework-vue.
Edge case: Vue 2 Options API
Input: legacy Vue 2 Options API in a mixed codebase.
Expected: if the skill is extended to Vue 2, review the Vue 2 patterns (data, methods, lifecycle); otherwise note "use the Vue 3 Composition API" where migration is feasible. For this skill, concentrate on Vue 3; note Vue 2 only when it is explicitly in scope.
1---2name: review-vue3description: Review Vue 3 code for Composition API, reactivity, components, state (Pinia), routing, and performance. Framework-only atomic skill; output is a findings list.4license: MIT5---67# Skill: Review Vue89## Purpose1011Review only the **framework conventions** of **Vue 3** code. Do not define the scope (diff vs codebase) and do not run security/architecture analysis; the scope and cognitive skills handle those. Emit a **findings list** in the standard format for aggregation. Concentrate on the Composition API and `<script setup>`, reactivity (ref/reactive, computed/watch), component boundaries and props/emits, state (Pinia/store), routing and guards, performance (v-memo, for example) and accessibility where relevant.1213---1415## Core Objective1617**Primary goal**: produce a Vue 3 framework findings list covering Composition API usage, reactivity correctness, component boundaries, state management, routing, performance and accessibility across the given code scope.1819**Success criteria** (all of them must hold):20211. ✅ **Vue 3 framework scope only**: only Vue 3 framework conventions were reviewed; no scope selection, security or architecture analysis was performed222. ✅ **All seven Vue dimensions covered**: Composition API/script setup, reactivity (ref/reactive/computed/watch), component boundaries/props/emits, state (Pinia), routing/guards, render performance, and accessibility where relevant233. ✅ **Findings format compatible**: every finding carries location, category (`framework-vue`), severity, title, description and an optional suggestion244. ✅ **Component/file references**: every finding points at a specific file:line or component name255. ✅ **Non-Vue code excluded**: Vue-specific rules are not applied to non-Vue files unless they are explicitly in scope2627**Acceptance** test: does the output carry a Vue 3-centred findings list, with component/file references covering every relevant framework dimension, and without security, architecture or scope analysis?2829---3031## Scope Boundaries3233**This skill owns**:3435- Composition API and `<script setup>` correctness (defineProps, defineEmits, defineExpose, lifecycle hooks)36- Reactivity correctness (ref vs reactive, computed vs watch, prop mutation, deep reactivity)37- Component boundary design (props/emits contract, prop drilling, provide/inject)38- State management (Pinia/Vuex: actions vs direct mutation, avoid duplicating server state)39- Routing (Vue Router, navigation guards, lazy loading, route param/query handling)40- Performance (v-memo, v-for key stability, needless re-renders)41- Accessibility (semantic HTML, ARIA, form labels, focus management)4243**This skill does not own**:4445- Scope selection — the scope comes from the caller46- Security analysis (XSS, injection risk) — use `review-security`47- Architecture analysis — use `review-architecture`48- Language/runtime (JavaScript/TypeScript) conventions — use general JS/TS analysis, or note them as a separate concern49- A full orchestrated review — use `orchestrate-code-review`5051**Handoff point**: once every Vue finding has been emitted, hand off to `orchestrate-code-review` for aggregation. For XSS risks (v-html misuse, unsanitized content), note them and suggest `review-security`.5253---5455## Use Cases5657- **Orchestrated review**: used as the framework step when [orchestrate-code-review](../orchestrate-code-review/SKILL.md) runs scope → language → framework → library → cognitive over a Vue project.58- **Vue-only review**: when the user wants to check Vue/frontend framework conventions alone.59- **Pre-PR Vue checklist**: confirm that Composition API usage, reactivity and component contracts are correct.6061**When to use**: when the code under review is Vue 3 and the task includes framework quality. The scope is set by the caller or the user.6263---6465## Behavior6667### What this skill covers6869- **Analyze**: Vue 3 framework conventions inside the **given code scope** (files or a diff supplied by the caller). It does not decide the scope; it takes the code scope as input.70- **Do not**: perform scope selection, a security review or an architecture review; do not apply Vue rules to non-Vue files unless they are in scope (a mixed repository, for example).7172### Review checklist (Vue framework only)73741. **Composition API and script setup**: prefer `<script setup>` and the Composition API; correct use of defineProps, defineEmits, defineExpose; lifecycle hooks (onMounted, onUnmounted and so on).752. **Reactivity**: correct use of ref vs reactive; computed vs watch; avoid mutating props; deep reactivity and unwrapping in templates.763. **Component boundaries**: explicit props/emits contracts; avoid prop drilling where a store or provide/inject fits; one responsibility per component.774. **State (Pinia/store)**: appropriate use of the Pinia (or Vuex) store; avoid duplicating server state in several places; actions vs direct mutation.785. **Routing and guards**: Vue Router usage; navigation guards and lazy loading; route param and query handling.796. **Performance**: v-memo for expensive list rendering; avoid needless re-renders; key usage in lists.807. **Accessibility**: semantic HTML and ARIA where relevant; form labels and focus management.8182### Tone and references8384- **Professional and technical**: cite a concrete location (file:line or component name). Emit findings carrying location, category, severity, title, description, suggestion.8586---8788## Input and Output8990### Input9192- **Code scope**: files or directories (or a diff) holding Vue 3 code (.vue, or .ts that uses the Vue API). Supplied by the user or by the scope skill.9394### Output9596- Emit zero or more **findings** in the format defined in [specs/findings-list.md](../../specs/findings-list.md), with **Category** `framework-vue`.97- The category for this skill is **framework-vue**.9899---100101## Restrictions102103### Hard Boundaries104105- **Do not** perform scope selection, security or architecture review. Stay inside Vue 3 framework conventions.106- **Do not** land a conclusion without a concrete location or an actionable suggestion.107- **Do not** apply Vue-specific rules to non-Vue code unless it is explicitly in scope.108109### Skill Boundaries110111**Do not do these** (other skills handle them):112113- Do not select or define the code scope - the caller or `orchestrate-code-review` sets it114- Do not perform security analysis (XSS, injection) — use `review-security`115- Do not perform architecture analysis — use `review-architecture`116117**When to stop and hand off**:118119- Once every Vue finding has been emitted, hand it to `orchestrate-code-review` for aggregation120- When an XSS risk turns up (unsafe `v-html` usage, for example), note it and suggest `review-security`121- When the user wants a full review (scope + language + cognitive), redirect to `orchestrate-code-review`122123---124125## Self-Check126127### Core success criteria128129- [ ] **Vue 3 framework scope only**: only Vue 3 framework conventions were reviewed; no scope selection, security or architecture analysis was performed130- [ ] **All seven Vue dimensions covered**: Composition API/script setup, reactivity (ref/reactive/computed/watch), component boundaries/props/emits, state (Pinia), routing/guards, render performance, and accessibility where relevant131- [ ] **Findings format conformant**: every finding carries location, category (`framework-vue`), severity, title, description and an optional suggestion132- [ ] **Component/file references**: every finding points at a specific file:line or component name133- [ ] **Non-Vue code excluded**: Vue-specific rules are not applied to non-Vue files unless they are explicitly in scope134135### Process quality checks136137- [ ] Were only the Vue framework dimensions reviewed (no scope/security/architecture)?138- [ ] Were the relevant Composition API, reactivity, component, state, routing and performance aspects covered?139- [ ] Does every finding carry location, category=framework-vue, severity, title, description and an optional suggestion?140- [ ] Is every issue tied to a file:line or a component?141142### Acceptance test143144Does the output carry a Vue 3-centred findings list, with component/file references covering every relevant framework dimension, and without security, architecture or scope analysis?145146---147148## Examples149150### Example 1: mutating props151152- **Input**: a component that assigns to a prop in its script or template.153- **Expected**: emit a finding for the prop mutation (major/minor); suggest local state or an emit to the parent. category=framework-vue.154155### Example 2: missing key in v-for156157- **Input**: a v-for with no :key, or with an unstable key (the array index, for example).158- **Expected**: emit a finding on list identity and performance; suggest a stable, unique key. category=framework-vue.159160### Edge case: Vue 2 Options API161162- **Input**: legacy Vue 2 Options API in a mixed codebase.163- **Expected**: if the skill is extended to Vue 2, review the Vue 2 patterns (data, methods, lifecycle); otherwise note "use the Vue 3 Composition API" where migration is feasible. For this skill, concentrate on Vue 3; note Vue 2 only when it is explicitly in scope.
Run npx skillmds@latest add nesnilnehc/review-vue in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Review Vue 3 code for Composition API, reactivity, components, state (Pinia), routing, and performance. Framework-only atomic skill; output is a findings list. It is listed under Web & Frontend on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free. This skill is licensed under MIT.
nesnilnehc (@nesnilnehc) published this skill. Their other Agent Skills are listed on their SkillMD profile.