From 5eb902d434668cab69b0aabc1657a232ccc0ca4f Mon Sep 17 00:00:00 2001 From: Martin Date: Sun, 10 May 2026 12:07:11 +0200 Subject: [PATCH] mcp --- .continue/mcpServers/new-mcp-server.yaml | 7 + AGENTS.md | 129 +++++++++ fix-agents.js | 318 +++++++++++++++++++++++ 3 files changed, 454 insertions(+) create mode 100644 .continue/mcpServers/new-mcp-server.yaml create mode 100644 AGENTS.md create mode 100644 fix-agents.js diff --git a/.continue/mcpServers/new-mcp-server.yaml b/.continue/mcpServers/new-mcp-server.yaml new file mode 100644 index 0000000..75ab6cc --- /dev/null +++ b/.continue/mcpServers/new-mcp-server.yaml @@ -0,0 +1,7 @@ +name: New MCP server +version: 0.0.1 +schema: v1 +mcpServers: + - name: playwright + command: npx + args: ["@playwright/mcp"] \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..d60d5f8 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,129 @@ +# Agent-Richtlinien für dieses Projekt + +## Systemumgebung + +- **Betriebssystem: Windows** – Alle Befehle und Pfade müssen Windows-kompatibel sein (z. B. Pfadtrennzeichen `\`, PowerShell-Syntax). + +--- + +## 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 | +| --------------------------- | -------------------------------------------- | +| `haus-schleusingen.html` | Einstiegsseite (einzige HTML-Datei) | +| `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`) +- `` 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. diff --git a/fix-agents.js b/fix-agents.js new file mode 100644 index 0000000..50ffb61 --- /dev/null +++ b/fix-agents.js @@ -0,0 +1,318 @@ +const fs = require("fs"); + +const B = String.fromCharCode(96); +const T = B + B + B; + +const lines = [ + "# Agent-Richtlinien f\u00fcr dieses Projekt", + "", + "## Systemumgebung", + "", + "- **Betriebssystem: Windows** \u2013 Alle Befehle und Pfade m\u00fcssen Windows-kompatibel sein (z. B. Pfadtrennzeichen " + + B + + "\\" + + B + + ", PowerShell-Syntax).", + "", + "---", + "", + "## Projekt\u00fcbersicht", + "", + "- **Statische Landingpage** f\u00fcr **Haus Schleusingen**", + "- Reines HTML, CSS und JavaScript (kein Framework, kein Build-Step)", + "- Ausgeliefert \u00fcber einen **Nginx-Docker-Container** (nginx:alpine)", + "- Git-Repository: " + + B + + "https://git.home.kies-media.de/greggy/landingpage-haus-schleusingen.git" + + B, + "", + "### Dateistruktur", + "", + "| Pfad | Beschreibung |", + "|-------------------------------|----------------------------------------------|", + "| " + + B + + "haus-schleusingen.html" + + B + + " | Einstiegsseite (einzige HTML-Datei) |", + "| " + + B + + "css/haus-schleusingen.css" + + B + + " | Hauptstylesheet |", + "| " + + B + + "js/haus-schleusingen.js" + + B + + " | Haupt-JavaScript |", + "| " + + B + + "js/masonry.pkgd.min.js" + + B + + " | Masonry-Layout-Bibliothek (nicht bearbeiten) |", + "| " + + B + + "fonts/fonts.css" + + B + + " | Schriftart-Einbindungen |", + "| " + + B + + "bilder/" + + B + + " | Bildressourcen |", + "| " + + B + + "nginx.conf" + + B + + " | Nginx-Konfiguration |", + "| " + + B + + "Dockerfile" + + B + + " | Docker-Image-Definition (nginx:alpine) |", + "", + "---", + "", + "## Code-Qualit\u00e4t & Linting", + "", + "### Wichtig: Linting nach jeder Code\u00e4nderung durchf\u00fchren", + "", + "**F\u00fchre nach jeder Code\u00e4nderung " + + B + + "npm run lint" + + B + + " aus**, um die Codequalit\u00e4t zu garantieren.", + "", + "Das Projekt verwendet folgende Tools:", + "", + "| Werkzeug | Zweck | Konfigurationsdatei | Befehl |", + "| --------------- | -------------------- | ------------------- | ------------------- |", + "| **HTMLHint** | HTML-Linting | " + + B + + ".htmlhintrc" + + B + + " | " + + B + + "npm run lint:html" + + B + + " |", + "| **Stylelint** | CSS-Linting | " + + B + + ".stylelintrc.json" + + B + + " | " + + B + + "npm run lint:css" + + B + + " |", + "| **ESLint** | JavaScript-Linting | " + + B + + "eslint.config.js" + + B + + " | " + + B + + "npm run lint:js" + + B + + " |", + "| **Prettier** | Code-Formatierung | " + + B + + ".prettierrc" + + B + + " | " + + B + + "npm run format" + + B + + " |", + "| **Husky** | Git Hooks | " + + B + + ".husky/pre-commit" + + B + + " | \u2013 |", + "| **lint-staged** | Gesteuerte Dateien | " + + B + + "package.json" + + B + + " | \u2013 |", + "", + "Alle Linter auf einmal ausf\u00fchren:", + "", + T + "powershell", + "npm run lint", + T, + "", + "### ESLint-Regeln (besonders beachten)", + "", + "- " + B + "no-unused-vars" + B + " \u2192 **Warnung** (ungenutzte Variablen vermeiden)", + "- " + B + "no-undef" + B + " \u2192 **Warnung** (nur definierte Variablen verwenden)", + "- " + B + "prettier/prettier" + B + " \u2192 **Fehler** (Prettier-Formatierung ist Pflicht)", + "- Globale Variablen: " + B + "browser" + B + " und " + B + "jquery" + B + " sind verf\u00fcgbar", + "- " + B + "*.min.js" + B + "-Dateien werden ignoriert (nicht linten/bearbeiten)", + "", + "### HTMLHint-Regeln", + "", + "- Tag-Paarung Pflicht (" + B + "tag-pair" + B + ")", + "- Tags & Attribute in Kleinschreibung (" + + B + + "tagname-lowercase" + + B + + ", " + + B + + "attr-lowercase" + + B + + ")", + "- Doctype an erster Stelle (" + B + "doctype-first" + B + ")", + "- Eindeutige IDs (" + B + "id-unique" + B + ")", + "- " + B + "alt" + B + "-Attribut bei Bildern Pflicht (" + B + "alt-require" + B + ")", + "- " + B + "<title>" + B + " erforderlich (" + B + "title-require" + B + ")", + "", + "---", + "", + "## Entwicklung", + "", + "- Kein Build-Step erforderlich \u2013 statische Dateien", + "- Lokaler Entwicklungsserver: " + B + "npx serve ." + B + " oder VS Code Live Server", + "- Node.js \u2265 18, npm \u2265 9", + "", + "## Deployment", + "", + T + "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", + T, + "", + "Website erreichbar unter: **<http://localhost:8080>**", + "", + "---", + "", + "## Wichtige Erkenntnisse", + "", + "- jQuery wird als globale Bibliothek vorausgesetzt (in ESLint-Konfig definiert)", + "- Masonry (" + + B + + "masonry.pkgd.min.js" + + B + + ") wird f\u00fcr Layout-Zwecke eingesetzt \u2013 **nicht bearbeiten**", + "- Husky Pre-Commit-Hook f\u00fchrt automatisch lint-staged aus (kein manueller Schritt n\u00f6tig beim Committen)", + "- Prettier-Formatierung ist verpflichtend \u2013 Code wird bei Commits automatisch formatiert", + "- Projekt ist " + B + "commonjs" + B + "-Typ (kein ESM in " + B + "package.json" + B + ")", + "", + "---", + "", + "## Agent-Erkenntnisse (Systemumgebung & Tools)", + "", + "### Terminal & Encoding (Windows)", + "", + "- **PowerShell-Encoding-Probleme**: Terminal-Ausgabe \u00fcber " + + B + + "run_terminal_command" + + B + + " zeigt UTF-8-Zeichen (z. B. deutsche Umlaute) oft falsch an. Die Datei selbst ist korrekt. Immer mit " + + B + + "read_file" + + B + + " statt Terminal-Ausgabe pr\u00fcfen.", + "- **Backtick-Konflikt**: PowerShell nutzt Backtick (" + + B + + B + + ") als Escape-Zeichen. Markdown-Backticks in Here-Strings (@\u0022...\u0022@) f\u00fchren zu Fehlern. F\u00fcr Dateien mit Backticks stattdessen **Node.js-Skripte** verwenden.", + "- **Zuverl\u00e4ssige Dateierstellung**: Bei Inhalten mit Sonderzeichen (Umlaute, Backticks, Emojis) Node.js-Skripte (" + + B + + "fs.writeFileSync" + + B + + ") statt PowerShell-Befehle nutzen. Beispiel:", + " " + T + "javascript", + " const fs = require(" + B + "fs" + B + ");", + " const B = String.fromCharCode(96); // Backtick vermeiden", + " const lines = [" + B + "Zeile 1" + B + ", " + B + "Zeile 2" + B + "];", + " fs.writeFileSync(" + + B + + "datei.md" + + B + + ", lines.join(" + + B + + "\\n" + + B + + "), " + + B + + "utf8" + + B + + ");", + " " + T, + "", + "### Datei-Tools", + "", + "- **" + + B + + "read_file" + + B + + "-Anzeigegrenze**: Lange Dateien werden in der Vorschau scheinbar abgeschnitten \u2013 die Datei selbst ist vollst\u00e4ndig. Mit " + + B + + "run_terminal_command" + + B + + " und " + + B + + "Get-Content -Tail N" + + B + + " das Dateiende pr\u00fcfen.", + "- **" + + B + + "create_new_file" + + B + + "-Quoting**: Inhalt darf nicht mit Anf\u00fchrungszeichen beginnen, da diese sonst als Teil des Inhalts \u00fcbernommen werden. Immer die erstellte Datei verifizieren.", + "- **" + + B + + "single_find_and_replace" + + B + + "**: Exakte String\u00fcbereinstimmung erforderlich. Zeilenumbr\u00fcche und Leerzeichen m\u00fcssen exakt passen. Vor dem Ersetzen den Dateiinhalt mit " + + B + + "read_file" + + B + + " oder " + + B + + "read_file_range" + + B + + " pr\u00fcfen.", + "- **" + + B + + "edit_existing_file" + + B + + "-Encoding**: Kann UTF-8-Zeichen (Umlaute, Sonderzeichen) besch\u00e4digen. F\u00fcr Dateien mit Nicht-ASCII-Zeichen stattdessen Node.js-Skripte verwenden.", + "", + "### Workflow-Empfehlungen", + "", + "1. **Dateien lesen**: Immer " + + B + + "read_file" + + B + + " oder " + + B + + "read_file_range" + + B + + " nutzen (nicht Terminal).", + "2. **Dateien schreiben/\u00e4ndern**: " + + B + + "edit_existing_file" + + B + + " oder " + + B + + "single_find_and_replace" + + B + + " bevorzugen \u2013 aber Vorsicht bei Nicht-ASCII-Zeichen.", + "3. **Komplexe Dateierstellung**: Node.js-Skript \u00fcber " + + B + + "create_new_file" + + B + + " + " + + B + + "run_terminal_command" + + B + + " ausf\u00fchren, danach Hilfsskript l\u00f6schen.", + "4. **Terminal-Ausgabe**: Nur f\u00fcr Dateigr\u00f6\u00dfen, Git-Befehle und npm-Skripte nutzen \u2013 nicht zur Inhaltspr\u00fcfung von Textdateien.", + "", +]; + +fs.writeFileSync("AGENTS.md", lines.join("\n"), "utf8"); +console.log("Done");