← Back to task

Commit dcc69ba7

commit dcc69ba728d5ea74df96117dadb38d01142ff568
Author: Coder Agent <coder@agents.omni>
Date:   Thu Feb 19 23:39:36 2026

    Add Rodney-based personal browser skill
    
    Task-Id: t-644

diff --git a/skills/browse-web.md b/skills/browse-web.md
index 9b082a04..bc5572a8 100644
--- a/skills/browse-web.md
+++ b/skills/browse-web.md
@@ -1,40 +1,66 @@
 # Browse Web
 
-Use headless browser for dynamic web pages that need JavaScript execution.
+Use Rodney to control Ben's personal Chrome profile on beryllium for browsing that needs existing cookies, sessions, and logins.
 
-## Process
+## Purpose and scope
+
+- This skill is for Ben's personal browser context only.
+- This is isolated from DevBrowser, which remains for development workflows.
+- Because agents run on beryllium (same host as Ben's Chrome), no tunneling is needed.
 
-1. **Check if needed** - Try curl first; only use browser if page needs JavaScript
-2. **Choose tool** - Playwright for Python, or Dev Browser for interactive
-3. **Launch browser** - Use headless mode for automation
-4. **Navigate to page** - Wait for network idle or specific elements
-5. **Extract content** - Get text, HTML, or interact with elements
-6. **Clean up** - Close browser to free resources
+## Setup (one-time on beryllium)
 
-## Examples
+1. Install Rodney:
 
 ```bash
-# Prefer Dev Browser for interactive browsing
-# See: /repo/Omni/Ide/DevBrowser/skills/dev-browser/SKILL.md
+uv tool install rodney
+```
 
-# Playwright (Python) for automation
+2. Verify installation:
+
+```bash
+rodney --help
+```
+
+3. Ensure Ben's Chrome is available and using the expected profile.
+
+## Process
+
+1. **Check if browser automation is needed** - Prefer curl for static pages.
+2. **Use Rodney (personal profile)** - Do not use DevBrowser for personal browsing.
+3. **Navigate and wait** - Open URLs and wait for page content to load.
+4. **Interact as needed** - Click, fill, scroll, and extract visible content.
+5. **Capture screenshot** - Save an image for evidence or status updates.
+6. **Relay to Ben** - Send screenshot via `send_photo` in Telegram.
+
+## Example: open page and screenshot
 
 ```bash
 python3 - << 'PY'
-from playwright.sync_api import sync_playwright
-
-url = "https://example.com"
-with sync_playwright() as p:
-    browser = p.chromium.launch()
-    page = browser.new_page()
-    page.goto(url, wait_until="networkidle")
-    print(page.title())
-    print(page.content()[:2000])
-    browser.close()
+import asyncio
+from rodney import Browser
+
+async def main() -> None:
+    browser = Browser(headless=True)
+    page = await browser.new_page()
+    await page.goto("https://example.com")
+    await page.screenshot(path="_/tmp/personal-browser-example.png", full_page=True)
+    await browser.close()
+
+asyncio.run(main())
 PY
 ```
 
+## Example: send screenshot to Ben on Telegram
+
+Use the Telegram tool after creating the screenshot file:
+
+```text
+send_photo chat_id=<ben-chat-id> photo="_/tmp/personal-browser-example.png" caption="Page snapshot"
+```
+
 ## Notes
 
-- If Playwright is not installed, install it with pip or use nix-shell.
-- For static pages, prefer curl + web-reader skill instead.
+- Keep screenshots and temporary artifacts under `_/tmp/`.
+- If Rodney is unavailable, install it first instead of switching to DevBrowser.
+- For static pages, prefer curl plus `skills/read-webpage.md`.