<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/introducing-linting-to-your-existing-design-tokens-system-klpfefxod" -->

---
title: Introducing Linting to your Existing Design Tokens System
description: Introducing linting to an established design token system often fails due to poor sequencing rather than technical issues. A phased rollout is recommended:...
canonical: https://daily.dev/posts/introducing-linting-to-your-existing-design-tokens-system-klpfefxod
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Introducing Linting to your Existing Design Tokens System | daily.dev
og:description: Introducing linting to an established design token system often fails due to poor sequencing rather than technical issues. A phased rollout is recommended:...
og:url: https://daily.dev/posts/introducing-linting-to-your-existing-design-tokens-system-klpfefxod
og:image: https://api.daily.dev/og/posts/KLPFefXod.png
og:image:alt: Introducing Linting to your Existing Design Tokens System
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Introducing Linting to your Existing Design Tokens System

**[Always Twisted](https://daily.dev/sources/alwaystwisted)** · 12 min read · 0 upvotes · 0 comments

## Summary

Introducing linting to an established design token system often fails due to poor sequencing rather than technical issues. A phased rollout is recommended: start with a baseline audit in report-only mode, fix critical errors before enforcing any rules, then gradually enable blocking checks in pre-commit and CI. Non-critical warnings should be treated as backlog and addressed incrementally. Ownership must be clearly defined — someone specific needs to own lint rule configuration, exception approvals, and documentation. Exceptions should be tracked with scope, rationale, approver, and expiry. Success is measured by metrics like time-to-fix linting errors, critical CI failures per week, exception request trends, and reduction in production token incidents. The key insight is that gradual, predictable rollouts with team buy-in outperform strict enforcement from day one.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.alwaystwisted.com/articles/introducing-linting-to-an-existing-token-system.html>

## Questions this post answers

### How should I roll out linting to a design token system that already has years of accumulated debt?

Use a five-phase approach: run linting in report-only mode to audit and classify issues (structural, quality, accessibility), fix critical errors like broken references and circular dependencies before enabling any blocking, turn on blocking only for critical rules in pre-commit and CI, manage non-critical warnings as scheduled backlog work, then expand rules one at a time with a warning period before promoting each to blocking.

_Teams planning a design token cleanup can find phased rollout patterns like this through daily.dev._

### What should I do if enforcing critical lint rules on design tokens ends up blocking too many commits?

Revert the overly strict rules back to warning-only, spend more time actually fixing the underlying critical errors, then re-enable enforcement once they're resolved. Blocking too much usually means the critical rule set was too aggressive or the prior cleanup phase wasn't actually finished; letting developers bypass checks instead destroys trust in the whole linting system.

_Anyone debugging a stalled lint rollout can compare recovery tactics like this via daily.dev._

### What are common legitimate reasons to grant an exception in a design token linting system?

Typical cases include vendor tokens using a different naming convention that can't be renamed, legacy platform constraints such as Swift's restrictions on valid Unicode characters in identifiers, transitional naming during a migration between token structures, and third-party component tokens owned by another team. Each exception should record why it's allowed, its scope, who approved it, and a review date or condition for removal.

_Maintainers documenting exception policies for token systems can track this reasoning on daily.dev._

## Similar posts on daily.dev

- [Where to Lint Design Tokens](https://daily.dev/posts/where-to-lint-design-tokens-xn9wlxngm) · Always Twisted · 0 upvotes · 0 comments
- [Linting Your Design Tokens, what and why](https://daily.dev/posts/linting-your-design-tokens-what-and-why-g2864c7nq) · Always Twisted · 0 upvotes · 0 comments
- [Accessibility Isn’t a Checklist. It’s an Architecture Decision](https://daily.dev/posts/accessibility-isn-t-a-checklist-it-s-an-architecture-decision-ps8j3bwgr) · Medium · 0 upvotes · 0 comments
- [Stop burning tokens on code review](https://daily.dev/posts/stop-burning-tokens-on-code-review-kxrtlop02) · swizec.com · 147 upvotes · 16 comments
- [Why linting alone can’t govern agentic development](https://daily.dev/posts/why-linting-alone-can-t-govern-agentic-development-i0mqo8eky) · The New Stack · 0 upvotes · 0 comments

---

Tags: [#cicd](https://daily.dev/tags/cicd), [#ui-design](https://daily.dev/tags/ui-design), [#design-systems](https://daily.dev/tags/design-systems)

[View this post on daily.dev](https://daily.dev/posts/introducing-linting-to-your-existing-design-tokens-system-klpfefxod)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Introducing Linting to your Existing Design Tokens System","url":"https://daily.dev/posts/introducing-linting-to-your-existing-design-tokens-system-klpfefxod","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/introducing-linting-to-your-existing-design-tokens-system-klpfefxod"},"datePublished":"2026-08-04T10:50:19.414Z","dateModified":"2026-09-14T06:03:28.451Z","description":"Introducing linting to an established design token system often fails due to poor sequencing rather than technical issues. A phased rollout is recommended:...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/b8022d031821110c6270670990518c94?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/b8022d031821110c6270670990518c94?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Always Twisted","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Always Twisted","logo":"https://media.daily.dev/image/upload/s--YjoaNten--/f_auto,q_auto/v1765712927/logos/alwaystwisted","url":"https://daily.dev/sources/alwaystwisted"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/introducing-linting-to-your-existing-design-tokens-system-klpfefxod","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"cicd,ui-design,design-systems","timeRequired":"PT12M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Always Twisted","item":"https://daily.dev/sources/alwaystwisted"},{"@type":"ListItem","position":3,"name":"Introducing Linting to your Existing Design Tokens System"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/introducing-linting-to-your-existing-design-tokens-system-klpfefxod#faq","mainEntity":[{"@type":"Question","name":"How should I roll out linting to a design token system that already has years of accumulated debt?","acceptedAnswer":{"@type":"Answer","text":"Use a five-phase approach: run linting in report-only mode to audit and classify issues (structural, quality, accessibility), fix critical errors like broken references and circular dependencies before enabling any blocking, turn on blocking only for critical rules in pre-commit and CI, manage non-critical warnings as scheduled backlog work, then expand rules one at a time with a warning period before promoting each to blocking. Teams planning a design token cleanup can find phased rollout patterns like this through daily.dev."}},{"@type":"Question","name":"What should I do if enforcing critical lint rules on design tokens ends up blocking too many commits?","acceptedAnswer":{"@type":"Answer","text":"Revert the overly strict rules back to warning-only, spend more time actually fixing the underlying critical errors, then re-enable enforcement once they're resolved. Blocking too much usually means the critical rule set was too aggressive or the prior cleanup phase wasn't actually finished; letting developers bypass checks instead destroys trust in the whole linting system. Anyone debugging a stalled lint rollout can compare recovery tactics like this via daily.dev."}},{"@type":"Question","name":"What are common legitimate reasons to grant an exception in a design token linting system?","acceptedAnswer":{"@type":"Answer","text":"Typical cases include vendor tokens using a different naming convention that can't be renamed, legacy platform constraints such as Swift's restrictions on valid Unicode characters in identifiers, transitional naming during a migration between token structures, and third-party component tokens owned by another team. Each exception should record why it's allowed, its scope, who approved it, and a review date or condition for removal. Maintainers documenting exception policies for token systems can track this reasoning on daily.dev."}}]}
```

