Marketplace plugins for Reforma. Each plugin is a folder with .reforma-plugin/plugin.json. Pack renames .cursor-plugin, .codex-plugin, or .claude-plugin to .reforma-plugin when that folder is missing.
| name | Plugin | Author | Category | description |
|---|---|---|---|---|
| bro-mode | Bro Mode | Reforma | Moods | Turns the agent into a brutally honest bestie who knows the craft, calls out bad ideas, and ships better ones with you. |
| zen-mode | Zen Mode | Reforma | Moods | Quiet. Do the work. No status talk — just the outcome. |
| ship-it | Ship It | Reforma | Moods | Cuts scope, kills gold-plating, and gets the smallest working change merged. |
| professor | Professor | Reforma | Moods | Grills the problem first — researches, challenges assumptions, settles every major fork with you — then builds. |
| founder | Founder | Reforma | Moods | Rough idea in, MVP out. Picks product, UX, and copy — no workshop. If it flops, it gets deleted. |
| caveman-mode | Caveman | Reforma | Moods | Chat like a caveman — savage mouth, real work. |
| frontend-design | Frontend Design | Anthropic | Playbooks | Give the UI a visual identity — palette, type, and layout for this product |
| web-design-guidelines | Web Design Guidelines | Vercel | Playbooks | Catch accessibility, form, and focus issues before they ship |
| react-best-practices | React Best Practices | Vercel | Playbooks | Keep the app fast — React and Next.js performance patterns |
| i18n | i18n | Reforma | Playbooks | Multiple languages — translated copy and a language switcher for the app |
| motion-design | Motion Design | LottieFiles | Playbooks | Timing, easing, and choreography so motion in the app feels intentional |
| coss | coss | coss | UI | Extra components and particle effects beyond the default shadcn set |
| flexnative | Flexnative | Flexnative | UI | Ready-made page blocks and patterns — drop in a section instead of assembling it |
| magic-ui | Magic UI | Magic UI | UI | Animated marketing pieces — shine, marquee, shimmer, and that kind of polish |
| tailark | Tailark | Tailark | UI | Marketing landing blocks and pages — heroes, pricing, footers |
| aceternity | Aceternity | Aceternity | UI | Motion-heavy blocks and visual effects for landing pages |
| 21st | 21st | 21st | UI | A living library of React components, templates, and themes. Add them to the project, or generate new UI. |
| context7 | Context7 | Reforma | Workspace | Current docs and examples for the libraries in the project |
| google-drive | Google Drive | Reforma | Files | Docs and files in Google Drive — find them, upload drafts, share from the project |
| notion-workspace | Notion | Notion Labs | Workspace | The team’s Notion — notes, pages, and databases in the project |
| linear | Linear | Linear | Workspace | The issue tracker — bugs, projects, and docs from Linear |
| dropbox | Dropbox | Dropbox | Files | Files in Dropbox — save, share, and pull them into the project |
| cloudinary | Cloudinary | Cloudinary | Files | Images and video in the cloud — upload, transform, and deliver them |
| slack | Slack | Slack | Workspace | The team’s Slack — channels, threads, and posts from the project |
| github | GitHub | GitHub | Workspace | GitHub in the project — issues, pull requests, and the repo |
| clerk | Clerk | Clerk | Auth | Drop-in auth — sign-in, organizations, and user accounts for the app |
| supabase | Supabase | Supabase | Backend | Backend for the app — database, auth, and file storage |
| stripe | Stripe | Stripe | Payments | Accept payments, manage customers, and handle subscriptions |
| higgsfield | Higgsfield | Higgsfield AI | Media | AI images and video from one studio |
| quiver | Quiver | QuiverAI | Media | Generate SVG and turn pictures into clean vectors |
| svgator | SVGator | SVGator | Media | Animated SVG — design the motion and export it into the project |
| lottiefiles | LottieFiles | LottieFiles | Media | Lightweight motion for the app — Lottie animations you can browse and drop in |
| recraft | Recraft | Recraft | Media | Generate and edit images with Recraft’s design models |
| replicate | Replicate | Replicate | Media | Image, video, and audio models — pick one, get the file |
| heygen | HeyGen | HeyGen | Media | Talking-head videos from a script and an avatar |
| fal | fal | fal | Media | Generate images, video, and audio from a wide set of models |
| elevenlabs | ElevenLabs | ElevenLabs | Media | Voice for the app — generate speech and pick the voice |
| sentry | Sentry | Sentry | Analytics | See crashes and traces from the live app, then fix them |
| gsap | GSAP | GreenSock | UI | Timeline animation, scroll effects, and motion — the GSAP toolkit |
| motion | Motion | Motion | UI | Animation for the web — springs, gestures, and layout motion |
| remotion | Remotion | Remotion | UI | Videos and motion graphics, written in React |
| game-creator | Game Creator | OpusGameLabs | Games | Browser games — 2D with Phaser, 3D with Three.js |
| firebase | Firebase | Firebase | Backend | Google’s backend — auth, database, and hosting |
| convex | Convex | Convex | Backend | A live backend — the database updates the UI as data changes |
| neon | Neon | Neon | Backend | Serverless Postgres — databases, branches, and SQL without running a server |
| appwrite | Appwrite | Appwrite | Backend | An open-source backend — auth, database, and storage |
| prisma | Prisma | Prisma | Backend | Talk to the database — schema, migrations, and queries in TypeScript |
| auth0 | Auth0 | Auth0 | Auth | Sign-in and user accounts, including social login and enterprise identity |
| workos | WorkOS | WorkOS | Auth | SSO and user management for B2B apps — enterprise sign-in without building it |
| shopify | Shopify | Shopify | Payments | The store in the app — products, orders, and shop data |
| resend | Resend | Resend | Messaging | Send email from the app — transactional mail and templates |
| cal-com | Cal.com | Cal.com | Scheduling | Let people book time — event types and a scheduler in the app |
| calendly | Calendly | Calendly | Scheduling | Scheduling links and a Calendly embed so people book themselves |
| figma | Figma | Figma | Design | Turn Figma frames into code for the project |
| google-maps | Google Maps | Maps | Maps in the app — places, routes, and what’s nearby | |
| mapbox | Mapbox | Mapbox | Maps | Custom maps — your style, search, and location in the app |
| posthog | PostHog | PostHog | Analytics | Product analytics — events, funnels, and session replay |
| amplitude | Amplitude | Amplitude | Analytics | Product analytics — events and charts so you see what people do |
| sanity | Sanity | Sanity | CMS | Structured content editors can change and the app can render |
| zapier | Zapier | Zapier | Automation | Connect the app to thousands of other tools without writing each integration |
| composio | Composio | Composio | Automation | A hub of app connections — Gmail, Notion, Slack, and the rest of the stack |
| make | Make | Make | Automation | Visual automations from Make — run scenarios and use the results in the app |
Author is plugin.jsonauthor.name when present, else Reforma. Shelf is the parent categories[] entry — plugin.json has no category. description is the marketplace pitch: what the product is for the person installing it. Not MCP verbs, not “needs an API key.”
Root marketplace.json lists plugins under categories[].plugins. source is a path in this repo or a GitHub tree/… URL. "disabled": true skips pack (folder stays) when the hosted MCP only accepts catalog clients (Figma waitlist). OAuth apps you register yourself (Drive, Dropbox, Slack, GitHub) stay enabled — credentials go in IN → OAuth clients, not here.
Local plugins live under marketplace/<category>/<name>/. Origin (first-party vs vendored) is plugin.jsonauthor, not the folder tree. Remote pins stay as GitHub URLs. Optional displayName / description on the listing, plus marketplace/_brand/<name>/logo.* (and logo-small.*), overlay the packed manifest — upstream Cursor plugins often ship repo-slug names and “plugin for Cursor” blurbs.
plugins/
├── marketplace.json # categories + plugin index
├── marketplace/_brand/<name>/ # overlay logos for GitHub pins
├── marketplace/<category>/<name>/
└── scripts/pack/ # snapshot for the API (entry: scripts/pack.ts)
A plugin folder:
marketplace/<category>/<name>/
├── .reforma-plugin/plugin.json
├── assets/logo.svg
├── assets/logo-small.svg # optional 12–14px glyph
└── …convention folders (skills/, rules/, hooks/, …)
interface.brandColor is the hex plate behind the market logo. Optional interface.brandColorDark is the same plate in dark theme. Optional logoSmall is the chip / chat-chrome mark — not the plated card art.
bun install
bun run pack # writes dist/catalog/ and dist/catalog.tar.gzCI pack (main / dev) uploads logo files to the public CDN and stamps https://cdn-public.reforma.ai/plugins/<sha256>.<ext> into packed plugin.json. Local pack without S3_URL / S3_PUBLIC_URL skips that and is not a source for the API — pull the GitHub catalog-<sha> snapshot instead.
Pack discovers convention folders (skills/, agents/, rules/, hooks/, tools/, mcp.json or .mcp.json) — no path fields needed in source plugin.json. Custom paths are remapped into that layout. If you import a Cursor/vendor plugin, pack also normalizes rules/*.mdc, .cursor/rules/, and instructions/ to plain rules/*.md, renames .mcp.json → mcp.json, and renames a lone MCP server key to the marketplace plugin name (chatgpt_app_mcp → dropbox). HTTP MCP with no tools / resources / resourceTemplates in mcp.json: pack calls initialize, then tools/list, resources/list, and resources/templates/list for whichever are missing. Bodies are not packed. Stdio MCP is not probed. Packed plugin.json keeps hooks: "./hooks/hooks.json" (+ hookOffers) and tools: "./tools.mjs" (+ toolOffers) when those ship. Skills/agents/rules/mcp paths are stripped — catalog and sandbox discover the folders.
Pack bundlestools/*.ts into one tools.mjs (@reforma/plugin-sdk / ai / zod stay external). Export defineTool as the file default; name = filename (Grep.ts → Grep); override: true = bare name, shadows.
Push to main or dev publishes a catalog-<7-char-sha> GitHub Release (keeps the newest 10). Reforma API on local/staging tries dev, then main. Prod bakes main.