Start from a new project or install in an existing project. Our CLI is open source ↗ and will help you get started quickly.
New project
Existing project
Run our CLI in a blank folder to scaffold a new pre-configured project and follow the prompts:
npx @subframe/cli@latest init
yarn dlx @subframe/cli@latest init
pnpx @subframe/cli@latest init
bunx @subframe/cli@latest init
Run our CLI in your project root and follow the prompts:
npx @subframe/cli@latest init
yarn dlx @subframe/cli@latest init
pnpx @subframe/cli@latest init
bunx @subframe/cli@latest init
Installation issues
If you run into installation issues, refer to one of these framework-specific troubleshooting guides:
Next.js
Vite
Astro
Monorepo
Other (manual installation)
Importing existing components
If you have an existing component library, use the /subframe:import agent skill with the Subframe MCP server to bring its theme, fonts, icons, and components into Subframe.
<head> <!-- Insert the font import snippet you copied here --> <!-- Example: importing the Inter font... --> <link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous" /> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap" rel="stylesheet" /> <!-- Remaining code in your `<head>` tag... --></head>
The MCP server lets AI coding agents in tools like Claude Code, Cursor, and Codex fetch and create Subframe designs. Agent skills guide your agent through setting up projects, designing pages, and implementing them with business logic.
Claude Code
Claude Desktop
Cursor
Codex
Other clients
1
Install the Subframe plugin
claude plugin marketplace add https://github.com/SubframeApp/subframe && claude plugin install subframe@subframe
The Subframe plugin for Claude Code sets up the MCP server and agent skills in one install.In the Claude desktop app’s Code tab, click + → Add plugins to install from marketplaces you’ve added. The terminal and desktop app share settings, so an install in one appears in the other.
2
Keep the plugin up to date
Claude Code turns auto-update off by default for third-party marketplaces, including Subframe. Run claude plugin update subframe@subframe to update manually, or run /plugin and select Marketplaces → subframe → Enable auto-update.
3
Verify installation
Run /mcp to check that the Subframe MCP server is connected, then try asking Claude Code to use Subframe.If you’ve also connected Subframe as a connector on claude.ai, Claude Code uses that connection and the plugin doesn’t add a second Subframe server.
4
Share with your team (optional)
Add the following to .claude/settings.json and commit it, so team members are prompted to install the Subframe plugin:
For Remote MCP Server URL, paste the following URL:
https://mcp.subframe.com/mcp
Click Add
2
Authenticate
Find the Subframe connector in your connectors list and click Connect. Follow the instructions on the Subframe website to complete authentication.
To install the plugin with the MCP server and skills, import https://github.com/SubframeApp/subframe into a Cursor team marketplace ↗, then open Customize, find Subframe, and click Install. Repository imports require an eligible Teams or Enterprise marketplace. The plugin will also be available in the Cursor Marketplace once listed. If you already use the Subframe plugin in Claude Code, Cursor can load it too when Include third-party Plugins, Skills, and other configs is on in Cursor Settings → Rules, Skills, Subagents.To install the MCP server and skills separately, follow these steps:
1
Install the MCP server
Add the Subframe MCP server to Cursor. You’ll be prompted to authenticate via OAuth.
Then start a new Codex session and run /mcp login subframe to sign in to Subframe.After adding the marketplace with the CLI, restart the ChatGPT desktop app, open Plugins, and install Subframe from the subframe marketplace.Codex refreshes git marketplaces on startup, so plugin updates arrive automatically. To update immediately, run codex plugin marketplace upgrade subframe and start a new session.Codex picks skills automatically, or you can invoke one explicitly with $subframe:design, $subframe:develop, or $subframe:import.The Codex IDE extension doesn’t support plugins. If you use the IDE extension, install the MCP server and skills separately with these steps:
1
Install the MCP server
Run the following commands to add the Subframe MCP server and authenticate:
What if I don't use React, TypeScript or Tailwind CSS?
You can use our MCP server to access your designs and documentation from your coding agent and convert them to your preferred language and framework.Subframe generates React, TypeScript, and Tailwind CSS code. You can ask your coding agent to adapt the exported code to another framework, then review and test the result in your app.
Will my code keep working if I stop using Subframe?
Yes. All generated code lives in your codebase and is yours to keep. Any dependencies you see are open source ↗.
How can I get additional installation support?
Join our active Slack community ↗ for additional support from the Subframe team and other users.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Subframe Docs","colors":{"primary":"#111111","light":"#dddddd","dark":"#111111"},"logo":{"light":"https://res.cloudinary.com/subframe/image/upload/v1711417507/shared/y2rsnhq3mex4auk54aye.png","dark":"https://res.cloudinary.com/subframe/image/upload/v1712778911/uploads/302/ul72rsawfl5muaja4dbp.png"},"favicon":"https://mintcdn.com/subframe-59800133/UtzN_VZHB2fC7oGB/favicon.png?fit=max\u0026auto=format\u0026n=UtzN_VZHB2fC7oGB\u0026q=85\u0026s=0d98a7ca9fe9d810d018908473d7c6a1","navbar":{"links":[{"href":"https://subframe.com","label":"subframe.com"}],"primary":{"type":"button","label":"Log in","href":"https://app.subframe.com"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/subframeapp","x":"https://x.com/SubframeApp","github":"https://github.com/SubframeApp/subframe","instagram":"https://www.instagram.com/subframeapp","slack":"https://join.slack.com/t/subframecommunity/shared_invite/zt-380uma6dv-_lr7_bDLU5DJcoygfUYkeQ","website":"https://subframe.com","youtube":"https://www.youtube.com/@SubframeApp"}},"seo":{"indexing":"all"},"icons":{"library":"lucide"},"integrations":{"ga4":{"measurementId":"G-1GGBBPL5LT"},"intercom":{"appId":"m19ac5dq"},"segment":{"key":"5nOHRiT81iSqK2WHigNEoNZWMG2JcfOq"}},"contextual":{"options":["copy","chatgpt","claude","perplexity"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Go to Subframe","icon":"house","href":"https://subframe.com?utm_source=mintlify\u0026utm_medium=docs\u0026utm_campaign=global_link"},{"anchor":"Slack Community","icon":"slack","href":"https://join.slack.com/t/subframecommunity/shared_invite/zt-380uma6dv-_lr7_bDLU5DJcoygfUYkeQ"},{"anchor":"YouTube","icon":"youtube","href":"https://www.youtube.com/@SubframeApp"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"subframe-59800133","hasAudioNarration":false,"actualSubdomain":"subframe-59800133","customDomains":["docs.subframe.com"],"gitSource":{"type":"github","owner":"subframeapp","repo":"subframe","deployBranch":"main","contentDirectory":"packages/docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae8d5f0137482c03b45980c","collectionId":"6252001c-60d2-408c-a2fe-b9636909651b","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae8d5f0137482c03b45980c"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae91f999ea91cadc17f5ae0","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Design","count":39},{"language":"default","tag":"Core Concepts","count":18},{"language":"default","tag":"Building from scratch","count":16},{"language":"default","tag":"Using the editor","count":12},{"language":"default","tag":"Agent","count":8},{"language":"default","tag":"Components","count":6},{"language":"default","tag":"Developer guides","count":6},{"language":"default","tag":"Browser","count":5},{"language":"default","tag":"Troubleshooting","count":5},{"language":"default","tag":"Admin and billing","count":4}]},"assistantConfig":{"enableAskAiButton":true,"enableStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@subframe.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".frame{background:#f5f5f5}"}],"page":{"pagePath":"develop/installation","slug":"/develop/installation","pageMetadata":{"title":"Installation","description":"Set up Subframe in your codebase.","href":"/develop/installation"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Set up Subframe in your codebase.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CodeBlock,CodeGroup,Columns,Heading,Icon,Step,Steps,Tab,Tabs}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Columns)_missingMdxReference(`Columns`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Icon)_missingMdxReference(`Icon`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsx(_components.p,{children:`Subframe generates React components with Tailwind CSS. Your project needs:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`React 16+`}),`\n`,_jsx(_components.li,{children:`Tailwind CSS 3.4+`}),`\n`,_jsx(_components.li,{children:`TypeScript`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`install-subframe`,children:`Install Subframe`}),`\n`,_jsxs(_components.p,{children:[`Start from a new project or install in an existing project. Our CLI is `,_jsx(_components.a,{href:`https://github.com/SubframeApp/subframe/tree/main/packages/subframe-cli`,children:`open source ↗`}),` and will help you get started quickly.`]}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`New project`,id:`new-project`,children:[_jsx(_components.p,{children:`Run our CLI in a blank folder to scaffold a new pre-configured project and follow the prompts:`}),_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`npm`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @subframe/cli@latest`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` init`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`yarn`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`yarn`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dlx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @subframe/cli@latest`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` init`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`pnpm`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pnpx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @subframe/cli@latest`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` init`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`bun`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`bunx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @subframe/cli@latest`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` init`})]}),`\n`]})})})]})]}),_jsxs(Tab,{title:`Existing project`,id:`existing-project`,children:[_jsx(_components.p,{children:`Run our CLI in your project root and follow the prompts:`}),_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`npm`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @subframe/cli@latest`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` init`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`yarn`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`yarn`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dlx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @subframe/cli@latest`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` init`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`pnpm`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pnpx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @subframe/cli@latest`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` init`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`bun`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`bunx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @subframe/cli@latest`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` init`})]}),`\n`]})})})]}),_jsxs(AccordionGroup,{children:[_jsxs(Accordion,{title:`Installation issues`,id:`installation-issues`,children:[_jsx(_components.p,{children:`If you run into installation issues, refer to one of these framework-specific troubleshooting guides:`}),_jsxs(Columns,{cols:2,children:[_jsx(Card,{title:`Next.js`,href:`/develop/frameworks/nextjs`}),_jsx(Card,{title:`Vite`,href:`/develop/frameworks/vite`}),_jsx(Card,{title:`Astro`,href:`/develop/frameworks/astro`}),_jsx(Card,{title:`Monorepo`,href:`/develop/frameworks/monorepo`}),_jsx(Card,{title:`Other (manual installation)`,href:`/develop/frameworks/manual`})]})]}),_jsx(Accordion,{title:`Importing existing components`,id:`importing-existing-components`,children:_jsxs(_components.p,{children:[`If you have an existing component library, use the `,_jsx(_components.code,{children:`/subframe:import`}),` agent skill with the `,_jsx(_components.a,{href:`/agent/mcp-server`,children:`Subframe MCP server`}),` to bring its theme, fonts, icons, and components into Subframe.`]})})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`install-fonts`,children:`Install fonts`}),`\n`,_jsxs(_components.p,{children:[`Your Subframe theme may use a Google Font or an `,_jsx(_components.a,{href:`/design/theme/adding-custom-fonts`,children:`uploaded custom font`}),`. You’ll need to add a snippet to your codebase to render the fonts correctly.`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Copy the font import snippet`,children:_jsxs(_components.p,{children:[`You can get the import code snippet from your `,_jsx(_components.a,{href:`https://app.subframe.com/library?component=theme\u0026showInstallFontsModal=true`,children:`Subframe theme ↗`})]})}),_jsx(Step,{title:_jsxs(_Fragment,{children:[`Add the code snippet to your `,_jsx(_components.code,{children:`\u003chead>`}),` tag`]}),children:_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`html`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`html`,children:_jsxs(_components.code,{language:`html`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`head`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` \u003c!-- Insert the font import snippet you copied here -->`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` \u003c!-- Example: importing the Inter font... -->`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`link`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` rel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"preconnect\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` href`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://fonts.googleapis.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` />`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`link`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` rel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"preconnect\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` href`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://fonts.gstatic.com\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` crossorigin`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"anonymous\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` />`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`link`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` href`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900\u0026display=swap\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` rel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"stylesheet\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` />`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:\" \u003c!-- Remaining code in your `\u003chead>` tag... -->\"})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`head`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`set-up-subframe-mcp-and-agent-skills`,children:`Set up Subframe MCP and agent skills`}),`\n`,_jsx(_components.p,{children:`The MCP server lets AI coding agents in tools like Claude Code, Cursor, and Codex fetch and create Subframe designs. Agent skills guide your agent through setting up projects, designing pages, and implementing them with business logic.`}),`\n`,_jsxs(Tabs,{children:[_jsx(Tab,{title:`Claude Code`,icon:`https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=0328539c5fcb7c98c9d2ae793efe4387`,\"data-og-width\":`48`,width:`48`,\"data-og-height\":`48`,height:`48`,\"data-path\":`images/logos/claude.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?w=280\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=a0bbc1dee3905d892ce0aa48bba5a855 280w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?w=560\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=7fc2deb1bdf3ff3b3bee550b175a0eec 560w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?w=840\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=2a94485932b20dfda0a2c6be926bb1ec 840w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?w=1100\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=46fab4242dee60df244d0f0bf5a82108 1100w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?w=1650\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=c892b863897313c367ac7513ea6ce074 1650w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?w=2500\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=3cd59df909050ec3e968bf0d98e27081 2500w`,id:`claude-code`,children:_jsxs(Steps,{children:[_jsxs(Step,{title:`Install the Subframe plugin`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`claude`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` plugin`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` marketplace`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://github.com/SubframeApp/subframe`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` \u0026\u0026 `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`claude`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` plugin`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` subframe@subframe`})]}),`\n`]})})}),_jsx(_components.p,{children:`The Subframe plugin for Claude Code sets up the MCP server and agent skills in one install.`}),_jsxs(_components.p,{children:[`In the Claude desktop app’s `,_jsx(_components.strong,{children:`Code`}),` tab, click `,_jsx(_components.strong,{children:`+`}),` → `,_jsx(_components.strong,{children:`Add plugins`}),` to install from marketplaces you’ve added. The terminal and desktop app share settings, so an install in one appears in the other.`]})]}),_jsx(Step,{title:`Keep the plugin up to date`,children:_jsxs(_components.p,{children:[`Claude Code turns auto-update off by default for third-party marketplaces, including Subframe. Run `,_jsx(_components.code,{children:`claude plugin update subframe@subframe`}),` to update manually, or run `,_jsx(_components.code,{children:`/plugin`}),` and select `,_jsx(_components.strong,{children:`Marketplaces`}),` → `,_jsx(_components.strong,{children:`subframe`}),` → `,_jsx(_components.strong,{children:`Enable auto-update`}),`.`]})}),_jsxs(Step,{title:`Verify installation`,children:[_jsxs(_components.p,{children:[`Run `,_jsx(_components.code,{children:`/mcp`}),` to check that the Subframe MCP server is connected, then try asking Claude Code to use Subframe.`]}),_jsx(_components.p,{children:`If you’ve also connected Subframe as a connector on claude.ai, Claude Code uses that connection and the plugin doesn’t add a second Subframe server.`})]}),_jsxs(Step,{title:`Share with your team (optional)`,children:[_jsxs(_components.p,{children:[`Add the following to `,_jsx(_components.code,{children:`.claude/settings.json`}),` and commit it, so team members are prompted to install the Subframe plugin:`]}),_jsx(CodeBlock,{filename:`.claude/settings.json`,numberOfLines:`13`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"enabledPlugins\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"subframe@subframe\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"extraKnownMarketplaces\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"subframe\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"source\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"source\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"github\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"repo\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SubframeApp/subframe\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]})]})}),_jsx(Tab,{title:`Claude Desktop`,icon:`https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=0328539c5fcb7c98c9d2ae793efe4387`,\"data-og-width\":`48`,width:`48`,\"data-og-height\":`48`,height:`48`,\"data-path\":`images/logos/claude.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?w=280\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=a0bbc1dee3905d892ce0aa48bba5a855 280w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?w=560\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=7fc2deb1bdf3ff3b3bee550b175a0eec 560w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?w=840\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=2a94485932b20dfda0a2c6be926bb1ec 840w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?w=1100\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=46fab4242dee60df244d0f0bf5a82108 1100w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?w=1650\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=c892b863897313c367ac7513ea6ce074 1650w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/claude.png?w=2500\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=3cd59df909050ec3e968bf0d98e27081 2500w`,id:`claude-desktop`,children:_jsxs(Steps,{children:[_jsx(Step,{title:`Add the Subframe connector`,children:_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.a,{href:`https://claude.ai/customize/connectors`,children:_jsx(_components.strong,{children:`Customize > Connectors`})})]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(Icon,{icon:`plus`,size:16}),` and select `,_jsx(_components.strong,{children:`Add custom connector`})]}),`\n`,_jsxs(_components.li,{children:[`Set the name to `,_jsx(_components.strong,{children:`Subframe`})]}),`\n`,_jsxs(_components.li,{children:[`For `,_jsx(_components.strong,{children:`Remote MCP Server URL`}),`, paste the following URL:`,`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://mcp.subframe.com/mcp`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Add`})]}),`\n`]})}),_jsx(Step,{title:`Authenticate`,children:_jsxs(_components.p,{children:[`Find the Subframe connector in your connectors list and click `,_jsx(_components.strong,{children:`Connect`}),`. Follow the instructions on the Subframe website to complete authentication.`]})})]})}),_jsxs(Tab,{title:`Cursor`,icon:`https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/cursor.webp?fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=b196ef73b2809e299d77151d18039541`,\"data-og-width\":`72`,width:`72`,\"data-og-height\":`72`,height:`72`,\"data-path\":`images/logos/cursor.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/cursor.webp?w=280\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=81a5dae9cff1db985dd9af73a538dcb7 280w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/cursor.webp?w=560\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=0389c50cc91576bc90541cc948c027a5 560w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/cursor.webp?w=840\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=6d392689b71a8c6ca1ebf03c338283e7 840w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/cursor.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=9271e592a176d62dd34d43ca48ca0c94 1100w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/cursor.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=612b9a1b2e66a9d828ecd070ff4db32f 1650w, https://mintcdn.com/subframe-59800133/5lhHS3N1RqBy--k0/images/logos/cursor.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=5lhHS3N1RqBy--k0\u0026q=85\u0026s=422a1f9067dee4be827145718db63bc2 2500w`,id:`cursor`,children:[_jsxs(_components.p,{children:[`To install the plugin with the MCP server and skills, import `,_jsx(_components.code,{children:`https://github.com/SubframeApp/subframe`}),` into a `,_jsx(_components.a,{href:`https://cursor.com/docs/plugins#add-a-team-marketplace`,children:`Cursor team marketplace ↗`}),`, then open `,_jsx(_components.strong,{children:`Customize`}),`, find `,_jsx(_components.strong,{children:`Subframe`}),`, and click `,_jsx(_components.strong,{children:`Install`}),`. Repository imports require an eligible Teams or Enterprise marketplace. The plugin will also be available in the Cursor Marketplace once listed. If you already use the Subframe plugin in Claude Code, Cursor can load it too when `,_jsx(_components.strong,{children:`Include third-party Plugins, Skills, and other configs`}),` is on in Cursor Settings → Rules, Skills, Subagents.`]}),_jsx(_components.p,{children:`To install the MCP server and skills separately, follow these steps:`}),_jsxs(Steps,{children:[_jsxs(Step,{title:`Install the MCP server`,children:[_jsx(_components.p,{children:`Add the Subframe MCP server to Cursor. You’ll be prompted to authenticate via OAuth.`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://cursor.com/en-US/install-mcp?name=subframe\u0026config=eyJ1cmwiOiJodHRwczovL21jcC5zdWJmcmFtZS5jb20vbWNwIn0%3D`,children:`Add Subframe MCP server to Cursor ↗`})}),`\n`]}),_jsxs(Accordion,{title:`Troubleshooting: Manual installation`,id:`troubleshooting-manual-installation`,children:[_jsxs(_components.p,{children:[`If the install link doesn’t work, make the following changes to `,_jsx(_components.code,{children:`~/.cursor/mcp.json`}),`.`]}),_jsx(CodeBlock,{filename:`~/.cursor/mcp.json`,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"mcpServers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"subframe\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://mcp.subframe.com/mcp\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:`Cursor will handle OAuth authentication automatically when you first connect.`})]})]}),_jsxs(Step,{title:`Install agent skills`,children:[_jsx(_components.p,{children:`Agent skills are guided workflows that teach Cursor how to best use Subframe. Install them with:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` skills`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://github.com/SubframeApp/subframe`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --skill`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '*'`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -g`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --agent`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` cursor`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --yes`})]}),`\n`]})})})]}),_jsx(Step,{title:`Verify installation`,children:_jsxs(_components.p,{children:[`Check that the Subframe MCP server has successfully connected in `,_jsx(_components.strong,{children:`Cursor Settings`}),` > `,_jsx(_components.strong,{children:`MCP`}),`, then try asking Cursor to use Subframe.`]})})]})]}),_jsxs(Tab,{title:`Codex`,icon:`https://mintcdn.com/subframe-59800133/bS35JNxm1CpZNt1T/images/logos/openai.png?fit=max\u0026auto=format\u0026n=bS35JNxm1CpZNt1T\u0026q=85\u0026s=811e805e892ceea086cbc53c154c16b7`,\"data-og-width\":`64`,width:`64`,\"data-og-height\":`64`,height:`64`,\"data-path\":`images/logos/openai.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/subframe-59800133/bS35JNxm1CpZNt1T/images/logos/openai.png?w=280\u0026fit=max\u0026auto=format\u0026n=bS35JNxm1CpZNt1T\u0026q=85\u0026s=2325c878949aeeca90c4834133d986b0 280w, https://mintcdn.com/subframe-59800133/bS35JNxm1CpZNt1T/images/logos/openai.png?w=560\u0026fit=max\u0026auto=format\u0026n=bS35JNxm1CpZNt1T\u0026q=85\u0026s=cca82b84e36486a6427ef324602e6133 560w, https://mintcdn.com/subframe-59800133/bS35JNxm1CpZNt1T/images/logos/openai.png?w=840\u0026fit=max\u0026auto=format\u0026n=bS35JNxm1CpZNt1T\u0026q=85\u0026s=384bbf7edc450faddc75292354100158 840w, https://mintcdn.com/subframe-59800133/bS35JNxm1CpZNt1T/images/logos/openai.png?w=1100\u0026fit=max\u0026auto=format\u0026n=bS35JNxm1CpZNt1T\u0026q=85\u0026s=5a28ebfedb1144fee8c5c193618062fd 1100w, https://mintcdn.com/subframe-59800133/bS35JNxm1CpZNt1T/images/logos/openai.png?w=1650\u0026fit=max\u0026auto=format\u0026n=bS35JNxm1CpZNt1T\u0026q=85\u0026s=a0b27e0da3521a09cb95dbcf98fd6386 1650w, https://mintcdn.com/subframe-59800133/bS35JNxm1CpZNt1T/images/logos/openai.png?w=2500\u0026fit=max\u0026auto=format\u0026n=bS35JNxm1CpZNt1T\u0026q=85\u0026s=ea7fc7bb805c4fb9d2764f22a6976ae9 2500w`,id:`codex`,children:[_jsx(_components.p,{children:`Install the Subframe plugin to add the MCP server and agent skills:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`codex`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` plugin`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` marketplace`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` SubframeApp/subframe`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`codex`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` plugin`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` subframe@subframe`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Then start a new Codex session and run `,_jsx(_components.code,{children:`/mcp login subframe`}),` to sign in to Subframe.`]}),_jsxs(_components.p,{children:[`After adding the marketplace with the CLI, restart the ChatGPT desktop app, open `,_jsx(_components.strong,{children:`Plugins`}),`, and install `,_jsx(_components.strong,{children:`Subframe`}),` from the `,_jsx(_components.strong,{children:`subframe`}),` marketplace.`]}),_jsxs(_components.p,{children:[`Codex refreshes git marketplaces on startup, so plugin updates arrive automatically. To update immediately, run `,_jsx(_components.code,{children:`codex plugin marketplace upgrade subframe`}),` and start a new session.`]}),_jsxs(_components.p,{children:[`Codex picks skills automatically, or you can invoke one explicitly with `,_jsx(_components.code,{children:`$subframe:design`}),`, `,_jsx(_components.code,{children:`$subframe:develop`}),`, or `,_jsx(_components.code,{children:`$subframe:import`}),`.`]}),_jsx(_components.p,{children:`The Codex IDE extension doesn’t support plugins. If you use the IDE extension, install the MCP server and skills separately with these steps:`}),_jsxs(Steps,{children:[_jsxs(Step,{title:`Install the MCP server`,children:[_jsx(_components.p,{children:`Run the following commands to add the Subframe MCP server and authenticate:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`codex`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mcp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` subframe`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://mcp.subframe.com/mcp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` \u0026\u0026 `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`codex`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mcp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` login`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` subframe`})]}),`\n`]})})}),_jsxs(Accordion,{title:`Troubleshooting: Manual installation`,id:`troubleshooting-manual-installation-1`,children:[_jsxs(_components.p,{children:[`If the commands above don’t work, add the following to `,_jsx(_components.code,{children:`~/.codex/config.toml`}),`:`]}),_jsx(CodeBlock,{filename:`~/.codex/config.toml`,numberOfLines:`2`,language:`toml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`toml`,children:_jsxs(_components.code,{language:`toml`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`mcp_servers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`subframe`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://mcp.subframe.com/mcp\"`})]}),`\n`]})})}),_jsx(_components.p,{children:`Then authenticate:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`codex`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mcp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` login`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` subframe`})]}),`\n`]})})})]})]}),_jsxs(Step,{title:`Install agent skills`,children:[_jsx(_components.p,{children:`Agent skills are guided workflows that teach Codex how to best use Subframe. Install them with:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` skills`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://github.com/SubframeApp/subframe`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --skill`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '*'`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -g`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --agent`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` codex`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --yes`})]}),`\n`]})})})]}),_jsx(Step,{title:`Verify installation`,children:_jsxs(_components.p,{children:[`Run `,_jsx(_components.code,{children:`/mcp`}),` in Codex to check that the Subframe MCP server is connected, then try asking Codex to use Subframe.`]})})]})]}),_jsx(Tab,{title:`Other clients`,id:`other-clients`,children:_jsxs(Steps,{children:[_jsxs(Step,{title:`Configure the Subframe MCP Server`,children:[_jsx(_components.p,{children:`Configure your MCP client to connect to the Subframe MCP server:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`URL:`}),` `,_jsx(_components.code,{children:`https://mcp.subframe.com/mcp`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Transport:`}),` HTTP`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Authentication:`}),` OAuth (your client will handle the authentication flow)`]}),`\n`]})]}),_jsxs(Step,{title:`Install agent skills (optional)`,children:[_jsxs(_components.p,{children:[`If your client supports the `,_jsx(_components.a,{href:`https://agentskills.io`,children:`Agent Skills`}),` standard, install the Subframe skills with:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` skills`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://github.com/SubframeApp/subframe`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --skill`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '*'`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --agent`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '*'`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --yes`})]}),`\n`]})})})]}),_jsx(Step,{title:`Verify installation`,children:_jsx(_components.p,{children:`Restart your MCP client, then check that the Subframe MCP server has successfully connected and try asking your coding agent to use Subframe.`})})]})})]}),`\n`,_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/agent/mcp-server`,children:`MCP server guide`}),` for available tools and Agent skills.`]}),`\n`,_jsx(Heading,{level:`2`,id:`faq`,children:`FAQ`}),`\n`,_jsxs(AccordionGroup,{children:[_jsxs(Accordion,{title:`What if I don't use React, TypeScript or Tailwind CSS?`,id:`what-if-i-dont-use-react-typescript-or-tailwind-css`,children:[_jsxs(_components.p,{children:[`You can use our `,_jsx(_components.a,{href:`/agent/mcp-server`,children:`MCP server`}),` to access your designs and documentation from your coding agent and convert them to your preferred language and framework.`]}),_jsx(_components.p,{children:`Subframe generates React, TypeScript, and Tailwind CSS code. You can ask your coding agent to adapt the exported code to another framework, then review and test the result in your app.`})]}),_jsx(Accordion,{title:`Will my code keep working if I stop using Subframe?`,id:`will-my-code-keep-working-if-i-stop-using-subframe`,children:_jsxs(_components.p,{children:[`Yes. All generated code lives in your codebase and is yours to keep. Any dependencies you see are `,_jsx(_components.a,{href:`https://github.com/SubframeApp/subframe`,children:`open source ↗`}),`.`]})}),_jsx(Accordion,{title:`How can I get additional installation support?`,id:`how-can-i-get-additional-installation-support`,children:_jsxs(_components.p,{children:[`Join our active `,_jsx(_components.a,{href:`https://join.slack.com/t/subframecommunity/shared_invite/zt-380uma6dv-_lr7_bDLU5DJcoygfUYkeQ`,children:`Slack community ↗`}),` for additional support from the Subframe team and other users.`]})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Installation","description":"Set up Subframe in your codebase.","href":"/develop/installation"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Install Subframe","slug":"install-subframe","depth":2,"children":[]},{"title":"Install fonts","slug":"install-fonts","depth":2,"children":[]},{"title":"Set up Subframe MCP and agent skills","slug":"set-up-subframe-mcp-and-agent-skills","depth":2,"children":[]},{"title":"FAQ","slug":"faq","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"subframe-59800133","siteName":"Subframe Docs","title":"Installation - Subframe Docs","relatedPagesConfig":{"enabled":true,"limit":3,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-22T20:27:06.749Z","gitLastModified":"2026-10-22T01:39:29.000Z","originalFileLocation":"develop/installation.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Set up Subframe in your codebase.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Subframe Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/subframe-59800133/HHX6b_IDVg3WcJms/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/subframe-59800133/HHX6b_IDVg3WcJms/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/subframe-59800133/HHX6b_IDVg3WcJms/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/subframe-59800133/HHX6b_IDVg3WcJms/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/subframe-59800133/HHX6b_IDVg3WcJms/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/subframe-59800133/HHX6b_IDVg3WcJms/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/subframe-59800133/HHX6b_IDVg3WcJms/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/subframe-59800133/HHX6b_IDVg3WcJms/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/subframe-59800133/HHX6b_IDVg3WcJms/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Installation - Subframe Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Set up Subframe in your codebase.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Subframe Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.subframe.com/develop/installation\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://subframe-59800133.mintlify.app/_mintlify/api/og/v2?division=Building+from+scratch\u0026amp;title=Installation\u0026amp;description=Set+up+Subframe+in+your+codebase.\u0026amp;theme=69b2f1aca99b9fa855dd05fd\u0026amp;signature=2d30d67909724797e9e304b4ab5f5ba6c8a520f8a7eb2cd7e2d82ed0e38f9ed6\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Installation - Subframe Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Set up Subframe in your codebase.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://subframe-59800133.mintlify.app/_mintlify/api/og/v2?division=Building+from+scratch\u0026amp;title=Installation\u0026amp;description=Set+up+Subframe+in+your+codebase.\u0026amp;theme=69b2f1aca99b9fa855dd05fd\u0026amp;signature=2d30d67909724797e9e304b4ab5f5ba6c8a520f8a7eb2cd7e2d82ed0e38f9ed6\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/subframe-59800133/HHX6b_IDVg3WcJms/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Subframe Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#111111\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.subframe.com/develop/installation\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/develop/installation.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.subframe.com/#organization\",\"name\":\"Subframe Docs\",\"url\":\"https://docs.subframe.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://res.cloudinary.com/subframe/image/upload/v1711417507/shared/y2rsnhq3mex4auk54aye.png\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.subframe.com#website\",\"name\":\"Subframe Docs\",\"url\":\"https://docs.subframe.com\",\"publisher\":{\"@id\":\"https://docs.subframe.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.subframe.com/develop/installation#webpage\",\"url\":\"https://docs.subframe.com/develop/installation\",\"name\":\"Installation\",\"description\":\"Set up Subframe in your codebase.\",\"dateModified\":\"2026-10-22T01:39:29.000Z\",\"isPartOf\":{\"@id\":\"https://docs.subframe.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.subframe.com/develop/installation#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.subframe.com/develop/installation#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Building from scratch\",\"item\":\"https://docs.subframe.com/develop/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Installation\",\"item\":\"https://docs.subframe.com/develop/installation\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.subframe.com/develop/installation#article\",\"headline\":\"Installation\",\"name\":\"Installation\",\"description\":\"Set up Subframe in your codebase.\",\"url\":\"https://docs.subframe.com/develop/installation\",\"mainEntityOfPage\":{\"@id\":\"https://docs.subframe.com/develop/installation#webpage\"},\"dateModified\":\"2026-10-22T01:39:29.000Z\",\"publisher\":{\"@id\":\"https://docs.subframe.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.subframe.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Subframe Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Subframe Docs","nav":{"global":{"anchors":[{"anchor":"Go to Subframe","icon":"house","href":"https://subframe.com?utm_source=mintlify\u0026utm_medium=docs\u0026utm_campaign=global_link"},{"anchor":"Slack Community","icon":"slack","href":"https://join.slack.com/t/subframecommunity/shared_invite/zt-380uma6dv-_lr7_bDLU5DJcoygfUYkeQ"},{"anchor":"YouTube","icon":"youtube","href":"https://www.youtube.com/@SubframeApp"}]},"pages":[{"title":"Introduction","href":"/overview"},{"title":"Quickstart","href":"/quickstart"},{"title":"Desktop app","href":"/desktop-app"},{"title":"FAQ","href":"/faq"},{"group":"Design","pages":[{"title":"Overview","href":"/design/overview"},{"group":"Core Concepts","pages":[{"title":"Elements","href":"/design/elements"},{"group":"Components","pages":[{"title":"Overview","href":"/design/components/overview"},{"title":"Subcomponents","href":"/design/components/subcomponents"},{"title":"Props \u0026 slots","href":"/design/components/props-and-slots"},{"title":"Variants","href":"/design/components/variants"},{"title":"Hover, active, focus states","href":"/design/components/states"},{"title":"Import existing design system","href":"/design/components/importing"}]},{"title":"Pages","href":"/design/pages"},{"group":"Theme","pages":[{"title":"Customizing theme","href":"/design/theme/customizing-theme"},{"title":"Importing tokens","href":"/design/theme/importing-tokens"},{"title":"Exporting theme","href":"/design/theme/exporting-theme"},{"title":"Adding custom fonts","href":"/design/theme/adding-custom-fonts"}]},{"title":"Canvases","href":"/design/canvases"},{"title":"Snippets","href":"/design/snippets"},{"title":"Writing design docs","href":"/design/documents"},{"group":"Projects","pages":[{"title":"Overview","href":"/design/projects/overview"},{"title":"Project settings","href":"/design/projects/project-settings"},{"title":"Version history","href":"/design/projects/version-history"}]}]},{"group":"Using the editor","pages":[{"title":"Layers","href":"/design/design-mode/layers"},{"title":"Inspector","href":"/design/design-mode/inspector"},{"title":"Adding elements","href":"/design/design-mode/adding-elements"},{"title":"Working with stacks","href":"/design/design-mode/working-with-stacks"},{"title":"Page layouts","href":"/design/design-mode/page-layouts"},{"title":"Previewing designs","href":"/design/design-mode/preview"},{"title":"Responsive design","href":"/design/design-mode/responsive-design"},{"title":"Quick actions","href":"/design/design-mode/quick-actions"},{"title":"Keyboard shortcuts","href":"/design/design-mode/keyboard-shortcuts"},{"title":"Comments","href":"/design/design-mode/comments"},{"title":"Share designs","href":"/design/design-mode/share-designs"},{"title":"Custom CSS","href":"/design/design-mode/custom-css"}]},{"group":"Designing with AI","pages":[{"title":"Generating designs","href":"/design/ask-ai/prompt-to-design"},{"title":"Quick edits","href":"/design/ask-ai/making-quick-edits"},{"title":"Image to design","href":"/design/ask-ai/image-to-design"},{"title":"Adding context with @","href":"/design/ask-ai/adding-context"}]},{"title":"Exporting code and images","href":"/design/code-mode/overview"},{"group":"Prototype mode","pages":[{"title":"Creating prototypes","href":"/design/prototype-mode/overview"},{"title":"Annotations","href":"/design/prototype-mode/annotations"},{"title":"Interactions","href":"/design/prototype-mode/click-through-prototypes"}]}]},{"group":"Browser","pages":[{"title":"Overview","href":"/browser/overview"},{"title":"Previewing your local app","href":"/browser/previewing-your-local-app"},{"title":"Making live edits","href":"/browser/making-live-edits"},{"title":"Capturing as designs","href":"/browser/capturing-as-designs"},{"title":"Troubleshooting","href":"/browser/troubleshooting"}]},{"group":"Agent","pages":[{"title":"Using Agent chat","href":"/agent/overview"},{"title":"Connecting an agent","href":"/agent/connecting-an-agent"},{"title":"MCP server","href":"/agent/mcp-server"},{"title":"Connecting your codebase","href":"/agent/connecting-your-codebase"},{"title":"Giving your agent context","href":"/agent/giving-your-agent-context"},{"title":"Making code changes","href":"/agent/making-code-changes"},{"title":"Managing chats","href":"/agent/managing-chats"},{"title":"Troubleshooting","href":"/agent/troubleshooting"}]},{"group":"Building from scratch","pages":[{"sidebarTitle":"Overview","title":"Starting your design system in Subframe","description":"Build and manage your design system visually in Subframe, then sync it to code.","href":"/develop/overview"},{"title":"Installation","href":"/develop/installation"},{"group":"How it works","pages":[{"title":"Design to code workflow","description":"How Subframe connects designs to your codebase.","href":"/develop/concepts/design-to-code"},{"title":"Code generation","href":"/develop/concepts/code-generation"},{"title":"Syncing components","href":"/develop/concepts/syncing-components"}]},{"group":"Developer guides","pages":[{"title":"Dark mode","href":"/develop/guides/dark-mode"},{"title":"Accessibility","href":"/develop/guides/accessibility"},{"title":"Testing","href":"/develop/guides/testing"},{"title":"CLI in CI \u0026 agents","href":"/develop/guides/cli-automation"},{"title":"Publishing to NPM","href":"/develop/guides/publish-to-npm"},{"title":"Component directories","href":"/develop/upgrading/component-directories"}]},{"group":"Troubleshooting","pages":[{"title":"Next.js","href":"/develop/frameworks/nextjs"},{"title":"Vite","href":"/develop/frameworks/vite"},{"title":"Astro","href":"/develop/frameworks/astro"},{"title":"Monorepo","href":"/develop/frameworks/monorepo"},{"sidebarTitle":"Other (manual)","title":"Manual installation","href":"/develop/frameworks/manual"}]}]},{"group":"Admin and billing","pages":[{"title":"Managing team members","href":"/admin/managing-team"},{"title":"Managing pricing and plans","href":"/admin/pricing-and-plans"},{"title":"Managing auth tokens","href":"/admin/auth-tokens"},{"group":"Single sign-on (SSO)","pages":[{"title":"Setting up Okta SSO","href":"/admin/sso/okta"}]}]}]},"basePath":"","title":"Installation - Subframe Docs","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":[],"chunks":[]}