Claude Code Plugins

Community-maintained marketplace

Feedback
1
0

Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when building web components, pages, or applications for Breath of Now. Generates creative, polished code following the project's warm, nature-inspired aesthetic.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name frontend-design
description Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when building web components, pages, or applications for Breath of Now. Generates creative, polished code following the project's warm, nature-inspired aesthetic.

Frontend Design Skill

Este skill guia a criação de interfaces frontend distintivas e de qualidade de produção, evitando a estética genérica de "AI slop". Implementa código real e funcional com atenção excepcional a detalhes estéticos e escolhas criativas.

Quando Usar

Aplica este skill quando:

  • Criar novos componentes UI
  • Construir páginas ou layouts
  • Estilizar elementos existentes
  • Criar animações ou micro-interacções

Design Thinking

Antes de codificar, compreende o contexto e compromete-te com uma direcção estética:

  • Propósito: Que problema resolve esta interface? Quem a usa?
  • Tom: Para Breath of Now, o tom é orgânico/natural, warm, mindful. Pensa: minimalismo consciente, espaço para respirar, elementos grounding.
  • Restrições: Requisitos técnicos (Next.js 14, TypeScript, Tailwind CSS).
  • Diferenciação: O que torna isto INESQUECÍVEL?

CRÍTICO: Escolhe uma direcção conceptual clara e executa-a com precisão.

Design System Breath of Now

Cores (SEMPRE usar estas variáveis CSS/classes Tailwind)

/* Primary - Warm Sage Green */
--color-primary: #5a7d5a;
/* Classes: bg-primary, text-primary, border-primary */

/* Secondary - Warm Sand */
--color-secondary: #b19373;
/* Classes: bg-secondary, text-secondary, border-secondary */

/* Accent - Soft Terracotta */
--color-accent: #df7459;
/* Classes: bg-accent, text-accent, border-accent */

/* Neutrals - Warm grays scale 50-950 */
/* Classes: bg-neutral-50 até bg-neutral-950 */

Tipografia

// Títulos - Fraunces (serif elegante)
<h1 className="font-display text-4xl font-semibold">Título</h1>

// Corpo - Source Sans 3 (sans-serif legível)
<p className="font-body text-base">Texto corpo</p>

// Mono - JetBrains Mono (código/números)
<code className="font-mono text-sm">código</code>

Animações Disponíveis

// Fade animations
className="animate-fade-in"
className="animate-fade-in-up"
className="animate-fade-in-down"

// Scale e slide
className="animate-scale-in"
className="animate-slide-in-right"
className="animate-slide-in-left"

// Ambiance
className="animate-float"
className="animate-pulse-soft"
className="animate-shimmer"
className="animate-breathe"  // Característico do Breath of Now!

Sombras

// Soft shadows (preferidas)
className="shadow-soft-sm"
className="shadow-soft-md"
className="shadow-soft-lg"
className="shadow-soft-xl"

// Glow effects
className="shadow-glow"
className="shadow-glow-accent"
className="shadow-inner-soft"

Guidelines de Estética

✅ FAZER

  • Tipografia: Usar font-display (Fraunces) para títulos, font-body (Source Sans 3) para texto
  • Cores: Paleta warm sage green, sand, e terracotta. Usar variáveis CSS.
  • Motion: Usar classes de animação existentes. Focar em momentos de alto impacto.
  • Espaço: Espaço negativo generoso. Breathing room. Flow orgânico.
  • Fundos: Criar atmosfera com gradientes subtis, sombras suaves, formas orgânicas.

❌ EVITAR

  • Fontes genéricas (Inter, Roboto, Arial, system fonts)
  • Gradientes roxos em fundos brancos
  • Design cookie-cutter sem carácter
  • Cores hardcoded (sempre usar classes Tailwind ou variáveis CSS)
  • Texto hardcoded (sempre usar traduções via useTranslations())

Componentes UI Disponíveis

Usar componentes existentes de @/components/ui/:

import { Button, Input, Card, Badge } from '@/components/ui';

// Button variants
<Button variant="primary">Primary</Button>
<Button variant="secondary">Secondary</Button>
<Button variant="outline">Outline</Button>
<Button variant="ghost">Ghost</Button>
<Button variant="accent">Accent</Button>
<Button variant="danger">Danger</Button>

// Input
<Input label={t('email')} error={errors.email} />

// Card variants
<Card variant="default">...</Card>
<Card variant="interactive">...</Card>
<Card variant="glass">...</Card>

// Badge variants
<Badge variant="primary">Tag</Badge>
<Badge variant="success">Active</Badge>
<Badge variant="warning">Pending</Badge>

Padrões de Código

Layout Responsivo

// Mobile-first approach
<div className="px-4 sm:px-6 lg:px-8">
  <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
    {/* content */}
  </div>
</div>

Container Pattern

<main className="min-h-screen bg-neutral-50">
  <div className="max-w-7xl mx-auto px-4 py-8">
    {/* content */}
  </div>
</main>

Card com Hover

<div className="bg-white rounded-xl shadow-soft-md hover:shadow-soft-lg 
                transition-shadow duration-300 p-6">
  {/* content */}
</div>

Checklist de Implementação

Antes de submeter código UI:

  • Usa Fraunces para títulos, Source Sans 3 para corpo
  • Usa paleta de cores do projecto (primary, secondary, accent)
  • Todo o texto usa useTranslations() - SEM strings hardcoded
  • Animações usam classes Tailwind existentes
  • Design responsivo (mobile-first)
  • Acessível (labels adequados, contraste, navegação por teclado)
  • Sombras usam shadow-soft-* em vez de sombras padrão

Exemplos de Boas Práticas

Card de App

const t = useTranslations('Dashboard');

<Card variant="interactive" className="group">
  <div className="flex items-center gap-4">
    <div className="p-3 rounded-xl bg-primary-100 text-primary-600
                    group-hover:bg-primary-200 transition-colors">
      <Icon className="h-6 w-6" />
    </div>
    <div>
      <h3 className="font-display text-lg font-semibold text-neutral-900">
        {t('appName')}
      </h3>
      <p className="font-body text-sm text-neutral-600">
        {t('appDescription')}
      </p>
    </div>
  </div>
</Card>

Hero Section

<section className="relative overflow-hidden bg-gradient-to-b from-primary-50 to-white">
  <div className="max-w-7xl mx-auto px-4 py-20 sm:py-32">
    <h1 className="font-display text-4xl sm:text-5xl lg:text-6xl 
                   font-bold text-neutral-900 animate-fade-in-up">
      {t('heroTitle')}
    </h1>
    <p className="mt-6 font-body text-xl text-neutral-600 
                  max-w-2xl animate-fade-in-up" 
       style={{ animationDelay: '100ms' }}>
      {t('heroSubtitle')}
    </p>
  </div>
</section>

Lembra-te: Claude é capaz de trabalho criativo extraordinário. Não te retraias - mostra o que pode ser criado quando pensamos fora da caixa e nos comprometemos totalmente com a visão Breath of Now.