Running Pre-Submission Quality Checks for Marketplace Plugin Submission in Cursor

The review-plugin-submission skill validates your plugin's manifest, component structure, and documentation against Cursor Marketplace standards before you submit.

The cursor/plugins repository hosts a multi-plugin marketplace where each independent tool lives in its own top-level directory with a .cursor-plugin/plugin.json manifest. Before your plugin can be listed in the root .cursor-plugin/marketplace.json, you must run pre-submission quality checks to verify that all metadata, skills, and integration points meet the required standards.

What the Quality Check Validates

The review-plugin-submission skill, defined in create-plugin/skills/review-plugin-submission/SKILL.md, executes a comprehensive five-point audit against your plugin directory.

Manifest Validation

The skill first verifies that .cursor-plugin/plugin.json exists and contains all required fields. The name field must follow kebab-case formatting (lowercase letters, numbers, and hyphens only), and the manifest must include description, version, author, and license properties.

Component Discoverability

Every declared Skill, Rule, Agent, Command, Hook, and MCP server definition must exist at the expected relative paths. For example, if your manifest declares a skill at skills/my-tool/SKILL.md, that file must be present and accessible.

Component Metadata

Each component markdown file must contain valid front-matter with both a name and description field. The skill parses files like <plugin>/skills/**/SKILL.md to confirm these metadata blocks are present and non-empty.

Repository Integration

Your plugin must be registered in the root .cursor-plugin/marketplace.json with a unique source field that resolves correctly to your plugin directory. This ensures the marketplace can locate and load your tool.

Documentation Quality

Your plugin's README.md must include a clear purpose statement, installation instructions, and component coverage overview. Any referenced logos or images must point to valid repository-hosted paths rather than external URLs.

How to Run the Quality Checks

Using the Cursor CLI

Execute the pre-submission audit directly from the repository root using the Cursor CLI:


# From the repository root

cursor run review-plugin-submission

The CLI loads the skill definition from create-plugin/skills/review-plugin-submission/SKILL.md and runs the checklist against the plugin in your current working directory.

Manual Manifest Validation

If you need to validate the JSON structure programmatically without the CLI, use this Node.js script:

// validate-manifest.js
const fs = require('fs');
const path = require('path');

const manifestPath = path.join(__dirname, 'your-plugin/.cursor-plugin/plugin.json');
const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));

function assert(condition, msg) {
  if (!condition) throw new Error(msg);
}

// Basic checks
assert(typeof manifest.name === 'string' && /^[a-z0-9-]+$/.test(manifest.name),
       '`name` must be kebab-case');
assert(manifest.version, '`version` is required');
assert(manifest.author?.name, '`author.name` is required');
assert(manifest.license, '`license` is required');

console.log('✅ Manifest passes basic validation');

Run the validation with:

node validate-manifest.js

Verifying Marketplace Registration

Confirm your plugin is correctly listed in the marketplace manifest using jq:

jq '.plugins[] | select(.name=="your-plugin-name")' .cursor-plugin/marketplace.json

If this returns a JSON object, your plugin is properly registered for marketplace exposure.

Interpreting the Output

The review-plugin-submission skill generates a structured report showing pass/fail status for each validation category:


✔ Manifest exists and parses as valid JSON
✖ Missing front-matter in skill: your-plugin/skills/example-task/SKILL.md
✔ All declared paths are relative and exist
✖ README.md does not contain an installation section
...
=== RESULT ===
PASS: 3 / FAIL: 2
Recommendation: Fix the listed issues before publishing.

The output prioritizes fixes by severity, with manifest validation errors blocking submission while documentation warnings may be suggestions.

Summary

  • Manifest requirements: Your .cursor-plugin/plugin.json must exist with kebab-case naming and complete metadata fields.
  • Component paths: Every declared skill, rule, agent, and command must be discoverable at its specified relative path with proper front-matter.
  • Marketplace registration: You must list your plugin in the root .cursor-plugin/marketplace.json with a valid source pointer.
  • CLI command: Run cursor run review-plugin-submission from the repository root to execute the full audit.
  • Documentation standards: Include installation steps and purpose statements in your README.md, using only repository-hosted assets.

Frequently Asked Questions

What happens if my plugin fails the pre-submission quality check?

The skill outputs a prioritized fix list indicating which validation categories failed. You must resolve all manifest validation and component discoverability errors before the marketplace will accept your submission. Documentation warnings should also be addressed to ensure users can install and use your plugin correctly.

Where is the review-plugin-submission skill defined?

The skill definition lives at create-plugin/skills/review-plugin-submission/SKILL.md in the cursor/plugins repository. This markdown file contains the audit logic and checklist that the Cursor CLI executes when you run the review-plugin-submission command.

Can I run quality checks on a plugin that isn't registered in marketplace.json yet?

Yes. The skill validates your local plugin structure independently of the root marketplace manifest, though it will flag the missing registration as a repository integration error. You can fix component and documentation issues before adding your entry to .cursor-plugin/marketplace.json.

How does the skill validate component front-matter?

The skill parses each SKILL.md file in your <plugin>/skills/** directories to verify the presence of YAML front-matter containing both a name and description field. Missing or empty front-matter triggers a validation failure because these fields populate the marketplace UI and CLI help text.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →