Primitive tokens
Bottom layer of a 3-tier token system: raw values without intent or context. Examples: `blue-500: #3b82f6`, `space-4: 16px`, `radius-md: 8px`. Per Nathan Curtis (domain reference): *'primitive tokens as the options'*, the full menu of available colors/spacings of which only a subset will be referenced by semantic tokens.
Strengths
- Allows changing the whole palette by touching only 1 layer
- Neutral naming, no semantic pollution on primitive side
Limitations
- Components must NEVER reference a primitive directly, frequent anti-pattern
- Without DTCG `$description`, LLMs interpolate primitives as if they had intent (e.g. using `red-500` as error)
Best for
- DS with ≥2 brands or ≥2 themes, the primitive layer becomes the reuse lever
- Teams who want to avoid hardcoded palette debt