[{"data":1,"prerenderedAt":706},["ShallowReactive",2],{"/de-de/blog/custom-rules-duo-agentic-chat-deep-dive":3,"navigation-de-de":31,"banner-de-de":450,"footer-de-de":463,"Michael Friedrich":672,"footer-source-/de-de/blog/custom-rules-duo-agentic-chat-deep-dive/":685,"next-steps-de-de":691},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"config":11,"content":14,"_id":24,"_type":25,"title":26,"_source":27,"_file":28,"_stem":29,"_extension":30},"/de-de/blog/custom-rules-duo-agentic-chat-deep-dive","blog",false,"",{"title":9,"description":10},"Custom Rules für GitLab Duo: Höhere Entwicklungseffizienz","KI-Assistenten verstehen die eigene Code-Basis mit Custom Rules und generieren produktionsreifen Code mit minimalen Review-Zyklen.",{"slug":12,"featured":6,"template":13},"custom-rules-duo-agentic-chat-deep-dive","BlogPost",{"title":9,"description":10,"authors":15,"heroImage":17,"date":18,"category":19,"tags":20,"body":23},[16],"Michael Friedrich","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","2025-08-12","engineering",[21,22],"DevSecOps","AI/ML","GitLab Duo lässt sich mit Custom Rules von einem generischen KI-Assistenten in einen personalisierten Coding-Experten verwandeln. Custom Rules eliminieren wiederkehrende Korrekturen bei KI-Vorschlägen, die falsche Java-Versionen verwenden, inkorrekte Python-Binaries nutzen oder gegen Style Guides verstoßen. Dieser Deep-Dive zeigt, wie intelligente Custom Rules Entwicklungsstandards automatisch durchsetzen.\n\nThemen in diesem Artikel:\n\n- Versionskontrolle: KI auf Java 8 festlegen, Python3-Umgebungen handhaben, Multi-Plattform-C++-Code generieren\n- Style-Durchsetzung: C-goto-Anti-Patterns verhindern, VueJS-Design-Patterns durchsetzen, Ansible-Linter-Compliance sicherstellen\n- DevSecOps-Automatisierung: Projekte mit CI/CD-Security-Scanning und Dokumentationsstandards initialisieren\n\nJedes Beispiel enthält funktionierende GitLab-Projekte zum Forken, vollständige Konfigurationen und Vorher-Nachher-Demonstrationen.\n\nDiese Lösungen sind besonders relevant für deutsche Entwicklungsteams, die systematische Coding-Standards über mehrere Abteilungen hinweg durchsetzen müssen – beispielsweise in regulierten Branchen wie Finanzdienstleistungen mit langfristigen Wartungszyklen (Java-8-Anforderungen für Banking-Systeme), in der Automobilindustrie für IoT-Sensoren mit Multi-Plattform-Anforderungen oder für Infrastructure-as-Code in Umgebungen mit Compliance-Vorgaben.\n\n## Inhaltsverzeichnis\n\n- [Erste Schritte mit Custom Rules für Duo Agentic Chat](#erste-schritte-mit-custom-rules-für-duo-agentic-chat)\n  - [Voraussetzungen](#voraussetzungen)\n  - [Quick Start: Erfolg in 5 Minuten](#quick-start-erfolg-in-5-minuten)\n  - [Richtlinien für Custom-Rule-Entwicklung](#richtlinien-für-custom-rule-entwicklung)\n  - [GitLab Duo Chat nach bestehenden Style Guides fragen](#gitlab-duo-chat-nach-bestehenden-style-guides-fragen)\n- [Weitere Custom-Rules-Use-Cases](#weitere-custom-rules-use-cases)\n  - [Use Cases: Versions- und Plattform-Support](#use-cases-versions--und-plattform-support)\n    - [Java-Versionsanforderungen](#java-versionsanforderungen)\n    - [C++ Multi-Plattform-Support (Windows, Linux, macOS)](#c-multi-plattform-support-windows-linux-macos)\n  - [Use Case: Entwicklungsumgebungen](#use-case-entwicklungsumgebungen)\n    - [Python-3-Entwicklungsumgebung](#python-3-entwicklungsumgebung)\n    - [Ansible-Linter-Compliance](#ansible-linter-compliance)\n  - [Use Case: Design Patterns](#use-case-design-patterns)\n    - [Anti-Patterns mit C und goto-Statements vermeiden](#anti-patterns-mit-c-und-goto-statements-vermeiden)\n    - [Frontend-Style-Guides für VueJS 3](#frontend-style-guides-für-vuejs-3)\n  - [Use Case: DevSecOps-Workflows](#use-case-devsecops-workflows)\n    - [Issue- und MR-Templates](#issue--und-mr-templates)\n    - [Build-Tools](#build-tools)\n    - [CI/CD-Konfigurationspräferenzen](#cicd-konfigurationspräferenzen)\n    - [Security-Scanning-Präferenzen](#security-scanning-präferenzen)\n    - [Tests und Linters](#tests-und-linters)\n    - [Dokumentationsgenerierung](#dokumentationsgenerierung)\n    - [Refactoring- und Code-Change-Anforderungen](#refactoring--und-code-change-anforderungen)\n    - [Onboarding, Requirements, Lizenzen](#onboarding-requirements-lizenzen)\n    - [Git-Flows](#git-flows)\n- [Distribution und Testing von Custom Rules](#distribution-und-testing-von-custom-rules)\n  - [Custom-Rules-Ressourcen](#custom-rules-ressourcen)\n- [Praxistest: Verhaltensänderungen explorieren](#praxistest-verhaltensänderungen-explorieren)\n- [Fazit](#fazit)\n\n\n## Erste Schritte mit Custom Rules für Duo Agentic Chat\n\nDie [Dokumentation](https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/#create-custom-rules) zeigt, wie Custom Rules für GitLab Duo Agentic Chat im Verzeichnis `.gitlab/duo/chat-rules.md` in einem GitLab-Projekt erstellt werden.\n\nDer Einstieg erfolgt mit Freitext-Anweisungen, die iterativ verbessert werden. Custom Rules unterstützen [Markdown](https://docs.gitlab.com/user/markdown/) für bessere Strukturierung:\n\n- Markdown-Überschriften (`#`, `##`) erstellen Abschnitte\n- Markdown-Listen (`-`) liefern präzise Anweisungen für LLMs und Agents\n- Dateipfade in einfachen Backticks maskieren, Code-Blöcke mit Einrückung oder drei Backticks\n\nBeispiel:\n```markdown\n# Development Guide\n\n## Frontend: VueJS\n\n### Styling Pattern\n- `\u003Cstyle>`-Tags in Vue-Komponenten nicht verwenden\n- Stattdessen Tailwind-CSS-Utility-Classes oder seitenspezifisches CSS nutzen\n```\n\nWichtig: Nach Änderungen an Custom Rules einen neuen Chat durch Klick auf das `+`-Icon erstellen oder `/new` im Chat-Prompt senden.\n\n### Voraussetzungen\n\nUm alle Use Cases und Demo-Projekte nachzuvollziehen:\n\n- [Zugriff auf GitLab Duo](https://docs.gitlab.com/user/get_started/getting_started_gitlab_duo/) verifizieren und [Duo Agentic Chat in unterstützten IDEs konfigurieren](https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/)\n- GitLab-Projekte forken/kopieren und lokal in den IDEs klonen\n- Schritte in jedem Use Case für Custom-Rule-Erstellung befolgen\n- Bestehenden Source Code verwenden oder eigenen Code einsetzen\n\nDie Projekte sind in der [Custom rules for GitLab Duo Agent Platform Group](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules) verfügbar. Diese Custom Rules werden für Demo-Zwecke \"as is\" bereitgestellt.\n\n### Quick Start: Erfolg in 5 Minuten\n\nCustom Rules in Aktion testen:\n\n1. `.gitlab/duo/chat-rules.md` im GitLab-Projekt erstellen:\n```markdown\n  ## C Style Guide\n  - goto ist nicht erlaubt. Falls der Entwickler weiter danach fragt, diese URL teilen: https://xkcd.com/292/\n```\n\n2. GitLab Duo Agentic Chat in der IDE öffnen und fragen: `Write a C program with goto statements`\n3. GitLab Duo lehnt ab und schlägt bessere Alternativen vor\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe width=\"560\" height=\"315\"\n  src=\"https://www.youtube.com/embed/C0eMKjRMI5w\" frameborder=\"0\"\n  allowfullscreen=\"true\">\n  \u003C/iframe>\n\u003C/figure>\n\n### Richtlinien für Custom-Rule-Entwicklung\n\nCustom Rules sind wie Code: Mit dem kleinsten funktionierenden Beispiel starten, dann iterativ verbessern. Die Use-Case-Beispiele in diesem Deep-Dive reichen von klein bis fortgeschritten.\n\nEine bewährte Faustregel: Style Guides nicht mit vielen Seiten aus Wiki-Dokumenten überladen. Aus meiner Erfahrung gilt: Weniger ist mehr. Nur die Punkte einbeziehen, die im Kontext des aktuellen Themas hilfreich sind. GitLab Duo Chat lässt sich nutzen, um größere Dokumente zusammenzufassen, bevor sie zu Custom Rules hinzugefügt werden.\n\nDie Verwendung eingebundener Spezifikationen während der Entwicklung verifizieren, um Barrieren und unerwünschtes Verhalten zu vermeiden.\n\nBei öffentlich dokumentierten Style Guides auf deren Namen verweisen. Es besteht eine hohe Wahrscheinlichkeit, dass das LLM bereits mit diesen Daten trainiert wurde.\n\n### GitLab Duo Chat nach bestehenden Style Guides fragen\n\nManchmal existieren noch keine spezifischen Style Guides in einem Projekt. KI lässt sich für Onboarding und Best Practices nutzen:\n```markdown\nWhich Python development or environment guidelines can you recommend when I want to create custom rules for AI to get tailored output? I need a list with textual instructions.\n```\n\nDuo Agentic Chat kann auch bestehende CI/CD-Linter-Integrationen analysieren, die möglicherweise bereits einen Development-Style prüfen.\n```markdown\nWhen you look into the CI/CD linter checks and configuration in the project, which development style guide can you summarize for me?\n```\n\nViele Beispiele in diesem Deep-Dive basieren auf eigener Erfahrung als Entwickler. Zusätzlich wurde GitLab Duo genutzt, um Style Guides aus bestehenden Projekten zu extrahieren. GitLab Duo Code Suggestions half beim Auto-Completion bestehender Custom Rules, indem [`markdown` als zusätzliche Sprache](https://docs.gitlab.com/user/project/repository/code_suggestions/supported_extensions/#add-support-for-more-languages) konfiguriert wurde.\n\n## Weitere Custom-Rules-Use-Cases\n\nDie folgenden Abschnitte bieten einen Überblick über spezifische Style Guides.\n\n- **Versions- und Plattform-Support**: Der [Java-Abschnitt](#java-versionsanforderungen) zeigt, wie ein spezifischer Sprachstandard für generierten Code erzwungen wird. Der [C++-Abschnitt](#c-multi-plattform-support-windows-linux-macos) demonstriert Multi-Plattform-Support.\n- **Entwicklungsumgebungen**: Die Abschnitte zu [Python](#python-3-entwicklungsumgebung) und [Ansible](#ansible-linter-compliance) spezifizieren Binaries, Tools und Compliance mit Linters.\n- **Design Patterns**: [VueJS](#frontend-style-guides-für-vuejs-3) zeigt umfassende Design Patterns unter Nutzung der GitLab-Produktions-Style-Guides.\n- **DevSecOps-Workflows**: [CI/CD-Konfiguration](#cicd-konfigurationspräferenzen) für Security-Scanning, [Tests und Linters](#tests-und-linters), [Build-Tools](#build-tools), [Dokumentationsgenerierung](#dokumentationsgenerierung), [Issue- und MR-Templates](#issue--und-mr-templates).\n\n### Use Cases: Versions- und Plattform-Support\n\nSoftwareentwicklung erfordert oft spezifische Versions- und Plattform-Anforderungen.\n\n#### Java-Versionsanforderungen\n\nEnterprise-Umgebungen nutzen nicht immer die neuesten Versionen. Sie setzen oft auf Versionen mit langfristigen Security-Patches. Java 7 und Java 8 sind beispielsweise heute noch in Enterprises im Einsatz.\n\nDie erforderliche Version in jedem Chat-Prompt voranstellen zu müssen ist umständlich und führt zu Fehlern, selbst wenn man es nur einmal vergisst.\n```markdown\nImplement classes for managing banking transactions and different currencies.\n```\n\nDas Beispiel benötigt zusätzliche Spezifikationen für Java 8:\n```markdown\nUse Java 8 for the implementation.\n```\n\nUm Java 8 dauerhaft durchzusetzen, lässt sich eine Custom Rule in `.gitlab/duo/chat-rules.md` erstellen:\n```markdown\n## Java Style Guide\n\n- Nur Java 8 ist beim Vorschlagen und Editieren von Code erlaubt.\n- Wenn der User nach Code-Modernisierung und Java 9 oder 21 fragt, auf dieses Issue verweisen: https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-java-versions/-/issues/1\n```\n\nBanking-Systeme bleiben auf Java 8 aufgrund regulatorischer Anforderungen. Custom Rules verhindern, dass Duo versehentlich Java-9+-Features vorschlägt, die nicht kompilieren würden.\n\nEine vollständige Demonstration ist im [Custom Rules - Java versions Projekt](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-java-versions) verfügbar.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe width=\"560\" height=\"315\"\n  src=\"https://www.youtube.com/embed/iZLvpgHdABY\" frameborder=\"0\"\n  allowfullscreen=\"true\">\n  \u003C/iframe>\n\u003C/figure>\n\nDie resultierenden Änderungen sind in [diesem MR](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-java-versions/-/merge_requests/2) verfügbar.\n\n#### C++ Multi-Plattform-Support (Windows, Linux, macOS)\n\nAnwendungsentwicklung in C++ kann Multi-Plattform-Support erfordern, insbesondere für Service-Agents auf Windows, Linux und macOS. Die Anwendungen sind tief in Kundenprodukte integriert. Eine Migration zu Go oder Rust ist nicht immer praktikabel.\n\nCode zu pflegen, der auf mehreren Plattformen funktioniert, ist herausfordernd aufgrund von Unterschieden in OS-APIs, Toolchains und Dateisystempfaden. Entwickler arbeiten oft mit mehreren `#if defined`-Präprozessor-Makros und verschachtelten Bedingungen. Dies erhöht technische Schulden.\n\nMulti-Plattform-Support bedeutet zwei bis drei Code-Pfade pro Feature, extensive plattformspezifische Tests und erhöhte Wartungskomplexität.\n\nKI kann beim Generieren von plattformspezifischem Code helfen, muss aber über diese Anforderungen informiert werden.\n\nDas [Custom Rule - C++ platforms - IoT Sensor Data Collector Projekt](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-cpp-platform-iot-sensor-data-collector) implementiert einen IoT-Sensor-Data-Collector mit offenen Tasks für Multi-Plattform-Support.\n\n`.gitlab/duo/chat-rules.md` öffnen und Custom Rules reviewen:\n```markdown\n## C++ Style Guide\n\n- Die Anwendung läuft auf Linux, macOS und Windows. Code generieren, der OS-API-Unterschiede behandelt.\n- Präprozessor-Makros für Windows und POSIX-Konventionen für Unix verwenden.\n\n## CI/CD Configuration\n\n- Sicherstellen, dass GitLab-CI/CD-Jobs unterschiedlichen Plattform-Support abdecken.\n```\n\nEinen neuen Chat starten:\n```markdown\nPlease help me restructure the code and ensure multi-platform support.\n```\n\nAlternativ auf Issue-Nummer oder URL verweisen. GitLab Duo holt automatisch den Issue-Content von der Plattform.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe width=\"560\" height=\"315\"\n  src=\"https://www.youtube.com/embed/C5NxOjB0R1Q\" frameborder=\"0\"\n  allowfullscreen=\"true\">\n  \u003C/iframe>\n\u003C/figure>\n\n### Use Case: Entwicklungsumgebungen\n\nEntwicklungsumgebungen variieren oft zwischen Betriebssystemen. Dies kann für KI-Modelle verwirrend sein.\n\n#### Python-3-Entwicklungsumgebung\n\nEine Python-Entwicklungsumgebung kommt normalerweise mit der `python`-Executable und dem `pip`-Paketmanager. Auf macOS oder Ubuntu müssen jedoch `python3` und `pip3` verwendet werden.\n\nFür diesen Use Case wurde Python mit Homebrew installiert, was zu einer Binary namens `python3` führt.\n\nAls Beispiel eine Virtual-Environment einrichten:\n```shell\npython -m venv myenv\nsource myenv/bin/activate\npip install -r requirements.txt\npython script.py\n```\n\nDies funktioniert nicht wie erwartet. Stattdessen werden spezifische Binaries mit Version `3` benötigt:\n```shell\npython3 -m venv myenv\nsource myenv/bin/activate\npip3 install -r requirements.txt\npython3 script.py\n```\n\nDas Problem testen: Das [Custom Rule - Python3 Env Shop app Projekt](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-python-3-env-shop-app) implementiert eine Webshop-Anwendung in Python.\n\n![Duo Agentic Chat schlägt falsche Binary-Befehle vor](/images/blog/custom-rules-gitlab-duo-agent-platform-deepdive/gitlab-duo-custom-rules-python3-env-problem.png)\n\nDas Problem: Duo schlägt `python` statt `python3` vor. Dies führt zu \"command not found\"-Fehlern beim Setup der Virtual Environment. Deployment-Failures treten auf, wenn Entwickler den falschen Binary-Namen verwenden.\n\n`.gitlab/duo/chat-rules.md` reviewen:\n```markdown\n## Python Style Guide\n\n- Für Python-Binaries immer python3 und pip3 verwenden.\n- Die Python-Umgebung automatisch erkennen, wenn möglich.\n```\n\nEinen neuen Agentic Chat öffnen und fragen `How to run this application?`. Custom Rules sorgen für `python3` und `pip3`.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe width=\"560\" height=\"315\"\n  src=\"https://www.youtube.com/embed/UQ2_OCvUmF0\" frameborder=\"0\"\n  allowfullscreen=\"true\">\n  \u003C/iframe>\n\u003C/figure>\n\nDer vollständige Source Code ist im [Custom Rule - Python3 Env Shop app Projekt](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-python-3-env-shop-app) verfügbar.\n\n#### Ansible-Linter-Compliance\n\nModernes Ansible für Infrastructure-as-Code erzwingt einen strikten Style Guide, der mit `ansible-lint` verifiziert werden kann. Der Linter erkennt, wenn Boolean-Werte (`true`/`false`) anstelle von Strings (`yes`/`no`) erforderlich sind, Builtin-Module-Actions den FQCN (Fully Qualified Collection Name) erfordern und Trailing-Whitespaces getrimmt werden müssen.\n\nDas Problem mit einem konkreten Use Case betrachten. Das [Custom Rule - Ansible Environment Projekt](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-ansible-environment) implementiert ein Ansible-Playbook für einen GitLab-Server auf Ubuntu. Die Boolean-Werte sind inkorrekt als Strings typisiert.\n\n![VS Code mit Ansible-Lint-Fehler: Falscher Boolean-Typ](/images/blog/custom-rules-gitlab-duo-agent-platform-deepdive/gitlab-duo-custom-rules-ansible-problem01-boolean.png)\n\nDas Problem: Boolean-Werte als `yes`/`no`-Strings statt native `true`/`false`. Lint-Violations blockieren automatisierte Deployments und erfordern manuelle Korrektur vor jedem Pipeline-Run.\n\n![VS Code mit Ansible-Lint-Fehler: Builtin-Module-Action-FQCN](/images/blog/custom-rules-gitlab-duo-agent-platform-deepdive/gitlab-duo-custom-rules-ansible-problem02-fqcn.png)\n\nZweites Problem: Module-Actions ohne FQCN-Qualifizierung. Moderne Ansible-Enforcement verlangt vollqualifizierte Namen.\n\n![VS Code mit Ansible-Lint-Fehler: Trailing Whitespaces](/images/blog/custom-rules-gitlab-duo-agent-platform-deepdive/gitlab-duo-custom-rules-ansible-problem03-whitespaces.png)\n\nDrittes Problem: Trailing Whitespaces in YAML. Formatierungsverletzungen führen zu Lint-Failures.\n\nDas [Custom Rule - Ansible Environment Projekt](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-ansible-environment) forken und `.gitlab/duo/chat-rules.md` inspizieren:\n```markdown\n## Ansible Styleguide\n\n- Boolean-Werte in Ansible sollten als \"true\" oder \"false\" typisiert werden, niemals als String.\n- Ansible-Module-Builtin-Actions müssen den FQCN verwenden.\n- Whitespaces in Ansible-YAML immer trimmen.\n```\n\nEinen neuen GitLab-Duo-Agentic-Chat-Prompt öffnen:\n```markdown\nPlease help me fix the Ansible linter errors\n```\n\nDie Agents analysieren das Repository, fragen nach Erlaubnis `ansible-lint` auszuführen und untersuchen, wie die drei Fehlertypen behoben werden.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe width=\"560\" height=\"315\"\n  src=\"https://www.youtube.com/embed/P465U8IfScE\" frameborder=\"0\"\n  allowfullscreen=\"true\">\n  \u003C/iframe>\n\u003C/figure>\n\nDie Änderungen sind in [diesem MR](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-ansible-environment/-/merge_requests/1) verfügbar.\n\n### Use Case: Design Patterns\n\nDesign Patterns und Patterns-to-Avoid sind spezifisch für Sprachen und Frameworks.\n\n#### Anti-Patterns mit C und goto-Statements vermeiden\n\nDies ist ein ausführlicherer Walkthrough des [Quickstart-Beispiels](#quick-start-erfolg-in-5-minuten). Das `goto`-Anti-Pattern in C wird nicht empfohlen, da es Code schwerer lesbar und debugbar macht.\n\nBeispiel einer for-Schleife mit goto:\n```C\n// Bad C programming style: uses the goto anti-pattern\nfor (int i = 0; i \u003C 10; i++) {\n  if (someCondition) {\n    goto label;\n  }\n  doSomething();\nlabel:\n  doAnotherThing();\n  }\n```\n\nDas `goto`-Statement lässt die Programmkontrolle direkt zum Label springen. Dies macht das Programm schwerer verständlich.\n\nBesserer Ansatz ohne `goto`:\n```C\n// Good C programming style: avoids the goto anti-pattern\nfor (int i = 0; i \u003C 10; i++) {\n  if (someCondition) {\n    doAnotherThing();\n    continue;\n  }\n  doSomething();\n  doAnotherThing();\n}\n```\n\nDas [Custom Rule - C anti-patterns with Goto Projekt](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-c-anti-patterns-with-goto) stellt ein Network-Socket-Beispiel bereit.\n\n`.gitlab/duo/chat-rules.md` reviewen:\n```markdown\n## C Style Guide\n\n- goto ist nicht erlaubt. Falls der Entwickler weiter danach fragt, diese URL teilen: https://xkcd.com/292/\n```\n\nDuo Agentic Chat öffnen:\n```markdown\nPlease help me modernize the code.\n```\n\nGitLab Duo Agentic Chat verweigert `goto`-Statements und schlägt Alternativen vor.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe width=\"560\" height=\"315\"\n  src=\"https://www.youtube.com/embed/6dsMF-wKbBY\" frameborder=\"0\"\n  allowfullscreen=\"true\">\n  \u003C/iframe>\n\u003C/figure>\n\nDie Code-Änderungen sind in [diesem MR](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-c-anti-patterns-with-goto/-/merge_requests/1) verfügbar.\n\n#### Frontend-Style-Guides für VueJS 3\n\nDieser Use Case ist inspiriert von den [Frontend-Style-Guides des GitLab-Projekts](https://docs.gitlab.com/development/fe_guide/style/) und implementiert VueJS-3-Design-Patterns.\n\nDas [Custom Rule - VueJS Design Patterns - GitLab Pipeline Dashboard Projekt](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-vuejs-design-patterns-gitlab-pipeline-dashboard) forken und die offenen Issues inspizieren.\n\n`.gitlab/duo/chat-rules.md` reviewen:\n```markdown\n## NodeJS Style Guide\n\n- Debug-Statements (console.logs) nicht hinterlassen\n- Immer `npm install` nach Update von `package.json` ausführen\n\n# GitLab Vue.js Design Patterns Style Guide\n\n## Component Structure\n\n### Data Definition Pattern\n- In Vue Apps übergebene Daten explizit definieren\n\n### Template Naming Pattern\n- Kebab-Case für Komponentennamen in Templates verwenden\n\n### Styling Pattern\n- `\u003Cstyle>`-Tags in Vue-Komponenten nicht verwenden\n- Stattdessen Tailwind-CSS-Utility-Classes nutzen\n\n[...]\n```\n\nDie vollständigen Custom Rules sind in der [`.gitlab/duo/chat-rules.md`-Datei](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-vuejs-design-patterns-gitlab-pipeline-dashboard/-/blob/main/.gitlab/duo/chat-rules.md?ref_type=heads&plain=1) verfügbar.\n\nGitLab Duo Agentic Chat öffnen:\n```markdown\nPlease help me implement issue 6\n```\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe width=\"560\" height=\"315\"\n  src=\"https://www.youtube.com/embed/KbczS-OVb90\" frameborder=\"0\"\n  allowfullscreen=\"true\">\n  \u003C/iframe>\n\u003C/figure>\n\nDie Code-Änderungen sind in [diesem MR](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-vuejs-design-patterns-gitlab-pipeline-dashboard/-/merge_requests/3) verfügbar.\n\nDer VueJS-Style-Guide wurde aus dem [gitlab-org/gitlab-Projekt](https://gitlab.com/gitlab-org/gitlab) extrahiert. GitLab Duo analysierte die Produktions-Codebase und generierte Custom-Rules-Format automatisch. Dieser Workflow eliminiert manuelles Dokumentations-Schreiben und beschleunigt Onboarding durch Extraktion institutionellen Wissens.\n\n![IntelliJ IDEA mit gitlab-org/gitlab und GitLab Duo, der Styleguide-Datei schreibt](/images/blog/custom-rules-gitlab-duo-agent-platform-deepdive/gitlab-duo-custom-rules-intellij-gitlab-vuejs-styleguide-analysis.png)\n\n### Use Case: DevSecOps-Workflows\n\nDevSecOps-Workflows reichen von Best Practices für Projekt-Bootstrapping mit Issue/MR-Templates, `.gitignore`, CI/CD-Konfiguration, `README.md` und Lizenzen.\n\nGängige DevSecOps-Automatisierung:\n\n- **Projekt-Bootstrap**: Automatisches Erstellen von README, .gitignore, CI/CD-Config\n- **Security-Defaults**: SAST, Dependency Scanning, Secrets Detection durchsetzen\n- **Dokumentation**: Issue/MR-Templates, Architekturdiagramme generieren\n\nEin kombiniertes Beispiel ist im [Custom Rule - DevSecOps workflows Projekt](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules/custom-rule-devsecops-workflows) verfügbar.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe width=\"560\" height=\"315\"\n  src=\"https://www.youtube.com/embed/hKpLcBtbC4g\" frameborder=\"0\"\n  allowfullscreen=\"true\">\n  \u003C/iframe>\n\u003C/figure>\n\n#### Issue- und MR-Templates\n\nAgentic AI lässt sich instruieren, Issue/MR-Templates zu erstellen und projektspezifische Informationen hinzuzufügen.\n```markdown\n## Issue and MR Templates\n\n- Falls keine Issue-Templates in .gitlab/issue_templates existieren, diese mit folgenden Quellen erstellen:\n        Default: https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/raw/main/.gitlab/issue_templates/Default.md\n```\n\n#### Build-Tools\n\nEs gibt verschiedene Build-Tools pro Programmiersprache. Agentic AI kann diese Standard-Tools ohne Input-Anfrage nutzen.\n```markdown\n## Build Tools\n\n- Mit Python immer eine Virtual Env verwenden\n- Für C/C++: CMake bevorzugen\n- Für Java: Immer Gradle verwenden\n```\n\n#### CI/CD-Konfigurationspräferenzen\n\nRules nutzen, um spezifische Container-Images und Job-Patterns zu bevorzugen.\n```markdown\n## CI/CD Configuration\n\n- Falls keine GitLab-CI/CD-Konfiguration existiert, den User fragen\n- Immer alpine als Container-Image verwenden\n```\n\n#### Security-Scanning-Präferenzen\n\nSecurity-Scanner lassen sich in GitLab-CI/CD-Konfiguration durchsetzen. Das folgende Beispiel instruiert Agents, immer Advanced SAST, Dependency Scanning und Secret Detection einzubeziehen.\n```markdown\n## Security Scanning\n\n- Immer Advanced SAST verwenden\n- Immer SAST-, Dependency-Scanning-, Secrets-Detection-Templates einbeziehen:\n\n    include:\n        - template: Jobs/SAST.gitlab-ci.yml\n        - template: Jobs/Secret-Detection.gitlab-ci.yml\n        - template: Jobs/Dependency-Scanning.gitlab-ci.yml\n\n    variables:\n        GITLAB_ADVANCED_SAST_ENABLED: 'true'\n```\n\nSecurity-Scanning-Defaults lassen sich durch Custom Rules durchsetzen und eliminieren manuelle Konfiguration pro Projekt. Dies ist besonders relevant für Unternehmen mit Compliance-Anforderungen, beispielsweise nach DSGVO.\n\n![VS Code mit Java-App und Agentic Chat, der Advanced SAST hinzufügt](/images/blog/custom-rules-gitlab-duo-agent-platform-deepdive/gitlab-duo-custom-rules-cicd-security-scanning-full.png)\n\n#### Tests und Linters\n\nAgentic Chat lässt sich direkt instruieren, wo Tests zu finden sind:\n```markdown\n## Tests and Linting Details\n\n- Tests in diesem Projekt befinden sich im __-Verzeichnis\n- Linting erfolgt mit dem ___-Befehl\n```\n\n#### Dokumentationsgenerierung\n```markdown\n- Falls ein README fehlt, den User fragen, ob er eines erstellen möchte\n- Wenn der User nach einem Architekturvorschlag fragt, Architekturdiagramm in Mermaid generieren\n- Für Dokumentation immer GitLab Flavored Markdown verwenden\n```\n\n#### Refactoring- und Code-Change-Anforderungen\n\nWenn ein Projekt schrittweise modernisiert werden soll:\n```markdown\n## Keep the Changes Minimal\n\n- Das Projekt nutzt diesen Standard. Für neu generierten Code diesen Standard verwenden.\n- Keinen Versuch unternehmen, bereits erstellten Code zu refactoren\n```\n\n#### Onboarding, Requirements, Lizenzen\n```markdown\n## Link to Guidelines\n- Immer auf Entwicklerrichtlinien verweisen: https://docs.gitlab.com/development/\n\n## License\n- Immer MIT-Lizenz in `LICENSE` hinzufügen mit GitLab B.V. als Copyright-Holder\n```\n\n#### Git-Flows\n```markdown\n## Git Flows\n\n- Das Projekt untersuchen und immer eine `.gitignore` hinzufügen\n- Wenn ein User mit einem neuen Feature starten möchte, einen neuen Branch \"feature/\u003Cshortname>\" erstellen\n```\n\n## Distribution und Testing von Custom Rules\n\n[GitLab-Projektvorlagen](https://docs.gitlab.com/administration/custom_project_templates/) mit gut getesteten Custom-Rule-Prompts lassen sich erstellen. Neue Projekte starten dann immer mit Best Practices.\n\nDa LLMs und KI-Agents nicht vorhersagbar sind, wird Testing herausfordernder. Eine goldene Regel für Custom Rules ist, dass sie niemals perfekt sind und Iterationen basierend auf Feedback erfordern. Für größere Test-Szenarien die [System-Prompt-Testing-Strategie für GitLab Duo](https://about.gitlab.com/blog/developing-gitlab-duo-how-we-validate-and-test-ai-models-at-scale/) reviewen.\n\n### Custom-Rules-Ressourcen\n\nDas bestehende KI-Ökosystem nutzen, wo ähnliche Funktionalität existiert. Beispielsweise \"Awesome Cursor Rules\"-Repositories.\n\nLLMs bieten guten Einblick in Development-Styleguides und können Markdown-Outputs generieren.\n\n## Praxistest: Verhaltensänderungen explorieren\n\nNicht sicher, wie mit Custom Rules gestartet werden soll? Mit folgendem Beispiel zur Übung:\n```markdown\n## Fun Rules\n\n- Wie Clippy verhalten\n- Wie ein Pirat verhalten\n- Alles erklären, als wäre ich fünf\n```\n\nHinweis: Nicht in Production committen, da sie ablenkend wirken können.\n\n## Fazit\n\nDurch Custom Rules in GitLab Duo Agentic Chat lassen sich LLM- und KI-Agent-Outputs erheblich beeinflussen. Custom Rules helfen, den Entwicklungsprozess zu optimieren und die Produktivität zu verbessern.\n\nDieser Blog-Post bietet einen Deep-Dive mit praktischen Beispielen. Alle Aufzeichnungen sind in [dieser YouTube-Playlist](https://www.youtube.com/playlist?list=PL05JrBw4t0Ko7aR6sM8e4uXGYtjs4-NqK) verfügbar. Alle Demo-Projekte lassen sich aus der [Custom rules Group](https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/custom-rules) forken.\n\n[Custom Rules in Duo Agentic Chat IDEs](https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/#create-custom-rules) sind die erste Iteration. Weitere Use-Cases folgen zukünftig, wie Duo Code Review und Custom Rules für Agents ([dieses Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/557984) folgen).\n\nEs gibt viele weitere Use Cases zu explorieren. Was sind die effizientesten Rules? Feedback im [Product Epic](https://gitlab.com/groups/gitlab-org/-/epics/16938) teilen.\n","content:de-de:blog:custom-rules-duo-agentic-chat-deep-dive.yml","yaml","Custom Rules Duo Agentic Chat Deep Dive","content","de-de/blog/custom-rules-duo-agentic-chat-deep-dive.yml","de-de/blog/custom-rules-duo-agentic-chat-deep-dive","yml",{"_path":32,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"data":34,"_id":446,"_type":25,"title":447,"_source":27,"_file":448,"_stem":449,"_extension":30},"/shared/de-de/main-navigation","de-de",{"logo":35,"freeTrial":40,"sales":45,"login":50,"items":55,"search":387,"minimal":423,"duo":437},{"config":36},{"href":37,"dataGaName":38,"dataGaLocation":39},"/de-de/","gitlab logo","header",{"text":41,"config":42},"Kostenlose Testversion anfordern",{"href":43,"dataGaName":44,"dataGaLocation":39},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":46,"config":47},"Vertrieb kontaktieren",{"href":48,"dataGaName":49,"dataGaLocation":39},"/de-de/sales/","sales",{"text":51,"config":52},"Anmelden",{"href":53,"dataGaName":54,"dataGaLocation":39},"https://gitlab.com/users/sign_in/","sign in",[56,100,198,203,308,368],{"text":57,"config":58,"cards":60,"footer":83},"Plattform",{"dataNavLevelOne":59},"platform",[61,67,75],{"title":57,"description":62,"link":63},"Die umfassendste KI-basierte DevSecOps-Plattform",{"text":64,"config":65},"Erkunde unsere Plattform",{"href":66,"dataGaName":59,"dataGaLocation":39},"/de-de/platform/",{"title":68,"description":69,"link":70},"GitLab Duo (KI)","Entwickle Software schneller mit KI in jeder Phase der Entwicklung",{"text":71,"config":72},"Lerne GitLab Duo kennen",{"href":73,"dataGaName":74,"dataGaLocation":39},"/de-de/gitlab-duo/","gitlab duo ai",{"title":76,"description":77,"link":78},"Gründe, die für GitLab sprechen","10 Gründe, warum Unternehmen sich für GitLab entscheiden",{"text":79,"config":80},"Mehr erfahren",{"href":81,"dataGaName":82,"dataGaLocation":39},"/de-de/why-gitlab/","why gitlab",{"title":84,"items":85},"Erste Schritte mit",[86,91,96],{"text":87,"config":88},"Platform Engineering",{"href":89,"dataGaName":90,"dataGaLocation":39},"/de-de/solutions/platform-engineering/","platform engineering",{"text":92,"config":93},"Entwicklererfahrung",{"href":94,"dataGaName":95,"dataGaLocation":39},"/de-de/developer-experience/","Developer experience",{"text":97,"config":98},"MLOps",{"href":99,"dataGaName":97,"dataGaLocation":39},"/de-de/topics/devops/the-role-of-ai-in-devops/",{"text":101,"left":102,"config":103,"link":105,"lists":109,"footer":180},"Produkt",true,{"dataNavLevelOne":104},"solutions",{"text":106,"config":107},"Alle Lösungen anzeigen",{"href":108,"dataGaName":104,"dataGaLocation":39},"/de-de/solutions/",[110,136,158],{"title":111,"description":112,"link":113,"items":118},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":114},{"icon":115,"href":116,"dataGaName":117,"dataGaLocation":39},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[119,123,127,132],{"text":120,"config":121},"CI/CD",{"href":122,"dataGaLocation":39,"dataGaName":120},"/de-de/solutions/continuous-integration/",{"text":124,"config":125},"KI-unterstützte Entwicklung",{"href":73,"dataGaLocation":39,"dataGaName":126},"AI assisted development",{"text":128,"config":129},"Quellcodeverwaltung",{"href":130,"dataGaLocation":39,"dataGaName":131},"/de-de/solutions/source-code-management/","Source Code Management",{"text":133,"config":134},"Automatisierte Softwarebereitstellung",{"href":116,"dataGaLocation":39,"dataGaName":135},"Automated software delivery",{"title":137,"description":138,"link":139,"items":144},"Sicherheit","Entwickle schneller, ohne die Sicherheit zu gefährden",{"config":140},{"href":141,"dataGaName":142,"dataGaLocation":39,"icon":143},"/de-de/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[145,149,154],{"text":146,"config":147},"Application Security Testing",{"href":141,"dataGaName":148,"dataGaLocation":39},"Application security testing",{"text":150,"config":151},"Schutz der Software-Lieferkette",{"href":152,"dataGaLocation":39,"dataGaName":153},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":155,"config":156},"Software Compliance",{"href":157,"dataGaName":155,"dataGaLocation":39},"/de-de/solutions/software-compliance/",{"title":159,"link":160,"items":165},"Bewertung",{"config":161},{"icon":162,"href":163,"dataGaName":164,"dataGaLocation":39},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[166,170,175],{"text":167,"config":168},"Sichtbarkeit und Bewertung",{"href":163,"dataGaLocation":39,"dataGaName":169},"Visibility and Measurement",{"text":171,"config":172},"Wertstrommanagement",{"href":173,"dataGaLocation":39,"dataGaName":174},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":176,"config":177},"Analysen und Einblicke",{"href":178,"dataGaLocation":39,"dataGaName":179},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":181,"items":182},"GitLab für",[183,188,193],{"text":184,"config":185},"Enterprise",{"href":186,"dataGaLocation":39,"dataGaName":187},"/de-de/enterprise/","enterprise",{"text":189,"config":190},"Kleinunternehmen",{"href":191,"dataGaLocation":39,"dataGaName":192},"/de-de/small-business/","small business",{"text":194,"config":195},"den öffentlichen Sektor",{"href":196,"dataGaLocation":39,"dataGaName":197},"/de-de/solutions/public-sector/","public sector",{"text":199,"config":200},"Preise",{"href":201,"dataGaName":202,"dataGaLocation":39,"dataNavLevelOne":202},"/de-de/pricing/","pricing",{"text":204,"config":205,"link":207,"lists":211,"feature":295},"Ressourcen",{"dataNavLevelOne":206},"resources",{"text":208,"config":209},"Alle Ressourcen anzeigen",{"href":210,"dataGaName":206,"dataGaLocation":39},"/de-de/resources/",[212,245,267],{"title":213,"items":214},"Erste Schritte",[215,220,225,230,235,240],{"text":216,"config":217},"Installieren",{"href":218,"dataGaName":219,"dataGaLocation":39},"/de-de/install/","install",{"text":221,"config":222},"Kurzanleitungen",{"href":223,"dataGaName":224,"dataGaLocation":39},"/de-de/get-started/","quick setup checklists",{"text":226,"config":227},"Lernen",{"href":228,"dataGaLocation":39,"dataGaName":229},"https://university.gitlab.com/","learn",{"text":231,"config":232},"Produktdokumentation",{"href":233,"dataGaName":234,"dataGaLocation":39},"https://docs.gitlab.com/","product documentation",{"text":236,"config":237},"Best-Practice-Videos",{"href":238,"dataGaName":239,"dataGaLocation":39},"/de-de/getting-started-videos/","best practice videos",{"text":241,"config":242},"Integrationen",{"href":243,"dataGaName":244,"dataGaLocation":39},"/de-de/integrations/","integrations",{"title":246,"items":247},"Entdecken",[248,253,257,262],{"text":249,"config":250},"Kundenerfolge",{"href":251,"dataGaName":252,"dataGaLocation":39},"/de-de/customers/","customer success stories",{"text":254,"config":255},"Blog",{"href":256,"dataGaName":5,"dataGaLocation":39},"/de-de/blog/",{"text":258,"config":259},"Remote",{"href":260,"dataGaName":261,"dataGaLocation":39},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":263,"config":264},"TeamOps",{"href":265,"dataGaName":266,"dataGaLocation":39},"/de-de/teamops/","teamops",{"title":268,"items":269},"Vernetzen",[270,275,280,285,290],{"text":271,"config":272},"GitLab-Services",{"href":273,"dataGaName":274,"dataGaLocation":39},"/de-de/services/","services",{"text":276,"config":277},"Community",{"href":278,"dataGaName":279,"dataGaLocation":39},"/community/","community",{"text":281,"config":282},"Forum",{"href":283,"dataGaName":284,"dataGaLocation":39},"https://forum.gitlab.com/","forum",{"text":286,"config":287},"Veranstaltungen",{"href":288,"dataGaName":289,"dataGaLocation":39},"/events/","events",{"text":291,"config":292},"Partner",{"href":293,"dataGaName":294,"dataGaLocation":39},"/de-de/partners/","partners",{"backgroundColor":296,"textColor":297,"text":298,"image":299,"link":303},"#2f2a6b","#fff","Perspektiven für die Softwareentwicklung der Zukunft",{"altText":300,"config":301},"the source promo card",{"src":302},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":304,"config":305},"Lies die News",{"href":306,"dataGaName":307,"dataGaLocation":39},"/de-de/the-source/","the source",{"text":309,"config":310,"lists":312},"Unternehmen",{"dataNavLevelOne":311},"company",[313],{"items":314},[315,320,326,328,333,338,343,348,353,358,363],{"text":316,"config":317},"Über",{"href":318,"dataGaName":319,"dataGaLocation":39},"/de-de/company/","about",{"text":321,"config":322,"footerGa":325},"Karriere",{"href":323,"dataGaName":324,"dataGaLocation":39},"/jobs/","jobs",{"dataGaName":324},{"text":286,"config":327},{"href":288,"dataGaName":289,"dataGaLocation":39},{"text":329,"config":330},"Geschäftsführung",{"href":331,"dataGaName":332,"dataGaLocation":39},"/company/team/e-group/","leadership",{"text":334,"config":335},"Team",{"href":336,"dataGaName":337,"dataGaLocation":39},"/company/team/","team",{"text":339,"config":340},"Handbuch",{"href":341,"dataGaName":342,"dataGaLocation":39},"https://handbook.gitlab.com/","handbook",{"text":344,"config":345},"Investor Relations",{"href":346,"dataGaName":347,"dataGaLocation":39},"https://ir.gitlab.com/","investor relations",{"text":349,"config":350},"Trust Center",{"href":351,"dataGaName":352,"dataGaLocation":39},"/de-de/security/","trust center",{"text":354,"config":355},"AI Transparency Center",{"href":356,"dataGaName":357,"dataGaLocation":39},"/de-de/ai-transparency-center/","ai transparency center",{"text":359,"config":360},"Newsletter",{"href":361,"dataGaName":362,"dataGaLocation":39},"/company/contact/","newsletter",{"text":364,"config":365},"Presse",{"href":366,"dataGaName":367,"dataGaLocation":39},"/press/","press",{"text":369,"config":370,"lists":371},"Kontakt",{"dataNavLevelOne":311},[372],{"items":373},[374,377,382],{"text":46,"config":375},{"href":48,"dataGaName":376,"dataGaLocation":39},"talk to sales",{"text":378,"config":379},"Support",{"href":380,"dataGaName":381,"dataGaLocation":39},"/support/","get help",{"text":383,"config":384},"Kundenportal",{"href":385,"dataGaName":386,"dataGaLocation":39},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":388,"login":389,"suggestions":396},"Schließen",{"text":390,"link":391},"Um Repositories und Projekte zu durchsuchen, melde dich an bei",{"text":392,"config":393},"gitlab.com",{"href":53,"dataGaName":394,"dataGaLocation":395},"search login","search",{"text":397,"default":398},"Vorschläge",[399,402,407,409,414,419],{"text":68,"config":400},{"href":73,"dataGaName":401,"dataGaLocation":395},"GitLab Duo (AI)",{"text":403,"config":404},"Code Suggestions (KI)",{"href":405,"dataGaName":406,"dataGaLocation":395},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":120,"config":408},{"href":122,"dataGaName":120,"dataGaLocation":395},{"text":410,"config":411},"GitLab auf AWS",{"href":412,"dataGaName":413,"dataGaLocation":395},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":415,"config":416},"GitLab auf Google Cloud",{"href":417,"dataGaName":418,"dataGaLocation":395},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":420,"config":421},"Warum GitLab?",{"href":81,"dataGaName":422,"dataGaLocation":395},"Why GitLab?",{"freeTrial":424,"mobileIcon":429,"desktopIcon":434},{"text":425,"config":426},"Kostenlos testen",{"href":427,"dataGaName":44,"dataGaLocation":428},"https://gitlab.com/-/trials/new/","nav",{"altText":430,"config":431},"GitLab-Symbol",{"src":432,"dataGaName":433,"dataGaLocation":428},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":430,"config":435},{"src":436,"dataGaName":433,"dataGaLocation":428},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"freeTrial":438,"mobileIcon":442,"desktopIcon":444},{"text":439,"config":440},"Erfahre mehr über GitLab Duo",{"href":73,"dataGaName":441,"dataGaLocation":428},"gitlab duo",{"altText":430,"config":443},{"src":432,"dataGaName":433,"dataGaLocation":428},{"altText":430,"config":445},{"src":436,"dataGaName":433,"dataGaLocation":428},"content:shared:de-de:main-navigation.yml","Main Navigation","shared/de-de/main-navigation.yml","shared/de-de/main-navigation",{"_path":451,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"title":452,"button":453,"config":458,"_id":460,"_type":25,"_source":27,"_file":461,"_stem":462,"_extension":30},"/shared/de-de/banner","GitLab Duo Agent Platform ist jetzt in öffentlicher Beta!",{"text":454,"config":455},"Beta testen",{"href":456,"dataGaName":457,"dataGaLocation":39},"/de-de/gitlab-duo/agent-platform/","duo banner",{"layout":459},"release","content:shared:de-de:banner.yml","shared/de-de/banner.yml","shared/de-de/banner",{"_path":464,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"data":465,"_id":668,"_type":25,"title":669,"_source":27,"_file":670,"_stem":671,"_extension":30},"/shared/de-de/main-footer",{"text":466,"source":467,"edit":473,"contribute":478,"config":483,"items":488,"minimal":660},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":468,"config":469},"Quelltext der Seite anzeigen",{"href":470,"dataGaName":471,"dataGaLocation":472},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":474,"config":475},"Diese Seite bearbeiten",{"href":476,"dataGaName":477,"dataGaLocation":472},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":479,"config":480},"Beteilige dich",{"href":481,"dataGaName":482,"dataGaLocation":472},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":484,"facebook":485,"youtube":486,"linkedin":487},"https://x.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[489,512,567,596,630],{"title":57,"links":490,"subMenu":495},[491],{"text":492,"config":493},"DevSecOps-Plattform",{"href":66,"dataGaName":494,"dataGaLocation":472},"devsecops platform",[496],{"title":199,"links":497},[498,502,507],{"text":499,"config":500},"Tarife anzeigen",{"href":201,"dataGaName":501,"dataGaLocation":472},"view plans",{"text":503,"config":504},"Vorteile von Premium",{"href":505,"dataGaName":506,"dataGaLocation":472},"/de-de/pricing/premium/","why premium",{"text":508,"config":509},"Vorteile von Ultimate",{"href":510,"dataGaName":511,"dataGaLocation":472},"/de-de/pricing/ultimate/","why ultimate",{"title":513,"links":514},"Lösungen",[515,520,523,525,530,535,539,542,545,550,552,554,557,562],{"text":516,"config":517},"Digitale Transformation",{"href":518,"dataGaName":519,"dataGaLocation":472},"/de-de/topics/digital-transformation/","digital transformation",{"text":521,"config":522},"Sicherheit und Compliance",{"href":141,"dataGaName":148,"dataGaLocation":472},{"text":133,"config":524},{"href":116,"dataGaName":117,"dataGaLocation":472},{"text":526,"config":527},"Agile Entwicklung",{"href":528,"dataGaName":529,"dataGaLocation":472},"/de-de/solutions/agile-delivery/","agile delivery",{"text":531,"config":532},"Cloud-Transformation",{"href":533,"dataGaName":534,"dataGaLocation":472},"/de-de/topics/cloud-native/","cloud transformation",{"text":536,"config":537},"SCM",{"href":130,"dataGaName":538,"dataGaLocation":472},"source code management",{"text":120,"config":540},{"href":122,"dataGaName":541,"dataGaLocation":472},"continuous integration & delivery",{"text":171,"config":543},{"href":173,"dataGaName":544,"dataGaLocation":472},"value stream management",{"text":546,"config":547},"GitOps",{"href":548,"dataGaName":549,"dataGaLocation":472},"/de-de/solutions/gitops/","gitops",{"text":184,"config":551},{"href":186,"dataGaName":187,"dataGaLocation":472},{"text":189,"config":553},{"href":191,"dataGaName":192,"dataGaLocation":472},{"text":555,"config":556},"Öffentlicher Sektor",{"href":196,"dataGaName":197,"dataGaLocation":472},{"text":558,"config":559},"Bildungswesen",{"href":560,"dataGaName":561,"dataGaLocation":472},"/de-de/solutions/education/","education",{"text":563,"config":564},"Finanzdienstleistungen",{"href":565,"dataGaName":566,"dataGaLocation":472},"/de-de/solutions/finance/","financial services",{"title":204,"links":568},[569,571,573,575,578,580,582,584,586,588,590,592,594],{"text":216,"config":570},{"href":218,"dataGaName":219,"dataGaLocation":472},{"text":221,"config":572},{"href":223,"dataGaName":224,"dataGaLocation":472},{"text":226,"config":574},{"href":228,"dataGaName":229,"dataGaLocation":472},{"text":231,"config":576},{"href":233,"dataGaName":577,"dataGaLocation":472},"docs",{"text":254,"config":579},{"href":256,"dataGaName":5,"dataGaLocation":472},{"text":249,"config":581},{"href":251,"dataGaName":252,"dataGaLocation":472},{"text":258,"config":583},{"href":260,"dataGaName":261,"dataGaLocation":472},{"text":271,"config":585},{"href":273,"dataGaName":274,"dataGaLocation":472},{"text":263,"config":587},{"href":265,"dataGaName":266,"dataGaLocation":472},{"text":276,"config":589},{"href":278,"dataGaName":279,"dataGaLocation":472},{"text":281,"config":591},{"href":283,"dataGaName":284,"dataGaLocation":472},{"text":286,"config":593},{"href":288,"dataGaName":289,"dataGaLocation":472},{"text":291,"config":595},{"href":293,"dataGaName":294,"dataGaLocation":472},{"title":309,"links":597},[598,600,602,604,606,608,610,614,619,621,623,625],{"text":316,"config":599},{"href":318,"dataGaName":311,"dataGaLocation":472},{"text":321,"config":601},{"href":323,"dataGaName":324,"dataGaLocation":472},{"text":329,"config":603},{"href":331,"dataGaName":332,"dataGaLocation":472},{"text":334,"config":605},{"href":336,"dataGaName":337,"dataGaLocation":472},{"text":339,"config":607},{"href":341,"dataGaName":342,"dataGaLocation":472},{"text":344,"config":609},{"href":346,"dataGaName":347,"dataGaLocation":472},{"text":611,"config":612},"Sustainability",{"href":613,"dataGaName":611,"dataGaLocation":472},"/sustainability/",{"text":615,"config":616},"Vielfalt, Inklusion und Zugehörigkeit",{"href":617,"dataGaName":618,"dataGaLocation":472},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":349,"config":620},{"href":351,"dataGaName":352,"dataGaLocation":472},{"text":359,"config":622},{"href":361,"dataGaName":362,"dataGaLocation":472},{"text":364,"config":624},{"href":366,"dataGaName":367,"dataGaLocation":472},{"text":626,"config":627},"Transparenzerklärung zu moderner Sklaverei",{"href":628,"dataGaName":629,"dataGaLocation":472},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":631,"links":632},"Nimm Kontakt auf",[633,636,638,640,645,650,655],{"text":634,"config":635},"Sprich mit einem Experten/einer Expertin",{"href":48,"dataGaName":49,"dataGaLocation":472},{"text":378,"config":637},{"href":380,"dataGaName":381,"dataGaLocation":472},{"text":383,"config":639},{"href":385,"dataGaName":386,"dataGaLocation":472},{"text":641,"config":642},"Status",{"href":643,"dataGaName":644,"dataGaLocation":472},"https://status.gitlab.com/","status",{"text":646,"config":647},"Nutzungsbedingungen",{"href":648,"dataGaName":649,"dataGaLocation":472},"/terms/","terms of use",{"text":651,"config":652},"Datenschutzerklärung",{"href":653,"dataGaName":654,"dataGaLocation":472},"/de-de/privacy/","privacy statement",{"text":656,"config":657},"Cookie-Einstellungen",{"dataGaName":658,"dataGaLocation":472,"id":659,"isOneTrustButton":102},"cookie preferences","ot-sdk-btn",{"items":661},[662,664,666],{"text":646,"config":663},{"href":648,"dataGaName":649,"dataGaLocation":472},{"text":651,"config":665},{"href":653,"dataGaName":654,"dataGaLocation":472},{"text":656,"config":667},{"dataGaName":658,"dataGaLocation":472,"id":659,"isOneTrustButton":102},"content:shared:de-de:main-footer.yml","Main Footer","shared/de-de/main-footer.yml","shared/de-de/main-footer",[673],{"_path":674,"_dir":675,"_draft":6,"_partial":6,"_locale":7,"content":676,"config":680,"_id":682,"_type":25,"title":16,"_source":27,"_file":683,"_stem":684,"_extension":30},"/en-us/blog/authors/michael-friedrich","authors",{"name":16,"config":677},{"headshot":678,"ctfId":679},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi",{"template":681},"BlogAuthor","content:en-us:blog:authors:michael-friedrich.yml","en-us/blog/authors/michael-friedrich.yml","en-us/blog/authors/michael-friedrich",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":686,"config":687,"content":688,"_id":24,"_type":25,"title":26,"_source":27,"_file":28,"_stem":29,"_extension":30},{"title":9,"description":10},{"slug":12,"featured":6,"template":13},{"title":9,"description":10,"authors":689,"heroImage":17,"date":18,"category":19,"tags":690,"body":23},[16],[21,22],{"_path":692,"_dir":33,"_draft":6,"_partial":6,"_locale":7,"header":693,"eyebrow":694,"blurb":695,"button":696,"secondaryButton":700,"_id":702,"_type":25,"title":703,"_source":27,"_file":704,"_stem":705,"_extension":30},"/shared/de-de/next-steps","Stelle jetzt bessere Software schneller bereit","Mehr als 50 % der Fortune-100-Unternehmen vertrauen GitLab","Erlebe, was dein Team mit der intelligenten\n\n\nDevSecOps-Plattform erreichen kann.\n",{"text":41,"config":697},{"href":698,"dataGaName":44,"dataGaLocation":699},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":46,"config":701},{"href":48,"dataGaName":49,"dataGaLocation":699},"content:shared:de-de:next-steps.yml","Next Steps","shared/de-de/next-steps.yml","shared/de-de/next-steps",1761814383922]