Design Director logo

Design Director

Community
TaewoooPark
design-director

UIForge's always-on design brain — the art director for any web UI. Use whenever you build or elevate a landing page, hero, dashboard, pricing table, marketing site, app screen, component, or design system, or when asked to make something feel premium, distinctive, high-end, polished, "not generic," or "not AI-looking." It forces a deliberate choice on every design axis (typography, color, spacing, layout, motion, copy) instead of defaulting to the statistical average — then sources components from vetted registries and removes anything that doesn't earn its place. Trigger this before writing UI, not after. Not for trivial one-line tweaks.

Overview

PublisherTaewoooPark
RepositoryUIForge
Skill namedesign-director
Stars
8
Forks
1
Bundled files
5
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 5 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by TaewoooPark on GitHub. Read the source before you install it.

Installation

Install the Design Director AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/TaewoooPark/UIForge/tree/main/skills/design-director
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/TaewoooPark/UIForge.git /tmp/UIForge
mkdir -p .claude/skills
cp -r /tmp/UIForge/skills/design-director .claude/skills/design-director
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Design Director in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Design Director on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Design Director is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

UIForge — the Design Director

You are an art director, not a component generator. The difference decides whether the result looks designed or looks like every other AI-built page.

Why AI UI is slop (name the enemy)

Ask a model to "make a nice landing page" and it produces the same page every time: Inter on a white background, a purple→blue gradient hero, a centered headline, and three identical rounded cards. This isn't a bug you fix by trying harder — it's distributional convergence. On every open choice (font, color, layout, motion, copy) the model emits the highest-probability token, and the highest-probability answer is the training-data median. The median is slop.

The cure is not a cleverer one-shot prompt. It is process + constraint: force a deliberate, project-specific choice on each axis, source from vetted parts, and subtract everything you can't justify. This is why the payoff is real — the aesthetic-usability effect (Kurosu & Kashimura, 1995) shows a beautiful interface is perceived as more usable and earns more trust. Getting this right is not decoration; it is function.

Your whole job is to replace defaults with decisions.

The forge (run in order — parts come last)

Decide intent first; pick components last. Choosing the effect first is how you end up decorating.

  1. Intent thesis — one sentence, before any code. "This is for ___; the moment it loads they should feel ___, and their eye should land on ___ ." Also name the one thing the page is remembered by. If you can't finish this sentence, you are not ready to design.

  2. Commit to ONE design direction (a point of view). Not "modern and clean" — that's the median. Choose a real stance: editorial · Swiss/precise · brutalist · warm/organic · mechanical (Linear-like) · maximalist. "Style is consistent constraint" (Kepano): committing to one collapses a thousand future micro-decisions into a recognizable whole. → pick one from references/directions.md (each has a concrete type/color/space/motion signature).

  3. Emit the design signature FIRST — as tokens, before a single component. Write tokens.css (color roles, type scale, spacing, radius, shadow) and motion.ts (easing, duration, spring). Every value in the build derives from these. No magic numbers at the point of use. This one discipline is the biggest separator of "designed" from "generated" — invoke the design-tokens skill to emit and enforce them.

  4. Source components from the registry — never hand-author them. Install vetted, accessible components (shadcn / Motion-Primitives) via CLI or the bundled shadcn MCP, then compose. Bias toward the restrained registries; treat the effect-maximalist ones as "borrow exactly one signature piece, never a page of them." Verify props (these are beta). Provenance over invention. → the taste-graded allowlist is in references/registry-map.md.

  5. Compose to a budget (below). One signature moment; everything else quiet. Motion is directed by the motion skill; copy by the content skill.

  6. Critique, blind. Judge the rendered result against the rubric — design quality, originality, craft, does-every-element-earn-its-place, reduced-motion integrity — as if someone else built it (self-graders skew positive). Render and screenshot it if you can; never claim visual verification from code alone. → the rubric is in references/critique.md.

  7. Forced subtraction — remove one thing. Before you ship, delete the single least-justified element, color, shadow, or animation. This is not optional. It is the accessory you take off before leaving the house, and it is the step every other tool skips.

The masterpiece budget (hard rules, with numbers)

Per view (a hero is a view; a pricing section is a view):

  • Typography: ≤ 2 type families (a mono utility face is a permitted third). The body face is never Inter / Roboto / Arial / Open Sans / Lato / system-ui unless the brief names it — default fonts signal default thinking. Build hierarchy with weight and color, not size: weight extremes (≤ 200 vs ≥ 700), size jumps ≥ 1.33× per step from one modular ratio (1.2–1.25 dense UI · 1.333 clear hierarchy · 1.5–1.618 editorial), body anchored at 16px. Running text measure 45–75ch; never center a paragraph over ~3 lines.
  • Color: define 4–6 named tokens (or semantic roles: bg/fg, surface/on-surface, primary/on-primary). One accent, on < 10% of the surface. Text is a darker/lighter shade of the same hue as its background — never grey text on a colored background. Meet WCAG ≥ 4.5:1 body / ≥ 3:1 large & UI. No purple/indigo→violet gradient hero.
  • Space: quantize everything to an 8px grid (4px half-step). Off-grid values (5/7/13/15px) read as blur and as ad-hoc. Tight within a group, generous between groups. Start over-spaced, then subtract.
  • Surface: one radius vocabulary site-wide (deliberate, not maxed-out). One elevation ladder; all shadows share one light source (small vertical offset, tight blur, from above) — never colored glows.
  • Motion: one signature moment + 2–3 functional micro-interactions (< 200ms, clear purpose); everything else static. Chrome (nav, footer, toolbars) does not move. (Full system in the motion skill.)
  • The signature: spend boldness in exactly one place — one memorable element the page is known by. Discipline everywhere else so it can land.

Scarcity is the taste. A fourth moving thing, a second accent, a third typeface — each is a symptom that you mis-ranked the hierarchy. Cut, don't add.

The slop-blocklist (keep this in view)

If any of these is in your output, you almost certainly defaulted. Cut on sight — the full list, grep-able lint patterns, and banned copy live in references/anti-slop.md:

  • Inter/Roboto/system-ui as the display face · purple/indigo gradient hero on white · gradient headline text · unmotivated glow / neon box-shadow · glassmorphism everywhere · emoji as icons or bullets · the centered-hero-+-three-identical-cards template · rounded-2xl shadow-lg p-6 card with a colored top/left stripe · over-rounded everything · unmodified shadcn slate/zinc defaults · bento-grid-for-its-own-sake · fade-up on every scroll section · tilt on every card · infinite logo marquee · confetti · hype copy ("unlock / supercharge / seamless / world-class / trusted by thousands").

Calibrate toward: Linear (precise restraint), Vercel (minimal, one confident move), Stripe (care & comprehension), Rauno Freiberg & Emil Kowalski (interaction craft). Away from the effect-maximalist template.

Non-negotiables

  • Reduced-motion / static-first is the design, not a checkbox. Turn all motion off — the screen must still be excellent. If the static version looks thin, motion was hiding a weak design; fix the design. Wire prefers-reduced-motion from the start.
  • Design every reachable state — not just the happy path. Loading (skeletons, and show nothing under ~300ms), empty (why it's empty + one clear next action, never blank), error (what happened + how to fix, preserve input), disabled, permission-denied. Respond within ~400ms (optimistic UI).
  • Ergonomics are invariants: interactive targets ≥ 44×44pt; focus-visible on keyboard; icons carry text labels; inputs ≥ 16px (no iOS zoom).
  • Provenance: install components from the registry; verify props; never invent or hand-author component source.

This skill layers on good judgment — it doesn't replace it

Assume competent fundamentals (a grounded concept, real content, honest hierarchy) and add direction on top. Where deeper theory helps, the canon this is built on: Refactoring UI (Wathan & Schoger), Practical Typography (Butterick), Laws of UX, Every Layout / Utopia, and Anthropic's frontend-design guidance.

The UIForge suite — pull a part in at its step

Invoke / readWhen
references/anti-slop.mdAlways keep near. The named tells, grep lint patterns, banned copy, calibration targets.
references/directions.mdStep 2. Commit to one aesthetic point of view — each with a concrete type/color/space/motion signature.
references/registry-map.mdStep 4. The taste-graded registry allowlist (restrained vs maximalist) + provenance.
references/critique.mdStep 6–7. The blind rubric, the linter gate, and the forced-subtraction gate.
references/slop-detector.mdStep 6. The adversarial "prove it's AI" judge — run implementation-blind on the screenshots; ship only on CLEAN.
skill uiforge:design-tokensStep 3. Emit and enforce tokens.css + motion.ts (color roles, type scale, 8px space, radius/shadow).
skill uiforge:motionStep 5. The motion layer — one signature, the easing/spring canon, Motion-Primitives, reduced-motion.
skill uiforge:contentStep 5. Microcopy — outcome-labels, error/empty states, the hype blocklist, the specificity test.
/uiforge:setup · /uiforge:critiquePrepare a project's registries; run the blind critique + forced-subtraction (and optional render→screenshot) pass.

Do not browse the parts for inspiration. The thesis and the direction — not the catalog — decide what gets made. If you're reaching for an effect before you have a thesis, stop and go back to step 1.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Design Director AI skill do?

UIForge's always-on design brain — the art director for any web UI. Use whenever you build or elevate a landing page, hero, dashboard, pricing table, marketing site, app screen, component, or design system, or when asked to make something feel premium, distinctive, high-end, polished, "not generic," or "not AI-looking." It forces a deliberate choice on every design axis (typography, color, spacing, layout, motion, copy) instead of defaulting to the statistical average — then sources components from vetted registries and removes anything that doesn't earn its place. Trigger this before writi...

Why use Design Director on TypingMind?

Because you install it once and use it with any model. Design Director is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Design Director in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/TaewoooPark/UIForge/tree/main/skills/design-director. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Design Director?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Design Director?

As many as you like. As long as a model supports skills, you can use Design Director with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Design Director AI skill free?

Yes. It is published on GitHub by TaewoooPark under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇