Skip to content

davidbirchall/squad-skills-frontend

v0.8.0

Frontend skills for Vue 3 / Nuxt 3 / TypeScript: architecture, state management, atomic design, design systems, CSS, accessibility, testing, Storybook, tooling (ESLint/Prettier/TypeScript), Turborepo, TanStack Query, forms, performance, security, build tooling, internationalization, API client patterns, component library publishing, and animation and motion.

squad-skills-frontend

Frontend skills for Vue 3 / Nuxt 3 / TypeScript: architecture, state management, atomic design, design systems, CSS, accessibility, testing, Storybook, tooling (ESLint/Prettier/TypeScript), Turborepo, TanStack Query, forms, performance, security, build tooling, internationalization, API client patterns, component library publishing, and animation and motion.

Version 0.8.0, 23 skills.

Install

copilot plugin install ./plugins/frontend

Skills

SkillPurposeLoad when
animation-motionMotion in Vue 3/Nuxt 3 UIs, in tier order: CSS first, then Vue Transition/TransitionGroup, then VueUse; prefers-reduced-motion, duration/easing tokens, transform/opacity performance, Nuxt page transitionsAdding hover, enter/leave, list, loading, or page animations
api-client-patternsaxios-first API layer: shared per-request instance, interceptors, typed service modules, AbortSignal, error normalisation, TanStack Query keys and query/mutation organisation, auth headers, retries, Pinia boundaryAdding or changing API calls, query composables, error handling, or auth on requests
atomic-components-designStructure Vue components by atomic design (atoms, molecules, organisms, pages) and where data and state may liveDeciding where a component belongs, splitting or composing components, reviewing boundaries
chat-ui-patternsOpinionated UI patterns for high-quality chat interfaces in Vue 3 and Nuxt 3 - message parts instead of strings, frame-batched streaming render,...Building or reviewing chat message lists, composers, streaming rendering, or conversation controls
component-library-publishingPublishing shared Vue 3/TypeScript libraries: semver, changelogs, pnpm publish workflow, exports map and types, peer dependencies, Storybook docs, deprecation policy, breaking-change checklistReleasing, versioning, or changing the public API of a shared library
css-styling-standardsNative CSS in scoped styles, BEM, global design tokens, modern CSS, :deep() as last resortWriting or reviewing component styles or design tokens
design-to-codeTurning designs (for example Figma frames) into Vue 3 and Nuxt components - inspecting design context and tokens first, mapping tokens to the...Implementing a screen or component from a design, translating design tokens, reviewing fidelity, or mapping design components to code
form-handlingVeeValidate with schema validation (Yup in existing code, Zod for new), accessible errors, atom/organism split, TanStack Query mutations, server error mappingBuilding, migrating, reviewing, or testing forms
frontend-a11y-checkAccessibility checklist, WCAG 2.2 AA minimum (AAA where possible)Building or reviewing UI, forms, interactive components, colours, or motion
frontend-architectureFolder layout, module boundaries and dependency direction, naming, auto-imports, barrel policy, Vue 3 component-writing rules (script setup, props/emits/model)Creating or reviewing any .vue file or composable, or deciding where code lives
frontend-build-toolingNuxt/Vite config, env variables, build modes, bundle analysis, caching, Node and pnpm pinning, upgrades, script namingConfiguring or debugging builds, upgrading Nuxt/Vue, or setting up CI builds
frontend-code-qualityESLint, Prettier, TypeScript (strict), Husky + lint-staged, pnpm, shared config packageSetting up or changing lint/format/typecheck config, git hooks, CI checks, or package management
frontend-design-systemsDesign tokens (primitive, semantic, component), theming, component API consistency, governance, deprecation and adoptionAdding or changing tokens, theming, or shared components in a design system
frontend-internationalization@nuxtjs/i18n setup, locale file structure, pluralisation, locale routing and SEO, Intl formatting, RTL, testing and translation workflowAdding or changing translations, locales, or locale-aware formatting
frontend-performanceCore Web Vitals targets, per-route rendering, images, lazy loading, fonts, bundle budgets, reactivity cost, third-party scripts, INPBuilding pages, adding images/fonts/scripts/dependencies, or debugging slow UI
frontend-securityAuth token storage, XSS (v-html, dynamic URLs), CSP and security headers, env/secrets, dependency hygiene, server-route input validationHandling auth/tokens, rendering user content, configuring headers or env, adding dependencies, writing server routes
frontend-testingVitest with Vue Testing Library for unit/component tests; Playwright with axe for e2eWriting, reviewing, or planning frontend tests
nuxt-project-patternsNuxt 3 data fetching, server routes with Zod, runtimeConfig, SEO, routeRules, PiniaBuilding pages, server/api routes, or configuring a Nuxt 3 app
playwright-e2ePlaywright end-to-end testing for Nuxt 3 apps - scoping e2e to critical user journeys, role/label/test-id locators, auto-waiting instead of sleeps,...Adding or fixing Playwright tests, setting up e2e CI, debugging flaky tests, or deciding what to cover end to end
state-managementWhere state lives (local, composable, Pinia, TanStack Query, URL, form, persisted), SSR-safe stores, reset on logout, testing storesAdding shared state, a Pinia store, or deciding between client and server state
storybook-workflowCSF3 TypeScript stories for every atom/molecule/organism, required states, play-function interaction tests, axe a11y addonCreating or reviewing a component, writing a story, or setting up Storybook
streaming-clientRules for consuming server-sent token streams in the browser with Vue 3 and Nuxt 3 - fetch plus ReadableStream versus EventSource, robust SSE frame...Implementing or debugging a streaming chat client, SSE parsing, stop or resume behaviour, or stream error handling
turborepo-workflowMonorepo-only Turborepo task pipeline, caching, PR filtering, shared config package, pnpm workspacesOnly when the repo is already a monorepo; never for single-package projects

Conventions

pnpm is the package manager, axios is the default HTTP client, and lint, format and TypeScript configs come from a shared config package that projects extend. frontend-architecture and frontend-design-systems refer to typescript-conventions from the shared plugin, so install shared alongside this plugin.

Related plugins

Works well with: shared (typescript-conventions, architecture, testing, security), platform-engineering (build, CI, monorepo), backend. Skills may mention skills from other plugins in a short "See also" note; each skill stands on its own if those plugins are not installed.