Apps

valhalla.md

a universal seo skill for claude code — 25 sub-skills and 18 sub-agents across technical seo, schema, geo/aeo, backlinks, local seo, and reporting.

Version
v3.1.0
jul 23, 2026
Stars
1
on GitHub
Category
agent skill
Developer
justin06lee
Language
Python
License
MIT
Runs on
web, claude code

Claude SEO is an open-source SEO analysis plugin for Claude Code. It runs 26 sub-skills and 18 specialist agents in parallel across technical SEO, content quality (E-E-A-T), Schema.org markup, AI search optimization (GEO), local SEO, e-commerce, and international SEO. Every audit produces a prioritized action plan with testable recommendations grounded in primary-source guidance from Google.

⚔️ Valhalla — one command, everything. This fork adds a single front-door skill. Install it and use /valhalla:

bmo add justin06lee/valhalla.md # installs one skill: valhalla
/valhalla audit this codebase and fix all the SEO

No sub-commands, no per-skill decisions. Valhalla perceives your project, decides which of the 26 SEO disciplines apply, fans out specialists in parallel, and applies every relevant fix to the source on a feat/seo-pass branch — then hands you one diff to merge or revert. The full toolkit below is what it drives internally; you never have to touch it directly.

This is a fork. justin06lee/valhalla.md is a distribution of AgriciDaniel/claude-seo by Daniel Agrici, MIT licensed, with all upstream authorship and contributor credit intact. It adds the valhalla one-command autopilot and packages the project so each skill carries its own runtime. Upstream remains the place to follow the project itself.

What’s New

Version History

Version 3.1.0v3.1.0 — auto-setup + repo renamed to valhalla.mdjul 23, 2026

[3.1.0] - 2026-07-22

Added

  • Automatic setup. Valhalla now checks runtime readiness and runs claude-seo setup itself when needed, so the user never types a setup command. A run proceeds even if setup cannot complete, because the perceive scanner is stdlib-only and the core of the pass is Claude reading and editing source; unavailable heavier scripts are noted in the report.

Changed

  • Repository renamed to valhalla.md. The canonical source is now justin06lee/valhalla.md; the bmo install is bmo add justin06lee/valhalla.md. All repository URLs (badges, installers, docs, manifests) were updated; upstream attribution to AgriciDaniel/claude-seo is unchanged. GitHub redirects the old path, so existing installs keep working.
Show version history
  1. Version 3.0.0v3.0.0 — Valhalla: one command, everythingjul 23, 2026

    [3.0.0] - 2026-07-22

    Valhalla release. Adds a single-command front door and renames the plugin identity. Full suite: 480 passing tests.

    Added

    • Valhalla — a root SKILL.md (name: valhalla) that is the one-command entry point. bmo add justin06lee/claude-seo.bmo (bare, no subpath) now installs a single valhalla skill: the whole toolkit ships as knowledge Valhalla drives internally, so the user gets exactly one command, /valhalla, which runs the full autonomous SEO pass over a codebase. A .bmoignore keeps that single-skill install lean.

    Changed

    • BREAKING: plugin identity renamed to valhalla. plugin.json name and the marketplace slug are now valhalla / justin06lee-valhalla; plugin install is /plugin install valhalla@justin06lee-valhalla. The discipline skills are unchanged and, via a plugin or …/skills --all install, still register individually (/seo audit, etc.).
    • README leads with the Valhalla one-command install; the granular skills are documented as the advanced path.

    Notes

    • Two install shapes coexist from one tree: bare bmo add → single valhalla skill; plugin or …/skills --all → the 26 discipline skills registered individually. The plugin loader ignores the root SKILL.md because a skills/ directory is present.
  2. Version 2.5.0v2.5.0 — /seo everything autopilotjul 23, 2026

    [2.5.0] - 2026-07-22

    Feature release: an autonomous full-project SEO autopilot. Full suite: 480 passing tests.

    Added

    • /seo everything [path] — a new seo-everything skill that takes a codebase from wherever it is to as SEO-complete as the project allows, with no per-skill decisions from the user. It perceives the project with a deterministic scanner (seo_inventory.py: framework + router, routes, existing SEO surface, business type), decides which disciplines apply, fans out read-only specialists in parallel, then applies every relevant fix to the source on a feat/seo-pass branch — idempotently, idiomatically for the framework, without breaking the build — and leaves one diff to review. Three references cover per-framework SEO placement, the signal-to-discipline relevance matrix, and apply safety (git isolation, never fabricate a fact, never touch secrets or build output, honor the Google-currency guardrails).
    • seo_inventory.py: a stdlib-only, read-only codebase SEO scanner, covered by 16 tests.
  3. Version 2.4.0v2.4.0 — scheduled drift, portfolio view, hydration fixjul 23, 2026

    [2.4.0] - 2026-07-22

    Feature release: scheduled/CI drift monitoring, a cross-site portfolio dashboard, and a renderer that hydrates scroll- and interaction-gated content. Full suite: 464 passing tests.

    Added

    • Scheduled / CI drift runner (drift_ci.py). Watches a list of URLs non-interactively, seeds baselines on first sight, compares afterward, and exits non-zero when a severity threshold is breached, so cron or CI fails on SEO regression like a broken test. JUnit output for CI display; CLAUDE_SEO_DRIFT_DIR gives reproducible baselines across runners. New skill command /seo drift ci and a references/ci-integration.md workflow guide.
    • Cross-site portfolio dashboard (portfolio_report.py). Aggregates the audit-data.json each audit writes under {domain}-audit/ into one standalone HTML view: sites ranked worst-first by health score, findings totaled by severity, issues that recur across sites surfaced as fix-once candidates, and per-site score deltas against a previous snapshot.

    Changed

    • Renderer hydration. render_page.py gains a settle strategy applied after navigation: scroll (the new default) walks the page to fire IntersectionObserver and scroll-bound hydration, network adds a bounded network-idle wait for race-prone widget mounts, and opt-in --reveal-hidden expands <details> and aria-expanded tab/accordion controls without following links or submitting forms. Closes the documented false negatives for below-the-fold and interaction-gated content. Result adds settle_strategy, scroll_passes, and revealed_elements; verified against real headless Chromium.
  4. Version 2.3.0v2.3.0 — self-contained seo skilljul 22, 2026

    [2.3.0] - 2026-07-21

    Fork release. This repository is a distribution of AgriciDaniel/claude-seo; upstream authorship, the MIT license, and contributor credit are unchanged. Full suite: 415 passing tests.

    Changed

    • The seo skill now carries its own runtime. scripts/, agents/, schema/, pdf/, data/, bin/, and requirements.txt moved into skills/seo/, which is the directory the runtime already treated as its root. Installing that one folder now yields a working whole, which is what makes skill-granularity installation possible.
    • .claude-plugin/plugin.json declares all 18 subagents explicitly. Claude Code's agents key takes file paths and replaces the default agents/ scan, so a subagent that is not listed does not exist for plugin users; a test pins the list to disk.
    • bin/claude-seo at the repository root is now a shim that execs the launcher inside the skill. Claude Code adds only <plugin-root>/bin to PATH and offers no manifest field to relocate it, so the shim is what keeps the command working for plugin installs.
    • Distribution pointers (repository URLs, marketplace slug, installer tag) name this fork. hooks/ stays at the plugin root, where it is auto-discovered.
    • CLAUDE.md documents the fork's actual single-remote topology. The previous public/private two-remote workflow described a setup this repository does not have, and docs/WORKFLOW-public-private.md was removed with it.

    Added

    • Installation via bmo: bmo add justin06lee/claude-seo.bmo/skills --all installs all 25 skills and their 18 subagents in one command.

    Fixed

    • The runtime resolves its version in a skill-folder install, where no plugin manifest is present, by reading the enclosing plugin root when nested in one and otherwise the version the skill declares in its own frontmatter.

Information

Developer
justin06lee
Category
agent skill, claude code, python, seo
Compatibility
web, claude code
Language
Python
License
MIT
Updated
aug 31, 2026
Year
2026

More by justin06lee

  • thehifzproject.com

    an app & website to memorize the quran with spaced repetition.

    open
  • lanyard

    a floating name tag for whichever claude code session you're currently…

    open
  • themephile.dev

    a visual syntax-theme editor — design a theme in your browser and…

    open
  • betterboard

    an infinite whiteboard desktop app for pen displays —…

    open