browse
Interactive browser QA using xd://browser or (optionally) the gstack browse binary for headed mode.
Skill by TheophilusChinomona
Chalk Labs
Need help deploying browse?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/theophiluschinomona-browse
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, testing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/browse
What's inside
- Skill name
browse- Description
- Interactive browser QA using xd://browser or (optionally) the gstack browse binary for headed mode. Navigate pages, snapshot accessibility trees, interact via element refs, capture screenshots, verify page state, and hand off for CAPTCHA. Use when you need to test a page live, debug a UI bug, verify a deployment, or dogfood a user flow.
- License
- MIT
- Instructions
- 269 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- body: contains an absolute path from the author's machine
Files (2)
- SKILL.md
- advanced-patterns.md · references/
SKILL.md (first lines)
# Browse — Interactive Browser QA
Two backends: `xd://browser` (runtime built-in, zero install, headless only)
or **gstack browse** (97KB binary, headed mode + handoff for CAPTCHA).
The skill auto-detects which is available.
## Setup (run first)
```bash
# Detect gstack browse binary
B=""
[ -x /home/theo/.claude/skills/gstack/browse/dist/browse ] && B="/home/theo/.claude/skills/gstack/browse/dist/browse"
[ -x /home/theo/.codex/skills/gstack/browse/dist/browse ] && B="/home/theo/.codex/skills/gstack/browse/dist/browse"
[ -x "$(git rev-parse --show-toplevel 2>/dev/null)/.agents/skills/gstack/browse/dist/browse" ] && B="$(git rev-parse --show-toplevel 2>/dev/null)/.agents/skills/gstack/browse/dist/browse"
export B
if [ -n "$B" ]; then echo "GSTACK_BROWSE=$B"; else echo "GSTACK_BROWSE=none (using xd://browser)"; fi
```
If `GSTACK_BROWSE=none`, all interactions use `xd://browser` (headless).
If `GSTACK_BROWSE` is set, `$B` works for all gstack browse commands.
## Quick Reference
```bash
# xd://browser (always available — headless only)
xd://browser { "action": "open", "url": "https://app.com", "name": "main" }
run code: tab.ariaSnapshot() # ARIA YAML with [ref=eN]
run code: tab.fill('aria-ref=e2', 'Alice')
run code: tab.click('aria-ref=e5')
# gstack browse (headed + handoff — when available)
$B goto https://app.com
$B snapshot -i # @e1, @e2... refs
$B fill @e2 "Alice"
$B click @e5
$B handoff "solve CAPTCHA" # visible browser for user
$B resume # continue after handoff
```
## Core Workflow
1. **Detect backend** via the Setup block above
2. **Open tab** — `xd://browser open` or `$B goto`
3. **Snapshot** — `tab.ariaSnapshot()` or `$B snapshot -i`
4. **Interact** — fill, click, select by @ref
5. **Verify** — check text, URL, console errors
6. **Handoff if stuck** — `$B handoff` for CAPTCHA/complex auth
7. **Screenshot** — capture evidence
8. **Close** — close tab or `$B stop`
## Patterns using xd://browser (always available)
### Pattern 1: Basic page verification
```
xd://browser { "action": "open", "url": "https://app.com/login" }
xd://browser { "action": "run", "name": "main", "code": "tab.observe()" }
xd://browser { "action": "run", "name": "main",
"code": "const errs=[]; page.on('console',m=>m.type()==='error'&&errs.push(m.text())); page.on('requestfailed',r=>errs.push('NET: '+r.url())); await tab.goto('https://app.com/login'); errs" }
```
### Pattern 2: Snapshot + interact by @ref
```
xd://browser { "action": "run", "name": "main", "code": "tab.ariaSnapshot()" }
xd://browser { "action": "run", "name": "main",
"code": "await tab.fill('aria-ref=e2', 'user@test.com'); await tab.click('aria-ref=e5'); tab.screenshot()" }
xd://browser { "action": "run", "name": "main", "code": "tab.observe()" }
```
Refs invalidate on navigation — re-observe after every `goto`.
### Pattern 3: Form fill and submit
```
xd://browser { "action": "run", "name": "main", "code": "
await tab.fill('input[type=text]', 'Alice');
await tab.select('select', 'green');
await tab.click('button');
await tab.waitForSelector('#result');
tab.extract('#result')" }
```
### Pattern 4: Screenshot evidence
```
xd://browser { "action": "run", "name": "main",
"code": "tab.screenshot()" }
xd://browser { "action": "run", "name": "main",
"code": "tab.screenshot({ selector: '.dashboard' })" }
```
### Pattern 5: Dialog handling
```
xd://browser { "action": "open", "url": "...", "dialogs": "accept", "name": "main" }
xd://browser { "action": "run", "name": "main", "code": "
page.on('dialog', d => d.accept());
await tab.click('#delete-btn');" }
```
### Pattern 6: Multi-tab testing
```
xd://browser { "action": "open", "url": "https://app.com/a", "name": "tab1" }
xd://browser { "action": "open", "url": "https://app.com/b", "name": "tab2" }
xd://browser { "action": "run", "name": "tab1", "code": "tab.observe()" }
xd://browser { "action": "close", "name": "tab1" }
```
### Pattern 7: Viewport/responsive
```
xd://browser { "action": "open", "url": "...",
"viewport": { "width": 375, "height": 812 }, "name": "mobile" }
```
### Pattern 8: Custom JS evaluation
```
xd://browser { "action": "run", "name": "main", "code": "
const result = await tab.evaluate(() => ({
title: document.title, url: location.href
}));
result" }
```
### Pattern 9: Wait conditionsFrom TheophilusChinomona/idev, MIT.
More from TheophilusChinomona/idev
- 0.521score
branch-sync
TheophilusChinomona
Syncs the current feature branch with the team base branch (merge base into feature) before creating a PR, resolving merge conflicts safely with build/test…
SkillBFreshness: BClaude Code +9 - 0.516score
context-switching
TheophilusChinomona
Switches between development modes (dev, review, research) by loading the appropriate context.
SkillBFreshness: BClaude Code +9 - 0.516score
continuous-learning
TheophilusChinomona
Automatically extracts reusable patterns from sessions and saves them as learned skills.
SkillBFreshness: BClaude Code +9 - 0.516score
db-preflight
TheophilusChinomona
Scans DBScripts/ folder for unapplied database migrations and surfaces them before builds or at session start.
SkillBFreshness: BClaude Code +9 - 0.516score
env-preflight
TheophilusChinomona
Session environment sanity check — verifies cwd is the repo root, git auth is live, DB env vars are present, and reports active sandbox constraints.
SkillBFreshness: BClaude Code +9 - 0.516score
eval-harness
TheophilusChinomona
Evaluation framework for capability and regression evals with pass@k metrics.
SkillBFreshness: BClaude Code +9 - 0.513score
api-contract-validation
TheophilusChinomona
Discovers and validates API endpoints between frontend and backend.
SkillBFreshness: BClaude Code +9 - 0.513score
build-check
TheophilusChinomona
Auto-detects the project's build system and runs compile/type-check after file changes, auto-fixing straightforward errors (max 3 attempts).
SkillBFreshness: BClaude Code +9 - 0.508score
architecture-scanner
TheophilusChinomona
DEPRECATED — Use project-map, backend-patterns, and frontend-patterns instead.
SkillBFreshness: BClaude Code +9 - 0.508score
file-index
TheophilusChinomona
DEPRECATED — Use smart-context for feature-to-file lookups.
SkillBFreshness: BClaude Code +9 - 0.472score
auto-learning
TheophilusChinomona
Instinct-based learning system that observes sessions via hooks and evolves patterns into skills/commands/agents.
SkillCFreshness: CClaude Code +9 - 0.467score
codebase-explainer
TheophilusChinomona
Turn a codebase into an onboarding playlist — Claude-authored analysis docs plus NotebookLM explainer videos (one overview + one per subsystem).
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Jul 29, 2026 (3 months ago)
- Last release
- Jun 25, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/TheophilusChinomona/idev
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from TheophilusChinomona
- 0.521score
branch-sync
TheophilusChinomona
Syncs the current feature branch with the team base branch (merge base into feature) before creating a PR, resolving merge conflicts safely with build/test…
SkillBFreshness: BClaude Code +9 - 0.516score
env-preflight
TheophilusChinomona
Session environment sanity check — verifies cwd is the repo root, git auth is live, DB env vars are present, and reports active sandbox constraints.
SkillBFreshness: BClaude Code +9 - 0.516score
db-preflight
TheophilusChinomona
Scans DBScripts/ folder for unapplied database migrations and surfaces them before builds or at session start.
SkillBFreshness: BClaude Code +9 - 0.516score
continuous-learning
TheophilusChinomona
Automatically extracts reusable patterns from sessions and saves them as learned skills.
SkillBFreshness: BClaude Code +9 - 0.516score
context-switching
TheophilusChinomona
Switches between development modes (dev, review, research) by loading the appropriate context.
SkillBFreshness: BClaude Code +9 - 0.516score
eval-harness
TheophilusChinomona
Evaluation framework for capability and regression evals with pass@k metrics.
SkillBFreshness: BClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get browse running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
browse skill. Agent Mart. https://agentmart.dev/skills/theophiluschinomona-browse (last updated 2026-10-24)