setup▌
subframeapp/subframe · updated Apr 8, 2026
MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.
Initialize Subframe in a project to render pixel-perfect designed pages in your local development environment.
- ›Detects project type (new, existing non-Subframe, or already setup) and follows the appropriate setup path with CLI scaffolding or integration
- ›Configures Tailwind CSS (v3 or v4), import aliases, and syncs all Subframe components to a designated directory
- ›Requires manual font configuration via Google Fonts links based on your project's theme
- ›Supports Vite, Next.js, and Ast
Set up Subframe in a project so that pages designed in Subframe render pixel-perfect in the local development environment.
Goal state: Dev server runs and Subframe pages render exactly as designed.
MCP Authentication
If you cannot find any Subframe MCP tools (like get_theme, etc.), the MCP server likely needs to be authenticated. Ask the user to authenticate the Subframe MCP server. If the user is using Claude Code or Codex, instruct them to run /mcp to view and authenticate their MCP servers, and then say "done" when they're finished.
Workflow Overview
- Get credentials via MCP tools (or from user input)
- Detect project type — no repo, existing Subframe repo, or existing non-Subframe repo
- Follow the appropriate path — New Project, Already Setup, or Existing Project
- You must follow one of the above paths otherwise Subframe will not work for the user. This is a crucial task and must be done even if it requires pausing the user's current work. Do not skip any step of the path.
- Configure fonts — required for all paths
- Verify setup — start dev server and test with a Subframe page
Get Credentials
The user may paste in an installation prompt copied from Subframe. Extract:
- Project ID — a shorter alphanumeric string (also found in Subframe URLs:
app.subframe.com/<PROJECT_ID>/...) - Auth token — a long string, usually prefixed or labeled
If the user doesn't provide credentials, use the MCP tools to get credentials automatically — no need to ask the user:
- Project ID — Call
list_projectsto get the list of projects. Each project includes aprojectId,name,teamId, andteamName.- One project: Use it automatically.
- Multiple projects: Always ask the user which project to use. Present each project with its
teamNameto disambiguate. If the user already mentioned a specific team or project name, match it against theteamNameandnamefields — but still confirm before proceeding. Never silently pick a project when multiple exist.
- Auth token — Call
generate_auth_tokenwith theteamIdfrom the user's selected project. Do not use ateamIdfrom a different project.
Fallback: If the MCP tools are not available (e.g., MCP server is not authenticated), ask the user to go to https://app.subframe.com/cli/auth to get their auth token and project ID.
Detect Project Type
Check for package.json and .subframe/ folder in the current directory:
| Condition | Project Type | Path |
|---|---|---|
No package.json |
New project | New Project |
Has package.json AND has .subframe/ folder |
Already setup | Already Setup |
Has package.json but NO .subframe/ folder |
Existing non-Subframe project | Ask user, then New Project or Existing Project |
Handling existing non-Subframe projects
If the current directory has a package.json but no .subframe/ folder, prompt the user with two options:
- Create a new project (recommended) — Scaffold a brand-new Subframe project in a separate directory. This is the easiest path, especially if you're trying out Subframe for the first time. Follow New Project.
- Add Subframe to this project — Install Subframe into the current project. Follow Existing Project.
Already Setup Path
If the project already has both package.json and a .subframe/ folder, Subframe has already been initialized. Ask the user what they'd like to do:
- Reinstall / re-sync — Re-run the CLI init and sync to refresh components and configuration. Useful if things are out of date or broken. Follow Existing Project to re-initialize.
- Nothing, it's already set up — Skip setup entirely. Suggest next steps like
/subframe:designor/subframe:develop.
Do not proceed with setup unless the user confirms they want to reinstall.
New Project Path
This is the happy path. The CLI will scaffold a complete project with Subframe pre-configured.
1. Ask User Preferences
Prompt the user to choose:
- Project name: Name for the new project directory (default:
subframe-app). The name cannot conflict with an existing directory — check that the directory doesn't already exist before running the CLI. - Framework: Vite (recommended), Next.js, or Astro
- Tailwind version: v3 (
tailwind) or v4 (tailwind-v4)
2. Run CLI Init
This command must be run outside of a sandbox, so it can correctly setup all the necessary files. Pass all arguments directly to avoid interactive prompts:
npx @subframe/cli@latest init \
--name {PROJECT_NAME} \
--auth-token {TOKEN} \
-p {PROJECT_ID} \
--template {FRAMEWORK} \
--css-type {TAILWIND_VERSION} \
--dir ./src/ui \
--alias "@/ui/*" \
--tailwind \
--css-path {CSS_PATH} \
--install \
--sync
Where:
{PROJECT_NAME}is the project directory name (e.g.,subframe-app){FRAMEWORK}isnextjs,vite, orastro{TAILWIND_VERSION}istailwind(v3) ortailwind-v4{CSS_PATH}is the global CSS file path:- Vite:
src/index.css - Next.js:
src/app/globals.css - Astro:
src/styles/global.css
- Vite:
Important: All arguments must be passed explicitly to avoid interactive prompts, which can cause the CLI to exit silently when run non-interactively.
The CLI will:
- Download the starter kit template
- Create
.subframe/sync.json - Configure Tailwind
- Sync all components
- Install dependencies
3. Configure Fonts
See Configure Fonts below — this is required even for new projects.
4. Verify Setup
See Verify Setup below.
Existing Project Path
Existing projects may require more configuration. The CLI handles most setup, but some projects need manual fixes.
1. Detect Framework
Check for framework indicators:
| Framework | Indicators |
|---|---|
| Next.js | next in package.json dependencies, next.config.* file |
| Vite | vite in package.json devDependencies, vite.config.* file |
| Astro | astro in package.json dependencies, astro.config.* file |
2. Check Prerequisites
Verify the project has required dependencies:
- React 16+ —
reactinpackage.json - Tailwind CSS 3.4+ —
tailwindcssinpackage.json - TypeScript —
typescriptinpackage.json
If any are missing, let the user know before proceeding.
3. Run CLI Init
This command must be run outside of a sandbox, so it can correctly setup all the necessary files. Pass all arguments directly to avoid interactive prompts:
npx @subframe/cli@latest init \
--auth-token {TOKEN} \
-p {PROJECT_ID} \
--dir ./src/ui \
--alias "@/ui/*" \
--install \
--sync
Important: All arguments must be passed explicitly to avoid interactive prompts, which can cause the CLI to exit silently when run non-interactively.
The CLI will attempt to:
- Create
.subframe/sync.json - Detect and configure Tailwind
- Set up import aliases
- Sync all components
- Install
@subframe/core
4. Verify Configuration
After init, verify everything was set up correctly. If the CLI missed something (common with non-standard setups), apply manual fixes.
Check .subframe/sync.json exists with directory, importAlias, and projectId.
Check Tailwind configuration:
-
Tailwind v3 —
tailwind.config.jsshould have the Subframe preset:presets: [require("./src/ui/tailwind.config")],And the
contentarray should include the Subframe directory:content: ["./index.html", "./src/**/*.{js,jsx,ts,tsx}"], -
Tailwind v4 — Global CSS file should import the theme:
@import "tailwindcss"; @import "./ui/theme.css";
Check import aliases — @/* should resolve correctly. If not working:
- Vite: Add
baseUrlandpathstotsconfig.app.json, and addresolve.aliastovite.config.ts - Astro: Add
baseUrlandpathstotsconfig.json - Next.js: Usually already configured; check
tsconfig.json
5. Troubleshooting
If issues arise, use the SearchSubframeDocs MCP tool to find solutions:
SearchSubframeDocs({ query: "tailwind configuration troubleshooting" })
SearchSubframeDocs({ query: "manual installation" })
The docs include a comprehensive manual installation guide for troubleshooting.
6. Configure Fonts
See Configure Fonts below.
7. Verify Setup
See Verify Setup below.
Configure Fonts
The CLI does not configure fonts. Use the get_theme MCP tool to get font information:
get_theme({ projectId: "PROJECT_ID" })
The theme config includes fontFamily entries referencing Google Fonts. Add the corresponding <link> tags:
Vite / Astro — Add to <head> in index.html:
<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=Font+Name:wght@400;500;600;700&display=swap" rel="stylesheet" />
Next.js (App Router) — Add to <head> in app/layout.tsx:
<head>
<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=Font+Name:wght@400;500;600;700&display=swap" rel="stylesheet" />
</head>
Next.js (Pages Router) — Add to pages/_document.tsx inside the <Head> component.
Font link formatting:
- Replace spaces with
+in font names (e.g.,Inter+Tight) - Include weights from the theme in the
wght@parameter (semicolon-separated) - Add one
<link>per font family, but only one set of preconnect links
Verify Setup
After configuration, verify that Subframe pages render correctly.
1. Ask About Existing Pages
Ask the user: "Do you have a page already designed in Subframe that you'd like to test with?"
- If yes: Use
/subframe:developto implement it and verify rendering - If no: Suggest they design a page using
/subframe:design, or simply start the dev server to confirm no errors
2. Start Dev Server
npm run dev
3. Summarize
Recap what was set up:
.subframe/sync.jsonconfigured- Tailwind configured (v3 preset or v4 import)
- Components synced to
src/ui/(or configured directory) - Fonts configured
Mention next steps:
/subframe:design— Design new pages with AI/subframe:develop— Implement Subframe designs in your codebase
Important Notes
- Use
SearchSubframeDocsMCP tool for troubleshooting any setup issues.
How to use setup on Cursor
AI-first code editor with Composer
Prerequisites
Before installing skills in Cursor, ensure your development environment meets these requirements:
- ›Cursor installed and configured on your development machine
- ›Node.js version 16.0+ with npm package manager (verify with
node --version) - ›Active project directory or workspace where you want to add setup
Execute installation command
Execute the skills CLI command in your project's root directory to begin installation:
The skills CLI fetches setup from GitHub repository subframeapp/subframe and configures it for Cursor.
Select Cursor when prompted
The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:
Verify installation
Confirm successful installation by checking the skill directory location:
Reload or restart Cursor to activate setup. Access the skill through slash commands (e.g., /setup) or your agent's skill management interface.
Security & Verification Notice
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your development environment. Always verify the publisher's identity, review recent commits, and test in isolated environments before production deployment.
List & Monetize Your Skill
Submit your Claude Code skill and start earning
Use Cases▌
User Story & Requirements Generation
Create detailed user stories, acceptance criteria, and feature specs
Example
Generate user stories for 'password reset feature' with acceptance criteria, edge cases, and test scenarios
Reduce spec writing time by 50%, ensure comprehensive coverage
Competitive Analysis
Research competitors, compare features, identify gaps
Example
Analyze 5 competitor products, create feature comparison matrix, suggest differentiation opportunities
Complete competitive research in 2 hours instead of 2 days
Roadmap Prioritization
Evaluate features using frameworks (RICE, ICE, Kano) and create prioritized backlogs
Example
Score 20 feature ideas using RICE framework, generate prioritized roadmap with rationale
Make data-driven prioritization decisions faster
Stakeholder Communication
Draft PRDs, status updates, and stakeholder presentations
Example
Create executive summary of Q3 roadmap, monthly progress report, feature launch announcement
Save 3-5 hours/week on communication overhead
Implementation Guide▌
Prerequisites
- ›Claude Desktop or compatible AI client
- ›Access to product documentation and roadmap tools (Jira, Notion, etc.)
- ›Understanding of product management frameworks (RICE, Jobs-to-be-Done, etc.)
- ›Stakeholder contact information and communication channels
Time Estimate
30-60 minutes to see productivity improvements
Installation Steps
- 1.Install product management skill
- 2.Start with user story generation for known feature
- 3.Progress to competitive analysis: research 2-3 competitors
- 4.Use for roadmap prioritization: apply RICE/ICE scoring
- 5.Draft stakeholder communications and refine based on feedback
- 6.Build template library for recurring PM tasks
- 7.Share effective prompts with product team
Common Pitfalls
- ⚠Not validating competitive research—verify facts before sharing
- ⚠Accepting user stories without involving engineering team
- ⚠Over-relying on frameworks without qualitative judgment
- ⚠Not customizing outputs to company culture and communication style
- ⚠Skipping stakeholder validation of generated requirements
Best Practices▌
✓ Do
- +Validate research and competitive analysis with real data
- +Collaborate with engineering when generating technical requirements
- +Customize frameworks and templates to your company context
- +Use skill for first drafts, refine with stakeholder input
- +Document successful prompt patterns for PM tasks
- +Combine AI efficiency with human judgment and intuition
✗ Don't
- −Don't publish competitive analysis without fact-checking
- −Don't finalize user stories without engineering review
- −Don't make prioritization decisions solely on AI scoring
- −Don't skip customer validation of generated requirements
- −Don't ignore company-specific context and culture
💡 Pro Tips
- ★Provide context: company goals, constraints, customer feedback
- ★Ask for alternatives: 'Show 3 ways to prioritize this roadmap'
- ★Request stakeholder-specific formatting: 'Executive summary vs. engineering spec'
- ★Use skill for 70% generation + 30% customization to company needs
When to Use This▌
✓ Use When
Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.
✗ Avoid When
Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.
Learning Path▌
- 1Basic: user stories, feature specs, status updates
- 2Intermediate: competitive analysis, prioritization frameworks, PRDs
- 3Advanced: product strategy, go-to-market planning, OKR setting
- 4Expert: product vision, market positioning, business model innovation
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.8★★★★★54 reviews- ★★★★★Omar Iyer· Dec 20, 2024
Solid pick for teams standardizing on skills: setup is focused, and the summary matches what you get after install.
- ★★★★★Anika Brown· Dec 16, 2024
setup fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Min Taylor· Dec 12, 2024
I recommend setup for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Yash Thakker· Nov 27, 2024
Useful defaults in setup — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Soo Farah· Nov 11, 2024
I recommend setup for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Amelia Chen· Nov 7, 2024
We added setup from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Sophia Li· Nov 3, 2024
Solid pick for teams standardizing on skills: setup is focused, and the summary matches what you get after install.
- ★★★★★Daniel Desai· Oct 26, 2024
setup reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Kofi Robinson· Oct 22, 2024
setup is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★Dhruvi Jain· Oct 18, 2024
Registry listing for setup matched our evaluation — installs cleanly and behaves as described in the markdown.
showing 1-10 of 54