PRIMITIVE
OS
Foundational infrastructure for the agentic era.
THE DESIGN
CORE.
A modular UI/UX constraint engine that eliminates generic design slop. One prompt forces any AI coding agent to produce correct typography, geometry, and motion.
Prompt your AI agent with the following:
"I am starting a new project. Pull the Primitive Design Core engine from https://github.com/atakanturg/primitive-design-core. Run its installation script to configure this environment, and then build me a Next.js landing page."
PROTOTYPES.
CLICK TO LAUNCH FULL DEMOThree fully functional websites built under Primitive Design Core constraints. Restaurant, pet services, trades — no stock images, no radius, no slop.
MAISON NOIR
A reservations-driven dining experience. Lunch & dinner menu with French cuisine, booking form with validation.
FAUNA STUDIO
Premium pet care portal. Interactive service selector, team profiles, appointment booking system.
APEX PLUMBING
Professional plumbing services. Emergency banner, service grid, free quote form with urgency toggle.
PRIMITIVE-SKILL.MD
The full constraint specification. Scroll over the file to read — it locks the page and advances line by line. Releases automatically at the top or bottom.
01# PRIMITIVE-SKILL.MD02# Primitive Design Core — Constraint Engine v1.203# Apply this file to any AI coding agent to enforce the Primitive standard.04# Last updated: 2026-04 | Detroit.Paris.0506## ═══════════════════════════════════════07## RULE 00: BEFORE YOU WRITE A SINGLE LINE08## ═══════════════════════════════════════0910Before generating any UI component, confirm the following:11- You have read this file in full.12- You will NOT apply any rule that contradicts this spec.13- You will treat deviations as build failures.1415Zero-tolerance policy. No exceptions. No "but this looks nicer".1617## ═══════════════════════════════════════18## RULE 01: GEOMETRY & LAYOUT19## ═══════════════════════════════════════2021border-radius: 0px !important22→ rounded-*, rounded-xl, rounded-full = FORBIDDEN23→ Override any third-party component that adds radius2425Borders:26→ All component borders: 1px solid #1c1c1c (zinc-800)27→ Borders define structure. They are not decorative.28→ No box-shadows as a substitute for borders.2930Layout system:31→ CSS Grid is the primary layout primitive.32→ Bento-box grid structures preferred over freeform flex.33→ Gutters: 1px (border-as-divider pattern).3435Spacing scale:36→ Use multiples of 4px. Never arbitrary pixel values.37→ Padding inside cards: 24px or 32px. Never 10px or 15px.3839## ═══════════════════════════════════════40## RULE 02: COLOR SYSTEM41## ═══════════════════════════════════════4243Primary palette (always present):44 #000000 — page background45 #ffffff — primary text46 #111111 — component background (elevation 1)47 #1c1c1c — border / divider (zinc-800)48 #444444 — muted text, metadata49 #888888 — secondary text5051Accent system:52→ One accent per product/brand. Choose deliberately.53→ Accent applies to: CTAs, index numbers, hover states, icons.54→ Never apply accent to body text or headings.55→ Never use more than one accent on a single screen.5657FORBIDDEN:58→ bg-gradient-to-* on any background59→ Pastel colours without explicit brand reason60→ Transparency hacks to simulate depth (use borders instead)61→ Pure CSS shadows (box-shadow) on containers6263## ═══════════════════════════════════════64## RULE 03: TYPOGRAPHY65## ═══════════════════════════════════════6667Primary typeface: Geist Mono68→ Applied globally via next/font or @import69→ letter-spacing: -0.05em on all headings70→ font-weight: 400 (body) | 700 (headings, labels)71→ Never font-weight: 500 or 6007273BLACKLISTED fonts:74→ Inter, Roboto, Open Sans, Lato, Nunito, Poppins75→ Any rounded sans-serif is considered "slop"7677Heading scale:78→ h1: clamp(52px, 12vw, 180px) | tracking: -0.08em79→ h2: clamp(28px, 4vw, 64px) | tracking: -0.05em80→ h3: 13–16px | font-bold | tracking: -0.03em8182Label / metadata style:83→ UPPERCASE, 8–10px, tracking: 0.2–0.35em, color: #444–#55584→ Used for section indices, tags, status indicators8586Body copy:87→ 11–13px, leading: 1.6–1.8, color: #8888889## ═══════════════════════════════════════90## RULE 04: MOTION PHYSICS91## ═══════════════════════════════════════9293CSS transitions are BANNED for state changes.94Use Framer Motion for ALL animated UI state.9596Standard spring config:97 { type: "spring", mass: 0.5, stiffness: 400, damping: 30 }9899Scroll animations:100→ useScroll + useTransform for parallax / reveal101→ whileInView with viewport: { once: true, margin: "-60px" }102→ Never use CSS @keyframes for UI state103104Page transitions:105→ AnimatePresence wraps all route-level components106→ Exit animations always defined (no "disappear instantly")107108Hover interactions:109→ motion.div with animate prop (not CSS hover: classes)110→ Spring transitions on x, y, scale, opacity, color111112## ═══════════════════════════════════════113## RULE 05: WEBGL & GENERATIVE VISUALS114## ═══════════════════════════════════════115116NO stock images. Period.117→ Unsplash, Pexels, Getty = BANNED118→ If you need an image, generate it or use SVG119120React Three Fiber is the WebGL standard:121→ @react-three/fiber + @react-three/drei122→ All 3D scenes use Canvas with alpha: true background123→ Performance: dpr={[1, 1.5]}, powerPreference: "high-performance"124125Generative visuals preferred:126→ Noise shaders (simplex, Perlin FBM)127→ Particle systems reacting to mouse/scroll128→ Procedural geometry (PlaneGeometry with vertex displacement)129130Post-processing (if used):131→ @react-three/postprocessing only132→ Bloom intensity: never > 0.4 (no blinding glare)133134## ═══════════════════════════════════════135## RULE 06: COMPONENT ARCHITECTURE136## ═══════════════════════════════════════137138All components: strict TypeScript, no 'any' types.139File naming: PascalCase for components, camelCase for utils.140Co-location: component-specific hooks live in the same file.141142State management:143→ useState for local UI state only144→ No Redux / Zustand unless explicitly required145→ Context for theme/global only146147Server vs Client:148→ Mark 'use client' only when needed (interactivity, hooks)149→ Prefer server components for static sections150→ Dynamic import R3F components with { ssr: false }151152## ═══════════════════════════════════════153## RULE 07: ANTI-SLOP CHECKLIST154## ═══════════════════════════════════════155156Before committing any component, verify:157158[ ] No rounded corners anywhere (0px radius enforced)159[ ] No stock photography or placeholder images160[ ] No Tailwind gradient backgrounds161[ ] No default browser font showing through162[ ] No magic pixel values (must be on 4px grid)163[ ] No CSS transition for state changes (use Framer)164[ ] No more than 1 accent color on the screen165[ ] All text meets 4.5:1 contrast ratio minimum166[ ] Hover states defined on all interactive elements167[ ] All buttons/links have visible focus states168169If any box is unchecked → the component does not ship.170171## ═══════════════════════════════════════172## RULE 08: INSTALLATION173## ═══════════════════════════════════════174175To apply this constraint engine to a new project:1761771. Copy this file to your project root as .claudedesignrules.md1782. Add to your AI agent prompt:179 "Read .claudedesignrules.md before writing any UI code.180 Treat all rules as hard constraints, not suggestions."1813. For Next.js projects, add to next.config.js:182 experimental: { scrollRestoration: true }1834. Install required packages:184 npm install framer-motion @react-three/fiber @react-three/drei185 npm install simplex-noise geist186187End of file. Build something that lasts.188# primitive-design-core | github.com/atakanturg/primitive-design-core