Figma Design System Builder
warpdotdev/warp
Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.
Verify built UI against this project's hard rules and against the design — runs the mechanical check script, then the judgement checks a script cannot make (visual fidelity vs Figma, token naming…
$ npx skills add textura-agency/next16-claude-starter --skill qa-verify -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install textura-agency/next16-claude-starter qa-verify --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/textura-agency/next16-claude-starter.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/qa-verify .claude/skills/qa-verify && 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 "qa-verify" agent skill from https://github.com/textura-agency/next16-claude-starter/tree/main/.claude/skills/qa-verify into .claude/skills/qa-verify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-verify", 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/textura-agency/next16-claude-starter/tree/main/.claude/skills/qa-verifyType 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 textura-agency/next16-claude-starter --skill qa-verify -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install textura-agency/next16-claude-starter qa-verify --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/textura-agency/next16-claude-starter.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/qa-verify .agents/skills/qa-verify && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "qa-verify" agent skill from https://github.com/textura-agency/next16-claude-starter/tree/main/.claude/skills/qa-verify into .agents/skills/qa-verify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-verify", 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 textura-agency/next16-claude-starter --skill qa-verify -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install textura-agency/next16-claude-starter qa-verify --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/textura-agency/next16-claude-starter.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/qa-verify .cursor/skills/qa-verify && 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 "qa-verify" agent skill from https://github.com/textura-agency/next16-claude-starter/tree/main/.claude/skills/qa-verify into .cursor/skills/qa-verify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-verify", 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/textura-agency/next16-claude-starter.git --path .claude/skills/qa-verify--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 textura-agency/next16-claude-starter --skill qa-verify -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install textura-agency/next16-claude-starter qa-verify --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/textura-agency/next16-claude-starter.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/qa-verify .gemini/skills/qa-verify && 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 "qa-verify" agent skill from https://github.com/textura-agency/next16-claude-starter/tree/main/.claude/skills/qa-verify into .gemini/skills/qa-verify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-verify", 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 textura-agency/next16-claude-starter qa-verifyInstalls 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 textura-agency/next16-claude-starter --skill qa-verify -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/textura-agency/next16-claude-starter.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/qa-verify .github/skills/qa-verify && 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 "qa-verify" agent skill from https://github.com/textura-agency/next16-claude-starter/tree/main/.claude/skills/qa-verify into .github/skills/qa-verify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-verify", 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 textura-agency/next16-claude-starter --skill qa-verify -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install textura-agency/next16-claude-starter qa-verify --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/textura-agency/next16-claude-starter.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/qa-verify .opencode/skills/qa-verify && 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 "qa-verify" agent skill from https://github.com/textura-agency/next16-claude-starter/tree/main/.claude/skills/qa-verify into .opencode/skills/qa-verify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-verify", 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.
qa-verifyVerify built UI against this project's hard rules and against the design — runs the mechanical check script, then the judgement checks a script cannot make (visual fidelity vs Figma, token naming…
QA Verify is an agent skill from textura-agency/next16-claude-starter. Verify built UI against this project's hard rules and against the design — runs the mechanical check script, then the judgement checks a script cannot make (visual fidelity vs Figma, token naming, motion choice, semantics, contrast through every frame of an entrance, responsive behaviour including live resizes, phone overflow and dark mode), and fixes what it finds in a loop until clean. Use after building or changing any page, view, section or component, before committing, and whenever the user says "QA this"…
Its SKILL.md is about 1.9k 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 Frontend & Design, covering Theming and dark mode. It works with Figma. The repository describes itself as: AI-first Next.js 16 starter for animation-heavy sites, wired with an Obsidian vault & Claude Code hooks. The licence is Unlicense.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 6c6edf9. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadGrepGlobEditWriteFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
yarnnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use yarn, which can reach the network depending on how they are called.
From 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.
QA Verify loads about 1.9k tokens when it runs. Until then it costs about 143 tokens; SKILL.md has 992 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Grep, Glob, Edit, WriteAutomated 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 textura-agency/next16-claude-starter at commit 6c6edf9, republished under its Unlicense licence (© textura-agency). 992 words, ~1,907 tokens.
.claude/skills/qa-verify/SKILL.md (or your agent's skills folder).Two layers. The script decides what is decidable; you decide the rest. Never report "done" on the script alone — it cannot see a design.
Browser checks below use tools/qa/ against a running yarn build && yarn start (yarn qa:setup once; every tool takes --url; see
tools/qa/README.md). Probes need a person's UA — the default puppeteer UA gets
the robot form, which has no motion, no cursor and no scene, and "proves" a bug
gone that a person still sees. Look at every screenshot a tool writes (Read
the image) — numbers flag, the eye decides.
.claude/scripts/verify.sh # whole src/
.claude/scripts/verify.sh src/views/about.tsx # scoped
yarn lint
yarn build # must pass before anything shipsEvery FAIL must be fixed. WARNs are judgement calls: fix or justify in your summary, do not silently ignore them.
Work section by section. For each one:
Re-fetch the Figma node — do not QA from memory or from your own earlier summary.
get_design_context for values, get_screenshot for layout. Then compare:
If an image looks invisible or wrong, check the container first — an invented wrapper background is the usual cause, not the asset itself.
@theme inline or a Tier 2 token.transition-* appears only for hover/focus/discrete state, with
duration-[var(--duration-*)] and a token ease.Inview for reveals, SpringTrigger scrub
for parallax, Hover for hover, text through the text engine.tag is semantic on every animation component.prefers-reduced-motion, content is present and readable — and the page
still responds: a loop: spring or while (alive) await … loop not gated on
useMotionOff() restarts in the same tick forever under skipAnimation and
hangs the tab (found on 6+ production sites). node tools/qa/check-motion.mjs --url … checks reduced motion and the robot form.dt (a 120 Hz phone otherwise runs them 2×) — mobile-device-qa §120 Hz.optimize-performance §3).<h1>; heading levels never skip; the outline reads as a document.button / a.alt; decorative images alt="".node tools/qa/axe-sweep.mjs --url … samples
contrast and target-size every ~120 ms from navigation. A first-screen fade
sampled mid-way is a real Lighthouse failure — reveal with transform / clip /
a mask sweep while opacity stays 1 (optimize-load §3). Its at-rest failures
over a canvas are real even when Lighthouse says 100.aria-expanded + aria-controls, the rest inert.This project scales the root font-size with the viewport (the adaptive grid in
globals.css), so most sizing follows automatically. What still needs checking:
document.documentElement.scrollWidth === innerWidth at 320, 360, 390, 430.
One over-wide section zooms the whole phone page out.overflow + tight leading combo.
Split headlines never break mid-word ("DA/TA") — letters grouped in a
white-space: nowrap word span.bg-background)
turns dark under prefers-color-scheme: dark while a fixed-colour page stays
light — one menu read ~1:1 on a reviewer's dark-mode phone. Give overlays
their own tokens.node tools/qa/resize-check.mjs --url … [--sel "<elements that matter>"]: a real window jump, drag and widen; a DevTools device-preset switch
and back (DPR, mobile and touch change together — how most reviewers check a
phone); a Responsive-mode drag; tablet rotation. Each must land where a fresh
load at that size does: every line "=", and LOOK at every strip — a box can
match while what it draws is stale (a <model-viewer> box right, the model
inside it still framed for desktop). Also by hand in next dev. Fix what it
finds: sizes measured once on mount, DPR or pointer read once, a one-screen
layout's scroll lock, camera framing, springs holding old targets.mobile-device-qa — the iOS toolbar, 120 Hz, touch and
safe-area checks a desktop browser never exercises."use client" at leaves.State plainly: what failed and was fixed, what is a WARN you consciously kept and why, any design values that could not map to tokens, and anything you could not verify (no design available, no device to test on, iOS-only behaviour checked only in emulation). Do not report a clean pass you did not achieve.
© textura-agency, Unlicense. 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/qa-verify of textura-agency/next16-claude-starter.
Open the folder on GitHubat commit 6c6edf9
QA Verify 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 |
|---|---|---|---|---|---|---|
| QA Verify this skilltextura-agency/next16-claude-starter | 133 | — | ~1.9k | Automated safety check: Notes | Unlicense | |
| Figma Design System Builderwarpdotdev/warp | 65k | 2 repos | ~4.4k | Automated safety check: Pass | AGPL-3.0 | |
| Material Design 3 UI/UX Guideskydashnet/material-design-3-ui-skill | 138 | — | ~3k | Automated safety check: Pass | MIT | |
| Igniteui Angular Generate From Image DesignIgniteUI/igniteui-angular | 599 | — | ~4.7k | Automated safety check: Pass | MIT | |
| Igniteui Wc Customize Component ThemeIgniteUI/igniteui-webcomponents | 170 | — | ~4.3k | Automated safety check: Pass | MIT | |
| Qt Figma Token ExtractionTheQtCompanyRnD/agent-skills | 470 | — | ~7.3k | Automated safety check: Pass | BSD-3-Clause |
warpdotdev/warp
Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.
skydashnet/material-design-3-ui-skill
Guides designing, reviewing or implementing interfaces that follow Google's Material Design 3 system: semantic tokens, component states, adaptive layout and accessibility.
IgniteUI/igniteui-angular
Implements Angular application views from design images using Ignite UI Angular components.
IgniteUI/igniteui-webcomponents
Theme and style Ignite UI Web Components (and igniteui-react) apps using CSS custom properties, optional Sass, and the igniteui-theming MCP server.
TheQtCompanyRnD/agent-skills
Extract design tokens, text styles, and variables from a Figma design system and produce a design-tokens.json plus ready-to-use QML singletons.
IgniteUI/igniteui-angular
Generates and customizes Ignite UI for Angular themes including color palettes, typography, elevations, and component-level styles using the Sass theming system and the igniteui-theming MCP server.
textura-agency/next16-claude-starter
Make a site behave on real phones — the defects no Lighthouse run or headless scroll test sees, learned from site owners reviewing production sites on an iPhone.
textura-agency/next16-claude-starter
Get a page into Lighthouse's green zone on desktop and mobile, for people AND for the robot form crawlers get — build it, audit all four categories (Performance, Accessibility, Best Practices, SEO)…
textura-agency/next16-claude-starter
Make a page in this starter actually smooth — build it, scroll it in real Chrome on PC and on an emulated phone, fix what the measurement blames, re-measure to prove it.
textura-agency/next16-claude-starter
Make a Payload admin feel like part of the site and explain itself — the skin re-tinted from the site's own tokens (calm, light, no added motion), the site's wordmark and favicon, a dashboard…
textura-agency/next16-claude-starter
Put a Payload CMS admin on a site built from this starter — every visible string and content photo editable, derived from the site's own content objects with the code's copy as the fallback, a…
textura-agency/next16-claude-starter
Answer Engine Optimisation — make the site citable by ChatGPT, Claude, Perplexity, Gemini and AI Overviews.
Works with
Categories
Verify built UI against this project's hard rules and against the design — runs the mechanical check script, then the judgement checks a script cannot make (visual fidelity vs Figma, token naming…. QA Verify is an agent skill from textura-agency/next16-claude-starter. Verify built UI against this project's hard rules and against the design — runs the mechanical check script, then the judgement checks a script cannot make (visual fidelity vs Figma, token naming, motion choice, semantics, contrast through every frame of an entrance, responsive behaviour including live resizes, phone overflow and dark mode), and fixes what it finds in a loop until clean.
QA Verify fits situations like: is this ready to ship; tasks that involve Theming and dark mode.
Run `npx skills add textura-agency/next16-claude-starter --skill qa-verify -a claude-code`. Or copy the skill folder (.claude/skills/qa-verify in textura-agency/next16-claude-starter) into .claude/skills/qa-verify in your project. Claude Code loads it when a task matches its description.
Run `npx skills add textura-agency/next16-claude-starter --skill qa-verify -a codex`. Or copy the skill folder (.claude/skills/qa-verify in textura-agency/next16-claude-starter) into .agents/skills/qa-verify 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 textura-agency/next16-claude-starter --skill qa-verify -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/qa-verify, .gemini/skills/qa-verify, .github/skills/qa-verify and .opencode/skills/qa-verify in your project.
Going by SKILL.md and its folder, QA Verify needs the command-line tools its instructions call (yarn and node). Its frontmatter pre-approves these tools: Bash, Read, Grep, Glob, Edit, Write.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
QA Verify is published under the Unlicense licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k 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 QA Verify: Figma Design System Builder (warpdotdev/warp, 65k stars), Material Design 3 UI/UX Guide (skydashnet/material-design-3-ui-skill, 138 stars), Igniteui Angular Generate From Image Design (IgniteUI/igniteui-angular, 599 stars) and Igniteui Wc Customize Component Theme (IgniteUI/igniteui-webcomponents, 170 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
textura-agency (a GitHub organization) maintains it in textura-agency/next16-claude-starter, which has 133 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on October 7, 2026.
Source: textura-agency/next16-claude-starter on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.