- name
- browser-steel
- description
- Browser automation with Steel CLI as the default runtime, plus a Python Playwright fallback for custom flows. Use when the user asks to open a JS-heavy site, capture live page content, take screenshots/PDFs, fill forms, reuse a named browser session, or debug login/CAPTCHA/browser workflows. Trigger examples: 'Use Steel to log into this site and extract the table' or 'Take a real-browser screenshot of this dashboard'. Capabilities: (1) Steel CLI session workflows, (2) stateless scrape/screenshot/pdf commands, (3) Python Playwright plan execution, (4) runtime selection between auto/cli/node/python.
- learnable
- true
- metadata
- {"openclaw":{"emoji":"🌐","requires":{"bins":["steel","python3"],"env":["STEEL_API_KEY"]},"primaryEnv":"STEEL_API_KEY"}}
Browser Steel
Use Steel CLI first. Use the Python runtime only when the workflow needs selector-heavy custom logic that is awkward to express through raw CLI steps.
What CLI means here
CLI means Command Line Interface.
In this skill, it specifically means the Steel terminal commands themselves, for example:
steel scrape https://example.com
steel browser start --session demo
steel browser open https://example.com --session demo
steel browser snapshot -i --session demoThe wrapper script does not replace Steel CLI. It packages it into a more publishable, agent-friendly entrypoint:
python3 {baseDir}/scripts/main.py scrape --url https://example.com
python3 {baseDir}/scripts/main.py start-session --session demo
python3 {baseDir}/scripts/main.py browser --session demo -- snapshot -i -cSo the relationship is:
- Steel CLI = the underlying browser command system
scripts/main.py= the wrapper that calls Steel CLI by default- Python runtime = a fallback path for custom Playwright logic when CLI steps are not enough
First checks
- Run the doctor command before the first real task in a new environment:
python3 {baseDir}/scripts/main.py doctor- Prefer stateless commands for one-shot extraction or capture.
- Prefer named sessions for multi-step interaction.
- Keep the same
--sessionvalue across every step in one workflow. - Never bake private cookies, profile names, or local paths into the skill itself.
Runtime selection
auto: prefer installedsteel, otherwise fall back tonpx @steel-dev/clicli: same asauto, but fail if no CLI path is availablenode: force the Node-distributed CLI path throughnpx @steel-dev/clipython: use Steel SDK + Playwright throughrun-python-plan
Read references/runtime-modes.md only when runtime choice or env resolution matters. Read references/official-docs.md when you need the authoritative Steel CLI or Playwright-Python upstream reference.
Preferred commands
Health check
python3 {baseDir}/scripts/main.py doctorStateless commands
python3 {baseDir}/scripts/main.py scrape --url https://example.com --format markdown --json
python3 {baseDir}/scripts/main.py screenshot --url https://example.com --full-page --json
python3 {baseDir}/scripts/main.py pdf --url https://example.com --jsonNamed-session workflow
python3 {baseDir}/scripts/main.py start-session --session demo --stealth --json
python3 {baseDir}/scripts/main.py browser --session demo -- open https://example.com
python3 {baseDir}/scripts/main.py browser --session demo -- snapshot -i -c
python3 {baseDir}/scripts/main.py browser --session demo -- fill @e2 "hello"
python3 {baseDir}/scripts/main.py browser --session demo -- click @e5
python3 {baseDir}/scripts/main.py browser --session demo -- wait --load-state networkidle
python3 {baseDir}/scripts/main.py stop-session --session demo --jsonPython Playwright plan
python3 {baseDir}/scripts/main.py run-python-plan \
--plan-file {baseDir}/references/example-plan.json \
--url https://example.comRead references/python-plan.md only when the CLI path is insufficient.
Guardrails
- Start with
scrape,screenshot, orpdfwhen the task is stateless. - For interactive workflows, follow
start-session -> browser commands -> stop-session. - After any navigation or meaningful DOM change, take a fresh
snapshot -ibefore using another@eNref. - Keep secrets in env vars or an explicit
--env-file, not in the skill files. - Pass cookies only through
--cookies-fileorSTEEL_BROWSER_COOKIES_FILE. - Use the Python runtime only for tasks that genuinely benefit from custom Playwright logic.
- Record confirmed improvements in
maintenance.log.
References
references/official-docs.md— upstream Steel CLI and Playwright-Python referencesreferences/runtime-modes.md— runtime choice, env loading, and privacy rulesreferences/cli-workflows.md— reliable Steel CLI patternsreferences/python-plan.md— JSON plan schema and supported actionsreferences/troubleshooting.md— install/auth/runtime recovery