scrape — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited scrape (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use to extract data from a page — "scrape", "get data from", "pull", "extract from", "what's on this page". Read-only: for form fills, clicks, or submissions use the browse daemon's interaction verbs, not this skill.
{{include lib/snippets/browse-setup.md}}
If BROWSE_NOT_AVAILABLE: fall back to curl + an HTML parse for static pages (note that JS-rendered content and screenshots are unavailable), or stop and tell the user the browse shim is needed.
Confirm the URL and exactly which fields the user wants (single record, or a list with per-item fields). If it's ambiguous, ask once with AskUserQuestion.
"$B" goto <url>
"$B" text # full visible text — orient yourselfFor structured values, pull them by selector with js (the stateless shim evaluates against a fresh load) — e.g. a list of prices:
"$B" js "Array.from(document.querySelectorAll('.price')).map(e => e.textContent.trim())"If the page is interactive (needs a click to reveal data), start the daemon and use a chain or refs: "$B" daemon & then "$B" chain "goto <url>" "click <sel>" "text".
Assemble a JSON object (single record) or array (list) of the requested fields, mapping each item's selectors. Verify the count matches what's visible. Quote selectors exactly — never guess a value that isn't on the page.
Print the JSON. Name any requested field that couldn't be found rather than fabricating it. If JS-heavy content is missing, retry once via the daemon with a short wait ("$B" chain "goto <url>" "wait 1500" "text").
looks protected (ToS / robots), ask the user before proceeding; for an authenticated page, /connect-chrome reuses their real session.
{{include lib/snippets/capture-learnings.md}}
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.