Skip to content
v2.1.0MIT

Browser automation with the ego-browser Skill

ego agent plugin

Package the same ego-browser Skill for nine agent hosts. Each distribution contains only its host entry points, a complete copy of the canonical Skill, and installation instructions for that host.

Requirements

  • macOS or Windows with ego lite installed and open
  • ego-browser available on the agent's PATH
  • An agent host that can read Skills and execute local shell commands

Packaging

From the repository root, build all nine artifacts with one command:

npm --prefix plugins/ego run package

The output directory is dist/plugins/ego-v2.1.0/:

HostArtifactContents
Claude Codeego-claude-code-v2.1.0.zipClaude plugin
Codexego-codex-v2.1.0.zipCodex plugin at the archive root, plus marketplace
Cursorego-cursor-v2.1.0.zipCursor plugin
GitHub Copilotego-github-copilot-v2.1.0.zipClaude-compatible plugin
Grok Buildego-grok-build-v2.1.0.zipAgent Plugins manifest and Skill
WorkBuddyego-workbuddy-v2.1.0.zipLocal marketplace and WorkBuddy/CodeBuddy manifests
QwenWork Desktopego-qwenwork-v2.1.0.zipClaude-compatible expert kit
OpenCodeego-opencode-v2.1.0.tgz@citrolabs/ego-opencode npm package
DeepSeek Harnessego-deepseek-harness-v2.1.0.tgz@citrolabs/ego-deepseek-harness npm bundle

Every ZIP includes a host-specific README.md at its root; npm archives include it under package/. The WorkBuddy ZIP contains a marketplace root with the plugin under plugins/ego/. Other ZIPs start directly at the plugin root. The Codex ZIP starts there too and carries its marketplace file alongside, because the public plugin directory rejects an archive whose manifest is not at the root.

The two npm packages have separate names and exports so their adapters cannot be confused by package caches. All nine packages contain real Skill files; none depends on the source checkout or its symlink.

Override the output parent directory, or package all plugin directories:

npm --prefix plugins/ego run package -- --output /absolute/path/to/artifacts
node plugins/scripts/package-plugins.mjs --all

Each plugin gets its own <name>-v<version>/ directory. Rebuilding replaces the nine named artifacts only after all nine have been built. A build failure leaves previous artifacts intact. Older universal ZIP/npm outputs outside the version directory are left untouched and are no longer generated.

Packaging requires Node.js, npm, zip, and unzip. Run this command instead of npm pack in the source directory: npm omits the linked Skill when packing the source directly.

Installation

Choose the artifact for the host. Extract ZIPs into a persistent local directory unless the host accepts ZIP upload. The paths below are placeholders for that directory or the downloaded npm archive. Each packaged README repeats only the matching section and the requirements above.

Claude Code

Extract the Claude Code ZIP, then load its plugin directory for a session:

claude --plugin-dir /absolute/path/to/ego-claude-code

Use /ego:ego-browser. This flag loads the plugin for that session. Persistent installation uses a plugin marketplace; the repository marketplace exposes ego@ego-agent-skills when that source version is available.

See the Claude Code plugin reference.

Codex

The Codex ZIP serves both install routes. .codex-plugin/plugin.json and skills/ sit at the archive root, and .agents/plugins/marketplace.json points at that same root with "path": "./".

To install locally, extract the ZIP and add the extracted directory:

codex plugin marketplace add /absolute/path/to/ego-codex
codex plugin add ego@ego-codex-local

Restart Codex if the plugin does not appear, then ask it to use $ego-browser. Remove the installed plugin with codex plugin remove ego@ego-codex-local.

To publish, upload the same ZIP as a skills-only plugin in the submission portal and select the verified developer identity that matches author.name. The listing copy comes from the manifest's interface object, whose category must be one of the values the portal accepts. See Submit plugins and the submission error reference.

See the OpenAI plugin guide.

Cursor

Extract the Cursor ZIP and load it with Cursor CLI:

cursor-agent --plugin-dir /absolute/path/to/ego-cursor

The package declares its Skill through .cursor-plugin/plugin.json. Use /ego-browser in the session. This command does not install a Cursor Desktop marketplace entry.

GitHub Copilot

Extract the GitHub Copilot ZIP and load it with Copilot CLI:

copilot --plugin-dir /absolute/path/to/ego-github-copilot

Use /ego-browser. This local session uses the packaged Claude-compatible manifest. VS Code marketplace installation is a separate host workflow.

Check the Skill's source when a personal ego-browser Skill is already installed. In the tested Copilot CLI, the personal copy takes precedence over the plugin copy, and a disabled personal copy prevents the plugin Skill from being invoked. Resolve that duplicate and enable the plugin Skill before use.

See the GitHub Copilot plugin guide.

Grok Build

Extract the Grok Build ZIP, then install the local directory:

grok plugin install /absolute/path/to/ego-grok-build

Use /ego-browser. The package contains the Agent Plugins plugin.json and Skill directory. Remove it with grok plugin uninstall ego.

WorkBuddy

Extract the WorkBuddy ZIP as a marketplace root. It contains .claude-plugin/marketplace.json and plugins/ego/, including .codebuddy-plugin/plugin.json, .workbuddy-plugin/plugin.json, and the Claude-compatible manifest.

For WorkBuddy versions that expose 添加市场 with local sources, add the absolute path of the extracted root, select ego-workbuddy-local, and install ego. Start a new task and ask it to use the ego-browser Skill.

Local marketplace import still needs verification in WorkBuddy Desktop. The official WorkBuddy plugin guide documents marketplace installation but does not establish a direct ZIP import workflow. If the installed version only accepts a published marketplace, this local archive must be distributed through that supported marketplace first.

QwenWork Desktop

Upload the QwenWork ZIP directly through 扩展 → 专家套件 → + 添加 → 上传套件, then click 安装. Start a new task and ask it to use ego-browser.

This package uses .claude-plugin/plugin.json, an explicitly supported expert kit format. The older .qoder-plugin/plugin.json source manifest is not used for this artifact. See the QwenWork expert-kit guide.

OpenCode

Extract the local npm archive into a persistent directory, then register its JavaScript entry point:

mkdir -p /absolute/path/to/ego-opencode
tar -xzf /absolute/path/to/ego-opencode-v2.1.0.tgz -C /absolute/path/to/ego-opencode
opencode plugin "file:///absolute/path/to/ego-opencode/package/index.js" -g

Keep the extracted directory in place. OpenCode 1.14.30 accepts a local .tgz in its installer but fails to resolve that archive's server entry at startup; the extracted file URL loads successfully. Remove any earlier .tgz entry from the config's plugin array when switching to the file URL.

The package is named @citrolabs/ego-opencode. Its . and ./server exports load index.js, which adds the packaged Skill instructions and /ego-browser command. To remove it, delete its entry from the applicable opencode.json plugin array.

See the OpenCode plugin guide.

DeepSeek Harness

Extract the npm archive into a persistent directory, then add its package/ directory to the desired profile:

mkdir -p /absolute/path/to/ego-deepseek-harness
tar -xzf /absolute/path/to/ego-deepseek-harness-v2.1.0.tgz -C /absolute/path/to/ego-deepseek-harness
dsh plugin --profile web add /absolute/path/to/ego-deepseek-harness/package
dsh --profile web --dump-config
dsh --profile web

The package is named @citrolabs/ego-deepseek-harness. Its bundle patch loads @citrolabs/ego-deepseek-harness/dsh and registers the packaged Skill. Use /ego-browser. Remove it with dsh plugin --profile web remove @citrolabs/ego-deepseek-harness.

An existing personal ego-browser Skill takes precedence over this bundled provider. Check the base directory returned by the Skill tool: it must point inside this extracted package when validating the plugin. Resolve the duplicate personal Skill if you want named invocation to use the plugin copy.

See the DeepSeek Harness local package guide.

Verification

Packaging tests check all nine payloads, marketplace paths, canonical Skill contents, source symlink preservation, repeat builds, and failed-batch handling. They load both npm adapters after extraction outside the repository. These checks do not establish end-to-end compatibility in all nine host applications.

After installation, confirm that the host discovers ego-browser and can run:

ego-browser nodejs <<'EOF'
console.log('ego-browser ready')
EOF

Development

skills/ego-browser is a relative symlink to ../../../skills/ego-browser. It is the thin entry Skill; the usage guide it points to lives in package/ego-browser/skill-body/SKILL.md and ships with ego lite. Edit the canonical entry Skill; the packager materializes it in temporary directories and leaves the source link untouched. Unexpected or broken links fail packaging.

Plugin tests belong in plugins/ego/tests/ and run independently of browser runtime tests:

npm --prefix plugins/ego test

CI and the commit hook run this suite for plugin changes.