CtrlK
BlogDocsLog inGet started
Tessl Logo

web-scraping

Scrape websites, extract structured data, and automate browsers. Use when asked to scrape, extract, crawl, parse, or pull data from web pages or any URL.

63

Quality

75%

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

Fix and improve this skill with Tessl

tessl review fix ./skills/research-tools/capabilities/web-scraping/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

50%

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

The body is well-organized and covers five APIs with concrete commands, but several flagship curl examples contain broken JSON that would fail at runtime, workflows lack validation checkpoints, and the ~430-line monolith has no progressive disclosure into reference files. These hold every content dimension at 2.

Suggestions

Fix the malformed `-d` JSON payloads so body fields sit inside the object (e.g. `-d '{"api":"scrapegraph","path":"/v1/smartscraper","body":{"website_url":"...","user_prompt":"..."}}'`), applying the same correction to the crawl, batch, riveter run, notte agent, and brand-dev ai/query examples so they are copy-paste executable.

Add explicit validation/error-recovery checkpoints to the async crawl and batch workflows (e.g. check status == failed → retry/inspect; verify the returned id before polling) and document how placeholders like {crawl_id}, RUN_KEY, and RETRIEVE_ID are obtained from the prior response.

Split the per-API reference into one-level-deep reference files (e.g. references/scrapegraph.md, references/olostep.md) with clearly signaled links from SKILL.md, and remove the redundant "Tips" section that restates each section's "Best for" description.

DimensionReasoningScore

Conciseness

The body is mostly lean API reference with little concept-padding, but the opening sentence restates the description and the "Tips" section largely restates each section's "Best for" line, so it could be tightened; not a 3 due to this redundancy, not a 1 because there is no explanatory fluff about concepts Claude already knows.

2 / 3

Actionability

Many flagship curl examples contain malformed JSON (e.g. line 34 closes the `-d` payload with `}'` before `website_url`/`user_prompt`, leaving those fields as orphaned shell lines, repeated for crawl, batch, riveter run, notte agent, and brand-dev ai/query), so they are not copy-paste executable; not a 1 because substantial concrete, correct commands do exist, but not a 3 because the headline examples fail at runtime.

2 / 3

Workflow Clarity

Multi-step flows (Notte sessions, async crawls, batches) are clearly numbered Step 1–5, but batch/crawl operations lack validation or error-recovery checkpoints and placeholders like `{crawl_id}`/`RUN_KEY` are not explained; the missing-feedback-loop cap for batch operations holds this at 2 rather than 3.

2 / 3

Progressive Disclosure

The skill is a single ~430-line SKILL.md with no bundle files, keeping all five APIs inline in one reference document that could be split into per-API reference files; well-organized by section so above a 1, but content that should be separate is inline with no signaled one-level-deep references, matching the score-2 anchor.

2 / 3

Total

8

/

12

Passed

Description

100%

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

The description is third-person, concise, and answers both what and when with a clear "Use when..." clause and natural trigger terms. It is a strong, low-conflict description that needs no changes.

DimensionReasoningScore

Specificity

Quotes "Scrape websites, extract structured data, and automate browsers" list three concrete, distinct actions, matching the score-3 anchor that rewards multiple specific concrete actions; not a 2 because the actions are concrete and comprehensive rather than partial.

3 / 3

Completeness

It explicitly answers both what ("Scrape websites, extract structured data, and automate browsers") and when via an explicit "Use when..." clause, hitting the score-3 anchor; the present trigger clause keeps it above the cap-at-2 guideline for missing triggers.

3 / 3

Trigger Term Quality

The clause "Use when asked to scrape, extract, crawl, parse, or pull data from web pages or any URL" supplies natural terms a user would actually say (scrape, crawl, pull data), giving good coverage; not a 2 because common user phrasings are well represented rather than only partially.

3 / 3

Distinctiveness Conflict Risk

Anchored to "web pages or any URL" with scraping-specific triggers, it occupies a clear niche unlikely to fire for unrelated skills; not a 2 because the combined URL/scrape triggers are distinct rather than broadly overlapping.

3 / 3

Total

12

/

12

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.

Validation15 / 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
gooseworks-ai/goose-skills
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.