geo — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited geo (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.
<!-- Portions Copyright (c) 2026 Enrique Rocha (@soyenriquerocha) - see LICENSE for original authors · tododeia.com · id er-d03758e1 -->
The AI-search (GEO/AEO) subset of the audit. Read-only.
$ARGUMENTS = <url|path> [flags]. --pages N, --render static|auto|js (default static) and --feed <path> (the Agentic Commerce Protocol product feed; it only does anything when the e-commerce vertical is active, and without it M18.agentic.acp_feed_errors stays needs_api — an unread feed is never a clean feed) are forwarded to the orchestrator and reach audit.mjs unchanged. --probe and --gsc-ai-export are handled here, not by audit.mjs: they are probes — reported, never scored (severity 0, excluded from the AI Visibility score and from every cap).
report.json: the AI Visibility score (band + interpretation), the citability breakdown by category, needs_api / manual_review counts, the prioritized GEO/AEO actions, any probes section (clearly separated from the score), and the report.md path.ai_eligibility). Remind the user that M21 — llms.txt and the other discovery files — is reported at weight 0 (Google Search ignores llms.txt; vendor support is partial). Never write files; offer /claude-seo-ai:fix for the safe AUTO fixes (e.g. the AI-crawler robots.txt preset).--probe "<question>" — web-search presence (repeatable)A rough proxy for "does this site show up when someone asks this?", built from one search engine at one moment. It is not citation data.
--probe question, call WebSearch with the question verbatim. Do not rewrite it, do not add the brand name, and do not run extra queries the user did not ask for.rank is the 1-based position in that result list, url and title are copied verbatim, and host is the audited site's hostname: { "host": "example.com",
"queries": [ { "query": "best sustainable running shoes",
"results": [ { "rank": 1, "url": "https://…", "title": "…" } ] } ] }--out saves the probe inside the run directory, which is where report.mjs picks it up as probes.web_search: node "${CLAUDE_PLUGIN_ROOT}/scripts/probe-report.mjs" --host <host> \
--out "<run_dir>/probes/web-search.json" [--history <dir>] <<'JSON'
{ "host": "…", "queries": [ … ] }
JSON--results <file.json> reads the same JSON from a file instead of stdin.
disclaimer field verbatim — echo the string the script emits (DISCLAIMER in scripts/probe-report.mjs, also written into report.json and report.md), never a paraphrase of it, so the model's prose and the machine-generated line beside it cannot disagree. Today that string reads: "Web-search presence for these questions. This is NOT AI Overview, AI Mode, ChatGPT, or Perplexity citation data — no vendor exposes that. Indexing/retrievability is a documented precondition for Google AI features; presence here is necessary, not sufficient."M14.probe.web_presence, severity 0, method web_search_probe. Never let a probe change the AI Visibility score, and never describe a rank as a ranking measurement — WebSearch results are personalized, localized, and volatile.--gsc-ai-export <csv> — Search Console generative-AI import node "${CLAUDE_PLUGIN_ROOT}/scripts/gsc-ai-import.mjs" --csv <file.csv> [--host <host>] [--history <dir>] \
> "<run_dir>/probes/gsc-generative-ai.json"The script prints the import and writes nothing itself, so redirect it into the run's probes/ directory — that is what makes report.mjs report it under probes.gsc_generative_ai at data tier 2.
M14.gsc_ai.impressions_present (the export shows generative-AI impressions for this property), M14.gsc_ai.zero_impressions (the export parsed but contains none), M14.gsc_ai.unavailable (needs_api — no export supplied, or the file could not be parsed; the default state).Both probe sections live beside the score, never inside it. If the user asks "did my AI visibility go up?", the honest answer is that these are proxies and the score is a structural assessment — the two are reported separately for exactly that reason. Respond in the user's language (EN/ES).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.