Subframe plugin
Official Subframe plugin: an MCP server and the design, develop and import skills to design interfaces and move them into code
- 466 ★ on the repository
- Last commit
- MIT
Extended access
Why this level
- The server creates and deletes pages, components and team projects: a deleted project cannot be restored.
- Generation spends Subframe AI credits, and the CLI writes sync files into your code.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add plugins/subframeDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The server creates and deletes pages, components and team projects: a deleted project cannot be restored.
- Generation spends Subframe AI credits, and the CLI writes sync files into your code.
This is third-party code. Review the repository files before installing.
What it does
The Subframe plugin connects an agent to the Subframe design tool through the remote MCP server `https://mcp.subframe.com/mcp` and three skills. The `design` skill creates and edits pages, components, snippets, documents and themes right in Subframe, compares variants on a canvas and checks results against screenshots. The `develop` skill implements a finished design in your app: it first works out who owns the theme and components, Subframe or the codebase, then syncs the needed components with a command like `npx @subframe/cli@latest sync Button Alert` and wires up logic and data. The `import` skill moves an existing design system from code or a website into Subframe: tokens, fonts, icons and components in light and dark themes. The server can read, create and delete pages and components, take screenshots, read prototypes, edit the theme and search the documentation. The same repository holds the `@subframe/core` package, a wrapper over Radix headless components, and `@subframe/cli` for syncing a Subframe project with code.
Who it is for. Frontend developers and designers on React and Tailwind who draw an interface in Subframe and ask Claude Code, Cursor or Codex to implement it in an app.
Good fit when
- Three landing page variants need a quick comparison on a canvas, with team comments collected before any code changes.
- A finished Subframe page moves into the app, and the agent syncs missing components and wires up data.
- A design system from a codebase, with tokens, fonts and icons, must be loaded into Subframe so new mockups follow it.
- A multi-screen onboarding scenario is drawn as a flow of screens with a shared shell.
Not a fit when
- The change is small, such as adjusting padding in a finished component: editing the code directly is simpler, and the `design` skill itself recommends it.
- The project has no Subframe account: the server signs in through OAuth and works with the account's projects.
- Automatic two-way exchange between code and canvas is needed: sync runs on request and the CLI does not update pages.
Example request
Design three variants of a pricing page in Subframe, pick the cleanest one and implement it in the app on our components.Limitations
A Subframe account is required, and sign-in goes through OAuth. The generation tools (`design_page`, `design_component`, `edit_component`, `design_snippet`) spend Subframe AI credits even when the agent runs on its own subscription. Project viewers get a read-only server, editing needs an editor seat and the free plan allows one project. Component and theme sync goes through the CLI on request, it does not update pages and code edits do not return to the canvas on their own. Installing the plugin in Cursor from the repository requires a Teams or Enterprise team marketplace.
How to disable. Run `claude plugin uninstall subframe@subframe`; for Codex, remove the plugin through `codex plugin`. A Claude Desktop connector is disconnected in the connectors section, and synced components stay in your code.
FAQ
How do I install the plugin in Claude Code?
Run `claude plugin marketplace add https://github.com/SubframeApp/subframe && claude plugin install subframe@subframe`. Then `/mcp` shows whether the Subframe server is connected. Auto-update is off for third-party marketplaces, so update the plugin by hand with `claude plugin update subframe@subframe`.
How do I connect Subframe in Claude Desktop?
Open Customize, then Connectors, and add a custom connector: name Subframe, server address `https://mcp.subframe.com/mcp`. After adding it, click Connect and sign in on the Subframe site.
How do I install the plugin in Codex?
Run `codex plugin marketplace add SubframeApp/subframe`, then `codex plugin add subframe@subframe` and, in a new session, `/mcp login subframe`. Skills are called as `$subframe:design`, `$subframe:develop` and `$subframe:import`.
What does the `develop` skill do with a foreign design system?
If the project has no Subframe sync and has its own library such as MUI or `shadcn/ui`, it treats the Subframe page as a visual reference and builds it from the project's components. It does not start initialization or sync without your decision.
What if a design only needs to be read?
The viewer role gives a read-only server: it returns page code, screenshots and documents but creates and edits no design. A user with an editor seat can edit.
Discussion
No questions or reviews yet.
Related
PluginsA skill that builds Framer components with Three.js, WebGL and GSAP: 3D, shaders and scroll animation in a single TSX file.
An MCP server and skill for interfaces: 31 design systems for shadcn/ui, UI and UX principles and accessibility review for agent-written code
Three Framer skills: code components and overrides, Framer Agent and plugins, plus a collection of tricks and notes
An MCP server that gives the agent simplified Figma layout data from a link so it can build the screen more accurately than from a screenshot
design.how: 6 skills turn an app's UI into a design system for the agent, plus four ready systems for shadcn.
Figma MCP Server (Antonytm)
Figma MCP Server
A community MCP server with a Figma plugin: the agent creates frames, text and components in the open file, not just reads them
README in short
The repository opens Subframe's developer tools: the agent plugin, the CLI, components and documentation. The editor itself and the generation run in the Subframe cloud service.
README badge
Original SKILL.md
--- name: design description: Create or edit pages, components, snippets, design documents, and themes in Subframe, or explore and compare UI design options in Subframe. argument-hint: "[what to design or change in Subframe]" --- Use this workflow when the deliverable belongs in Subframe. For implementation, use develop; for bringing an existing design system into Subframe, use import. ## Why and when to use Subframe **Why Subframe.** Give designs a persistent home outside a code branch so teammates can find, review, and revisit them. Compare variations and multi-screen flows side by side on a canvas. Gather teammate comments before code changes. Record decisions and rationale in design documents beside the design. When Subframe is the source of truth, sync code from its theme and components. **When to use it:** Explore directions, compare options, seek review or a shareable artifact, or change several screens or the design system. **When not to:** For small fixes to existing UI or code-only behaviour, work directly in code unless the user requests Subframe or the project keeps designs there. ## Steps 1. Identify what must stay and what should change. For an existing design, read its actual content and inspect its rendered appearance. For a website or codebase reference, use the host's browsing or file tools to collect the relevant source and screenshots. A prose description alone is weak evidence for recreating an existing UI. 2. Choose the smallest operation that delivers the request. Edit an existing page or snippet in place; duplicate for an exact copy. Use generation for a new design or a substantially different direction. Decide whether a reusable component, a page composition, a usage example, or written guidance is the intended output. 3. Prepare references before generating. Pass actual source, images, or Subframe resources with a usage note explaining what to preserve and what to change. Include relevant child components and styles when source code depends on them. Put these instructions in the generation brief; the generator does not see your conversation or reasoning. 4. Complete dependencies before their consumers. If a page needs missing reusable primitives, create those with design_component first. Finish independent primitives before components that embed them, then generate the page. Keep one-off page compositions inline. Do not turn recreating a page into an unsolicited component-library rebuild. 5. Complete the requested screens and edits, then review what landed. Compare screenshots with the reference and requested change, including lower sections, affected responsive layouts, and relevant states. Fix missing content, clipping, spacing, and typography discrepancies before reporting. ## Pages and flows Make each variation's brief self-contained. Describe concrete differences in layout or emphasis; do not tell one variation to copy another. If the user requests more variations than one call permits, split the requested count across calls on the same canvas. For a flow, establish the first screen's shared shell. Once wait_for_jobs reports it done, verify that the page actually exists and use its ID as sourcePageId for the next screen immediately. If several alternatives landed, select a coherent starting direction yourself and say which you carried forward. Preserve navigation and layout while specifying the next screen's differences. Do not wait for the user's pick. ## Existing designs Use update_node_styles for styling and edit_page or edit_snippet for content or structure. Start from the existing classes and subtree so unrelated layout, children, and copy survive. On replacement, keep data-node-id on retained nodes; omit IDs on new or inserted nodes. After a stale-ID error, reread the affected resource and reconstruct the edit instead of retrying old markup. Use edit_component when the requested change belongs to the shared component. Inspect representative usages to understand the effect. A page-specific adjustment belongs on that page's instance or composition. For comment-driven edits, match each requested thread to its current element and track which feedback was addressed. A thread whose element disappeared needs interpretation, not an edit against its old ID. ## Theme and design guidance For a restyle, update existing tokens so current designs inherit the intended look. Preserve semantic roles and aliases instead of creating parallel look-alike tokens. Check representative pages and components in the affected modes. Prepare concrete token mappings before requesting any confirmation required for deletions or replacements. Use import for adopting an external token source. Write design documents for decisions a future designer cannot infer from the UI: when to use a pattern, content constraints, and product-specific exceptions. Update existing guidance and preserve embedded examples. Use design_snippet for reusable examples or compositions that do not need a component API; do not manufacture documents or examples for every page. ## Review and recovery