Audit how design tokens are defined: tiers, naming, alias chains, raw values, orphans, DTCG readiness.

MITAuto-check passedFrontend & Design

Install Token Audit

skills CLI
$ npx skills add murphytrueman/design-system-ops --skill token-audit -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install murphytrueman/design-system-ops token-audit --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/murphytrueman/design-system-ops.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/token-audit .claude/skills/token-audit && rm -rf skills-src

Use ~/.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/

Facts

Skill name
token-audit
GitHub stars
201
Token cost
~6.5k tokens
SKILL.md length
3,422 words
Files
1
Skills in repo
36
Repo updated
First seen
Licence
MIT

At a glance

Audit how design tokens are defined: tiers, naming, alias chains, raw values, orphans, DTCG readiness.

  • Works in 6 steps: Token discovery → Gather the token source → Map the tier structure → …
  • Tasks that involve Design tokens
  • SKILL.md covers Before you begin: verify…, Context, Configuration and Auto-pull integrations, plus 12 more sections
  • Calls npx and gh

What it does

Token Audit is an agent skill from murphytrueman/design-system-ops. Audit how design tokens are defined: tiers, naming, alias chains, raw values, orphans, DTCG readiness. Triggers: audit my tokens, token architecture review, token health check. Not for code consuming tokens (token-compliance), theme parity (theme-audit) or Figma variables (figma-variable-audit).

Its SKILL.md is about 6.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 Frontend & Design, covering Design tokens and Software architecture. It works with Figma. The repository describes itself as: Claude Code skills for the work that keeps a design system alive. The licence is MIT.

When your agent uses it

  • Tasks that involve Design tokens
  • Tasks that involve Software architecture

Example prompts

  • “/token-audit”

Requirements

  • Node.js
  • Pre-approved tools (allowed-tools): Read, Write, Grep, Glob, Bash(cat:*), Bash(find:*), Bash(head:*), Bash(ls:*), Bash(sort:*), Bash(tail:*), Bash(wc:*), Bash(npx style-dictionary:*), Bash(npx terrazzo:*)

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Token discovery
  2. Gather the token source
  3. Map the tier structure
  4. Run the audit checks
  5. Produce the audit report
  6. Figma variables

What it can do on your machine

Read from SKILL.md and the folder at commit f167898. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Grep
    • Glob
    • Bash(cat:*)
    • Bash(find:*)
    • Bash(head:*)
    • Bash(ls:*)
    • Bash(sort:*)
    • Bash(tail:*)

    …and 3 more on the same allowed-tools line.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx
    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npx and gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Token Audit loads about 6.5k tokens when it runs. Until then it costs about 77 tokens; SKILL.md has 3,422 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~77
When it runs · the whole SKILL.md, loaded when a task matches
~6.5k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from murphytrueman/design-system-ops at commit f167898, republished under its MIT licence (© murphytrueman). 3,422 words, ~6,482 tokens.

Download SKILL.mdSave it as .claude/skills/token-audit/SKILL.md (or your agent's skills folder).
name
token-audit
description
Audit how design tokens are defined: tiers, naming, alias chains, raw values, orphans, DTCG readiness. Triggers: audit my tokens, token architecture review, token health check. Not for code consuming tokens (token-compliance), theme parity (theme-audit) or Figma variables (figma-variable-audit).
allowed-tools
Read, Write, Grep, Glob, Bash(cat:*), Bash(find:*), Bash(head:*), Bash(ls:*), Bash(sort:*), Bash(tail:*), Bash(wc:*), Bash(npx style-dictionary:*), Bash(npx terrazzo:*)
references
../../knowledge-notes/token-architecture.md, ../../knowledge-notes/output-discipline.md

Token audit

A skill for auditing design token architecture across whichever tiers are in use — typically primitives and semantics, with component tokens where the system uses them. Produces a structured report with severity-rated findings and a prioritised remediation list.

Before you begin: verify references

Confirm that every path in this skill's frontmatter references: exists relative to this SKILL.md. If any is missing, stop: the install is incomplete, usually because a flattening installer (for example npx skills install) dropped the repo-root knowledge-notes/ directory. Tell the user to reinstall by a method in 1-INSTALL.md and run verify-install.sh from the install root. Proceed without the references only if the user explicitly says to, and then say in the output that it was produced without the pack's reference material.

Context

This skill draws on the tiered token architecture model: primitives encode raw values, semantic tokens encode intent, and — where present — component tokens map intent to specific UI contexts. Not every system uses component tokens, and the absence of a component tier is not a finding. Most token debt accumulates when tiers blur — when component contexts reference primitives directly, when semantic names describe appearance rather than purpose, or when the primitive layer is treated as the only layer.

The audit is not about enforcing a particular naming convention. It's about identifying where the token structure is working against the teams using it.


Configuration

If .ds-ops-config.yml exists, follow the configuration-and-recurring knowledge note (../../knowledge-notes/configuration-and-recurring.md) for loading, integration fallbacks and recurring runs. This skill reads:

  • severity.* — overrides for finding severity ratings (e.g. hardcoded_color: critical instead of the default high)
  • system.theming — if true, elevate hardcoded colour findings to the severity specified in config
  • system.styling — pre-selects the format-specific guidance to apply
  • integrations.style_dictionary — parse tokens via Style Dictionary 4 or 5 (see below)
  • integrations.figma — Figma variables as an additional token source
  • recurring.* — the previous report, for trend comparison (see recurring workflow below)

Auto-pull integrations

Style Dictionary 4 or 5, or Terrazzo (integrations.style_dictionary.enabled: true, or a config in the repo):

  • Parse the config at integrations.style_dictionary.config_path
  • Extract the full token tree with resolved references and tier structure
  • Use this as the primary token source — skip the manual "provide your token files" question
  • Run npx style-dictionary build --config [path] into a scratch output directory (or npx terrazzo build) to let the tool resolve every alias before you reason about the tree; its errors are findings with the tool named as the source

Figma variables (integrations.figma.enabled: true):

  • Use the Figma MCP server to read variables from the file at integrations.figma.file_key
  • Extract variable collections, modes, and resolved values
  • Cross-reference Figma variables against code token files to detect mismatches (Figma says --color-primary is #0066CC but the code says #0064CC — that is a finding)

GitHub (integrations.github.enabled: true):

  • Pull the token file directly from the default branch if no local file is provided

Step 0: Token discovery

Before asking the user for files, search the codebase for token-like patterns. This step lowers activation energy for teams where tokens exist but are not centralised — the user does not have to know where all their tokens live.

What to search for:

  1. CSS custom properties — scan all .css files for :root blocks or -- prefixed properties. Include scoped variants (.dark, [data-theme="..."], .theme-*).
  2. SCSS/Sass variables — scan all .scss and .sass files for $-prefixed names. Follow @import and @use chains to find partial files (_colors.scss, _variables.scss, _tokens.scss).
  3. JSON/YAML token files — scan for files matching common token naming patterns: tokens.json, tokens.yaml, *.tokens.json, design-tokens/**, src/tokens/**, tokens/**. Also look for DTCG-formatted files containing $type or $value keys.
  4. Style Dictionary configs — scan for style-dictionary.config.json, config.json in a style-dictionary/ directory, or .style-dictionary.json.
  5. TypeScript/JavaScript token objects — scan .ts and .js files for exports matching common patterns: export const tokens, export const theme, export default { color, as const typed objects with token-like key hierarchies.
  6. Tailwind configurations — scan for tailwind.config.js, tailwind.config.ts, or tailwind.config.mjs and extract the theme and extend blocks.
  7. Figma Tokens / Tokens Studio — scan for tokens.json in a .tokens or tokens directory, or files exported from Tokens Studio.

How to search:

Use file system access (glob patterns, file reads) to scan the project. If GitHub integration is configured and there's no local clone, use gh api search/code only to locate candidate files, then read them. If Figma integration is configured, pull Figma variables as an additional token source.

Prioritise by specificity: a dedicated tokens/ directory is more reliable than scattered CSS files. A Style Dictionary config is more reliable than raw JSON. But collect everything — fragmented token sources are themselves a finding.

Discovery output:

Produce a brief inventory before continuing:

Token sources found:
- src/tokens/colors.json (94 tokens, JSON, likely primitives)
- src/tokens/semantic.json (67 tokens, JSON, likely semantic tier)
- src/styles/variables.scss (43 variables, SCSS)
- tailwind.config.ts (theme block with 28 custom values)
Total: ~232 token-like declarations across 4 sources

If discovery finds nothing, proceed to Step 1 and ask the user for manual input. If discovery finds scattered sources across multiple formats, flag this as a finding: "Tokens exist in [N] different formats across [M] files. This fragmentation is structural debt — consider centralising to a single source of truth."

Present the discovered sources to the user and ask: "I found these token sources. Should I audit all of them, or focus on specific files?" This gives the user control without requiring them to have assembled the inventory manually.


Step 0b: Orphan detection checkpoint

Before running the full audit, do one pass to identify token usage. This is the only orphan pass — Step 3c reuses its results.

  1. Declared tokens — count every token found in Step 0 (or provided manually in Step 1).
  2. Referenced tokens — search for references to each declared token, both from other tokens and from components in this repo. For CSS custom properties, search for var(--token-name). For SCSS variables, search for $variable-name outside their declaration files. For JSON/DTCG tokens, search for alias references ({token.path}). For TypeScript objects, search for import and access patterns (tokens.color.primary, theme.spacing.md).
  3. Positive control — before trusting the result, pick one token you know is used and confirm each search pattern finds it. If a pattern finds nothing for a known-used token, the pattern doesn't fit this codebase; fix it or report orphans for that format as unconfirmed.
  4. Orphan candidates — tokens not referenced by another token or by any component in the scanned repo.

In a design system repo, most tokens are consumed by product repos that weren't scanned. An orphan here means "no in-repo consumer", not "unused". Report orphans as unconfirmed for external consumers unless the user has given you access to the consuming repos or usage data.

Produce a checkpoint summary (figures illustrative):

Orphan detection:
- 232 tokens declared
- 189 tokens referenced in-repo (at least once)
- 43 orphan candidates (no reference from another token or an in-repo component)
  Top candidates: --color-legacy-teal, --spacing-xl-deprecated, $font-heading-alt (3 more)
  Positive control: --color-action-primary found in 14 files by the same patterns
  Not checked: consuming product repos

This tells the user the scale of the question before the full audit begins. Confirmed orphans are maintenance burden without value — they clutter autocomplete, confuse new team members, and inflate the token count. Include orphan candidates as findings in the main audit (category: Coverage, severity: Low unless count exceeds 20% of total, then Medium), and say which consumers were checked.

If the orphan count is high (>30% of total tokens), flag this prominently: "Over a third of declared tokens are unreferenced. Before auditing token quality, consider whether a cleanup pass would simplify the architecture."


Step 1: Gather the token source

If Step 0 discovered token sources, use them as the primary input — skip the manual question unless the user wants to override. If Step 0 found nothing (or was skipped because no codebase access was available), ask for the token source. Acceptable inputs:

  • A JSON, YAML, or DTCG-formatted token file
  • A Figma file or Tokens Studio export
  • A pasted list of token names and values
  • A Style Dictionary configuration
  • A CSS file with custom properties (e.g. :root { --color-primary: #5e4890; } or theme variants scoped to .dark { }, [data-theme="dark"], or similar selectors)
  • An SCSS/Sass file with variables (e.g. $color-primary: #5e4890;)
  • A TypeScript or JavaScript token object (e.g. export const tokens = { color: { ... } })
  • A Tailwind CSS configuration file (tailwind.config.js or tailwind.config.ts) with a theme or extend block defining custom tokens

Format-specific guidance:

For CSS custom properties: treat each -- prefixed property as a token. Infer tier from naming patterns — properties like --color-blue-500 are likely primitives, --color-action-primary are semantic, --button-background-default are component-tier. Where properties are scoped to selectors (:root, .dark, [data-theme="dark"]), treat each scope as a theme variant. References between CSS custom properties using var(--other-token) indicate tier relationships — map these the same way as JSON token references.

For SCSS variables: treat each $ prefixed variable as a token. SCSS variables that reference other variables (e.g. $color-primary: $blue-500) indicate tier relationships. If variables are split across partials (_colors.scss, _spacing.scss), the file organisation may signal tier structure.

For TypeScript/JavaScript objects: treat the exported object's key hierarchy as the token structure. Nested objects map to tiers the same way JSON tokens do. For Emotion or styled-components themes, the theme object is the token source. Common patterns include: flat exports (export const backgroundColor = { scene: '#FFF', primary: '#206EF6' }), as const typed objects (const tokens = { ... } as const), aggregated barrel exports (export const tokens = { breakpoint, fontSize, spacing }), and theme-to-CSS-variable mapping functions (mapThemeToVars()). Helper functions like theme.spacing(4) or theme.colors.primary that resolve to token values are valid token references.

For Tailwind configurations: the theme block defines primitives, extend adds semantic overrides. Tailwind utility classes that reference custom tokens (e.g. bg-primary, text-color-content-default) are token references, not hardcoded values. Arbitrary values in square brackets (e.g. h-[12px], bg-[#ff0000]) are the actual hardcoded violations.

If the person pastes raw token names without values, proceed with a naming and structure audit only. Note in the output that value analysis was not possible.

Step 2: Map the tier structure

Identify which tiers are present:

Primitive tier — raw values, no semantic meaning. Examples: color.blue.500, spacing.4, font-size.base

Semantic tier — intent-driven references. Examples: color.action.primary, spacing.component.gap, text.body.size

Component tier — scoped to a specific component context. Examples: button.background.default, card.padding.inner

Flag a missing primitive or semantic tier. A system with only primitives has no semantic contract. A system with only semantic tokens has no single source of truth for raw values. Both are structural problems worth naming. A missing component tier is not a finding — see the token-architecture note.

Step 3: Run the audit checks

For each check, produce a PASS, WARN, or FAIL rating with specific examples. Every finding carries evidence: the token path and the file and line where it is defined (tokens/component.tokens.json:9, src/styles/tokens.css:17).

Severity rubric (the severity.* config keys override these defaults):

  • 🔴 Critical — a token file that isn't the source of truth it claims to be (generated output has drifted from it); tier leakage or a raw value at the semantic or component tier in a system that ships more than one theme, because the theme switch silently misses it
  • 🟠 High — tier leakage or a raw value at the semantic or component tier in a single-theme system; an upward reference (semantic → component); a semantic token that names an appearance (color.semantic.blue)
  • 🟡 Medium — convention inconsistency within a tier; a missing interaction state for a role the components already use; duplicate raw values with no documented distinction; orphan candidates above the 20% threshold
  • ⚪ Low — ambiguity flags, platform suffixes, orphan candidates below the threshold, DTCG migration signals
Naming checks

Descriptive vs prescriptive naming Semantic tokens should describe purpose, not appearance.

  • FAIL example: color.semantic.blue — describes colour, not intent
  • PASS example: color.action.primary — describes role

Tier leakage Component tokens should reference semantic tokens, not primitives.

  • FAIL example: button.background.default: {color.blue.500} — skips the semantic tier
  • PASS example: button.background.default: {color.action.primary} — correct reference chain

Ambiguity flags Token names that could mean multiple things or require context to interpret (the token-architecture note has the full rule and its exceptions):

  • Examples to flag: normal, alt, variant, misc, other, and default or base when they are the entire role (color.default)
  • Not flagged: default/base as a state or level segment beside a role (color.action.default, color.surface.base), and t-shirt or numeric scale steps (spacing.sm, radius.lg)
  • Each flagged token should include a suggested rename

Convention consistency (this skill owns token naming; naming-audit covers components and patterns) Within each tier, identify the dominant casing, separator and segment order, and flag the tokens that break from it: color.blue-500 beside color.blue.500, hover/active beside hover/pressed, button.background-hover beside button.background.hover. Report the dominant convention in the findings so the team can confirm it's the intended one.

Platform suffix abuse Token names that encode platform specifics in the name rather than in the transformation layer:

  • Examples: color.primary.ios, spacing.mobile.gap — these belong in transforms, not names
Value checks (if values are available)

Hardcoded values at semantic or component tier Any semantic or component token with a raw value rather than a reference is structural debt.

  • Flag each occurrence with: token name, raw value found, and suggested reference target

Duplicate raw values without token aliases Identical raw values appearing at the primitive tier under different names without explanation.

  • Flag potential duplicates and ask whether the distinction is intentional

Out-of-tier references Any token referencing a token from a higher-specificity tier.

  • Example: a semantic token referencing a component token — this inverts the dependency direction
Show full SKILL.md (1,326 more words)Show less
Coverage checks

Missing interaction states Review whether semantic tokens exist for all standard states: default, hover, active, disabled, focus, error, success, warning.

Missing dark mode / theme aliases If the system intends to support theming, check whether semantic tokens exist as theme-aware aliases or whether raw values are used directly.

Inconsistent component tier (only if the system uses component tokens) If the system has adopted component tokens and they exist for some components but not others in the same category, flag the inconsistency. If the system does not use component tokens at all, this is not a finding — a two-tier architecture (primitives and semantics) is a valid and common choice.

Step 3b: DTCG 2025.10 alignment assessment (conditional — include only if relevant)

Skip this section entirely if the token source is not DTCG format and the team has not mentioned DTCG migration. Most teams don't need this. Include it when the token source uses DTCG format, when the team asks about DTCG compliance, or when migration planning is the purpose of the audit.

If the token source uses DTCG format, or if the team is considering DTCG migration:

Structural validation is schema-validator's job. Type resolution, $type values outside the 13 types, 2025.10 value shapes, composite sub-value integrity, broken and circular aliases, and resolver document validity all belong there. If a schema-validator report exists, cite its finding IDs in this section; if not, run it (it's quick and mechanical) rather than re-checking by hand. This section reports what those results mean for the architecture, and adds the two checks below that need the tier map.

Alias tier in composites. A composite token whose sub-values mix references and raw values (typography.body with fontFamily: {font.family.body} but fontSize: "16px") is the composite form of a raw value at the semantic tier: it can't theme. schema-validator reports the shape; this audit rates it. Severity: 🟡 Medium, 🟠 High if the composite is used by a themed component.

Resolver contexts and theming. If .resolver.json files exist, read each modifier's contexts and its resolutionOrder (the note describes the structure; the spec's term is context, not mode). A context that doesn't redefine a token inherits the earlier value, which is the design, not a gap. What this audit reports: theme-dependent semantic tokens (colour, shadow, border colour) that no non-default context redefines, so the theme silently keeps the default value; and token files that no set includes. Severity: 🟠 High for an inherited colour token in a shipped theme (contrast risk), ⚪ Low for a token file outside every set. theme-audit goes deeper on this when the team has more than one theme; cite it rather than duplicating.

Migration signal (informational). For teams not yet on DTCG 2025.10, give one paragraph: how many tokens would need $type (after type resolution), how many composites need restructuring into object values, whether string values need converting to object shapes, and whether resolver files would be needed for theming. Name the lowest-risk first step (usually annotating primitives with $type, which changes no resolved values). Then offer the full phased migration plan with effort ranges if they want it — don't produce it unasked.

Step 3c: Token dependency map (conditional — include when codebase access is available)

Skip this section if there is no codebase access or if the audit is focused on token naming/structure only. Include it when the user has a codebase connected and wants to understand blast radius before making changes.

The dependency graph has one producer: codebase-index, which writes token-to-component edges to .ai/index/. If that directory exists, read the token edges from it, mark the orphan candidates from Step 0b on them, and list the high-fan-out tokens (bound by many components in this repo; say how many, and remember consumers outside the repo aren't counted). If it doesn't exist, say the blast-radius view wasn't built and suggest running codebase-index first; don't build a second graph here. Token-versus-Figma consistency is figma-variable-audit Step 6's job.

Step 4: Produce the audit report

Open with a headline sentence that tells the reader the overall state and where to focus. Example: "Your token architecture has three structural issues — two in the semantic tier and one cross-tier collision. Here's the full breakdown."

Structure the report as follows:


Token audit report

Summary One paragraph. What is the overall state of the token architecture? What is the most urgent problem? Write this like a peer review, not a compliance filing.

Tier structure

  • Primitive tier: 🟢 Strong / 🟡 Functional / 🟠 Weak / 🔴 Absent
  • Semantic tier: 🟢 Strong / 🟡 Functional / 🟠 Weak / 🔴 Absent
  • Component tier: 🟢 Strong / 🟡 Functional / 🟠 Weak, or "not used" (not a finding)
  • Tier leakage instances: [count]

Findings

List each finding with:

  • Finding ID (e.g. TA-01)
  • Severity: 🔴 Critical / 🟠 High / 🟡 Medium / ⚪ Low
  • Check category: Naming / Value / Coverage
  • Description: One sentence
  • Evidence: the token path(s) and the file and line where each is defined
  • Recommended action: Specific and actionable, naming the replacement

Remediation priority Group findings into three tiers:

  1. Fix first — structural problems affecting downstream consumers
  2. Fix next — naming debt that compounds over time
  3. Address eventually — coverage gaps and nice-to-haves

Effort estimates For each remediation tier, provide calibrated effort estimates with explicit assumptions and caveats:

FindingEstimated effortAssumptionsConfidence
[Finding ID][range, e.g. 4–8 hours][what this estimate assumes][High/Medium/Low]

Always give a range ("4–8 hours", not "6 hours"), state what it assumes, and rate confidence High / Medium / Low with what would need scoping for Low. For "Fix first" items, note that the estimate covers the token-side change only and consumer migration is extra. Over 200 tokens or more than 3 consuming apps, suggest a timeboxed spike before committing to sprint planning.

The goal is estimates a project manager can defend in sprint planning, not optimistic targets that erode trust when overrun.

Scope

  • Inspected: [token files, configs, and directories actually read]
  • Not inspected: [what was out of reach, e.g. consuming product repos, Figma]
  • How "none found" was checked: [e.g. the orphan search's positive control — omit if the report makes no absence claims]
  • Assumptions: [anything taken as given rather than verified]

End with the closing note below.


Recurring workflow

Follows the recurring-run procedure in the configuration-and-recurring note. Specific to this skill:

  • Compare total violation count: increasing, stable, or decreasing?
  • Flag persistent findings left unaddressed for 2+ cycles.
  • Add a "Trend since last audit" section to the report header with the violation count delta (+/- n) and the list of newly introduced violations (these are the priority — they are recent debt).

Step 5: Figma variables

Comparing code tokens with Figma variables, and creating or renaming variables in Figma, is figma-variable-audit's job (its Step 6 does the cross-reference, its Step 10 the writes). If a Figma file is configured or the user mentions Figma, say the code-side audit is done and offer to run figma-variable-audit against the same token source, so the two reports line up by name. Don't compare or write to Figma from here.

Closing note (include in every report)

End the report with:

A note on context: This audit sees your token files — it does not see the decisions behind them. Some findings may flag patterns your team chose deliberately. If any finding describes an intentional decision, let me know — I'll exclude it from future runs and learn your system's conventions. The goal is to surface problems you haven't seen yet, not to second-guess choices you've already made.

Quality checks

  • Every finding has a specific example with a file and line, not a generic description, and a severity from the rubric
  • The summary paragraph is honest about severity rather than diplomatic
  • Remediations are specific: "rename color.semantic.blue to color.action.primary" not "improve naming"
  • The tier structure assessment covers primitive and semantic tiers, and the component tier where the system uses one
  • If values were not available, the report notes which checks were skipped and why they matter
  • Structural DTCG checks, the dependency graph and the Figma comparison are cited from schema-validator, codebase-index and figma-variable-audit, not redone here
  • Orphan claims show their positive control and say which consumers weren't checked
  • The Scope block and the closing note about intentional deviations are present

© murphytrueman, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/token-audit of murphytrueman/design-system-ops.

Open the folder on GitHubat commit f167898

Compare with similar skills

Token Audit 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.

Token Audit compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Token Audit this skillmurphytrueman/design-system-ops201—~6.5kAutomated safety check: PassMIT
Figma Design System Builderwarpdotdev/warp65k2 repos~4.4kAutomated safety check: PassAGPL-3.0
Figma use_figma Plugin API Ruleswarpdotdev/warp65k4 repos~4.4kAutomated safety check: PassAGPL-3.0
Figma Design to Codewarpdotdev/warp65k4 repos~2.9kAutomated safety check: PassAGPL-3.0
Figma Screen Generatorwarpdotdev/warp65k2 repos~5kAutomated safety check: PassAGPL-3.0
Extract DesignManavarya09/design-extract4.2k—~786Automated safety check: NotesMIT

Similar skills

  • Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.

    65k GitHub starsUsed in 2 repos~4.4k tokens
    Frontend & DesignAuto-check passed
  • Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.

    65k GitHub starsUsed in 4 repos~4.4k tokens
    Frontend & DesignAuto-check passed
  • Figma Design to Code

    warpdotdev/warp

    Turns a Figma frame or component into production code that matches the design, using the Figma MCP server and the project's own design system.

    65k GitHub starsUsed in 4 repos~2.9k tokens
    Frontend & DesignAuto-check passed
  • Figma Screen Generator

    warpdotdev/warp

    Builds or updates full Figma screens from code or a description by reusing the file's published design system components, variables and styles.

    65k GitHub starsUsed in 2 repos~5k tokens
    Frontend & DesignAuto-check passed
  • Extract Design

    Manavarya09/design-extract

    Extract the full design language from any website URL. An agent skill from Manavarya09/design-extract.

    4.2k GitHub stars~786 tokensUpdated 8 days ago
    Frontend & DesignAuto-check: notes
  • Qt Figma Component Generation

    TheQtCompanyRnD/agent-skills

    Extract component metadata from a Figma design system and generate production-ready QML controls.

    459 GitHub stars~4.1k tokensUpdated yesterday
    Frontend & DesignAuto-check passed

More from murphytrueman/design-system-ops

All 36 skills in this repo
  • Agent Instructions

    murphytrueman/design-system-ops

    Write the AGENTS.md that tells coding agents how to use this design system: where things live, sourced rules, how to check work, what not to do; Claude, Cursor or Copilot pointers on request.

    201 GitHub stars~2.3k tokensUpdated 13 days ago
    Auto-check passed
  • AI Component Description

    murphytrueman/design-system-ops

    Write a six-section prose description (purpose, props, anti-patterns, composition, accessibility, examples) for a Figma component's description field so LLMs read it via MCP.

    201 GitHub stars~4.7k tokensUpdated 13 days ago
    Auto-check passed
  • Change Communication

    murphytrueman/design-system-ops

    Write release notes, a migration guide and a team announcement for a design system change that is already decided, scaled to its impact.

    201 GitHub stars~3.4k tokensUpdated 13 days ago
    Auto-check passed
  • Codebase Index

    murphytrueman/design-system-ops

    Generate machine-readable index files in .ai/index/ (component inventory, uses/usedBy graph, stats) for AI agents.

    201 GitHub stars~4.7k tokensUpdated 13 days ago
    Auto-check passed
  • Codemod Generator

    murphytrueman/design-system-ops

    Generate tested jscodeshift/postcss codemods for design system migrations: token renames, prop renames or removals, import paths, component swaps.

    201 GitHub stars~4.9k tokensUpdated 13 days ago
    Auto-check passed
  • Component API Validator

    murphytrueman/design-system-ops

    Audit prop APIs across a component library: naming consistency, boolean/default patterns, type coverage, exported types, breaking changes between versions.

    201 GitHub stars~4.3k tokensUpdated 13 days ago
    Auto-check passed

Works with

Questions about Token Audit

What does Token Audit do?

Audit how design tokens are defined: tiers, naming, alias chains, raw values, orphans, DTCG readiness. Token Audit is an agent skill from murphytrueman/design-system-ops. Audit how design tokens are defined: tiers, naming, alias chains, raw values, orphans, DTCG readiness.

When should I use Token Audit?

Token Audit fits situations like: tasks that involve Design tokens; tasks that involve Software architecture.

How do I install Token Audit in Claude Code?

Run `npx skills add murphytrueman/design-system-ops --skill token-audit -a claude-code`. Or copy the skill folder (skills/token-audit in murphytrueman/design-system-ops) into .claude/skills/token-audit in your project. Claude Code loads it when a task matches its description.

How do I install Token Audit in Codex?

Run `npx skills add murphytrueman/design-system-ops --skill token-audit -a codex`. Or copy the skill folder (skills/token-audit in murphytrueman/design-system-ops) into .agents/skills/token-audit in your project. Codex loads it when a task matches its description.

Can I use Token Audit in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add murphytrueman/design-system-ops --skill token-audit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/token-audit, .gemini/skills/token-audit, .github/skills/token-audit and .opencode/skills/token-audit in your project.

What does Token Audit need to run?

Going by SKILL.md and its folder, Token Audit needs the command-line tools its instructions call (npx and gh). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Write, Grep, Glob, Bash(cat:*), Bash(find:*), Bash(head:*), Bash(ls:*), Bash(sort:*), Bash(tail:*), Bash(wc:*), Bash(npx style-dictionary:*), Bash(npx terrazzo:*).

Does Token Audit access the network?

SKILL.md contains no URLs. Its commands use npx and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Token Audit safe to install?

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.

What licence does Token Audit use?

Token Audit is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Token Audit use?

About 6.5k tokens (SKILL.md is roughly 26k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Token Audit?

Skills that share tags, products or a category with Token Audit: Figma Design System Builder (warpdotdev/warp, 65k stars), Figma use_figma Plugin API Rules (warpdotdev/warp, 65k stars), Figma Design to Code (warpdotdev/warp, 65k stars) and Figma Screen Generator (warpdotdev/warp, 65k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Token Audit?

murphytrueman (a GitHub user) maintains it in murphytrueman/design-system-ops, which has 201 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on September 24, 2026.

Source: murphytrueman/design-system-ops on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.