Figma Lucide Angular Bridge
Goal
Prefer lucide-angular for Lucide icons during Figma implementation and avoid downloading duplicate icon assets.
Trigger Signals
Use this skill when the request includes one or more of:
- Implementing UI from Figma in Angular
- Converting downloaded Lucide SVGs to
lucide-angular
- Replacing icon assets with package-based Lucide components
- Keeping icon delivery bundle-safe while reusing existing project dependencies
- Reusing an already-installed icon package instead of asset downloads
Workflow
1. Confirm context
- Use this skill only when implementing UI from Figma context in an Angular project.
- Treat any of the following as valid Figma context evidence: Figma URL/file key/node-id, Figma MCP tool output, or explicit "implement this Figma design/node" request.
- Read
package.json first.
- Continue with Lucide bridging only if
lucide-angular exists in dependencies or devDependencies.
- If
lucide-angular is not installed, skip substitution and continue standard asset workflow without package changes.
- If
package.json is missing or unreadable, treat package status as unknown and keep standard asset workflow (package_missing fallback reason).
- If the request is not Figma-driven implementation work, skip this skill.
2. Detect Lucide icons in Figma output
Treat an icon as Lucide when at least one is true:
- Node/layer/component name includes
lucide, icon/lucide, or lucide:.
- Asset or export name matches known Lucide naming patterns (for example
chevron-left, circle-check, arrow-up-right).
- Existing project code already maps the same semantic icon name to a Lucide import.
If confidence is low, keep the asset workflow for that icon.
Confidence rule:
- High confidence: at least 2 Lucide indicators match -> candidate for
lucide-angular.
- Low confidence: fewer than 2 indicators -> keep original asset.
Apply confidence scoring per icon, not per screen.
3. Resolve each icon with deterministic decision order
Run the following sequence per icon:
- Scope gate: if icon is clearly non-Lucide (brand mark, illustration, photo), keep normal asset path.
- Package gate: if
lucide-angular is absent, keep normal asset path.
- Confidence gate: if fewer than 2 Lucide indicators match, keep normal asset path.
- Mapping gate: if a Lucide export resolves confidently and exists in
lucide-angular, use lucide-angular.
- Fallback gate: if export cannot be resolved confidently, keep normal asset path for that icon only.
Do not stop processing remaining icons when one icon falls back.
4. Map Figma icon names to Lucide exports
Normalize the name before mapping:
- Remove vendor prefixes/suffixes like
lucide:, icon/, .svg.
- Convert separators (
-, _, space, /) to word boundaries.
- Convert to PascalCase for export names.
Examples:
chevron-left -> ChevronLeft
circle_check -> CircleCheck
arrow up right -> ArrowUpRight
Resolution order:
- Prefer an existing project mapping already used in the codebase.
- Otherwise use normalized PascalCase export candidate.
- Verify export availability from actual
lucide-angular exports (for example local typings/index exports, existing imports in project code, or local package metadata).
- If export availability cannot be verified locally with confidence, fall back to asset for that icon only (
unresolved_export).
5. Implement with lucide-angular instead of asset files
Do not download Lucide icon SVG/image assets when mapped successfully.
For standalone components:
import { LucideAngularModule, ChevronLeft } from 'lucide-angular';
@Component({
standalone: true,
imports: [LucideAngularModule],
})
export class ExampleComponent {
readonly ChevronLeftIcon = ChevronLeft;
}
<lucide-icon [img]="ChevronLeftIcon" aria-label="Back"></lucide-icon>
For NgModule-based usage:
import { LucideAngularModule, ChevronLeft } from 'lucide-angular';
@NgModule({
imports: [LucideAngularModule.pick({ ChevronLeft })],
})
export class ExampleModule {}
<lucide-icon name="chevron-left" aria-label="Back"></lucide-icon>
Convention rule:
- Preserve the existing project convention when one pattern dominates (for example
[img] binding or name usage).
- Do not introduce a mixed icon pattern in the same file unless the file already mixes patterns.
- Do not switch conventions globally as part of this skill.
- Keep template tag convention consistent too (
lucide-icon, lucide-angular, i-lucide, or span-lucide) unless the file already mixes tags.
6. Keep non-Lucide assets on standard path
- Continue normal Figma asset download for photos, illustrations, brand logos, and non-Lucide iconography.
- Apply this substitution only to icons confidently identified as Lucide.
7. Report deterministic substitution results
Final response should include a concise conversion summary:
- Converted icons: list icon names mapped to Lucide exports.
- Fallback icons: list names kept as assets with reason (
low_confidence, unresolved_export, package_missing, non_lucide_asset).
- Convention used:
[img] or name pattern, based on existing project usage.
Guardrails
- Never install a new icon package from this skill; it only reuses existing
lucide-angular installations.
- Never bulk-import all Lucide icons.
- Prefer explicit icon imports and minimal registration.
- Preserve existing project conventions and Angular architecture.
- If a requested icon is not available in Lucide, use the original Figma asset for that icon.
- Do not rewrite unrelated assets, styles, layout, or component structure while applying icon substitution.
- Do not rename unrelated symbols or refactor unrelated files.
- Do not introduce new dependencies, codemods, or repo-wide icon migrations from this skill.
Self-check Before Final Output
package.json was checked for lucide-angular.
- Per-icon decision order was applied (
scope -> package -> confidence -> mapping -> fallback).
- Only high-confidence Lucide icons were substituted.
- Non-Lucide assets stayed on normal asset path.
- No bulk icon import pattern was introduced.
- Accessibility labels remained intact for icon usage.
- Fallback behavior is explicit for unmapped or missing Lucide exports.
- Final response contains converted and fallback icon lists with explicit fallback reasons.
- Existing icon usage convention was preserved.
Assistant-Portability Notes
- Keep instructions tool-agnostic: apply the same gates whether the workflow runs in Codex, Cursor, Copilot, or manual implementation.
- If helper tooling differs, preserve the same per-icon decision order and fallback reasons.
- Prefer minimal, local edits over framework-wide refactors.
Outcome
Angular implementations from Figma use lucide-angular for Lucide icons, reduce duplicated SVG assets, and stay consistent with project icon conventions.
1---2name: figma-lucide-angular-bridge3description: Bridge Figma-to-Angular icon delivery by converting only high-confidence Lucide candidates to existing `lucide-angular` patterns, while keeping non-Lucide or unresolved icons on the normal asset path. Use when requests include Figma URL/file-key/node-id implementation, Lucide SVG replacement, icon package reuse, or bundle-safe conversion without installing new packages.4---5
6# Figma Lucide Angular Bridge
7
8## Goal
9
10Prefer `lucide-angular` for Lucide icons during Figma implementation and avoid downloading duplicate icon assets.
11
12## Trigger Signals
13
14Use this skill when the request includes one or more of:
15- Implementing UI from Figma in Angular
16- Converting downloaded Lucide SVGs to `lucide-angular`
17- Replacing icon assets with package-based Lucide components
18- Keeping icon delivery bundle-safe while reusing existing project dependencies
19- Reusing an already-installed icon package instead of asset downloads
20
21## Workflow
22
23### 1. Confirm context
24
25- Use this skill only when implementing UI from Figma context in an Angular project.
26- Treat any of the following as valid Figma context evidence: Figma URL/file key/node-id, Figma MCP tool output, or explicit "implement this Figma design/node" request.
27- Read `package.json` first.
28- Continue with Lucide bridging only if `lucide-angular` exists in `dependencies` or `devDependencies`.
29- If `lucide-angular` is not installed, skip substitution and continue standard asset workflow without package changes.
30- If `package.json` is missing or unreadable, treat package status as unknown and keep standard asset workflow (`package_missing` fallback reason).
31- If the request is not Figma-driven implementation work, skip this skill.
32
33### 2. Detect Lucide icons in Figma output
34
35Treat an icon as Lucide when at least one is true:
36
37- Node/layer/component name includes `lucide`, `icon/lucide`, or `lucide:`.
38- Asset or export name matches known Lucide naming patterns (for example `chevron-left`, `circle-check`, `arrow-up-right`).
39- Existing project code already maps the same semantic icon name to a Lucide import.
40
41If confidence is low, keep the asset workflow for that icon.
42
43Confidence rule:
44- High confidence: at least 2 Lucide indicators match -> candidate for `lucide-angular`.
45- Low confidence: fewer than 2 indicators -> keep original asset.
46
47Apply confidence scoring per icon, not per screen.
48
49### 3. Resolve each icon with deterministic decision order
50
51Run the following sequence per icon:
52
531. Scope gate: if icon is clearly non-Lucide (brand mark, illustration, photo), keep normal asset path.
542. Package gate: if `lucide-angular` is absent, keep normal asset path.
553. Confidence gate: if fewer than 2 Lucide indicators match, keep normal asset path.
564. Mapping gate: if a Lucide export resolves confidently and exists in `lucide-angular`, use `lucide-angular`.
575. Fallback gate: if export cannot be resolved confidently, keep normal asset path for that icon only.
58
59Do not stop processing remaining icons when one icon falls back.
60
61### 4. Map Figma icon names to Lucide exports
62
63Normalize the name before mapping:
64
651. Remove vendor prefixes/suffixes like `lucide:`, `icon/`, `.svg`.
662. Convert separators (`-`, `_`, space, `/`) to word boundaries.
673. Convert to PascalCase for export names.
68
69Examples:
70
71- `chevron-left` -> `ChevronLeft`
72- `circle_check` -> `CircleCheck`
73- `arrow up right` -> `ArrowUpRight`
74
75Resolution order:
761. Prefer an existing project mapping already used in the codebase.
772. Otherwise use normalized PascalCase export candidate.
783. Verify export availability from actual `lucide-angular` exports (for example local typings/index exports, existing imports in project code, or local package metadata).
794. If export availability cannot be verified locally with confidence, fall back to asset for that icon only (`unresolved_export`).
80
81### 5. Implement with `lucide-angular` instead of asset files
82
83Do not download Lucide icon SVG/image assets when mapped successfully.
84
85For standalone components:
86
87```ts
88import { LucideAngularModule, ChevronLeft } from 'lucide-angular';
89
90@Component({
91 standalone: true,
92 imports: [LucideAngularModule],
93})
94export class ExampleComponent {
95 readonly ChevronLeftIcon = ChevronLeft;
96}
97```
98
99```html
100<lucide-icon [img]="ChevronLeftIcon" aria-label="Back"></lucide-icon>
101```
102
103For NgModule-based usage:
104
105```ts
106import { LucideAngularModule, ChevronLeft } from 'lucide-angular';
107
108@NgModule({
109 imports: [LucideAngularModule.pick({ ChevronLeft })],
110})
111export class ExampleModule {}
112```
113
114```html
115<lucide-icon name="chevron-left" aria-label="Back"></lucide-icon>
116```
117
118Convention rule:
119- Preserve the existing project convention when one pattern dominates (for example `[img]` binding or `name` usage).
120- Do not introduce a mixed icon pattern in the same file unless the file already mixes patterns.
121- Do not switch conventions globally as part of this skill.
122- Keep template tag convention consistent too (`lucide-icon`, `lucide-angular`, `i-lucide`, or `span-lucide`) unless the file already mixes tags.
123
124### 6. Keep non-Lucide assets on standard path
125
126- Continue normal Figma asset download for photos, illustrations, brand logos, and non-Lucide iconography.
127- Apply this substitution only to icons confidently identified as Lucide.
128
129### 7. Report deterministic substitution results
130
131Final response should include a concise conversion summary:
132
133- Converted icons: list icon names mapped to Lucide exports.
134- Fallback icons: list names kept as assets with reason (`low_confidence`, `unresolved_export`, `package_missing`, `non_lucide_asset`).
135- Convention used: `[img]` or `name` pattern, based on existing project usage.
136
137## Guardrails
138
139- Never install a new icon package from this skill; it only reuses existing `lucide-angular` installations.
140- Never bulk-import all Lucide icons.
141- Prefer explicit icon imports and minimal registration.
142- Preserve existing project conventions and Angular architecture.
143- If a requested icon is not available in Lucide, use the original Figma asset for that icon.
144- Do not rewrite unrelated assets, styles, layout, or component structure while applying icon substitution.
145- Do not rename unrelated symbols or refactor unrelated files.
146- Do not introduce new dependencies, codemods, or repo-wide icon migrations from this skill.
147
148## Self-check Before Final Output
149
150- `package.json` was checked for `lucide-angular`.
151- Per-icon decision order was applied (`scope -> package -> confidence -> mapping -> fallback`).
152- Only high-confidence Lucide icons were substituted.
153- Non-Lucide assets stayed on normal asset path.
154- No bulk icon import pattern was introduced.
155- Accessibility labels remained intact for icon usage.
156- Fallback behavior is explicit for unmapped or missing Lucide exports.
157- Final response contains converted and fallback icon lists with explicit fallback reasons.
158- Existing icon usage convention was preserved.
159
160## Assistant-Portability Notes
161
162- Keep instructions tool-agnostic: apply the same gates whether the workflow runs in Codex, Cursor, Copilot, or manual implementation.
163- If helper tooling differs, preserve the same per-icon decision order and fallback reasons.
164- Prefer minimal, local edits over framework-wide refactors.
165
166## Outcome
167
168Angular implementations from Figma use `lucide-angular` for Lucide icons, reduce duplicated SVG assets, and stay consistent with project icon conventions.