vue-frontend
Vue frontend — components, composables, Vuetify, tests, accessibility, and i18n
Install / Use
npx skills add AK2083/DojoSphereInstalls into whichever agent you are using.
.clinerules
Cline rules
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Skill content
View source on GitHubdescription: Vue frontend — components, composables, Vuetify, tests, accessibility, and i18n globs: src/renderer/**/*.vue alwaysApply: false
Vue Frontend
Components and logic
- New components exclusively with
<script setup lang="ts">. - No business logic in templates — no calculations, API calls, or complex conditions. Templates bind state and events from script/composable.
- Logic belongs in composables (
model/use-*.ts) orservice/— UI components inui/stay presentation-focused. - Vuetify 3 components for UI (
v-btn,v-card,v-text-field, …); icons via@mdi/js. - Layer assignment per
architecture-fsd.md.
<!-- ❌ Business logic in template -->
<v-btn :disabled="email.length < 5 || !isOnline" @click="signUp(email, password)">
<!-- ✅ Composable provides ready state -->
<v-btn :disabled="!canSubmit" :loading="loading" @click="submit">
Internationalization
- Supported languages: German and English.
- No hardcoded UI strings — text via
useTranslation()and slicei18n/keys.ts. - ARIA labels and visible text also via i18n keys.
Slice layout (per use case under features/<feature>/<slice>/i18n/):
i18n/
keys.ts # translation key paths for components
de.ts # German strings (single file)
en.ts # English strings (single file)
index.ts # re-exports de/en for parent feature aggregation
- One
de.tsand oneen.tsper slice — no language subfolders (de/,en/) and no extra topic files (e.g.cloud.ts,legal.ts). Nested objects insidede.ts/en.tsare fine when the UI has logical groups (same pattern asset-themetooltip). - Parent feature bundles slice messages in
features/<feature>/i18n/de.tsanden.ts(e.g.diagnostics: manageDiagnosticsUploadDe). keys.tspaths must match the nested structure registered in the parent feature i18n.
Responsive design
- Layouts with Vuetify grid (
v-container,v-row,v-col) and breakpoints (cols,md,lg, …). useDisplay()from Vuetify for device-specific logic (e.g. mobile vs. desktop).- Test components on mobile, tablet, and desktop — no fixed pixel widths for core layouts.
Accessibility (a11y)
- Aim for Lighthouse Accessibility score (no regressions).
- Set meaningful ARIA attributes:
aria-label,aria-labelledby,role,aria-livefor dynamic content. - Interactive elements must be keyboard reachable; keep focus visible.
- Forms:
<label>oraria-label/aria-labelledbyfor every input. - Decorative icons:
aria-hidden="true"; icon-only buttons: descriptivearia-label. - Error/status messages: accessible to screen readers (
role="alert"oraria-live="polite").
Tests per UI component (required on creation)
When adding a new .vue file under any ui/ folder (features/, pages/, widgets/, shared/ui/), add both spec files in the same change — not as a later follow-up:
| File | Purpose |
| -------------------- | ------------------------------------------------------- |
| <Name>.stories.ts | Storybook — isolated display, variants |
| <Name>.e2e.spec.ts | Playwright — critical interactions and visible behavior |
Every existing UI component in ui/ must also keep both files when touched.
Storybook convention:
titleby layer:Features/<Feature>/<Name>,Pages/<Page>/<Name>,Shared/UI/<Name>,Widgets/<Name>/<Name>@storybook/vue3-vite,satisfies Meta<typeof Component>
Playwright convention:
@playwright/test, descriptivetest.describe('<ComponentName>')- Prefer meaningful selectors:
getByRole,getByLabel,getByText— no fragile CSS chains - i18n setup via
@shared/tests/e2e/setup-languagewhere needed
Lighthouse
New and changed UI should meet Lighthouse requirements, especially:
- Accessibility — ARIA, contrast, semantic HTML
- Best Practices — valid HTML structure, no deprecated APIs
- Performance — no unnecessary re-renders, lazy loading where appropriate
For Storybook or page changes, verify visually and with Lighthouse before marking complete.
Completion checklist
After UI work, run and fix errors:
npm run lint:fixnpm run type:checknpm run format:fixnpm run test:coverage(affected unit tests)- Playwright for new/changed
.e2e.spec.ts - Storybook for new/changed
.stories.ts
Related Skills
claude-howto
41.4kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
ai-job-search
40.9kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
guizang-ppt-skill
25.7kAI-agent Skill for generating polished HTML slide decks: editorial magazine and Swiss layouts, image prompts, social covers, and a WebGL/low-power presentation runtime.
reactive-resume
42.2kA one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!
Security Score
Audited on Invalid Date
