CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

web-scraper

Use this skill when you need to extract structured data from websites — handling dynamic JavaScript content, pagination, login flows, or when you want Claude to intelligently identify the data to extract.

Quality

81%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

76%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A lean, code-forward recipe that is easy to navigate and mostly executable. The main gaps are the undefined extract_from_html helper in the paginated example and the absence of validation/error-handling checkpoints in the batch pagination loop, plus an unimplemented robots.txt claim in the Overview.

Suggestions

Define or inline extract_from_html() (e.g., reuse the scrape_page Claude-extraction logic) so the paginated scraper example runs as-is.

Add validation checkpoints to the pagination loop: catch navigation failures, verify each page yielded data, and skip/stop gracefully — this batch operation currently has no feedback loop.

Either implement the robots.txt check promised in the Overview ('Respects robots.txt and rate limits') or remove the claim so the content matches the code.

DimensionReasoningScore

Conciseness

Lean and efficient throughout: a two-sentence overview, a two-command setup block, and dense purposeful code with only functional comments. It assumes Claude's competence (no explanation of what Playwright, Chromium, or the API is) and never pads. Not 4: there is essentially no over-explanation to trim — the Quick Reference table adds non-duplicated guidance ('Best for' column).

5 / 5

Actionability

Three concrete, near-complete code recipes plus exact install commands, so mostly executable guidance. The gap: the paginated scraper calls extract_from_html(html, data_description), a function that is never defined anywhere in the skill, so that example is not copy-paste runnable as-is. Fits anchor 4 ('minor gaps'); not 3 because the code is real and executable rather than pseudocode or high-level hints.

4 / 5

Workflow Clarity

The paginated scraper is a batch operation (a loop scraping up to max_pages pages) with no validation checkpoints: no handling of navigation failures or blocked pages, no verification that extracted data is non-empty or valid, and no retry/feedback loop — and the Overview's claim 'Respects robots.txt' is never implemented in any code or step. Per the judging guidelines, batch operations without validation cap workflow clarity at 3. It stays above 2 because each recipe has a coherent implicit sequence and the basic scraper includes a JSON decode fallback.

3 / 5

Progressive Disclosure

Well-organized single-file layout with clear sections (Overview, Setup, three labeled recipes, Quick Reference) and no buried or nested references; the skill is self-contained with no bundle files, so navigation is trivial. Fits anchor 4 ('good structure; minor organization gaps'); not 5 because at ~135 lines the three full recipes could be split into referenced files, and it exceeds the under-50-line simple-skill case.

4 / 5

Total

16

/

20

Passed

Description

78%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description with an explicit 'Use this skill when...' trigger and multiple concrete capability areas. The main weaknesses are the second-person voice (which triggers the specificity penalty) and the absence of the domain's most natural synonyms such as 'scrape' and 'scraping'.

Suggestions

Rewrite the description in third person (e.g., 'Extracts structured data from websites, handling JavaScript-heavy pages, pagination, and login flows. Use when the user asks to scrape a site, crawl paginated listings, or pull structured data from web pages.') to avoid the second-person specificity penalty.

Add the natural trigger synonyms 'scrape', 'scraping', and 'crawling' — the words users most commonly say for this task — to the trigger clause.

DimensionReasoningScore

Specificity

Lists several concrete capabilities ("extract structured data from websites", "handling dynamic JavaScript content, pagination, login flows"), which base-fits anchor 4, but the description is written in second person ("when you need to extract", "when you want Claude to intelligently identify"), which the judging guidelines penalize by reducing specificity by 1. Not 2: it names the domain plus multiple concrete capabilities, well above the 'minimal or generic' level.

3 / 5

Completeness

Explicitly answers both what ("extract structured data from websites — handling dynamic JavaScript content, pagination, login flows") and when ("Use this skill when you need to... or when you want Claude to intelligently identify the data to extract") with multiple concrete trigger phrases. Not 4: the 'when' is explicit with concrete triggers, not weakly implied or generic.

5 / 5

Trigger Term Quality

Good natural keyword coverage: "extract structured data", "websites", "dynamic JavaScript content", "pagination", "login flows". However, the domain's most common user synonyms — "scrape", "scraping", "crawl" — are entirely absent, fitting anchor 4 ('a few natural terms missing') rather than 5.

4 / 5

Distinctiveness Conflict Risk

Browser-based scraping with pagination and login handling is a clear, mostly distinct niche. Minor overlap risk remains with generic web-fetch or data-extraction skills because phrases like "extract structured data" are broad, so it fits anchor 4 rather than 5.

4 / 5

Total

16

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository

ProwlrBot/prowlr-marketplace

Path

external/goose-recipes/web-scraper/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.