Repository navigation
fix(distribution): make the Cursor plugin installable and document the install - #424
Merged
Merged
Conversation
…e install Following the README, a Cursor user got the 9 rules and none of the 16 skills: Cursor loads skills only from a skills folder or an installed plugin, and "reference skills by name in chat" does nothing. The repo's .cursor-plugin/plugin.json could not serve as that plugin: Cursor's schema (cursor/plugins schemas/plugin.schema.json) sets additionalProperties: false, and the manifest carried four inventory keys (snippets, templates, examples, showcase) that only mirrored the filesystem for this repo's own CI. jsonschema rejects it with exactly those four keys. - plugin.json drops the inventory keys (skills and rules stay) and adds homepage/repository; .cursor-plugin/marketplace.json is new. Both validate against Cursor's schemas. - The plugin-dist build ships the Cursor manifests, so a Cursor user clones the slim branch into ~/.cursor/plugins/local/ (README, landing install steps and the dist README say how; per-project copying of skills/ and rules/ is the fallback). - The landing page counts snippets, templates and examples from disk; Validate checks the manifest against the schema's allowed keys and the marketplace entry, instead of the inventory. CLAUDE.md, AGENTS.md and CONTRIBUTING.md drop the "list it in plugin.json" authoring step. Closes #347 Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
|
CI evidence before merge: all checks pass ( 13 pass ). Blender Smoke on PR head: Blender 5.2.2 LTS / Blender 4.5.14 LTS. Summaries (happy path; falsifiers) per leg: 143 passed, 1 skipped, 0 failed;142 passed, 0 skipped, 0 failed;141 passed, 3 skipped, 0 failed;136 passed, 6 skipped, 0 failed; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #347.
Problem
A Cursor user who followed the README got the 9 rules and none of the 16 skills. Cursor loads skills only from a skills folder (
.cursor/skills/,.agents/skills/, …) or from an installed plugin, so "reference skills by name in chat" did nothing.The repo's
.cursor-plugin/plugin.jsoncouldn't be that plugin either. Cursor's schema (cursor/pluginsschemas/plugin.schema.json) setsadditionalProperties: false, and the manifest carried four inventory keys (snippets,templates,examples,showcase). Those keys only mirrored the filesystem for this repo's own CI. There was also nomarketplace.json, which a repository import needs.Change
.cursor-plugin/plugin.json: drops the four inventory keys;skillsandrulesstay; addshomepageandrepository..cursor-plugin/marketplace.json: one entry,source: "./".scripts/build_plugin_dist.py:plugin-disttree now ships both Cursor manifests;verify()checks every Cursorskills/rulespath exists in the dist;~/.cursor/plugins/local/.installSteps(site.json), README update/uninstall:plugin-dist;skills/*+rules/*.mdcis the fallback;scripts/site/build_site.py: snippet, template and example-total counts come from disk instead of the manifest arrays.validate.ymlvalidate-manifest:marketplace.jsonlists exactly this plugin with allowed keys..cursor-plugin/plugin.json" authoring step for examples and showcase pieces (one less wiring step per new example).marketplace.jsonhas no version field to sync.Evidence
jsonschemaagainst Cursor's published schemas:plugin.json: valid;marketplace.json: valid;main'splugin.json: invalid,Additional properties are not allowed ('examples', 'showcase', 'snippets', 'templates' were unexpected).Manifest verified at v0.143.6: {'skills': 16, 'rules': 9}). Falsified againstmain's manifest, it exits 1 with fouris not in the Cursor plugin schemaerrors.build_plugin_dist.py --check:69 files, 0.28 MB ok.test_build_plugin_dist.pypasses.shader-node-groupmoved one place, because the manifest order wasn't sorted.check_counts.pyandcheck_frontmatter.pypass.Not run: installing into an actual Cursor client (no Cursor on this host, and I didn't want to modify a local Cursor profile). The layout follows Cursor's documented component discovery, and the manifests validate against Cursor's own schemas.
🤖 Generated with Claude Code