Skip to main content
Cleanup rules catch structural problems that clutter your file, inflate the layer panel, and confuse developers during handoff. These findings are typically the easiest to fix and have the highest immediate impact on file hygiene.

Cleanup

Default: On | Severity: info A multi-check rule that detects four types of structural clutter. Each sub-check targets a different kind of leftover that accumulates during normal design work.

What it detects

What gets flagged: Any layer with visibility turned off.Example scenario: While exploring a dark mode variant, you hide the original header. The design ships, the hidden header stays behind. A developer inspecting the file sees two headers and asks which one is correct.Example finding:
Hidden layer Header/v1-old is not visible. 14 hidden layers found.
Why it matters: Hidden layers cause confusion during handoff because they appear in dev tool exports and layer inspectors. They also inflate file size and make the layer panel harder to navigate.Fix: Click Apply Fix to remove the hidden layer. LintKit deletes the layer from the file entirely.
Before applying, verify the layer is not hidden intentionally (for example, as part of a toggle state or variant). If the layer is inside a component variant, removing it could break the component.

When to enable it

Keep this rule on (it is the default) for all production files. It catches low-effort cleanup opportunities that improve file quality immediately. Disable only for rough exploration files where structure does not matter yet.

How to fix all cleanup findings at once

1

Run a scan

Open LintKit and run a scan. Cleanup findings appear in the Structure tab.
2

Review the findings

Click through each finding to verify nothing is hidden or empty intentionally. Pay special attention to hidden layers that might be variant states.
3

Bulk fix

Use bulk fix (Pro) to apply all cleanup fixes at once, or fix findings individually by clicking Apply Fix on each one.
4

Re-scan

Run another scan to confirm all cleanup findings are resolved. Fixing some findings (like ungrouping a single-child group) can reveal new findings.

Layer Naming

Default: On | Severity: info Detects layers with default auto-generated names (like Frame 1 or Rectangle 47) and naming convention violations. This rule uses a two-phase detection system that first catches generic names, then detects your team’s naming convention and flags deviations from it.

What it detects

Layer naming catches two broad categories of problems:
  1. Generic default names — Figma’s auto-generated names like Frame 1, Rectangle 47, Group 3. These tell developers nothing about what the layer is.
  2. Convention violations — If your file consistently uses camelCase naming, a layer named hero-banner (kebab-case) is flagged as a deviation.

Phase 1: Pattern detection

LintKit ships with 28 built-in patterns organized into four categories:
Matches Figma’s auto-generated names. These are the most common findings:
  • Shape defaults: Frame 1, Rectangle 47, Ellipse 1, Line 1, Polygon 1, Star 1, Vector 1
  • Container defaults: Group 3, Section 1
  • Content defaults: Text 1, Image 1
  • Component defaults: Component 1, Instance 1
  • Other defaults: Slice 1, Connector 1, Stamp 1, Sticky 1, Widget 1, Highlight 1, Shape with Text 1
  • Boolean operation defaults: Union, Subtract, Intersect, Exclude
Example finding:
Default name Frame 47 — 23 layers use Figma’s auto-generated names. Consider renaming to describe their purpose.
  • Copy suffix (enabled by default) — flags names like Button_copy, Card copy 2, Header Copy
  • Numbered suffix (disabled by default) — flags names like Button 2, Card 3. This is disabled because numbering may be intentional in certain contexts.
Example finding:
Copy suffix Card copy 2 — 5 layers appear to be duplicates with copy suffixes. Consider renaming them.
  • Temp names — flags temp, tmp, test, TODO, FIXME, untitled, asdf, and similar placeholder text
  • Placeholder prefix — flags WIP Button, DRAFT Header, DELETE Card, REMOVE Section, OLD Footer
Example finding:
Placeholder name TODO fix this layout — 3 layers have temporary names that should be cleaned up before handoff.
Layers matching these patterns are excluded from all naming checks:
  • Dot prefix (.layerName) — intentionally hidden layers (enabled by default)
  • Underscore prefix (_layerName) — internal/private layers (disabled by default)
  • Hash prefix (#layerName) — metadata layers (disabled by default)
You can add custom forbidden patterns in Settings to flag names specific to your team’s conventions.

Phase 2: Convention detection

When LintKit collects at least 5 naming samples with 70% or higher confidence, it detects the prevailing naming convention in your file. Supported conventions include camelCase, PascalCase, kebab-case, snake_case, and others. Once a convention is detected, any layer name that deviates is flagged. For example, if 80% of your layers use PascalCase, a layer named hero-banner (kebab-case) would be flagged.

Severity tiers

Layer naming severity scales based on where the layer sits in the hierarchy. Deeper, less important layers get lower severity:
TierLayer typesSeverityRationale
1 (highest)Top-level frames, sections, componentserrorThese appear in dev handoff navigation and page overview. A default name here is a serious problem.
2Shallow frames, groups, text nodes, instanceswarnVisible in the layer panel during development. Worth fixing before handoff.
3Deep frames, deep groupsinfoBuried in the layer tree. Nice to fix but low priority.
4 (skipped)Vectors, ellipses, shapesNot flaggedPrimitive shapes rarely need meaningful names.
Example: A component named Component 1 is tier 1 (error), while a deeply nested group named Group 3 is tier 3 (info).

How to fix findings

1

Start with tier 1 findings

Focus on top-level frames, sections, and components first. These are the names that appear in navigation and dev tools.
2

Rename with intent

Choose names that describe what the layer is or does: HeroSection, PrimaryButton, NavigationBar. Follow your team’s naming convention.
3

Fix single-child groups

If a naming finding also flags a single-child group, consider flattening it instead of just renaming it. Click Apply Fix to flatten the group.

Configuration

KeyDefaultDescription
naming.flagGenericNamestrueFlag default auto-generated names
naming.flagSingleChildGroupstrueFlag single-child groups (also covered by the cleanup rule)
Custom forbidden patterns[]Add your own regex patterns in Settings

Edge cases

  • Naming checks respect your layer filters: hidden and locked layers are skipped if layerFilters.includeHiddenLayers and layerFilters.includeLockedLayers are set to false (the default).
  • Layers inside component instances are skipped by default — rename the source component instead.
  • The maximum is 100 nodes per finding to keep the findings panel manageable.