← Back to Skills

velais-ui-design

active

Provides the single source of truth for building Velais-branded internal UI products. Use when starting a new Velais dashboard, tool, or client-facing app; replicating the Loader or LoginPage components (.tsx files); setting up the color system (CSS tokens, Tailwind classes), typography (Onsite Extended font, WOFF2/WOFF files), or GSAP animation conventions; or configuring shadcn/ui (New York style) for a Velais project. Covers the full tech stack (React 19 + TypeScript + Vite + Tailwind CSS 4 + TanStack React Query + GSAP + Hono). Do NOT use for general design advice unrelated to Velais, Azure DevOps API integration, or backend/auth configuration (WorkOS, Hono middleware).

Owner: velais Category: mcp-enhancement Version: 1.0.0 Tokens: ~14k
frontendreacttailwindgsapdesign-systemvelaisbrandingui
94

Quality Score Breakdown

Structure (15%) 18/18
Show checks (11)
  • SKILL.md exists with exact casing 3/3
  • Valid YAML frontmatter 3/3
  • No unexpected frontmatter keys 1/1
  • Name field valid (kebab-case) 2/2
  • Name matches folder name 1/1
  • Description field present 2/2
  • No angle brackets in frontmatter 1/1
  • Folder name is kebab-case 1/1
  • No README.md inside skill folder 1/1
  • Test directory with test-cases.yml exists 2/2
  • Status 'active' is valid 1/1
Description (20%) 18/22
Show checks (7)
  • No action verbs found — description should say what the skill DOES 0/4
  • Contains trigger indicators: use when, use for 5/5
  • Description is specific and actionable 4/4
  • File types mentioned in description 3/3
  • Description length: 683/1024 chars 2/2
  • Has negative triggers (scope boundaries) 2/2
  • Owner/author specified in metadata 2/2
Instructions (25%) 26/28
Show checks (8)
  • Skill body has content 3/3
  • Has step/section structure 4/4
  • Includes examples 5/5
  • Includes error handling 4/4
  • Uses progressive disclosure (references/scripts) 4/4
  • Instructions could be more actionable — use 'Run X', 'Call Y', 'Check Z' 1/3
  • Word count: 682/5000 2/2
  • All referenced paths exist 3/3
Test Coverage (25%) 29/29
Show checks (10)
  • test-cases.yml exists and parses 3/3
  • 8 should-trigger tests ✓ 4/4
  • 4 should-not-trigger tests ✓ 3/3
  • 7 functional tests ✓ 5/5
  • 2 negative tests ✓ 3/3
  • 2 edge case tests ✓ 3/3
  • Performance baseline documented 2/2
  • All functional tests have ≥2 assertions 2/2
  • All trigger phrases are diverse 2/2
  • All assertions are specific 2/2
Security (15%) 14/15
Show checks (5)
  • No secrets detected 5/5
  • No injection vectors in frontmatter 3/3
  • Name is not reserved 3/3
  • No suspicious code patterns 2/2
  • 4 external URLs found — verify they're necessary: https://ui.shadcn.com/schema.json, http://www.w3.org/2000/svg, https://fonts.googleapis.com/css2?family=Host+Grotesk:wght@400;500;600;700&displ 1/2

Test Coverage

8
Should Trigger
4
Should Not Trigger
7
Functional
2
Negative
2
Edge Cases
Yes
LLM Evals

Velais UI Design Skill

Single source of truth for all Velais-branded internal UI products. When starting a new Velais dashboard, tool, or client-facing app, invoke this skill first.

Quick Reference

Before building anything, read the relevant reference file:

TaskReference File
Color tokens, palette, status colorsreferences/color-system.md ← start here
Font loading, typography rulesreferences/typography.md
GSAP setup, useCascadeAnimationreferences/animation-system.md
shadcn setup, Tailwind 4, component patternsreferences/component-patterns.md
Full-screen loading overlayreferences/loader-component.md
Branded login / sign-in pagereferences/login-page.md

Complementary Skills

SkillWhen to also invoke
/gsap-animationsBuilding any new animation beyond the Velais cascade pattern
/velais-brand-guidelinesCreating documents, presentations, or marketing materials
/react-best-practicesPerformance optimization, memoization, code splitting
shadcn MCP (mcp__shadcn__*)Adding or auditing shadcn/ui components

Overview

Tech stack: React 19 · TypeScript · Vite · Tailwind CSS 4 · TanStack React Query · GSAP · Hono backend · Bun runtime

Design philosophy:

  • Dark-first — deep navy/off-black backgrounds; brand blues for text, borders, and interactive elements only
  • Monochromatic blue palette — five blues from #aecceb (soft-sky) to #0b1b3e (midnight-blue) plus one muted burgundy for errors
  • Purposeful motion — GSAP for all animation; CSS-only transitions only for hover micro-interactions (≤ 200ms)
  • Heading vs body font discipline — Onsite Extended for headings, Host Grotesk for everything else

Core Design Rules

These rules apply in every Velais UI project:

  1. Colors: Always use CSS variables (var(--color-*)) or Tailwind semantic utilities. Never hardcode hex in component files.
  2. Typography: Use font-heading (Onsite Extended) only for headings. Use font-body (Host Grotesk) for all other text.
  3. GSAP imports: Always import gsap and useGSAP from @/lib/gsap.ts (the singleton). Never import directly from gsap or @gsap/react.
  4. GSAP compositing: Add [data-gsap] { will-change: transform, opacity; } globally in CSS. Mark animated elements with data-gsap="<role>".
  5. Animated elements that start hidden: Use Tailwind invisible class + GSAP autoAlpha to reveal. Never use opacity-0 for GSAP-driven reveals.
  6. shadcn style: Always initialize with --style new-york and --base-color neutral. Set cssVariables: true.
  7. Path aliases: Configure @/*./src/* and @shared/*./shared/* in both tsconfig.json and vite.config.ts.

New Project Setup Checklist

Follow this checklist when starting a new Velais UI product:

1. Scaffold

bun create vite@latest my-app -- --template react-ts
cd my-app
bun install

2. Install core dependencies

bun add gsap @gsap/react @tanstack/react-query clsx tailwind-merge lucide-react
bun add -d @tailwindcss/vite tailwindcss typescript @types/react @types/react-dom

3. Configure Tailwind CSS 4

Remove tailwind.config.ts — Tailwind 4 is configured via @theme in CSS.

In vite.config.ts:

import tailwindcss from "@tailwindcss/vite";
export default defineConfig({
  plugins: [react(), tailwindcss()],
  resolve: {
    alias: { "@": "/src", "@shared": "/shared" },
  },
});

In src/index.css, add the full @theme block from references/color-system.md.

4. Initialize shadcn/ui

bunx --bun shadcn@latest init
# Style: New York
# Base color: Neutral
# CSS variables: Yes

5. Copy font files

Copy assets/fonts/OnsiteExtended-Regular.woff2 and .woff to src/fonts/.

Add @font-face declaration from references/typography.md to src/index.css.

6. Add favicon tags

Copy assets/favicon/ to public/. Add <link> tags from assets/templates/index-head.html to index.html.

7. Create GSAP singleton

Copy assets/templates/gsap.ts to src/lib/gsap.ts.

8. Create logo constants

Copy assets/templates/logo.ts to src/lib/logo.ts. Copy assets/logo/logo-symbol.svg to src/assets/.

9. Add global CSS rules

In src/index.css:

[data-gsap] { will-change: transform, opacity; }
.kanban-card { content-visibility: auto; contain-intrinsic-size: 0 80px; }

10. Copy Loader and LoginPage

See references/loader-component.md and references/login-page.md for full verbatim implementations.

Reusable Components

Loader

Full-screen branded loading overlay with three SVG layers (ghost, fill, shimmer) and a diagonal progress fill driven by GSAP. Accepts dataReady and onComplete props. See references/loader-component.md for the complete verbatim implementation.

LoginPage

Branded sign-in page with a sequential GSAP timeline entry (logo → wordmark → divider → subtitle → button → footer). Uses data-login="<role>" attributes and Tailwind invisible

  • GSAP autoAlpha pattern. Accepts onSignIn prop. See references/login-page.md for the complete verbatim implementation.