Files
Claw (KI-Assistent) 0c6f8cac5a
All checks were successful
Deploy Feature Branch to Test / PHP Syntax Check (push) Successful in 35s
Deploy Feature Branch to Test / CSS Lint (stylelint) (push) Successful in 1m13s
Deploy Feature Branch to Test / HTML Lint (htmlhint) (push) Successful in 1m12s
Lint / PHP Syntax Check (push) Successful in 33s
Lint / CSS Lint (stylelint) (push) Successful in 1m13s
Lint / HTML Lint (htmlhint) (push) Successful in 1m7s
Lint / PHP Syntax Check (pull_request) Successful in 31s
Lint / CSS Lint (stylelint) (pull_request) Successful in 1m12s
Lint / HTML Lint (htmlhint) (pull_request) Successful in 1m9s
Deploy Feature Branch to Test / Deploy to Test Environment (push) Successful in 25s
merge: resolve conflict in deploy-test.yml with main
2026-05-22 14:28:47 +00:00

149 lines
6.5 KiB
Markdown
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`)
- `<title>` erforderlich (`title-require`)
---
## Entwicklung
- Kein Build-Step erforderlich statische Dateien
- Lokaler Entwicklungsserver: `npx serve .` oder VS Code Live Server
- Node.js ≥ 18, npm ≥ 9
## Deployment
```powershell
# Image bauen
docker build -t landingpage-haus-schleusingen .
# Container starten
docker run -d -p 8080:80 -v ${pwd}:/usr/share/nginx/html:ro landingpage-haus-schleusingen
```
Website erreichbar unter: **<http://localhost:8080>**
---
## Wichtige Erkenntnisse
- jQuery wird als globale Bibliothek vorausgesetzt (in ESLint-Konfig definiert)
- Masonry (`masonry.pkgd.min.js`) wird für Layout-Zwecke eingesetzt **nicht bearbeiten**
- Husky Pre-Commit-Hook führt automatisch lint-staged aus (kein manueller Schritt nötig beim Committen)
- Prettier-Formatierung ist verpflichtend Code wird bei Commits automatisch formatiert
- Projekt ist `commonjs`-Typ (kein ESM in `package.json`)
---
## Agent-Erkenntnisse (Systemumgebung & Tools)
### Terminal & Encoding (Windows)
- **PowerShell-Encoding-Probleme**: Terminal-Ausgabe über `run_terminal_command` zeigt UTF-8-Zeichen (z. B. deutsche Umlaute) oft falsch an. Die Datei selbst ist korrekt. Immer mit `read_file` statt Terminal-Ausgabe prüfen.
- **Backtick-Konflikt**: PowerShell nutzt Backtick (``) als Escape-Zeichen. Markdown-Backticks in Here-Strings (@"..."@) führen zu Fehlern. Für Dateien mit Backticks stattdessen **Node.js-Skripte** verwenden.
- **Zuverlässige Dateierstellung**: Bei Inhalten mit Sonderzeichen (Umlaute, Backticks, Emojis) Node.js-Skripte (`fs.writeFileSync`) statt PowerShell-Befehle nutzen. Beispiel:
```javascript
const fs = require(`fs`);
const B = String.fromCharCode(96); // Backtick vermeiden
const lines = [`Zeile 1`, `Zeile 2`];
fs.writeFileSync(`datei.md`, lines.join(`\n`), `utf8`);
```
### Datei-Tools
- **`read_file`-Anzeigegrenze**: Lange Dateien werden in der Vorschau scheinbar abgeschnitten die Datei selbst ist vollständig. Mit `run_terminal_command` und `Get-Content -Tail N` das Dateiende prüfen.
- **`create_new_file`-Quoting**: Inhalt darf nicht mit Anführungszeichen beginnen, da diese sonst als Teil des Inhalts übernommen werden. Immer die erstellte Datei verifizieren.
- **`single_find_and_replace`**: Exakte Stringübereinstimmung erforderlich. Zeilenumbrüche und Leerzeichen müssen exakt passen. Vor dem Ersetzen den Dateiinhalt mit `read_file` oder `read_file_range` prüfen.
- **`edit_existing_file`-Encoding**: Kann UTF-8-Zeichen (Umlaute, Sonderzeichen) beschädigen. Für Dateien mit Nicht-ASCII-Zeichen stattdessen Node.js-Skripte verwenden.
### Workflow-Empfehlungen
1. **Dateien lesen**: Immer `read_file` oder `read_file_range` nutzen (nicht Terminal).
2. **Dateien schreiben/ändern**: `edit_existing_file` oder `single_find_and_replace` bevorzugen aber Vorsicht bei Nicht-ASCII-Zeichen.
3. **Komplexe Dateierstellung**: Node.js-Skript über `create_new_file` + `run_terminal_command` ausführen, danach Hilfsskript löschen.
4. **Terminal-Ausgabe**: Nur für Dateigrößen, Git-Befehle und npm-Skripte nutzen nicht zur Inhaltsprüfung von Textdateien.