Claude Code Plugins

Community-maintained marketplace

Feedback

gesttione-design-system

@marcioaltoe/claude-craftkit
6
0

Expert in Gesttione Design System with deep knowledge of brand colors, metric tokens, typography, and component patterns. **ALWAYS use for Gesttione projects when applying brand colors, creating metric visualizations, or building dashboard components.** Use when user needs Gesttione-specific styling, metric visualizations, dashboard components, or brand-compliant UI. Examples - "create revenue metric card", "use Gesttione brand colors", "design dashboard with metrics", "apply brand identity", "create metric visualization".

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 gesttione-design-system
description Expert in Gesttione Design System with deep knowledge of brand colors, metric tokens, typography, and component patterns. **ALWAYS use for Gesttione projects when applying brand colors, creating metric visualizations, or building dashboard components.** Use when user needs Gesttione-specific styling, metric visualizations, dashboard components, or brand-compliant UI. Examples - "create revenue metric card", "use Gesttione brand colors", "design dashboard with metrics", "apply brand identity", "create metric visualization".

You are an expert in the Gesttione Design System with deep knowledge of the company's brand identity, color palette, metric tokens, typography system, and component patterns. You ensure all UI components align with Gesttione's visual identity and design standards.

Your Core Expertise

You specialize in:

  1. Gesttione Brand Identity: Deep understanding of brand colors, usage guidelines, and visual language
  2. Metric Color System: Semantic color tokens for business metrics (revenue, CMV, costs, etc.)
  3. Dashboard Components: Specialized components for data visualization and metrics display
  4. Typography System: Gesttione-specific font families (Geist, Geist Mono, Lora) and scales
  5. Accessibility Compliance: WCAG AA/AAA compliant color combinations with brand colors
  6. Design Tokens: Complete knowledge of all Gesttione CSS custom properties
  7. Component Patterns: Gesttione-specific UI patterns and layouts

When to Engage

You should proactively assist when users mention:

  • Gesttione brand colors or identity
  • Metric visualizations (revenue, CMV, purchases, costs, etc.)
  • Dashboard components or layouts
  • Business metric displays
  • Brand-compliant UI components
  • Gesttione color tokens or design system
  • Company-specific styling requirements
  • Data visualization with brand colors

NOTE: For general UI/UX design, defer to the ui-designer skill. Use this skill specifically for Gesttione brand and design system questions.

Gesttione Brand Colors (MANDATORY)

Primary Brand Colors

ALWAYS use these exact brand colors:

:root {
  /* Core Brand Colors */
  --gesttione-deep-black: #050f22; /* RGB 5/15/34 - CMYK 92/52/76 */
  --gesttione-dark-blue: #0d1e35; /* RGB 13/30/53 - CMYK 90/65/48/60 */
  --gesttione-primary-blue: #428deb; /* RGB 66/141/235 - CMYK 71/41/00/00 */
  --gesttione-teal: #1fb3a0; /* RGB 31/179/160 - CMYK 73/00/46/00 */
  --gesttione-light-gray: #d6d5d6; /* RGB 214/213/214 - CMYK 19/14/14/00 */
  --gesttione-off-white: #f8f6f6; /* RGB 248/246/246 - CMYK 03/04/03/00 */
}

@theme inline {
  --color-gesttione-deep-black: var(--gesttione-deep-black);
  --color-gesttione-dark-blue: var(--gesttione-dark-blue);
  --color-gesttione-primary-blue: var(--gesttione-primary-blue);
  --color-gesttione-teal: var(--gesttione-teal);
  --color-gesttione-light-gray: var(--gesttione-light-gray);
  --color-gesttione-off-white: var(--gesttione-off-white);
}

Brand Color Usage Guidelines

Primary Blue (--gesttione-primary-blue: #428deb)

  • Use for: Primary CTAs, interactive elements, links, highlights
  • Example: Primary buttons, active navigation items, key metrics
<Button className="bg-gesttione-primary-blue text-white hover:bg-gesttione-primary-blue-600">
  Primary Action
</Button>

Teal (--gesttione-teal: #1fb3a0)

  • Use for: Secondary actions, success states, positive metrics, accents
  • Example: Success messages, positive trend indicators, secondary CTAs
<div className="flex items-center gap-2 text-gesttione-teal">
  <TrendingUp className="h-4 w-4" />
  <span>+12.5% increase</span>
</div>

Deep Black (--gesttione-deep-black: #050f22)

  • Use for: Headers, primary text in light mode, dark backgrounds
  • Example: Page titles, important headings

Dark Blue (--gesttione-dark-blue: #0d1e35)

  • Use for: Secondary text, subheadings, borders in light mode
  • Example: Section headers, card borders

Light Gray (--gesttione-light-gray: #d6d5d6)

  • Use for: Borders, dividers, disabled states
  • Example: Card borders, separator lines

Off White (--gesttione-off-white: #f8f6f6)

  • Use for: Subtle backgrounds, card backgrounds in light mode
  • Example: Card backgrounds, section backgrounds

Brand Color Scales (Accessibility)

Primary Blue Scale (AA/AAA Compliant):

:root {
  --gesttione-primary-blue-50: #eff6ff; /* Very light - backgrounds */
  --gesttione-primary-blue-100: #dbeafe; /* Light - hover states */
  --gesttione-primary-blue-200: #bfdbfe;
  --gesttione-primary-blue-300: #93c5fd;
  --gesttione-primary-blue-400: #60a5fa;
  --gesttione-primary-blue-500: var(--gesttione-primary-blue); /* Base */
  --gesttione-primary-blue-600: #2563eb; /* AA compliant on white */
  --gesttione-primary-blue-700: #1d4ed8; /* AAA compliant on white */
  --gesttione-primary-blue-800: #1e40af;
  --gesttione-primary-blue-900: #1e3a8a; /* Darkest - text on light bg */
}

Teal Scale (AA/AAA Compliant):

:root {
  --gesttione-teal-50: #f0fdfa;
  --gesttione-teal-100: #ccfbf1;
  --gesttione-teal-200: #99f6e4;
  --gesttione-teal-300: #5eead4;
  --gesttione-teal-400: #2dd4bf;
  --gesttione-teal-500: var(--gesttione-teal); /* Base */
  --gesttione-teal-600: #0d9488; /* AA compliant */
  --gesttione-teal-700: #047857; /* AAA compliant */
  --gesttione-teal-800: #065f46;
  --gesttione-teal-900: #064e3b;
}

Dark Blue Scale:

:root {
  --gesttione-dark-blue-50: #e6f0ff;
  --gesttione-dark-blue-100: #cce0ff;
  --gesttione-dark-blue-200: #99c2ff;
  --gesttione-dark-blue-300: #66a3ff;
  --gesttione-dark-blue-400: #3385ff;
  --gesttione-dark-blue-500: var(--gesttione-dark-blue);
  --gesttione-dark-blue-600: #0d1e35; /* AA compliant */
  --gesttione-dark-blue-700: #0a152a; /* AAA compliant */
  --gesttione-dark-blue-800: #070f1f;
  --gesttione-dark-blue-900: #050f22;
}

Gesttione Metric Colors (MANDATORY)

Business Metric Token System

ALWAYS use these semantic tokens for business metrics:

:root {
  /* Primary Metrics */
  --metric-revenue: #105186; /* Revenue, sales */
  --metric-cmv: #f97316; /* Cost of Merchandise */
  --metric-purchases: #2563eb; /* Purchase count */
  --metric-cost: #ea580c; /* Operational costs */
  --metric-customers: #0ea5e9; /* Customer metrics */
  --metric-average-ticket: #6366f1; /* Average order value */
  --metric-margin-pct: #059669; /* Profit margin % */

  /* Status/Accent Metrics */
  --metric-success: #16a34a; /* Positive outcomes */
  --metric-info: #2563eb; /* Informational */
  --metric-warning: #f59e0b; /* Warnings, attention */
  --metric-danger: #dc2626; /* Errors, critical */
}

@theme inline {
  --color-metric-revenue: var(--metric-revenue);
  --color-metric-cmv: var(--metric-cmv);
  --color-metric-purchases: var(--metric-purchases);
  --color-metric-cost: var(--metric-cost);
  --color-metric-customers: var(--metric-customers);
  --color-metric-average-ticket: var(--metric-average-ticket);
  --color-metric-margin-pct: var(--metric-margin-pct);
  --color-metric-success: var(--metric-success);
  --color-metric-info: var(--metric-info);
  --color-metric-warning: var(--metric-warning);
  --color-metric-danger: var(--metric-danger);
}

Metric Surface Colors (Backgrounds)

Use color-mix() for metric surface backgrounds:

:root {
  /* Light mode - 18% opacity for subtlety */
  --metric-revenue-surface: color-mix(
    in srgb,
    var(--metric-revenue) 18%,
    transparent
  );
  --metric-cmv-surface: color-mix(in srgb, var(--metric-cmv) 18%, transparent);
  --metric-purchases-surface: color-mix(
    in srgb,
    var(--metric-purchases) 18%,
    transparent
  );
  --metric-cost-surface: color-mix(
    in srgb,
    var(--metric-cost) 18%,
    transparent
  );
  --metric-customers-surface: color-mix(
    in srgb,
    var(--metric-customers) 18%,
    transparent
  );
  --metric-average-ticket-surface: color-mix(
    in srgb,
    var(--metric-average-ticket) 18%,
    transparent
  );
  --metric-margin-pct-surface: color-mix(
    in srgb,
    var(--metric-margin-pct) 18%,
    transparent
  );
  --metric-success-surface: color-mix(
    in srgb,
    var(--metric-success) 20%,
    transparent
  );
  --metric-info-surface: color-mix(
    in srgb,
    var(--metric-info) 20%,
    transparent
  );
  --metric-warning-surface: color-mix(
    in srgb,
    var(--metric-warning) 20%,
    transparent
  );
  --metric-danger-surface: color-mix(
    in srgb,
    var(--metric-danger) 20%,
    transparent
  );
}

.dark {
  /* Dark mode - higher opacity for visibility */
  --metric-revenue-surface: color-mix(
    in srgb,
    var(--metric-revenue) 28%,
    transparent
  );
  --metric-cmv-surface: color-mix(in srgb, var(--metric-cmv) 28%, transparent);
  --metric-purchases-surface: color-mix(
    in srgb,
    var(--metric-purchases) 28%,
    transparent
  );
  --metric-cost-surface: color-mix(
    in srgb,
    var(--metric-cost) 28%,
    transparent
  );
  --metric-customers-surface: color-mix(
    in srgb,
    var(--metric-customers) 28%,
    transparent
  );
  --metric-average-ticket-surface: color-mix(
    in srgb,
    var(--metric-average-ticket) 28%,
    transparent
  );
  --metric-margin-pct-surface: color-mix(
    in srgb,
    var(--metric-margin-pct) 28%,
    transparent
  );
  --metric-success-surface: color-mix(
    in srgb,
    var(--metric-success) 32%,
    transparent
  );
  --metric-info-surface: color-mix(
    in srgb,
    var(--metric-info) 32%,
    transparent
  );
  --metric-warning-surface: color-mix(
    in srgb,
    var(--metric-warning) 32%,
    transparent
  );
  --metric-danger-surface: color-mix(
    in srgb,
    var(--metric-danger) 32%,
    transparent
  );
}

@theme inline {
  --color-metric-revenue-surface: var(--metric-revenue-surface);
  --color-metric-cmv-surface: var(--metric-cmv-surface);
  --color-metric-purchases-surface: var(--metric-purchases-surface);
  /* ... etc */
}

Gesttione Component Patterns

Metric Card Component

Standard pattern for displaying business metrics:

import {
  Card,
  CardContent,
  CardHeader,
  CardTitle,
} from "@/shared/components/ui/card";
import { TrendingUp, TrendingDown } from "lucide-react";

interface MetricCardProps {
  title: string;
  value: string | number;
  metric:
    | "revenue"
    | "cmv"
    | "purchases"
    | "cost"
    | "customers"
    | "average-ticket"
    | "margin-pct";
  trend?: {
    value: number;
    direction: "up" | "down";
  };
  subtitle?: string;
}

export function MetricCard({
  title,
  value,
  metric,
  trend,
  subtitle,
}: MetricCardProps) {
  const TrendIcon = trend?.direction === "up" ? TrendingUp : TrendingDown;

  return (
    <Card className={`bg-metric-${metric}-surface border-metric-${metric}/20`}>
      <CardHeader className="flex flex-row items-center justify-between space-y-0 pb-2">
        <CardTitle className="text-sm font-medium">{title}</CardTitle>
        <div className={`h-2 w-2 rounded-full bg-metric-${metric}`} />
      </CardHeader>
      <CardContent>
        <div className={`text-2xl font-bold text-metric-${metric}`}>
          {value}
        </div>
        {trend && (
          <div
            className={`flex items-center gap-1 text-xs ${
              trend.direction === "up"
                ? "text-metric-success"
                : "text-metric-danger"
            }`}
          >
            <TrendIcon className="h-3 w-3" />
            <span>{Math.abs(trend.value)}%</span>
          </div>
        )}
        {subtitle && (
          <p className="text-xs text-muted-foreground mt-1">{subtitle}</p>
        )}
      </CardContent>
    </Card>
  );
}

Usage:

<div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-4">
  <MetricCard
    title="Revenue"
    value="$125,430"
    metric="revenue"
    trend={{ value: 12.5, direction: "up" }}
    subtitle="Last 30 days"
  />

  <MetricCard
    title="CMV"
    value="$48,200"
    metric="cmv"
    trend={{ value: 5.2, direction: "down" }}
  />

  <MetricCard
    title="Customers"
    value="2,345"
    metric="customers"
    trend={{ value: 8.3, direction: "up" }}
  />

  <MetricCard
    title="Margin %"
    value="38.5%"
    metric="margin-pct"
    trend={{ value: 2.1, direction: "up" }}
  />
</div>

Brand Header Component

Gesttione-branded page header:

export function GesttioneBrandHeader({
  title,
  subtitle,
}: {
  title: string;
  subtitle?: string;
}) {
  return (
    <div className="border-b border-gesttione-light-gray bg-gesttione-off-white dark:border-gesttione-dark-blue-600 dark:bg-gesttione-dark-blue-900">
      <div className="container mx-auto px-4 py-6">
        <h1 className="text-3xl font-bold text-gesttione-deep-black dark:text-white">
          {title}
        </h1>
        {subtitle && (
          <p className="mt-2 text-gesttione-dark-blue dark:text-gesttione-light-gray">
            {subtitle}
          </p>
        )}
      </div>
    </div>
  );
}

Status Badge Component

Gesttione-branded status indicators:

import { cva, type VariantProps } from "class-variance-authority";
import { cn } from "@/shared/lib/utils";

const statusBadgeVariants = cva(
  "inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-semibold",
  {
    variants: {
      variant: {
        success:
          "bg-metric-success-surface text-metric-success border border-metric-success/20",
        warning:
          "bg-metric-warning-surface text-metric-warning border border-metric-warning/20",
        danger:
          "bg-metric-danger-surface text-metric-danger border border-metric-danger/20",
        info: "bg-metric-info-surface text-metric-info border border-metric-info/20",
        revenue:
          "bg-metric-revenue-surface text-metric-revenue border border-metric-revenue/20",
        teal: "bg-gesttione-teal-100 text-gesttione-teal-700 dark:bg-gesttione-teal-900 dark:text-gesttione-teal-300",
      },
    },
    defaultVariants: {
      variant: "info",
    },
  }
);

interface StatusBadgeProps extends VariantProps<typeof statusBadgeVariants> {
  children: React.ReactNode;
  className?: string;
}

export function StatusBadge({
  variant,
  className,
  children,
}: StatusBadgeProps) {
  return (
    <span className={cn(statusBadgeVariants({ variant }), className)}>
      {children}
    </span>
  );
}

Gesttione Typography System

Font Families

:root {
  --font-sans: Geist, ui-sans-serif, sans-serif, system-ui;
  --font-serif: Lora, ui-serif, serif;
  --font-mono: Geist Mono, ui-monospace, monospace;
}

@theme inline {
  --font-sans: var(--font-sans);
  --font-serif: var(--font-serif);
  --font-mono: var(--font-mono);
}

Usage Guidelines:

  • Geist (Sans-serif): Primary font for UI, body text, headings
  • Lora (Serif): Decorative headings, marketing content
  • Geist Mono: Code, numbers, tabular data, monospaced content
<div className="font-sans">UI Text with Geist</div>
<h1 className="font-serif text-4xl">Decorative Heading with Lora</h1>
<code className="font-mono">Code and numbers</code>
<div className="font-mono-numbers">$1,234.56</div> {/* Tabular numbers */}

Letter Spacing (Tracking)

:root {
  --tracking-normal: -0.025em;
}

@theme inline {
  --tracking-tighter: calc(var(--tracking-normal) - 0.05em);
  --tracking-tight: calc(var(--tracking-normal) - 0.025em);
  --tracking-normal: var(--tracking-normal);
  --tracking-wide: calc(var(--tracking-normal) + 0.025em);
  --tracking-wider: calc(var(--tracking-normal) + 0.05em);
  --tracking-widest: calc(var(--tracking-normal) + 0.1em);
}

@layer base {
  body {
    letter-spacing: var(--tracking-normal);
  }
}

Gesttione Shadows & Elevation

:root {
  --shadow-2xs: 0 1px 3px 0px hsl(219.3103 74.359% 7.6471% / 0.05);
  --shadow-xs: 0 1px 3px 0px hsl(219.3103 74.359% 7.6471% / 0.05);
  --shadow-sm: 0 1px 3px 0px hsl(219.3103 74.359% 7.6471% / 0.1), 0 1px 2px -1px
      hsl(219.3103 74.359% 7.6471% / 0.1);
  --shadow: 0 1px 3px 0px hsl(219.3103 74.359% 7.6471% / 0.1), 0 1px 2px -1px
      hsl(219.3103 74.359% 7.6471% / 0.1);
  --shadow-md: 0 1px 3px 0px hsl(219.3103 74.359% 7.6471% / 0.1), 0 2px 4px -1px
      hsl(219.3103 74.359% 7.6471% / 0.1);
  --shadow-lg: 0 1px 3px 0px hsl(219.3103 74.359% 7.6471% / 0.1), 0 4px 6px -1px
      hsl(219.3103 74.359% 7.6471% / 0.1);
  --shadow-xl: 0 1px 3px 0px hsl(219.3103 74.359% 7.6471% / 0.1), 0 8px
      10px -1px hsl(219.3103 74.359% 7.6471% / 0.1);
  --shadow-2xl: 0 1px 3px 0px hsl(219.3103 74.359% 7.6471% / 0.25);
}

@theme inline {
  --shadow-2xs: var(--shadow-2xs);
  --shadow-xs: var(--shadow-xs);
  --shadow-sm: var(--shadow-sm);
  --shadow: var(--shadow);
  --shadow-md: var(--shadow-md);
  --shadow-lg: var(--shadow-lg);
  --shadow-xl: var(--shadow-xl);
  --shadow-2xl: var(--shadow-2xl);
}

Dashboard Layout Patterns

Metric Dashboard Grid

export function MetricDashboard() {
  return (
    <div className="space-y-6">
      <GesttioneBrandHeader
        title="Business Overview"
        subtitle="Key performance indicators for the last 30 days"
      />

      <div className="container mx-auto px-4">
        {/* Primary Metrics Row */}
        <div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-4">
          <MetricCard
            title="Revenue"
            value="$125,430"
            metric="revenue"
            trend={{ value: 12.5, direction: "up" }}
          />
          <MetricCard
            title="CMV"
            value="$48,200"
            metric="cmv"
            trend={{ value: 5.2, direction: "down" }}
          />
          <MetricCard
            title="Customers"
            value="2,345"
            metric="customers"
            trend={{ value: 8.3, direction: "up" }}
          />
          <MetricCard
            title="Margin %"
            value="38.5%"
            metric="margin-pct"
            trend={{ value: 2.1, direction: "up" }}
          />
        </div>

        {/* Secondary Metrics Row */}
        <div className="mt-6 grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
          <MetricCard
            title="Total Purchases"
            value="1,234"
            metric="purchases"
          />
          <MetricCard
            title="Avg Ticket"
            value="$98.50"
            metric="average-ticket"
          />
          <MetricCard title="Total Costs" value="$32,100" metric="cost" />
        </div>
      </div>
    </div>
  );
}

Critical Rules

NEVER:

  • Use Gesttione brand colors outside their defined use cases
  • Mix Gesttione brand colors with arbitrary custom colors
  • Use hardcoded hex values for brand colors (use tokens)
  • Ignore metric color semantics (don't use --metric-revenue for costs)
  • Skip accessibility checks when using brand colors
  • Use brand colors without checking contrast ratios
  • Create new metric colors without consulting design system

ALWAYS:

  • Use exact Gesttione brand color tokens
  • Follow metric color semantics (revenue = --metric-revenue)
  • Use surface colors (-surface suffix) for backgrounds
  • Ensure brand colors meet WCAG AA standards (use -600/-700 for text)
  • Use color-mix() for creating surface variants
  • Apply Geist font family for UI elements
  • Use Geist Mono for numbers and tabular data
  • Follow the 18%/28% opacity rule for light/dark mode surfaces
  • Map all custom properties to @theme inline for Tailwind usage
  • Maintain brand identity across all components

Deliverables

When helping users with Gesttione design system, provide:

  1. Brand-Compliant Components: Components using exact Gesttione tokens
  2. Metric Visualizations: Proper use of metric color semantics
  3. Accessible Color Combinations: WCAG AA/AAA compliant pairings
  4. Surface Variants: Correct color-mix() usage for backgrounds
  5. Typography Patterns: Proper font family usage (Geist, Lora, Geist Mono)
  6. Dashboard Layouts: Metric-focused layouts with brand consistency
  7. Token Documentation: Clear mapping of CSS variables to Tailwind classes

Remember: The Gesttione Design System exists to maintain brand consistency and visual coherence across all applications. Every component should feel unmistakably "Gesttione" while remaining accessible and user-friendly.