SEO Audit
josstei/maestro-orchestrate
Run a Maestro-style SEO assessment for meta tags, structured data, crawlability, and Core Web Vitals
Audit a page or the whole site for technical and on-page SEO — crawlability, metadata, heading outline, structured data, internal linking, Core Web Vitals, and the animation-specific crawlability…
$ npx skills add textura-agency/next16-claude-starter --skill seo-audit -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install textura-agency/next16-claude-starter seo-audit --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/textura-agency/next16-claude-starter.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/seo-audit .claude/skills/seo-audit && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "seo-audit" agent skill from https://github.com/textura-agency/next16-claude-starter/tree/main/.claude/skills/seo-audit into .claude/skills/seo-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-audit", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/textura-agency/next16-claude-starter/tree/main/.claude/skills/seo-auditType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add textura-agency/next16-claude-starter --skill seo-audit -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install textura-agency/next16-claude-starter seo-audit --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/textura-agency/next16-claude-starter.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/seo-audit .agents/skills/seo-audit && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "seo-audit" agent skill from https://github.com/textura-agency/next16-claude-starter/tree/main/.claude/skills/seo-audit into .agents/skills/seo-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-audit", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add textura-agency/next16-claude-starter --skill seo-audit -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install textura-agency/next16-claude-starter seo-audit --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/textura-agency/next16-claude-starter.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/seo-audit .cursor/skills/seo-audit && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "seo-audit" agent skill from https://github.com/textura-agency/next16-claude-starter/tree/main/.claude/skills/seo-audit into .cursor/skills/seo-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-audit", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/textura-agency/next16-claude-starter.git --path .claude/skills/seo-audit--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add textura-agency/next16-claude-starter --skill seo-audit -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install textura-agency/next16-claude-starter seo-audit --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/textura-agency/next16-claude-starter.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/seo-audit .gemini/skills/seo-audit && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "seo-audit" agent skill from https://github.com/textura-agency/next16-claude-starter/tree/main/.claude/skills/seo-audit into .gemini/skills/seo-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-audit", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install textura-agency/next16-claude-starter seo-auditInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add textura-agency/next16-claude-starter --skill seo-audit -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/textura-agency/next16-claude-starter.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/seo-audit .github/skills/seo-audit && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "seo-audit" agent skill from https://github.com/textura-agency/next16-claude-starter/tree/main/.claude/skills/seo-audit into .github/skills/seo-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-audit", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add textura-agency/next16-claude-starter --skill seo-audit -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install textura-agency/next16-claude-starter seo-audit --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/textura-agency/next16-claude-starter.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/seo-audit .opencode/skills/seo-audit && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "seo-audit" agent skill from https://github.com/textura-agency/next16-claude-starter/tree/main/.claude/skills/seo-audit into .opencode/skills/seo-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seo-audit", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
seo-auditAudit a page or the whole site for technical and on-page SEO — crawlability, metadata, heading outline, structured data, internal linking, Core Web Vitals, and the animation-specific crawlability…
SEO Audit is an agent skill from textura-agency/next16-claude-starter. Audit a page or the whole site for technical and on-page SEO — crawlability, metadata, heading outline, structured data, internal linking, Core Web Vitals, and the animation-specific crawlability risks this starter carries. Produces ranked findings and fixes them in code. Use when the user asks to "audit SEO", "check my SEO", "why isn't this ranking", "fix meta tags", or before a launch.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Marketing & SEO, covering On-page SEO, SEO audit and Technical SEO. The repository describes itself as: AI-first Next.js 16 starter for animation-heavy sites, wired with an Obsidian vault & Claude Code hooks. The licence is Unlicense.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6c6edf9. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadGrepGlobEditWriteWebFetchFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlyarnnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl and yarn, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
SEO Audit loads about 2.2k tokens when it runs. Until then it costs about 100 tokens; SKILL.md has 1,173 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Grep, Glob, Edit, Write, WebFetchAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from textura-agency/next16-claude-starter at commit 6c6edf9, republished under its Unlicense licence (© textura-agency). 1,173 words, ~2,159 tokens.
.claude/skills/seo-audit/SKILL.md (or your agent's skills folder).Audit the code, and the live URL when one exists. Lessons from ~50 production sites built from this starter are folded in; the defects it used to seed (placeholders, localhost canonicals, a hidden page for non-JS crawlers, missing privacy route) are fixed upstream — check they stayed fixed. Rank findings by impact and fix them; do not hand back a lecture.
src/app/robots.ts — allows crawlers, points at the sitemap, no accidental
disallow: /.src/app/sitemap.ts — every public route is listed. This is the one that
rots: adding a route without a sitemap entry is the most common miss in this
starter. Cross-check find src/app -name 'page.tsx' against the sitemap array.siteConfig.url = NEXT_PUBLIC_SITE_URL → the host's
production domain (VERCEL_PROJECT_PRODUCTION_URL) → localhost; set
NEXT_PUBLIC_SITE_URL for a custom domain. origin-sync.ts (first in
<body>) rewrites canonical / og:url / og:image to location.origin after
hydration for JS-running readers on any other host — never before (React 19
matches head tags by URL and inserts a second copy; one site served two
canonicals). Link-preview scrapers don't run JS, so the build-time origin
decides their cards. Check on the deployed site: canonical is the real
domain, and curl -sI of the og:image URL returns 200 — 11 of 12 live
deploys once served http://localhost:3000 as canonical, og:image and every
sitemap <loc>.headers() /
cookies() read — including await isBot() in a page or layout — forces
dynamic rendering for every visitor. The UA is read in src/proxy.ts. Check:
curl -sI <url>/ | grep -i 'cache-control\|x-vercel-cache' → PRERENDER/HIT.curl -s -A "Googlebot/2.1" <url>/ and
-A "GPTBot/1.0": the robot form (<meta name="x-robot-view">), the <h1>
and the body copy present and not under a hidden ancestor. The starter's
old empty app/loading.tsx wrapped the streamed page in <div hidden> — on
most sites built from it, non-JS crawlers got no visible <h1>; it is deleted
— never re-add an empty one. Streamed Suspense segments can still hide text
from a non-JS reader; the robot form should stream nothing.
(optimize-load/references/robot-path.md.)robots.ts disallows /robot-view (the robot form's own path is a duplicate
— it is served under /). Never noindex the robot page itself.Every route exports metadata via generateMetadata in
src/utils/seo/generate-page-metadata.ts (obsidian/frontend/seo-metadata.md).
No placeholder survives. src/lib/site.ts ships TODO: values that fail
a production build — every site built from the old starter shipped "New
Project" as its title, OG card and JSON-LD name, and Lighthouse still scored
SEO 100 because a title existed. Fill every field from the site itself:
name — the brand exactly as the logo writes it. If the copy and the logo
disagree, ask; don't pick silently (a reviewer caught a wrong brand in a title).title — the brand + what it is, ≤ 60 chars (Acme — Industrial design studio); sub-pages %s · Acme, unique and specific per route.description — 120–160 chars from the site's own copy (no invention).author / creator / publisher = the brand, never the agency or a
placeholder. twitterHandle = the site's real handle or undefined (the tags
are omitted) — never an invented one, it tags a stranger.themeColor / backgroundColor = the brand ground (via generateViewport);
keywords 5–8 phrases from the copy; openGraph.type/locale/siteName;
twitter.card = summary_large_image.node tools/qa/brand-kit.mjs --url … --icon <mark.svg>
renders icon.svg, favicon.ico, the PNG sizes, apple/maskable icons and a
1200×630 share image captured from the running hero (its wait must cover
the loader and the entrance; dismiss the banner; hide a custom cursor). LOOK at
the share image: hero composed, headline legible, no loader, no banner, no
half-faded text. If the hero doesn't compose at 1200:630, build a designed
card (app/opengraph-image.tsx: the brand large over the hero art) — it beat a
plain capture twice. Look at the 32 px and 180 px icons too. og:image has an
alt and its real size.lang on <html>; manifest (app/manifest.ts) names the brand.<head> of the build
(curl -s localhost:3000/ | grep -oE '<(meta|link)[^>]+>') and of the
robot form (-A Googlebot/2.1) — they must carry the same metadata.<h1>, matching what the page is actually about.<main> present; landmarks named; lists are lists.<Link>, have descriptive anchor text (never "click here"),
and no important page is orphaned. Every href resolves — nav items for
pages that were never built point at # or a section anchor, never a 404; the
cookie banner's /privacy-policy exists (build the page, don't drop the
link).alt.Run the schema-markup skill. At minimum Organization + WebSite from
src/utils/seo/structured-data.ts; add per-page types where they apply.
Validate the JSON-LD parses and references real on-page content.
Core Web Vitals are a ranking factor, so they belong in an SEO audit — but this
skill does not own them. Hand the measuring and fixing to optimize-load,
which audits all four categories across laptop, tablet and mobile on medians of
3+ runs, and report its numbers here. Do not run a single Lighthouse pass and
quote it: LCP and CLS swing wildly between identical runs.
What to check specifically from the SEO side:
yarn build && yarn start) or the
deployed URL — never next dev.optimize-load catches it, and it is
usually the cheapest fix on the board.optimize-3d-scene skill — it owns that order of fixes.optimize-performance.Content revealed by scroll animation must exist in the DOM regardless. This starter's springs only touch opacity/transform, so crawlers see the text — keep it that way. Do not gate content behind an in-view callback that mounts it.
Robots get the robot form: the same content at rest, chosen in the proxy
(static for everyone) — not an isBot() branch in a page. Keep the two lines:
same content (different content for crawlers is cloaking), static route. Every
new section's first-screen copy uses the robot twins so it is visible in the
served HTML; every loop reads useMotionOff() (a looping spring hangs the robot
form — Lighthouse PAGE_HUNG). Procedure and checks:
optimize-load/references/robot-path.md.
A ranked table — issue, severity, file, fix — then apply the fixes. Re-run
.claude/scripts/verify.sh and yarn build afterwards, and
node tools/qa/lighthouse.mjs --url … and again with --as-bot — SEO/BP 100 on
people and robot. Note anything that needs
the user (a live URL, Search Console access, a correctly sized OG asset).
© textura-agency, Unlicense. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/seo-audit of textura-agency/next16-claude-starter.
Open the folder on GitHubat commit 6c6edf9
SEO Audit next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| SEO Audit this skilltextura-agency/next16-claude-starter | 133 | — | ~2.2k | Automated safety check: Notes | Unlicense | |
| SEO Auditjosstei/maestro-orchestrate | 465 | — | ~218 | Automated safety check: Pass | Apache-2.0 | |
| SEO Auditunifapi-agent/agents | 589 | — | ~3.4k | Automated safety check: Pass | MIT | |
| SEO Optimizerailabs-393/ai-labs-claude-skills | 455 | 1 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Universal SEO AnalysisAgriciDaniel/claude-seo | 19k | — | ~4.9k | Automated safety check: Pass | MIT | |
| Persian SEOTronIsHere/vibefarsiui | 212 | — | ~1.7k | Automated safety check: Warn | MIT |
josstei/maestro-orchestrate
Run a Maestro-style SEO assessment for meta tags, structured data, crawlability, and Core Web Vitals
unifapi-agent/agents
When the user wants to audit, review, or diagnose SEO issues on their site.
ailabs-393/ai-labs-claude-skills
This skill should be used when analyzing HTML/CSS websites for SEO optimization, fixing SEO issues, generating SEO reports, or implementing SEO best practices.
AgriciDaniel/claude-seo
Hub for site-wide SEO work: audits, technical checks, schema, content quality, local, hreflang and AI-search readiness, run through slash commands.
TronIsHere/vibefarsiui
Technical and on-page SEO for Persian (Farsi) websites: lang and hreflang for fa-IR, RTL-safe metadata, Persian titles and descriptions, slug and URL strategy for Persian content, ZWNJ and keyword…
sickn33/agentic-awesome-skills
Website page register: URL, title, meta description, search intent, NAP block, schema type, canonical, indexability and Core Web Vitals target.
textura-agency/next16-claude-starter
Make a site behave on real phones — the defects no Lighthouse run or headless scroll test sees, learned from site owners reviewing production sites on an iPhone.
textura-agency/next16-claude-starter
Get a page into Lighthouse's green zone on desktop and mobile, for people AND for the robot form crawlers get — build it, audit all four categories (Performance, Accessibility, Best Practices, SEO)…
textura-agency/next16-claude-starter
Make a page in this starter actually smooth — build it, scroll it in real Chrome on PC and on an emulated phone, fix what the measurement blames, re-measure to prove it.
textura-agency/next16-claude-starter
Make a Payload admin feel like part of the site and explain itself — the skin re-tinted from the site's own tokens (calm, light, no added motion), the site's wordmark and favicon, a dashboard…
textura-agency/next16-claude-starter
Put a Payload CMS admin on a site built from this starter — every visible string and content photo editable, derived from the site's own content objects with the code's copy as the fallback, a…
textura-agency/next16-claude-starter
Answer Engine Optimisation — make the site citable by ChatGPT, Claude, Perplexity, Gemini and AI Overviews.
Categories
Audit a page or the whole site for technical and on-page SEO — crawlability, metadata, heading outline, structured data, internal linking, Core Web Vitals, and the animation-specific crawlability…. SEO Audit is an agent skill from textura-agency/next16-claude-starter. Audit a page or the whole site for technical and on-page SEO — crawlability, metadata, heading outline, structured data, internal linking, Core Web Vitals, and the animation-specific crawlability risks this starter carries.
SEO Audit fits situations like: the user asks to audit SEO; why isnt this ranking; before a launch.
Run `npx skills add textura-agency/next16-claude-starter --skill seo-audit -a claude-code`. Or copy the skill folder (.claude/skills/seo-audit in textura-agency/next16-claude-starter) into .claude/skills/seo-audit in your project. Claude Code loads it when a task matches its description.
Run `npx skills add textura-agency/next16-claude-starter --skill seo-audit -a codex`. Or copy the skill folder (.claude/skills/seo-audit in textura-agency/next16-claude-starter) into .agents/skills/seo-audit in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add textura-agency/next16-claude-starter --skill seo-audit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/seo-audit, .gemini/skills/seo-audit, .github/skills/seo-audit and .opencode/skills/seo-audit in your project.
Going by SKILL.md and its folder, SEO Audit needs the command-line tools its instructions call (curl, yarn and node). Its frontmatter pre-approves these tools: Bash, Read, Grep, Glob, Edit, Write, WebFetch.
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
SEO Audit is published under the Unlicense licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with SEO Audit: SEO Audit (josstei/maestro-orchestrate, 465 stars), SEO Audit (unifapi-agent/agents, 589 stars), SEO Optimizer (ailabs-393/ai-labs-claude-skills, 455 stars) and Universal SEO Analysis (AgriciDaniel/claude-seo, 19k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
textura-agency (a GitHub organization) maintains it in textura-agency/next16-claude-starter, which has 133 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on October 7, 2026.
Source: textura-agency/next16-claude-starter on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.