Files
dogfather-universe/CLAUDE.md
T
DogFatherGit 83c7310533 CLAUDE.md: Arbeitsanweisungen/Qualitäts-Checkliste für dieses Projekt
Auf Wunsch von Dogi dauerhaft festgehalten: Perfektionsanspruch, i18n-
Pflicht für jeden Text (inkl. JS-gerenderte Strings), Validierungs- und
Verifikations-Workflow vor/nach jedem Deploy, Chrome-Test-Sicherheits-
regel, Nachaudit-Pflicht nach größeren Batches. Spiegelt die
ausführlichere Fassung im Vault (DogFather Website.md).
2026-08-02 14:47:17 +02:00

4.1 KiB

DOGFATHER UNIVERSE — Arbeitsanweisungen

Lies zuerst die ausführliche Projekt-Doku im Vault: DogFather Website.md und DogFather Website - Offene Punkte.md (falls von dort aus zugreifbar). Dieses File ist die kompakte, technische Checkliste für direkte Arbeit in diesem Ordner.

Perfektions-Anspruch (ausdrücklicher Wunsch, 02.08.2026)

Nicht nur das explizit Genannte umsetzen, sondern mitdenken und proaktiv vervollständigen — auch das, was der Nutzer vergisst zu erwähnen, aber offensichtlich zur Aufgabe gehört. Kontinuierlich verbessern, nicht nur einmalig abhaken. Bei jedem "Tagescheck" auch die eigene zuletzt geleistete Arbeit fachlich re-auditieren, nicht nur Uptime prüfen.

Vor jeder neuen Aufgabe kurz durchgehen

  1. i18n ist Pflicht bei jedem sichtbaren Text: alle 5 Sprachen sofort mitliefern — de, de-CH (ECHTER Schweizerdeutscher Dialekt, nicht nur ß→ss), en, fr, pt. Gilt auch für Texte, die nur per JS gesetzt werden (window.dogiUebersetzen() / window.dogiFeld() in assets/js/main.js nutzen), nicht nur data-i18n-Attribute.
    • Bekannter Bug-Klassiker: <h3> in Karten-Grids ohne data-i18n (nur <p> darunter übersetzt) → gemischtsprachige Anzeige. Vor Abschluss IMMER: grep -noP '<h[1-4][^>]*>[^<]*</h[1-4]>' <seite>.html | grep -v data-i18n — jeden Treffer bewusst freigeben (Eigenname/dynamisch ${...}) oder fixen.
  2. Validieren vor jedem Deploy: node --check je geänderter .js, plus Key/Sprachen-Check:
    node -e "
    const fs=require('fs');
    const html=fs.readFileSync('<seite>.html','utf8');
    const keysInHtml=[...new Set([...html.matchAll(/data-i18n=\"([^\"]+)\"/g)].map(m=>m[1]))];
    global.window = {};
    eval(fs.readFileSync('assets/js/i18n-<seite>.js','utf8'));
    const dict = window.I18N_PAGE;
    let missingLang=[];
    for(const k of keysInHtml){ for(const lang of ['de','de-CH','en','fr','pt']){ if(!dict[k] || !dict[k][lang]) missingLang.push(k+':'+lang); } }
    console.log('Keys HTML:', keysInHtml.length, 'Keys dict:', Object.keys(dict).length, 'Fehlende Sprachen:', missingLang);
    "
    
    Muss Fehlende Sprachen: [] zeigen. Bei HTML-Edits zusätzlich Tag-Balance prüfen (öffnende == schließende div/section/a/p/h1-h3).
  3. Nach jedem Deploy live verifizieren (nicht nur der "Success"-Meldung von wrangler glauben): headless Chrome via CDP starten, Sprache umschalten, tatsächlichen Text auslesen.
  4. Chrome-Testprozesse NIE mit taskkill /F /IM chrome.exe — killt alle echten Chrome- Fenster des Nutzers. Immer nur per exakter PID oder --user-data-dir-Profilname gezielt beenden (z.B. Get-CimInstance Win32_Process -Filter "Name='chrome.exe'" | Where-Object { $_.CommandLine -match '<eindeutiger-profilname>' } | Stop-Process).
  5. Wenn der Nutzer "Screen"/"screen" sagt, ist immer "Screenshot" gemeint.
  6. Nach Verifikation aufräumen: temporäre Dateien/Chrome-Profile entfernen.
  7. Nach größeren Batches (viele Seiten parallel via Subagenten): eigenständigen Nachaudit-Sweep über das GESAMTE Projekt fahren, nicht nur die zuletzt bearbeiteten Dateien — Fehler stecken erfahrungsgemäß auch in älteren, scheinbar fertigen Seiten (Muster/Konvention entstand erst später).
  8. Commit-Nachrichten immer auf Deutsch, präzise, mit Begründung ("warum", nicht nur "was").

Projekt-Fakten (Kurzfassung)

  • Statisches HTML/CSS/Vanilla-JS, kein Build-Tool, kein Bundler.
  • Deploy: npx wrangler deploy aus diesem Ordner (Cloudflare Workers Static Assets).
  • i18n-Engine in assets/js/main.js: I18N_CORE (sitewide), window.I18N_PAGE (pro Seite aus assets/js/i18n-<seite>.js), t()/window.dogiUebersetzen()/window.dogiFeld().
  • Personendaten (Scouts/Modis/Creator) in assets/js/data-*.js — role/bio/bioHtml/intro/quote sind mehrsprachige Objekte { de, "de-CH", en, fr, pt }, aufgelöst über window.dogiFeld().
  • Nur Persona-Namen öffentlich (Dogfather/Dogi) — keine echten bürgerlichen Daten ohne ausdrückliche Freigabe.
  • Fotos/Bilder nur nach expliziter Freigabe verwenden, nicht eigenständig in privaten Ordnern suchen.