@atezer/figma-mcp-bridge 1.7.23 → 1.7.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/.claude-plugin/plugin.json +37 -0
  2. package/.cursor-plugin/plugin.json +21 -0
  3. package/CHANGELOG.md +30 -0
  4. package/README.md +4 -3
  5. package/agents/ds-auditor.md +29 -0
  6. package/agents/screen-builder.md +29 -0
  7. package/agents/token-syncer.md +26 -0
  8. package/assets/logo.png +0 -0
  9. package/commands/add-library.md +122 -0
  10. package/commands/ds-add.md +255 -0
  11. package/commands/ds-sync.md +314 -0
  12. package/commands/implement.md +43 -0
  13. package/commands/install-library.md +73 -0
  14. package/commands/setup.md +26 -0
  15. package/commands/test.md +39 -0
  16. package/commands/update.md +25 -0
  17. package/dist/core/config.d.ts +1 -5
  18. package/dist/core/config.d.ts.map +1 -1
  19. package/dist/core/config.js +11 -111
  20. package/dist/core/config.js.map +1 -1
  21. package/dist/core/plugin-bridge-server.d.ts.map +1 -1
  22. package/dist/core/plugin-bridge-server.js +1 -2
  23. package/dist/core/plugin-bridge-server.js.map +1 -1
  24. package/dist/core/response-guard.d.ts +1 -1
  25. package/dist/core/response-guard.js +1 -1
  26. package/dist/core/types/index.d.ts +2 -98
  27. package/dist/core/types/index.d.ts.map +1 -1
  28. package/dist/core/version.d.ts +1 -1
  29. package/dist/core/version.js +1 -1
  30. package/dist/local-plugin-only.d.ts.map +1 -1
  31. package/dist/local-plugin-only.js +14 -13
  32. package/dist/local-plugin-only.js.map +1 -1
  33. package/f-mcp-plugin/README.md +8 -15
  34. package/f-mcp-plugin/manifest.json +1 -3
  35. package/hooks/hooks.json +26 -0
  36. package/package.json +15 -31
  37. package/skills/BRAND_PROFILE_SCHEMA.md +113 -0
  38. package/skills/SKILL_INDEX.md +194 -0
  39. package/skills/TOOL_MAPPING.md +111 -0
  40. package/skills/ai-handoff-export/SKILL.md +254 -0
  41. package/skills/apply-figma-design-system/SKILL.md +104 -0
  42. package/skills/audit-figma-design-system/SKILL.md +278 -0
  43. package/skills/code-design-mapper/SKILL.md +370 -0
  44. package/skills/component-documentation/SKILL.md +190 -0
  45. package/skills/design-drift-detector/SKILL.md +407 -0
  46. package/skills/design-system-rules/SKILL.md +407 -0
  47. package/skills/design-token-pipeline/SKILL.md +619 -0
  48. package/skills/ds-impact-analysis/SKILL.md +266 -0
  49. package/skills/figjam-diagram-builder/SKILL.md +172 -0
  50. package/skills/figma-a11y-audit/SKILL.md +587 -0
  51. package/skills/figma-canvas-ops/SKILL.md +325 -0
  52. package/skills/figma-screen-analyzer/SKILL.md +235 -0
  53. package/skills/fix-figma-design-system-finding/SKILL.md +117 -0
  54. package/skills/fmcp-project-rules/SKILL.md +93 -0
  55. package/skills/generate-figma-library/SKILL.md +598 -0
  56. package/skills/generate-figma-screen/SKILL.md +689 -0
  57. package/skills/implement-design/SKILL.md +473 -0
  58. package/skills/ux-copy-guidance/SKILL.md +373 -0
  59. package/skills/visual-qa-compare/SKILL.md +166 -0
  60. package/dist/browser/base.d.ts +0 -50
  61. package/dist/browser/base.d.ts.map +0 -1
  62. package/dist/browser/base.js +0 -6
  63. package/dist/browser/base.js.map +0 -1
  64. package/dist/browser/local.d.ts +0 -81
  65. package/dist/browser/local.d.ts.map +0 -1
  66. package/dist/browser/local.js +0 -283
  67. package/dist/browser/local.js.map +0 -1
  68. package/dist/core/console-monitor.d.ts +0 -82
  69. package/dist/core/console-monitor.d.ts.map +0 -1
  70. package/dist/core/console-monitor.js +0 -428
  71. package/dist/core/console-monitor.js.map +0 -1
  72. package/dist/core/design-system-manifest.d.ts +0 -272
  73. package/dist/core/design-system-manifest.d.ts.map +0 -1
  74. package/dist/core/design-system-manifest.js +0 -261
  75. package/dist/core/design-system-manifest.js.map +0 -1
  76. package/dist/core/enrichment/enrichment-service.d.ts +0 -52
  77. package/dist/core/enrichment/enrichment-service.d.ts.map +0 -1
  78. package/dist/core/enrichment/enrichment-service.js +0 -272
  79. package/dist/core/enrichment/enrichment-service.js.map +0 -1
  80. package/dist/core/enrichment/index.d.ts +0 -8
  81. package/dist/core/enrichment/index.d.ts.map +0 -1
  82. package/dist/core/enrichment/index.js +0 -8
  83. package/dist/core/enrichment/index.js.map +0 -1
  84. package/dist/core/enrichment/relationship-mapper.d.ts +0 -106
  85. package/dist/core/enrichment/relationship-mapper.d.ts.map +0 -1
  86. package/dist/core/enrichment/relationship-mapper.js +0 -352
  87. package/dist/core/enrichment/relationship-mapper.js.map +0 -1
  88. package/dist/core/enrichment/style-resolver.d.ts +0 -80
  89. package/dist/core/enrichment/style-resolver.d.ts.map +0 -1
  90. package/dist/core/enrichment/style-resolver.js +0 -327
  91. package/dist/core/enrichment/style-resolver.js.map +0 -1
  92. package/dist/core/figma-api.d.ts +0 -137
  93. package/dist/core/figma-api.d.ts.map +0 -1
  94. package/dist/core/figma-api.js +0 -274
  95. package/dist/core/figma-api.js.map +0 -1
  96. package/dist/core/figma-desktop-connector.d.ts +0 -242
  97. package/dist/core/figma-desktop-connector.d.ts.map +0 -1
  98. package/dist/core/figma-desktop-connector.js +0 -1042
  99. package/dist/core/figma-desktop-connector.js.map +0 -1
  100. package/dist/core/figma-reconstruction-spec.d.ts +0 -162
  101. package/dist/core/figma-reconstruction-spec.d.ts.map +0 -1
  102. package/dist/core/figma-reconstruction-spec.js +0 -387
  103. package/dist/core/figma-reconstruction-spec.js.map +0 -1
  104. package/dist/core/figma-tools.d.ts +0 -21
  105. package/dist/core/figma-tools.d.ts.map +0 -1
  106. package/dist/core/figma-tools.js +0 -2920
  107. package/dist/core/figma-tools.js.map +0 -1
  108. package/dist/core/snippet-injector.d.ts +0 -24
  109. package/dist/core/snippet-injector.d.ts.map +0 -1
  110. package/dist/core/snippet-injector.js +0 -97
  111. package/dist/core/snippet-injector.js.map +0 -1
  112. package/dist/core/types/enriched.d.ts +0 -213
  113. package/dist/core/types/enriched.d.ts.map +0 -1
  114. package/dist/core/types/enriched.js +0 -6
  115. package/dist/core/types/enriched.js.map +0 -1
  116. package/dist/local.d.ts +0 -73
  117. package/dist/local.d.ts.map +0 -1
  118. package/dist/local.js +0 -2605
  119. package/dist/local.js.map +0 -1
@@ -1,283 +0,0 @@
1
- /**
2
- * Local Browser Manager
3
- * Connects to Figma Desktop via Chrome Remote Debugging Protocol
4
- */
5
- import puppeteer from 'puppeteer-core';
6
- import { createChildLogger } from '../core/logger.js';
7
- const logger = createChildLogger({ component: 'local-browser' });
8
- /**
9
- * Local Browser Manager
10
- * Connects to existing Figma Desktop instance via remote debugging port
11
- */
12
- export class LocalBrowserManager {
13
- constructor(config) {
14
- this.browser = null;
15
- this.page = null;
16
- this.config = config;
17
- }
18
- /**
19
- * Connect to Figma Desktop via remote debugging port
20
- */
21
- async launch() {
22
- if (this.browser) {
23
- logger.info('Browser already connected, reusing instance');
24
- return;
25
- }
26
- const { debugHost, debugPort } = this.config;
27
- const browserURL = `http://${debugHost}:${debugPort}`;
28
- logger.info({ browserURL }, 'Connecting to Figma Desktop');
29
- try {
30
- // Connect to existing browser (Figma Desktop)
31
- this.browser = await puppeteer.connect({
32
- browserURL,
33
- defaultViewport: null, // Use Figma's viewport
34
- });
35
- logger.info('Connected to Figma Desktop successfully');
36
- // Handle disconnection
37
- this.browser.on('disconnected', () => {
38
- logger.warn('Disconnected from Figma Desktop');
39
- this.browser = null;
40
- this.page = null;
41
- });
42
- }
43
- catch (error) {
44
- logger.error({ error, browserURL }, 'Failed to connect to Figma Desktop');
45
- throw new Error(`Failed to connect to Figma Desktop at ${browserURL}.\n\n` +
46
- `Make sure:\n` +
47
- `1. Figma Desktop is running\n` +
48
- `2. Figma was launched with: --remote-debugging-port=${debugPort}\n` +
49
- `3. "Use Developer VM" is enabled in: Plugins → Development → Use Developer VM\n\n` +
50
- `macOS launch command:\n` +
51
- ` open -a "Figma" --args --remote-debugging-port=${debugPort}\n\n` +
52
- `Error: ${error instanceof Error ? error.message : String(error)}`);
53
- }
54
- }
55
- /**
56
- * Find the best page for plugin debugging
57
- * Actively searches for pages with workers across ALL tabs
58
- */
59
- async findBestPage() {
60
- if (!this.browser) {
61
- return null;
62
- }
63
- const pages = await this.browser.pages();
64
- // Find Figma pages with workers
65
- const figmaPages = pages.filter(p => {
66
- const url = p.url();
67
- return url.includes('figma.com') && !url.includes('devtools');
68
- });
69
- if (figmaPages.length === 0) {
70
- return null;
71
- }
72
- // Check each page for workers
73
- const pagesWithWorkers = figmaPages
74
- .map(p => ({
75
- page: p,
76
- workerCount: p.workers().length,
77
- url: p.url()
78
- }))
79
- .filter(p => p.workerCount > 0)
80
- .sort((a, b) => b.workerCount - a.workerCount); // Most workers first
81
- if (pagesWithWorkers.length > 0) {
82
- logger.info({
83
- url: pagesWithWorkers[0].url,
84
- workerCount: pagesWithWorkers[0].workerCount,
85
- totalPagesWithWorkers: pagesWithWorkers.length
86
- }, 'Found page with active plugin workers');
87
- return pagesWithWorkers[0].page;
88
- }
89
- // No workers found - prefer design/file pages
90
- const designPage = figmaPages.find(p => p.url().includes('/design/') || p.url().includes('/file/'));
91
- return designPage || figmaPages[0];
92
- }
93
- /**
94
- * Get active Figma page or create new one
95
- * Prefers pages with active plugin workers for plugin debugging
96
- */
97
- async getPage() {
98
- // Ensure connection is alive before proceeding
99
- await this.ensureConnection();
100
- if (!this.browser) {
101
- await this.launch();
102
- }
103
- // ALWAYS re-check for best page (don't cache if we might have missed workers)
104
- const bestPage = await this.findBestPage();
105
- if (bestPage) {
106
- const workerCount = bestPage.workers().length;
107
- logger.info({
108
- url: bestPage.url(),
109
- workerCount,
110
- cached: this.page === bestPage
111
- }, 'Selected page for monitoring');
112
- this.page = bestPage;
113
- return this.page;
114
- }
115
- // Fallback: Get any existing page or create new one
116
- const pages = await this.browser.pages();
117
- if (pages.length > 0 && pages[0].url() !== 'about:blank') {
118
- logger.warn({ url: pages[0].url() }, 'No Figma pages found, using first available page');
119
- this.page = pages[0];
120
- return this.page;
121
- }
122
- // Last resort: Create new page
123
- logger.warn('No suitable pages found, creating new page in Figma Desktop');
124
- this.page = await this.browser.newPage();
125
- return this.page;
126
- }
127
- /**
128
- * Navigate to Figma URL
129
- */
130
- async navigateToFigma(figmaUrl) {
131
- // Ensure connection is alive before navigation
132
- await this.ensureConnection();
133
- const page = await this.getPage();
134
- // Default to Figma homepage if no URL provided
135
- const url = figmaUrl || 'https://www.figma.com';
136
- logger.info({ url }, 'Navigating to Figma');
137
- try {
138
- await page.goto(url, {
139
- waitUntil: 'networkidle2',
140
- timeout: 30000,
141
- });
142
- logger.info({ url }, 'Navigation successful');
143
- return page;
144
- }
145
- catch (error) {
146
- logger.error({ error, url }, 'Navigation failed');
147
- throw new Error(`Failed to navigate to ${url}: ${error}`);
148
- }
149
- }
150
- /**
151
- * Reload current page
152
- */
153
- async reload(hardReload = false) {
154
- if (!this.page || this.page.isClosed()) {
155
- throw new Error('No active page to reload');
156
- }
157
- logger.info({ hardReload }, 'Reloading page');
158
- try {
159
- await this.page.reload({
160
- waitUntil: 'networkidle2',
161
- timeout: 30000,
162
- });
163
- logger.info('Page reloaded successfully');
164
- }
165
- catch (error) {
166
- logger.error({ error }, 'Page reload failed');
167
- throw new Error(`Page reload failed: ${error}`);
168
- }
169
- }
170
- /**
171
- * Execute JavaScript in page context
172
- */
173
- async evaluate(fn) {
174
- const page = await this.getPage();
175
- return page.evaluate(fn);
176
- }
177
- // Screenshot functionality removed - use Figma REST API's getImages() instead
178
- // See: figma_take_screenshot and figma_get_component_image tools
179
- /**
180
- * Check if browser is connected
181
- */
182
- isRunning() {
183
- return this.browser !== null && this.browser.isConnected();
184
- }
185
- /**
186
- * Disconnect from browser (doesn't close Figma Desktop)
187
- */
188
- async close() {
189
- if (!this.browser) {
190
- return;
191
- }
192
- logger.info('Disconnecting from Figma Desktop');
193
- try {
194
- // Just disconnect, don't close Figma Desktop
195
- this.browser.disconnect();
196
- this.browser = null;
197
- this.page = null;
198
- logger.info('Disconnected from Figma Desktop successfully');
199
- }
200
- catch (error) {
201
- logger.error({ error }, 'Failed to disconnect from browser');
202
- throw error;
203
- }
204
- }
205
- /**
206
- * Get current page URL
207
- */
208
- getCurrentUrl() {
209
- if (!this.page || this.page.isClosed()) {
210
- return null;
211
- }
212
- return this.page.url();
213
- }
214
- /**
215
- * Check if the browser connection is still alive
216
- * Returns false if connection is stale (e.g., after computer sleep)
217
- */
218
- async isConnectionAlive() {
219
- try {
220
- if (!this.browser || !this.page) {
221
- return false;
222
- }
223
- // Try to get the page title - this will fail if connection is dead
224
- await this.page.title();
225
- return true;
226
- }
227
- catch (error) {
228
- logger.warn({ error }, 'Browser connection appears to be dead');
229
- return false;
230
- }
231
- }
232
- /**
233
- * Reconnect to Figma Desktop if connection was lost
234
- * Call this before any operation that requires a live connection
235
- */
236
- async ensureConnection() {
237
- const isAlive = await this.isConnectionAlive();
238
- if (!isAlive) {
239
- logger.info('Connection lost, attempting to reconnect to Figma Desktop');
240
- // Clear stale references
241
- this.browser = null;
242
- this.page = null;
243
- // Reconnect
244
- await this.launch();
245
- logger.info('Successfully reconnected to Figma Desktop');
246
- }
247
- }
248
- /**
249
- * Force a complete reconnection to Figma Desktop
250
- * Use this when frames become detached or stale even though the browser appears connected
251
- */
252
- async forceReconnect() {
253
- logger.info('Force reconnecting to Figma Desktop');
254
- // Disconnect current connection if exists
255
- if (this.browser) {
256
- try {
257
- this.browser.disconnect();
258
- }
259
- catch (e) {
260
- // Ignore disconnect errors
261
- }
262
- }
263
- // Clear all references
264
- this.browser = null;
265
- this.page = null;
266
- // Reconnect
267
- await this.launch();
268
- logger.info('Force reconnect completed');
269
- }
270
- /**
271
- * Wait for navigation
272
- */
273
- async waitForNavigation(timeout = 30000) {
274
- if (!this.page || this.page.isClosed()) {
275
- throw new Error('No active page');
276
- }
277
- await this.page.waitForNavigation({
278
- waitUntil: 'networkidle2',
279
- timeout,
280
- });
281
- }
282
- }
283
- //# sourceMappingURL=local.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/browser/local.ts"],"names":[],"mappings":"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"}
@@ -1,82 +0,0 @@
1
- /**
2
- * Console Monitor
3
- * Captures and manages console logs from Figma plugins via Chrome DevTools Protocol
4
- * Monitors both main page console AND Web Worker consoles (where Figma plugins run)
5
- */
6
- import type { ConsoleLogEntry, ConsoleConfig } from './types/index.js';
7
- /**
8
- * Console Monitor
9
- * Listens to page console events and maintains a circular buffer of logs
10
- * Also monitors Web Workers to capture Figma plugin console logs
11
- */
12
- export declare class ConsoleMonitor {
13
- private logs;
14
- private config;
15
- private isMonitoring;
16
- private page;
17
- private workers;
18
- private lastUrl;
19
- constructor(config: ConsoleConfig);
20
- /**
21
- * Start monitoring console logs on a page
22
- * Accepts any puppeteer Page type (puppeteer-core or @cloudflare/puppeteer)
23
- */
24
- startMonitoring(page: any): Promise<void>;
25
- /**
26
- * Attach console listeners to a Web Worker
27
- * This captures Figma plugin console logs
28
- */
29
- private attachWorkerListeners;
30
- /**
31
- * Process console message from Puppeteer
32
- * @param msg - Console message from page or worker
33
- * @param context - Where the message came from ('page' or 'worker')
34
- * @param workerUrl - URL of the worker (if context is 'worker')
35
- */
36
- private processConsoleMessage;
37
- /**
38
- * Determine if log is from plugin or Figma based on URL
39
- */
40
- private determineSource;
41
- /**
42
- * Add log to circular buffer
43
- */
44
- private addLog;
45
- /**
46
- * Truncate string to max length
47
- */
48
- private truncateString;
49
- /**
50
- * Truncate value (string, array, object) intelligently
51
- * Based on AgentDesk pattern to prevent context overflow
52
- */
53
- private truncateValue;
54
- /**
55
- * Get logs with optional filtering
56
- */
57
- getLogs(options?: {
58
- count?: number;
59
- level?: ConsoleLogEntry['level'] | 'all';
60
- since?: number;
61
- }): ConsoleLogEntry[];
62
- /**
63
- * Clear log buffer
64
- */
65
- clear(): number;
66
- /**
67
- * Stop monitoring
68
- */
69
- stopMonitoring(): void;
70
- /**
71
- * Get monitoring status
72
- */
73
- getStatus(): {
74
- isMonitoring: boolean;
75
- logCount: number;
76
- bufferSize: number;
77
- workerCount: number;
78
- oldestTimestamp: number;
79
- newestTimestamp: number;
80
- };
81
- }
82
- //# sourceMappingURL=console-monitor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"console-monitor.d.ts","sourceRoot":"","sources":["../../src/core/console-monitor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAQvE;;;;GAIG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAc;gBAEjB,MAAM,EAAE,aAAa;IAIjC;;;OAGG;IACG,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA6L/C;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAgC7B;;;;;OAKG;YACW,qBAAqB;IAqEnC;;OAEG;IACH,OAAO,CAAC,eAAe;IA4BvB;;OAEG;IACH,OAAO,CAAC,MAAM;IAWd;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAqDrB;;OAEG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACzC,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,eAAe,EAAE;IAqBrB;;OAEG;IACH,KAAK,IAAI,MAAM;IAOf;;OAEG;IACH,cAAc,IAAI,IAAI;IAYtB;;OAEG;IACH,SAAS;;;;;;;;CAUT"}