Skip to content

Add Muse Code support for the Browse CLI plugin - #5

Merged
shrey150 merged 2 commits into
mainfrom
feat/muse-code-plugin
Sep 16, 2026
Merged

shrey150 merged 2 commits into
mainfrom
feat/muse-code-plugin

Conversation

@shrey150

@shrey150 shrey150 commented Sep 16, 2026 •

Copy link
Copy Markdown
Contributor

Muse Code currently falls back to the Claude manifest and rejects its string-valued skills field. Add a native Muse manifest so users can install Browserbase's Browse CLI skill from a local checkout or the existing .agents marketplace.

The plugin reuses skills/browse/SKILL.md, adds Muse installation and troubleshooting instructions, and includes the native manifest in repository validation and version synchronization. Browse CLI remains the browser driver; the plugin declares only the shared skill.

E2E Test Matrix

Clean-environment runs used fresh node:24-bookworm Docker containers, no host mounts, public Git clones, and fresh official Muse and npm Browse installations. The initial form run tested implementation commit 4356df6; the live Google Flights run tested current PR head 9b17486. Versions: Muse Code 1.3.0 (1.3.0-R3233.1), Muse Spark 1.3 Contributor, Browse 0.9.6, Node 24.19.0. The commits differ only in documentation; manifest, marketplace, and skill are unchanged.

The Browserbase key was injected into the test process. Muse authenticated through its browser-login flow in the disposable container. Docker provided isolation; Muse's nested shell sandbox and interactive approvals were disabled for the unattended run. The plugin does not change user permissions, and no credentials are included in the repository or this PR.

Command / flow Observed output Confidence / sufficiency
Fresh npm install -g browse and official Muse installer Both CLIs installed and reported the versions above No dependence on the developer's existing CLI installs
node scripts/validate-template.mjs; version/Gemini sync checks Validation passed; versions match; Gemini content is in sync Repository checks pass in the clean environment; GitHub CI also passes
muse plugins validate <checkout> --json valid: true, compatibility full Muse accepts the native manifest and shared skill
muse plugins install <checkout> --scope user --json then inspect Native plugin active; effective capability plugin:browse:browse Local bundle installation works from scratch
muse plugins marketplace add browserbase <checkout> then muse plugins install browse@browserbase Active native plugin and Browse skill Existing marketplace catalog works with a local checkout; default-branch Git installation requires merge
muse skills list --source plugin --json in a separate empty workspace plugin:browse:browse, activation: on, diagnostics: [] Installed skill is discoverable outside the plugin repository
Browse remote open → snapshot → fill → get value → submit → snapshot → screenshot → stop Public Selenium test form input read back muse-clean-smoke; result displayed Form submitted and Received!; screenshot captured; session stopped Real Browserbase browser interactions work from the clean container; this flow was driven directly by the test script
Authenticated muse exec --no-foreign-personal-context --disable-web-tools --max-model-steps 40 --trust-workspace --disable-sandbox --disable-approval --json --prompt-file <browser-task> Exit 0 with Meta provider muse-spark-1.3-contributor; trace records successful read_skill of plugin:browse:browse, then seven successful shell calls through Browse CLI PASS: actual Muse → installed plugin skill → Browse CLI → Browserbase flow
Independent verification after Muse completed Submitted URL contained my-text=muse-plugin-e2e-4356df6; DOM displayed Form submitted / Received!; Muse-created screenshot existed; verifier stopped the browser session Confirms real browser state rather than trusting the model's completion text
Live Google Flights through authenticated Muse and the installed plugin: airport autocomplete → calendar dates → search → nonstop filter → Cheapest tab → outbound and return selection JFK–LHR, October 13–20, 2026, one adult, economy, USD. 22 nonstop departing choices; cheapest displayed estimates $671 round trip. Selected BA178 outbound and BA179 return; final booking page showed $669 via Adam Vacations, $671 via American, and $680 via British Airways PASS: realistic multi-step Muse → Browse → live website task, adapted from Stagehand WebVoyager Google Flights tasks 14 and 4; not an official benchmark run
Flight-run trace and independent verification Muse completed in 166 seconds; successful plugin read_skill and 36 shell calls. Independent live DOM/snapshot confirmed dates including year, airports, cabin, passenger count, selected flight numbers, provider offers and lowest total; screenshots captured 38 evidence assertions passed. Confirms actual browser state and the $671 estimate / $669 booking-option difference; no booking-provider checkout or purchase
Muse artifact-writing recovery write_file rejected an absolute artifact path outside the workspace; Muse saved and validated the JSON report through its authorized shell Recovered harness-path issue; the completed browser flow and evidence were unaffected
Earlier isolated Muse install lifecycle and temporary negative fixtures Disable/enable/update/remove passed; missing manifest, broken skill path, version drift, and unexpected hook were rejected Supports lifecycle and repository-validation coverage

Observed outputs from Muse's actual tool calls:

read_skill plugin:browse:browse → status="ok", source: plugin, truncated: false
browse fill @0-24 "muse-plugin-e2e-4356df6" → {"filled":true,"pressedEnter":false}
browse get value @0-24 → {"value":"muse-plugin-e2e-4356df6"}
browse click @0-38 → {"clicked":true}
browse snapshot → heading: Form submitted; StaticText: Received!
browse screenshot --path <output file> → saved
Independent verifier → submitted URL has exact nonce; confirmation is Received!; screenshot exists
Cleanup → browser session stopped

Plugin management was tested with MUSE_EXPERIMENTAL_PLUGINS=1. Muse reports expected warnings about the repository's other manifests and advisory allowed-tools metadata. Running skill discovery inside the multi-client plugin repository also reports foreign-plugin-artifact-observed; the same check in an empty workspace has no diagnostics. Model-driven coverage is for remote Browserbase browsing; local Chrome launch and the future default-branch Git marketplace install are not claimed as tested. The initial missing-credential failure was resolved through Muse login, followed by the passing authenticated run above.

The flight test starts from the Google Flights homepage and uses UI controls; it does not construct a search URL or inject JavaScript to perform interactions. The three compared outbound options (British Airways, Virgin Atlantic and American) were tied at the lowest displayed $671 estimate. The selected itinerary's booking page then advertised $669 as its lowest total. Prices are observations from September 16, 2026, not a guarantee of later availability. The 11 additional booking-provider options were not expanded, provider links were not followed, and no purchase or passenger-data submission occurred. The browser sessions and disposable Muse credentials were cleaned up after verification.

@shrey150
shrey150 marked this pull request as ready for review September 16, 2026 22:04
@shrey150
shrey150 requested a review from a team as a code owner September 16, 2026 22:04
@shrey150
shrey150 merged commit bef3bbe into main Sep 16, 2026
5 checks passed
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