Creogen Framework

Figma in, a finished website out

The Creogen Framework turns a Figma design into a Tailwind, Astro and Sanity site by filling components that already exist. Every rule serves one of these words. A rule that serves none gets deleted.

  • Scalable
  • Accessible
  • Performant
  • Best practice everywhere
  • Every browser
  • Every breakpoint and corner case
  • Loved by Google and LLMs
  • Fluid
  • Buttery-smooth motion
px
Plunger and needle: the font size the browser rendersCam segments: one rule per pair of Figma framesThe H1 token is 32 px at the mobile frame, 48 at tablet and 64 from laptop up. Each cam segment is one clamp() rule, so the size is exact at every frame and slides smoothly in between; below 375 and above 992 the cam is flat.

The figure is a real instrument: the cam is the H1 token, the carriage is the viewport, the dial is what the browser renders. Use the arrow keys on it to step between Figma frames.

How it works

From a Figma file to an approved plan to a finished site, in small steps that each end with a check.

The flow

Small skills, each with one job and a clear finish line. The person types the user-invoked ones in order; the rule skills load themselves when the work needs them.

  1. /creogen-setupFrames, locales, nav breakpoint, fonts, collections, staging that can’t be indexed.
  2. /creogen-grillEvery unanswered question in the Figma file, asked in rounds, each with a recommended answer.
  3. /creogen-planSections split, every element mapped to a component, every piece of content given a home. No code.
  4. /creogen-buildOne tracer section end to end, then easy sections, then hard ones. Each one red against Figma, then green.
  5. /creogen-reviewTwo reviewers in parallel: one checks the framework rules, the other checks Figma and the plan.
  6. /creogen-shipQA per page, client markups, pre-launch, go live, two weeks of watching.
  7. /creogen-retroWhat hurt becomes a better rule, recipe, gate or deletion.

Never reinvent the wheel

For every section and element, climb from the bottom and stop at the first rung that works. The dashed rungs need a human’s approval before anything is built.

  1. Use a recipeA saved section such as cta-band or faq-sticky-left. Fill its data.
  2. Compose existing componentsSection, ContentWrap, Layout, Grid, Card. Save it as a recipe if it will appear again.
  3. Set a propSame component, different value.
  4. Pick a variantSame component, different look or layout.
  5. Propose a variantAt least 70% of the structure shared, same purpose.
  6. Propose a propThe difference is content or an editor’s on/off choice.
  7. Propose a new componentLast resort: name, purpose, props, variants, and why nothing else fits.

Every piece of content has one home

Collection

Many items of the same shape.

  • Lists, filters, own URLs, schema
  • Used on more than one page
  • Prices, counts and ratings that must agree everywhere

Global

Identical everywhere, edited once.

  • Nav, footer, banner
  • Content in a singleton, no props

Reusable block

Shared, with optional overrides.

  • A CTA band on eight pages
  • Empty override means the shared text
  • Pasted into three pages? It becomes one

Local

Belongs to this section only.

  • Hero copy, a one-off feature list
  • Stored on the page

The design system

Tokens, components and the rules that make every element configurable without custom code.

Fluid rules, exact at every frame

Each token gets one value per Figma frame. The compiler draws a straight line between neighbouring frames and writes one clamp() per segment, so the size is exactly what the designer drew at every frame and never jumps in between.

Behalte dein Unternehmen im Griff

This heading uses the generated rule below. Resize the window and watch it hit 32, 48 and 64 exactly.

"h1": { "mobile": 32, "tablet": 48, "laptop": 64, "desktop": 64 }

:root { --text-h1: clamp(2rem, 1.0458rem + 4.0712vw, 3rem); }                     /* 375 → 768 */
@media (width >= 48em) { :root { --text-h1: clamp(3rem, -0.4286rem + 7.1429vw, 4rem); } } /* 768 → 992 */
@media (width >= 62em) { :root { --text-h1: 4rem; } }                                 /* 992 and up */

Defaults for every element

Nothing on a page falls back to the browser, and nothing comes from anywhere but Figma. Every HTML element has a decided default; every value below is read from the Figma master template, with Creogen blue as the brand colour.

Theme modes from Figma

Four modes ship: Light, Dark, Tint and Brand. Every semantic colour is defined in each. The fifth Figma mode, Wireframe, is for wireframing only.

LightBackground primaryBackground secondaryText primaryButton primaryAccent
DarkBackground primaryBackground secondaryText primaryButton primaryAccent
TintBackground primaryBackground secondaryText primaryButton primaryAccent
BrandBackground primaryBackground secondaryText primaryButton primaryAccent text

Neutrals are black #0a0d0b and white at fixed opacities (70, 50, 16, 10, 8, 4%), so one token works on any surface. Radius: buttons 8, images 12, cards 16. Container 1280, side padding 20 → 80.

Elements with a decided default

  • html
  • body
  • h1–h6
  • p
  • a
  • strong
  • em
  • small
  • sub, sup
  • mark
  • code, pre
  • ul, ol, li
  • dl
  • blockquote
  • q
  • hr
  • img
  • svg, video, iframe
  • figure, figcaption
  • table, th, td, caption
  • label
  • button
  • input, select, textarea
  • ::placeholder
  • autofill
  • fieldset, legend
  • details, summary
  • dialog, ::backdrop
  • progress, meter
  • [hidden]
  • ::selection
  • :focus-visible
  • :disabled

Everything is a variant

Any difference between two instances of any element is an axis: a named, token-bound setting. The same axis has the same name and values on every component, so a button, a card, a list, a badge, a nav or a form field are all configured the same way. Nothing ever needs one-off CSS.

Try it on any component

Pick a component. The controls stay the same; the ones a component doesn’t use are switched off.

Component

The universal axes

AxisValuesUsed by, for example
variantsolid, outline, ghost, link, cover, stackedButton, Card, Badge, Tab, Nav item
toneinherit, neutral, accent, brand, success, warning, dangerButton, Badge, Notice, Icon, list markers
themeinherit, light, dark, brandSection, Card, Nav, Footer, Modal
sizexs, sm, md, lg, xlButton, Icon, Badge, Input, Avatar
looktext sizes, h6 to h1, displayHeading, RichText, Plain
padding, gapspace tokensSection, Card, any group of children
direction, columns, wrapvertical, horizontal, grid; 1 to 12Lists, ButtonWrap, Grid, Card, Footer
alignstart, center, end, stretch, center-mobileContentWrap, ButtonWrap, Card, lists
radius, border, elevationtoken stepsCard, Button, Visual, Input, Dropdown
media, ratiotop, start, end, background; 16/9 and friendsCard, Layout, Hero, Visual
iconname, position, size, toneButton, Nav item, Input, Tab, list markers
marker, dividerbullet, number, icon, check, dash; line, dotLists, steps, timelines, Nav, Table
statehover, focus, selected, current, disabled, loading, error, emptyEvery interactive component, from real attributes
motionnone, fade, rise, scaleEntrances, reveals, opens

Every layout axis also takes a value per range, so columns: { large: 3, medium: 2, small: 1 } means the same thing on a grid, a list or a footer.

Anatomy of a section

Every band of every page is one Section. Padding lives on the section itself, so there are no spacer elements, and the container answers container queries.

  • Themeinherit, light, dark, brand; nests
  • Paddingnone, even, small, main, large, page top
  • Heightauto or screen (svh)
  • Widthsmall, main, full

Look and tag are separate

Figma decides how a heading looks. The page outline decides its level. The build fails on a skipped level or a second h1.

h1 Hero heading (first section only) h2 Section heading (default for every section) h3 Card, FAQ item, tab (one level below) h2 Next section h3 …

Design tokens

Every UI parameter from the Figma master template, read straight from its variables and styles. The template’s placeholder brand green is replaced by Creogen blue; everything else is exactly as designed.

Colour primitives

The raw palette. Neutrals are black and white at fixed opacities, so one token reads correctly on any surface. Components never use these directly; they use the semantic colours below.

  • Brand/Primary#3d7ffftemplate #00ff88
  • Brand/Primary Hover#2f6be0template #00d873
  • Black/100#0a0d0b
  • White/100#ffffff
  • Black/70#0a0d0b · 70%
  • White/70#ffffff · 70%
  • Black/50#0a0d0b · 50%
  • White/50#ffffff · 50%
  • Black/16#0a0d0b · 16%
  • White/16#ffffff · 16%
  • Black/10#0a0d0b · 10%
  • White/10#ffffff · 10%
  • Black/08#0a0d0b · 8%
  • White/08#ffffff · 8%
  • Black/04#0a0d0b · 4%
  • White/04#ffffff · 4%
  • Accent/Star#ffb800
  • Brand/Accent#3d7ffftemplate #00ff88
  • Brand/On Primary#0a0d0b
  • Neutral/Tint#f4f4f1
  • Brand/Primary Subtle#3d7fff · 20%template #00ff88 · 20%

Semantic colours in every mode

48 colours, each defined in all 5 modes. A section picks a mode; every component inside follows. Wireframe is for wireframing only and never ships. Each cell shows the colour on that mode’s own background, with the primitive it points to.

TokenLightDarkTintBrandWireframe
Background/Primary--background-primaryWhite/100Black/100Neutral/TintBrand/PrimaryWhite/100
Text/Primary--text-primaryBlack/100White/100Black/100Brand/On PrimaryBlack/100
Text/Secondary--text-secondaryBlack/70White/70Black/70Black/70Black/70
Button/Primary/Background--button-primary-backgroundBlack/100White/100Black/100Brand/On PrimaryBlack/100
Button/Primary/Text--button-primary-textWhite/100Black/100White/100White/100White/100
Button/Primary/Background Hover--button-primary-background-hoverBlack/70White/70Black/70Black/70Black/70
Button/Secondary/Border--button-secondary-borderBlack/100White/100Black/100Brand/On PrimaryBlack/100
Button/Secondary/Text--button-secondary-textBlack/100White/100Black/100Brand/On PrimaryBlack/100
Button/Secondary/Background Hover--button-secondary-background-hoverBlack/08White/08Black/08Black/08Black/08
Background/Secondary--background-secondaryBlack/04White/04White/100White/16Black/04
Text/Tertiary--text-tertiaryBlack/50White/50Black/50Black/50Black/50
Border/Primary--border-primaryBlack/16White/16Black/16Black/16Black/16
Border/Secondary--border-secondaryBlack/08White/08Black/08Black/08Black/08
Button/Primary/Icon--button-primary-iconWhite/100Black/100White/100White/100White/100
Button/Primary/Icon Background--button-primary-icon-backgroundWhite/16Black/10White/16White/16White/16
Button/Secondary/Icon--button-secondary-iconBlack/100White/100Black/100Brand/On PrimaryBlack/100
Button/Secondary/Icon Background--button-secondary-icon-backgroundBlack/10White/10Black/10Black/10Black/10
Tagline/Text--tagline-textBlack/100White/100Black/100Brand/On PrimaryBlack/100
Tagline/Background--tagline-backgroundBlack/04White/08Black/04Black/04Black/04
Tagline/Border--tagline-borderBlack/08White/16Black/08Black/08Black/08
Rating/Star--rating-starAccent/StarAccent/StarAccent/StarAccent/StarBlack/50
Rating/Text--rating-textBlack/100White/100Black/100Brand/On PrimaryBlack/100
Rating/Background--rating-backgroundWhite/100White/04White/100White/100White/100
Rating/Border--rating-borderBlack/16White/16Black/16Black/16Black/16
Bullet/Icon--bullet-iconBlack/100White/100Black/100Brand/On PrimaryBlack/100
Bullet/Icon Background--bullet-icon-backgroundBlack/08White/10Black/08Black/08Black/08
Bullet/Text--bullet-textBlack/70White/70Black/70Black/70Black/70
Input/Background--input-backgroundWhite/100White/04White/100White/100White/100
Input/Border--input-borderBlack/16White/16Black/16Black/16Black/16
Input/Placeholder--input-placeholderBlack/50White/50Black/50Black/50Black/50
Media/Background--media-backgroundBlack/08White/08Black/08Black/08Black/08
Media/Icon--media-iconBlack/16White/16Black/16Black/16Black/16
Logo/Fill--logo-fillBlack/50White/50Black/50Black/50Black/50
Tabs/Background--tabs-backgroundBlack/04White/04White/100Black/04Black/04
Tabs/Text--tabs-textBlack/70White/70Black/70Black/70Black/70
Tabs/Active Background--tabs-active-backgroundBlack/100White/100Black/100Black/100Black/100
Tabs/Active Text--tabs-active-textWhite/100Black/100White/100White/100White/100
Icon/Primary--icon-primaryBlack/100White/100Black/100Brand/On PrimaryBlack/100
Button/Link/Text--button-link-textBlack/100White/100Black/100Brand/On PrimaryBlack/100
Button/Link/Text Hover--button-link-text-hoverBlack/70White/70Black/70Black/70Black/70
Card/Background--card-backgroundBlack/04White/08White/100White/16Black/04
Card/Border--card-borderBlack/08White/16Black/08Black/08Black/08
Icon/Background--icon-backgroundBlack/08White/10Black/08Black/08Black/08
Highlight/Background--highlight-backgroundBlack/100White/100Black/100Brand/On PrimaryBlack/100
Text/AccentBrand/AccentBrand/AccentBrand/AccentBrand/On PrimaryBlack/100
Graphic/PrimaryBrand/PrimaryBrand/PrimaryBrand/PrimaryWhite/16Black/16
Graphic/SecondaryBrand/AccentBrand/AccentBrand/AccentBrand/AccentBlack/10
Badge/BackgroundBrand/Primary SubtleBrand/Primary SubtleBrand/Primary SubtleBrand/Primary SubtleBlack/08

Typography

Schibsted Grotesk Medium for headings, Inter Regular and Medium for text. Sizes have a Desktop and a Mobile value; samples below scale fluidly between the 390 and 1280 frames, so resize the window to see both.

StyleSampleMobile → desktopLine height, tracking
Heading/H1Aa Gg40 → 561.1 · -3%
Heading/H2Aa Gg32 → 481.1 · -3%
Heading/H3Aa Gg28 → 401.1 · -2%
Heading/H4Aa Gg24 → 321.1 · -2%
Heading/H5Aa Gg20 → 241.1 · -2%
Heading/H6Aa Gg18 → 201.1 · -2%
Text/XL/RegularThe quick brown fox18 → 201.5 · 0%
Text/XL/MediumThe quick brown fox18 → 201.5 · 0%
Text/L/RegularThe quick brown fox16 → 181.5 · 0%
Text/L/MediumThe quick brown fox16 → 181.5 · 0%
Text/M/RegularThe quick brown fox15 → 161.5 · 0%
Text/M/MediumThe quick brown fox15 → 161.5 · 0%
Text/S/RegularThe quick brown fox13 → 141.5 · 0%
Text/S/MediumThe quick brown fox13 → 141.5 · 0%

Radius

A scale with a desktop and a mobile value, plus three semantic radii that point at it.

  • Scale/None0 → 0
  • Scale/XS4 → 4
  • Scale/S4 → 8
  • Scale/M8 → 12
  • Scale/L12 → 16
  • Scale/XL16 → 20
  • Scale/2XL20 → 24
  • Scale/3XL24 → 32
  • Scale/Round999 → 999
  • Button4 → 8Scale/S
  • Image8 → 12Scale/M
  • Card12 → 16Scale/L

Spacing and layout

Each bar pair shows the mobile value (light) and the desktop value (solid) in pixels. The scale comes first, then the semantic spacing that points at it.

  • Scale/00 → 0
  • Scale/44 → 4
  • Scale/88 → 8
  • Scale/128 → 12
  • Scale/1612 → 16
  • Scale/2016 → 20
  • Scale/2420 → 24
  • Scale/3224 → 32
  • Scale/4032 → 40
  • Scale/4840 → 48
  • Scale/5640 → 56
  • Scale/6440 → 64
  • Scale/8040 → 80
  • Scale/9640 → 96
  • Scale/11240 → 112
  • Button/Padding XScale/2016 → 20
  • Button/Padding YScale/128 → 12
  • Section/Padding LScale/11240 → 112
  • Section/Content GapScale/2420 → 24
  • Section/Padding MScale/8040 → 80
  • Section/Padding SScale/4840 → 48
Container 1280 px

Desktop frame: content max width 1280 px with 80 px side padding. Mobile frame: 390 px wide with 20 px side padding.

Shadows

Three elevation steps, each two layered shadows.

  • Shadow/S0px 1px 2px 0px rgba(13,13,20,0.06), 0px 2px 8px 0px rgba(13,13,20,0.06)
  • Shadow/M0px 4px 12px 0px rgba(13,13,20,0.08), 0px 12px 32px 0px rgba(13,13,20,0.08)
  • Shadow/L0px 8px 24px 0px rgba(13,13,20,0.1), 0px 24px 64px 0px rgba(13,13,20,0.14)

Every screen

Every width, every browser, every input method, and motion that never costs speed or access.

Every breakpoint, every corner

Components respond to the space they actually have, not the screen. Ranges are container queries, desktop first, as the team designs.

Extra smallbelow 27em
Smallbelow 42em
Mediumbelow 53em
Largedefault

Every page is checked at these widths, plus a sweep from 320 to 1920 in steps of 10 px that fails on any sideways scroll. Dark chips are the Figma frames.

  • 320
  • 360
  • 375
  • 390
  • 414
  • 430
  • 480
  • 540
  • 600
  • 640
  • 720
  • 768
  • 820
  • 834
  • 900
  • 992
  • 1024
  • 1080
  • 1180
  • 1280
  • 1366
  • 1440
  • 1536
  • 1680
  • 1920
  • 2560

Then the corners: phone landscape, foldables, ultra-wide, short screens, 200% and 400% zoom, text spacing overrides, the longest German heading, empty content, touch and keyboard, dark mode, forced colours, reduced motion, print, right-to-left and notches.

Every browser, never broken

The latest two versions of Chrome, Edge, Firefox, Safari on Mac and iOS, Samsung Internet and Chrome on Android, checked on a real iPhone, Android phone and iPad. Newer features sit behind @supports and fall back to a working, static page.

Known quirkThe Creogen answer
100vh on phonessvh and dvh units for full-height sections
Sticky inside overflow hiddenoverflow: clip on ancestors
iOS zooms small inputsForm fields at least 16 px on touch
iOS autoplaymuted playsinline with a poster
Scroll-driven motion, view transitions, text trimBehind @supports; the fallback is the finished state
Fonts render differentlyMetric-matched fallbacks, so swapping causes no shift

Motion that feels expensive and costs nothing

Only transform, opacity, filter and clip-path move. Content is visible without JavaScript. Everything stops under reduced motion. Press each tile to feel the token.

Found and fast

What search engines and answer engines reward, and the budgets every page is held to.

Budgets, checked on every preview

Bars show how much of each lab budget a typical Creogen page uses. Our targets are stricter than Google’s “good” thresholds.

  • Largest paint≤ 1.2 s
  • Layout shift0.00
  • Blocking time≤ 50 ms
  • Homepage JS≤ 15 kB
  • Homepage weight≤ 500 kB
  • Lighthouse100 × 4
  • axe violations0

How the agent takes calls

Rules say what is right. Judgment says what to do when the rules run out, the way the lead developer would, and it gets sharper every time a human corrects it.

Every call has one of four outcomes

Before acting on anything the rules do not fully settle, the agent sorts the call. When unsure, it takes the stricter row.

  1. NeverAnything that touches a live site, published pages, production CMS, DNS, live forms or real customer data. Even reading happens only when asked. The one exception is an explicit instruction in the conversation that names the site and the action.
  2. Ask firstOne-way doors: slugs, CMS schema that already holds content, deletions, redirects, published copy, brand or numbers Figma did not specify, and anything that conflicts with a dev note or the plan.
  3. Decide and flagReversible and inside the rules, but with no default or precedent. The agent does it, logs it as pending, and lists it at the top of the hand-off.
  4. DecideReversible, inside the rules, and covered by a standing call or a logged precedent. The agent does it and notes it.
Law 0. Live sites are read-only. No edit, publish, CMS write, asset or schema change on production, and agents never publish. Work happens on staging or a branch; a human ships it.

When rules pull against each other

The higher one always wins. If a higher priority blocks the design, the design changes through a question, never silently.

  1. Safety of live sites and client data
  2. Accessibility and legalWCAG AA, GDPR, imprint, consent
  3. What the designer meantFigma, dev notes, the approved plan
  4. Reuse and consistencyReuse ladder, axes, tokens
  5. Performance
  6. Search and LLM visibility
  7. Polish

Precedent before a new decision

The agent searches in this order and follows the first match, even if it would have chosen differently. Disagreement goes to the retro, not into the build.

  1. This project’s decision logdecisions.md
  2. Standing calls29 defaults, below
  3. Gold examplesSections you approved
  4. Framework rulesThe references

Standing calls

How the recurring questions are decided. Each is the call and its reason. A project can override one in its decision log; new ones arrive only through the retro.

Live systems and safety4 calls
  • Live sites are read-only. No edits, publishes, CMS writes, asset changes or schema changes on a production site, ever, unless the person names that site and that action in the current conversation. Reason: one wrong call costs a client’s revenue and trust; nothing in a build is worth that risk.
  • Reading a live site happens only when asked. Use staging, a branch, a duplicate or Figma for study instead.
  • Work happens on staging or a branch; a human publishes. Agents never publish to production domains.
  • Never delete; archive or unpublish, and only on staging. Deletion is a one-way door.
Structure6 calls
  • CMS when content repeats on 2+ pages, editors will change it, it needs its own URL, it is filtered or sorted, or it carries numbers that must agree everywhere. Otherwise local props.
  • Reusable block when the same section with the same content appears on 3+ pages; overrides for the parts that differ.
  • Global when it is identical everywhere and has no props (nav, footer, banner).
  • A new variant only when structure is ≥ 70 % shared and the purpose is the same; otherwise a new component, through approval.
  • Slots over props when the inner content varies in kind (a form here, an image there); props when only values vary.
  • One component per job: a Clickable for whole-card links, never nested anchors.
Content and copy4 calls
  • Never invent copy, numbers, ratings, logos or testimonials. Missing content gets a clearly marked placeholder and a question.
  • Keep the site’s language and address form (German "Du" vs "Sie" follows the existing site); never mix.
  • Slugs: lowercase, hyphens, transliterate umlauts (ä → ae), no stop-word stuffing, never change a live slug without a redirect plan approved by a human.
  • Headings follow the outline, not the look; one h1.
Design fidelity4 calls
  • Snap within 2 px or one step; beyond that ask. Record every snap.
  • A missing frame (no tablet design): derive from the nearest frames with the axes; flag it.
  • A missing state (hover, focus, empty, error): use the component’s standard state; flag it.
  • A one-off value repeated 3 times in Figma is a missing token, not three exceptions.
Media3 calls
  • Images: AVIF with WebP fallback, sized to the largest rendered width × 2, alt text drafted from context and flagged for review; decorative images get empty alt.
  • Video: muted, playsinline, poster always, no autoplay above the fold on mobile data.
  • Icons: SVG, currentColor, size from the icon axis.
Forms and tracking2 calls
  • Forms: real labels, native validation plus clear messages, consent checkbox only when legally required, success and error states always built.
  • Tracking: nothing fires before consent; event names follow the analytics contract; never change a live tag container.
Performance and SEO3 calls
  • No library for something CSS can do. No JS for layout.
  • Every page: title, description, canonical, OG image, JSON-LD graph; missing values become questions, not guesses.
  • Third-party embeds load on interaction or below the fold.
Process3 calls
  • Tracer section first, then easy sections, then hard ones.
  • Ask in batches, never block on an answer.
  • When two defaults conflict, the priority order in SKILL.md §2 decides; record the call.

Every non-obvious call is written down

One entry per call in the project’s decisions.md. States: decided, pending, asked, approved, overridden.

## D-014 · 2026-11-12 · decided · reversible
Call: FAQ items stored as a collection, not local props
Why: same questions on pricing and product pages (rule of three met)
Alternatives: local props per page (rejected: duplicate edits)
Owner: agent · Review: lead dev

Questions go out in one message, all open calls together, each with options and a recommended answer, so a single “yes” approves it. The agent keeps building everything that does not depend on the answer.

How it learns your judgment

Rules alone make a careful developer. Your corrections and your finished work make it build like you.

  1. You override a callThe log marks it overridden.
  2. /creogen-retroTurns it into a standing call or a rule edit.
  3. A test case is addedThe same miss can never pass again.
  4. Next projectThe agent follows the new precedent.

Gold examples with /creogen-capture

After you approve a section, capture it: the Figma frame, what was built, the components and axes chosen, where the content lives, and one line on why for every non-obvious choice, including the ones that look wrong but are right. Agents copy what they see, so these teach more than any rule. Capture only reads Figma, staging, a branch or a repo, never a live site.

Reference

The skills you type, the ones that load themselves, and the shared words they use.

The skills

Typed by a person

/ask-creogen
Points to the right skill when you’re unsure.
/creogen-setup
Configures a new project once.
/creogen-grill
Settles every open design question.
/creogen-plan
Turns a Figma page into an approved section plan.
/creogen-build
Builds the plan, section by section, red to green.
/creogen-review
Framework and Figma, reviewed side by side.
/creogen-ship
QA, client QA, launch.
/creogen-handoff
Passes work on without losing anything.
/creogen-retro
Improves the framework from what hurt.
/creogen-capture
Turns an approved section into a gold example.

Loaded when needed

creogen-framework
The laws and 17 reference files: tokens, components, CMS, motion, media, search, quality, checklist.
creogen-search
SEO, AEO, GEO, AIO and pSEO on any page.
creogen-quality
Performance, accessibility, every browser, every breakpoint.
creogen-judgment
How to take calls, standing calls and the decision log.

Shared language

One word, one meaning, for people and agents alike.

Frame
A Figma artboard width; values are exact there.
Snap
Use the nearest token within 2 px and record it. Beyond that, ask.
Recipe
A saved section composition with defaults.
Variant
A different look or layout of the same component.
Home
Collection, global, reusable block or local.
Override
An optional field on a shared block; empty means shared.
Look and tag
How a heading looks versus its level in the outline.
Dev note
Any Figma annotation. Binding; conflicts become questions.
Tracer section
The first section built end to end to prove the pipeline.
Call
A decision the rules do not fully settle: decide, decide and flag, ask first, or never.
One-way door
A change that cannot be cleanly undone once seen. Always asked first.
Gold example
An approved section with the reason behind every non-obvious call.
Gate
An automated check. Floor gates block the release.