CtrlK
BlogDocsLog inGet started
Tessl Logo

seo-page

Analyze one supplied URL across on-page, content, technical metadata, schema, images, and performance. Use only for a single-page review.

56

Quality

71%

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/seo-page/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

63%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 a dense, well-organized, largely actionable checklist with concrete thresholds, a defined output format, and explicit error-handling checkpoints. Its weaknesses are dangling references to non-existent bundle files (quality-gates.md, the seo script), a couple of verbose rationale digressions, and a few vague bullets.

Suggestions

Ship the referenced files or remove the references: either add quality-gates.md with the word-count minimums (and the claude-seo script) to the bundle, or inline the page-type minimums directly so the word-count check is executable as written.

Trim the rationale digressions to single-line rules, e.g. "Flag templated metadata: description repeats the title or ends in a stock CTA ('Try it free now.')" and "Don't flag lazy-loading when JS lazy-loaders (Perfmatters, EWWW, lazysizes) strip loading=lazy and use data-src".

Make the operating sequence explicit (fetch URL → extract HTML/metadata → run checks → score → report) and quantify the vague bullets (e.g., a minimum count or relevance rule for internal/external links).

DimensionReasoningScore

Conciseness

The checklist body is mostly lean with concrete thresholds ("50-60 characters", ">200KB (warning), >500KB (critical)"), but two multi-line rationale digressions — the templated-metadata justification ("duplicated or templated metadata is a documented content-quality problem regardless of how original the body copy is") and the JS lazy-loader explanation ("they intentionally strip the native loading=lazy attribute and use data-src placeholders") — are explanation that could be cut to one line each. This is 'mostly efficient but includes some unnecessary explanation', not the minor-trim level of anchor 4.

3 / 5

Actionability

Concrete guidance dominates: exact thresholds, a fully specified command ("${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo run metadata_template.py --title … --json"), an exact output template, enumerated lazy_method values, and dated deprecation rules ("FAQ for rich results (retired May 2026)"). It is below anchor 5 because some bullets stay abstract ("Internal links: sufficient", "to authoritative sources, reasonable count") and the referenced word-count minimums are never given inline.

4 / 5

Workflow Clarity

The single-purpose flow is unambiguous — analyze the listed areas, then emit the defined output (Page Score Card, Issues by priority, Recommendations, Schema Suggestions) — and the Error Handling table provides explicit checkpoints for unreachable URLs, 401/403, and JS-rendered pages. Not anchor 5: the fetch → parse → analyze → report sequence is implicit rather than stated, and there is no instruction to validate that required inputs (e.g., the URL) are present before analysis.

4 / 5

Progressive Disclosure

Sections are clearly organized, but the body points to external materials that do not exist in the bundle: "(see quality-gates.md)" for word-count minimums and a scripts/claude-seo tool path — neither file is present, leaving referenced content unresolvable. This matches 'some structure but could be better organized; references present but not clearly signaled' — the reference exists but resolves to nothing, unlike anchor 4 where references mostly land.

3 / 5

Total

14

/

20

Passed

Description

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

The description delivers a clear, specific 'what' and an explicit single-page scope restriction, with a well-delineated analysis domain. Its main weaknesses are the missing natural trigger vocabulary ("SEO", "audit") and a 'when' clause that restricts scope rather than stating when the skill should fire.

Suggestions

Add natural trigger terms users would actually say, e.g. "Use when the user asks for an SEO audit, SEO review, or on-page analysis of a specific page or URL."

State the skill's deliverables in the description (score card, prioritized issues, actionable recommendations, JSON-LD suggestions) so the 'what' is comprehensive, not just the analysis dimensions.

Include the word "SEO" or "search engine optimization" to sharpen distinctiveness against generic web-performance and page-analysis skills.

DimensionReasoningScore

Specificity

"Analyze one supplied URL across on-page, content, technical metadata, schema, images, and performance" names one concrete action plus six specific analysis dimensions, matching the 'several specific actions; minor gaps in coverage' anchor. It falls short of anchor 5 because it never states what the skill produces (score card, prioritized issues, recommendations) and exceeds anchor 3, which covers only 1-2 concrete actions.

4 / 5

Completeness

A clear 'what' ("Analyze one supplied URL across…") is paired with an explicit trigger clause ("Use only for a single-page review"), so both are present, but the 'when' is a scope restriction rather than a concrete usage trigger — matching 'when could be more explicit or specific'. It is not anchor 5 because there is no "Use when the user asks for…" style trigger phrase, and not anchor 3 because the 'when' guidance is explicit, not weakly implied.

4 / 5

Trigger Term Quality

Keywords like "URL", "on-page", "schema", "images", "performance", and "single-page review" are relevant, but the most natural user phrases — "SEO", "SEO audit", "search engine", "audit this page" — are absent. This matches 'some relevant keywords but missing common variations or synonyms'; it is above anchor 2 (not merely one or two generic keywords) and below anchor 4 (no "SEO"-family terms at all).

3 / 5

Distinctiveness Conflict Risk

Single-page URL review is a fairly distinct niche with a scoping clause, but the absence of "SEO" means it could overlap with general web-performance, schema, or site-audit skills — 'mostly distinct; minor overlap risk with closely related skills'. Not anchor 5: the triggers don't carve out an unambiguous niche the way explicit SEO trigger phrases would.

4 / 5

Total

15

/

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
AgriciDaniel/claude-seo
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.