feat(marketplace): add relevance signals for plugin suggestions#245
Conversation
Add relevance blocks (topic + cwd/cli/hosts/filesRead/manifestDeps signals) to 68 plugin entries so Claude Code v2.1.152+ can surface install suggestions when a session matches, per https://code.claude.com/docs/en/plugin-relevance Suggestions only appear once an administrator allowlists this marketplace via pluginSuggestionMarketplaces in managed settings.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reached
Next review available in: 41 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughAdds ChangesMarketplace relevance signals
Estimated code review effort: 2 (Simple) | ~15 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request updates .claude-plugin/marketplace.json to define relevance rules, including topics, CLI signals, file paths, and manifest dependencies, for various plugins. The review feedback correctly points out a duplicate entry for the asana plugin in the marketplace configuration, which could cause validation errors, and recommends merging the two entries.
Up to standards ✅🟢 Issues
|
Cover the plugin-relevance feature in user and contributor docs: README (how native suggestions work + managed-settings allowlist), CLAUDE.md (authoring guide for relevance blocks when adding plugins), and the marketplace-sync rule (relevance is Claude-only, not propagated by multi-format).
There was a problem hiding this comment.
No issues found across 4 files
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Architecture diagram
sequenceDiagram
participant User as User Workspace
participant CC as Claude Code Client (v2.1.152+)
participant Mkt as Marketplace (.claude-plugin/marketplace.json)
participant Admin as Admin Managed Settings
Note over User,Admin: Plugin Suggestion Flow
CC->>CC: Session starts (or context change)
CC->>Admin: Check pluginSuggestionMarketplaces allowlist
alt Allowlist includes "pleaseai"
Admin-->>CC: Allowed
CC->>Mkt: Load marketplace entries
Mkt-->>CC: Plugin list with relevance blocks
CC->>User: Collect project context
User-->>CC: cwd, CLIs run, hosts touched, files read, manifest deps
CC->>CC: Match signals per plugin:
Note over CC: cwd → plugin.cwd<br/>cli → plugin.cli<br/>hosts → plugin.hosts<br/>filesRead → plugin.filesRead<br/>manifestDeps → regex match
alt Match found (high-signal)
CC->>User: Suggest plugin (spinner tip, session notification, pin in Discover)
Note over User,CC: User confirms installation
else No match
CC->>CC: No suggestion
end
else Not allowlisted
Admin-->>CC: Not allowed
Note over CC: Relevance signals are inert – no suggestions shown
end
Greptile SummaryThis PR adds
Confidence Score: 5/5Safe to merge — changes are additive metadata only; no runtime code paths are modified and the new fields are ignored by older clients. All changes are declarative
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Claude Code session starts] --> B{Relevance engine evaluates signals}
B --> C[cwd globs match working directory?]
B --> D[cli commands run in session?]
B --> E[hosts touched in Bash commands?]
B --> F[filesRead globs match opened files?]
B --> G[manifestDeps pattern matches package.json?]
C & D & E & F & G --> H{Any signal fires?}
H -- Yes --> I[Plugin suggestion surfaced\nspinner tip / session-start notification\n/plugin Discover tab pin]
H -- No --> J[No suggestion]
I --> K{User confirms installation?}
K -- Yes --> L[Plugin installed]
K -- No --> M[Dismissed]
style A fill:#4A90D9,color:#fff
style I fill:#27AE60,color:#fff
style L fill:#27AE60,color:#fff
style J fill:#999,color:#fff
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
A[Claude Code session starts] --> B{Relevance engine evaluates signals}
B --> C[cwd globs match working directory?]
B --> D[cli commands run in session?]
B --> E[hosts touched in Bash commands?]
B --> F[filesRead globs match opened files?]
B --> G[manifestDeps pattern matches package.json?]
C & D & E & F & G --> H{Any signal fires?}
H -- Yes --> I[Plugin suggestion surfaced\nspinner tip / session-start notification\n/plugin Discover tab pin]
H -- No --> J[No suggestion]
I --> K{User confirms installation?}
K -- Yes --> L[Plugin installed]
K -- No --> M[Dismissed]
style A fill:#4A90D9,color:#fff
style I fill:#27AE60,color:#fff
style L fill:#27AE60,color:#fff
style J fill:#999,color:#fff
Reviews (4): Last reviewed commit: "chore: apply AI code review suggestions" | Re-trigger Greptile |
- Merge duplicate asana marketplace entries (keep first, add homepage) — fixes the pre-existing 'claude plugin validate' duplicate-name errors - Drop edgeparse relevance block: **/*.pdf is too broad a filesRead signal and overlapped markitdown's
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces native plugin suggestions for Claude Code (v2.1.152+) by adding "relevance" blocks containing topics and matching signals (such as CLI commands, hosts, files read, and manifest dependencies) to various plugins in ".claude-plugin/marketplace.json". It also updates documentation in ".claude/rules/marketplace-sync.md", "CLAUDE.md", and "README.md" to explain how these relevance signals work, how to configure them, and how to opt-in. The review feedback recommends improving the relevance triggers by adding the "react-native" CLI command for the React Native plugin and adding "filesRead" patterns for Playwright configuration files.
- react-native: add 'react-native' CLI signal alongside 'expo' - playwright-cli: add playwright.config.* filesRead signals
|
/gemini review |
There was a problem hiding this comment.
🧹 Nitpick comments (3)
.claude-plugin/marketplace.json (3)
1240-1252: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winGeneric
"workflow"dependency match is a noisy broad trigger.
workflowis a common, unrelated npm package name; matching it bare risks unrelated suggestions. Prefer scoping to the actual@workflow/*or specifically-named package for this SDK.As per coding guidelines, "avoid noisy broad triggers" for relevance signals.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude-plugin/marketplace.json around lines 1240 - 1252, The relevance signal in marketplace.json is matching a bare "workflow" package name, which is too broad and can trigger unrelated suggestions. Tighten the manifestDeps pattern in the Workflow SDK entry so it only matches the scoped `@workflow/`* packages or the specific SDK package name, and remove the generic workflow alternation from that regex.Source: Coding guidelines
672-685: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win
www.googleapis.comhost is not Workspace-specific.This host is shared across nearly all Google API products (Maps, YouTube, Cloud client libraries, etc.), not just Google Workspace, so it could over-trigger this suggestion for unrelated Google API usage.
As per coding guidelines, relevance signals should "avoid noisy broad triggers."
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude-plugin/marketplace.json around lines 672 - 685, The relevance signal in the google-workspace marketplace entry is too broad because googleapis.com is shared by many non-Workspace products. Update the relevance.hosts list in marketplace.json to remove the generic www.googleapis.com trigger and keep only Workspace-specific host(s) such as admin.googleapis.com, so the google-workspace plugin is surfaced only by narrow, low-noise signals.Source: Coding guidelines
786-803: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winGeneric
"chat"dependency match is a noisy broad trigger.Matching the bare dependency name
"chat"will fire for any package literally namedchatinpackage.json, which isn't necessarily related to Chat SDK. Consider scoping to the actual package name(s) this plugin targets (e.g.chat-sdkor another specific identifier) instead of a generic English word.As per coding guidelines, "avoid noisy broad triggers" for relevance signals.
Proposed narrower pattern
- "pattern": "\"(chat|`@chat-adapter/`[a-z0-9-]+)\"\\s*:" + "pattern": "\"(chat-sdk|`@chat-adapter/`[a-z0-9-]+)\"\\s*:"🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.claude-plugin/marketplace.json around lines 786 - 803, The manifest dependency signal for chat-sdk is too broad because it matches the generic package name chat. Narrow the pattern in the relevance.signals.manifestDeps entry for chat-sdk so it only matches the specific package identifier(s) this plugin actually targets, such as chat-sdk or the relevant `@chat-adapter/`* names, and avoid using the bare word chat in the package.json regex.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In @.claude-plugin/marketplace.json:
- Around line 1240-1252: The relevance signal in marketplace.json is matching a
bare "workflow" package name, which is too broad and can trigger unrelated
suggestions. Tighten the manifestDeps pattern in the Workflow SDK entry so it
only matches the scoped `@workflow/`* packages or the specific SDK package name,
and remove the generic workflow alternation from that regex.
- Around line 672-685: The relevance signal in the google-workspace marketplace
entry is too broad because googleapis.com is shared by many non-Workspace
products. Update the relevance.hosts list in marketplace.json to remove the
generic www.googleapis.com trigger and keep only Workspace-specific host(s) such
as admin.googleapis.com, so the google-workspace plugin is surfaced only by
narrow, low-noise signals.
- Around line 786-803: The manifest dependency signal for chat-sdk is too broad
because it matches the generic package name chat. Narrow the pattern in the
relevance.signals.manifestDeps entry for chat-sdk so it only matches the
specific package identifier(s) this plugin actually targets, such as chat-sdk or
the relevant `@chat-adapter/`* names, and avoid using the bare word chat in the
package.json regex.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: f5a509e6-6804-483b-bc65-7b2265e910b3
📒 Files selected for processing (4)
.claude-plugin/marketplace.json.claude/rules/marketplace-sync.mdCLAUDE.mdREADME.md
There was a problem hiding this comment.
Code Review
This pull request introduces native plugin suggestions for Claude Code (v2.1.152+) by adding relevance blocks with specific matching signals (such as CLI commands, hosts, files read, and manifest dependencies) to various plugin entries in .claude-plugin/marketplace.json. It also updates .claude/rules/marketplace-sync.md, CLAUDE.md, and README.md to document these relevance signals and explain how to configure them. The review feedback is highly constructive, pointing out opportunities to make the file matching patterns (filesRead) more robust for several plugins (Nuxt, UnoCSS, Vite, Vitest, Playwright, Next.js, and Bun) by using wildcards to capture alternative extensions and adding missing configuration files like bunfig.toml.
Widen config-file filesRead globs to wildcard extensions (nuxt/vite/vitest/unocss/playwright/next, plus tsdown/astro for consistency) and add bunfig.toml to the bun signals
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces native plugin suggestions for Claude Code (v2.1.152+) by adding relevance blocks to various marketplace entries in .claude-plugin/marketplace.json. It also updates CLAUDE.md, README.md, and .claude/rules/marketplace-sync.md to document the guidelines and configuration for this feature. A review comment suggests removing the noisy **/*.pdf glob pattern from the markitdown plugin's relevance signals to prevent false suggestions, which aligns with the newly documented best practices.
Drop the broad **/*.pdf filesRead signal from markitdown — PDFs are natively readable, so only docx/pptx reads remain as high-signal triggers for document conversion
|



Summary
Adds plugin relevance signals to 68 plugin entries in
.claude-plugin/marketplace.json. Each entry now carries atopicpluscwd/cli/hosts/filesRead/manifestDepssignals so Claude Code can proactively suggest the right plugin based on project context (working directory, installed CLIs, hosts touched, files read, and manifest dependencies).Related issue
Notes
pluginSuggestionMarketplacesin managed settings — without that, the new fields are inert metadata.claude plugin validate .claude-plugin/marketplace.jsonreports zero relevance warnings. The only errors surfaced are pre-existing duplicateasanaentries, which are untouched by this PR..agents/plugins/marketplace.json,.cursor-plugin/marketplace.json) are unaffected — relevance signals are Claude Code-only metadata. Abun scripts/cli.ts multi-formatrun showed no drift from this change.Checklist
bun run test)bun run lint)BREAKING CHANGE:note is includedSummary by cubic
Adds relevance signals to 68 plugins in
.claude-plugin/marketplace.jsonso Claude Code can suggest the right plugin based on project context. Requires Claude Code v2.1.152+ with this marketplace allowlisted viapluginSuggestionMarketplaces.New Features
relevanceblocks (topic +cwd/cli/hosts/filesRead/manifestDeps) to 68 entries for context-aware suggestions.CLAUDE.mdadds an authoring guide;marketplace-sync.mdnotesrelevanceis Claude-only andmulti-formatdoes not propagate it.Bug Fixes
asanaentries and added homepage; removededgeparserelevance to avoid noisy**/*.pdfmatches; dropped**/*.pdffrommarkitdownsignals (keepdocx/pptxonly); added missing signals (addedreact-nativeCLI;playwright.config.*); widened config-filefilesReadglobs to wildcard extensions for Nuxt/Vite/Vitest/UnoCSS/Playwright/Next.js plustsdown/astro; addedbunfig.tomlto Bun signals.Written for commit c6e0db4. Summary will update on new commits.
Summary by CodeRabbit