agentleFS
glrodaszglrodasz/dotfiles/skills/prod-page-audit/SKILL.md

prod-page-audit

Skill20 starsChanged 15 days agoMITView on GitHub

Run a production readiness audit on a web page or site and fix the gaps it finds — covering SEO, favicon, Open Graph / social previews, and mobile optimization. Use whenever the user asks for a production check, launch checklist, SEO or OG audit, mobile readiness check, mentions going live, or asks about favicon, meta tags, social previews, or viewport issues.

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 2 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If ambiguous, ask one focused question before proceeding.

    line 31
  2. Very specific:

    If a11y-page-audit already ran on this page, skip the landmarks, single <h1>, alt and lang checks below and report them as covered there.

    line 36
  3. Very specific:

    Fix: add/rewrite title, description, canonical, and lang inline.

    line 50
  4. Very specific:

    No fixed widths wider than the viewport.

    line 98
  5. Very specific:

    Fix: add/correct the viewport meta.

    line 106
  6. Distinctive:

    When a URL or dev server is available, run Lighthouse (it emulates a mobile device by default) and an OG preview check.

    line 117
  7. Very specific:

    Dynamic OG images: if the project uses @vercel/og or similar, audit the template instead of replacing it.

    line 150

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Production Page Audit

Audit + auto-fix workflow for web pages before they go to production. Don't restructure HTML blindly, and don't generate robots.txt or sitemap.xml unless asked.

AreaWhat's checkedAuto-fix?
SEOTitle, description, semantic HTML, canonical, robotsFix meta; flag structural issues
FaviconPresence, sizes, formats, manifestGenerate if missing
Open Graphog: tags, Twitter Card, image dimensionsGenerate OG image if missing
MobileViewport, font sizes, input zoom, touch targetsFix in-place where possible

Phase 0 — Understand the target

  1. Input type: file path / project directory → read source directly; URL → fetch or ask for the HTML.
  2. Page type: landing, blog post, product, portfolio — determines what the OG image and favicon should look like.
  3. Brand context: colors, logo, name — pull from CSS variables, <meta>, or ask.

If ambiguous, ask one focused question before proceeding.

Phase 1 — SEO

For each item in Phases 1–4, record the file path, current state, and verdict (✅/⚠️/❌). If a11y-page-audit already ran on this page, skip the landmarks, single <h1>, alt and lang checks below and report them as covered there.

Check:

  • <title>: exists, 50–60 chars, descriptive and unique
  • <meta name="description">: exists, 120–160 chars, action-oriented
  • <link rel="canonical"> present; <meta name="robots"> not accidentally noindex
  • Single <h1>, logical heading nesting
  • Images have meaningful alt; links have descriptive text (not "click here")
  • Landmarks: <header>, <main>, <footer>, <nav>, <article>/<section> where appropriate
  • <html lang="..."> set
  • JSON-LD structured data if applicable (article, product, local business)

Fix: add/rewrite title, description, canonical, and lang inline. Add missing alt with descriptive placeholders marked <!-- TODO: update alt -->. Flag structural issues (heading hierarchy, missing <main>) with a TODO comment and suggested fix — don't restructure HTML blindly.

Phase 2 — Favicon

Check: <link rel="icon"> exists; sizes 16/32 (ICO or PNG), 180 (apple-touch-icon), 192 + 512 (PWA manifest); <link rel="manifest"> if PWA icons expected; SVG favicon for modern browsers.

Fix if missing:

  1. Extract brand identity: primary color from CSS custom properties or dominant styles; initials from <title> / og:site_name; any existing logo SVG.
  2. Generate an SVG favicon — brand initial(s) on a rounded rect in the primary color.
  3. Save as favicon.svg; render the PNG sizes from it and pack 16/32/48 into favicon.ico. Node projects: sharp for the PNGs, png-to-ico for the ICO (sharp can't write ICO). Python projects: Pillow for both (img.save("favicon.ico", sizes=[(16, 16), (32, 32), (48, 48)])). If neither is installed, note conversion is a build-time step.
  4. Inject the standard <head> links: SVG icon, 32×32 PNG, apple-touch-icon, manifest.
  5. Generate site.webmanifest if missing (name, short_name, 192/512 icons, theme/background color, display: standalone).

Phase 3 — Open Graph & social previews

Check: og:title, og:description, og:image (absolute URL, 1200×630), og:url (canonical), og:type, og:site_name; Twitter Card tags (twitter:card, twitter:title, twitter:description, twitter:image).

Fix if missing: derive basic OG tags from existing meta content. If og:image is missing or placeholder, generate one:

  1. Pick the source by page type: article → hero image; product → product image; landing/portfolio → generate a branded card.
  2. Generate at 1200×630 with ~60px safe-zone padding: brand background, logo, title (max 2 lines), subtitle, site name/URL in a corner. Render with sharp + resvg in Node projects or Pillow in Python projects; fall back to an HTML template screenshot at build time only when neither is installed.
  3. Save under /public/og/ and inject og:image (+ width/height) and twitter:card: summary_large_image.

Phase 4 — Mobile

Check:

  • <meta name="viewport" content="width=device-width, initial-scale=1"> — and no user-scalable=no / maximum-scale=1 (accessibility violation)
  • All <input>/<select>/<textarea> have font-size ≥ 16px — iOS Safari zooms on focus below that; the most common overlooked issue
  • No fixed widths wider than the viewport; images max-width: 100%; no horizontal scroll at 375px
  • @media coverage: ≤640px and ≤1024px if the layout is complex
  • Touch targets ≥ 44×44px with ≥ 8px gaps
  • Typography: base ≥ 16px, line-height ≥ 1.5, nothing below 12px
  • Performance (flag, don't fix): image width/height attributes (CLS), loading="lazy" below the fold, defer/async on scripts

Fix: add/correct the viewport meta; add input, select, textarea { font-size: max(16px, 1rem); } if missing; add missing max-width: 100% on images; flag touch-target issues with specific selectors and suggested fixes.

Phase 5 — Verify

  1. Re-run the Phase 1–4 checks against the modified files; every item that was ❌ is now ✅ or explicitly listed under "Still needs human attention".
  2. The <head> still parses: no duplicate <title>/og:* tags, every injected <link> points at a file that exists.
  3. When a URL or dev server is available, run Lighthouse (it emulates a mobile device by default) and an OG preview check; treat the scores as a regression catch, not the verdict. Lighthouse needs Chrome; without it, list the check under "Still needs human attention".

    npx lighthouse <url> --only-categories=seo,best-practices --output=json --quiet \
      --chrome-flags="--headless"

Fix any failure and rerun these checks before the report.

Report

## Production Readiness Report — [Page Title]

SEO          ✅/⚠️/❌ per item, one line each
Favicon      [PASS / GENERATED / FAIL]
Open Graph   [PASS / GENERATED / FAIL]
Mobile       ✅/⚠️/❌ per item, one line each

### Changes made
- [files modified or created]

### Still needs human attention
- [items requiring manual decision or content]

Notes & edge cases

  • Framework-specific: Next.js → metadata exports in app/layout.tsx; Nuxt → useHead() / useSeoMeta(). Fix via the framework-idiomatic pattern, not raw HTML.
  • Dynamic OG images: if the project uses @vercel/og or similar, audit the template instead of replacing it.
  • i18n: multiple languages → recommend hreflang alternates.
  • Dark mode: suggest an SVG favicon with a prefers-color-scheme media query inside the SVG.
  • robots.txt / sitemap.xml: mention if missing, but don't generate unless asked.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.