Agent Skill
2/7/2026

ui-engineer

UI/UX Engineer skill for GANO frontend. Use for design system, React/Next.js components, Tailwind CSS styling, and frontend architecture decisions.

G
gano
0GitHub Stars
2Views
npx skills add Gano-alpha/gano-alpha

SKILL.md

Nameui-engineer
DescriptionUI/UX Engineer skill for GANO frontend. Use for design system, React/Next.js components, Tailwind CSS styling, and frontend architecture decisions.

name: ui-engineer description: UI/UX Engineer skill for GANO frontend. Use for design system, React/Next.js components, Tailwind CSS styling, and frontend architecture decisions.

GANO UI Engineer Skill

Context preservation document for Claude Code sessions. This file contains all critical context for UI engineering work on the GANO platform.

Role Overview

UI/UX Engineer responsible for:

  • Next.js frontend (gano-alpha)
  • Design system with Jony Ive principles
  • Tailwind CSS styling and design tokens
  • React component architecture
  • Mobile-first responsive design

Related Skill Files

This skill is split into focused documents:


Design Principles (Jony Ive Inspired)

Core Values

  • Minimal - Remove unnecessary elements
  • Precise - Exact spacing, aligned to 4px grid
  • Generous - Whitespace is a feature, not waste
  • Calm - Muted colors, subtle animations

Color Palette

/* Primary - Sophisticated blues */
--primary: hsl(220, 15%, 25%);       /* Dark slate */
--primary-light: hsl(220, 10%, 45%); /* Medium slate */

/* Accent - Subtle green for signals */
--accent: hsl(158, 45%, 40%);        /* Sage green */

/* Background - Clean, calm */
--bg-primary: hsl(220, 15%, 97%);    /* Near white */
--bg-card: hsl(0, 0%, 100%);         /* Pure white */

/* Text - High contrast, readable */
--text-primary: hsl(220, 15%, 15%);  /* Almost black */
--text-secondary: hsl(220, 10%, 45%);/* Gray */

Spacing Scale (4px base)

4, 8, 12, 16, 24, 32, 48, 64, 96, 128

Key Directories

gano-alpha/
├── src/
│   ├── app/                    # Next.js app router
│   │   ├── (dashboard)/chat/   # Main chat interface
│   │   └── page.tsx            # Landing page
│   ├── components/
│   │   ├── ui/                 # Design system (shadcn/ui)
│   │   ├── blocks/             # Render block components
│   │   └── chat/               # Chat-specific components
│   └── styles/
│       └── globals.css         # CSS variables, base styles
├── tailwind.config.ts          # Design tokens
└── skills/ui-engineer/         # This skill folder

Component Patterns

Block Rendering

Server sends typed blocks, UI renders without interpretation:

// blocks/RenderBlock.tsx
export function RenderBlock({ block }: { block: Block }) {
  switch (block.type) {
    case 'narrative': return <NarrativeBlock {...block} />;
    case 'ranked_list': return <RankedListBlock {...block} />;
    case 'split_compare': return <SplitCompareBlock {...block} />;
    // ...
  }
}

SSE Streaming for MCP Tools

Real-time progress updates via Server-Sent Events:

const eventSource = new EventSource('/api/chat/stream');
eventSource.onmessage = (event) => {
  const data = JSON.parse(event.data);
  if (data.type === 'tool_start') {
    setActiveTools(prev => [...prev, data.tool]);
  }
};

Git Workflow

# Create feature branch
git checkout -b feature/ui-improvement

# Never push directly to main
git push -u origin feature/ui-improvement

# Create PR for review

Learnings

  • [Document learnings from each session here]

Decisions

  • [Document design decisions here]

Context

  • [Current project state and notes]

Implemented Features (Jan 12, 2026)

New Pages

RouteTaskDescription
/track-recordB1Public signal history with performance metrics
/methodologyB4Three-layer architecture documentation
/fragilityB34Fragility dashboard with hero card, components, chart
/ops/dashboardB7Internal ops dashboard (auth-gated)

New Components

ComponentTaskLocation
FeedbackButtonB24components/feedback/FeedbackButton.tsx
FragilityIndexCardB15components/fragility/FragilityIndexCard.tsx
ConfidenceBandsB14components/fragility/ConfidenceBands.tsx
FragilityContextB35components/fragility/FragilityContext.tsx

Fragility Integration (B35)

Implemented injection rule engine and UI components:

// Usage in any block
import { useFragility, FragilitySidebar, FragilityFootnote } from '@/components/fragility';

function MyBlock() {
  const { fragility, evaluateInjection } = useFragility();
  const decision = evaluateInjection('signal_lookup');

  return (
    <div>
      {/* Main content */}
      {decision.should_inject && decision.placement === 'footnote' && (
        <FragilityFootnote fragility={fragility} />
      )}
    </div>
  );
}

Injection Rules

RuleConditionAction
ALWAYS_ELEVATEDregime >= ELEVATEDShow warning header
ALWAYS_DELTAdelta_24h >= 10Show footnote with delta
TRANSPARENCYquery = transparencyShow full context
DEEP_DIVEquery = deep_diveShow inline context
DEFAULTregime = CALM/NORMALNo injection

Regime Colors

RegimeBackgroundText
CALMbg-green-100text-green-700
NORMALbg-blue-100text-blue-700
ELEVATEDbg-amber-100text-amber-700
STRESSEDbg-red-100text-red-700
CRISISbg-red-200text-red-900

Last Updated: January 12, 2026

Skills Info
Original Name:ui-engineerAuthor:gano