AI Search Hub
minsight-ai-info/AI-Search-Hub
Run the AI Search Hub browser automation scripts for Yuanbao, LongCat, Doubao, Qwen, Gemini, Grok, and MiniMax.
Step-by-step procedure for debugging browser automation failures on complex sites such as LinkedIn, Twitter/X, single-page apps and Shadow DOM pages.
$ npx skills add aden-hive/hive --skill browser-edge-cases -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install aden-hive/hive browser-edge-cases --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/aden-hive/hive.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/browser-edge-cases .claude/skills/browser-edge-cases && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "browser-edge-cases" agent skill from https://github.com/aden-hive/hive/tree/main/.claude/skills/browser-edge-cases into .claude/skills/browser-edge-cases/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-edge-cases", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/aden-hive/hive/tree/main/.claude/skills/browser-edge-casesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add aden-hive/hive --skill browser-edge-cases -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install aden-hive/hive browser-edge-cases --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aden-hive/hive.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/browser-edge-cases .agents/skills/browser-edge-cases && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "browser-edge-cases" agent skill from https://github.com/aden-hive/hive/tree/main/.claude/skills/browser-edge-cases into .agents/skills/browser-edge-cases/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-edge-cases", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add aden-hive/hive --skill browser-edge-cases -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install aden-hive/hive browser-edge-cases --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aden-hive/hive.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/browser-edge-cases .cursor/skills/browser-edge-cases && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "browser-edge-cases" agent skill from https://github.com/aden-hive/hive/tree/main/.claude/skills/browser-edge-cases into .cursor/skills/browser-edge-cases/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-edge-cases", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/aden-hive/hive.git --path .claude/skills/browser-edge-cases--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add aden-hive/hive --skill browser-edge-cases -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install aden-hive/hive browser-edge-cases --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aden-hive/hive.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/browser-edge-cases .gemini/skills/browser-edge-cases && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "browser-edge-cases" agent skill from https://github.com/aden-hive/hive/tree/main/.claude/skills/browser-edge-cases into .gemini/skills/browser-edge-cases/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-edge-cases", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install aden-hive/hive browser-edge-casesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add aden-hive/hive --skill browser-edge-cases -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/aden-hive/hive.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/browser-edge-cases .github/skills/browser-edge-cases && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "browser-edge-cases" agent skill from https://github.com/aden-hive/hive/tree/main/.claude/skills/browser-edge-cases into .github/skills/browser-edge-cases/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-edge-cases", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add aden-hive/hive --skill browser-edge-cases -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install aden-hive/hive browser-edge-cases --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aden-hive/hive.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/browser-edge-cases .opencode/skills/browser-edge-cases && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "browser-edge-cases" agent skill from https://github.com/aden-hive/hive/tree/main/.claude/skills/browser-edge-cases into .opencode/skills/browser-edge-cases/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "browser-edge-cases", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
browser-edge-casesStep-by-step procedure for debugging browser automation failures on complex sites such as LinkedIn, Twitter/X, single-page apps and Shadow DOM pages.
This is a standard operating procedure for debugging browser automation failures on complex websites. It targets symptoms such as a scroll that reports success while the page does not move, a click that triggers nothing, typed text that disappears, a snapshot that hangs or returns stale content, and navigation that loads the wrong page. Sites named include LinkedIn, Twitter/X, single-page apps and pages with Shadow DOM.
The procedure runs in four phases: reproduce and isolate with a minimal test case, first on a simple site to confirm the tool works and then on the failing one; analyze the cause by checking the console, the HTML and the snapshot against a symptom table (nested scroll container, covered element, autocomplete or React input handling, huge DOM, SPA hydration); implement a fix with fallback methods and timeouts; and verify against both sites, recording the result in `registry.md`. A pattern library starts with nested scrollable containers, and bundled Python scripts cover cases such as Twitter scroll, modals, covered elements, Shadow DOM and autocomplete.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6193aea. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 10 files in scripts/ (Python), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
linkedin.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Browser Automation Edge Cases loads about 1.8k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 378 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from aden-hive/hive at commit 6193aea, republished under its MIT licence (© aden-hive). 378 words, ~1,758 tokens.
.claude/skills/browser-edge-cases/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.Standard Operating Procedure for debugging and fixing browser automation failures on complex websites.
browser_interact(action="scroll") succeeds but page doesn't movebrowser_interact(action="left_click") succeeds but no action triggeredbrowser_interact(action="type") text disappears or doesn't workbrowser_snapshot hangs or returns stale contentbrowser_navigate loads wrong content1. Create minimal test case demonstrating failure
2. Test against simple site (example.com) to verify tool works
3. Test against problematic site to confirm issueQuick isolation test:
# Test 1: Does the tool work at all?
await browser_navigate(tab_id, "https://example.com")
result = await browser_interact(action="scroll", tab_id=tab_id, scroll_direction="down", scroll_amount=100)
# Should work on simple sites
# Test 2: Does it fail on the problematic site?
await browser_navigate(tab_id, "https://linkedin.com/feed")
result = await browser_interact(action="scroll", tab_id=tab_id, scroll_direction="down", scroll_amount=100)
# If this fails but example.com works → site-specific edge caseStep 2a: Check console for errors
console = await browser_console(tab_id)
# Look for: CSP violations, React errors, JavaScript exceptionsStep 2b: Inspect DOM structure
html = await browser_html(tab_id)
snapshot = await browser_snapshot(tab_id)
# Look for:
# - Nested scrollable divs (overflow: scroll/auto)
# - Shadow DOM roots
# - iframes
# - Custom widgetsStep 2c: Identify the pattern
| Symptom | Likely Cause | Check |
|---|---|---|
| Scroll doesn't move | Nested scroll container | Look for overflow: scroll divs |
| Click no effect | Element covered | Check getBoundingClientRect vs viewport |
| Type clears | Autocomplete/React | Check for event listeners on input; try a type action with no selector |
| Snapshot hangs | Huge DOM | Check node count in snapshot |
| Snapshot stale | SPA hydration | Wait after navigation |
Pattern: Always have fallbacks
async def robust_operation(tab_id):
# Method 1: Primary approach
try:
result = await primary_method(tab_id)
if verify_success(result):
return result
except Exception:
pass
# Method 2: CDP fallback
try:
result = await cdp_fallback(tab_id)
if verify_success(result):
return result
except Exception:
pass
# Method 3: JavaScript fallback
return await javascript_fallback(tab_id)Pattern: Always add timeouts
# Bad - can hang forever
result = await browser_snapshot(tab_id)
# Good - fails fast with useful error
try:
result = await browser_snapshot(tab_id, timeout_s=10.0)
except asyncio.TimeoutError:
# Handle timeout gracefully
result = await fallback_snapshot(tab_id)1. Run against problematic site → should work
2. Run against simple site → should still work (regression check)
3. Document in registry.mdSites: LinkedIn, Twitter/X, any SPA with scrollable feeds
Detection:
// Find largest scrollable container
const candidates = [];
document.querySelectorAll('*').forEach(el => {
const style = getComputedStyle(el);
if (style.overflow.includes('scroll') || style.overflow.includes('auto')) {
const rect = el.getBoundingClientRect();
if (rect.width > 100 && rect.height > 100) {
candidates.push({el, area: rect.width * rect.height});
}
}
});
candidates.sort((a, b) => b.area - a.area);
return candidates[0]?.el;Fix: Dispatch scroll events at container's center, not viewport center.
Sites: Modals, tooltips, SPAs with loading overlays
Detection:
const rect = element.getBoundingClientRect();
const centerX = rect.left + rect.width / 2;
const centerY = rect.top + rect.height / 2;
const topElement = document.elementFromPoint(centerX, centerY);
return topElement === element || element.contains(topElement);Fix: Wait for overlay to disappear, or use JavaScript click.
Sites: React SPAs, modern web apps
Detection: If CDP click doesn't trigger handler but manual click works.
Fix: Use JavaScript click as primary:
element.click();Sites: LinkedIn, Facebook, Twitter (feeds with 1000s of nodes)
Detection:
document.querySelectorAll('*').length > 5000Fix:
Sites: React, Vue, Angular SPAs after navigation
Detection:
// Check if React app has hydrated
document.querySelector('[data-reactroot]') ||
document.querySelector('[data-reactid]')Fix: Wait for specific selector after navigation:
await browser_navigate(tab_id, url, wait_until="load")
await browser_interact(action="wait", tab_id=tab_id, wait_for_selector='[data-testid="content"]', timeout_ms=5000)Sites: Components using Shadow DOM, Lit elements
Detection:
document.querySelectorAll('*').some(el => el.shadowRoot)Fix: Pierce shadow root:
function queryShadow(selector) {
const parts = selector.split('>>>');
let node = document;
for (const part of parts) {
if (node.shadowRoot) {
node = node.shadowRoot.querySelector(part.trim());
} else {
node = node.querySelector(part.trim());
}
}
return node;
}| Issue | Primary Fix | Fallback |
|---|---|---|
| Scroll not working | Find scrollable container | Mouse wheel at container center |
| Click no effect | JavaScript click() | CDP mouse events |
| Type clears | use_insert_text=False (per-keystroke) | Use a type action (Input.insertText) |
| Snapshot hangs | Add timeout_s | DOM snapshot fallback |
| Stale content | Wait for selector | Increase wait_until timeout |
| Shadow DOM | Pierce selector | JavaScript traversal |
© aden-hive, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 11 other files (scripts) in .claude/skills/browser-edge-cases of aden-hive/hive.
Open the folder on GitHubat commit 6193aea
Browser Automation Edge Cases next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Browser Automation Edge Cases this skilladen-hive/hive | 11k | — | ~1.8k | Automated safety check: Pass | MIT | |
| AI Search Hubminsight-ai-info/AI-Search-Hub | 1.3k | — | ~1.3k | Automated safety check: Pass | None | |
| Browser Tools981377660LMT/algorithm-study | 277 | 1 repos | ~1.3k | Automated safety check: Pass | None | |
| Chrome Cdpaiguicai/MCP-Gateway | 158 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Anti Detect Browserantibrow/anti-detect-browser-skills | 17 | — | ~9.8k | Automated safety check: Warn | MIT | |
| Browser Harness Agentloomlinora-u/AgentLoom | 168 | — | ~1.3k | Automated safety check: Pass | None |
minsight-ai-info/AI-Search-Hub
Run the AI Search Hub browser automation scripts for Yuanbao, LongCat, Doubao, Qwen, Gemini, Grok, and MiniMax.
981377660LMT/algorithm-study
Interactive browser automation via Chrome DevTools Protocol.
aiguicai/MCP-Gateway
Browser automation and debugging through bundled Chrome DevTools Protocol.
antibrow/anti-detect-browser-skills
Drive Chromium from standard Playwright APIs with a real-device fingerprint applied in the kernel, one persistent isolated profile per identity, and a per-profile proxy whose exit IP sets timezone…
linora-u/AgentLoom
A skill your agent uses when working on AgentLoom browser-harness integration or debugging applications/browserharnessprobe: creating or updating the probe Application, installing the external…
browsing-skills/browsing-skills
Umbrella skill for a library of website-specific browsing skills. Use when the user's request targets one of these specific websites: <!-- DOMAINS:START…
Works with
Categories
Step-by-step procedure for debugging browser automation failures on complex sites such as LinkedIn, Twitter/X, single-page apps and Shadow DOM pages. This is a standard operating procedure for debugging browser automation failures on complex websites. It targets symptoms such as a scroll that reports success while the page does not move, a click that triggers nothing, typed text that disappears, a snapshot that hangs or returns stale content, and navigation that loads the wrong page.
Browser Automation Edge Cases fits situations like: debugging a browser tool that scrolls, clicks or types with no effect on a site; fixing snapshots that hang or go stale on a huge or hydrating page; handling Shadow DOM, contenteditable fields or autocomplete inputs.
Run `npx skills add aden-hive/hive --skill browser-edge-cases -a claude-code`. Or copy the skill folder (.claude/skills/browser-edge-cases in aden-hive/hive) into .claude/skills/browser-edge-cases in your project. Claude Code loads it when a task matches its description.
Run `npx skills add aden-hive/hive --skill browser-edge-cases -a codex`. Or copy the skill folder (.claude/skills/browser-edge-cases in aden-hive/hive) into .agents/skills/browser-edge-cases in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add aden-hive/hive --skill browser-edge-cases -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/browser-edge-cases, .gemini/skills/browser-edge-cases, .github/skills/browser-edge-cases and .opencode/skills/browser-edge-cases in your project.
Going by SKILL.md and its folder, Browser Automation Edge Cases needs Python for the scripts in its folder. Our summary lists: Python, to run the bundled test scripts; The browser tools these scripts call, such as browser_interact and browser_snapshot.
SKILL.md names 1 domain. In commands or code: linkedin.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Browser Automation Edge Cases is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Browser Automation Edge Cases: AI Search Hub (minsight-ai-info/AI-Search-Hub, 1.3k stars), Browser Tools (981377660LMT/algorithm-study, 277 stars), Chrome Cdp (aiguicai/MCP-Gateway, 158 stars) and Anti Detect Browser (antibrow/anti-detect-browser-skills, 17 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
aden-hive (a GitHub organization) maintains it in aden-hive/hive, which has 11,085 GitHub stars. The repository was last updated on October 9, 2026.
Source: aden-hive/hive on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.