CtrlK
BlogDocsLog inGet started
Tessl Logo

competitor-pages

Competitor page gap analysis — take a query you want to win and the pages currently outranking you, and produce a concrete brief on what to add or change to compete. Compares content depth and coverage (subtopics they cover that you don't), structure (headings, format, tables, media), search-intent match, E-E-A-T signals, schema/rich-result eligibility, internal linking, and on-page optimization — across your page vs. the top-ranking competitors. Use this skill whenever the user wants to know why a competitor outranks them on a specific query, what a top-ranking page does better, a content-gap analysis against specific competitor URLs, or a brief to beat a specific SERP. Trigger on: "why does competitor X outrank me", "content gap analysis", "competitor page analysis", "what does the top result have that I don't", "how do I beat this page", "analyze competitor pages", "SERP gap", "compete for [keyword]". For seed keyword discovery use /keyword-research; for a content calendar use /content-planner.

64

Quality

76%

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/competitor-pages/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 a maximally lean delegation stub — one clearly-worded instruction to read and follow a canonical skill file. The delegation pattern is legitimate in principle, but the referenced target does not exist in this bundle, so the body provides no actionable analysis guidance, no workflow substance, and no resolvable reference. Conciseness is perfect; everything that depends on content substance suffers.

Suggestions

Inline a concise summary of the canonical workflow's key steps (the comparison dimensions and the expected brief structure) so the skill remains actionable even when the external file is unavailable, rather than delegating 100% of the substance to `../../seo/competitor-pages/SKILL.md`.

Fix the delegation target: `../../seo/competitor-pages/SKILL.md` does not resolve from this skill's location (no `seo/` directory exists in the bundle). Either copy the canonical workflow into this skill's bundle, reference a path that resolves, or bundle it as references/ content.

Add fallback guidance for the case where the referenced file cannot be found, so the workflow does not dead-end with no next action.

DimensionReasoningScore

Conciseness

The body is two lines — a heading and a single directive ('Read [`../../seo/competitor-pages/SKILL.md`]... completely, then follow it as the active workflow') — with zero padding and no explanations of concepts Claude already knows. Every token earns its place, matching the score-5 anchor ('lean and efficient; assumes Claude's competence').

5 / 5

Actionability

The sole directive is concrete as written (an exact path plus an exact reference-resolution rule), but it delegates all substantive guidance to a file that does not exist: no `seo/` directory is present anywhere in the bundle, so `../../seo/competitor-pages/SKILL.md` cannot be read and no executable analysis steps remain. This is 'minimal concrete guidance; missing the specific steps to execute' (score 2) rather than score 3, because the body itself contains no analysis steps at all — the entire task substance is behind a broken pointer.

2 / 5

Workflow Clarity

The single directive is unambiguous as written ('Read... completely, then follow it as the active workflow. Resolve every relative reference from that file against `../../seo/competitor-pages/`'), and the task is neither destructive nor batch so no validation cap applies. However the sequence dead-ends at a missing external file, leaving the workflow incomplete in practice — between the clear-single-step ideal (score 5 under the simple-skill exception) and 'steps listed but with gaps' (score 3), the unresolved target is a real gap, so score 3 fits best.

3 / 5

Progressive Disclosure

The one reference is clearly signaled as a markdown link and is only one level deep, but it points outside the skill bundle to a non-existent path, and the bundle contains no other materials (no references/, scripts/, or assets/ directories exist). With nothing in-bundle and a link that does not resolve, there is effectively no navigable structure — 'minimal structure' (score 2) rather than score 3's 'references present but not clearly signaled', since the signaling is fine but the structure itself is absent.

2 / 5

Total

12

/

20

Passed

Description

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

An exemplary description: concrete capabilities enumerated across eight analysis dimensions, explicit 'Use when...' guidance with natural trigger phrases, and explicit pointers to adjacent skills to avoid mis-triggering. Third-person voice throughout with no fluff or over-claims.

DimensionReasoningScore

Specificity

Names the domain and multiple concrete actions with comprehensive coverage: 'produce a concrete brief on what to add or change', and compares eight specific dimensions — 'content depth and coverage (subtopics they cover that you don't), structure (headings, format, tables, media), search-intent match, E-E-A-T signals, schema/rich-result eligibility, internal linking, and on-page optimization'. This matches the score-5 anchor (multiple specific concrete actions, comprehensive coverage) and exceeds score 4, which expects minor coverage gaps.

5 / 5

Completeness

Explicitly answers both what ('Compares content depth and coverage... across your page vs. the top-ranking competitors', 'produce a concrete brief') and when ('Use this skill whenever the user wants to know why a competitor outranks them on a specific query... Trigger on: [concrete phrases]'). Matches the score-5 anchor exactly; score 4 would require a less explicit 'when', which is not the case here.

5 / 5

Trigger Term Quality

Extensive natural trigger phrases with synonyms and variations: 'why does competitor X outrank me', 'content gap analysis', 'competitor page analysis', 'what does the top result have that I don't', 'how do I beat this page', 'analyze competitor pages', 'SERP gap', 'compete for [keyword]'. These are phrases users would actually say; nothing at score 4's 'a few natural terms missing' level is absent.

5 / 5

Distinctiveness Conflict Risk

Clear niche (competitor page gap analysis for a specific query/SERP) with distinct triggers, plus explicit boundary disambiguation: 'For seed keyword discovery use /keyword-research; for a content calendar use /content-planner'. Minimal conflict risk, matching the score-5 anchor rather than score 4's 'minor overlap risk with closely related skills'.

5 / 5

Total

20

/

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

frontmatter_unknown_keys

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

Warning

relative_links

Relative link issues: 1 suspicious

Warning

Total

14

/

16

Passed

Repository
nowork-studio/notfair-plugin
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.