A CLI tool to quickly scaffold plugins for Figma, Penpot, Sketch, and Framer with built-in development tools and best practices.
- Node.js β₯ 18
- npm β₯ 9
- git β required for
unoff create(initializes a git repository) and for allunoff addcommands (workers, skills, specs use git submodules)
If you don't have Homebrew installed, open Terminal and install it:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Then verify:
brew --versionOn macOS: Open Terminal and run:
# Using Homebrew (requires Homebrew to be installed)
brew install nodeOn Windows:
- Download the installer from nodejs.org
- Run the installer and follow the setup wizard
- Open Command Prompt (cmd.exe) or PowerShell and verify installation:
node --version npm --version
On Linux (Ubuntu/Debian): Open Terminal and run:
sudo apt update
sudo apt install nodejs npmOn Linux (Fedora/CentOS): Open Terminal and run:
sudo dnf install nodejs npmOn macOS: Open Terminal and run:
# Using Homebrew
brew install gitOn Windows:
- Download the installer from git-scm.com
- Run the installer and follow the setup wizard
- Open Command Prompt (cmd.exe) or PowerShell and verify installation:
git --version
On Linux (Ubuntu/Debian): Open Terminal and run:
sudo apt update
sudo apt install gitOn Linux (Fedora/CentOS): Open Terminal and run:
sudo dnf install gitInstall globally:
npm install -g @unoff/cliOr use with npx (no installation required):
npx @unoff/cli create figma-plugin# Install globally
npm install -g @unoff/cli
# Create a new Figma plugin (will prompt for name)
unoff create figma-plugin
# Navigate to the plugin directory
cd color-palette-generator
# Install dependencies
npm install
# Start development
unoff dev
# Open Figma and load the plugin:
# Plugins > Development > Import plugin from manifest...
# Select manifest.json from the plugin folderShow all commands, available platforms, and workers.
Scaffold a new plugin project.
| Platform | Status |
|---|---|
figma-plugin |
β Available |
penpot-plugin |
π§ Coming soon |
sketch-plugin |
π§ Coming soon |
framer-plugin |
π§ Coming soon |
The interactive prompt will ask for plugin name, output directory, GitHub username, author, license, and which external services to enable:
| Service | Default |
|---|---|
| Supabase (Database & Authentication) | β |
| Mixpanel (Analytics) | β |
| Sentry (Error Monitoring) | β |
| Notion (Announcements & Onboarding) | β |
Selected services update the is*Enabled flags in global.config.ts. All environment variable placeholders are always generated in .env.local.
unoff create figma-pluginStart development mode (npm run start:dev).
Build for production (npm run build:prod).
Run lint and type checking sequentially.
Format source code with Prettier.
Add a Cloudflare Worker as a git submodule. Automatically updates package.json workspaces and injects the corresponding start script. You will be prompted for the destination path.
| Worker | Script | Port |
|---|---|---|
announcement |
start:announcements |
8888 |
auth |
start:token |
8787 |
cors |
start:cors |
8989 |
unoff add worker announcement
npm install
npm run start:announcementsAdd the unoff-skills repository as a git submodule. You will be prompted for the destination path (default: skills/).
unoff add skills
git submodule update --init --recursiveCreate a local specs/ folder (or any path you choose) with an empty skill template in Markdown. Useful for documenting project-specific conventions in the same format as unoff-skills.
unoff add specs
# prompts for folder path and spec name
# creates specs/my-spec.md with frontmatter skeletonRemove a worker submodule and clean up package.json (workspaces + scripts).
unoff remove worker announcementRemove the skills submodule from the project.
unoff remove skillsRemove the local specs folder and all its contents.
unoff remove specs- π Quick setup with interactive CLI
- π¦ Multiple platform support (Figma β , Penpot π§, Sketch π§, Framer π§)
- π§ Built-in development server with hot reload
- ποΈ Production-ready build system
- ποΈ Toggleable external services (Supabase, Mixpanel, Sentry, Notion)
- π Authentication scaffolding (Supabase)
- π³ License management (LemonSqueezy)
- π Analytics and monitoring (Mixpanel, Sentry)
- π Internationalization (Tolgee)
- π’ Announcement & onboarding system (Notion + Cloudflare Workers)
- βοΈ Worker management via git submodules (
add worker/remove worker) - π Skills library integration via git submodule (
add skills/remove skills) - π Project specs scaffolding (
add specs/remove specs) - π Comprehensive AI-assistant documentation
- @unoff/ui β Pre-built UI components for design tool plugins
- Supabase β Backend as a Service for authentication and database
- LemonSqueezy β License management and payments
- Notion β CMS for announcements and onboarding
- Cloudflare Workers β Proxy layer for Notion API (auth + CORS)
- Tolgee β Translation management and i18n
For detailed usage instructions, see USAGE.md.
Contributions are welcome! Please open an issue or pull request on GitHub.
MPL-2.0