Repository navigation
How to test and develop plugin before submission? #4
Description
Activity
For now , for local testing I made a small script here - https://github.com/tabnine/skills/blob/main/scripts/install-cursor-plugin.sh
Reacted by hardware-is-not-software, Tlapi, danny and Jasmine Hegman@yonidavidson that just infects your entire cursor configuration with bits of your plugin and makes it difficult to uninstall.
@yonidavidson that just infects your entire cursor configuration with bits of your plugin and makes it difficult to uninstall.
There is a flag for installing on repo level, this is mainly for testing
This commit may be a clue: cursor/plugins@82d7c79
@drewmcdonald I have tried that putting them in
~/.cursor/plugins/local/<plugin-name>. Even the built-in command to generate plugins puts them there. Unfortunately, cursor won't load those either.Reacted by Drew McDonaldhardware-is-not-software commented
on Mar 7, 2026 AuthorMore actions@ericzakariasson could you help us?
Use a .claude plugins setting since they do load that as well. Horrible support for cursor plugins especially when coming from Pi.
hey all! Cursor engineer here. We support reading in local plugins via ~/.cursor/plugins/local - put your plugin folder contents there, and Cursor will parse that as if it was a first party plugin. Let me know if you have issues or questions with this!
Please read here if you are trying to create your own plugin for the first time: https://cursor.com/docs/plugins#creating-plugins
- added a commit that references this issue
on Apr 9, 2026 Adding to @jaysunmah's answer above for anyone landing here later, since a few things changed since March:
~/.cursor/plugins/local/<plugin-name>/is still the way to try a plugin before submitting (docs: cursor.com/docs/plugins, "Test plugins locally"). After copying the files in, runDeveloper: Reload Windowand check Customize for the components you expect. Symlinks only load when they resolve inside that folder, so copy rather than link a repo elsewhere on disk; on Teams/Enterprise an admin has to allow local plugin imports.- Run
node scripts/validate-template.mjsfrom the repo root before and after your edits. Once ci: validate the template on every PR; fix hook script paths and permissions; add LICENSE #15 lands the same check runs on every PR here, and validate: parse hooks.json and mcp.json, check skill names against directories, require kebab-case names and semver #17 extends it tohooks.jsonandmcp.json. - For hooks, run the exact command strings from
hooks.jsonfrom a different working directory withCURSOR_PLUGIN_ROOTset to the plugin folder; that is how Cursor invokes them, and it is where./scripts/...paths break (ci: validate the template on every PR; fix hook script paths and permissions; add LICENSE #15 fixes the starter's). - Submission is at cursor.com/marketplace/publish for the curated marketplace, or cursor.directory/plugins/new for the community directory (docs: point submissions at cursor.directory and cursor.com, replace the archived postgres MCP example #16 updates the README).
I tried by placing the preliminary plugin to .cursor/plugins/ but it is not activating it in similar way as Skills. I can see plugins from marketplace have UUID directory level...