feat(marketplace): add the spring plugin - #270
Conversation
Registers `pleaseai/spring-plugin`, which answers Spring questions from the reference documentation of the version a project declares rather than the newest release. It reads the Spring Boot version out of `build.gradle`, `build.gradle.kts` or `pom.xml`, resolves it to a published documentation archive, and unpacks it into a shared cache. Relevance signals cover the two build tools and the files that carry a declared version, so the suggestion fires on a Spring project rather than on any JVM one. `.agents/plugins/marketplace.json` and `.cursor-plugin/marketplace.json` are the output of `bun run plugins:multi-format`, as CONTRIBUTING requires. That command also rewrites every `plugins/*/plugin.json`, adding a `$schema` key and bumping versions that had drifted from their sources; none of that belongs to this change, so those files are left as they were.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Code Review
This pull request updates the marketplace configurations across different agent plugins. Specifically, it registers several new AI plugins under the 'shunt' suite sourced from a Git repository, adds a new 'spring' plugin with detailed relevance signals for Java/Kotlin projects, and rearranges the order of existing plugins in the Cursor marketplace. There are no review comments, and the changes look correct and well-structured, so I have no feedback to provide.
|
There was a problem hiding this comment.
All reported issues were addressed across 3 files
Architecture diagram
sequenceDiagram
participant User as Claude User
participant Client as Claude Client
participant Market as Marketplace Catalog
participant Plugin as Spring Plugin (pleaseai/spring-plugin)
participant Proj as User's Spring Project
participant Docs as Spring Docs Archive (pleaseai/spring-docs)
participant Cache as Shared Documentation Cache
Note over User,Cache: NEW: Spring Plugin Installation and Runtime Flow
User->>Client: Ask Spring question
Client->>Market: Search for spring plugin
Market-->>Client: Return spring plugin metadata
Note over Client,Proj: Plugin Activation (relevance signals)
Client->>Proj: NEW: Detect Spring project files (build.gradle, build.gradle.kts, pom.xml)
alt Spring project detected
Client->>Plugin: Trigger Spring plugin
else No Spring project detected
Client->>Client: Do not activate plugin
end
Note over Plugin,Docs: Version Resolution
Plugin->>Proj: Read declared Spring Boot version
Proj-->>Plugin: Version (e.g., 3.2.5)
Plugin->>Docs: CHANGED: Resolve version-specific documentation archive
Docs-->>Plugin: Documentation archive URL
Plugin->>Cache: Check if version docs cached
alt Not cached
Plugin->>Docs: Download documentation archive
Docs-->>Plugin: Archive
Plugin->>Cache: NEW: Unpack and store in shared cache (outside project)
else Already cached
Cache-->>Plugin: Use cached documentation
end
Plugin->>Cache: Load version-specific reference docs
Cache-->>Plugin: Spring reference documentation
Plugin->>Client: Provide Spring answer from correct version docs
Client-->>User: Answer with accurate version-matched documentation
Note over Proj: No changes written to user's project
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
…ndency The signals matched every Gradle and Maven project. `gradle`, `mvn`, `**/build.gradle` and `**/pom.xml` say "this is a JVM project", not "this project uses Spring", so the suggestion would have fired on any Java or Kotlin repository. Replaces them with `manifestDeps`, which tests manifest contents rather than manifest existence: `spring-boot` in a `pom.xml`, `org.springframework.boot` in a Gradle build script or a version catalog. The remaining `filesRead` patterns keep only the Spring Boot config-file conventions, `application*` under `src/main/resources`.
Up to standards ✅🟢 Issues
|
|



What
Registers
pleaseai/spring-pluginasspring@pleaseai.It answers Spring questions from the reference documentation of the version a project actually declares, not the newest release: it reads the Spring Boot version out of
build.gradle,build.gradle.ktsorpom.xml, resolves it to a published documentation archive frompleaseai/spring-docs, and unpacks it once into a shared cache. Nothing is written into the user's project.{ "name": "spring", "category": "framework", "source": { "source": "github", "repo": "pleaseai/spring-plugin" } }Relevance signals
manifestDepsgates the suggestion on an actual Spring dependency —spring-bootin apom.xml,org.springframework.bootin a Gradle build script or a version catalog — rather than on the presence of a build file, which every JVM project has.filesReadadds the Spring Boot config convention (application*undersrc/main/resources). There is noclisignal:gradleandmvncarry no Spring information.The patterns were checked against real manifest shapes, including a
pom.xmlwith onlyjunit, abuild.gradlewith no Boot plugin, a Windows path, andpackage.json/mypom.xml.bakas negative controls.About the generated artifacts
bun run plugins:multi-formatwas run as CONTRIBUTING requires. It writes three marketplace catalogs — included here — and also rewrites all 152plugins/*/plugin.jsonfiles, adding a$schemakey and bumping versions that had drifted from their sources (for exampleplugins/antfu/plugin.jsongoes1.0.0→1.2.0).That drift is pre-existing and unrelated to adding one entry, so those files are reverted and only the catalogs are committed. Worth regenerating deliberately in its own PR — happy to do that separately if you want it.
The two generated catalogs also carry a small pre-existing ordering change (
shadcn-uiandtanstackswap positions) that the generator produces on its own; it is in the diff because the command produced it, not because this change asked for it..cursor-plugin/marketplace.jsonlists only local-source plugins, sospringis absent from it by design, asfirebase,askandflutterare.Checks
bun run lint— passbun run test— pass.claude-plugin/marketplace.jsonparses; 103 → 104 entries, no existingspringnameRelated
spring. This PR should land first: until the catalog listsspring, the install commands that PR documents do not resolve. (An earlier version of this description had the order backwards.)