technical-seo — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited technical-seo (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Run a comprehensive technical SEO audit over the user's codebase and a provided URL list. Every issue includes a why-it-matters explanation, an exact fix command, and an expected impact rating. Be honest about which categories are measured vs. observable-only vs. requiring Path B integration.
Works identically on current Opus / Sonnet / Haiku models. Opus/Sonnet batch config Reads, template Globs, and URL fetches in parallel. Haiku may follow sequentially if parallel batching misbehaves.
Read references/CAPABILITIES.md. Key constraints:
Read robots.txt at the site root (from codebase or WebFetch). Check:
Disallow rule covering pages meant to rank (e.g., /blog/, /products/)Sitemap: lineDisallow: /*? can block faceted navigation unintentionallyWhy it matters: A misconfigured robots.txt can deindex entire site sections.
Fix command:
claude "Read robots.txt, remove rules blocking /blog and /products, add Sitemap: https://example.com/sitemap.xml, and write the corrected file."Expected impact: High. Blocked pages cannot rank at all.
Fetch the sitemap from the Sitemap: directive, or try /sitemap.xml and /sitemap_index.xml. Validate:
<lastmod> dates present and accurateWhy it matters: Sitemaps guide crawlers. Broken entries waste crawl budget.
Expected impact: Medium. Accelerates discovery; critical on large sites.
For every indexable page in the codebase/URL list, inspect <link rel="canonical">:
Why it matters: Incorrect canonicals consolidate signals to the wrong URL or cause deindexation.
Expected impact: High.
Scan pages for <meta name="robots" content="noindex"> and X-Robots-Tag headers:
noindex that appear in the sitemapnoindex that receive internal links as if indexablenofollow on internal links (leaks PageRank)Expected impact: High for affected pages.
Compare sitemap URLs against URLs reachable via internal links from the codebase/homepage:
Expected impact: Medium. Orphans often gain rankings once linked.
Check for crawl-budget drains visible in code/config:
Expected impact: Medium-High on sites with 10,000+ pages; negligible on small sites.
scripts/audit-ai-access.py)Run the bundled validator; knowledge in references/ai-crawl-access.md:
python scripts/audit-ai-access.py --origin https://example.com --check-fetch --json
python scripts/audit-ai-access.py --robots ./public/robots.txt --html-root ./public --jsonIt reports:
ChatGPT-User, Claude-SearchBot/User, PerplexityBot/User, Bingbot, Googlebot — blocking these removes the site from AI answers) vs training (GPTBot, ClaudeBot, Google-Extended, CCBot, … — blocking is a licensing choice with no AEO impact)
run off Googlebot. Never imply otherwise.
--check-fetch) — Cloudflare blocks AI crawlers bydefault on new domains since July 2025; robots.txt Allow + WAF 403 is a common silent misconfiguration. Probe results are indicative (some WAFs verify crawler IPs).
recommended by Lighthouse's Agentic Browsing audits (see references/agent-readiness.md)
Why it matters: A site that wants AI citations while blocking the citation-class bots (or letting its CDN do so) is invisible to ChatGPT/Claude/Perplexity regardless of content quality.
Expected impact: High for AI answer visibility; zero ranking impact from the training-class choices.
Honest framing: This section flags risk factors visible in code that tend to correlate with poor Core Web Vitals. It does NOT produce numerical LCP/CLS/INP values. Those require Lighthouse or PSI measurement (Path B).
For numerical CWV measurement, integrate a Lighthouse MCP or use the PageSpeed Insights API directly.
Likely-LCP elements (hero images, heading banners, video posters) — check:
width and height attributes? Missing → CLS risk<link rel="preload"> where appropriate?<head> without defer/async?Framework-specific fixes: see references/platform-fixes.md.
Scan for long-running handler patterns:
localStorage or sessionStorage reads in event handlersrequestIdleCallback<head> without deferhydrateRoot placement)width/height or CSS aspect-ratiofont-display: swap + size-adjusted fallbackmin-height)transformFor framework-specific fixes, see references/platform-fixes.md.
This skill does not measure LCP, CLS, or INP numerically. To get real numbers, integrate:
The skill flags risk factors; measurement tells you whether the factors matter in practice.
Verify <meta name="viewport" content="width=device-width, initial-scale=1"> in <head>. Flag maximum-scale=1 or user-scalable=no (accessibility violation).
Expected impact: Critical when missing.
Compare rendered content between mobile and desktop user agents via WebFetch. Flag:
Expected impact: High on mobile-first indexing.
Scan interactive elements for minimum 48x48 CSS px and 8px spacing between adjacent targets (check CSS / Tailwind utilities).
Body text at least 16px; no text requiring zoom.
Detect viewport overflow on mobile widths (360-414px): fixed widths, tables without scroll wrappers, images without max-width: 100%.
Why it matters: HTTPS is a confirmed ranking signal.
Strict-Transport-Security header with max-age ≥ 31536000, includeSubDomains, preload.
Check for CSP header. Flag if missing or overly permissive (unsafe-inline, unsafe-eval, *). Verify frame-ancestors set.
Check for publicly accessible .env, .git/, wp-config.php, database dumps, backup files (via WebFetch of known paths).
Expected impact: Low ranking impact, critical for site safety. Hacked sites get deindexed.
Evaluate URL patterns:
/p/12345; good: /products/blue-widget)Flag uppercase characters, underscores, spaces, encoded characters in paths.
Flag important content accessible only via query strings (?id=123). Flag sorting/filtering that generates indexable duplicates.
rel="next" / rel="prev" link tagsFetch each key URL without JS (WebFetch returns raw HTML). Flag:
<body> with only root <div> + <script> → client-side-only rendering<a href>Why it matters: Googlebot queues JS pages for rendering, delaying indexation — and no other major crawler renders JS at all: AI crawlers (GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot) execute zero JavaScript, so CSR-only content is invisible to ChatGPT, Claude, and Perplexity even when those bots are allowed.
Expected impact: Critical. Client-side-only rendering delays Google indexation by days and excludes the content from AI answers entirely.
Note: Full SPA analysis requires a browser MCP (Path B). This skill detects the symptom; diagnosing specific hydration issues needs a browser runtime.
Detect Rendertron / Puppeteer / prerender.io setups. Flag if used as permanent solution instead of SSR.
Identify critical content loaded asynchronously (prices, reviews, article text, internal links rendered by JS frameworks).
loading="lazy"<noscript> fallbacksFollow every redirect to its final destination. Flag:
Detect circular redirects. Flag any redirect that doesn't terminate in a 200 within 10 hops.
Expected impact: Critical. Redirect loops make pages inaccessible.
## Summary Scorecard
| Category | Score | Method | Critical | Warnings | Passed |
|----------|-------|--------|----------|----------|--------|
| Crawlability & Indexation | A-F | static-analysis | count | count | count |
| AI Crawler Access | A-F | audit-ai-access.py | count | count | count |
| Page-Speed Risk Factors | A-F | static-analysis | count | count | count |
| Page-Speed CWV (numerical) | N/A | not-measured (Path B: Lighthouse MCP) | — | — | — |
| Mobile-First | A-F | static-analysis | count | count | count |
| Security | A-F | static + headers | count | count | count |
| URL Structure | A-F | static-analysis | count | count | count |
| JavaScript SEO | A-F | static + no-JS fetch | count | count | count |
| Redirects | A-F | http-following | count | count | count |
| **Overall (measured categories only)** | **A-F** | | | | |
## Measurement Gaps
- Numerical Core Web Vitals (LCP, CLS, INP): integrate Lighthouse MCP or PSI API
- JS-rendered SPA content: integrate browser MCP (Playwright-based)
- Full-site crawl: integrate crawler MCP (Screaming Frog / Sitebulb)### [CRITICAL|WARNING] Issue Title
**Category:** Category Name > Sub-check
**Why it matters:** One-sentence SEO impact
**Affected URLs:** List of URLs or "site-wide"
**Fix command:** claude "exact fix command"
**Expected impact:** High | Medium | Low — brief explanationAuto-detect the framework from package.json / config files / HTML signals before running checks. See references/platform-fixes.md for framework detection patterns and tailored fix commands. When ambiguous, ask before proceeding.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.