Specification
Skill ID
nexu-io/open-design/design-brief
Publisher
nexu-io
Repository
open-design
Installs
0
Files
2
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

nexu-io/open-design/design-briefInstalls these files
  • SKILL.md
  • open-design.json

What this skill tells the agent

Design Brief Skill

Parse a structured design brief into a concrete DESIGN.md and optional visual preview. Agent, follow this workflow exactly.

Background

The 8 dimensions in this skill were derived from OpenDesign's original 71-system catalog; 71 is the research sample, not the current bundled-system count. Every DESIGN.md in design-systems/ still resolves at minimum: color palette, accent, typography, display font, layout model, and component style. We distilled these into 8 orthogonal dimensions that cover the decisions a designer makes before any pixel is placed. Mood and density were added because they are the two most common sources of ambiguity in natural language briefs ("make it clean" means different things to different people).

Dimensions intentionally excluded from the brief level: animation timing, responsive strategy, and accessibility contrast. These are enforced at the template level by individual skills (e.g., saas-landing handles its own responsive logic), though the generated DESIGN.md includes sensible breakpoint defaults for downstream consumption.

1. Accept input

The user provides a design brief in one of two formats:

Option A: I-Lang structured brief

[PLAN:@DESIGN|type=saas_landing]
  |palette=navy_and_white|accent=coral
  |typography=inter|display=space_grotesk
  |layout=single_column|max_width=1200px
  |mood=professional_minimal
  |density=spacious|section_gap=96px
  |hero=headline+subhead+cta
  |sections=features,pricing,testimonials,footer
  |exclude=animations,parallax,gradients
  |responsive=mobile_first

Option B: Natural language

"I need a landing page for a developer tool. Clean, minimal, dark mode. Inter font. No flashy animations."

If the user provides Option B, convert it to the structured format using the mapping table below, then proceed. Identify every dimension explicitly stated and flag dimensions that were left unspecified.

Natural language → I-Lang mapping

For each sentence in the natural language input, identify dimension keywords and map to the closest structured value:

Natural language phraseDimensionI-Lang value
"dark mode", "dark theme"palettemonochrome_dark
"light", "white background"palettelight_clean
"earthy", "warm tones"paletteearth_tones
"pop of color", "vibrant"accentelectric_blue (default) or coral
"subtle accent"accentmuted_sage (default) or slate
"clean", "minimal", "simple"moodprofessional_minimal
"playful", "fun", "friendly"moodplayful
"bold", "brutalist", "raw"moodbrutalist
"editorial", "magazine-like"moodeditorial
"spacious", "lots of whitespace"densityspacious
"compact", "dense", "information-rich"densitycompact
"Inter", "system font"typographyinter (default) or system_ui
"serif", "traditional"typographygeorgia (default) or playfair
"monospace", "code-like"typographyjetbrains_mono
"no animations", "static"excludeanimations
"no gradients"excludegradients
"no stock photos"excludestock_photos
"single page"layoutsingle_column
"two columns", "sidebar"layouttwo_column
"mobile first"responsivemobile_first

When a phrase maps to multiple dimensions (e.g. "clean dark landing page" → mood=professional_minimal + palette=monochrome_dark + layout=single_column), resolve each dimension independently. When multiple values are listed for a single mapping, the first is the default; the agent may select the alternative only if surrounding context strongly favors it.

2. Validate dimensions

Every design brief must resolve these 8 dimensions. If any are missing from the input, select sensible defaults using the rules in Section 2.2.

The values listed below form a closed vocabulary. Only values in this table have concrete token mappings in Section 2.1. If the user provides a value not listed here, the agent must prompt for clarification rather than guessing.

#DimensionKeyExample values
1Color palettepalettenavy_and_white, earth_tones, monochrome_dark, light_clean
2Accent coloraccentcoral, electric_blue, emerald, muted_sage
3Body typographytypographyinter, system_ui, dm_sans, georgia
4Display typographydisplayspace_grotesk, clash_display, same_as_body, playfair
5Layout modellayoutsingle_column, two_column, asymmetric
6Moodmoodprofessional_minimal, playful, brutalist, editorial
7Densitydensitycompact, balanced, spacious
8Constraintsexcludeanimations, gradients, stock_photos, carousel

2.1 Symbolic → concrete token resolution

Each symbolic value maps to concrete design tokens. The agent must resolve these before writing DESIGN.md:

Symbolic valueConcrete tokens
palette=navy_and_whiteBackground: #0F172A, Surface: #1E293B, Text: #F8FAFC, Secondary: #94A3B8
palette=monochrome_darkBackground: #09090B, Surface: #18181B, Text: #FAFAFA, Secondary: #A1A1AA
palette=light_cleanBackground: #FFFFFF, Surface: #F8FAFC, Text: #0F172A, Secondary: #64748B
palette=earth_tonesBackground: #FFFBEB, Surface: #FEF3C7, Text: #451A03, Secondary: #92400E
accent=coralAccent: #F97316, Hover: #EA580C
accent=electric_blueAccent: #3B82F6, Hover: #2563EB
accent=emeraldAccent: #10B981, Hover: #059669
accent=muted_sageAccent: #84A98C, Hover: #6B8F73
accent=slateAccent: #64748B, Hover: #475569
typography=interBody: Inter, 400, 1rem/1.6
typography=system_uiBody: system-ui, 400, 1rem/1.6
typography=dm_sansBody: DM Sans, 400, 1rem/1.6
typography=georgiaBody: Georgia, 400, 1.125rem/1.7
display=space_groteskDisplay: Space Grotesk, 700, clamp(2rem, 5vw, 3.5rem)
display=clash_displayDisplay: Clash Display, 700, clamp(2rem, 5vw, 3.5rem)
display=playfairDisplay: Playfair Display, 700, clamp(2rem, 5vw, 3.5rem)
display=same_as_bodyDisplay inherits body font family, weight 600
density=compactSection spacing: 48px, Content padding: 16px/24px
density=balancedSection spacing: 72px, Content padding: 24px/40px
density=spaciousSection spacing: 96px, Content padding: 24px/48px

Symbolic values not in this table are not valid. If the user provides an unrecognized value (e.g., palette=ocean_blue), the agent must prompt for clarification: "I don't recognize palette=ocean_blue. Did you mean navy_and_white, monochrome_dark, light_clean, or earth_tones?"

2.2 Default resolution rules

When a dimension is unspecified, defaults are selected based on mood compatibility:

Unspecified dimensionDefault rule
paletteIf mood=editorial → light_clean. If mood=brutalist → monochrome_dark. Otherwise → light_clean.
accentIf palette is dark → coral. If palette is light → electric_blue.
typographyAlways → inter (highest cross-platform legibility).
displayIf mood=editorial → playfair. If mood=brutalist → space_grotesk. Otherwise → same_as_body.
layoutAlways → single_column (safest responsive default).
moodAlways → professional_minimal (least opinionated).
densityAlways → balanced.
excludeAlways → none (no constraints unless specified).

If mood is also unspecified, all defaults fall back to the safe neutral set: palette=light_clean, accent=electric_blue, typography=inter, display=same_as_body, layout=single_column, mood=professional_minimal, density=balanced, exclude=none.

3. Generate DESIGN.md

Use this skill in a project

Open any RiverX project, search the Skills panel for nexu-io/open-design/design-brief, and install it in one click.

Use this skill