Aura Design System

Emil Kowalski skills

Which Emil Kowalski skills Aura ships, which it skipped, and the command that installs or updates them.

Aura uses Emil Kowalski’s skills for motion, polish, and interface craft, and Vercel’s React best practices for React and Next.js performance. They were compared with the skills already in this repo and with the team’s skill library before anything was copied. Two skills that do the same job are not both installed.

aura init, aura setup, and aura blueprint copy the reconciled set into .cursor/skills/. Docs for the runbook are the Agent blueprint. This page is the practice: what each skill is for, when to apply it, and how to update it.

Pins and license

SourceCommitLicense
emilkowalski/skillse8a175de22ae1e49370fc144c1f3bb9aeedf988dMIT. Copyright (c) 2026 Emil Kowalski. The notice is in each skill’s LICENSE.
vercel-labs/agent-skills skills/react-best-practices063bee94c3f4df8453406c830b0a7df0f2860278MIT. The upstream README states MIT. Copyright (c) Vercel, Inc. is in that skill’s LICENSE.

Both licenses allow copying. The files in packages/cli/templates/cursor/skills/ are the copies the blueprint ships. They are not floating installs of npx skills add.

Aura foundation rules and DESIGN.md win when a skill disagrees: 13px spacing, accent and gray steps, fluid type, the 17px floor on editable inputs, and the animation tokens (buttons cubic-bezier(0.4, 0, 0.6, 1), dialogs cubic-bezier(0.16, 1, 0.3, 1), about 250ms, CSS @theme tokens). gdp-ts proofs win over the Vercel note server-auth-actions.

What Aura ships

SkillUse it when
emil-design-engShaping or reviewing polish, component decisions, and which motion belongs. Criteria only. It does not edit a design file.
animateBuilding a web animation: whether it should exist, then tool, properties, curve, and duration.
review-animationsReviewing motion in a diff against exact curves and durations. Explicit invoke. Default is to flag.
improve-animationsAuditing motion in a codebase and writing self-contained fix plans. It does not apply the fixes.
find-animation-opportunitiesLooking for places that should animate, with exact values, and places that should not. Read-only.
animation-vocabularyA motion effect is described vaguely and needs its name before a design or implementation decision.
apple-designGesture, spring, depth, type, or restraint decisions in an Apple-like way, translated for the web.
prototypeSeveral genuinely different versions of one UI piece, behind a picker. Explicit invoke.
mobile-nativeA web app feels like a website on a phone: tap highlight, 100vh, safe areas, overscroll, input zoom. Inputs stay at 17px.
break-uiStress-testing a screen with worst-case data: long names, empty lists, huge counts.
ask-sonnerA file already imports sonner (DataGrid still does). New toasts use the Aura toast.
pick-ui-libraryExplicitly asked which library fits a frontend task. If @aura already has the component, use it before an external library.
react-best-practicesWriting or reviewing React or Next.js for waterfalls, bundle size, server work, and re-renders. The skill name is vercel-react-best-practices.

The team library already had adaptations of emil-design-eng, animation-vocabulary, apple-design, find-animation-opportunities, improve-animations, review-animations, and prototype. Where those were short pointers at an external criteria file, the full upstream text is now in the skill, and the team’s “do not edit a design file” line stays. Where the team’s body already matched upstream (animation-vocabulary, find-animation-opportunities), that body stayed. humanize is a team prose skill and does not share a job with this set, so blueprint does not install it.

Comparison

SkillClosest we hadOverlapDecision
emil-design-engTeam skill (criteria stub) and the animation rulePartialMerge
animateAnimation rule (guardrail, not a builder)PartialMerge. The rule stays; the skill builds.
animate-expoNoneNoneSkip. Pablo decided not to install it.
review-animationsTeam skill (criteria stub)PartialMerge
improve-animationsTeam skill (criteria stub)PartialMerge
find-animation-opportunitiesTeam skill, same bodySameKeep ours
animation-vocabularyTeam skill, same bodySameKeep ours
apple-designTeam skill (criteria stub)PartialMerge
write-swiftNoneNoneSkip. Pablo decided not to install it.
pick-ui-libraryshadcn skill and the Aura registryPartialAdopt. Aura-first: if @aura already has the component, use it before an external library. Pablo decided to ship it.
prototypeTeam skill (criteria stub)PartialMerge
mobile-nativeTypography rule (17px) and hover gatingPartialMerge. 16px inputs raised to 17px.
break-uiNoneNoneAdopt
ask-sonnerAura Toast docs; DataGrid still imports sonnerPartialMerge, scoped to existing sonner imports. Pablo kept it.
react-best-practicesapps/www/AGENTS.md is a Next.js version note, not a performance guide. gdp-ts is authorization.None for this jobAdopt

Skipped

Pablo decided these stay out.

  • write-swift has no equivalent, and Aura and the SGD apps do not ship Swift.
  • animate-expo has no equivalent. It is React Native and Expo. Web motion is animate.

Install or update

From the app root:

pnpm dlx @aura-design/cli@latest blueprint

The same command runs at the end of aura init and aura setup. Re-running it refreshes the pinned skills when the copy in the CLI has changed, and does nothing to them when they already match. It does not create a second folder. A same-named skill under .agents/skills/ is removed.

--force overwrites wiki bootstrap files. It is not required to update these skills.

The skills are not part of @aura/skills in the registry. Consumer projects get them from blueprint.