Prerequisites
Before publishing, make sure your plugin:- ✅ Exports valid
meta(withid,name,version) andsetup - ✅ Exports
teardown()for cleanup (removing CSS, clearing intervals, etc.) - ✅ Uses plugin-scoped storage (
getForPlugin/setForPlugin) - ✅ Has no external dependencies (vanilla JS only)
- ✅ Works in modern browsers
- ✅ Handles the
plugin:unloadevent or exportsteardown()
Step 1: Host Your Plugin
Uploadplugin.js somewhere publicly accessible. GitHub raw URLs are recommended:
The URL must be directly accessible — not behind a login or download page. The core fetches the file directly via
fetch().Step 2: Fork the Community Repo
Fork Empty_Plugins on GitHub.Step 3: Add Your Entry
Editplugins.json and add:
| Field | Required | Description |
|---|---|---|
id | ✅ | Unique kebab-case identifier |
name | ✅ | Display name |
url | ✅ | Public URL to the .js file (must end with .js) |
description | ✅ | What the plugin does |
author | ✅ | Your GitHub username |
icon | ❌ | Emoji icon (defaults to 📦) |
Step 4: Open a Pull Request
- Commit your changes
- Push to your fork
- Open a PR against
main - Use the title:
add: your-plugin-name
Plugin Checklist
- ✅ Self-contained — use the event bus, not imports
- ✅ Clean up — export
teardown()that removes CSS, clears intervals, removes event listeners - ✅ Scoped storage — use
getForPlugin/setForPlugin - ✅ Mobile-friendly — test on smaller screens
- ✅ Valid meta — includes
id,name,version - ✅ No eval() — security risk
- ✅ No undisclosed API calls — respect privacy
- ✅ CORS-compatible — your hosting must allow cross-origin fetches