Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions packages/cli/.agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "browse-plugins",
"interface": {
"displayName": "Browse"
},
"plugins": [
{
"name": "browse",
"source": {
"source": "local",
"path": "./plugins/browse"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "OPTIONAL"
},
"category": "Automation"
}
]
}
42 changes: 42 additions & 0 deletions packages/cli/.claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"name": "browse-cli",
"owner": {
"name": "Browserbase",
"email": "support@browserbase.com"
},
"metadata": {
"description": "Unified Browserbase CLI for browser automation, cloud APIs, Functions, and Browse.sh skill discovery."
},
"plugins": [
{
"name": "browse",
"source": "./plugins/browse",
"description": "Drive a local or Browserbase-hosted browser, inspect and interact with pages, manage Browserbase cloud resources and Functions, scaffold templates, and discover Browse.sh skills.",
"author": {
"name": "Browserbase"
},
"homepage": "https://github.com/browserbase/stagehand/tree/main/packages/cli",
"repository": "https://github.com/browserbase/stagehand",
"license": "MIT",
"category": "automation",
"tags": [
"browser-automation",
"browserbase",
"stagehand",
"scraping",
"web",
"agents",
"cli"
],
"keywords": [
"browser-automation",
"browserbase",
"stagehand",
"scraping",
"web",
"agents",
"cli"
]
}
]
}
38 changes: 38 additions & 0 deletions packages/cli/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -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

"author": {
"name": "Browserbase",
"url": "https://browserbase.com"
},
"homepage": "https://github.com/browserbase/stagehand/tree/main/packages/cli",
"repository": "https://github.com/browserbase/stagehand",
"license": "MIT",
"keywords": [
"browser-automation",
"browserbase",
"stagehand",
"scraping",
"web",
"agents",
"cli"
],
"skills": "./skills/",
"interface": {
"displayName": "Browse",
"shortDescription": "Browser automation for agents",
"longDescription": "Drive a local or Browserbase-hosted browser, inspect and interact with pages, manage Browserbase cloud resources and Functions, scaffold templates, and discover Browse.sh skills.",
"developerName": "Browserbase",
"category": "Automation",
"capabilities": [],
"websiteURL": "https://browserbase.com",
"privacyPolicyURL": "https://www.browserbase.com/privacy",
"termsOfServiceURL": "https://www.browserbase.com/terms",
"defaultPrompt": [
"Use browse to open a page and take a snapshot"
],
"screenshots": [],
"composerIcon": "./assets/browse.svg",
"logo": "./assets/browse.svg"
}
}
17 changes: 17 additions & 0 deletions packages/cli/.cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "browse-cli",
"owner": {
"name": "Browserbase",
"email": "support@browserbase.com"
},
"metadata": {
"description": "Browserbase Browse CLI — lets agents drive local or hosted browsers, inspect and interact with pages, and call Browserbase cloud APIs."
},
"plugins": [
{
"name": "browse",
"source": "plugins/browse",
"description": "Drive a local or Browserbase-hosted browser, inspect pages with accessibility snapshots and screenshots, and manage Browserbase cloud resources, Functions, and templates."
}
]
}
30 changes: 30 additions & 0 deletions packages/cli/.grok-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"_comment": "Best-effort manifest for xAI Grok. Grok has no published plugin-marketplace spec yet; this mirrors the Codex/OpenAI plugin schema as a forward-compatible placeholder. Revisit when an official format ships.",
"name": "browse",
"description": "Unified Browserbase CLI for browser automation and cloud APIs",
"author": {
"name": "Browserbase",
"url": "https://browserbase.com"
},
"homepage": "https://github.com/browserbase/stagehand/tree/main/packages/cli",
"repository": "https://github.com/browserbase/stagehand",
"license": "MIT",
"keywords": [
"browser-automation",
"browserbase",
"stagehand",
"scraping",
"web",
"agents",
"cli"
],
"skills": "./skills/",
"interface": {
"displayName": "Browse",
"shortDescription": "Browser automation for agents",
"longDescription": "Drive a local or Browserbase-hosted browser, inspect and interact with pages, manage Browserbase cloud resources and Functions, scaffold templates, and discover Browse.sh skills.",
"developerName": "Browserbase",
"category": "Automation",
"websiteURL": "https://browserbase.com"
}
}
5 changes: 5 additions & 0 deletions packages/cli/assets/browse.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@
"manifest": "oclif manifest .",
"test": "pnpm build && vitest run",
"test:cli": "vitest run",
"sync-plugin-version": "node scripts/sync-plugin-version.js",
"prepublishOnly": "pnpm build"
},
"dependencies": {
Expand Down
75 changes: 75 additions & 0 deletions packages/cli/plugins/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# browse plugin

This directory holds the **browse** plugin and its per-marketplace metadata, so `browse` can be distributed through every major agent plugin marketplace. The plugin exposes the bundled `browse` skill (`../skills/browse/SKILL.md`); all browser and cloud actions run through the `browse` binary the skill calls.

> `browse` is a CLI-plus-skill plugin — it does **not** run an MCP server.

## Layout

The catalog mirrors the [Stripe link-cli](https://github.com/stripe/link-cli) plugin structure. Catalog manifests live at the package root; the plugin itself lives in `plugins/browse/`:

```
packages/cli/
├── .claude-plugin/marketplace.json # Claude Code marketplace catalog → ./plugins/browse
├── .cursor-plugin/marketplace.json # Cursor marketplace catalog
├── .codex-plugin/plugin.json # Codex / OpenAI manifest (rich "interface" block)
├── .grok-plugin/plugin.json # Grok (best-effort; no published spec yet)
├── .agents/plugins/marketplace.json # Generic agents catalog ("policy" block)
├── assets/browse.svg # Shared icon
├── skills/browse/SKILL.md # Shared skill (single source of truth)
└── plugins/browse/
├── .claude-plugin/plugin.json # Per-marketplace plugin manifests
├── .codex-plugin/plugin.json
├── .cursor-plugin/plugin.json
├── .grok-plugin/plugin.json
├── skills -> ../../skills # symlink to the shared skill
└── assets -> ../../assets # symlink to the shared assets
```

The skill and assets are **symlinked** into `plugins/browse/` so every marketplace ships the same files without duplication — the approach recommended by the [Claude Code plugin docs](https://code.claude.com/docs/en/plugins-reference#plugin-caching-and-file-resolution).

## Marketplaces

| Marketplace | Catalog manifest | Plugin manifest |
|-------------|------------------|-----------------|
| Claude Code | `.claude-plugin/marketplace.json` | `plugins/browse/.claude-plugin/plugin.json` |
| Cursor | `.cursor-plugin/marketplace.json` | `plugins/browse/.cursor-plugin/plugin.json` |
| Codex / OpenAI | `.codex-plugin/plugin.json` | `plugins/browse/.codex-plugin/plugin.json` |
| Generic agents | `.agents/plugins/marketplace.json` | — |
| Grok _(best-effort)_ | `.grok-plugin/plugin.json` | `plugins/browse/.grok-plugin/plugin.json` |

> **Grok:** xAI has no published plugin-marketplace spec yet. The `.grok-plugin` manifests mirror the Codex/OpenAI schema as a forward-compatible placeholder and carry a `_comment` saying so. Revisit when an official format ships.

## Install

**Claude Code** — add the catalog and install:

```bash
/plugin marketplace add ./path/to/packages/cli
/plugin install browse@browse-cli
```

**Any agent** — install the bundled skill directly (installs globally for every supported agent):

```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

```

## Versioning

All manifests and the skill are pinned to the `browse` CLI version in `packages/cli/package.json`. After a version bump, sync them:

```bash
pnpm --filter browse sync-plugin-version
```

This reads the version from `package.json` and updates `skills/browse/SKILL.md` plus each `plugins/browse/.*-plugin/plugin.json`.

## Validate

```bash
claude plugin validate . # marketplace manifest
claude plugin validate ./plugins/browse # plugin manifest + skill frontmatter
```
9 changes: 9 additions & 0 deletions packages/cli/plugins/browse/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "browse",
"version": "0.8.4",
"description": "Drive a local or Browserbase-hosted browser, inspect and interact with pages, manage Browserbase cloud resources and Functions, scaffold templates, and discover Browse.sh skills.",
"author": {
"name": "Browserbase"
},
"skills": "./skills/"
}
39 changes: 39 additions & 0 deletions packages/cli/plugins/browse/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"name": "browse",
"version": "0.8.4",
"description": "Unified Browserbase CLI for browser automation and cloud APIs",
"author": {
"name": "Browserbase",
"url": "https://browserbase.com"
},
"homepage": "https://github.com/browserbase/stagehand/tree/main/packages/cli",
"repository": "https://github.com/browserbase/stagehand",
"license": "MIT",
"keywords": [
"browser-automation",
"browserbase",
"stagehand",
"scraping",
"web",
"agents",
"cli"
],
"skills": "./skills/",
"interface": {
"displayName": "Browse",
"shortDescription": "Browser automation for agents",
"longDescription": "Drive a local or Browserbase-hosted browser, inspect and interact with pages, manage Browserbase cloud resources and Functions, scaffold templates, and discover Browse.sh skills.",
"developerName": "Browserbase",
"category": "Automation",
"capabilities": [],
"websiteURL": "https://browserbase.com",
"privacyPolicyURL": "https://www.browserbase.com/privacy",
"termsOfServiceURL": "https://www.browserbase.com/terms",
"defaultPrompt": [
"Use browse to open a page and take a snapshot"
],
"screenshots": [],
"composerIcon": "./assets/browse.svg",
"logo": "./assets/browse.svg"
}
}
16 changes: 16 additions & 0 deletions packages/cli/plugins/browse/.cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"name": "browse",
"displayName": "Browserbase Browse",
"version": "0.8.4",
"description": "Drive a local or Browserbase-hosted browser, inspect pages with accessibility snapshots and screenshots, and manage Browserbase cloud resources, Functions, and templates.",
"author": {
"name": "Browserbase"
},
"homepage": "https://github.com/browserbase/stagehand/tree/main/packages/cli",
"repository": "https://github.com/browserbase/stagehand",
"license": "MIT",
"keywords": ["browser-automation", "browserbase", "stagehand", "scraping", "agents"],
"category": "automation",
"tags": ["browser", "automation", "browserbase", "stagehand", "agents"],
"skills": "./skills/"
}
31 changes: 31 additions & 0 deletions packages/cli/plugins/browse/.grok-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"_comment": "Best-effort manifest for xAI Grok. Grok has no published plugin-marketplace spec yet; this mirrors the Codex/OpenAI plugin schema as a forward-compatible placeholder. Revisit when an official format ships.",
"name": "browse",
"version": "0.8.4",
"description": "Unified Browserbase CLI for browser automation and cloud APIs",
"author": {
"name": "Browserbase",
"url": "https://browserbase.com"
},
"homepage": "https://github.com/browserbase/stagehand/tree/main/packages/cli",
"repository": "https://github.com/browserbase/stagehand",
"license": "MIT",
"keywords": [
"browser-automation",
"browserbase",
"stagehand",
"scraping",
"web",
"agents",
"cli"
],
"skills": "./skills/",
"interface": {
"displayName": "Browse",
"shortDescription": "Browser automation for agents",
"longDescription": "Drive a local or Browserbase-hosted browser, inspect and interact with pages, manage Browserbase cloud resources and Functions, scaffold templates, and discover Browse.sh skills.",
"developerName": "Browserbase",
"category": "Automation",
"websiteURL": "https://browserbase.com"
}
}
1 change: 1 addition & 0 deletions packages/cli/plugins/browse/assets
1 change: 1 addition & 0 deletions packages/cli/plugins/browse/skills
49 changes: 49 additions & 0 deletions packages/cli/scripts/sync-plugin-version.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/usr/bin/env node

// Keeps every plugin manifest and the bundled skill pinned to the browse CLI's
// package.json version. Run from packages/cli (e.g. via `pnpm sync-plugin-version`).

import { readFileSync, writeFileSync } from "node:fs";
import { dirname, resolve } from "node:path";
import { fileURLToPath } from "node:url";

const cliRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
const { version } = JSON.parse(
readFileSync(resolve(cliRoot, "package.json"), "utf8"),
);

function syncSkillVersion(label, path) {
const content = readFileSync(path, "utf8");
const updated = content.replace(/^version:\s*.+$/m, `version: ${version}`);
if (updated !== content) {
writeFileSync(path, updated);
console.log(`Updated ${label} version to ${version}`);
} else {
console.log(`${label} version already at ${version}`);
}
}

function syncPluginJsonVersion(label, path) {
const json = JSON.parse(readFileSync(path, "utf8"));
if (json.version !== version) {
json.version = version;
writeFileSync(path, `${JSON.stringify(json, null, 2)}\n`);
console.log(`Updated ${label} version to ${version}`);
} else {
console.log(`${label} version already at ${version}`);
}
}

syncSkillVersion("skills/browse/SKILL.md", resolve(cliRoot, "skills/browse/SKILL.md"));

for (const marketplace of [
".claude-plugin",
".codex-plugin",
".cursor-plugin",
".grok-plugin",
]) {
syncPluginJsonVersion(
`plugins/browse/${marketplace}/plugin.json`,
resolve(cliRoot, "plugins/browse", marketplace, "plugin.json"),
);
}
Loading
Loading