Tokens

educlopez/ui-craft/cli/assets/cursor/skills/tokens

作者 educlopezceecc8e1fb0c2befda73da996435900d6dd0c1ac无许可证375 个星标收录于 2026年10月9日更新于 2026年10月9日仓库5周前更新

Audit or establish the project's 3-layer token spine. Invoke when the user asks for tokens on their UI, or mentions 'tokens' alongside design / UI / frontend work.

仅含说明Design & Creative
AI 生成的概览

审查或建立项目的三层设计令牌体系,覆盖七类令牌,用于界面开发。

功能
扫描项目中已有的设计令牌定义,包括 CSS 变量、Tailwind 配置、CSS-in-JS 主题和令牌 JSON 文件,并整理出类别与层级的清单。在审查模式下,输出按严重程度排序的缺口列表,涵盖层级覆盖、类别覆盖、深色模式、命名规范与任意值。在建立模式下,提出最小化的从基础层到语义层的令牌体系,包含浅色与深色两套定义,并以补丁形式提供改动而非覆盖已有文件。
适用场景
当用户要求为其界面提供令牌,或在设计、界面、前端相关工作中提到令牌时使用。适用于审查现有令牌体系,或在构建组件前新建一套令牌。
运行要求
仅为指令,不附带脚本。它需要有一个可检查的项目,并引用 references/tokens.md 与 skills/ui-craft/references/loops.md 等文件,这些文件不在本技能文件夹内。
<!-- HARNESS MIRROR — do not edit here. Canonical source: skills/ or commands/. After editing source, copy into cli/assets/<harness>/ and repo-root harness mirrors. -->

Context: this sub-skill is one lens of the broader ui-craft skill. If the ui-craft skill is also installed, read its SKILL.md first for Discovery + Anti-Slop + Craft Test, then apply the specific lens below.

Read references/tokens.md before proceeding. The 3-layer contract (primitive → semantic → component) and the intentional-dark test are defined there.


Step 1: Detect existing tokens

Scan for token definitions in the project:

  • CSS variables in :root, [data-theme], [data-mode], or theme wrapper selectors
  • Tailwind config (tailwind.config.js/ts) under theme.extend or theme
  • CSS-in-JS theme objects (theme.ts, *.styles.ts, styled.d.ts, ThemeProvider)
  • design-tokens.json or tokens.json (Style Dictionary / Theo)
  • globals.css, variables.css, tokens.css

Build an inventory: which of the 7 categories exist (color / spacing / type / radii / shadows / motion / z-index), which layers are present (primitive / semantic / component), and whether both light and dark are defined.


Step 2: Route based on $ARGUMENTS and inventory

  • "audit" → run audit only (Step 3). No proposals.
  • "establish" → skip audit, go to Step 4.
  • "color" / "spacing" / "type" / "radii" / "shadows" / "motion" / "z-index" → focus the audit and any proposal on that one category.
  • empty → if tokens exist: audit. If nothing found: establish.

Step 3: Audit (tokens exist)

Evaluate against the contract in references/tokens.md. Output a severity-ranked gap list — don't propose code yet.

Check:

  1. 3-layer coverage — are primitive, semantic, and component layers all present? Missing semantics is the most common gap: primitives exist but nothing switches for dark mode and no surface stack is defined.
  2. 7-category coverage — any of (color / spacing / type / radii / shadows / motion / z-index) missing? Flag each absent category.
  3. Intentional dark mode — run the intentional-dark test: does dark mode do more than invert --text-primary? Is --surface-canvas a tinted near-black (not #000)? Is accent chroma reduced 10-15%? Are shadows replaced with border rings?
  4. Naming discipline — are primitives named for values (--gray-500) not roles (--button-bg)? Are semantics named for roles (--text-primary) not values (--gray-900-text)?
  5. No arbitrary values — inline colors, spacing, or z-index values that bypass the token system.

Output format:

SeverityCategoryFinding
CriticalDark mode--surface-canvas is #000 — runs the intentional-dark test
HighSemanticsNo surface stack — components use raw primitives
MediumShadowsSingle-layer shadows — ambient layer missing
LowZ-indexArbitrary values (z-index: 999) in 3 components

Show what's missing. Do not propose code during audit unless the user asks.

Step 3b — Converge mode (explicit opt-in)

Load skills/ui-craft/references/loops.md preset token-consistency (budget = the default loop budget defined in loops.md). Emit the pre-flight cost notice. After fixing the top off-system value (raw hex color, arbitrary radius, or magic spacing), re-scan until zero off-system values or budget exhausted.


Step 4: Establish (no tokens found)

Propose a minimal spine inline. Cover all 7 categories. Always include both light and dark blocks — both intentional.

Minimal spine order:

  1. Primitives — neutral ramp (gray-50 to gray-950), one accent ramp, semantic color bases, spacing scale, type scale, radii, shadows, motion, z-index.
  2. Semantics — surface stack (5 levels), text roles, border roles, accent roles, status roles (success / warning / error / info).
  3. Component tokens — defer unless a specific component is already being built.

Use OKLCH for color unless the project uses sRGB across the board — in that case flag the gap, propose OKLCH, but don't auto-convert.

Before writing to a file, ask which file to write to. Detect from project structure and suggest one:

  • Tailwind project → globals.css (CSS variables inside :root)
  • CSS-in-JS → theme.ts (exported theme object)
  • Vanilla CSS → tokens.css (standalone variables file)
  • Cross-platform / multi-consumer → design-tokens.json (Style Dictionary format)

Confirm with the user before writing.


Step 5: Never overwrite

If the project has an existing token file, propose additions as patches — show what would change in a diff block:

diff
  :root {+   /* ── Semantic surface stack (new) ── */+   --surface-canvas:  var(--gray-50);+   --surface-raised:  var(--gray-100);+   --surface-overlay: #fff;+   --surface-sunken:  var(--gray-200);+   --surface-inverse: var(--gray-900);  }

Let the user apply. Don't write directly unless they approve.


Constraints

  • Don't impose Tailwind on a vanilla CSS project. Match the project's existing syntax.
  • Don't impose OKLCH if the project uses sRGB consistently — flag it, suggest migration, don't force it.
  • Respect existing naming conventions — if the project uses --color-primary over --accent-500, extend that pattern rather than introducing a parallel naming scheme.

Next step: /craft — build on the spine you just established (rung 1).

来源与署名

来源:educlopez/ui-craft位于cli/assets/cursor/skills/tokens提交ceecc8e

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架