/aos-vuetify
Select files to review or describe what you are building, then run /aos-vuetify.
For targeted reviews: /aos-vuetify forms · /aos-vuetify tables · /aos-vuetify theme · /aos-vuetify layout
What gets checked
Component usage
- Vuetify components used where they exist — no custom reimplementation of
v-btn,v-card,v-dialog, etc. -
v-modelwired correctly on form components (v-text-field,v-select,v-checkbox,v-autocomplete) -
densityprop set appropriately:default,comfortable, orcompact - Correct variant used:
outlined,filled,underlined,solo,plain,elevated,tonal - No mixing of Vuetify 2 and Vuetify 3 API patterns
Forms and validation
- Validation rules are arrays of functions that return
string | true -
v-formwraps all inputs with areffor programmaticvalidate()/reset()calls -
validate()called and awaited before every submit — form never submits in invalid state - Error messages are user-readable — not field names or error codes
-
clearableprop added on search and filter inputs
Layout and grid
-
v-container,v-row,v-colused for layout — no manual CSS grid/flexbox overriding Vuetify's system - Responsive
cols,sm,md,lg,xlprops set onv-col -
v-spacerused insidev-row/v-toolbarinstead of margin hacks
Data tables
-
v-data-tableorv-data-table-serverused for tabular data — no hand-rolled<table> -
items-per-pageset with a sensible default (10 or 25) -
:loadingprop handles the loading state -
item-valueset to a unique key — never the index - Server-side sorting and filtering used for large datasets via
:server-items-length
Theme and styling
- Colours reference theme tokens (
primary,secondary,error,success,surface) — no hardcoded hex values - Custom theme defined in
createVuetify({ theme })— not scattered CSS variable overrides -
v-theme-providerused to scope dark/light variants to a section - No
!importantoverriding Vuetify's internal classes in scoped styles
Dialogs and overlays
-
v-dialoghasmax-widthset (prevents full-screen on desktop) - Dialogs closeable via the
×button AND by clicking the overlay -
v-overlayused for custom overlays — not aposition:fixeddiv - Focus trap inside dialog is intact — do not break Vuetify's built-in focus management
Performance
- Vuetify imported with tree-shaking (components explicitly listed or using the auto-import plugin)
- Large datasets in
v-data-tableuse virtual scrolling or server-side pagination -
v-lazywraps off-screen items in long scrollable lists
Output format
[FAIL] Forms — form submits without awaiting validate()
File: src/views/RegisterView.vue:38
Fix:
const { valid } = await form.value.validate()
if (!valid) return
await register(fields)
[WARN] Theme — hardcoded hex colour #1976D2 instead of a theme token
File: src/components/AppHeader.vue:15
Fix: use color="primary" prop or var(--v-theme-primary) in CSS
Summary: 1 FAIL · 1 WARN · 11 PASS
Full reference
See REFERENCE.md for complete code examples for every pattern.