CtrlK
BlogDocsLog inGet started
Tessl Logo

web-reader

Implement web page content extraction capabilities using the z-ai-web-dev-sdk. Use this skill when the user needs to scrape web pages, extract article content, retrieve page metadata, or build applications that process web content. Supports automatic content extraction with title, HTML, and publication time retrieval.

73

Quality

67%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Advisory

Suggest reviewing before use

Optimize this skill with Tessl

npx tessl skill review --optimize ./skills/web-reader/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Discovery

92%

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

This is a well-crafted skill description that clearly articulates specific capabilities, includes natural trigger terms, and explicitly states both what the skill does and when to use it. The main weakness is potential overlap with other web scraping or content extraction skills, though the specific SDK reference helps mitigate this. The description uses proper third-person voice throughout.

DimensionReasoningScore

Specificity

Lists multiple specific concrete actions: 'scrape web pages', 'extract article content', 'retrieve page metadata', 'build applications that process web content', and mentions specific outputs like 'title, HTML, and publication time retrieval'.

3 / 3

Completeness

Clearly answers both what ('implement web page content extraction using z-ai-web-dev-sdk, supports automatic content extraction with title, HTML, publication time') and when ('Use this skill when the user needs to scrape web pages, extract article content, retrieve page metadata, or build applications that process web content').

3 / 3

Trigger Term Quality

Includes strong natural keywords users would say: 'scrape web pages', 'extract article content', 'page metadata', 'web content', 'content extraction'. These cover common variations of how users would describe web scraping needs.

3 / 3

Distinctiveness Conflict Risk

The mention of 'z-ai-web-dev-sdk' provides some distinctiveness, but 'web content extraction' and 'scrape web pages' could overlap with other web scraping or HTTP request skills. The SDK name helps but the general web scraping domain is broad enough to risk conflicts.

2 / 3

Total

11

/

12

Passed

Implementation

42%

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

The skill is highly actionable with executable, well-structured code examples covering CLI and SDK usage. However, it is severely bloated - easily 3-4x longer than necessary, with repetitive patterns (caching shown twice, multiple-page fetching shown 3+ ways) and extensive boilerplate code for patterns Claude already knows (rate limiting, caching classes, Express endpoints). The content desperately needs to be split into a concise overview with references to separate files for advanced patterns.

Suggestions

Reduce the main file to ~100 lines covering: basic CLI usage, one SDK example, response format, and the backend-only constraint. Move advanced use cases (RSS reader, scraping pipeline, Express integration, scheduled fetcher) to a separate EXAMPLES.md or ADVANCED.md file.

Remove redundant code examples - caching appears in both the WebContentAnalyzer class and the CachedWebReader best practice; multiple-page reading appears in 3 different forms. Keep one canonical example of each pattern.

Eliminate explanations of standard programming patterns (rate limiting, caching, parallel processing) that Claude already knows. Instead, just note 'implement caching and rate limiting for production use' with a brief code snippet showing the SDK-specific parts.

Add explicit validation steps for batch scraping workflows - e.g., verify response has expected fields before processing, check content length thresholds, and implement retry logic with backoff for failed URLs.

DimensionReasoningScore

Conciseness

Extremely verbose at ~600+ lines. Massive amounts of repetitive code examples (caching is shown twice, multiple pages is shown multiple ways, content extraction patterns repeated). The CLI section alone has 4 nearly identical examples. Many patterns (rate limiting, caching, parallel processing) are standard patterns Claude already knows and don't need full class implementations.

1 / 3

Actionability

All code examples are fully executable with proper imports, error handling, and usage examples. Both CLI commands and SDK code are copy-paste ready with concrete function invocations and response handling.

3 / 3

Workflow Clarity

The 'How It Works' section provides a basic 4-step sequence, and individual code examples have clear flows. However, there are no explicit validation checkpoints for batch/scraping operations - no guidance on verifying extracted content quality, no feedback loops for retrying failed pages beyond basic try/catch.

2 / 3

Progressive Disclosure

Monolithic wall of text with everything inline. The response format table, all advanced use cases (RSS reader, content aggregator, scraping pipeline, scheduled fetcher, Express.js integration), best practices, and troubleshooting are all in one massive file. References a scripts directory but doesn't offload any content to separate files.

1 / 3

Total

7

/

12

Passed

Validation

90%

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

Validation10 / 11 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

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

Warning

Total

10

/

11

Passed

Repository
jjyaoao/HelloAgents
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.