# Agent-Richtlinien für dieses Projekt ## ⚠️ WICHTIG: Pre-Commit Hooks sind Pflicht **Jeder Commit MUSS die Pre-Commit Lint-Checks durchlaufen. Niemals `--no-verify` verwenden!** ### Für AI-Agents (Claw etc.): - Verwende `./scripts/safe-commit.sh "Nachricht"` statt `git commit -m "..."` - Das Script garantiert dass lint-staged läuft (PHP, HTML, CSS, JS, Prettier) - Wenn ein Linter fehlschlägt: **Fehler beheben, nicht überspringen!** - Niemals `git commit --no-verify` verwenden ### Lint-Checks die laufen: - **PHP:** `php -l` Syntax-Check (via `scripts/lint-php.sh`) - **HTML:** htmlhint - **CSS:** stylelint + prettier - **JS:** eslint + prettier - **JSON/MD:** prettier --- ## Systemumgebung - **Betriebssystem: Linux** – Befehle und Pfade sind Linux-kompatibel. --- ## Projektübersicht - **Statische Landingpage** für **Haus Schleusingen** - Reines HTML, CSS und JavaScript (kein Framework, kein Build-Step) - Ausgeliefert über einen **Nginx-Docker-Container** (nginx:alpine) - Git-Repository: `https://git.home.kies-media.de/greggy/landingpage-haus-schleusingen.git` ### Dateistruktur | Pfad | Beschreibung | | --------------------------- | -------------------------------------------- | | `public/index.php` | Einstiegsseite (PHP-Entry-Point) | | `css/haus-schleusingen.css` | Hauptstylesheet | | `js/haus-schleusingen.js` | Haupt-JavaScript | | `js/masonry.pkgd.min.js` | Masonry-Layout-Bibliothek (nicht bearbeiten) | | `fonts/fonts.css` | Schriftart-Einbindungen | | `bilder/` | Bildressourcen | | `nginx.conf` | Nginx-Konfiguration | | `Dockerfile` | Docker-Image-Definition (nginx:alpine) | --- ## Code-Qualität & Linting ### Wichtig: Linting nach jeder Codeänderung durchführen **Führe nach jeder Codeänderung `npm run lint` aus**, um die Codequalität zu garantieren. Das Projekt verwendet folgende Tools: | Werkzeug | Zweck | Konfigurationsdatei | Befehl | | --------------- | ------------------ | ------------------- | ------------------- | | **HTMLHint** | HTML-Linting | `.htmlhintrc` | `npm run lint:html` | | **Stylelint** | CSS-Linting | `.stylelintrc.json` | `npm run lint:css` | | **ESLint** | JavaScript-Linting | `eslint.config.js` | `npm run lint:js` | | **Prettier** | Code-Formatierung | `.prettierrc` | `npm run format` | | **Husky** | Git Hooks | `.husky/pre-commit` | – | | **lint-staged** | Gesteuerte Dateien | `package.json` | – | Alle Linter auf einmal ausführen: ```powershell npm run lint ``` ### ESLint-Regeln (besonders beachten) - `no-unused-vars` → **Warnung** (ungenutzte Variablen vermeiden) - `no-undef` → **Warnung** (nur definierte Variablen verwenden) - `prettier/prettier` → **Fehler** (Prettier-Formatierung ist Pflicht) - Globale Variablen: `browser` und `jquery` sind verfügbar - `*.min.js`-Dateien werden ignoriert (nicht linten/bearbeiten) ### HTMLHint-Regeln - Tag-Paarung Pflicht (`tag-pair`) - Tags & Attribute in Kleinschreibung (`tagname-lowercase`, `attr-lowercase`) - Doctype an erster Stelle (`doctype-first`) - Eindeutige IDs (`id-unique`) - `alt`-Attribut bei Bildern Pflicht (`alt-require`) - `