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

# Library mode

> Automatic detection and specialized rules for published Figma design libraries

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.

<img src="https://mintcdn.com/lintkit/x-2OxSQDRPShNqP0/images/library-version.gif?s=26303c47e9ce832876fb28d8b034c596" alt="Opening LintKit in a library file and seeing the library mode dashboard" style={{ borderRadius: '8px', marginBottom: '16px' }} width="800" height="698" data-path="images/library-version.gif" />

## 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.

<Info>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.</Info>

## 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.

<Tip>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.</Tip>

## 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 you've explicitly registered. 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 — this fully purges it until you add it again
* **Add by URL** by pasting any Figma file URL (`/file/`, `/design/`, or `/library/` URLs)

Libraries are only registered when you add them by URL or run LintKit inside the library file. Using a component from a library in your working file does not automatically register it.

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](/integrations/tokens-studio) 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](/integrations/github) for full setup.

<Info>When offline, cached and explicitly registered libraries remain available. An offline banner appears in the Sources panel — reconnect and refresh to update library data.</Info>
