Skip to content

feat: install agent-browser's agent skill alongside the CLI - #24

Closed
ashwin153 wants to merge 2 commits into
mainfrom
claude/agent-browser-devcontainer-t7hk7h
Closed

ashwin153 wants to merge 2 commits into
mainfrom
claude/agent-browser-devcontainer-t7hk7h

Conversation

@ashwin153

@ashwin153 ashwin153 commented Sep 7, 2026 •

Copy link
Copy Markdown
Contributor

Softlight Overview

UX Score: 5/5

Softlight reviewed this change and found no issues.

To run Softlight again, click here or comment @softlight.

Groundwork for an agent_browser sandbox plugin in orianna, alongside the existing playwright one.

The gap

The package ships two unrelated skill trees, and #23 kept only one:

what it is before now
skill-data/ the CLI's own reference material, served by agent-browser skills get installed, AGENT_BROWSER_SKILLS_DIR points at it unchanged
skills/agent-browser/SKILL.md an agent skill, frontmatter format that Claude Code, Codex, Grok and Antigravity all read discarded with the tarball installed at /usr/local/share/agent-browser/skills

The sandbox's playwright plugins build their bundle by running playwright-cli install --skills=agents and moving the result in. agent-browser has no equivalent subcommand — I checked install --help and the binary's strings — so a plugin bundle has nowhere to get the skill from unless the image carries it.

The alternative was hand-writing the stub in the plugin code. Copying upstream's is better: it stays byte-identical as the CLI moves, and the stub is deliberately inert — it just tells the agent to run agent-browser skills get core first, so the real guidance is always version-matched to the installed binary rather than frozen into our copy.

Nothing reads the new directory automatically; it exists to be copied out of.

Testing

Ran the modified install.sh against the live registry and confirmed the installed SKILL.md is byte-identical to the one in the published tarball (diff -q), then ran every assertion in ubuntu.sh by hand against the result, as root and as an unprivileged user — including the new ships_the_agent_skill check and the read-only check extended to cover the new tree. pre-commit and devcontainer features generate-docs are clean.

Feature version 1.0.0 → 1.1.0; consumers pinning :1 pick it up on their next image build.


🤖 Generated with Claude Code

https://claude.ai/code/session_01Y13iFob848xFCkWHAzZAEb


Generated by Claude Code


Note

Low Risk
Install-time packaging and docs/test updates only; CLI behavior and AGENT_BROWSER_SKILLS_DIR are unchanged.

Overview
The agent-browser devcontainer feature now unpacks and installs the npm package’s skills/agent-browser/SKILL.md tree under /usr/local/share/agent-browser/skills, in addition to the existing skill-data used by AGENT_BROWSER_SKILLS_DIR. install.sh extracts package/skills, fails the build if the stub is missing, and copies it with the same root-owned, read-only layout as the binary.

NOTES.md / README.md document that this file is a discovery stub for agent plugin bundles (not auto-loaded), meant to be copied byte-for-byte because there is no install --skills equivalent on the CLI. Feature version is 1.1.0. ubuntu.sh adds ships_the_agent_skill and extends the read-only assertion to cover the new skill file.

Reviewed by Cursor Bugbot for commit da4ea29. Configure here.

The package ships two unrelated skill trees. skill-data is the CLI's own
reference material, already installed and pointed at by
AGENT_BROWSER_SKILLS_DIR. skills/agent-browser/SKILL.md is an agent skill
in the frontmatter format Claude Code, Codex, Grok and Antigravity read,
and was being discarded with the rest of the tarball.

Install it too, at /usr/local/share/agent-browser/skills. Nothing reads it
automatically; it is there for whatever assembles agent plugin bundles to
copy out of, so a bundle carries upstream's stub byte for byte rather than
a hand-written paraphrase that drifts as the CLI moves. agent-browser has
no `install --skills` subcommand to generate one, unlike playwright-cli,
so the image is where it has to come from.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y13iFob848xFCkWHAzZAEb
`skills/` holds a single SKILL.md against skill-data's 26. Calling it a
directory oversold it; being a one-file pointer is the whole reason it is
stable enough to copy.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y13iFob848xFCkWHAzZAEb

Copy link
Copy Markdown
Contributor Author

Closing — not worth an image change.

What this installs is a single 52-line file. Upstream's whole skills/ tree is one SKILL.md, against 26 files under skill-data/, and it is a discovery stub whose only content is "run agent-browser skills get core". Shipping it through the image costs a feature release, an image rebuild and a digest bump in orianna, plus a standing coupling between the sandbox plugin code and /usr/local/share/agent-browser/skills — to buy the guarantee that the file matches the CLI byte for byte.

That guarantee is worth little here precisely because the file is a pointer: it holds no version-specific detail for a release to invalidate, and the content it points at is served by the installed binary at runtime, so that half stays version-matched either way.

The sandbox plugin setup will write the stub itself instead. Same result for the model, one repo, no image round-trip.


Generated by Claude Code

@ashwin153 ashwin153 closed this Sep 7, 2026
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