Skip to content

Repository files navigation

Reforma plugins

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.

Plugins

name Plugin Author Category description
demo-kit Demo Kit Reforma Demo Sample plugin to try the catalog — skills, tools, hooks, and a server.
bro-mode Bro Mode Reforma Moods Brother energy — blunt, warm, pushes back.
zen-mode Zen Mode Reforma Moods Calm, minimal, one clear step at a time.
ship-it Ship It Reforma Moods Smallest shippable change — merge beats polish.
professor Professor Reforma Moods Explain the why — context and tradeoffs.
hype-man Hype Man Reforma Moods Founder energy — vision, momentum, this thing wins.
caveman-mode Caveman Reforma Moods Cave-person talk. Broken words. Me do work.
shadcn-tailwind shadcn / Tailwind shadcn UI Official components and Tailwind utilities for the project.
fonts Fonts Reforma UI Google Fonts and custom typefaces for the project.
coss coss coss UI Extra components and particles on top of shadcn.
flexnative Flexnative Flexnative UI Ready-made blocks and patterns on top of shadcn.
context7 Context7 Reforma Workspace Up-to-date library docs and examples. Needs an API key.
google-drive Google Drive Reforma Files Search, read, create, and share files across Drive.
notion-workspace Notion Workspace Notion Labs Workspace Notion Skills + Notion MCP server packaged as a Cursor plugin.
dropbox Dropbox Dropbox Files Access, save and share files with Dropbox.

Author is plugin.json author.name when present, else Reforma. Shelf is the parent categories[] entry — plugin.json has no category.

Repository structure

Root marketplace.json lists plugins under categories[].plugins. source is a path in this repo or a GitHub tree/… URL.

Local plugins live under marketplace/<category>/<name>/. Origin (first-party vs vendored) is plugin.json author, not the folder tree. Remote pins stay as GitHub URLs. Array order is section order; empty shelves omit plugins.

plugins/
├── marketplace.json                 # categories + plugin index
├── 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
└── …convention folders (skills/, rules/, hooks/, …)

Other plugin layouts (skills, hooks, tools, MCP) follow the same convention folders as demos — see demo-kit.

bun install
bun run pack              # writes dist/catalog/ and dist/catalog.tar.gz

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.jsonmcp.json, and renames a lone MCP server key to the marketplace plugin name (chatgpt_app_mcpdropbox). HTTP MCP with no tools in mcp.json: pack calls initialize, then tools/list. 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 bundles tools/*.ts into one tools.mjs (@reforma/plugin-sdk / ai / zod stay external). Export defineTool as the file default; name = filename (Grep.tsGrep); 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.

About

Plugin marketplace for Reforma.ai

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages