본문으로 건너뛰기
cccskills
무료GitHub에 공개

experience-and-design-system

Anti-AI-slop design system for distinctive, premium interfaces. Bold typography, dark-first #060610, fluid clamp() type, cascade layers + native nesting + container queries, OKLCH color, @starting-style, View Transitions API, DTCG tokens.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Figma
설치 방법 보기

포함된 파일(4)

  • SKILL.md10.8 KB
  • build-breaking-rules.md36.6 KB
  • cinematic-doctrine.md9.9 KB
  • design-tokens.md7.6 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

10 — Experience and Design System

Build anti-AI-slop premium interfaces: dark-first OKLCH color, fluid clamp() type, DTCG tokens, View Transitions on every public-facing surface.

Apple Test — after every design: two elements compete → remove one; crowded → add whitespace; busy type → reduce sizes, increase weight contrast; final feel: effortless, inevitable.

CSS Patterns

  • Overlay rgba(0,0,0,0.81) · Text shadow 1px 1px 1px rgba(255,255,255,0.333) · Box shadow 2px 2px 2px rgba(0,0,0,0.69)
  • Border-radius 5px interactive, 10px containers (never 0, never pill)
  • Hero padding 40px · Max text 720px · Line-height 1.4
  • Letter-spacing: 0.4px labels, 0.5px nav, 1px titles, 1.4px CTAs
  • CTA uppercase always · Button 700 always · Reference: Linear, Notion, Stripe

Typography

  • Body: Sora 400/500 · Headings: Space Grotesk 600/700 · Mono: JetBrains Mono 400/500 · Display: Clash Display 700 (hero only)
  • Variable fonts: WOFF2, subset, self-host (never Google Fonts CDN), font-display:swap
  • Body min 16px (prefer 18) · Line-height 1.6 body, 1.1-1.2 headings · Letter-spacing -0.02em >2rem · Max 65ch
  • Never skip levels. Scale: Minor Third 1.2 general, Perfect Fourth 1.333 marketing
  • text-wrap:balance headings, text-wrap:pretty paragraphs
  • Kinetic gradient type (hero/display only): background: var(--gradient-primary); background-size: 220% 220%; background-clip: text (+ -webkit- pair), color: transparent, slow background-position pan 8-12s ease infinite alternate
  • Gate the pan behind @media (prefers-reduced-motion: no-preference) — reduced-motion gets the static gradient fill; keep a solid color fallback where clip is unsupported
:root {
  --text-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
  --text-sm: clamp(0.875rem, 0.8rem + 0.375vw, 1rem);
  --text-base: clamp(1rem, 0.9rem + 0.5vw, 1.125rem);
  --text-lg: clamp(1.125rem, 1rem + 0.625vw, 1.25rem);
  --text-xl: clamp(1.25rem, 1rem + 1.25vw, 1.5rem);
  --text-2xl: clamp(1.5rem, 1.1rem + 2vw, 2rem);
  --text-3xl: clamp(2rem, 1.5rem + 2.5vw, 3rem);
  --text-4xl: clamp(2.5rem, 1.5rem + 5vw, 4.5rem);
  --text-hero: clamp(3rem, 2rem + 5vw, 6rem);
}

Color (Dark Default)

:root {
  color-scheme: light dark;
  --bg-primary: #060610; --bg-secondary: #0a0a1a; --bg-tertiary: #121225;
  --bg-card: #0f0f1f; --bg-elevated: #1a1a35;
  --text-primary: #f0f0f5; --text-secondary: #a0a0b5; --text-muted: #606080;
  --accent-cyan: #00E5FF; --accent-blue: #50AAE3; --accent-purple: #8B5CF6;
  --gradient-primary: linear-gradient(135deg, #00E5FF, #50AAE3);
  --gradient-accent: linear-gradient(135deg, #50AAE3, #8B5CF6);
  --border-subtle: rgba(255,255,255,0.06); --border-hover: rgba(255,255,255,0.12);
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.3); --shadow-md: 0 4px 12px rgba(0,0,0,0.4);
  --shadow-lg: 0 8px 32px rgba(0,0,0,0.5); --shadow-glow: 0 0 20px rgba(0,229,255,0.15);
}
  • Never #000 (use #060610) · Never #fff (use #f0f0f5)
  • Cyan: primary CTAs · Blue: secondary · Gradients on buttons only · 6% borders · Subtle glow on primary interactive
  • Elevation via lightness not shadows: base → surface 1 → surface 2 → surface 3
  • color-scheme:light dark · data-theme="dark|light" user override · localStorage persistence · prefers-color-scheme system default · Always provide toggle
  • OKLCH is the authoring space — perceptually uniform ramps, hue-true shifts · relative color oklch(from var(--brand) l c calc(h + 30)) for derived accents
  • Derive shades via color-mix(in oklch, …), never hand-picked hex neighbors: hover color-mix(in oklch, var(--accent-cyan) 85%, white) · pressed …80%, black · wash …12%, transparent
  • light-dark() for theme-aware one-liners · dark-ONLY surfaces (cockpit, editor) set color-scheme: dark — native controls/scrollbars/autofill render dark, no white flash
  • Contrast 4.5:1 normal, 3:1 large/UI (WCAG 2.2 AA) · Target size min 24×24 px (2.5.8) · Focus 2px thick, 3:1 contrast (2.4.13)

CSS Architecture (2026)

@layer reset, base, tokens, components, utilities, overrides;
  • Native nesting (Baseline 2023, & syntax) · size container queries container-type: inline-size + @container (min-width: 28rem) (Baseline 2023) — component-owned breakpoints
  • Style queries @container style(--variant: featured) — Chrome 111+ / Safari 18+, Firefox pending (verify at caniuse); enhancement-only, base styles ship first
  • :has() parent selection (Baseline 2023) replaces state JS — form:has(:invalid) [type=submit], .grid:has(.card:hover) .card:not(:hover) sibling-dim
  • Declare layer order ONCE at bundle top — later layers win (utilities beat components); un-layered styles beat ALL layers, so layer everything
  • @scope bounded styling · Scroll-state queries @container scroll-state(stuck: top) (Baseline 2026)
  • Anchor positioning (anchor-name / position-anchor / position-area) replaces Floating UI — Chrome/Edge 133+ first, cross-engine newer (verify at caniuse) · @oddbird polyfill v0.7+ for the tail
  • Popover API popover + popovertarget (Baseline 2024) — top-layer, light-dismiss, focus-managed, zero JS; pair with anchor positioning for menus/tooltips
  • CSS if() · Typed attr() · sibling-index() / sibling-count() stagger: transition-delay: calc((sibling-index() - 1) * 40ms)
  • appearance:base-select native <select> (Chrome 135+) · @supports for progressive enhancement
  • Baseline 2026: @scope · Anchor positioning · Scroll-state queries · @starting-style · interpolate-size: allow-keywords · field-sizing: content · text-wrap: pretty · @property

W3C DTCG Design Tokens (2025.10 Stable)

  • JSON .tokens / .tokens.json, MIME application/design-tokens+json
  • Token: $value (required), $type, $description, $deprecated, $extensions
  • Types: color | dimension | duration | fontFamily | fontWeight | cubicBezier | number + composites (shadow, border, gradient, typography, transition)
  • Aliasing: "$value": "{base.color}" · $ref JSON Pointer · Group $type inheritance · $root for base + variants · $extends for deep merge
  • Full Display P3, OKLCH, CSS Color Module 4; naming: no $ prefix, no {} / . in names
  • Tools: Tokens Studio, Style Dictionary, Penpot, Figma

AI-Ready Design Documentation

  • DESIGN.md: plain-text markdown; sections: Visual Theme, Color Palette, Typography, Spacing + Layout, Components, Elevation
  • Atomic docs: context-rich units per component with states, variants, props, constraints, a11y, rationale
  • MCP servers (Figma Dev Mode MCP) for programmatic access

Layout

  • Container 1140px (wide 1400, narrow 720), padding clamp(1rem,3vw,3rem)
  • Sections clamp(4rem,8vw,8rem), border between; grid auto-fit minmax(280px,1fr), 1fr at 768px
  • Patterns: Hero (full-viewport, centered) · Features (3-col icon+heading+desc) · Alternating (zigzag) · Pricing (3-tier highlighted) · FAQ (accordion) · CTA (full-width dark) · Footer (4-col stack)
  • SaaS: Single-CTA 13.5%; Hero / Proof / Features / Demo / Testimonials / Pricing / FAQ / CTA; bento grid for feature showcases
  • Bento: repeat(auto-fill, minmax(240px, 1fr)) + grid-auto-flow: dense; 1-2 anchor cards grid-column: span 2 (hero metric also grid-row: span 2) — never uniform tiles
  • Bento anchors carry an accent wash linear-gradient(135deg, rgba(0,229,255,.08), transparent 60%) + border-hover; collapse spans via container query ≤480px, not viewport
  • Asymmetry with order: ONE dominant cell per visual row, constant gap clamp(0.75rem, 2cqi, 1.5rem), internal baselines aligned

Components

  • Cards — bg-card, border-subtle, 12px radius, hover: border-hover + shadow-glow
  • Buttons — Primary gradient #060610 text, 600 weight, 8px radius, hover 0.9, active scale(0.98), focus 3px cyan. Secondary: transparent, border, hover cyan
  • Nav — sticky, rgba(6,6,16,0.85), blur(16px)
  • Forms — bg-secondary, border-subtle, 8px, focus cyan + glow
  • Glass — backdrop-filter: blur(16px) saturate(140%) + rgba(10,10,26,0.6) bg + 1px top --border-subtle; @supports solid fallback; ≤3 blurred surfaces per view (GPU)
  • Grain — tiled SVG feTurbulence data-URI at 3-5% opacity, mix-blend-mode: overlay, pointer-events:none — kills gradient banding; never a runtime filter over scrolling areas
  • Spartan UI — copied-in components (not a black-box dep), OnPush everywhere, lazy-load heavy views (tables, editors, charts), Tailwind + design-token theming. Per rules/angular.md.

Interaction (every interactive element)

cursor:pointer, hover state, focus-visible (3px cyan, 2px offset), active (scale 0.98), transition (0.2s color, 0.1s transform). WCAG 2.2 — min 24×24px targets, focus not obscured by sticky headers, dragging alternatives required, accessible auth.

  • Rings on :focus-visible only (keyboard), never bare :focus — and via outline + outline-offset, which survive overflow:hidden + border-radius where box-shadow clips
  • Focus-Not-Obscured (2.4.11 AA): html { scroll-padding-top: calc(var(--nav-h) + 1rem) } (+ scroll-padding-bottom for sticky footers) so tab/anchor targets never land under sticky chrome

4-state distinction (NON-NEGOTIABLE)

Every link/button/card MUST visually differ across :default | :hover | :focus-visible | :active — NEVER let two states look identical.

  • Default → neutral · Hover → underline-sweep + color shift + translateY(-1px) · Focus-visible → 3px cyan ring 2px offset (distinct from hover) · Active → scale(0.98) + immediate color confirm

Audit gate: Playwright cycles each interactive element through 4 states → screenshots → diff ≥3px pixel-difference between adjacent states or fail.

Underline-sweep (text links default)

.underline-hover{position:relative}
.underline-hover::after{content:"";position:absolute;z-index:1;left:51%;right:51%;bottom:0;background:var(--brand-accent);height:1px;transition:left .3s ease-out,right .3s ease-out}
.underline-hover:hover::after,.underline-hover:focus-visible::after{left:0;right:0}

var(--brand-accent) / theme equivalent — never hard-coded #hex.

See submodules: design-tokens.md, build-breaking-rules.md, cinematic-doctrine.md.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Every delivered app — the non-inferable business requirements + exact stack/brand choices every build must satisfy. Loads on every app/site build.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

heymegabyte/agent-skills242026년 10월 11일 업데이트

Cloudflare-first platform selection. Decision trees for Workers, D1, R2, KV, DO, Queues, Vectorize, Containers, Sandboxes, Flagship, Agent Memory, Workflows v2. Default stack, override conditions, auth, data patterns, reliability.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

heymegabyte/agent-skills242026년 10월 11일 업데이트

Extract real brands (Wayback for rebuilds). Copy system, headline/CTA rules, trust surfaces, legal pages, SEO+structured data, anti-AI-slop, microcopy, DESIGN.md, W3C DTCG tokens, pSEO 5 types, GEO/AI search.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

heymegabyte/agent-skills242026년 10월 11일 업데이트

Implements features in vertical slices, always starting with homepage. Enforces anti-placeholder rules — no lorem ipsum, no TODO stubs, no gray boxes. Real content, real images, real interactions. TypeScript strict mode, Zod validation, and structured file organization.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

heymegabyte/agent-skills242026년 10월 11일 업데이트

The consolidated, world-class Cloudflare + integrations reference — CF platform/data/AI-edge patterns, media pipeline, observability/growth, payments, and the site-generation pipeline. The non-inferable choices that build the greatest web apps.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

heymegabyte/agent-skills242026년 10월 11일 업데이트

One-line-prompt → cinematic, gorgeous, functional, well-tested, deployed website. Pre-hydrated SPA + full PWA kit + JSON-LD rich snippets + third-party integrations. React 19+Vite default (Angular optional). 100 concrete improvements grouped into 10 categories that EVERY single-prompt site build must satisfy before being marked done. Trigger whenever the user says 'make a website for X', 'build a site for X', 'rebuild X.com', or any equivalent one-liner.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

heymegabyte/agent-skills242026년 10월 11일 업데이트

heymegabyte의 스킬 모두 보기

이 스킬의 문제 신고