Skip to content

AEO Toolkit skills

Claude Skills that give an agent the full method for Answer Engine Optimization: how to make a site reachable, understandable and citable by ChatGPT, Claude, Perplexity, Gemini, Google AI Overviews and Copilot, implemented in the stack the agent is actually working in.

The MCP servers answer “what is wrong, and how is it performing?” These skills answer “how do I fix it here, and how do I know it worked?” Each one follows the same loop: detect with a rule or tool, decide whether it is really a problem, implement with per-stack recipes, then verify with the same check.

Start with aeo. It reads an audit, orders the work and hands each failing rule to its owner.

Every audit rule has an owner

The scoring engine has 58 rules. rule-map.json assigns each one to exactly one skill, and a test in packages/scoring fails CI if any of these drift:

  • a rule exists without an owning skill
  • a mapped skill does not exist
  • the router’s copy of the map diverges

The skills

SkillFixesUses
aeoRouter: audit → triage → hand offanalyze_website_aeo
Access
aeo-ai-crawler-accessAI bots blocked by robots.txt or a CDN; training vs search botsanalyze_website_aeo
aeo-server-renderingContent that only exists after JavaScript runsanalyze_website_aeo
aeo-llms-txtllms.txt, served without cannibalizing your pagesanalyze_website_aeo
aeo-indexabilitySitemaps, canonicals, noindex, redirects, hreflang, HTTPSgsc_url_inspect, engine_divergence
Identity
aeo-organization-entityOrganization JSON-LD, @id graph, consistent identityanalyze_website_aeo
aeo-article-author-schemaArticle + Person author markupanalyze_website_aeo
aeo-faq-qa-schemaFAQPage / QAPage / HowTo, honestly scopedanalyze_website_aeo
aeo-structured-data-validationInvalid or conflicting structured dataanalyze_website_aeo
aeo-product-schemaProduct / Offer / Review for storesanalyze_website_aeo
aeo-local-business-schemaLocalBusiness, NAP consistency, Business Profilecheck_ai_visibility
Extractability
aeo-answer-first-contentQuestion headings, answer-first paragraphs, depthdiscover_ranking_prompts
aeo-site-structureBreadcrumbs and internal linkinganalyze_website_aeo
aeo-page-metadataTitles, descriptions, Open Graph, lang, viewport, alt textgsc_ctr_gaps
aeo-content-freshnessHonest dates across page, JSON-LD and sitemapgsc_decay
aeo-eeat-trust-signalsAbout, contact, policies, referencesanalyze_website_aeo
Off-site
aeo-citation-earningWhere competitors get cited, mentions, outreachbacklink tools
Measurement
aeo-visibility-trackingPrompt sets, baselines, Perplexity citation sharevisibility tools
aeo-ai-referral-analyticsAI-assistant referral traffic in GA4ga4_run_report
seo-bing-coverageGoogle vs Bing gapsengine_divergence, bing_*
seo-traffic-dropTraffic dropped. What caused it?gsc_traffic_drop
seo-cannibalizationAre my own pages competing?gsc_cannibalization
seo-content-decayWhat content needs refreshing?gsc_decay
seo-high-intent-ctrBuyer-intent searches that rank but lose the clickgsc_ctr_gaps

Implementation recipes live in each skill’s references/ (Next.js, Astro, WordPress, static HTML, and Shopify/WooCommerce where relevant). The agent only loads the one for the stack in front of it.

Install

Skills are plain directories. Copy the ones you want into your skills folder:

Terminal window
# Claude Code, for one project
mkdir -p .claude/skills
cp -r path/to/aeo-toolkit/skills/aeo* .claude/skills/
# or for every project
cp -r path/to/aeo-toolkit/skills/* ~/.claude/skills/

They activate on their own when a request matches the description in the frontmatter. You do not need to name the skill.

MCP servers: helpful, mostly optional

The aeo-* skills work without any MCP server. Each Detect step has a no-MCP fallback, for example curl or view-source. Connecting the servers makes detection and verification faster and more complete. The seo-* and measurement skills read Search Console, GA4, Bing or Perplexity data, and they need the matching server.

ServerEndpointAuth
aeo-visibilityhttps://aeo.advancelabs.dev/api/mcp/ai-visibility/mcpnone
aeo-backlinkhttps://aeo.advancelabs.dev/api/mcp/backlink/mcpnone
aeo-searchhttps://aeo.advancelabs.dev/api/mcp/search/mcpGoogle sign-in; Bing key optional

Setup for each client is at advancelabs.dev/mcp.

On “no API keys” claims. Search Console requires OAuth. Anything promising GSC data with no authentication is either reading an already-authenticated local session or not reading Search Console at all.

What these will not do

  • They don’t promise citations. A fix removes a known blocker. Whether an engine then cites you is measured, not assumed.
  • The visibility tools see one engine. check_ai_visibility and its siblings query Perplexity, so their readings are Perplexity citations, not “AI” in general.
  • They can’t see competitors’ Search Console data. Competitor comparisons use public signals (citations, links) only.
  • They don’t change anything remotely. Every MCP tool is read-only. Code changes happen in your repo, where you can review them.

Contributing a skill

Same bar as the rest of the repo:

  • encode judgement a tool description cannot hold
  • be explicit about what the data cannot answer
  • never assert a cause you can’t evidence
  • date every volatile fact (bot names, Google policies) in a ## Sources section, against a primary source

The frontmatter description decides whether the skill activates, so write it as when to use this (including the phrase “Use when”), not as a title.

Behavioural evals live in evals/skills/<skill>/: a small broken site plus the prompt a user would type. CI checks that every fixture really fails its target rules. To run the agents, use SKILL_EVALS=1 pnpm --filter @advance-labs/chrome-extension exec vitest run src/lib/skill-evals.test.ts. Each run copies the site and only the skill under test into a temp dir, runs claude -p, and re-audits. Add an eval when you add a skill whose rules can be checked on a single page.

Two tests keep the skills honest:

  • packages/scoring/src/skills-map.test.ts here checks rule ownership.
  • A test in the private platform repo checks frontmatter, and checks that every MCP tool a skill names is registered on one of the three servers.

AEO Toolkit is an open-source instrument by Advance Labs.