Publishing & Marketplace
The Monday Morning Plugin Marketplace lets users browse, search, install, rate, and report community plugins directly from the desktop app. This guide covers how to publish your plugin.
How the Marketplace Works
Section titled “How the Marketplace Works”The marketplace has two parts:
-
Plugin Registry — a GitHub repo (
WeekendDevsOrg/MondayMorningPlugins) containing plugin metadata (manifest.json + README per plugin). A GitHub Action generates anindex.jsonthat the desktop app fetches. -
Supabase Backend — stores mutable data like download counts, ratings, and reports.
When a user clicks “Install” in the Browse tab, the desktop app downloads your plugin files from the registry repo and places them in ~/.monday-morning/plugins/{your-plugin-id}/.
What You Need to Publish
Section titled “What You Need to Publish”Your plugin submission needs:
| File | Required | Purpose |
|---|---|---|
manifest.json | Yes | Plugin metadata for the marketplace listing |
README.md | Yes | Rendered in the plugin detail view |
index.js | Yes | Compiled plugin entry point |
logo.png | No | Plugin logo for the marketplace card |
screenshots/ | No | Gallery images for the detail view |
lib/ | No | Additional compiled JavaScript modules |
manifest.json
Section titled “manifest.json”The marketplace manifest is separate from (but related to) the MondayMorningPlugin interface in your code. It contains metadata for the marketplace listing:
{ "id": "my-plugin", "name": "My Plugin", "version": "1.0.0", "description": "Short description for the browse grid (under 120 characters)", "longDescription": "Longer description rendered in the detail view. Supports markdown.", "author": { "name": "Your Name", "github": "your-github-username", "url": "https://optional-website.com" }, "category": "integration", "uiCategory": "development", "icon": "🔌", "logo": "logo.png", "screenshots": ["screenshots/main.png", "screenshots/settings.png"], "minAppVersion": "1.0.0", "keywords": ["keyword1", "keyword2", "keyword3"], "repository": "https://github.com/you/mm-plugin-my-plugin", "license": "MIT", "changelog": [ { "version": "1.0.0", "date": "2026-04-01", "changes": ["Initial release"] } ]}Required Fields
Section titled “Required Fields”| Field | Description |
|---|---|
id | Unique plugin identifier. Use lowercase with hyphens (e.g., my-plugin). Must match the id in your MondayMorningPlugin export. |
name | Human-readable name shown in the marketplace. |
version | Semver version string. |
description | Short description (under 120 characters) shown on the browse card. |
author.name | Your name or organization. |
category | One of integration, migration, export. |
Optional Fields
Section titled “Optional Fields”| Field | Description |
|---|---|
longDescription | Detailed description for the plugin detail view. Supports markdown. |
author.github | GitHub username — links to your profile in the detail view. |
author.url | Your website URL. |
uiCategory | Sidebar grouping: communications, development, project-management, financial, data-storage, export-reporting. |
icon | Emoji or SVG for the marketplace card. |
logo | Path to a logo image file (relative to the plugin folder). |
screenshots | Array of paths to screenshot images. |
minAppVersion | Minimum Monday Morning version required. |
keywords | Search keywords for discoverability. |
repository | URL to your plugin’s source code. |
license | SPDX license identifier (e.g., MIT, Apache-2.0). |
changelog | Array of version entries with dates and change descriptions. |
Publishing Methods
Section titled “Publishing Methods”Option 1: In-App Submission
Section titled “Option 1: In-App Submission”The desktop app has a “Submit Plugin” button in the Browse tab that packages your plugin and creates a PR automatically.
-
Build your plugin and verify it works locally (see Creating a Plugin).
-
Open the Monday Morning desktop app and go to Plugins > Browse.
-
Click Submit Plugin in the top-right.
-
Select your plugin’s project folder.
-
The app validates your
manifest.jsonand shows a preview. -
Click Submit for Review. This uploads your plugin and creates a pull request on the registry repo.
-
Wait for review. You’ll see a link to the PR where you can track status.
Option 2: Manual Pull Request
Section titled “Option 2: Manual Pull Request”Submit directly to the plugin registry repo:
-
Create a folder for your plugin:
plugins/my-plugin/├── manifest.json # Required├── README.md # Required├── index.js # Required — compiled plugin entry point├── lib/ # Optional — additional modules│ └── helpers.js├── logo.png # Optional└── screenshots/ # Optional└── main.png -
Add your compiled JavaScript files, manifest, and README.
-
Open a pull request to
main. -
The CI pipeline validates your manifest and runs basic checks.
Writing a Good README
Section titled “Writing a Good README”Your README.md is rendered in the plugin detail view. Include:
- What the plugin does — a clear one-paragraph summary
- Setup instructions — what credentials or configuration is needed
- Available tools — list each MCP tool with a brief description
- Examples — show sample prompts or tool calls
- Requirements — external accounts, API keys, minimum versions
Review Criteria
Section titled “Review Criteria”Submitted plugins are reviewed for:
- Valid manifest — all required fields present, valid JSON
- Unique ID — no conflicts with existing plugins
- Clear description — users should understand what the plugin does
- No malicious code — plugins are reviewed for security
- Valid license — must be an open-source license
Updating Your Plugin
Section titled “Updating Your Plugin”To release a new version:
- Update the
versionin both yourMondayMorningPluginexport andmanifest.json. - Add a new entry to the
changelogarray. - Submit a new PR to the registry (or use the in-app submission).
Users with the old version installed will see an “Update” badge in their Plugins page.
Marketplace Discovery
Section titled “Marketplace Discovery”The Browse tab ranks plugins using a discovery algorithm that considers:
- Download count (40% weight) — more installs rank higher
- Average rating (40% weight) — higher-rated plugins rank higher (minimum 3 ratings required)
- Recency (20% weight) — recently updated plugins get a boost
Users can also sort by Most Popular, Highest Rated, Newest, or Recently Updated.
Good keywords in your manifest.json help users find your plugin through search.
Next Steps
Section titled “Next Steps”- Creating a Plugin — Build a plugin from scratch.
- Plugin Architecture — Understand the full plugin lifecycle.
- Tool Registration — Define MCP tools with Zod schemas.