seo-readiness
Skill2 starsChanged 25 days agoApache-2.0View on GitHub
Use when public pages should be found in search, and titles, meta descriptions, canonicals, robots.txt, sitemap.xml, indexing directives, and URL consistency need to be correct and agree with each other. It checks rendered output and the relationships between files, and repairs localhost canonicals, private routes in sitemaps, and starter metadata. Do not use it to promise indexing or ranking, to keyword-stuff, or on a product that is intentionally private.
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 1 is distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 19
Not for a private/internal product (confirm it is consistently noindex), not for ranking strategy or keyword research.
- Very specific: line 23
Intent: Should this site be indexed?
- Very specific: line 30
Read rendered HTML: frameworks can override tags after hydration.
- Distinctive: line 53
JS-only pages: if content appears only after JavaScript and no server rendering or prerender exists, say indexing depends on the crawler …
- Very specific: line 61
Never state a page "is indexed", "will rank", or "Google will show X".
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
seo-readiness
File existence is the easy 10%. The failures that cost launches are contradictions: canonical says localhost, sitemap advertises /admin, a noindex left over from staging, robots blocking the pages the sitemap lists. This skill reads the relationships.
Activate when
- The product has public pages meant to be found, or launch/domain/redesign is near.
- Titles look like "Vite + React", canonicals or sitemap hosts look wrong, or the site has never been indexed.
- Not for a private/internal product (confirm it is consistently
noindex), not for ranking strategy or keyword research.
Inspect
- Intent. Should this site be indexed? Production origin (scheme, host,
www)? Public vs private routes? Ask only if.readyvibe/context.mdand config do not say (site-reconnaissance). Run the sweep (paths relative to this skill's folder; add
--renderfor client-rendered apps; serve a build locally if needed):node scripts/inspect-metadata.mjs --url <site> --render --private-path /dashboard node scripts/check-links.mjs --url <site> --render # sitemap/canonical target statusRead rendered HTML: frameworks can override tags after hydration. Compare with source (
<Head>,metadataexports,next-seo,react-helmet,index.html) to find where each value comes from, so fixes land in the right place.Relationships to reason about:
Signal A vs. Signal B Problem canonical host production origin localhost/staging/preview host in a canonical (HIGH) sitemap <loc>hostcanonical host search engines get two truths sitemap lists path page is noindexor private routecontradictory signals; private exposure (HIGH for admin/dashboard/api) sitemap lists path robots blocks it unfetchable listing sitemap lists path canonical points elsewhere non-canonical URL listed sitemap lists path returns 404/redirect/soft-404 dead listing ( check-links)robots Sitemap:actual sitemap URL/host wrong or dev sitemap advertised robots Disallow: /production intent whole site blocked (HIGH) robots Disallow: /_next//assets/rendering crawlers cannot render robots lists /adminroute reachable? robots is not access control; hands attackers a map noindexon home/most pageslaunch intent staging leftover (HIGH) x-robots-tagheadermeta robots header may override; check both several pages the same canonical URL ( CANONICAL_DUPLICATE_TARGET)template copied from the home page; tells engines to ignore the rest robots blocks a linked public page ( ROBOTS_BLOCKS_PAGE)page's title, description, and noindexare never readcrawler cannot see it trailing slash / www/httpvariantscanonical + redirects duplicate URL forms - Titles and descriptions: unique per page, specific to the page's content, front-load the topic, roughly 50-60 / 120-160 characters as a guideline (truncation, not a rule); no framework defaults; no keyword stuffing. Derive copy from the page's visible content and product facts; do not invent claims.
- Multi-language:
hreflangpairs, per-language canonicals (withmultilingual-readiness). - JS-only pages: if content appears only after JavaScript and no server rendering or prerender exists, say indexing depends on the crawler executing JS: SOURCE-INDICATED risk, not proven.
Evidence that counts
Label each claim OBSERVED, SOURCE-INDICATED, DECLARED, INFERRED, UNKNOWN, or REVIEW REQUIRED. UNKNOWN is never a pass and never a failure.
- Rendered tag from the running site: OBSERVED. Tag in source only: SOURCE-INDICATED.
- Local checks cannot show what the production CDN redirects, rewrites, or serves. Verify the live URL when one exists; otherwise mark host/redirect behavior UNKNOWN.
- Never state a page "is indexed", "will rank", or "Google will show X"; that needs Search Console (
search-console-readiness).
May change
Set/repair titles, descriptions, canonicals (only once the production origin is known: DECLARED or asked), robots.txt, sitemap.xml or its generator (next-sitemap, app/sitemap.ts, @astrojs/sitemap), noindex on genuinely private routes, removal of private routes from the sitemap, redirects for duplicate URL forms. Preserve intentional owner copy; improve only starter, missing, duplicate, or placeholder values.
Must not claim
"SEO-optimized", "will be indexed", "will rank", "Google-friendly" or a numeric score. Do not claim a sitemap is correct because it exists; correctness is the agreement list above.
Verify
Re-run inspect-metadata and check-links. Pass = no HIGH; every sitemap URL is public, canonical, 200, not noindex, not blocked; every canonical target resolves and is on the production host; no localhost/staging strings remain; robots and sitemap agree. Then spot-check one page in the rendered DOM.
Escalate
Unknown production origin (ask before writing absolute URLs); a private route that is reachable (hand to web-security); site migrations with redirects; sites with several domains or heavy JS rendering where search visibility matters (deep technical SEO is beyond this pass).
No change is valid when
The site is intentionally private and consistently noindex; a one-page site has no sitemap by design; an apparent finding is explained by context (noindex on /dashboard). Do not generate a sitemap or rewrite good copy to hit a length target.
In this repository54 other files it gives its agents.
- wcag-readinessSkill
- admin-audit-logSkill
- admin-authorizationSkill
- admin-dashboardSkill
- payments-readinessSkill
- subscription-readinessSkill
- ai-features-readinessSkill
- analytics-privacySkill
- consent-managementSkill
- consumer-protection-readinessSkill
- cookie-and-storage-auditSkill
- data-flow-mappingSkill
- data-rightsSkill
- email-complianceSkill
- jurisdiction-applicabilitySkill
- legal-identity-noticesSkill
- minors-readinessSkill
- policy-consistencySkill
- privacy-policySkill
- privacy-readinessSkill
- regulated-domain-triggersSkill
- terms-of-serviceSkill
- third-party-privacySkill
- user-content-safetySkill
- compliance-allSkill
- compliance-diffSkill
- design-system-reconnaissanceSkill
- discoverability-allSkill
- launch-allSkill
- launch-verificationSkill
- production-allSkill
- quality-allSkill
- site-reconnaissanceSkill
- trust-allSkill
- search-console-readinessSkill
- social-sharingSkill
- structured-dataSkill
- multilingual-readinessSkill
- rtl-readinessSkill
- content-trustSkill
- error-pagesSkill
- failure-resilienceSkill
- faq-readinessSkill
- forms-readinessSkill
- launch-identitySkill
- legal-navigationSkill
- link-integritySkill
- mobile-readinessSkill
- performance-readinessSkill
- public-supportSkill
- dependency-securitySkill
- deployment-cleanupSkill
- security-headersSkill
- web-securitySkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

