Install
$ agentstack add skill-bettyguo-browser-skills-verify-page-loaded ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Verify Page Loaded
When to invoke
After any navigation, and after any interaction that may have triggered new content (clicking pagination, expanding a section, submitting a form). Especially important before extraction skills — extracting from a half-rendered DOM produces incomplete results.
This skill is vision-forbidden (max_vision_calls: 0). If the deterministic checks fail, the skill returns failed and the agent knows the page is genuinely not ready — vision wouldn't help.
Recipe
- waitfordom_ready timeout=10s
- waitforselector selector="body" state=visible timeout=2s
- wait extra=200ms
- assert novisibleelement selector="[aria-busy='true']" timeout=3s
- assert novisibleelement selector=".loading, .spinner, [class*='skeleton']" timeout=3s
Success criteria
- assert dom_ready
- assert novisibleelement selector="[aria-busy='true']"
- assert maincontentpresent
The main_content_present assertion checks for one of: `, [role=main], `, or a body height > 200px (heuristic for "something rendered").
When NOT to use
- On pages that legitimately stay in a loading state (live dashboards, video-call interfaces, etc.). Use a custom skill or rely on agent reasoning.
- Inside an extraction loop where the page is the same as before; this skill assumes a fresh state.
Known failures
- Single-page apps with no DOMContentLoaded signal change: rare but happens with React/Vue apps that use shadow DOM heavily. Falls back to the spinner-absence check.
- Pages with always-present skeleton-style classes: some design systems use
.skeletonfor normal layout elements, not loading. Authors can override the recipe to remove step 5. - Sites that block until consent is given: if a cookie banner is also blocking, run [
dismiss-cookie-banner](../dismiss-cookie-banner/SKILL.md) first.
Example usage
Agent task: "Get the latest cs.AI papers from arxiv."
→ matcher selects [verify-page-loaded, extract-table-pagination]
→ invoke_skill("verify-page-loaded") → success in 89ms, deterministic_path=true
→ invoke_skill("extract-table-pagination") proceeds against a fully-rendered page
Related skills
dismiss-cookie-banner— usually precedes this skillextract-table-pagination— usually follows this skillhandle-infinite-scroll— uses similar primitives but with a different success criterion
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: bettyguo
- Source: bettyguo/browser-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.