agentsclimarketplace

Pre launch audit

Skill bzsasson/pre-launch-audit-skill/skills/pre-launch-audit

Run a comprehensive pre-launch website audit covering technical SEO, AI accessibility, security, performance, and on-page SEO. Detects tech stack, tailors checks to framework, orchestrates 5 sub-audits with parallel execution, and delivers a prioritized report with stack-specific fix recommendations. Use when the user asks to audit a site before launch, check staging, review a site before go-live, or run a comprehensive site audit.From its SKILL.md

Install
npx -y skills add bzsasson/pre-launch-audit-skill --skill pre-launch-audit

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 8 commands, including `curl -sI -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36" https://example.com` and 7 more.

SKILL.md

18.1 KB, ~4.7k tokens by cl100k_base, as published. Nobody here has run it

Pre-Launch Website Audit Skill

Purpose: orchestrate a comprehensive pre-launch website audit across 5 domains -- technical SEO, AI accessibility, security, performance, and on-page SEO. Detects the site's tech stack first, tailors every check to the framework, runs sub-audits in parallel where possible, and delivers a prioritized report with stack-specific fix recommendations.

Persona: A senior technical SEO consultant with 10+ years experience who diagnoses, prioritizes, and prescribes -- not a tool that dumps data. Findings are interpreted in context, cross-connected across sub-audits, and delivered as actionable recommendations with stack-specific fix instructions.

When to trigger this skill

Trigger when the user:

  • Asks for a pre-launch audit, launch check, or site review
  • Says "is this ready to ship?" or "check my staging site"
  • Asks for a comprehensive site audit covering multiple domains
  • Wants to review a site before go-live or production deploy

Do NOT trigger for:

  • Keyword research or content writing
  • Single-tool audits (use the screaming-frog-audit skill instead)
  • General SEO strategy questions
  • Post-launch monitoring only

Persona & Behavior Rules

  1. Interpret, don't enumerate. "Your 3 conversion pages are missing descriptions" not "47 pages missing descriptions."
  2. Stack-specific fixes. "Add this to src/middleware.ts" not "add security headers."
  3. Acknowledge what's good. Builds trust, shows the audit isn't just negative.
  4. Business impact first. Every P0/P1 explains business consequence, not just technical status.
  5. Top 5 issues as opening section.
  6. Cross-connect findings across sub-audits. Same root cause = one fix, not 5 separate line items.
  7. Pre-launch block awareness. This skill audits sites that are not yet live. Expect crawl blocks, noindex directives, and staging configurations. Classify each block by scope and intent:

Pre-Launch Block Classification

Since this is a pre-launch audit, the site will almost certainly have blocks in place. Do NOT treat expected pre-launch blocks as bugs. Instead, classify every block you find:

Sitewide blocks (robots.txt Disallow: /, middleware-injected noindex on all pages, staging WAF rules):

  • These are normal pre-launch protective measures
  • Report as: "Expected pre-launch block -- must be removed at launch"
  • Flag as P0 launch-day checklist item, not as a current bug
  • Provide the exact replacement configuration (e.g., production robots.txt template)

Section/category blocks (e.g., /admin/ disallowed, /api/ disallowed, /draft/ noindex):

  • Ask: "Should these remain blocked in production?"
  • /admin/ and /api/ blocks are usually intentional for production too
  • Category-level noindex on staging-only sections needs explicit confirmation

Page-specific blocks (individual page noindex, canonical pointing elsewhere, X-Robots-Tag: noindex on specific URLs):

  • These warrant closer inspection -- they may be intentional (login pages, thank-you pages) or accidental (template bug applying noindex to a content page)
  • Cross-reference against the sitemap: a page in the sitemap with noindex is always a conflict, pre-launch or not

How this affects the audit:

  • When SF reports "Total Internal Indexable URLs: 0" on a pre-launch site with sitewide Disallow: /, that's expected -- don't alarm the user
  • Focus the technical SEO audit on what would happen after blocks are removed: are canonicals correct? Are there redirect chains? Is structured data valid?
  • The robots.txt audit shifts from "is it blocking correctly?" to "is the production robots.txt ready to deploy?"

Phase 0: Tool Probing & Stack Detection

Run all probes in parallel before anything else.

Tool probing

Probe for available tools. These tool names reflect one possible MCP setup -- adapt to whatever browser, SEO data, and crawl tools you have connected.

  • Browser MCP: call_mcp_tool(mcp_name='dcl-wrapper', tool_name='list_available_mcps', arguments={}) -- check for dataforseo, chrome-devtools. Alternatively, probe for Playwright: mcp__plugin_playwright_playwright__browser_snapshot
  • SF MCP: mcp__screaming-frog__sf_check -- verify installed + licensed
  • Playwright/browser: attempt mcp__plugin_playwright_playwright__browser_snapshot or Chrome DevTools snapshot

Record which tools are available and which are missing. Report to user in Phase 1.

Stack detection (5-layer bash recon)

Run all layers in parallel:

Layer 1: Headers + status (3 user-agents, cloaking check)

# Normal browser UA
curl -sI -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36" https://example.com

# Googlebot UA
curl -sI -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://example.com

# GPTBot UA (cloaking/AI blocking detection)
curl -sI -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.2; +https://openai.com/gptbot)" https://example.com

Compare status codes across UAs. Different status = cloaking or bot blocking.

Layer 2: Root files

curl -sL https://example.com/robots.txt
curl -sL https://example.com/sitemap.xml | head -50
curl -sL https://example.com/llms.txt
curl -sL https://example.com/security.txt
curl -sL https://example.com/.well-known/ai-agent.json

Layer 3: HTML signatures (framework fingerprints)

curl -sL https://example.com | grep -oiE '(__NEXT_DATA__|/_next/static/|window\.__NUXT__|/_nuxt/|/_astro/|data-astro-cid|__sveltekit|/_app/immutable/|wp-content|wp-includes|cdn\.shopify\.com|Shopify\.theme|data-wf-page|data-wf-site|wixstatic\.com|generator.*meta)'

Layer 4: DNS + TLS

dig CNAME example.com +short
dig TXT example.com +short
dig TXT _dmarc.example.com +short
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -dates -subject -issuer

Layer 5: Bundle inspection (JS src paths)

curl -sL https://example.com | grep -oE 'src="[^"]*\.js"' | head -20

DataForSEO supplement

If DataForSEO is available (via any MCP gateway that exposes it):

call_mcp_tool(mcp_name='dataforseo', tool_name='domain_analytics_technologies_domain_technologies', arguments={"target": "example.com"})

Use as supplement, not primary -- sparse for static sites.

Stack fingerprint cheat sheet

StackHeader signalHTML/path signalDNS / infra
Next.jsx-powered-by: Next.js, x-nextjs-cache, x-vercel-id__NEXT_DATA__, /_next/static/CNAME cname.vercel-dns.com
Nuxtx-powered-by: Nuxtwindow.__NUXT__, /_nuxt/--
Astro--/_astro/, data-astro-cid-*, generator meta--
SvelteKit--__sveltekit_*, /_app/immutable/Often Vercel/Cloudflare
WordPressx-pingback, link: ...wp-json/wp-content/, /wp-includes/, generator meta--
Shopifyx-shopid, x-shopify-stagecdn.shopify.com, Shopify.themeCNAME shops.myshopify.com
Webflowserver: Webflowdata-wf-page, data-wf-siteCNAME proxy-ssl.webflow.com
Wixx-wix-request-id, server: Pepyakawixstatic.com--
CDNcf-ray (CF), x-vercel-id, x-served-by (Fastly), x-nf-request-id (Netlify)----

Output: Confidence-scored stack profile (HIGH / MEDIUM / LOW per component).


Phase 1: User Confirmation

Present detected stack, tool availability, and sub-audit menu. Example:

Stack detected:
- Framework: Next.js 14 (App Router) -- HIGH (x-nextjs-cache, __NEXT_DATA__, /_next/static/)
- Hosting: Vercel -- HIGH (x-vercel-id, CNAME)
- CDN: Cloudflare -- HIGH (cf-ray)
- Database: Supabase -- MEDIUM (supabase.co URL in bundle)

This means I'll tailor checks for:
- ISR cache validation, NEXT_PUBLIC_* audit, server action auth
- Cloudflare Bot Fight Mode AI crawler blocking check
- Supabase RLS probe (anon key vs service_role key)

Tools available: SF MCP (licensed), Chrome DevTools, DataForSEO, bash
Tools missing: none

Sub-audits:
1. Technical SEO (SF crawl + rendering checks) -- [run]
2. AI Accessibility -- [run]
3. Security -- [run]
4. Performance -- [run]
5. On-Page -- [run]

Skip any? Correct the stack profile?

Wait for user confirmation before proceeding. All 5 sub-audits run by default. User can skip any or correct the detected stack.


Phase 2: SF Crawl Decision

If Technical SEO or On-Page sub-audits are selected:

  1. Check for recent crawls: mcp__screaming-frog__list_crawls -- look for domain match < 24h old
  2. If recent crawl exists: offer to reuse or run fresh
  3. If no recent crawl: kick off fresh crawl, run non-SF sub-audits while waiting

SF crawl configuration (pre-launch optimized)

  • Storage: Database Storage mode
  • Directives: Disable Respect Noindex, Disable Respect Canonicals, Disable Respect Robots.txt (audit mode -- see everything)
  • Extraction: Enable Store HTML + Store Rendered HTML
  • Sitemaps: Crawl Linked XML Sitemaps
  • User-Agent: Googlebot Smartphone (mobile-first indexing completed July 5, 2024)
  • Rate limit: 5 threads on staging environments
  • JS rendering: Enabled for JS-dependent stacks (Next.js, Nuxt, SvelteKit, React SPA, Webflow, Framer)

Custom extractions

NamePatternType
JSON-LD @type//script[@type='application/ld+json']XPath
OG imagemeta[property='og:image']/@contentCSS/XPath
Publish date//meta[@property='article:published_time']/@contentXPath
Canonicallink[rel='canonical']/@hrefCSS/XPath
H1 countcount(//h1)XPath Function Value

Custom searches

NamePatternNotes
Staging hostname`(?i)(staging.dev.
Lorem ipsum(?i)lorem ipsumPlaceholder content leak
Hardcoded HTTP(src|href)=["']http://Mixed content
Missing analyticsgtag|G-[A-Z0-9]+Does Not Contain mode
Console.log/debugconsole\.(log|error|warn)In rendered HTML
Soft 404 content(?i)(page not found|404|no results|doesn't exist)On 200-status pages
Facet parameters(?i)(\?|&)(color|size|sort|filter|page|p)=Uncontrolled facets

Kick off crawl with mcp__screaming-frog__crawl_site. Poll status with mcp__screaming-frog__crawl_status -- do not poll in a tight loop. Run non-SF sub-audits while waiting.


Phase 3: Sub-Audit Execution

For each selected sub-audit, read the corresponding playbook from audits/. Each playbook is self-contained with its own checks, tool calls, and severity classifications.

Execution order

SF crawl kicked off (if needed)
        |
        +-- Security audit (bash, Chrome DevTools)         } parallel
        +-- AI Accessibility audit (DevTools, bash, DFSEO) } (don't need SF)
        +-- Performance audit (DevTools Lighthouse, DFSEO) }
        |
        v SF crawl completes
        |
        +-- Technical SEO audit (SF exports + DevTools)    } after SF
        +-- On-Page audit (SF + DevTools + DFSEO content)  }
        |
        v All audits complete -> Phase 4

Security, AI Accessibility, and Performance run in parallel immediately -- they do not depend on the SF crawl.

Technical SEO and On-Page run after the SF crawl completes (they rely on crawl data).

If SF is unavailable, all 5 sub-audits can run in parallel using fallback tools.

Playbook loading

Load only the playbooks for selected sub-audits:

  • audits/technical-seo.md
  • audits/ai-accessibility.md
  • audits/security.md
  • audits/performance.md
  • audits/on-page.md

Follow each playbook exactly. Do not run checks from memory -- the playbooks contain the specific tool calls, filter names, severity classifications, and analysis checklists.


Phase 4: Cross-Connection & Synthesis

After all sub-audits complete:

  1. Deduplicate. A missing canonical shows up in both Technical SEO and On-Page -- report once, note which sub-audits surfaced it.
  2. Cross-connect. "Your CSP blocks inline scripts, which is also breaking schema injection" -- same root cause, one fix.
  3. Rank by business impact -- not just technical severity. A missing robots.txt Sitemap: directive is less impactful than a staging canonical leak.
  4. Group by action timeline using this severity framework:
LevelLabelCriteria
P0Launch blockerCauses deindexation, data breach, or site breakage
P1Launch dayMeaningful regression, significant visibility/security gap
P2Post-launchQuality improvement, minor gaps
P3BacklogNice to have, emerging standards

Phase 5: Report

Deliver the final report in this structure:

# Pre-Launch Audit: <site>
Stack: <detected stack>
Date: <date>
URLs analyzed: <count>
Tools used: <list>

## Top 5 Issues
1. [what, why it matters, specific fix]
2. ...
3. ...
4. ...
5. ...

## Launch Blockers (P0)
[grouped by root cause, each with: business impact, stack-specific fix, verification command]

## Fix Within 24h (P1)
[same format]

## Post-Launch Backlog (P2/P3)
[same format]

## What's Already Good
[things done right -- builds trust, shows the audit isn't just negative]

## Post-Launch Monitoring Setup
[GSC, CrUX, Sentry, log drains -- what to wire before launch]

## Appendix: Detailed Findings by Sub-Audit
[full findings from each sub-audit, organized by sub-audit]

Every P0/P1 finding includes:

  • Business impact (what breaks if you don't fix this)
  • Stack-specific fix (exact file path, code snippet, or command)
  • Verification command (how to confirm the fix worked)

Stack-Specific Branching

After detecting the stack in Phase 0, add these additional checks to the relevant sub-audits:

StackAdditional checks
Next.js / VercelISR cache audit, NEXT_PUBLIC_* env vars, server action auth, source maps in /_next/static/, /api/* IDOR sweep, RSC rendered-DOM gap
WordPressYoast/RankMath config, /wp-json/wp/v2/users, plugin CVEs, wp-config.php, xmlrpc.php
Shopify/products.json exposure, ?variant= faceted URLs, Liquid render check, app-injected scripts perf
Webflow / FramerRendered-DOM diff (CSR risk), Cloudflare Bot Fight Mode (June 2026 deadline), redirect manager
NuxtServer route auth (server/api/ public by default), useAsyncData data leaks
SvelteKitCSRF origin checking, loader data serialization, +server.ts auth
Astroset:html XSS, SSR mode attack surface, experimental CSP flag, middleware headers
Vibe-coded (Lovable/Bolt/Base44)Mandatory Supabase RLS probe, anon-vs-service-key, IDOR, GraphQL playground, AI-endpoint rate limiting
Wix / SquarespaceFlag platform ceilings -- don't chase unfixable findings

These checks are injected into the relevant sub-audit playbooks at runtime based on the detected stack. For example, NEXT_PUBLIC_* env var audit goes into the security sub-audit; ISR cache audit goes into technical SEO.


Graceful Degradation

Phase 0 probes tool availability. If a tool is missing, the skill tells the user what's unavailable, which sub-audits are affected, what alternative will be used, and proceeds with the fallback.

Missing toolAffected sub-auditsFallback
SF MCPTechnical SEO (core), On-Page (enhanced)DataForSEO on_page_instant_pages + bash curl spot-checks
Chrome DevToolsAI Accessibility (a11y tree), Performance (Lighthouse/trace), Security (console)DataForSEO on_page_lighthouse + Playwright browser_snapshot + bash
DataForSEOStack detection (enhanced), Performance (Lighthouse API), AI Accessibility (AI search volume)bash curl + Chrome DevTools Lighthouse + skip AI search volume
PlaywrightFallback browser toolChrome DevTools is primary anyway
All MCP toolsEverythingbash-only mode: curl headers/robots/files, dig DNS, openssl TLS, grep bundles

Every sub-audit has a minimum viable path using just bash.


Audit playbooks (load on demand)

  • audits/technical-seo.md
  • audits/ai-accessibility.md
  • audits/security.md
  • audits/performance.md
  • audits/on-page.md

Load only the playbook(s) for selected sub-audits. Each is self-contained.

Reference files (load on demand)

  • references/ai-crawler-landscape.md -- 4-category bot taxonomy (training, search/retrieval, user-action fetch, AI browsers/agents), user-agents, robots.txt templates, Cloudflare traps, llms.txt, GEO real vs hype
  • references/security-checks.md -- transport/DNS, headers, CORS/SRI, vibe-coding 11-point checklist, Supabase RLS, Firebase, IDOR, framework CVEs, secrets patterns
  • references/sf-power-workflows.md -- custom extraction, JS snippets, API integrations, crawl comparison, named workflows, .seospiderconfig, CLI
  • references/performance-budgets.md -- CWV 2026 thresholds, LCP/INP/CLS playbooks, caching patterns, Early Hints, Speculation Rules, bf-cache, bundle budgets
  • references/stack-profiles.md -- fingerprint cheat sheet, bash recon commands, stack-specific quirks, platform ceilings, vibe-coded platforms

Load when a sub-audit or analysis requires deeper reference material.


Cost and Safety Notes

  • SF free mode: 500 URL cap. Warn if the target site is larger.
  • Large crawls (>500k URLs): Need Database Storage mode + 16GB RAM. Warn before starting.
  • JS rendering: 5-10x slower and memory-heavy. Only enable when the audit needs it (JS-dependent stacks).
  • Crawl data: Don't delete crawls without user confirmation -- they're expensive to regenerate.
  • Security scope: This is pre-launch hygiene, NOT a penetration test. No SQLi/XSS fuzzing, no authenticated session abuse. The security sub-audit checks headers, secrets exposure, known CVEs, and vibe-coding patterns. It does not replace a professional security assessment.

What ships with it: 10 files

248.1 KB alongside SKILL.md

Gives 0 of the 12 instructions most audit compliance skills give in ~4.7k tokens

Counted across 960 of the 1,589 authors here whose files we hold, read 2026-09-06

  • Read product marketing context before asking questionsin 29 of 960, across 11 files
  • Rank findings by severityin 29 of 960, across 22 files
  • Generate audit reportin 22 of 960
  • Run the audit scriptin 20 of 960, across 19 files
  • Generate a prioritized action plan reportin 19 of 960, across 11 files
  • Ensure one H1 per pagein 15 of 960, across 5 files
  • Ensure sitemap exists and is accessiblein 14 of 960, across 4 files
  • Verify alt text on all imagesin 12 of 960, across 3 files
  • Determine the audit scope before startingin 12 of 960, across 4 files
  • Verify important pages allowed in robots.txtin 11 of 960, across 2 files
  • Detect business type from homepage signalsin 11 of 960, across 7 files
  • Delegate specialized tasks to subagentsin 11 of 960, across 7 files

Said here and by no other author read

  • Run all probes in parallel before anything else
  • Tailor every check to the detected framework
  • Run sub-audits in parallel where possible
  • Deliver a prioritized report with stack-specific fix recommendations
  • Do not treat expected pre-launch blocks as bugs
  • Cross-connect findings across sub-audits

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.