Better Design
marvkr/better-design
Build, improve, and review production interfaces with the Better Design MCP.
Design system for the AI Edit Video web dashboard (noti.vn) - the three-step type scale, light/dark color tokens, the component primitives every page must use, Inter font, SVG icons, Shopify Admin…
$ npx skills add notivn/AIEV --skill webui-design -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install notivn/AIEV webui-design --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/notivn/AIEV.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/webui-design .claude/skills/webui-design && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "webui-design" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/webui-design into .claude/skills/webui-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webui-design", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/notivn/AIEV/tree/main/.claude/skills/webui-designType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add notivn/AIEV --skill webui-design -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install notivn/AIEV webui-design --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/notivn/AIEV.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/webui-design .agents/skills/webui-design && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "webui-design" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/webui-design into .agents/skills/webui-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webui-design", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add notivn/AIEV --skill webui-design -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install notivn/AIEV webui-design --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/notivn/AIEV.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/webui-design .cursor/skills/webui-design && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "webui-design" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/webui-design into .cursor/skills/webui-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webui-design", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/notivn/AIEV.git --path .claude/skills/webui-design--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add notivn/AIEV --skill webui-design -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install notivn/AIEV webui-design --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/notivn/AIEV.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/webui-design .gemini/skills/webui-design && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "webui-design" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/webui-design into .gemini/skills/webui-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webui-design", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install notivn/AIEV webui-designInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add notivn/AIEV --skill webui-design -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/notivn/AIEV.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/webui-design .github/skills/webui-design && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "webui-design" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/webui-design into .github/skills/webui-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webui-design", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add notivn/AIEV --skill webui-design -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install notivn/AIEV webui-design --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/notivn/AIEV.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/webui-design .opencode/skills/webui-design && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "webui-design" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/webui-design into .opencode/skills/webui-design/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "webui-design", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
webui-designDesign system for the AI Edit Video web dashboard (noti.vn) - the three-step type scale, light/dark color tokens, the component primitives every page must use, Inter font, SVG icons, Shopify Admin…
Webui Design is an agent skill from notivn/AIEV. Design system for the AI Edit Video web dashboard (noti.vn) - the three-step type scale, light/dark color tokens, the component primitives every page must use, Inter font, SVG icons, Shopify Admin style layout. MUST read before writing or modifying any UI in apps/web.
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Media & Creative, covering Video production, Typography and Design systems. It works with Shopify. The repository describes itself as: Automatic AI video editing. Claude directs HyperFrames (HTML + GSAP motion graphics) and Remotion (timeline assembly) to turn raw footage into a finished MP4 - transcript… The licence is MIT.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1a4c2b0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
nodeFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
noti.vnFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Webui Design loads about 3.5k tokens when it runs. Until then it costs about 70 tokens; SKILL.md has 1,598 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from notivn/AIEV at commit 1a4c2b0, republished under its MIT licence (© notivn). 1,598 words, ~3,507 tokens.
.claude/skills/webui-design/SKILL.md (or your agent's skills folder).The web UI is a monitoring and management dashboard, not a video editor. Aesthetic standard: Shopify Admin - minimal, high information density but still airy, every element has a reason to exist.
Enforcement: cd apps/web && node scripts/check-design-system.mjs. It flags off-scale type sizes, off-rhythm spacing, raw colors, and hand-rolled copies of existing primitives. Run it before you claim a UI change is done.
This is the single rule that decides whether the dashboard reads clean or noisy, so it comes first.
| Class | Size | Role |
|---|---|---|
text-sm | 14px | Content. The default. Descriptions, values, field labels, item names in a list, messages. When in doubt, this one. |
text-meta | 13px | Metadata. Timestamps, ids, counts, the hint under a field, file paths. |
text-xs | 12px | Chrome detail. Only inside badges/chips, table <th>, and .t-eyebrow. Never for a sentence. |
Plus exactly two headings - text-xl font-semibold (20px) for the page title, text-sm font-semibold (14px) for a card title - and text-[28px] font-bold for the big figure inside <StatTile>. Never more than 2 heading levels on one page.
Banned: text-[10px], text-[11px], text-[13px], text-[15px], text-base, text-lg, and every other arbitrary size. Need 13px? That is what text-meta is for - a hand-typed arbitrary size is exactly how a fourth step sneaks back in. Below 12px there is no step at all: either the text matters enough to be readable, or it should not be on screen.
text-meta is defined in globals.css via @theme { --text-meta }, so it is a real Tailwind utility, not a convention.
Why this is written down so forcefully: before the August 2026 overhaul the codebase had 416 uses of text-xs against 136 of text-sm. 12px had silently become the body size, with a long tail of 10/11/13/15px underneath. Everything looked the same, so nothing read as more important than anything else. The spec said 14px body the whole time - what was missing was a name for 13px and something that counted.
Gaps and padding come from one scale: gap-1 (4px), gap-2 (8px), gap-3 (12px), gap-4 (16px), gap-6 (24px); p-2, p-3, p-4. Banned: gap-0.5, gap-2.5, gap-5, p-0.5, p-1.5, p-2.5. Icon buttons do not need their own padding - use <IconButton>.
Page shell: content gutter 20px (Shell.tsx), cards 16px inside, 16px between cards. <PageHeader> deliberately carries no bottom margin - the page's own gap-4 provides it. Adding mb-4 back doubles it to 32px and detaches the title from its page.
Every one of these exists because the same thing had been hand-written many times over. Reaching past a primitive to raw Tailwind is the failure mode this system is built to prevent.
| Need | Use | Replaced |
|---|---|---|
| Button | <Button variant="primary|secondary|destructive" small> | raw className="btn btn-primary" |
| Icon-only button | <IconButton label size="sm|md" tone="default|danger"> | 10+ copies at 4 sizes, 3 hover colors |
| Card | <Card title hint actions> | <div className="card p-0"> variants |
| Box nested inside a card | <Panel title actions> | 8 verbatim copies of the same class string |
| Label + input + hint + error | <Field>, <SwitchField>, <CheckboxField> | 7 variants at 3 different label sizes |
| Pick one of a few short options | <Segmented> | 6 variants, 3 radii, 3 paddings |
| Pick one option needing a description | <OptionCard> in <OptionCardGroup> | 5 variants, 2 missing role="radio" |
| Status / category label | <Badge tone label dot> | 13 hand-rolled pills at 10px and 11px |
| Page or card level message | <Banner tone="danger|success|info|muted"> | 4 error styles + 4 invented success boxes |
| Loading | <Skeleton>, <TableSkeleton>, <CardGridSkeleton> | 3 loading patterns incl. a primitive defined inside a page |
| Dashboard figure | <StatTile label value sub icon href> | defined inside app/page.tsx, plus a copy |
| Copy to clipboard | <CopyButton> | 2 unrelated-looking implementations |
| List toolbar: search / filter / bulk | <Toolbar> + <FilterChip> | in-card, outside-card, and absent |
| Empty list | <EmptyState icon title description action> | bare <p> in several places |
| Progress | <ProgressBar> / .progress-indeterminate | 4 implementations at 2 heights |
Nesting depth is capped at Card → Panel. Three nested borders and the eye can no longer tell what contains what - this happened for real on the translate-video page (Card → bordered box → bordered <li>).
Errors: a single field's error goes in <Field error>, right under the offending input. A card- or page-level error goes in <Banner tone="danger">. Never a bare <p className="text-[var(--danger)]">, and never swallow the raw log - pass it to detail.
Every color goes through a CSS custom property declared in :root and [data-theme="dark"]. Components never contain hex codes, and never Tailwind's palette (bg-gray-100, text-white) - map those to tokens. Do not apply alpha modifiers to tokens (bg-[var(--primary-soft)]/40) - that produces a color outside the table.
:root {
/* Brand */
--primary: #ed3c47;
--primary-hover: #d62e3a;
--primary-soft: #fdedef;
--secondary: #ff7849;
/* Surface */
--bg: #ffffff; /* page background */
--bg-subtle: #f6f6f7; /* sidebar, nested blocks, zebra rows */
--surface: #ffffff; /* card */
--border: #e7e7ea;
/* Text */
--text: #101113;
--text-muted: #5f6470;
/* Semantic */
--success: #16a34a;
--success-bg: #e7f6ec;
--danger: #e8590c;
--danger-bg: #fbeee5;
/* Chart series - multi-series dataviz only, validated against the dataviz checker */
--chart-2: #2f6fed;
--chart-3: #0d9488;
/* Shape & motion */
--radius: 8px;
--radius-lg: 12px;
--shadow-card: 0 1px 2px rgba(16, 17, 19, 0.06);
--transition: 150ms ease;
}
[data-theme="dark"] {
--primary: #ed3c47; /* brand color stays the same */
--primary-hover: #f25560; /* in dark, hover goes LIGHTER, not darker */
--primary-soft: #3a1d20;
--secondary: #ff7849;
--bg: #131417;
--bg-subtle: #1a1b1f;
--surface: #1e1f24;
--border: #2c2d33;
--text: #f2f3f5;
--text-muted: #9a9ea9;
--success: #2ebd6b;
--success-bg: #17301f;
--danger: #f0742e;
--danger-bg: #33231a;
--chart-2: #5b8def;
--chart-3: #27ab92;
--shadow-card: 0 1px 2px rgba(0, 0, 0, 0.4);
}Dark mode rule: only change token values, NEVER add dark-only tokens. Write the component once, it runs in both themes.
The handful of legitimate exceptions (a QR code needing a real white background, an overlay on top of arbitrary video) are listed with their reasons in the ALLOW map of scripts/check-design-system.mjs. Adding an entry there requires a reason written next to it.
localStorage and is applied via the data-theme attribute on <html>.currentColor so they inherit text color. No icon fonts, no PNGs, no emoji as functional icons (this includes emoji inside <option> labels).@fontsource/inter package, imported in apps/web/src/app/layout.tsx (weights 400/500/600/700). Bundled at build time, so self-hosted - never load fonts from a CDN at runtime.AI Edit Video by: noti.vn, description Edit video tự động bằng AI, favicon from public/brand/favicon.png.File in apps/web/public/brand/ | Download source | Used when |
|---|---|---|
logo-duong-ban.png | https://noti.vn/image/new/logo-duong-ban.png | Header in light theme |
logo-am-ban.png | https://noti.vn/image/new/logo-am-ban.png | Header in dark theme |
favicon.png | https://noti.vn/image/new/favicon.png | <link rel="icon"> |
The logo swaps with the theme at the same moment as the tokens (same data-theme listener).
┌────────────────────────────────────────────────────────┐
│ Topbar 56px: logo · page name · hardware · backend · │
│ language · theme │
├─────────┬────────────────────────────────┬─────────────┤
│ Rail │ Content: FULL WIDTH, 20px │ AI panel │
│ 220px ↔ │ gutter, cards 16px apart │ 440px ↔ 40px│
│ 56px │ NO max-width │ (a slot of │
│ │ │ the shell) │
└─────────┴────────────────────────────────┴─────────────┘Rail and panel widths are decided by CSS custom properties driven by data-nav/data-panel on <html>, never by React state - read the long comment block at the top of globals.css before changing anything there. Pages declare their right panel with <ShellRightPanel title="…">; they never compute padding for it themselves.
Space rule: never leave dead whitespace. Lists and tables stretch with the screen. Only standalone forms (create project, edit skill) may cap their width for readability (~640px).
Sidebar - 16 items, source of truth is NAV in apps/web/src/components/Shell.tsx (do not re-list them here; this doc has drifted from that array before):
Dashboard, Videos Project, Images Project, Auto cut, Text to video, Dịch video, Voices, Style Design, Phong cách dựng, Render Queue, Assets, Sound Effects, Prompts, Skills, Cấu hình, Kết nối.
/accelerate and /chat are legacy redirect() stubs and correctly absent from NAV. /m/[id] is the phone-upload page and bypasses the shell entirely.
List page (projects, images, queue, assets, sfx, prompts, skills, styles, video-styles, voices):
<div className="flex flex-col gap-4">
<PageHeader title={…} hint={{titleKey, bodyKey}} actions={<Button>…</Button>} />
{error && <ErrorBanner message={…} detail={…} />}
<Card>
<Toolbar search={…} selectedCount={…} bulkActions={…} onClearSelection={…}>
<FilterChip … />
</Toolbar>
{loading ? <TableSkeleton /> : rows.length ? <table className="table">…</table> : <EmptyState … />}
</Card>
</div>Detail page (projects/[id], text-to-video/[id], translate-video/[id], auto-cut/[id], images/[id], styles/[id]): the 3-column <Workspace> from components/Workspace.tsx, in work-rhythm order source → setup → output, with <OutputBlock> first in column 3. Column widths come from a container query, not a media query, because the real width depends on whether the rail and panel are collapsed. Hand-rolling xl:grid-cols-5 here is a bug, not a style choice - it ignores the rail/panel state.
Destructive and save actions live in <PageHeader actions> on every detail page. Not at the bottom of the page, not inside a card, not as a bare text button.
globals.css)--radius. .btn-sm is 30px/13px. There is no third size - do not override <Button> with h-6/h-12. One exception: /m/[id], the phone upload page, uses 64px/48px primary buttons. That page is thumb-driven on a real phone rather than mouse-driven on a desktop, and 36px is below the touch-target minimum. It is the only route outside the dashboard shell, and the exception does not travel.size="md" for 36px when it sits on the same row as an .input or a <Button>. A 4px height difference between adjacent controls is immediately visible even to someone who can't name it.--surface, 1px --border, radius --radius-lg, --shadow-card, padding 16px. Title 14px/600.--bg-subtle, 1px --border, radius --radius, padding 12px. Title 13px/600 - deliberately smaller than a card title so nesting reads correctly.dot={false} for category labels - the dot is the convention for status, and putting it on a category reads as "running/done".--bg-subtle, horizontal rules only, no vertical borders.--bg-subtle, fill --primary. .progress-indeterminate is the same 6px so swapping between them doesn't nudge the layout.input h-8 text-[13px] was the single most common violation before the overhaul.<Skeleton> holding the space the content will occupy, never a centered "Đang tải…" that vanishes and shoves everything upward.<Banner detail={…}>, collapsed.© notivn, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/webui-design of notivn/AIEV.
Open the folder on GitHubat commit 1a4c2b0
Webui Design next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Webui Design this skillnotivn/AIEV | 126 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Better Designmarvkr/better-design | 254 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Replica DesignJakeschincariol/replica-skill | 1.2k | — | ~994 | Automated safety check: Pass | MIT | |
| Flexible Visual Systemscott-fryxell/brayness | 125 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Create Remotion GeistMarve10s/Better-Fullstack | 754 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Product Film Builder (Remotion)Rieranthony/product-film-skill | 406 | — | ~1.4k | Automated safety check: Pass | MIT |
marvkr/better-design
Build, improve, and review production interfaces with the Better Design MCP.
Jakeschincariol/replica-skill
Rebuilds an app's design system for a clone: colour roles, type scale, spacing, radius, shadows and every component with its states, as design tokens plus component specs, with original assets…
scott-fryxell/brayness
Derive a project's visual rules from its existing tokens, palette, type scale, logo, and icons (Intake), then generate raw SVG vector graphics from those rules as a small composable set (module…
Marve10s/Better-Fullstack
Create Remotion videos using the Geist design system aesthetic.
Rieranthony/product-film-skill
Builds a showreel-grade product film in Remotion using the product's own design tokens, components and voice, from a guided interview through a verified final render.
glifxyz/glif-mcp-server
Make images, textures, illustrations and background video for a website or app you are building, with Glif, and wire them into the code.
notivn/AIEV
Pick background music from the assets/music/ library and configure auto-ducking (music dips automatically under speech) via meta.json audio.music for the Remotion assembly layer.
notivn/AIEV
Color grading video in the AI Edit Video system - delog/tonemap HDR-HLG-log footage, apply the color preset the user approved in the UI, and the visual verification workflow.
notivn/AIEV
Build a Vietnamese vertical TikTok explainer in the "MỔ XẺ PAPER AI" (AI paper dissection) format with HyperFrames (HTML/CSS/GSAP → MP4), Noti.vn style.
notivn/AIEV
The standard for writing new skills for the AI Edit Video system - file structure, frontmatter, tone of voice, and how to accumulate production lessons into skills.
notivn/AIEV
Edit a Vietnamese vertical TikTok video (9:16) with HyperFrames following the Noti.vn/GĐT standard - talking-head + kinetic typography + karaoke captions + zoom/punch-in camera + timestamp-synced…
notivn/AIEV
Build a Vietnamese landscape 16:9 YouTube video (1920×1080) with HyperFrames (HTML/CSS/GSAP → MP4), keeping the Noti.vn/GĐT branding inherited from noti-tiktok-vn.
Works with
Categories
Design system for the AI Edit Video web dashboard (noti.vn) - the three-step type scale, light/dark color tokens, the component primitives every page must use, Inter font, SVG icons, Shopify Admin…. Webui Design is an agent skill from notivn/AIEV.vn) - the three-step type scale, light/dark color tokens, the component primitives every page must use, Inter font, SVG icons, Shopify Admin style layout.
Webui Design fits situations like: tasks that involve Video production; tasks that involve Typography; tasks that involve Design systems.
Run `npx skills add notivn/AIEV --skill webui-design -a claude-code`. Or copy the skill folder (.claude/skills/webui-design in notivn/AIEV) into .claude/skills/webui-design in your project. Claude Code loads it when a task matches its description.
Run `npx skills add notivn/AIEV --skill webui-design -a codex`. Or copy the skill folder (.claude/skills/webui-design in notivn/AIEV) into .agents/skills/webui-design in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add notivn/AIEV --skill webui-design -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/webui-design, .gemini/skills/webui-design, .github/skills/webui-design and .opencode/skills/webui-design in your project.
Going by SKILL.md and its folder, Webui Design needs the command-line tools its instructions call (node).
SKILL.md names 1 domain. As links in the text: noti.vn. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Webui Design is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Webui Design: Better Design (marvkr/better-design, 254 stars), Replica Design (Jakeschincariol/replica-skill, 1.2k stars), Flexible Visual System (scott-fryxell/brayness, 125 stars) and Create Remotion Geist (Marve10s/Better-Fullstack, 754 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
notivn (a GitHub organization) maintains it in notivn/AIEV, which has 126 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 8, 2026.
Source: notivn/AIEV on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.