Not in the top 1,000 by GitHub stars

Hainrixz/claude-seo-ai

The SEO + AI-search (GEO/AEO) optimization toolkit for Claude Code — two-score audit + opt-in fixer. Built for 2026-2027.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/audit/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/compare/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/fix/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/geo/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/score/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-agent-readiness/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-ai-crawlers/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-ai-discovery/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-core-web-vitals/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-crawl-render/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-crawlability/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-ecommerce/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-eeat/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-entity-linking/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-fix-apply/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-freshness/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-geo-answerblocks/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-geo-factdensity/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-headings-structure/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-images-media/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-indexability/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-internal-linking/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-international/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-local/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-meta-onpage/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-mobile/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-orchestrator/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-platform-detect/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-rendering/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-schema-jsonld/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-score/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-sitemaps/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-social-cards/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

skills/seo-vertical-detect/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 0a7ef08986ea

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 0a7ef08986eabfa6452f7055cddb6582d074b9d7

git clone --filter=blob:none --no-checkout https://github.com/Hainrixz/claude-seo-ai.git .hotskills/hainrixz-claude-seo-ai && git -C .hotskills/hainrixz-claude-seo-ai checkout --detach 0a7ef08986eabfa6452f7055cddb6582d074b9d7 # Copy each selected skill directory from .hotskills/hainrixz-claude-seo-ai into .claude/skills/<skill-name>/
83GitHub stars
4stars in 7 days
34skills in this repository
1commit in 30 days

Heat

5.6
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 6, 202683

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

audit

When your agent uses it

Audit a website or web codebase for SEO and AI-search (GEO/AEO) — produces two independent 0-100 scores (Search SEO + AI Visibility) plus a prioritized, evidence-backed report persisted on disk. Read-only; never writes to the project. Use when the user asks to audit, analyze, check, or score a site's SEO, structured data/schema, meta tags, Core Web Vitals, robots.txt, sitemaps, or AI discovery files, or how it ranks in Google and is cited by AI engines (ChatGPT, Perplexity, Google AI Overviews, Gemini, Claude).

What it loads into context

Frontmatter

232 tokens

Always available to the agent

SKILL.md

952 tokens

When the skill is activated

Reference documents

0 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. What to do

Files

  • ../../.claude-plugin/marketplace.jsonasset695 bytes
  • ../../.claude-plugin/plugin.jsonasset4,772 bytes
  • ../../hooks/hooks.jsonasset610 bytes
  • ../../hooks/hooks.jsonasset610 bytes
  • ../../hooks/hooks.jsonasset610 bytes
  • SKILL.mdcore3,653 bytes
Read SKILL.md
<!-- Portions Copyright (c) 2026 Enrique Rocha (@soyenriquerocha) - see LICENSE for original authors · tododeia.com · id er-d03758e1 -->

# /claude-seo-ai:audit

A full, **read-only** SEO + AI-search audit. Never writes to the user's project; artifacts go to `${CLAUDE_PLUGIN_DATA}/runs` (or `--out`).

`$ARGUMENTS` = `<url|path> [flags]`. The target is a URL (`https://…`) or a local web project / built HTML. If no target is given, ask for one. Flags are forwarded verbatim to the orchestrator, which passes them to `audit.mjs`: `--pages N` (pages to sample, default 12) · `--max N` (URLs to consider, default 40) · `--render static|auto|js` (**default `static`** — a headless run never launches a browser unless asked) · `--ua default|googlebot|bingbot|gptbot|oai-searchbot|claude-searchbot` (or a literal UA string) · `--vertical <ids>` (comma list of `saas,blog-publisher,local-business,ecommerce,docs,generic`; omit it to let the run infer one) · `--environment production|preview|staging|local` · `--feed <path>` (a product feed for the ACP lint) · `--out <dir>` (runs root; defaults to `${CLAUDE_PLUGIN_DATA}/runs`).

## What to do
1. Invoke the **seo-orchestrator** skill with the target and all flags. It runs `audit.mjs` once — acquisition (crawl/snapshot → PageSnapshot v2), platform profile, vertical guess and the whole deterministic checks registry in a single call — refines the vertical with **seo-vertical-detect** (`references/routing.md`), dispatches the read-only specialist subagents in parallel with a dispatch envelope, then merges everything back with `report.mjs --merge` and scores.
2. Present, from `report.json`:
   - The two scores — **Search SEO** and **AI Visibility** — each with a band (A–F) and a one-line interpretation. Never blended.
   - A per-category breakdown for each score; **coverage mode** (full vs deterministic-only), the data **tier** reached, and the `needs_api` / `manual_review` counts (score confidence).
   - The **sampling table**: pages crawled by role, templates discovered vs sampled, and every skip with its reason.
   - The **platform profile** (platform/framework/plugins, environment — e.g. "noindex expected on preview").
View the complete source on GitHub

Skills included

  • audit
  • compare
  • fix
  • geo
  • score
  • seo-agent-readiness
  • seo-ai-crawlers
  • seo-ai-discovery
  • seo-core-web-vitals
  • seo-crawl-render
  • seo-crawlability
  • seo-ecommerce
  • seo-eeat
  • seo-entity-linking
  • seo-fix-apply
  • seo-freshness
  • seo-geo-answerblocks
  • seo-geo-factdensity
  • seo-headings-structure
  • seo-images-media
  • seo-indexability
  • seo-internal-linking
  • seo-international
  • seo-local
  • seo-meta-onpage
  • seo-mobile
  • seo-orchestrator
  • seo-platform-detect
  • seo-rendering
  • seo-schema-jsonld
  • seo-score
  • seo-sitemaps
  • seo-social-cards
  • seo-vertical-detect

Repository facts

License
MIT
Created
Jun 1, 2026
Last pushed
Oct 25, 2026
Forks
12
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 6, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 253 notes
  • hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/audit.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/audit.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/audit.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/compare.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/snapshot.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/snapshot.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/snapshot.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/snapshot.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/snapshot.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/compare/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/fix-plan.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/fix-plan.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/fix-plan.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/fix-plan.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/fix-plan.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/fix-plan.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/fix-plan.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/fix-ticket.mjs:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 461 signals by file

.claude-plugin/marketplace.json

  • Network accessline 1
    {   "$schema": "https://json.schemastore.org/claude-code-plugin-marketplace.json",
  • Network accessline 2
    "$schema": "https://json.schemastore.org/claude-code-plugin-marketplace.json",

.claude-plugin/plugin.json

  • Network accessline 1
    {   "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
  • Network accessline 2
    "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
  • Network accessline 9
    "email": "enriqueers98@gmail.com"   },   "homepage": "https://github.com/Hainrixz/claude-seo-ai",
  • Network accessline 10
    },   "homepage": "https://github.com/Hainrixz/claude-seo-ai",   "repository": "https://github.com/Hainrixz/claude-seo-ai",
  • Network accessline 11
    "homepage": "https://github.com/Hainrixz/claude-seo-ai",
  • Network accessline 12
    "repository": "https://github.com/Hainrixz/claude-seo-ai",
  • Access to secretsline 42
    [Credential-related source omitted]
  • Access to secretsline 83
    [Credential-related source omitted]
  • Network accessline 95
    "type": "string",       "title": "Ghost site URL",       "description": "https://blog.example.com — the Admin API lives under /ghost/api/admin/."
  • Network accessline 96
    "title": "Ghost site URL",       "description": "https://blog.example.com — the Admin API lives under /ghost/api/admin/."     },
  • Network accessline 97
    "description": "https://blog.example.com — the Admin API lives under /ghost/api/admin/."
  • Access to secretsline 122
    [Credential-related source omitted]

scripts/acp-feed-lint.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Possible obfuscationline 40
    const src = String(input == null ? '' : input).replace(/^<U+FEFF>/, '');
  • Possible obfuscationline 79
    const lines = String(input == null ? '' : input).replace(/^<U+FEFF>/, '').split(/\r?\n/);
  • Possible obfuscationline 97
    const first = String(input || '').replace(/^<U+FEFF>/, '').split(/\r?\n/).find((l) => l.trim());

scripts/agent-readiness.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 11
    // verbatim in `not_checkable_static` instead of being silently skipped. // // Usage: node agent-readiness.mjs --url https://example.com/page
  • Network accessline 12
    // // Usage: node agent-readiness.mjs --url https://example.com/page //        node agent-readiness.mjs --file ./page.html [--url <page url>] [--m4 ./render.json]
  • Network accessline 13
    // Usage: node agent-readiness.mjs --url https://example.com/page

scripts/ai-discovery.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 8
    // are written for. Every finding built from this output is speculative or directional. // // Usage: node ai-discovery.mjs --url https://example.com          (probes the origin)
  • Network accessline 8
    // are written for. Every finding built from this output is speculative or directional. // // Usage: node ai-discovery.mjs --url https://example.com          (probes the origin)
  • Network accessline 9
    // // Usage: node ai-discovery.mjs --url https://example.com          (probes the origin) //        node ai-discovery.mjs --run-dir <run>                    (reads <run>/site/discovery.json)
  • Network accessline 9
    // // Usage: node ai-discovery.mjs --url https://example.com          (probes the origin) //        node ai-discovery.mjs --run-dir <run>                    (reads <run>/site/discovery.json)
  • Network accessline 10
    // Usage: node ai-discovery.mjs --url https://example.com          (probes the origin)
  • Network accessline 10
    // Usage: node ai-discovery.mjs --url https://example.com          (probes the origin)
  • Network accessline 53
    *   - a broken `](` pair anywhere in the bullet, or  *   - a URL/`[` at the head of the bullet, or at the head of what follows a short `Label:` prefix  *     (`- Docs: https://…` is the classic un-bracketed link, not a sentence).
  • Network accessline 53
    *   - a broken `](` pair anywhere in the bullet, or  *   - a URL/`[` at the head of the bullet, or at the head of what follows a short `Label:` prefix  *     (`- Docs: https://…` is the classic un-bracketed link, not a sentence).
  • Network accessline 54
    *   - a URL/`[` at the head of the bullet, or at the head of what follows a short `Label:` prefix  *     (`- Docs: https://…` is the classic un-bracketed link, not a sentence).  * A URL that merely appears inside a sentence — or inside a ba
  • Network accessline 54
    *   - a URL/`[` at the head of the bullet, or at the head of what follows a short `Label:` prefix  *     (`- Docs: https://…` is the classic un-bracketed link, not a sentence).  * A URL that merely appears inside a sentence — or inside a ba
  • Network accessline 55
    *     (`- Docs: https://…` is the classic un-bracketed link, not a sentence).
  • Network accessline 55
    *     (`- Docs: https://…` is the classic un-bracketed link, not a sentence).
  • Network accessline 488
    let origin;     try { origin = new URL(urlFlag.trim()).origin; }     catch { return { result: { error: 'invalid --url ' + urlFlag, hint: 'include the scheme, e.g. https://example.com' }, code: EXIT.USAGE }; }
  • Network accessline 488
    let origin;     try { origin = new URL(urlFlag.trim()).origin; }     catch { return { result: { error: 'invalid --url ' + urlFlag, hint: 'include the scheme, e.g. https://example.com' }, code: EXIT.USAGE }; }
  • Network accessline 489
    try { origin = new URL(urlFlag.trim()).origin; }     catch { return { result: { error: 'invalid --url ' + urlFlag, hint: 'include the scheme, e.g. https://example.com' }, code: EXIT.USAGE }; }     source = 'http';
  • Network accessline 489
    try { origin = new URL(urlFlag.trim()).origin; }     catch { return { result: { error: 'invalid --url ' + urlFlag, hint: 'include the scheme, e.g. https://example.com' }, code: EXIT.USAGE }; }     source = 'http';
  • Network accessline 490
    catch { return { result: { error: 'invalid --url ' + urlFlag, hint: 'include the scheme, e.g. https://example.com' }, code: EXIT.USAGE }; }
  • Network accessline 490
    catch { return { result: { error: 'invalid --url ' + urlFlag, hint: 'include the scheme, e.g. https://example.com' }, code: EXIT.USAGE }; }

scripts/ai-eligibility.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 12
    // verdict for Googlebot on this URL — and states what is unknown instead of guessing. // // Usage: node ai-eligibility.mjs --url https://example.com/page
  • Network accessline 13
    // // Usage: node ai-eligibility.mjs --url https://example.com/page //        node ai-eligibility.mjs --file ./page.html [--url <page url>] [--robots ./robots.txt]
  • Network accessline 14
    // Usage: node ai-eligibility.mjs --url https://example.com/page
  • Network accessline 214
    /** Locate a robots source: --robots <file>, the snapshot's run dir, or a live fetch (url mode). */

scripts/audit.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Access to secretsline 122
    [Credential-related source omitted]
  • Access to secretsline 122
    [Credential-related source omitted]
  • Access to secretsline 352
    [Credential-related source omitted]
  • Access to secretsline 352
    [Credential-related source omitted]

scripts/check-answerblocks.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 6
    // judgment stays a manual_review pass; this provides the reproducible counts. // // Usage: node check-answerblocks.mjs --url https://example.com/post [--lang en|es|auto]
  • Network accessline 7
    // // Usage: node check-answerblocks.mjs --url https://example.com/post [--lang en|es|auto] //        node check-answerblocks.mjs --file ./post.html [--url <page url>] [--lang en|es|auto]
  • Network accessline 8
    // Usage: node check-answerblocks.mjs --url https://example.com/post [--lang en|es|auto]

scripts/check-freshness.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 6
    // HTTP Last-Modified header, plus content age. Never used to backdate anything. // // Usage: node check-freshness.mjs --url https://example.com/post [--lang en|es|auto]
  • Network accessline 7
    // // Usage: node check-freshness.mjs --url https://example.com/post [--lang en|es|auto] //        node check-freshness.mjs --file ./post.html [--url <page url>] [--lang en|es|auto]
  • Network accessline 8
    // Usage: node check-freshness.mjs --url https://example.com/post [--lang en|es|auto]

scripts/checks/_shared.mjs

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

scripts/compare.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable

scripts/crawl.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 163
    /** `<url>` | `--url <u>` | a bare host (`example.com` → `https://example.com/`). */

scripts/detect-platform.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 12
    // Usage: //   node detect-platform.mjs --snapshot <run>/pages/<slug>.json [--path <project>] [--probe] //   node detect-platform.mjs --url https://example.com [--path <project>] [--probe]
  • Network accessline 13
    //   node detect-platform.mjs --snapshot <run>/pages/<slug>.json [--path <project>] [--probe] //   node detect-platform.mjs --url https://example.com [--path <project>] [--probe] //   node detect-platform.mjs --path <project>
  • Network accessline 14
    //   node detect-platform.mjs --url https://example.com [--path <project>] [--probe]

scripts/factdensity.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 6
    // (is a claim "strong"? is a source "authoritative"?) stay manual_review. // // Usage: node factdensity.mjs --url https://example.com/post [--lang en|es|auto]
  • Network accessline 7
    // // Usage: node factdensity.mjs --url https://example.com/post [--lang en|es|auto] //        node factdensity.mjs --file ./post.html [--url <page url>] [--lang en|es|auto]
  • Network accessline 8
    // Usage: node factdensity.mjs --url https://example.com/post [--lang en|es|auto]

scripts/fix-plan.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable

scripts/fix-ticket.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable

scripts/gsc-ai-import.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Possible obfuscationline 39
    const strip = (s) => String(s == null ? '' : s).replace(/^<U+FEFF>/, '').replace(/^"+|"+$/g, '').trim();
  • Possible obfuscationline 176
    const first = String(text).replace(/^<U+FEFF>/, '').split(/\r?\n/).find((l) => l.trim()) || '';

scripts/guard-bash.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Access to secretsline 7
    [Credential-related source omitted]
  • Dangerous shell operationline 61
    const MAYBE = /(shopify|wp[\s.]|wp$|curl|wget|node\s+-{1,2}e|adapters[\\/]|\btee\b|>)/i;
  • Network accessline 66
    *  * A bare `&` is NOT a separator here. It is the character that joins query-string parameters, and  * splitting on it tore `curl "https://shop.myshopify.com/admin/api/2026-07/x.json?a=1&b=2" -X POST`
  • Network accessline 67
    * A bare `&` is NOT a separator here. It is the character that joins query-string parameters, and  * splitting on it tore `curl "https://shop.myshopify.com/admin/api/2026-07/x.json?a=1&b=2" -X POST`  * in half: the piece carrying the API ho
  • Network accessline 68
    * splitting on it tore `curl "https://shop.myshopify.com/admin/api/2026-07/x.json?a=1&b=2" -X POST`

scripts/hreflang-check.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 5
    // Audit hreflang annotations (HTML <link> tags ∪ HTTP Link header). Backs M20 (international). // // Usage: node hreflang-check.mjs --url https://example.com/page
  • Network accessline 6
    // // Usage: node hreflang-check.mjs --url https://example.com/page //        node hreflang-check.mjs --file ./page.html [--url <self>]
  • Network accessline 7
    // Usage: node hreflang-check.mjs --url https://example.com/page
  • Network accessline 8
    //        node hreflang-check.mjs --file ./page.html [--url <self>] //        node hreflang-check.mjs --url https://example.com/page --deep [--budget 25] [--ua <preset>]   (fetch alternates, check reciprocity) // Exit codes: 0 ok · 1 usage 
  • Network accessline 9
    //        node hreflang-check.mjs --url https://example.com/page --deep [--budget 25] [--ua <preset>]   (fetch alternates, check reciprocity)

scripts/lib/bands.mjs

  • Executable scriptline 1
    Executable file

scripts/link-graph.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 5
    // Analyze internal linking. Backs M10 (internal linking & semantics). // // Usage: node link-graph.mjs --url https://example.com/page        (single-page link profile)
  • Network accessline 6
    // // Usage: node link-graph.mjs --url https://example.com/page        (single-page link profile) //        node link-graph.mjs --url https://example.com --crawl [--max 25] [--max-depth 3] [--no-robots] [--ua <preset>]
  • Network accessline 7
    // Usage: node link-graph.mjs --url https://example.com/page        (single-page link profile)
  • Network accessline 8
    //        node link-graph.mjs --url https://example.com --crawl [--max 25] [--max-depth 3] [--no-robots] [--ua <preset>]
  • Network accessline 9
    //        node link-graph.mjs --file ./page.html --base https://example.com

scripts/parse-html.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 6
    // Backs verification for M7 (title/meta/headings), M8 (social), M9 (images), M10 (links). // // Usage: node parse-html.mjs --url https://example.com
  • Network accessline 6
    // Backs verification for M7 (title/meta/headings), M8 (social), M9 (images), M10 (links). // // Usage: node parse-html.mjs --url https://example.com
  • Network accessline 6
    // Backs verification for M7 (title/meta/headings), M8 (social), M9 (images), M10 (links). // // Usage: node parse-html.mjs --url https://example.com
  • Network accessline 6
    // Backs verification for M7 (title/meta/headings), M8 (social), M9 (images), M10 (links). // // Usage: node parse-html.mjs --url https://example.com
  • Network accessline 7
    // // Usage: node parse-html.mjs --url https://example.com //        node parse-html.mjs --file ./index.html [--url https://example.com/page]   (--url gives the page URL for canonical checks)
  • Network accessline 7
    // // Usage: node parse-html.mjs --url https://example.com //        node parse-html.mjs --file ./index.html [--url https://example.com/page]   (--url gives the page URL for canonical checks)
  • Network accessline 7
    // // Usage: node parse-html.mjs --url https://example.com //        node parse-html.mjs --file ./index.html [--url https://example.com/page]   (--url gives the page URL for canonical checks)
  • Network accessline 7
    // // Usage: node parse-html.mjs --url https://example.com //        node parse-html.mjs --file ./index.html [--url https://example.com/page]   (--url gives the page URL for canonical checks)
  • Network accessline 8
    // Usage: node parse-html.mjs --url https://example.com
  • Network accessline 8
    // Usage: node parse-html.mjs --url https://example.com
  • Network accessline 8
    // Usage: node parse-html.mjs --url https://example.com
  • Network accessline 8
    // Usage: node parse-html.mjs --url https://example.com
  • Network accessline 9
    //        node parse-html.mjs --file ./index.html [--url https://example.com/page]   (--url gives the page URL for canonical checks)
  • Network accessline 9
    //        node parse-html.mjs --file ./index.html [--url https://example.com/page]   (--url gives the page URL for canonical checks)
  • Network accessline 9
    //        node parse-html.mjs --file ./index.html [--url https://example.com/page]   (--url gives the page URL for canonical checks)
  • Network accessline 9
    //        node parse-html.mjs --file ./index.html [--url https://example.com/page]   (--url gives the page URL for canonical checks)

scripts/parse-robots-sitemap.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 6
    // sitemap of a site. Backs M1 (crawlability), M14 (AI crawlers), M17 (sitemaps). // // Usage: node parse-robots-sitemap.mjs --url https://example.com/some/page   (robots + verdicts for that path + all sitemaps)
  • Network accessline 6
    // sitemap of a site. Backs M1 (crawlability), M14 (AI crawlers), M17 (sitemaps). // // Usage: node parse-robots-sitemap.mjs --url https://example.com/some/page   (robots + verdicts for that path + all sitemaps)
  • Network accessline 6
    // sitemap of a site. Backs M1 (crawlability), M14 (AI crawlers), M17 (sitemaps). // // Usage: node parse-robots-sitemap.mjs --url https://example.com/some/page   (robots + verdicts for that path + all sitemaps)
  • Network accessline 7
    // // Usage: node parse-robots-sitemap.mjs --url https://example.com/some/page   (robots + verdicts for that path + all sitemaps) //        node parse-robots-sitemap.mjs --url https://example.com --path /pricing   (override the audited path
  • Network accessline 7
    // // Usage: node parse-robots-sitemap.mjs --url https://example.com/some/page   (robots + verdicts for that path + all sitemaps) //        node parse-robots-sitemap.mjs --url https://example.com --path /pricing   (override the audited path
  • Network accessline 7
    // // Usage: node parse-robots-sitemap.mjs --url https://example.com/some/page   (robots + verdicts for that path + all sitemaps) //        node parse-robots-sitemap.mjs --url https://example.com --path /pricing   (override the audited path
  • Network accessline 8
    // Usage: node parse-robots-sitemap.mjs --url https://example.com/some/page   (robots + verdicts for that path + all sitemaps)
  • Network accessline 8
    // Usage: node parse-robots-sitemap.mjs --url https://example.com/some/page   (robots + verdicts for that path + all sitemaps)
  • Network accessline 8
    // Usage: node parse-robots-sitemap.mjs --url https://example.com/some/page   (robots + verdicts for that path + all sitemaps)
  • Network accessline 9
    //        node parse-robots-sitemap.mjs --url https://example.com --path /pricing   (override the audited path)
  • Network accessline 9
    //        node parse-robots-sitemap.mjs --url https://example.com --path /pricing   (override the audited path)
  • Network accessline 9
    //        node parse-robots-sitemap.mjs --url https://example.com --path /pricing   (override the audited path)
  • Network accessline 10
    //        node parse-robots-sitemap.mjs --robots https://example.com/robots.txt
  • Network accessline 10
    //        node parse-robots-sitemap.mjs --robots https://example.com/robots.txt
  • Network accessline 10
    //        node parse-robots-sitemap.mjs --robots https://example.com/robots.txt
  • Network accessline 11
    //        node parse-robots-sitemap.mjs --sitemap https://example.com/sitemap.xml
  • Network accessline 11
    //        node parse-robots-sitemap.mjs --sitemap https://example.com/sitemap.xml
  • Network accessline 11
    //        node parse-robots-sitemap.mjs --sitemap https://example.com/sitemap.xml

scripts/probe-report.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

scripts/psi-client.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 6
    // Field (CrUX, p75) data is what Google ranks on; lab data is labeled separately. // // Usage: node psi-client.mjs --url https://example.com [--strategy mobile|desktop] [--timeout 60000]
  • Network accessline 7
    // // Usage: node psi-client.mjs --url https://example.com [--strategy mobile|desktop] [--timeout 60000] //        (a key is optional but recommended; without network/key the result is status:"needs_api")
  • Network accessline 8
    // Usage: node psi-client.mjs --url https://example.com [--strategy mobile|desktop] [--timeout 60000]
  • Access to secretsline 11
    [Credential-related source omitted]
  • Access to secretsline 59
    [Credential-related source omitted]
  • Network accessline 61
    const api = new URL('https://www.googleapis.com/pagespeedonline/v5/runPagespeed');
  • Access to secretsline 76
    [Credential-related source omitted]

scripts/report.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable

scripts/score.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable

scripts/snapshot.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable

scripts/ua-diff.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 10
    // UA can be refused for legitimate reasons, so every finding built on this output is directional. // // Usage: node ua-diff.mjs --url https://example.com/page
  • Network accessline 10
    // UA can be refused for legitimate reasons, so every finding built on this output is directional. // // Usage: node ua-diff.mjs --url https://example.com/page
  • Network accessline 11
    // // Usage: node ua-diff.mjs --url https://example.com/page //        node ua-diff.mjs --url <u> --ua default,googlebot,gptbot [--run-dir <run>] [--timeout 20000]
  • Network accessline 11
    // // Usage: node ua-diff.mjs --url https://example.com/page //        node ua-diff.mjs --url <u> --ua default,googlebot,gptbot [--run-dir <run>] [--timeout 20000]
  • Network accessline 12
    // Usage: node ua-diff.mjs --url https://example.com/page
  • Network accessline 12
    // Usage: node ua-diff.mjs --url https://example.com/page

scripts/validate-jsonld.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env node
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 6
    // M18 (Product), M19 (LocalBusiness), M13 (dates). // // Usage: node validate-jsonld.mjs --url https://example.com [--type Article] [--type Product]
  • Network accessline 6
    // M18 (Product), M19 (LocalBusiness), M13 (dates). // // Usage: node validate-jsonld.mjs --url https://example.com [--type Article] [--type Product]
  • Network accessline 6
    // M18 (Product), M19 (LocalBusiness), M13 (dates). // // Usage: node validate-jsonld.mjs --url https://example.com [--type Article] [--type Product]
  • Network accessline 6
    // M18 (Product), M19 (LocalBusiness), M13 (dates). // // Usage: node validate-jsonld.mjs --url https://example.com [--type Article] [--type Product]
  • Network accessline 7
    // // Usage: node validate-jsonld.mjs --url https://example.com [--type Article] [--type Product] //        node validate-jsonld.mjs --file ./page.html
  • Network accessline 7
    // // Usage: node validate-jsonld.mjs --url https://example.com [--type Article] [--type Product] //        node validate-jsonld.mjs --file ./page.html
  • Network accessline 7
    // // Usage: node validate-jsonld.mjs --url https://example.com [--type Article] [--type Product] //        node validate-jsonld.mjs --file ./page.html
  • Network accessline 7
    // // Usage: node validate-jsonld.mjs --url https://example.com [--type Article] [--type Product] //        node validate-jsonld.mjs --file ./page.html
  • Network accessline 8
    // Usage: node validate-jsonld.mjs --url https://example.com [--type Article] [--type Product]
  • Network accessline 8
    // Usage: node validate-jsonld.mjs --url https://example.com [--type Article] [--type Product]
  • Network accessline 8
    // Usage: node validate-jsonld.mjs --url https://example.com [--type Article] [--type Product]
  • Network accessline 8
    // Usage: node validate-jsonld.mjs --url https://example.com [--type Article] [--type Product]

skills/audit/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash, Agent
  • Network accessline 13
    `$ARGUMENTS` = `<url|path> [flags]`. The target is a URL (`https://…`) or a local web project / built HTML. If no target is given, ask for one. Flags are forwarded verbatim to the orchestrator, which passes them to `audit.mjs`: `--pages N` 

skills/compare/SKILL.md

  • Broad permissionsline 1
    Read, Glob, Bash(node "${CLAUDE_PLUGIN_ROOT}/scripts/*"), WebSearch

skills/fix/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, Bash, Agent
  • Network accessline 135
    framework site gets its per-resource fixes through the platform adapter and everything else   through `instructions`, plus an offer to re-run with `--project <dir>` for source edits. - **Local framework project**: the audit may have run aga
  • Network accessline 136
    through `instructions`, plus an offer to re-run with `--project <dir>` for source edits. - **Local framework project**: the audit may have run against `http://localhost:3000` or built   output, while the fix edits **source** through `route-
  • Network accessline 137
    - **Local framework project**: the audit may have run against `http://localhost:3000` or built

skills/geo/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, WebSearch, Bash, Agent
  • Network accessline 26
    { "host": "example.com",      "queries": [ { "query": "best sustainable running shoes",                     "results": [ { "rank": 1, "url": "https://…", "title": "…" } ] } ] }
  • Network accessline 28
    "results": [ { "rank": 1, "url": "https://…", "title": "…" } ] } ] }

skills/score/SKILL.md

  • Broad permissionsline 1
    Read, Bash

skills/seo-agent-readiness/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, Bash

skills/seo-ai-crawlers/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-ai-discovery/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, Bash

skills/seo-core-web-vitals/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash
  • Access to secretsline 27
    [Credential-related source omitted]

skills/seo-crawl-render/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, Bash
  • Network accessline 36
    Site artifacts are built once per run: `site/robots.json` (parsed REP + per-bot verdicts), `site/sitemaps.json` (index BFS, gzip, lastmod stats) + `site/sitemap-urls.txt`, `site/discovery.json` (probes for `/llms.txt`, `/llms-full.txt`, `/a

skills/seo-crawlability/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-ecommerce/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-eeat/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-entity-linking/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-freshness/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-geo-answerblocks/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-geo-factdensity/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-headings-structure/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-images-media/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-indexability/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-internal-linking/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-international/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-local/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-meta-onpage/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-mobile/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-orchestrator/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash(node "${CLAUDE_PLUGIN_ROOT}/scripts/*"), Bash(mkdir -p "${CLAUDE_PLUGIN_DATA}/runs/*"), Bash(cat > "${CLAUDE_PLUGIN_DATA}/runs/*"), Agent

skills/seo-platform-detect/SKILL.md

  • Broad permissionsline 1
    Read, Bash(node "${CLAUDE_PLUGIN_ROOT}/scripts/*")

skills/seo-rendering/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-schema-jsonld/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-score/SKILL.md

  • Broad permissionsline 1
    Read, Bash

skills/seo-sitemaps/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

skills/seo-social-cards/SKILL.md

  • Broad permissionsline 1
    Read, Grep, Glob, WebFetch, Bash

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 2 facts
  • Contacts www.googleapis.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/psi-client.mjs:61High confidence
  • Allows Bash without restrictions, though it has no scripts or shell blocksaudit/SKILL.md:5High confidence
Signal confidence: 447 facts

and 397 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/audit/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/audit/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/audit/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/audit/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/audit/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.