
Rule toggles
Most rules can be toggled individually from the Settings panel. When a rule is off, LintKit skips it entirely during scanning. Broken Variables always runs and cannot be disabled — broken variable references are always worth catching.Rules that are off by default
Five rules ship disabled because they need your input before they’re useful:Spacing
Spacing settings control how LintKit checks padding, gaps, line heights, and element dimensions against your design system’s spacing scale.Allowed spacing values
- Config key:
allowedSpacing - Default: empty (uses multiples of
baseSpacing)
[0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64].
When this list is empty, LintKit generates values from baseSpacing instead.
Base spacing unit
- Config key:
baseSpacing - Default:
8
allowedSpacing is empty. If your system uses a 4px grid, set this to 4. If you use an 8px grid, the default works.
Spacing tolerance
- Config key:
spacingTolerance - Default:
0(exact match required)
1 if you want to allow values within 1px of your scale (for example, 7px would pass an 8px scale). Keep at 0 for strict enforcement.
Spacing sub-checks
LintKit checks spacing in four areas, each independently toggleable:Line heights
- Config key:
allowedLineHeights - Default:
'inherit'(uses the same scale asallowedSpacing)
[0, 4, 8, 16, 24, 32] but your line heights might be [16, 20, 24, 28, 32, 40, 48].
When set to 'inherit', LintKit uses your allowedSpacing values (or multiples of baseSpacing) for line height checks too.
Only pixel-based line heights are checked. Percentage and auto line heights are always valid.
Max dimension to check
- Config key:
maxDimensionToCheck - Default:
200
Corner radii
- Config key:
allowedRadii - Default:
[0, 4, 8, 12, 16, 24, 32]
0 in your list, but it’s there by default.
Example: setting up for your design system
Example: setting up for your design system
If your design system uses
2px for inputs, 4px for cards, 8px for modals, and 9999px for pills:Set allowedRadii to [0, 2, 4, 8, 9999].A component with a 6px radius would be flagged, with a suggestion to snap to either 4px or 8px (whichever is closest).Elements with mixed radii (different values on each corner) are skipped. LintKit cannot determine the intended value when corners differ.
Stroke weights
- Config key:
allowedStrokes - Default:
[1, 2, 3, 4]
Color tolerance
Two separate color tolerance settings control different features. Both use Delta E 2000, a perceptual color distance metric where lower values mean more similar colors.Style matching tolerance
- Config key:
colorTolerance - Default:
5
5 means LintKit will suggest styles that are perceptually close but not identical.
When to adjust:
- Lower to 2–3 if you’re getting suggestions for styles that are too different from the actual color
- Raise to 7–8 if you want broader suggestions (useful during a migration where colors may have drifted)
Duplicate style tolerance
- Config key:
duplicateStyles.colorThreshold - Default:
2
2 means only very similar styles are flagged as duplicates.
When to adjust:
- Lower to 1 if you want only near-exact duplicates flagged
- Raise to 3–4 if you want to catch styles that have drifted apart over time
These are different settings for different purposes. Style matching uses a wider tolerance (
5) to help you find possible matches. Duplicate detection uses a tighter tolerance (2) to avoid false positives when flagging styles to merge.Duplicate styles sub-toggles
Control which style types are checked for duplicates:Duplicate detection only compares styles within the same semantic category. For example,
text/primary is only compared against other text/* styles, not icon/* styles — even if they share the same color.Accessibility
WCAG level
- Config key:
accessibility.wcagLevel - Default:
'AA' - Options:
'AA'or'AAA'
Large text is 18pt or larger at regular weight, or 14pt or larger at bold weight.
Most teams use AA. Switch to AAA if your organization requires enhanced accessibility compliance or if you’re building for audiences with visual impairments.
Assumed background color
- Config key:
accessibility.assumedBgColor - Default:
'#FFFFFF'
'#1A1A1A'). This prevents false positives where LintKit assumes white and flags dark-on-dark text as passing.
Layer filtering
By default, hidden and locked layers are excluded entirely — LintKit doesn’t traverse into them at all.
Naming
Flag generic names
- Config key:
naming.flagGenericNames - Default: on
Custom forbidden patterns
- Config key:
naming.patterns - Default: none
Convention detection
LintKit observes the naming patterns in your file. When it detects a consistent convention (at least 5 samples with 70% or more consistency), it flags names that break the convention. This works automatically — no configuration needed.Component structure
Nesting depth thresholds
- Warning threshold:
componentStructure.nestingWarningThreshold, default4 - Error threshold:
componentStructure.nestingErrorThreshold, default6
- If your components are intentionally deep (e.g., complex data tables), raise the thresholds
- If you want stricter control, lower the warning threshold to
3
Example: understanding nesting depth
Example: understanding nesting depth
A
Card component that contains a Header instance, which contains an Avatar instance, which contains an Icon instance = 3 levels of nesting.At the default threshold of 4, this would not trigger a finding. Add one more level (e.g., Badge inside Icon) and it would trigger a warning.Absolute positioning
- Flag absolute in auto-layout:
layout.flagAbsoluteInAutoLayout, default on - Severity:
layout.absolutePositioningSeverity, defaultwarn(options:info,warn,error)
- Set severity to
infoif your team intentionally uses absolute positioning for overlays, badges, or floating elements inside auto-layout frames - Set severity to
errorif absolute positioning in auto-layout is always unintentional in your workflow - Turn the rule off entirely if your design patterns rely heavily on absolute positioning within auto-layout
Library governance
- Config key:
approvedLibraryKeys - Default: empty (all libraries allowed)
How auto-approval works
How auto-approval works
LintKit automatically approves libraries that share a prefix with the most-used library in your file. For example, if most of your components come from “Acme Design System”, LintKit auto-approves other libraries starting with “Acme” (like “Acme Icons”).This means you usually only need to add your primary library key — related libraries are approved automatically.
Ignored findings
Default scope
- Config key:
ignoredConfig.defaultScope - Default:
'file' - Options:
'file'or'user'
- File scope: The ignored state is shared with everyone who opens the file. When you ignore a finding, your teammates won’t see it either. Use this for intentional design decisions the team has agreed on.
- User scope: The ignored state is personal. Only you stop seeing the finding. Use this for findings you’ve reviewed and decided to skip without affecting your team.
Show ignored in results
- Config key:
ignoredConfig.showIgnoredInResults - Default: off
Tokens Studio auto-configuration
Connect Tokens Studio to auto-configure rules from your design token definitions instead of manually entering values.Enable
- Config key:
tokensStudio.enabled - Default: off
Enforcement mode
- Config key:
tokensStudio.enforcementMode - Default:
'advisory' - Options:
'advisory'or'strict'
- Advisory: Token values are merged with your manual configuration. Findings still appear but include token metadata so you can see which token matches. Use this to start with — it shows you the full picture without suppressing anything.
- Strict: If a design value matches a token definition, the finding is suppressed entirely. For example, an orphaned fill that happens to match a color token is not flagged. Use this when your team trusts the token system and only wants to see values that fall outside it.
Token type toggles
Control which token types LintKit enforces:Auto-sync
- Config key:
tokensStudio.autoSync - Default: on
Example configurations
8px spacing system with strict enforcement
8px spacing system with strict enforcement
baseSpacing:8allowedSpacing:[0, 4, 8, 16, 24, 32, 48, 64](include 4 for half-spacing)spacingTolerance:0(exact match)spacingChecks.autolayout: onspacingChecks.lineHeight: onspacingChecks.dimensions: off (enable later when ready)- Enable the Spacing Scale rule in Settings
Design system library file
Design system library file
If you’re working in a library file that publishes components and styles:
- Enable Missing Descriptions (off by default)
- Enable Duplicate Styles to find consolidation opportunities
- Set
ignoredConfig.defaultScopeto'file'so ignored findings are shared with co-editors - Variable Completeness, Unused Styles, and Hidden Components run automatically in library files
Accessibility-focused team
Accessibility-focused team
accessibility.wcagLevel:'AAA'accessibility.assumedBgColor: set to your actual default background color- Keep Contrast rule enabled (on by default)
- Consider enabling
spacingChecks.dimensionsto catch non-standard touch target sizes
Loose enforcement for exploration
Loose enforcement for exploration
During early design exploration when consistency is less important:
spacingTolerance:2(allow 2px deviation)layout.absolutePositioningSeverity:'info'(downgrade from warning)- Turn off Spacing Scale and Corner Radii until the design stabilizes
- Keep Broken Variables and Contrast on — these catch real problems regardless of design phase