agent-browser
Browse the web for any task — research topics, read articles, interact with web apps, fill forms, take screenshots, extract data,…
Run initial ClaudeClaw setup. Use when user wants to install dependencies, authenticate messaging channels, register their main channel, or start the background services. Triggers on "setup", "install", "configure claudeclaw", or first-time setup requests.
Claude Code
$ npx -y skills add sbusso/claudeclaw --skill setup --agent claude-code
Codex
$ npx skills add sbusso/claudeclaw --skill setup -a codex -y
Cursor
$ npx skills add sbusso/claudeclaw --skill setup -a cursor -y
Gemini CLI
$ npx skills add sbusso/claudeclaw --skill setup -a gemini-cli -y
GitHub Copilot
$ npx skills add sbusso/claudeclaw --skill setup -a github-copilot -y
OpenCode
$ npx skills add sbusso/claudeclaw --skill setup -a opencode -y
Windsurf
$ npx skills add sbusso/claudeclaw --skill setup -a windsurf -y
name: setup description: Run initial ClaudeClaw setup. Use when user wants to install dependencies, authenticate messaging channels, register their main channel, or start the background services. Triggers on "setup", "install", "configure claudeclaw", or first-time setup requests.
Run setup steps automatically. Only pause when user action is required (channel authentication, configuration choices). Setup uses `bash setup.sh` for bootstrap, then `npx tsx setup/index.ts --step <name>` for all other steps. Steps emit structured status blocks to stdout. Verbose logs go to `logs/setup.log`.
**Principle:** When something is broken or missing, fix it. Don't tell the user to go fix it themselves unless it genuinely requires their manual action (e.g. authenticating a channel, pasting a secret token). If a dependency is missing, install it. If a service won't start, diagnose and repair. Ask the user for permission when needed, then do the work.
**UX Note:** Use `AskUserQuestion` for all user-facing questions.
Before any steps, detect the execution mode:
cat .claude-plugin/plugin.json 2>/dev/null | grep '"name": "claudeclaw"' && echo "DEVELOPER_MODE" || echo "PLUGIN_MODE"
If `.claude-plugin/plugin.json` exists in the current directory AND contains `"name": "claudeclaw"`, we're inside the ClaudeClaw repo → **Developer mode**. Otherwise, the skill was loaded via `--plugin-dir` → **Plugin mode**.
The current working directory IS the ClaudeClaw instance. All state (`.env`, `store/`, `groups/`, `logs/`) lives in cwd. Multiple instances = multiple directories. No hidden state, no `~/.claude/plugin-data/`.
**Plugin mode** (no `.claude-plugin/` in cwd):
**CRITICAL — Plugin mode command prefix:** All `npx tsx setup/index.ts` commands in subsequent steps MUST be run from the plugin code directory with `CLAUDE_PLUGIN_ROOT` set, but the working directory for the service must be the USER's current directory (the data dir). Use this pattern:
cd ${CLAUDE_PLUGIN_ROOT} && CLAUDECLAW_ENV_FILE=$(pwd)/.env npx tsx setup/index.ts --step <name>Where `$(pwd)` resolves to the user's data directory BEFORE the `cd`. Store the data dir first:
MCLAW_PROJECT=$(pwd) && cd ${CLAUDE_PLUGIN_ROOT} && CLAUDECLAW_PROJECT_DIR=$MCLAW_PROJECT CLAUDECLAW_ENV_FILE=$MCLAW_PROJECT/.env npx tsx setup/index.ts --step <name>`CLAUDECLAW_PROJECT_DIR` tells setup scripts the actual project directory (where `.env`, `store/`, `groups/`, `logs/` live). Without it, they fall back to `process.cwd()` which is the plugin code root after the `cd`.
**Developer mode** (`.claude-plugin/` in cwd):
**Plugin mode:** Skip this step entirely — there is no git repo to manage.
Check the git remote configuration to ensure the user has a fork and upstream is configured.
Run:
**Case A — `origin` points to `sbusso/claudeclaw` (user cloned directly):**
The user cloned instead of forking. AskUserQuestion: "You cloned ClaudeClaw directly. We recommend forking so you can push your customizations. Would you like to set up a fork?"
If fork: instruct the user to fork `sbusso/claudeclaw` on GitHub (they need to do this in their browser), then ask them for their GitHub username. Run:
git remote rename origin upstream git remote add origin https://github.com/<their-username>/claudeclaw.git git push --force origin main
Verify with `git remote -v`.
If continue without fork: add upstream so they can still pull updates:
git remote add upstream https://github.com/sbusso/claudeclaw.git
**Case B — `origin` points to user's fork, no `upstream` remote:**
Add upstream:
git remote add upstream https://github.com/sbusso/claudeclaw.git
**Case C — both `origin` (user's fork) and `upstream` (qwibitai) exist:**
Already configured. Continue.
**Verify:** `git remote -v` should show `origin` → user's repo, `upstream` → `sbusso/claudeclaw.git`.
**Plugin mode:** Dependencies are pre-installed in the plugin directory. Verify only:
**Developer mode:** Run `bash setup.sh` and parse the status block.
Run `npx tsx setup/index.ts --step environment` and parse the status block.
Browse the web for any task — research topics, read articles, interact with web apps, fill forms, take screenshots, extract data,…
Add /compact command for manual context compaction. Solves context rot in long sessions by forwarding the SDK's built-in /compact…
Add Gmail integration to ClaudeClaw. Can be configured as a tool (agent reads/sends emails when triggered from WhatsApp) or as a…
Add image vision to ClaudeClaw agents. Resizes and processes WhatsApp image attachments, then sends them to Claude as multimodal…
Add Ollama MCP server so the container agent can call local models for cheaper/faster tasks like summarization, translation, or…
Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…