build-ui
Skill213 starsChanged 2 months agoMITView on GitHub
MUST READ before building or styling any TouchDesigner panel UI (dialog, wizard, HUD, control panel, buttons, text): design tokens, layout rules, component recipes, and the OP Viewer TOP verification loop. Mechanics (which panel COMP, single-window, click handling) are in td-ui-mechanics.md beside it.
8 other projects use a version of this.
Adopted by
Most recently taken up by
- decentraland/sdk-skillstheir own version, first seen Oct 25, 2026
- NVIDIA/kumo-enginetheir own version, first seen Oct 20, 2026
- uxkin/agenttheir own version, first seen Oct 17, 2026
- Moyo-Made/atelier-storetheir own version, first seen Oct 17, 2026
- ItamarZand88/design-skillstheir own version, first seen Oct 13, 2026
- adrianhajdin/atelier-storetheir own version, first seen Sep 21, 2026
Used with
Projects with it also use create-auth and better-auth-best-practices.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
wdchenxyzSkillcreate-auth
Scaffold and implement authentication in TypeScript/JavaScript apps using Better Auth. Detect frameworks, configure database adapters, set up route handlers, add OAuth providers, and create auth UI pages. Use when users want to add login, sign-up, or authentication to a new or existing project with Better Auth.
Also in 3 projects that use this
anasahmed07Skillbetter-auth-best-practices
Skill for integrating Better Auth - the comprehensive TypeScript authentication framework.
Also in 3 projects that use this
Other versions8 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 8
- NVIDIA/kumo-engine★ 50same name
- adrianhajdin/atelier-store★ 16same name
- adrianhajdin/atelier-store-★ 16same name
- ItamarZand88/design-skills★ 8same name
- uxkin/agent★ 8same name
- decentraland/sdk-skills★ 4same name
- ltatarev/skills★ 0same name
- Moyo-Made/atelier-store★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository30 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- web/llms-full.txtllms.txt
- web/llms.txtllms.txt
- add-mcp-toolSkill
- agent-testsSkill
- briefSkill
- collabSkill
- create-extensionSkill
- create-operatorSkill
- debug-operatorSkill
- externalize-operatorSkill
- glsl-shadersSkill
- manage-annotationsSkill
- mcp-tools-referenceSkill
- merge-divergent-toxSkill
- movie-exportSkill
- multi-instanceSkill
- multi-session-etiquetteSkill
- operator-gotchasSkill
- parameter-designSkill
- pop-networksSkill
- publish-specimenSkill
- releaseSkill
- run-testsSkill
- specimen-authoringSkill
- td-api-referenceSkill
- td-recoverySkill
- testingSkill
- visual-aestheticsSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 4 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 8 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 15
small set of tokens applied consistently: Never pick a size, color, or gap ad hoc.
- Distinctive: line 47
If two things are the same role, they are the same size.
- Distinctive: line 117
If you find yourself guessing from the user's screenshots instead of your own captures, you have skipped this step - stop and add the OP …
- Distinctive: line 132
No visual difference between the primary and secondary action.
“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Build UI - visual design system for TouchDesigner panels
Load BEFORE building or restyling any TD panel UI (dialogs, wizards, HUDs,
control surfaces). This is the design layer; td-ui-mechanics.md (in this skill directory) is the mechanics
(which COMP to use, single-window, etc.). A panel is not done until a captured
frame / live window proves it reads cleanly.
The failure this prevents: font sizes all over the place, giant buttons, no padding, no alignment, no hierarchy, low contrast - "novice" UI. The cure is a small set of tokens applied consistently. Never pick a size, color, or gap ad hoc; pull it from the scales below.
1. Design tokens (dark theme - TD colors are 0..1 floats)
Color - a restrained palette. More colors != better; use opacity/size for hierarchy, accent only for the primary action.
| Token | RGB (0..1) | Use |
bg | 0.11, 0.12, 0.115 | window / panel background |
surface | 0.16, 0.17, 0.165 | cards, secondary buttons, input fields |
surface-hi | 0.21, 0.22, 0.215 | hover / pressed |
border | 0.26, 0.27, 0.265 | dividers, 1px outlines |
text | 0.92, 0.92, 0.92 | primary text |
text-muted | 0.60, 0.61, 0.60 | secondary / hints / captions |
accent | 0.24, 0.52, 0.35 | PRIMARY / recommended action only |
accent-text | 0.96, 0.98, 0.96 | text on accent |
Rule: exactly one accent element per screen (the primary action). Everything else
is surface/text. Match the host project's existing palette when it has one
(e.g. Embody's tagger dark) instead of inventing.
Type scale - 3-4 sizes, never more. fontsizex on a Text COMP:
| Role | size | color |
| Title / H1 | 20 | text |
| Section / H2 | 15 | text |
| Body / label | 12 | text |
| Caption / hint | 11 | text-muted |
If two things are the same role, they are the same size. Establish hierarchy with size + color, not five random sizes.
Spacing - a 4px grid. Every gap, pad, and size is one of these: 4, 8, 12, 16, 24, 32. No arbitrary values.
| Token | px | Use |
pad-edge | 24 | panel inner padding from every edge |
gap-section | 16 | between title / body / actions |
gap-item | 8-12 | between sibling items in a group |
btn-h | 32 | button height (NEVER a full-height band) |
btn-pad-x | 16 | horizontal padding inside a button |
2. Layout rules
- Padding first. Content never touches the panel edge. Inset all content by
pad-edge(24). In TD: put content in an inner container smaller than the outer by 2xpad on each axis, or use align margins - the outerbgshowing around it IS the padding. - Left-align body text and lists. Center ONLY short titles and button captions. Never center a multi-line sentence - it looks broken.
- Constrain width + wrap. A Text COMP must have a width and
wordwrapon so text wraps inside the panel instead of running off the edge. Long line length hurts readability - keep body under ~60 chars per line. - Align to a single left edge. Title, body, and controls share one left margin. Ragged left edges read as broken.
- Buttons are modest.
btn-h= 32, width = content + 2xbtn-pad-x, or equal columns with agap-itembetween. A button must NEVER fill a whole row's height - that's the #1 tell of novice TD UI. - Explicit vertical order. With a
verttbcontainer, children stack in panel order; confirm the title ends up on TOP, not the bottom. Verify, don't assume.
3. Hierarchy, contrast, rhythm
- Hierarchy: one clear focal point (the title or the primary action), then supporting text, then hints. Drive it with size + color, not boxes everywhere.
- Contrast:
textonbgfor anything readable;text-mutedonly for genuinely secondary info. The primary/recommended button usesaccent; the alternative usessurface. This makes the recommended path obvious at a glance. - Rhythm: consistent gaps. Equal spacing between peers; a larger gap
(
gap-section) separates groups. Inconsistent spacing looks accidental. - Restraint: flat surfaces, one accent, generous space. Do not add borders, gradients, or colors "to fill space" - space IS the design.
4. Component recipes
- Dialog / wizard step: outer
bgcontainer -> inner content container inset bypad-edge-> [Title 20] -gap-section- [Body 12, left-aligned, wrapped] -gap-section- [action row]. Action row = right-aligned buttons,gap-itemapart,btn-htall; primary =accent, secondary =surface. - Button: Button COMP (
surfaceoraccentbg) + a Text COMP child caption (size 12, centered,text/accent-text). Heightbtn-h. Never a bare Button (shows "Button") and never a Text TOP (seetd-ui-mechanics.md). - One decision per screen (wizards): a short title, one question, 2-3 clear options; the recommended one is the accent button. Don't crowd a screen.
5. Process (do this, don't eyeball it)
- Pick tokens up front - the exact sizes/colors/gaps you'll use, from section 1.
- Lay out on the grid - compute positions/sizes from the spacing scale; put
content inside the
pad-edgeinset. - Clone, don't reinvent - copy a working widget from the host project (Embody's tagger) so styling/caption/callback come for free.
- Verify visually with a temporary OP Viewer TOP - never build panel UI
blind. You CANNOT
capture_topa panel COMP directly, but you CAN point a temporary OP Viewer TOP (opviewerTOP, set.par.op= the panel COMP) at it andcapture_topTHAT to see exactly how the panel renders. Do this after EVERY change and CHECK: type scale consistent? one accent? padding on every edge? left edges aligned? nothing overflowing or cropped? title on top? If you find yourself guessing from the user's screenshots instead of your own captures, you have skipped this step - stop and add the OP Viewer. - Iterate against the checklist, not vibes - re-capture the OP Viewer after each tweak until it passes.
- Remove the probe when done. Once the UI is right and the user approves, delete the temporary OP Viewer TOP. It is a build-time verification tool, not part of the shipped UI.
Anti-patterns (the exact mistakes to never ship)
- Text running off the panel edge (no width / no
wordwrap). - Buttons that fill a whole row's height, or differ in height from each other.
- More than ~4 font sizes; the same role at different sizes.
- Centered multi-line body text; ragged left edges.
- Zero padding - content flush to the window frame.
- No visual difference between the primary and secondary action.
- Using a Text TOP for panel text (renders scaled/blurry - use a Text COMP).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

