Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
9f92b39
feat: static multi-marketplace manifest catalog (browse-only, hosted …
shrey150 Jul 7, 2026
a1b3d03
Scope to CLI-only: drop hosted MCP wiring
shrey150 Jul 8, 2026
23a95d4
Flatten repo to single-plugin layout (repo root = the plugin)
shrey150 Jul 8, 2026
a537e0f
Refresh SKILL.md from stagehand/packages/cli (manual sync)
shrey150 Jul 9, 2026
17f860a
Fix stale MCP-config comment in release.yml
shrey150 Jul 9, 2026
81b72d1
Add root plugin.json for Open Plugin spec conformance
shrey150 Jul 14, 2026
1b7524e
Rename to Browse CLI, drop stutter marketplace name
shrey150 Jul 14, 2026
40967b8
Rewrite plugin description to match competitor manifest style
shrey150 Jul 14, 2026
c327f42
Make README/docs narration objective, not PR-history
shrey150 Jul 14, 2026
8aefe9a
Sync GEMINI.md with SKILL.md: container fallback, BROWSE_SESSION prec…
shrey150 Jul 14, 2026
4b7418b
Drop the stripe/link-cli reference from docs
shrey150 Jul 14, 2026
7665e00
Add PR-time CI and a GEMINI.md drift check
shrey150 Jul 14, 2026
1e062b4
Normalize CRLF on both sides of the GEMINI.md sync check
shrey150 Jul 14, 2026
0d6f51d
Remove em dashes from README
shrey150 Jul 14, 2026
56ce941
Align README voice with stagehand/browse CLI READMEs
shrey150 Jul 14, 2026
3a18a65
Fail validation if GEMINI.md is missing but required
shrey150 Jul 14, 2026
3fb7ba9
Update add-a-plugin.md layout tree for plugin.json and scripts/
shrey150 Jul 14, 2026
a03754d
Bump manifest version to 0.9.5, add a version-consistency CI check
shrey150 Jul 14, 2026
838a082
Revert version model to this repo's own tags; automate tagging
shrey150 Jul 15, 2026
40bcef3
Fix tag-release to check tag existence, not a commit-to-commit diff
shrey150 Jul 15, 2026
db93dfe
Fail validation if a required version-target manifest is missing
shrey150 Jul 15, 2026
03b38b7
Set plugin-level displayName to Browserbase, matching every other ide…
shrey150 Jul 15, 2026
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
12 changes: 12 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "browserbase",
"interface": { "displayName": "Browserbase" },
"plugins": [
{
"name": "browse",
"source": { "source": "local", "path": "." },
"policy": { "installation": "AVAILABLE", "authentication": "ON_INSTALL" },
"category": "Automation"
}
]
}
17 changes: 17 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "browserbase",
"owner": { "name": "Browserbase", "email": "support@browserbase.com" },
"metadata": { "description": "Browse CLI - browser automation for agents" },
"plugins": [
{
"name": "browse",
"source": ".",
"description": "Browser automation for AI agents: navigate, extract, screenshot, and interact with real web pages via a single CLI.",
"author": { "name": "Browserbase" },
"homepage": "https://browserbase.com",
"repository": "https://github.com/browserbase/stagehand",
"license": "MIT",
"keywords": ["browser", "automation", "web-scraping", "stagehand", "browserbase"]
}
]
}
10 changes: 10 additions & 0 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"name": "browse",
"version": "0.3.0",
"description": "Browser automation for AI agents: navigate, extract, screenshot, and interact with real web pages via a single CLI.",
"author": { "name": "Browserbase" },
"homepage": "https://browserbase.com",
"repository": "https://github.com/browserbase/stagehand",
"license": "MIT",
"skills": "./skills/"
}
19 changes: 19 additions & 0 deletions .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "browse",
"description": "Browse CLI — browser automation for agents",
"author": { "name": "Browserbase", "url": "https://browserbase.com" },
"homepage": "https://browserbase.com",
"repository": "https://github.com/browserbase/stagehand",
"license": "MIT",
"keywords": ["browser", "automation", "browserbase", "stagehand"],
"skills": "./skills/",
"interface": {
"displayName": "Browserbase",
"shortDescription": "Browser automation for agents",
"longDescription": "Browser automation for AI agents: navigate, extract, screenshot, and interact with real web pages via a single CLI.",
"developerName": "Browserbase",
"category": "Automation",
"websiteURL": "https://browserbase.com",
"logo": "./assets/logo.svg"
}
}
13 changes: 3 additions & 10 deletions .cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,13 @@
"email": "support@browserbase.com"
},
"metadata": {
"description": "Browser automation tools for Cursor",
"version": "1.0.0",
"pluginRoot": "plugins"
"description": "Browse CLI — browser automation for agents"
},
"plugins": [
{
"name": "browse",
"source": "browse",
"description": "Automate web browser interactions using natural language. Navigate pages, click elements, fill forms, extract data, and take screenshots -- all controlled by Cursor's model via MCP tools."
},
{
"name": "functions",
"source": "functions",
"description": "Deploy serverless browser automation to Browserbase cloud using the bb CLI. Create, test, and publish cloud functions for scheduled or webhook-triggered browser tasks."
"source": ".",
"description": "Browser automation for AI agents: navigate, extract, screenshot, and interact with real web pages via a single CLI."
}
]
}
15 changes: 15 additions & 0 deletions .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "browse",
"displayName": "Browserbase",
"version": "0.3.0",
"description": "Browser automation for AI agents: navigate, extract, screenshot, and interact with real web pages via a single CLI.",
"author": {
"name": "Browserbase",
"email": "support@browserbase.com"
},
"repository": "https://github.com/browserbase/stagehand",
"license": "MIT",
"keywords": ["browser", "automation", "web-scraping", "browserbase", "stagehand"],
"logo": "assets/logo.svg",
"skills": "./skills/"
}
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @browserbase/gtm
14 changes: 3 additions & 11 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,10 @@ jobs:
with:
node-version: 20

# ---------- browse plugin ----------
- name: Install and build browse
working-directory: plugins/browse
run: npm ci # postinstall runs `npm run build` automatically

- name: Prune browse devDependencies
working-directory: plugins/browse
run: npm prune --omit=dev

# ---------- Validate ----------
# This repo is a static, no-codebase marketplace catalog: JSON manifests
# and the browse skill. There is nothing to install or build, so the
# release job only validates and packages the manifests.
- name: Validate plugin structure
run: node scripts/validate-template.mjs

Expand All @@ -39,8 +33,6 @@ jobs:
--exclude='.git' \
--exclude='.env' \
--exclude='.env.local' \
--exclude='.chrome-profile' \
--exclude='.chrome-pid' \
--exclude='.DS_Store' \
.

Expand Down
55 changes: 55 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Validate

on:
pull_request:
push:
branches:
- main

jobs:
validate:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 20

- name: Validate plugin structure
run: node scripts/validate-template.mjs

# Tags plugin.json's current committed version if no matching tag exists
# yet. Checked against tag existence, not a commit-to-commit diff, so a
# version bump split across multiple commits (e.g. an unsquashed merge)
# still gets tagged the moment the state lands on main. Never pushes to
# main itself (only a new tag ref), so this works regardless of branch
# protection on main. The pushed tag is what triggers release.yml to
# actually build and publish the release.
tag-release:
needs: validate
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Tag plugin.json's version if untagged
run: |
VERSION=$(node -pe "JSON.parse(require('fs').readFileSync('plugin.json', 'utf8')).version")
TAG="v${VERSION}"

if git rev-parse -q --verify "refs/tags/${TAG}" >/dev/null; then
echo "Tag ${TAG} already exists."
exit 0
fi

git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git tag "$TAG"
git push origin "$TAG"
17 changes: 2 additions & 15 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,25 +1,12 @@
# Dependencies
node_modules/

# Build output
dist/

# Chrome browser profile (copied from user profile)
.chrome-profile/
.chrome-pid

# Runtime artifacts
agent/browser_screenshots/*.png
agent/downloads/*
!agent/browser_screenshots/.gitkeep
!agent/downloads/.gitkeep

# Environment
.env
.env.local

# Network debug captures
network-capture.json
# Release artifacts
release.tar.gz

# OS files
.DS_Store
Expand Down
1 change: 1 addition & 0 deletions .grok-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "name": "browse", "version": "0.3.0", "description": "Browser automation for AI agents: navigate, extract, screenshot, and interact with real web pages via a single CLI.", "skills": "./skills/", "logo": "assets/logo.svg" }
Loading
Loading