Skip to content

Add Figma plugin v1.1.0 for monitoring teams, projects, components and styles#89

Open
conor-richey wants to merge 2 commits into
squaredup:mainfrom
conor-richey:add-figma-plugin
Open

Add Figma plugin v1.1.0 for monitoring teams, projects, components and styles#89
conor-richey wants to merge 2 commits into
squaredup:mainfrom
conor-richey:add-figma-plugin

Conversation

@conor-richey

@conor-richey conor-richey commented Jul 10, 2026

Copy link
Copy Markdown

What does this do?

Adds a new SquaredUp plugin for Figma. It indexes Figma Projects, Components, and Styles from a configured team via Figma's REST API, and ships dashboards for an account-wide overview, per-project file browsing, and per-object (Project/Component/Style) perspectives.

Why is it useful?

Lets teams monitor their Figma workspace alongside other tools in SquaredUp — see project/file activity, track published design-system components and styles, and drill into file version history and comments without leaving SquaredUp.

Known limitations

  • Figma's REST API has no endpoint to list a user's teams, so the Team ID must be entered manually (documented in the plugin README).
  • Figma also has no team-wide "list all files" endpoint (only per-project), which is incompatible with SquaredUp's import architecture — so Files are not an indexed object type. File-level data (summary, thumbnail, last edited, version history, comments) is still available via a manual project → file picker on dedicated data streams and a "File Explorer" dashboard, and via a per-project Files table on the Project perspective.
  • Activity Logs and Variables APIs are Enterprise-only / require org-admin OAuth scopes not available to a personal access token, so they're not implemented.

Testing performed

  • squaredup validate passes.
  • Deployed to a live dev tenant and authenticated with a real Figma personal access token.
  • All 9 data streams tested against the live API (squaredup test), including pagination (up to 729 rows / 25 pages on fileVersions) and the two-object scoping check on object-scoped streams.
  • Ran a full import against a real team (13 projects, 823 components, 95 styles indexed successfully).
  • Verified dashboards render correctly against real data.

Summary by CodeRabbit

  • New Features
    • Added a Figma integration that indexes projects, components, and styles, plus file summaries, version history, and comments.
    • Added dashboards: Overview, File Explorer, Project, Component, and Style, with scope-based selection for projects, components, and styles.
    • Introduced a default indexing configuration for these object types.
  • Documentation
    • Added/updated Figma setup guidance, prerequisites, and known limitations.
  • Chores / Configuration
    • Added Personal Access Token and Team ID validation and refreshed integration metadata.

…d styles

Indexes Figma Projects, Components, and Styles via the REST API, with
dashboards for an account-wide overview, per-project file browsing, and
a manual project/file picker for version history and comments (Figma has
no team-wide file-list endpoint, so files can't be indexed as objects).
@conor-richey
conor-richey requested a review from a team July 10, 2026 13:21
@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Changes

Figma integration

Layer / File(s) Summary
Integration contract and setup
plugins/Figma/v1/metadata.json, plugins/Figma/v1/ui.json, plugins/Figma/v1/configValidation.json, plugins/Figma/v1/custom_types.json, plugins/Figma/v1/docs/README.md
Defines Figma metadata, token and Team ID inputs, authentication validation, custom object types, and setup documentation.
Team indexing
plugins/Figma/v1/dataStreams/teamProjects.json, plugins/Figma/v1/dataStreams/teamComponents.json, plugins/Figma/v1/dataStreams/teamStyles.json, plugins/Figma/v1/indexDefinitions/default.json
Fetches team projects, components, and styles with pagination and maps them to indexed Figma object types.
Project and file data streams
plugins/Figma/v1/dataStreams/projectsPicker.json, plugins/Figma/v1/dataStreams/filesInProject.json, plugins/Figma/v1/dataStreams/projectFiles.json, plugins/Figma/v1/dataStreams/fileSummary.json, plugins/Figma/v1/dataStreams/fileVersions.json, plugins/Figma/v1/dataStreams/fileComments.json
Adds project and file selection streams and retrieves file metadata, versions, and comments.
Scopes and dashboards
plugins/Figma/v1/defaultContent/scopes.json, plugins/Figma/v1/defaultContent/*.dash.json, plugins/Figma/v1/defaultContent/manifest.json
Adds Figma entity scopes and default dashboards for overview, projects, components, styles, and file exploration.

Sequence Diagram(s)

sequenceDiagram
  participant FigmaAPI
  participant DataStreams
  participant IndexDefinitions
  participant Dashboards
  FigmaAPI->>DataStreams: Return team and file data
  DataStreams->>IndexDefinitions: Map team records to Figma object types
  DataStreams->>Dashboards: Supply projects, files, versions, and comments
  Dashboards->>Dashboards: Render configured tables, counts, charts, and properties
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the new Figma plugin and its focus on teams, projects, components, and styles.
Description check ✅ Passed The description covers what it does, why it matters, limitations, and testing, which is sufficient for this repository.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@plugins/Figma/v1/docs/README.md`:
- Around line 3-13: Update the “What gets indexed” table in the Figma README to
remove the Figma File row, or explicitly clarify that files are surfaced through
data streams rather than indexed as an object type; retain the entries for Figma
Project, Figma Component, and Figma Style.
- Around line 33-37: Add the `text` language identifier to the fenced code block
containing the Figma Team URL and explanatory marker in the documentation.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro

Run ID: d1a510e8-7f63-4e83-868d-7667035b42c3

📥 Commits

Reviewing files that changed from the base of the PR and between 18219a1 and 7d3fee6.

⛔ Files ignored due to path filters (1)
  • plugins/Figma/v1/icon.svg is excluded by !**/*.svg
📒 Files selected for processing (22)
  • plugins/Figma/v1/configValidation.json
  • plugins/Figma/v1/custom_types.json
  • plugins/Figma/v1/dataStreams/fileComments.json
  • plugins/Figma/v1/dataStreams/fileSummary.json
  • plugins/Figma/v1/dataStreams/fileVersions.json
  • plugins/Figma/v1/dataStreams/filesInProject.json
  • plugins/Figma/v1/dataStreams/projectFiles.json
  • plugins/Figma/v1/dataStreams/projectsPicker.json
  • plugins/Figma/v1/dataStreams/teamComponents.json
  • plugins/Figma/v1/dataStreams/teamProjects.json
  • plugins/Figma/v1/dataStreams/teamStyles.json
  • plugins/Figma/v1/defaultContent/componentDashboard.dash.json
  • plugins/Figma/v1/defaultContent/fileExplorer.dash.json
  • plugins/Figma/v1/defaultContent/manifest.json
  • plugins/Figma/v1/defaultContent/overview.dash.json
  • plugins/Figma/v1/defaultContent/projectDashboard.dash.json
  • plugins/Figma/v1/defaultContent/scopes.json
  • plugins/Figma/v1/defaultContent/styleDashboard.dash.json
  • plugins/Figma/v1/docs/README.md
  • plugins/Figma/v1/indexDefinitions/default.json
  • plugins/Figma/v1/metadata.json
  • plugins/Figma/v1/ui.json

Comment thread plugins/Figma/v1/docs/README.md Outdated
Comment thread plugins/Figma/v1/docs/README.md

@clarkd clarkd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two minor comments but not dealbreakers - nice work!

Comment thread plugins/Figma/v1/metadata.json Outdated
"displayName": "Figma",
"version": "1.1.0",
"author": {
"name": "@conor-richey-squaredup",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"name": "@conor-richey-squaredup",
"name": "@conor-richey",

- README's "What gets indexed" table incorrectly listed Figma File as
  an indexed object type; it isn't (no team-wide file-list endpoint).
  Clarified how file data is still surfaced instead.
- Corrected author handle in metadata.json to @conor-richey.
@conor-richey

Copy link
Copy Markdown
Author

Two minor comments but not dealbreakers - nice work!

Thanks @clarkd , both should be sorted

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
plugins/Figma/v1/docs/README.md (3)

17-28: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add links to the official Figma setup and token-scope documentation.

The setup steps are useful, but this README currently provides no direct third-party references for generating tokens or selecting scopes. Add the relevant Figma documentation links.

As per coding guidelines, documentation should include relevant third-party links.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/Figma/v1/docs/README.md` around lines 17 - 28, Add official Figma
documentation links to the personal access token setup section, linking the
token-generation instructions and token-scope reference near the corresponding
steps in the README. Keep the existing setup instructions and scope list
unchanged.

Source: Coding guidelines


55-55: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Separate the Variables and Activity Logs requirements.

Activity Logs require Enterprise org-admin OAuth, but Variables are a separate feature; describe them as unsupported by this plugin instead of attributing the limitation to unavailable OAuth scopes.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/Figma/v1/docs/README.md` at line 55, Update the README limitation
statement to separate Activity Logs from Variables: attribute Activity Logs’
restriction to Enterprise org-admin OAuth requirements, and describe Variables
independently as unsupported by this plugin without citing unavailable
personal-access-token scopes.

52-52: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Correct the Figma rate-limit note. The current limits vary by seat, plan, and endpoint tier, and some endpoints are limited to 6 requests/month. Link the official rate-limit docs instead of presenting a single 10–150 requests/minute range.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/Figma/v1/docs/README.md` at line 52, Update the “Rate limits” note in
the README to describe limits as varying by seat, plan, and endpoint tier,
including endpoints limited to 6 requests per month. Replace the unsupported
10–150 requests/minute range with a link to Figma’s official rate-limit
documentation.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@plugins/Figma/v1/docs/README.md`:
- Around line 17-28: Add official Figma documentation links to the personal
access token setup section, linking the token-generation instructions and
token-scope reference near the corresponding steps in the README. Keep the
existing setup instructions and scope list unchanged.
- Line 55: Update the README limitation statement to separate Activity Logs from
Variables: attribute Activity Logs’ restriction to Enterprise org-admin OAuth
requirements, and describe Variables independently as unsupported by this plugin
without citing unavailable personal-access-token scopes.
- Line 52: Update the “Rate limits” note in the README to describe limits as
varying by seat, plan, and endpoint tier, including endpoints limited to 6
requests per month. Replace the unsupported 10–150 requests/minute range with a
link to Figma’s official rate-limit documentation.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro

Run ID: 89b00493-8a80-451b-8d65-3e8dd8aa9827

📥 Commits

Reviewing files that changed from the base of the PR and between 7d3fee6 and cc6c961.

📒 Files selected for processing (2)
  • plugins/Figma/v1/docs/README.md
  • plugins/Figma/v1/metadata.json

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants