Launchgrade Web Audit Skill
Dritte Phase im Launchgrade-Workflow: Verifikation. Führt die drei essentiellen Tools deterministisch aus und mappt die Findings auf die Standards.
Wann triggern
- Pre-Launch-Audit einer neuen Site
- Post-Launch-Health-Check (nach Deployment, nach größerem Release)
- Migration bestehender Site auf Launchgrade-Standards: Baseline-Snapshot
- URL ist im Prompt + Wort "Audit" / "prüfen" / "wie schnell" / "Score" / "Lighthouse" / "CWV"
Nicht triggern bei: Code-Reviews ohne URL, reinen Setup-Fragen (→ launchgrade-setup), Design-/Brand-Fragen (→ launchgrade-design).
Wo die Wahrheit liegt
Standards liegen in ./web-standards/AGENTS.md und ./web-standards/checklist.md im Repo-Root. Snapshot der Launchgrade Web Standards 2026, mit jedem Release versioniert.
Relevante Kapitel für Audit:
- §2 Performance (Core Web Vitals)
- §3 Accessibility (WCAG 2.2 AA & BFSG)
- §4 SEO & Discoverability
- §5 Security
- §6 Privacy & DSGVO
Pre-Launch-Liste: checklist.md im selben Repo.
Pflicht-Schritt: AGENTS.md §2–§6 + checklist.md lesen, bevor Findings gemappt werden.
Drei Tools, deterministisch
1. Lighthouse (Performance + SEO + A11y + Best Practices)
lighthouse <url> \
--output=json --output-path=/tmp/lh-mobile.json \
--chrome-flags="--headless" --quiet
lighthouse <url> \
--preset=desktop --output=json --output-path=/tmp/lh-desktop.json \
--chrome-flags="--headless" --quiet
JSON-Pfade:
categories.performance.score (×100 = Score 0–100)
categories.seo.score
categories.accessibility.score
categories.best-practices.score
audits.largest-contentful-paint.numericValue (ms)
audits.cumulative-layout-shift.numericValue
audits.total-blocking-time.numericValue (ms, Proxy für INP)
audits.first-contentful-paint.numericValue (ms)
Pass-Schwellen:
- Performance Mobile ≥ 80, Desktop ≥ 90
- SEO ≥ 95, A11y ≥ 95, Best Practices ≥ 95
Bei Score-Varianz (±5 ist normal): 3 Runs Median empfehlen.
2. Mozilla Observatory (Security-Header)
# Scan triggern
curl -s -X POST "https://observatory-api.mdn.mozilla.net/api/v2/scan?host=<host>"
# Polling bis state=FINISHED:
curl -s "https://observatory-api.mdn.mozilla.net/api/v2/scan?host=<host>"
JSON-Pfade:
.grade (A+, A, B, C, D, F)
.score (0–135)
.tests_failed[] für Detail-Findings (CSP, HSTS, X-Frame, X-Content-Type-Options, Referrer-Policy, Cookie-Flags, SRI)
Pass-Schwelle: Grade ≥ A. AGENTS.md §5 nennt A+ als Ziel — A als Mindest.
3. PageSpeed Insights (CrUX-Felddaten + Lab)
curl -s "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=<url>&strategy=mobile&category=performance&category=seo&category=accessibility&category=best-practices"
JSON-Pfade (CrUX = echte User-Daten, nur wenn Domain genug Traffic hat):
loadingExperience.metrics.LARGEST_CONTENTFUL_PAINT_MS.percentile (p75 in ms)
loadingExperience.metrics.INTERACTION_TO_NEXT_PAINT.percentile (p75 in ms)
loadingExperience.metrics.CUMULATIVE_LAYOUT_SHIFT_SCORE.percentile (×100)
loadingExperience.overall_category (FAST / AVERAGE / SLOW)
Pass-Schwellen (CWV 2026, p75 echter User):
- LCP ≤ 2500 ms
- INP ≤ 200 ms
- CLS ≤ 0.1 (im JSON ×100, also ≤ 10)
Wenn keine CrUX-Daten vorliegen (kleiner Traffic / neue Site): nur Lab-Daten aus Lighthouse gelten als Smoke-Test, das im Report dokumentieren.
Vorgehen
Kontext klären:
- URL (vollständig mit Protokoll)
- Geltungsbereich: BFSG-relevant (B2C-Shop / Banking / Buchung)?
- Single-Page-Check oder Multi-Page (mehrere URLs nacheinander)?
AGENTS.md §2–§6 + checklist.md lesen.
Drei Tools nacheinander ausführen, JSON in /tmp/ speichern.
JSON parsen und gegen Pass-Schwellen + AGENTS.md-MUSTs prüfen. Nicht den JSON-Output in die Antwort dumpen — nur die relevanten Werte zitieren.
Report in drei Buckets:
Konkrete Patches für Blocker:
- Bei Code-Zugriff: direkt umsetzbare
Edits vorschlagen oder anwenden
- Sonst: konkrete Konfigurations-Snippets (CSP-Direktive, Cache-Header, JSON-LD)
- Verweis auf AGENTS.md-Sektion pro Finding
Verhalten
- Alle drei Tools laufen lassen — auch wenn Lighthouse "alles" zu zeigen scheint. Observatory deckt Security-Header tiefer, PSI liefert echte Felddaten.
- Bei BFSG-Relevanz: Lighthouse-A11y reicht NICHT — zusätzlich
@axe-core/cli ausführen (axe <url> --tags wcag22aa --save /tmp/axe.json) und critical/serious violations als Blocker werten.
- JSON nicht im Output dumpen — nur die relevanten Werte zitieren + Bucket-Mapping.
- Auf Deutsch antworten, Tool-Namen / Metriken / Header / JSON-Pfade auf Englisch.
- CrUX-Daten nie erfinden, wenn das Feld leer ist.
- Bei Lighthouse-Varianz: 3 Runs Median bilden.
Anti-Patterns
- ❌ Nur Lighthouse laufen lassen — Security & CrUX fehlen.
- ❌ Score zitieren ohne Bucket-Mapping und ohne AGENTS.md-Verweis.
- ❌ Lighthouse-A11y-Score 100 als "BFSG-konform" verkaufen — A11y braucht axe-core + manueller Test.
- ❌ CrUX-Daten erfinden wenn das Feld leer ist.
- ❌ "Pass" sagen wenn Pflicht-Files (security.txt, llms.txt, manifest) fehlen.
- ❌ Reports ohne Verweis auf AGENTS.md-Sektionen oder checklist.md.
- ❌ Findings als JSON-Blob dumpen statt strukturiert auswerten.
Übergabe
- Wenn Audit grün: Site ist technisch ready.
- Design-Qualität bleibt manueller Check via
launchgrade-design (DESIGN.md vs. Output).
- Bei Bestandsmigration: Mid-/Long-Term-Roadmap aus AGENTS.md §11 als Folge-Plan vorschlagen.
Aktualität
Schwellen (CWV, LH-Scores) sind in der AGENTS.md verankert und werden über deren Changelog versioniert. Wenn Google CWV-Schwellen ändert oder eine neue Metrik einführt (Stand 2026: INP hat FID 2024 abgelöst), AGENTS.md §2 zuerst updaten, nicht hier.
1---2name: launchgrade-audit3description: Pre-launch and post-launch audit for web projects per Launchgrade Web Standards 2026. Runs Lighthouse, Mozilla Observatory, and PageSpeed Insights, parses JSON output, maps findings to MUSTs/SHOULDs from AGENTS.md, returns a bucket report (Blockers / Recommended / Nice-to-have). Triggers on "audit", "pre-launch", "check", "Lighthouse", "score", "how fast", URL + check verb, "Audit", "prüfen", "wie schnell".4---56# Launchgrade Web Audit Skill78Dritte Phase im Launchgrade-Workflow: **Verifikation**. Führt die drei essentiellen Tools deterministisch aus und mappt die Findings auf die Standards.910## Wann triggern1112- Pre-Launch-Audit einer neuen Site13- Post-Launch-Health-Check (nach Deployment, nach größerem Release)14- Migration bestehender Site auf Launchgrade-Standards: Baseline-Snapshot15- URL ist im Prompt + Wort "Audit" / "prüfen" / "wie schnell" / "Score" / "Lighthouse" / "CWV"1617Nicht triggern bei: Code-Reviews ohne URL, reinen Setup-Fragen (→ `launchgrade-setup`), Design-/Brand-Fragen (→ `launchgrade-design`).1819## Wo die Wahrheit liegt2021Standards liegen in `./web-standards/AGENTS.md` und `./web-standards/checklist.md` im Repo-Root. Snapshot der Launchgrade Web Standards 2026, mit jedem Release versioniert.2223Relevante Kapitel für Audit:24- §2 Performance (Core Web Vitals)25- §3 Accessibility (WCAG 2.2 AA & BFSG)26- §4 SEO & Discoverability27- §5 Security28- §6 Privacy & DSGVO2930Pre-Launch-Liste: `checklist.md` im selben Repo.3132**Pflicht-Schritt:** AGENTS.md §2–§6 + `checklist.md` lesen, bevor Findings gemappt werden.3334## Drei Tools, deterministisch3536### 1. Lighthouse (Performance + SEO + A11y + Best Practices)3738```bash39lighthouse <url> \40 --output=json --output-path=/tmp/lh-mobile.json \41 --chrome-flags="--headless" --quiet42lighthouse <url> \43 --preset=desktop --output=json --output-path=/tmp/lh-desktop.json \44 --chrome-flags="--headless" --quiet45```4647JSON-Pfade:48- `categories.performance.score` (×100 = Score 0–100)49- `categories.seo.score`50- `categories.accessibility.score`51- `categories.best-practices.score`52- `audits.largest-contentful-paint.numericValue` (ms)53- `audits.cumulative-layout-shift.numericValue`54- `audits.total-blocking-time.numericValue` (ms, Proxy für INP)55- `audits.first-contentful-paint.numericValue` (ms)5657**Pass-Schwellen:**58- Performance Mobile ≥ 80, Desktop ≥ 9059- SEO ≥ 95, A11y ≥ 95, Best Practices ≥ 956061Bei Score-Varianz (±5 ist normal): 3 Runs Median empfehlen.6263### 2. Mozilla Observatory (Security-Header)6465```bash66# Scan triggern67curl -s -X POST "https://observatory-api.mdn.mozilla.net/api/v2/scan?host=<host>"68# Polling bis state=FINISHED:69curl -s "https://observatory-api.mdn.mozilla.net/api/v2/scan?host=<host>"70```7172JSON-Pfade:73- `.grade` (A+, A, B, C, D, F)74- `.score` (0–135)75- `.tests_failed[]` für Detail-Findings (CSP, HSTS, X-Frame, X-Content-Type-Options, Referrer-Policy, Cookie-Flags, SRI)7677**Pass-Schwelle:** Grade ≥ A. AGENTS.md §5 nennt A+ als Ziel — A als Mindest.7879### 3. PageSpeed Insights (CrUX-Felddaten + Lab)8081```bash82curl -s "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=<url>&strategy=mobile&category=performance&category=seo&category=accessibility&category=best-practices"83```8485JSON-Pfade (CrUX = echte User-Daten, nur wenn Domain genug Traffic hat):86- `loadingExperience.metrics.LARGEST_CONTENTFUL_PAINT_MS.percentile` (p75 in ms)87- `loadingExperience.metrics.INTERACTION_TO_NEXT_PAINT.percentile` (p75 in ms)88- `loadingExperience.metrics.CUMULATIVE_LAYOUT_SHIFT_SCORE.percentile` (×100)89- `loadingExperience.overall_category` (FAST / AVERAGE / SLOW)9091**Pass-Schwellen (CWV 2026, p75 echter User):**92- LCP ≤ 2500 ms93- INP ≤ 200 ms94- CLS ≤ 0.1 (im JSON ×100, also ≤ 10)9596Wenn keine CrUX-Daten vorliegen (kleiner Traffic / neue Site): nur Lab-Daten aus Lighthouse gelten als Smoke-Test, das im Report dokumentieren.9798## Vorgehen991001. **Kontext klären:**101 - URL (vollständig mit Protokoll)102 - Geltungsbereich: BFSG-relevant (B2C-Shop / Banking / Buchung)?103 - Single-Page-Check oder Multi-Page (mehrere URLs nacheinander)?1041052. **AGENTS.md §2–§6 + `checklist.md` lesen.**1061073. **Drei Tools nacheinander ausführen, JSON in `/tmp/` speichern.**1081094. **JSON parsen** und gegen Pass-Schwellen + AGENTS.md-MUSTs prüfen. Nicht den JSON-Output in die Antwort dumpen — nur die relevanten Werte zitieren.1101115. **Report in drei Buckets:**112113 - **Blocker** (offene MUSTs, Release-stoppend):114 - Performance < Schwelle (Mobile < 80, Desktop < 90)115 - Observatory Grade < A116 - LH A11y < 95 oder critical/serious violations117 - Fehlende Pflicht-Files (security.txt, robots.txt, sitemap.xml, manifest)118 - DSGVO-Verstöße (Google Fonts CDN, Pre-Consent-Tracking)119 - CrUX (falls vorhanden): CWV-Werte im "schlecht"-Bereich120121 - **Empfohlen** (offene SHOULDs):122 - LH-Score knapp unter Ziel (z.B. SEO 92 statt ≥95)123 - JSON-LD Lücken (Organization ohne sameAs, fehlende Article/FAQPage)124 - Fehlendes `llms.txt`125 - hreflang-Schwächen126 - HSTS ohne `preload`127 - LH SEO-Audit-IDs mit `score < 1`128129 - **Nice-to-have** (MAYs):130 - PWA-Manifest erweitern131 - View Transitions / Speculation Rules132 - AVIF-Pipeline133 - Service Worker1341356. **Konkrete Patches für Blocker:**136 - Bei Code-Zugriff: direkt umsetzbare `Edit`s vorschlagen oder anwenden137 - Sonst: konkrete Konfigurations-Snippets (CSP-Direktive, Cache-Header, JSON-LD)138 - Verweis auf AGENTS.md-Sektion pro Finding139140## Verhalten141142- Alle drei Tools laufen lassen — auch wenn Lighthouse "alles" zu zeigen scheint. Observatory deckt Security-Header tiefer, PSI liefert echte Felddaten.143- Bei BFSG-Relevanz: Lighthouse-A11y reicht NICHT — zusätzlich `@axe-core/cli` ausführen (`axe <url> --tags wcag22aa --save /tmp/axe.json`) und critical/serious violations als Blocker werten.144- JSON nicht im Output dumpen — nur die relevanten Werte zitieren + Bucket-Mapping.145- Auf Deutsch antworten, Tool-Namen / Metriken / Header / JSON-Pfade auf Englisch.146- CrUX-Daten nie erfinden, wenn das Feld leer ist.147- Bei Lighthouse-Varianz: 3 Runs Median bilden.148149## Anti-Patterns150151- ❌ Nur Lighthouse laufen lassen — Security & CrUX fehlen.152- ❌ Score zitieren ohne Bucket-Mapping und ohne AGENTS.md-Verweis.153- ❌ Lighthouse-A11y-Score 100 als "BFSG-konform" verkaufen — A11y braucht axe-core + manueller Test.154- ❌ CrUX-Daten erfinden wenn das Feld leer ist.155- ❌ "Pass" sagen wenn Pflicht-Files (security.txt, llms.txt, manifest) fehlen.156- ❌ Reports ohne Verweis auf AGENTS.md-Sektionen oder checklist.md.157- ❌ Findings als JSON-Blob dumpen statt strukturiert auswerten.158159## Übergabe160161- Wenn Audit grün: Site ist **technisch** ready.162- Design-Qualität bleibt manueller Check via **`launchgrade-design`** (DESIGN.md vs. Output).163- Bei Bestandsmigration: Mid-/Long-Term-Roadmap aus AGENTS.md §11 als Folge-Plan vorschlagen.164165## Aktualität166167Schwellen (CWV, LH-Scores) sind in der AGENTS.md verankert und werden über deren Changelog versioniert. Wenn Google CWV-Schwellen ändert oder eine neue Metrik einführt (Stand 2026: INP hat FID 2024 abgelöst), AGENTS.md §2 zuerst updaten, nicht hier.