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");
