Skip to content

Add multi-marketplace plugin catalog for browse CLI#2254

Open
justinemach wants to merge 1 commit into
mainfrom
browse-plugin-catalog
Open

Add multi-marketplace plugin catalog for browse CLI#2254
justinemach wants to merge 1 commit into
mainfrom
browse-plugin-catalog

Conversation

@justinemach

Copy link
Copy Markdown

What

Adds a plugin catalog for the browse CLI (packages/cli) so it can be distributed through every major agent plugin marketplace, modeled on stripe/link-cli's layout.

Marketplaces covered

Marketplace Manifest
Claude Code .claude-plugin/marketplace.jsonplugins/browse
Cursor .cursor-plugin/marketplace.jsonplugins/browse
Codex / OpenAI .codex-plugin/plugin.json (rich interface block)
Generic agents .agents/plugins/marketplace.json
Grok .grok-plugin/plugin.jsonbest-effort placeholder; xAI has no published plugin-marketplace spec yet (mirrors the Codex schema, flagged in a _comment)

Layout

  • Catalog manifests at the package root; plugin in plugins/browse/ with per-marketplace plugin.json files.
  • Shared skills/browse/SKILL.md and assets/browse.svg are symlinked into plugins/browse/ (the docs-recommended way to share files across plugins) — single source of truth, no duplication.
  • scripts/sync-plugin-version.js (+ pnpm sync-plugin-version) pins every manifest and the skill to the CLI's package.json version.
  • New plugins/README.md documents the catalog.

Notes / decisions

  • Skill-only plugin — no MCP server. Unlike link-cli (MCP-first), browse is a CLI + skill, so mcpServers/.mcp.json are omitted; the plugin exposes ./skills/ and actions run through the browse binary.
  • Catalog lives in packages/cli (not the repo root), so /plugin marketplace add browserbase/stagehand won't auto-resolve it — install via local path or a future root pointer. Happy to add a root-level marketplace.json if we want one-line git installs.
  • Validated: claude plugin validate . and claude plugin validate ./plugins/browse both pass.

Open questions for review

  • Keep the best-effort .grok-plugin, or drop it until a real spec exists?
  • Final icon — assets/browse.svg is a placeholder.

🤖 Generated with Claude Code

Mirror the stripe/link-cli plugin layout so browse can be distributed
through Claude Code, Cursor, Codex/OpenAI, generic agents, and (best-effort)
Grok marketplaces. Skill-only plugin (no MCP server); shared skill + assets
symlinked into plugins/browse. Adds sync-plugin-version script and pins all
manifests to the CLI package version.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@justinemach justinemach requested a review from shrey150 June 16, 2026 00:33
@changeset-bot

changeset-bot Bot commented Jun 16, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 7fb3c69

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 issues found across 16 files

Confidence score: 3/5

  • In packages/cli/.codex-plugin/plugin.json, the required version field is missing, which can cause plugin validation or catalog publishing to fail if merged as-is — add the manifest version before merging.
  • In packages/cli/plugins/README.md, the bundled-skill install instruction uses npx skills add browse, which can mislead users into a broken setup path and increase support churn — update the docs to the CLI wrapper command (or equivalent path+flags) before merging.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="packages/cli/plugins/README.md">

<violation number="1" location="packages/cli/plugins/README.md:57">
P2: Install command is incorrect for bundled skill flow. Use the documented CLI wrapper (or equivalent path+flags), not `npx skills add browse`.</violation>
</file>

<file name="packages/cli/.codex-plugin/plugin.json">

<violation number="1" location="packages/cli/.codex-plugin/plugin.json:3">
P2: Codex plugin manifest is missing required `version`, which can break validation/publishing for this catalog entry.</violation>
</file>
Architecture diagram
sequenceDiagram
    participant Dev as Developer
    participant CLIRoot as packages/cli/
    participant PluginDir as plugins/browse/
    participant Skills as skills/browse/
    participant Assets as assets/
    participant Script as scripts/sync-plugin-version.js

    Note over Dev,Script: NEW: Multi-marketplace plugin catalog structure

    Dev->>CLIRoot: Create catalog manifests
    CLIRoot->>CLIRoot: .claude-plugin/marketplace.json
    CLIRoot->>CLIRoot: .cursor-plugin/marketplace.json
    CLIRoot->>CLIRoot: .codex-plugin/plugin.json
    CLIRoot->>CLIRoot: .grok-plugin/plugin.json
    CLIRoot->>CLIRoot: .agents/plugins/marketplace.json

    Note over CLIRoot,PluginDir: Catalog manifests reference plugin directory

    CLIRoot->>PluginDir: Point to plugins/browse/ as source

    PluginDir->>PluginDir: .claude-plugin/plugin.json
    PluginDir->>PluginDir: .codex-plugin/plugin.json
    PluginDir->>PluginDir: .cursor-plugin/plugin.json
    PluginDir->>PluginDir: .grok-plugin/plugin.json

    Note over PluginDir,Skills: Symlinks for single source of truth

    PluginDir->>Skills: skills -> ../../skills (symlink)
    Skills-->>PluginDir: Resolved SKILL.md

    PluginDir->>Assets: assets -> ../../assets (symlink)
    Assets-->>PluginDir: Resolved browse.svg

    Note over Dev,Script: Version synchronization flow

    Dev->>CLIRoot: Run pnpm sync-plugin-version
    CLIRoot->>Script: Execute sync-plugin-version.js

    Script->>CLIRoot: Read version from package.json
    CLIRoot-->>Script: version string

    Script->>Skills: Update version in SKILL.md frontmatter
    alt Version changed
        Skills-->>Script: Confirm update
    else Already current
        Skills-->>Script: No change needed
    end

    loop For each marketplace
        Script->>PluginDir: Update plugin.json version field
        PluginDir-->>Script: Confirm update or skip
    end

    Note over Dev,Assets: Agent marketplace discovery flow

    alt Claude Code agent
        Dev->>CLIRoot: claude plugin validate .
        CLIRoot->>PluginDir: Resolve browse source
        PluginDir-->>CLIRoot: Plugin metadata + skills
        CLIRoot-->>Dev: Validation result
    else Cursor agent
        Dev->>CLIRoot: Cursor reads .cursor-plugin/marketplace.json
        CLIRoot->>PluginDir: Resolve plugin path
        PluginDir-->>CLIRoot: Plugin manifest
    else Codex/OpenAI agent
        Dev->>CLIRoot: Agent reads .codex-plugin/plugin.json
        CLIRoot->>PluginDir: Resolve skills path
        PluginDir-->>CLIRoot: Skill definition
    end

    Note over CLIRoot,Assets: Grok plugin flagged as best-effort
    Note over CLIRoot,PluginDir: All actions run through browse CLI binary - no MCP server
Loading

Reply with feedback, questions, or to request a fix.

Fix all with cubic | Re-trigger cubic

```bash
browse skills install
# or
npx skills add browse

@cubic-dev-ai cubic-dev-ai Bot Jun 16, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Install command is incorrect for bundled skill flow. Use the documented CLI wrapper (or equivalent path+flags), not npx skills add browse.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/cli/plugins/README.md, line 57:

<comment>Install command is incorrect for bundled skill flow. Use the documented CLI wrapper (or equivalent path+flags), not `npx skills add browse`.</comment>

<file context>
@@ -0,0 +1,75 @@
+```bash
+browse skills install
+# or
+npx skills add browse
+```
+
</file context>
Suggested change
npx skills add browse
browse skills install
Fix with cubic

@@ -0,0 +1,38 @@
{
"name": "browse",
"description": "Unified Browserbase CLI for browser automation and cloud APIs",

@cubic-dev-ai cubic-dev-ai Bot Jun 16, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Codex plugin manifest is missing required version, which can break validation/publishing for this catalog entry.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/cli/.codex-plugin/plugin.json, line 3:

<comment>Codex plugin manifest is missing required `version`, which can break validation/publishing for this catalog entry.</comment>

<file context>
@@ -0,0 +1,38 @@
+{
+  "name": "browse",
+  "description": "Unified Browserbase CLI for browser automation and cloud APIs",
+  "author": {
+    "name": "Browserbase",
</file context>
Fix with cubic

@shrey150

Copy link
Copy Markdown
Contributor

@justinemach can you research if grok plugins are a thing / if there's a way to do them? If not, let's remove the metadata

@shrey150

Copy link
Copy Markdown
Contributor

Catalog lives in packages/cli (not the repo root), so /plugin marketplace add browserbase/stagehand won't auto-resolve it — install via local path or a future root pointer. Happy to add a root-level marketplace.json if we want one-line git installs.

We definitely need a clean "slug" to install plugins similar to how other agent plugins do it - I would check the format in http://github.com/browserbase/skills and see what feels ergonomic + the best way to do that, given that this lives in the stagehand repo

@shrey150

Copy link
Copy Markdown
Contributor

It sounds like Link CLI exposes both MCP and CLI in their plugin setup - why do they do this (is it to make adoption as easy as possible)? Should we also plug our hosted Browserbase MCP here?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants