CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

data-scraper-agent

Build a fully automated AI-powered data collection agent for any public source — job boards, prices, news, GitHub, sports, anything. Scrapes on a schedule, enriches data with a free LLM (Gemini Flash), stores results in Notion/Sheets/Supabase, and learns from user feedback. Runs 100% free on GitHub Actions. Use when the user wants to monitor, collect, or track any public data automatically.

Quality

73%

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/data-scraper-agent/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

53%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.

The body is highly actionable — a near-complete, executable project scaffold with strong anti-pattern guidance — but it is a monolithic ~765-line file with no progressive disclosure, notable redundancy between sections, and no validation checkpoints in a batch-operation workflow. The structure and code quality are good; the packaging and workflow discipline are the weaknesses.

Suggestions

Move the full module implementations (ai/client.py, ai/pipeline.py, storage/notion_sync.py, etc.) into scripts/ or references/ files and keep SKILL.md as a concise overview with clearly signaled one-level-deep pointers, cutting context load to the architecture and workflow.

Delete the duplicated "Common Scraping Patterns" HTML/RSS patterns (already in Step 3), the redundant "Reference Implementation" section, and merge the overlapping Free Stack / Free Tier Limits tables.

Add an explicit validation step to the workflow (e.g., run `python -m scraper.main` manually, verify the stored rows and AI scores in Notion, and only then enable the cron schedule), and define the missing `is_relevant` filter implementation that the scraper template imports.

DimensionReasoningScore

Conciseness

The body is mostly dense, executable template code rather than explanations of known concepts, but it carries real redundancy: the "Common Scraping Patterns" section repeats the HTML and RSS patterns already shown in Step 3, the model fallback chain appears in both Core Concepts and Step 4, the Free Stack and Free Tier Limits tables overlap, and the closing "Reference Implementation" paragraph adds nothing. More than minor trimming is needed, so it sits at the midpoint rather than level 4.

3 / 5

Actionability

Nearly everything is copy-paste-ready executable code — a full Gemini client with fallback, batch pipeline, Notion sync, orchestrator, GitHub Actions workflow, config.yaml, and requirements — covering the common cases with five scraper patterns. Minor gaps keep it from level 5: `is_relevant` is imported from `scraper/filters.py` but never defined, sheets/supabase sync implementations are only mentioned, and `main.py` loads `config.yaml` twice.

4 / 5

Workflow Clarity

The 10-step build sequence is clearly ordered with per-step deliverables, but this is a batch-operation skill (batch scraping, batched AI calls, batched storage writes) and the workflow contains no explicit validate-then-proceed checkpoint — only a final completion checklist — so per the rubric's cap for batch operations without validation it cannot exceed 3. It is above level 2 because the sequence itself is well defined, not rough.

3 / 5

Progressive Disclosure

There are no bundle files at all: the entire multi-module implementation (client, pipeline, memory, storage, orchestrator, workflow YAML, patterns reference, requirements) is inlined in a ~765-line monolithic SKILL.md — content that clearly belongs in separate scripts/references files — which matches the level-2 anchor of inlined content despite the presence of good section headers, and is below level 3 because not even one external reference exists to offload detail.

2 / 5

Total

12

/

20

Passed

Description

83%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: it clearly states a multi-step capability set with named tools and an explicit "Use when..." trigger clause. Its only weaknesses are mild marketing fluff ("fully automated AI-powered", "anything") and a few missing natural trigger synonyms like "scrape" and "alert".

DimensionReasoningScore

Specificity

The description lists multiple concrete, tool-named actions ("Scrapes on a schedule, enriches data with a free LLM (Gemini Flash), stores results in Notion/Sheets/Supabase, and learns from user feedback"), which approaches level 5, but fluff and over-claims ("fully automated AI-powered", "any public source — ... anything") pull it down a notch per the anti-fluff guideline.

4 / 5

Completeness

It explicitly answers both what the skill does and when to use it — "Use when the user wants to monitor, collect, or track any public data automatically" — with concrete trigger phrases, matching the level-5 anchor; the level-4 anchor's "'when' could be more explicit" does not apply here.

5 / 5

Trigger Term Quality

Natural phrases like "monitor, collect, or track" and domain keywords ("job boards, prices, news, GitHub, sports") give good coverage, but common user synonyms such as "scrape", "watch", or "alert me when" are absent from the when-clause, keeping it below the comprehensive level-5 anchor.

4 / 5

Distinctiveness Conflict Risk

The scheduled scrape→enrich→store pipeline niche is mostly distinct with specific trigger terms, but there is minor overlap risk with a generic web-scraping or automation skill, fitting the "mostly distinct; minor overlap risk" anchor rather than the minimal-conflict level 5.

4 / 5

Total

17

/

20

Passed

Validation

87%

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

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (765 lines); consider splitting into references/ and linking

Warning

frontmatter_unknown_keys

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

Warning

Total

14

/

16

Passed

Repository

valeriibeck-star/claude-skills

Path

skills/data-scraper-agent/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.