When you open LintKit inside a file that is itself a published Figma library, the plugin detects this automatically and switches to library mode. Library mode adjusts which rules run, adds library-health rules that don’t apply to consumer files, and reframes finding messages to use library-author language.
How detection works
LintKit checks whether your file is a published library at startup by calling Figma’s getPublishStatusAsync() on your local styles. This API returns CURRENT or CHANGED only inside the actual library file — in a consumer file that uses the library, it returns UNPUBLISHED.
No setup is required. If you have at least one local style with a CURRENT or CHANGED publish status, LintKit activates library mode automatically.
Detection runs once when the plugin opens. If you publish a library for the first time while LintKit is already open, close and reopen the plugin to trigger detection.
Library dashboard
When library mode activates, LintKit navigates to a specialized Library Dashboard instead of the standard overview. The dashboard shows:
- A Library badge in the header confirming you’re in library mode
- An asset inventory — counts of your paint styles, text styles, effect styles, grid styles, component sets, and components
- A Run Audit button to start a library-focused scan
After scanning, the dashboard also displays:
- Your compliance score and handoff status (same metrics as the standard dashboard)
- Severity breakdown — clickable error, warning, and info counts to filter findings
- Scan stats — issues found, rules suppressed, scan time, and nodes scanned
- A suppressed rules notice showing how many consumer-only rules were skipped
Rules suppressed in library mode
These rules are designed for consumer files and produce misleading results inside a library file. LintKit suppresses them automatically:
| Rule | Why it’s suppressed |
|---|
| Orphaned fills | Library anatomy canvases intentionally use fills without styles |
| Orphaned strokes | Same — stroke examples are expected in a library file |
| Orphaned text | Documentation text in a library is not expected to use text styles |
| Orphaned effects | Effect examples on artboards are not production usage |
| Orphaned grids | Grid demos on pages are not production usage |
| Component wrappers | Groups wrapping instances are irrelevant in a file that defines components |
| Unapproved libraries | A library file is the library — checking for unapproved usage is circular |
The suppressed rules count reflects only the rules you had enabled. If you had already disabled orphaned grids, it won’t be counted in the suppressed total.
Suppressed rules are visible in the navigation with a tooltip: “Only available in consumer files.” They are not hidden — just disabled for this file type.
Library-only rules
These rules only produce findings inside a library file. In consumer files they silently return zero results.
Unused styles
Scans the current page for local paint, text, effect, and grid styles that have zero usages. Helps library authors identify styles that can be deprecated or removed.
- Severity: info
- Fix: Delete the unused style (with confirmation)
Missing descriptions
Checks all local styles, components, and component sets for empty or missing descriptions. Descriptions appear in Figma’s component/style picker and help consumers understand what each asset is for.
- Severity: info
- Fix: Auto-generates a description based on the asset’s name and type
Variable completeness
Audits all local variable collections for three issues:
| Check | Severity | Example |
|---|
| Missing mode values | warning | Variable color/brand has no value for the Dark mode |
| Broken alias references | error | Variable color/primary points to a deleted variable |
| Missing descriptions | info | Variable color/primary has no description |
This rule is especially valuable for multi-mode libraries (light/dark, brand themes) where incomplete variable coverage causes silent fallbacks for consumers.
Hidden components
Finds components and component sets whose names start with . or _. These prefixes hide the component from Figma’s publishing and sharing. This is an inventory rule — it reports hidden components so you can confirm they are intentionally hidden.
- Severity: info
- No auto-fix — this is informational only
Reframed finding messages
Rules that run in both modes reframe their messages to use library-author language. For example:
| Rule | Standard message | Library mode message |
|---|
| Duplicate styles | ”2 paint styles have identical values" | "Consumers will see redundant options: 2 paint styles have identical values” |
| Fractional pixels | ”Width is 100.5px" | "Library component has sub-pixel values: Width is 100.5px” |
| Contrast | ”Contrast ratio 2.8:1 below 4.5:1" | "Library component has contrast issue: Contrast ratio 2.8:1 below 4.5:1” |
This reframing helps library authors think about the downstream impact on consumers.
Sources panel
The Sources panel (in Settings) manages the external data sources LintKit uses for color matching and style comparisons. While not exclusive to library mode, it is closely related to library governance.
Figma libraries
Shows libraries discovered from your file. Each library row displays its name, color count, and an enabled/disabled toggle. You can:
- Toggle a library on or off for color matching
- Remove a library you don’t want to lint against
- Add manually by pasting any Figma file URL (
/file/, /design/, or /library/ URLs)
Enabled libraries are polled for updates every 10 minutes while the plugin is open.
Tokens Studio
Connect your Tokens Studio project to auto-configure spacing, radii, and color rules from your token definitions. Two connection methods:
- Connect via API — paste your project URL and API key
- Detect from file — checks Figma’s shared plugin data for an existing Tokens Studio connection
Once connected, the panel shows your project name, branch, token counts by type, and last sync time. See Tokens Studio integration for full setup.
GitHub
Connect a GitHub repository containing token files (JSON format). Paste the raw file URL and an optional personal access token for private repos. See GitHub integration for full setup.
When offline, cached and locally registered libraries remain available. An offline banner appears in the Sources panel — reconnect and refresh to discover new libraries.