[{"data":1,"prerenderedAt":1900},["ShallowReactive",2],{"/de-de/blog/claude-code-and-gitlab":3,"navigation-de-de":1137,"banner-de-de":1561,"footer-de-de":1570,"blog-post-authors-de-de-Michael Friedrich":1813,"blog-related-posts-de-de-claude-code-and-gitlab":1828,"blog-promotions-de-de":1837,"next-steps-de-de":1890},{"id":4,"title":5,"authors":6,"body":8,"category":1118,"date":1119,"description":1120,"extension":1121,"externalUrl":1122,"featured":148,"heroImage":1123,"meta":1124,"navigation":148,"path":1125,"seo":1126,"slug":1129,"stem":1130,"tags":1131,"template":1135,"updatedDate":1122,"__hash__":1136},"blogPosts/de-de/blog/claude-code-and-gitlab.md","Claude Code und GitLab: Drei Workflows bis zur Produktion",[7],"Michael Friedrich",{"type":9,"value":10,"toc":1103},"minimark",[11,15,18,21,24,37,42,80,85,88,108,156,159,171,175,182,189,202,215,221,230,354,357,366,376,379,382,412,421,427,433,436,449,453,456,463,467,476,487,497,524,533,551,554,573,579,588,591,595,602,611,618,624,627,636,643,649,652,673,676,682,685,694,701,707,710,716,720,729,735,743,758,772,778,781,790,793,799,802,827,833,836,842,846,850,863,1009,1018,1028,1037,1041,1044,1047,1050,1061,1064,1099],[12,13,14],"p",{},"Claude Code hat sich unter Entwickler(inne)n schnell etabliert: Das Werkzeug hilft dabei, unbekannten Code zu verstehen, Fixes vorzuschlagen und neue Funktionen zügig zu scaffolden – direkt im Terminal oder in der IDE.",[12,16,17],{},"Dabei zeichnet sich ein bemerkenswertes Muster ab: Je besser agentische Coding-Tools beim Schreiben von Code werden, desto mehr gerät der Rest des Software-Lifecycles unter Druck. Bug-Backlogs wachsen. Pipeline-Fehlerquoten steigen. Sicherheitslücken häufen sich schneller, als Teams sie triagieren können. Code schreiben und Software ausliefern sind nicht dasselbe – und die Lücke zwischen beidem ist real.",[12,19,20],{},"GitLab beschleunigt alles in den verbleibenden Phasen des Software-Lifecycles nach Claude Code: CI/CD, Security Scanning, Code-Review und Freigaben – an einem Ort, mit vollständiger Nachvollziehbarkeit.",[12,22,23],{},"Dieses Tutorial zeigt drei Szenarien, in denen Claude Code schnell im Codebase agiert und GitLab alles übernimmt, was diesen Code in eine zertifizierte, ausgelieferte Änderung verwandelt:",[25,26,27,31,34],"ul",{},[28,29,30],"li",{},"C++-Bug mit Claude Code beheben, dann CI/CD, Security Scanning und Duo Code Review von GitLab übernehmen lassen.",[28,32,33],{},"GitLab-MCP-Kontext hinzufügen, damit Claude auf Basis des tatsächlichen Issues arbeitet, nicht nur mit lokalen Dateien.",[28,35,36],{},"Einen Claude-basierten External Agent in Duo Agent Platform nutzen, um Review-Feedback direkt im MR zu adressieren.",[38,39,41],"h2",{"id":40},"voraussetzungen","Voraussetzungen",[43,44,45,54,63,77],"ol",{},[28,46,47,53],{},[48,49,52],"a",{"href":50,"rel":51},"https://code.claude.com/docs/en/overview",[],"Claude Code"," im Terminal, konfiguriert und gestartet.",[28,55,56,57,62],{},"Ein GitLab-Projekt mit Bug-Reports und Feature-Proposal-Issues, zum Beispiel das ",[48,58,61],{"href":59,"rel":60},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform",[],"Tanuki-IoT-Platform-Projekt",".",[28,64,65,66,71,72,62],{},"Für bestimmte Use Cases: ",[48,67,70],{"href":68,"rel":69},"https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/",[],"GitLab-MCP-Server"," und GitLab Duo Agent Platform mit ",[48,73,76],{"href":74,"rel":75},"https://docs.gitlab.com/user/duo_agent_platform/agents/external/",[],"External Agents",[28,78,79],{},"Zum Bauen von Code: CMake, Make, gcc/clang++ für C++, Maven für Java.",[81,82,84],"h3",{"id":83},"gitlab-projekt-vorbereiten","GitLab-Projekt vorbereiten",[12,86,87],{},"Um die Schritte in der eigenen Entwicklungsumgebung nachzuvollziehen:",[25,89,90,97,100],{},[28,91,92,93,96],{},"Das ",[48,94,61],{"href":59,"rel":95},[]," in die eigene GitLab-Umgebung importieren, einschließlich aller offenen Issues.",[28,98,99],{},"Das Projekt in die lokale Umgebung klonen und in das Verzeichnis navigieren.",[28,101,102,103,107],{},"Ein Terminal öffnen und Claude Code mit ",[104,105,106],"code",{},"claude"," starten.",[109,110,115],"pre",{"className":111,"code":112,"language":113,"meta":114,"style":114},"language-shell shiki shiki-themes github-light","git clone https://gitlab.example.com/examplegroup/tanuki-iot-platform.git\ncd tanuki-iot-platform\n\nclaude\n","shell","",[104,116,117,133,143,150],{"__ignoreMap":114},[118,119,122,126,130],"span",{"class":120,"line":121},"line",1,[118,123,125],{"class":124},"s7eDp","git",[118,127,129],{"class":128},"sYBdl"," clone",[118,131,132],{"class":128}," https://gitlab.example.com/examplegroup/tanuki-iot-platform.git\n",[118,134,136,140],{"class":120,"line":135},2,[118,137,139],{"class":138},"sYu0t","cd",[118,141,142],{"class":128}," tanuki-iot-platform\n",[118,144,146],{"class":120,"line":145},3,[118,147,149],{"emptyLinePlaceholder":148},true,"\n",[118,151,153],{"class":120,"line":152},4,[118,154,155],{"class":124},"claude\n",[12,157,158],{},"Im Prompt nach dem Zweck des Projekts fragen:",[109,160,164],{"className":161,"code":162,"language":163,"meta":114,"style":114},"language-markdown shiki shiki-themes github-light","What is this project about?\n","markdown",[104,165,166],{"__ignoreMap":114},[118,167,168],{"class":120,"line":121},[118,169,162],{"class":170},"sgsFI",[38,172,174],{"id":173},"einstieg-mit-claude-code-und-gitlab","Einstieg mit Claude Code und GitLab",[12,176,177,178,181],{},"Im ersten Szenario muss ein Hardware-Sensor behoben werden, der in C++ geschrieben ist. Der Arduino Collector liest Metriken vom USB-verbundenen Arduino Uno R4 Board und stürzt ab, wenn das Gerät ",[104,179,180],{},"/dev/ttyACM0"," nicht verbunden ist.",[12,183,184],{},[185,186],"img",{"alt":187,"src":188,"title":187},"GitLab Issue mit dem Bug-Report zum Arduino-IoT-Collector-Absturz","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079018/itfnec4qrlldxfftwnig.png",[12,190,191,192,197,198,201],{},"Nach dem Lesen des Bug-Reports in ",[48,193,196],{"href":194,"rel":195},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/work_items/4",[],"Issue 4"," den Code in der ",[104,199,200],{},"main.cpp","-Datei prüfen, zum Beispiel mit vim:",[109,203,205],{"className":111,"code":204,"language":113,"meta":114,"style":114},"vim sensors/arduino-iot-collector/src/main.cpp\n",[104,206,207],{"__ignoreMap":114},[118,208,209,212],{"class":120,"line":121},[118,210,211],{"class":124},"vim",[118,213,214],{"class":128}," sensors/arduino-iot-collector/src/main.cpp\n",[12,216,217],{},[185,218],{"alt":219,"src":220,"title":219},"Arduino-IoT-Collector-Quellcode in vim geöffnet","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079018/mjof3rgdlxjy2trmgehq.png",[12,222,223,224,229],{},"Das Collector-Binary mit ",[48,225,228],{"href":226,"rel":227},"https://cmake.org/",[],"CMake"," bauen und ausführen, um das Problem zu reproduzieren:",[109,231,233],{"className":111,"code":232,"language":113,"meta":114,"style":114},"cmake -S . -B build\ncmake --build build\n\n./build/arduino_iot_collector\nStarting Arduino IoT Collector Application...\nlibc++abi: terminating due to uncaught exception of type std::runtime_error: Failed to initialize Arduino temperature sensor: Arduino port not found: /dev/ttyACM0\n[1]    85289 abort      ./build/arduino_iot_collector\n",[104,234,235,252,261,265,270,288,348],{"__ignoreMap":114},[118,236,237,240,243,246,249],{"class":120,"line":121},[118,238,239],{"class":124},"cmake",[118,241,242],{"class":138}," -S",[118,244,245],{"class":128}," .",[118,247,248],{"class":138}," -B",[118,250,251],{"class":128}," build\n",[118,253,254,256,259],{"class":120,"line":135},[118,255,239],{"class":124},[118,257,258],{"class":138}," --build",[118,260,251],{"class":128},[118,262,263],{"class":120,"line":145},[118,264,149],{"emptyLinePlaceholder":148},[118,266,267],{"class":120,"line":152},[118,268,269],{"class":124},"./build/arduino_iot_collector\n",[118,271,273,276,279,282,285],{"class":120,"line":272},5,[118,274,275],{"class":124},"Starting",[118,277,278],{"class":128}," Arduino",[118,280,281],{"class":128}," IoT",[118,283,284],{"class":128}," Collector",[118,286,287],{"class":128}," Application...\n",[118,289,291,294,297,300,303,306,309,312,315,318,321,323,326,328,331,334,336,339,342,345],{"class":120,"line":290},6,[118,292,293],{"class":124},"libc++abi:",[118,295,296],{"class":128}," terminating",[118,298,299],{"class":128}," due",[118,301,302],{"class":128}," to",[118,304,305],{"class":128}," uncaught",[118,307,308],{"class":128}," exception",[118,310,311],{"class":128}," of",[118,313,314],{"class":128}," type",[118,316,317],{"class":128}," std::runtime_error:",[118,319,320],{"class":128}," Failed",[118,322,302],{"class":128},[118,324,325],{"class":128}," initialize",[118,327,278],{"class":128},[118,329,330],{"class":128}," temperature",[118,332,333],{"class":128}," sensor:",[118,335,278],{"class":128},[118,337,338],{"class":128}," port",[118,340,341],{"class":128}," not",[118,343,344],{"class":128}," found:",[118,346,347],{"class":128}," /dev/ttyACM0\n",[118,349,351],{"class":120,"line":350},7,[118,352,353],{"class":170},"[1]    85289 abort      ./build/arduino_iot_collector\n",[12,355,356],{},"Claude Code öffnen und um Hilfe bitten:",[109,358,360],{"className":161,"code":359,"language":163,"meta":114,"style":114},"Please help me fix the Arduino IoT Collector sensor - it crashes.\n",[104,361,362],{"__ignoreMap":114},[118,363,364],{"class":120,"line":121},[118,365,359],{"class":170},[12,367,368,369,371,372,375],{},"Claude Code durchsucht die Codebase und identifiziert das Problem in der ",[104,370,200],{},"-Datei: Sie löst eine ",[104,373,374],{},"std::runtime_error()","-Ausnahme aus, die zum sofortigen Absturz der Anwendung führt. Das erwartete Verhalten ist, einen benutzerfreundlichen Konfigurationsfehler zu protokollieren und die Anwendung weiterlaufen zu lassen.",[12,377,378],{},"Nach erfolgreichem Fix und Build ist ein Git-Branch, Commit und Merge Request zu erstellen, um CI/CD-Pipelines, Security Scanning und Code-Review-Workflows auszulösen.",[12,380,381],{},"Für die Git-Arbeit in Claude Code stehen verschiedene Wege zur Verfügung:",[25,383,384,390],{},[28,385,386,387],{},"Per Prompt: ",[104,388,389],{},"Please help me create a Git branch and commit and push the changes.",[28,391,392,393,396,397,400,401,404,405,408,409,411],{},"Per Shell-Befehle: Die Eingabeaufforderung mit ",[104,394,395],{},"!"," öffnen, gefolgt von ",[104,398,399],{},"git checkout -b fix-arduino-sensor",", ",[104,402,403],{},"git commit -avm \"...\""," und ",[104,406,407],{},"git push",". Die Ausgabe von ",[104,410,407],{}," erzeugt eine URL zur MR-Erstellung – darauf klicken, um den Browser zu öffnen und das Formular auszufüllen.",[12,413,414,415,420],{},"CI/CD-Pipelines werden bei der MR-Erstellung ausgelöst und prüfen, ob Build und Tests funktionieren. Security Scanning stellt sicher, dass keine neuen Schwachstellen eingeführt werden. Der neue MR löst automatisch den ",[48,416,419],{"href":417,"rel":418},"https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/code_review/",[],"GitLab Duo Code Review Flow"," aus, der die Korrektheit des Fixes bewertet und dabei Entwicklungs-Style-Guides und benutzerdefinierte Review-Anweisungen berücksichtigt.",[12,422,423],{},[185,424],{"alt":425,"src":426,"title":425},"Benutzerdefinierte GitLab Duo Code Review-Anweisungen für C++","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/wasta2rqivrvrsjtw1jv.png",[12,428,429],{},[185,430],{"alt":431,"src":432,"title":431},"GitLab Duo Code Review Flow – Review-Feedback-Kommentar","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/r2oalo1xwkpbmeispflo.png",[12,434,435],{},"Eine kurze Aufzeichnung von Claude Code, GitLab CI/CD und GitLab Duo Agent Platform in Aktion:",[437,438,441,442],"figure",{"className":439},[440],"video_container","\n  ",[443,444,448],"iframe",{"src":445,"frameBorder":446,"allowFullScreen":447},"https://www.youtube.com/embed/JH4Sae3eDpw","0","true"," ",[38,450,452],{"id":451},"c-bug-mit-gitlab-mcp-in-claude-code-beheben","C++-Bug mit GitLab MCP in Claude Code beheben",[12,454,455],{},"Im vorherigen Szenario hat Claude Code das lokale Code-Repository durchsucht und Annahmen zu einem möglichen Fix auf Basis des verfügbaren Kontexts getroffen. Es fehlte jedoch das Wissen über ein GitLab-Issue, das den Bug beschreibt, Debugging-Diskussionen und vorgeschlagene Lösungsansätze für langfristige Behebungen. Auch wurde der Verlauf vergangener Codeänderungen in Merge Requests und Issues mit ähnlichen Berichten als SDLC-Kontext nicht berücksichtigt.",[12,457,458,459,462],{},"Um diesen reichhaltigen GitLab-SDLC-Kontext zu nutzen, lässt sich der ",[48,460,70],{"href":68,"rel":461},[]," in Claude Code einbinden.",[81,464,466],{"id":465},"gitlab-mcp-server-konfigurieren","GitLab-MCP-Server konfigurieren",[12,468,469,470,475],{},"Sicherstellen, dass der GitLab-MCP-Server auf der Instanz oder der Top-Level-Group ",[48,471,474],{"href":472,"rel":473},"https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/#prerequisites",[],"aktiviert"," ist.",[12,477,478,479,482,483,486],{},"Ein neues Terminal öffnen und den ",[48,480,70],{"href":68,"rel":481},[]," mit dem ",[104,484,485],{},"http","-Transport-Typ zu Claude Code hinzufügen.",[12,488,489,492,493,496],{},[104,490,491],{},"gitlab.example.com"," durch die eigene GitLab-Instanz ersetzen oder ",[104,494,495],{},"GitLab.com"," verwenden:",[109,498,500],{"className":111,"code":499,"language":113,"meta":114,"style":114},"claude mcp add --transport http GitLab https://gitlab.example.com/api/v4/mcp\n",[104,501,502],{"__ignoreMap":114},[118,503,504,506,509,512,515,518,521],{"class":120,"line":121},[118,505,106],{"class":124},[118,507,508],{"class":128}," mcp",[118,510,511],{"class":128}," add",[118,513,514],{"class":138}," --transport",[118,516,517],{"class":128}," http",[118,519,520],{"class":128}," GitLab",[118,522,523],{"class":128}," https://gitlab.example.com/api/v4/mcp\n",[12,525,526,528,529,532],{},[104,527,106],{}," in einer neuen Terminal-Session starten und ",[104,530,531],{},"/mcp"," eingeben, um sich mit dem GitLab-MCP-Server über OAuth auf der geöffneten Browser-Seite zu authentifizieren:",[109,534,536],{"className":111,"code":535,"language":113,"meta":114,"style":114},"claude\n\n/mcp\n",[104,537,538,542,546],{"__ignoreMap":114},[118,539,540],{"class":120,"line":121},[118,541,155],{"class":124},[118,543,544],{"class":120,"line":135},[118,545,149],{"emptyLinePlaceholder":148},[118,547,548],{"class":120,"line":145},[118,549,550],{"class":124},"/mcp\n",[12,552,553],{},"Zur Überprüfung der Verbindung Claude fragen:",[109,555,557],{"className":161,"code":556,"language":163,"meta":114,"style":114},"Which GitLab MCP tools are available to you?\n\nShow the GitLab MCP Server version\n",[104,558,559,564,568],{"__ignoreMap":114},[118,560,561],{"class":120,"line":121},[118,562,563],{"class":170},"Which GitLab MCP tools are available to you?\n",[118,565,566],{"class":120,"line":135},[118,567,149],{"emptyLinePlaceholder":148},[118,569,570],{"class":120,"line":145},[118,571,572],{"class":170},"Show the GitLab MCP Server version\n",[12,574,575],{},[185,576],{"alt":577,"src":578,"title":577},"Claude Code beim Abfragen der GitLab-MCP-Server-Version","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/f2ygt6wuuvxxbpticcgt.png",[12,580,581,582,587],{},"Bei der Authentifizierung von Claude Code mit dem GitLab-MCP-Server verbindet es sich über ",[48,583,586],{"href":584,"rel":585},"https://datatracker.ietf.org/doc/html/rfc7591",[],"OAuth"," und agiert mit der bestehenden GitLab-Identität, nicht mit erweiterten, separaten Berechtigungen. In der Praxis bedeutet das: Claude Code kann nur Projekte, Issues, Merge Requests und andere GitLab-Daten sehen, auf die über das eigene Konto und die Projekt-/Group-Mitgliedschaft bereits Zugriff besteht. Das ist eine wichtige Schutzmaßnahme: MCP erweitert den Kontext innerhalb des KI-Werkzeugs, umgeht jedoch nicht die GitLab-Sichtbarkeitskontrollen und erfindet keinen breiteren Zugriff.",[12,589,590],{},"Eine zweite Schutzmaßnahme ist die Nutzer-Genehmigung. In diesem Ablauf identifiziert Claude Code das MCP-Werkzeug, das aufgerufen werden soll, und fragt vor dem Fortfahren um Genehmigung – sodass Entwickler(innen) bei der Abholung externen Kontexts eingebunden bleiben. Für sicherheitssensible Umgebungen empfiehlt sich zudem, bewusst darauf zu achten, welche Daten in Prompts exponiert werden, und MCP primär mit vertrauenswürdigen GitLab-Inhalten zu verwenden.",[81,592,594],{"id":593},"an-einem-bug-report-issue-arbeiten","An einem Bug-Report-Issue arbeiten",[12,596,597,598,601],{},"Den Issue-Kontext in Claude Code abrufen, indem ",[48,599,196],{"href":194,"rel":600},[]," im Prompt referenziert wird. Falls kein Issue im Projekt vorhanden ist, Issue 4 klonen/kopieren und die Nummer im Prompt anpassen:",[109,603,605],{"className":161,"code":604,"language":163,"meta":114,"style":114},"Please help me fix issue 4\n",[104,606,607],{"__ignoreMap":114},[118,608,609],{"class":120,"line":121},[118,610,604],{"class":170},[12,612,613,614,617],{},"Claude Code identifiziert den Bedarf, das MCP-Werkzeug ",[104,615,616],{},"get_issue"," aufzurufen, und fragt um Genehmigung. Zukünftige Verwendungen lassen sich auch automatisch genehmigen.",[12,619,620],{},[185,621],{"alt":622,"src":623,"title":622},"Claude Code ruft den Issue-Kontext mit MCP-Werkzeugen ab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079021/tj6dpxbemvvgqnbifzjy.png",[12,625,626],{},"Sobald Claude Code den notwendigen Kontext aus dem Issue abgerufen hat, beginnt es, den C++-Quellcode des Sensors direkt zu analysieren. Nach der Erstellung und Überprüfung eines Fixes kann ein neuer Git-Branch, Commit und MR angefordert werden, falls Claude Code das nicht bereits aktiv tut:",[109,628,630],{"className":161,"code":629,"language":163,"meta":114,"style":114},"Please create a new Git branch, commit the changes, and create a new merge request\n",[104,631,632],{"__ignoreMap":114},[118,633,634],{"class":120,"line":121},[118,635,629],{"class":170},[12,637,638,639,642],{},"Claude Code findet das MCP-Werkzeug ",[104,640,641],{},"create_merge_request"," und übernimmt die MR-Erstellung direkt, ohne in den Browser wechseln zu müssen.",[12,644,645],{},[185,646],{"alt":647,"src":648,"title":647},"Claude Code hat mit MCP-Werkzeugen einen MR erstellt, verknüpft mit Issue 4","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079021/bo41ti93yonvsy9q2gbw.png",[12,650,651],{},"In GitLab löst das MR-Erstellungsereignis automatisch mehrere parallele Workflows aus:",[25,653,654,657,665],{},[28,655,656],{},"CI/CD-Pipeline für automatisierte Builds und Tests",[28,658,659,660],{},"Security Scanning mit ",[48,661,664],{"href":662,"rel":663},"https://docs.gitlab.com/user/application_security/sast/advanced_sast_cpp/",[],"Advanced SAST für C++",[28,666,667,668,672],{},"ein ",[48,669,671],{"href":417,"rel":670},[],"Code Review Flow"," von GitLab Duo Agent Platform",[12,674,675],{},"Diese automatisierten und agentischen Workflows in GitLab beschleunigen die Software-Auslieferung ebenso wie Claude Code die KI-gestützte Programmierung zur Issue-Lösung beschleunigt.",[12,677,678],{},[185,679],{"alt":680,"src":681,"title":680},"CI/CD-Pipeline-Status im MR – Tests und Security Scanning","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079022/yd3kzf9yp4usdldovs1a.png",[12,683,684],{},"Der MR lässt sich entweder im Browser öffnen, oder im Terminal bleiben und Claude Code fragen:",[109,686,688],{"className":161,"code":687,"language":163,"meta":114,"style":114},"Is the Merge Request running OK?\n",[104,689,690],{"__ignoreMap":114},[118,691,692],{"class":120,"line":121},[118,693,687],{"class":170},[12,695,696,697,700],{},"Es wird das MCP-Werkzeug ",[104,698,699],{},"get_merge_request_pipelines"," nutzen, um den MR-Pipeline-Status abzurufen – grün und bereit zum Mergen.",[12,702,703],{},[185,704],{"alt":705,"src":706,"title":705},"Claude Code ruft den MR-Pipeline-Status mit MCP-Werkzeugen ab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/s8cwcvc3r5moui2twjpd.png",[12,708,709],{},"Die Aufzeichnung zeigt, wie Claude Code das Problem mithilfe des GitLab-MCP-Servers löst:",[437,711,441,713],{"className":712},[440],[443,714,448],{"src":715,"frameBorder":446,"allowFullScreen":447},"https://www.youtube.com/embed/q8XWnmdIaI0",[38,717,719],{"id":718},"claude-code-als-external-agent-reviewer","Claude Code als External-Agent-Reviewer",[12,721,722,723,728],{},"Im letzten Szenario hat Claude Code eine neue Funktion auf Basis der Anforderungen in ",[48,724,727],{"href":725,"rel":726},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/work_items/24",[],"Issue 24"," implementiert – einen Spring Boot API-Server mit REST/WebSocket-Backend. Die CI/CD-Pipelines und Security-Scans sind in Ordnung, aber im MR wartet Code-Review-Feedback.",[12,730,731],{},[185,732],{"alt":733,"src":734,"title":733},"GitLab Duo Code Review-Feedback zum Spring Boot API-Server-MR","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079022/to7zvyrarrvcnyuuzldi.png",[12,736,737,738,742],{},"Claude Code lässt sich als Kollaborationspartner in Issues, Epics und MRs einbinden, um Aufgaben gemeinsam zu bearbeiten. Die Voraussetzungen sind in der ",[48,739,741],{"href":74,"rel":740},[],"External-Agents-Dokumentation"," beschrieben.",[12,744,745,746,749,750,754,755,62],{},"Den ",[104,747,748],{},"Claude Agent by GitLab"," im Projektmenü unter ",[751,752,753],"strong",{},"AI > Agents"," aktivieren. Den Service-Account-Namen für spätere Erwähnungen oder Zuweisungen notieren – er verwendet das Muster: ",[104,756,757],{},"@ai-\u003Cagent-name>-\u003Ctop-level-group-name>",[12,759,760,761,766,767,62],{},"Anschließend den MR mit dem Code-Review-Feedback öffnen und die angeforderten Änderungen prüfen. Der Screenshot verwendet ",[48,762,765],{"href":763,"rel":764},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/merge_requests/78",[],"MR 78",", und GitLab Duo Code Review folgt ",[48,768,771],{"href":769,"rel":770},"https://docs.gitlab.com/user/duo_agent_platform/customize/review_instructions/?tab=Java",[],"benutzerdefinierten Review-Anweisungen für Java",[12,773,774],{},[185,775],{"alt":776,"src":777,"title":776},"GitLab Duo Code Review Flow – Feedback zu unsicheren AllowedOriginPatterns für die im MR eingeführten API-Endpunkte","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079039/gvgqmcnijllptvnnyyjc.png",[12,779,780],{},"Einen neuen Kommentar erstellen und den Claude Code Agent erwähnen:",[109,782,784],{"className":161,"code":783,"language":163,"meta":114,"style":114},"@ai-claude-agent-by-gitlab-\u003Ctop-level-groupname> Can you help me address the review feedback?\n",[104,785,786],{"__ignoreMap":114},[118,787,788],{"class":120,"line":121},[118,789,783],{"class":170},[12,791,792],{},"Diese Erwähnung startet eine neue Agent-Session im Hintergrund, richtet den Claude Code Agent ein und beginnt mit der Bearbeitung des Review-Feedbacks. Nach Abschluss folgt es den Anweisungen, einen Git-Commit und einen Zusammenfassungskommentar im MR zu erstellen.",[12,794,795],{},[185,796],{"alt":797,"src":798,"title":797},"GitLab Duo Code Review-Feedback durch Claude Agent aufgelöst","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079038/pqy8f4xo8n0i7yvkajso.png",[12,800,801],{},"Nächste Schritte, um sicherzustellen, dass die Softwareentwicklung innerhalb der organisatorischen Leitplanken bleibt:",[25,803,804,807,810,818],{},[28,805,806],{},"Verbleibendes Review-Feedback adressieren.",[28,808,809],{},"Warnungen in den CI/CD-Pipeline-Jobs prüfen.",[28,811,812,813,62],{},"Potenzielle Sicherheitslücken prüfen, zum Beispiel mit ",[48,814,817],{"href":815,"rel":816},"https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/agentic_sast_vulnerability_resolution/",[],"SAST Vulnerability Resolution",[28,819,820,821,826],{},"Merge-Request-Freigabe von einem(r) berechtigten Entwickler(in) einholen, der als ",[48,822,825],{"href":823,"rel":824},"https://docs.gitlab.com/user/project/codeowners/",[],"Code Owner"," konfiguriert ist.",[12,828,829],{},[185,830],{"alt":831,"src":832,"title":831},"Merge-Request-Widgets mit CI/CD-Pipeline, erforderlichen Freigaben, Security-Findings und Merge-Status","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079039/uzegwykldauzuxucrpjf.png",[12,834,835],{},"Dieses Video zeigt, wie Claude Code als External Agent in GitLab Duo Agent Platform bei Reviews helfen kann:",[437,837,441,839],{"className":838},[440],[443,840,448],{"src":841,"frameBorder":446,"allowFullScreen":447},"https://www.youtube.com/embed/Tw0wNet1HCc",[38,843,845],{"id":844},"tipps-für-claude-code-und-gitlab","Tipps für Claude Code und GitLab",[81,847,849],{"id":848},"benutzerdefinierte-anweisungen","Benutzerdefinierte Anweisungen",[12,851,852,853,856,857,862],{},"Agenten lassen sich anweisen, Code vor Commits zu bauen und zu testen, Änderungen minimal zu halten oder die Projektarchitektur besser zu verstehen – über einen Eintrag in ",[104,854,855],{},"AGENTS.md",". Die Tanuki-IoT-Platform verwendet das ",[48,858,861],{"href":859,"rel":860},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/blob/main/AGENTS.md?ref_type=heads&plain=1",[],"folgende Produktionsbeispiel",":",[109,864,866],{"className":161,"code":865,"language":163,"meta":114,"style":114},"## Working with sensors\n\n### Before editing\n1. Identify the sensor directory you're working with\n2. Check for an `AGENTS.md` file in that directory\n3. Read sensor-specific instructions before making changes\n4. Follow language-specific style guides\n\n### Making changes\n- Keep changes minimal and focused on the user request\n- Do not refactor existing code unless specifically instructed\n- Preserve original code formatting\n- Only modify code necessary to solve the specific request\n\n### Creating MRs\n- Always run local builds and tests first\n- Create a new branch for changes\n- Automatically create a merge request after successful commits\n- Reference relevant issues or tasks in the MR description\n",[104,867,868,874,878,883,892,906,914,922,927,933,942,950,958,966,971,977,985,993,1001],{"__ignoreMap":114},[118,869,870],{"class":120,"line":121},[118,871,873],{"class":872},"surfw","## Working with sensors\n",[118,875,876],{"class":120,"line":135},[118,877,149],{"emptyLinePlaceholder":148},[118,879,880],{"class":120,"line":145},[118,881,882],{"class":872},"### Before editing\n",[118,884,885,889],{"class":120,"line":152},[118,886,888],{"class":887},"sqxcx","1.",[118,890,891],{"class":170}," Identify the sensor directory you're working with\n",[118,893,894,897,900,903],{"class":120,"line":272},[118,895,896],{"class":887},"2.",[118,898,899],{"class":170}," Check for an ",[118,901,902],{"class":138},"`AGENTS.md`",[118,904,905],{"class":170}," file in that directory\n",[118,907,908,911],{"class":120,"line":290},[118,909,910],{"class":887},"3.",[118,912,913],{"class":170}," Read sensor-specific instructions before making changes\n",[118,915,916,919],{"class":120,"line":350},[118,917,918],{"class":887},"4.",[118,920,921],{"class":170}," Follow language-specific style guides\n",[118,923,925],{"class":120,"line":924},8,[118,926,149],{"emptyLinePlaceholder":148},[118,928,930],{"class":120,"line":929},9,[118,931,932],{"class":872},"### Making changes\n",[118,934,936,939],{"class":120,"line":935},10,[118,937,938],{"class":887},"-",[118,940,941],{"class":170}," Keep changes minimal and focused on the user request\n",[118,943,945,947],{"class":120,"line":944},11,[118,946,938],{"class":887},[118,948,949],{"class":170}," Do not refactor existing code unless specifically instructed\n",[118,951,953,955],{"class":120,"line":952},12,[118,954,938],{"class":887},[118,956,957],{"class":170}," Preserve original code formatting\n",[118,959,961,963],{"class":120,"line":960},13,[118,962,938],{"class":887},[118,964,965],{"class":170}," Only modify code necessary to solve the specific request\n",[118,967,969],{"class":120,"line":968},14,[118,970,149],{"emptyLinePlaceholder":148},[118,972,974],{"class":120,"line":973},15,[118,975,976],{"class":872},"### Creating MRs\n",[118,978,980,982],{"class":120,"line":979},16,[118,981,938],{"class":887},[118,983,984],{"class":170}," Always run local builds and tests first\n",[118,986,988,990],{"class":120,"line":987},17,[118,989,938],{"class":887},[118,991,992],{"class":170}," Create a new branch for changes\n",[118,994,996,998],{"class":120,"line":995},18,[118,997,938],{"class":887},[118,999,1000],{"class":170}," Automatically create a merge request after successful commits\n",[118,1002,1004,1006],{"class":120,"line":1003},19,[118,1005,938],{"class":887},[118,1007,1008],{"class":170}," Reference relevant issues or tasks in the MR description\n",[12,1010,1011,1012,1017],{},"Diese ",[48,1013,1016],{"href":1014,"rel":1015},"https://docs.gitlab.com/user/duo_agent_platform/customize/agents_md/",[],"benutzerdefinierten Anweisungen"," werden auch von Agents und Flows auf der GitLab Duo Agent Platform verarbeitet.",[12,1019,1020,1021,1024,1025,1027],{},"Claude Code bevorzugt ",[104,1022,1023],{},"CLAUDE.md",", das auch auf ",[104,1026,855],{}," verweisen kann:",[109,1029,1031],{"className":161,"code":1030,"language":163,"meta":114,"style":114},"@AGENTS.md\n",[104,1032,1033],{"__ignoreMap":114},[118,1034,1035],{"class":120,"line":121},[118,1036,1030],{"class":170},[38,1038,1040],{"id":1039},"zusammenfassung","Zusammenfassung",[12,1042,1043],{},"KI-Coding-Tools machen Entwickler(innen) schneller beim Schreiben von Code. Aber Code schreiben und Software ausliefern sind nicht dasselbe. Die Lücke zwischen beidem wächst genau deshalb, weil diese Werkzeuge so gut im ersten Teil sind: Mehr Code wird geschrieben, Bug-Backlogs wachsen, Pipeline-Fehlerquoten steigen und Sicherheitslücken häufen sich.",[12,1045,1046],{},"Claude Code hält Teams dort produktiv, wo der Code lebt – es versteht unbekannte Codebasen, schlägt Fixes vor und scaffoldet Funktionen schnell. GitLab Duo Agent Platform macht aus dieser Geschwindigkeit für viele Entwickler(innen) in Enterprise-Softwareteams sichere Software, die tatsächlich ausgeliefert und zertifiziert werden kann – über viele Release-Milestones und Projekte hinweg. Mit GitLab lässt sich der Rest des Software-Lifecycles – CI/CD-Pipeline-Fixes, Security Scanning, automatisierte Remediation, Code-Review und mehr mit Human-in-the-Loop-Workflows – für jede agentische Aktion zurückverfolgen und so konfigurieren, dass er innerhalb der organisatorischen Leitplanken und Sicherheitsrichtlinien abläuft.",[12,1048,1049],{},"Dieses Tutorial hat drei Möglichkeiten gezeigt, Claude Code und GitLab Duo Agent Platform zu kombinieren:",[25,1051,1052,1055,1058],{},[28,1053,1054],{},"Einen Bug mit Claude Code beheben und GitLab CI/CD, Security Scanning und Duo Code Review den Rest übernehmen lassen.",[28,1056,1057],{},"GitLab-MCP-Kontext hinzufügen, damit Claude auf Basis des tatsächlichen Kontexts im GitLab-Issue arbeitet – nicht nur mit lokalen Dateien.",[28,1059,1060],{},"Einen Claude-basierten External Agent in GitLab Duo Agent Platform nutzen, um Review-Feedback direkt im MR zu adressieren.",[12,1062,1063],{},"Das Prinzip bleibt über alle drei gleich: Claude arbeitet schnell, GitLab zertifiziert die Arbeit.",[1065,1066,1067,1075,1084],"blockquote",{},[12,1068,1069,1070,107],{},"GitLab Duo Agent Platform noch nicht im Einsatz? Mit einer ",[48,1071,1074],{"href":1072,"rel":1073},"https://about.gitlab.com/de-de/gitlab-duo-agent-platform/",[],"kostenlosen Testversion",[12,1076,1077,1078,1083],{},"Wer GitLab bereits im Free Tier nutzt, kann GitLab Duo Agent Platform in ",[48,1079,1082],{"href":1080,"rel":1081},"https://docs.gitlab.com/subscriptions/gitlab_credits/#for-the-free-tier-on-gitlabcom",[],"wenigen einfachen Schritten"," einrichten.",[12,1085,1086,1087,1092,1093,1098],{},"Für bestehende GitLab Premium- oder Ultimate-Abonnenten genügt es, ",[48,1088,1091],{"href":1089,"rel":1090},"https://docs.gitlab.com/user/duo_agent_platform/turn_on_off/",[],"Duo Agent Platform zu aktivieren"," und die ",[48,1094,1097],{"href":1095,"rel":1096},"https://docs.gitlab.com/subscriptions/gitlab_credits/#included-credits",[],"enthaltenen"," GitLab Credits zu nutzen.",[1100,1101,1102],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .surfw, html code.shiki .surfw{--shiki-default:#005CC5;--shiki-default-font-weight:bold}html pre.shiki code .sqxcx, html code.shiki .sqxcx{--shiki-default:#E36209}",{"title":114,"searchDepth":135,"depth":135,"links":1104},[1105,1108,1109,1113,1114,1117],{"id":40,"depth":135,"text":41,"children":1106},[1107],{"id":83,"depth":145,"text":84},{"id":173,"depth":135,"text":174},{"id":451,"depth":135,"text":452,"children":1110},[1111,1112],{"id":465,"depth":145,"text":466},{"id":593,"depth":145,"text":594},{"id":718,"depth":135,"text":719},{"id":844,"depth":135,"text":845,"children":1115},[1116],{"id":848,"depth":145,"text":849},{"id":1039,"depth":135,"text":1040},"ai-ml","2026-05-06","KI-Coding-Tools schreiben Code schnell. Aber wer liefert ihn aus? Wie Claude Code und GitLab Duo Agent Platform vom Bug-Report zum Produktions-Fix führen.","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1778087000/qdfsf8kz6ebfnopx9v2e.png",{},"/de-de/blog/claude-code-and-gitlab",{"config":1127,"title":5,"description":1120},{"noIndex":1128},false,"claude-code-and-gitlab","de-de/blog/claude-code-and-gitlab",[1132,1133,1134],"AI/ML","tutorial","product","BlogPost","U3l98-dfwMdxPQzmg_3y73eJPJdQvpbS22eiTqv0b5o",{"logo":1138,"freeTrial":1143,"sales":1148,"login":1153,"items":1158,"search":1479,"minimal":1513,"duo":1531,"switchNav":1540,"pricingDeployment":1551},{"config":1139},{"href":1140,"dataGaName":1141,"dataGaLocation":1142},"/de-de/","gitlab logo","header",{"text":1144,"config":1145},"Kostenlose Testversion anfordern",{"href":1146,"dataGaName":1147,"dataGaLocation":1142},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":1149,"config":1150},"Vertrieb kontaktieren",{"href":1151,"dataGaName":1152,"dataGaLocation":1142},"/de-de/sales/","sales",{"text":1154,"config":1155},"Anmelden",{"href":1156,"dataGaName":1157,"dataGaLocation":1142},"https://gitlab.com/users/sign_in/","sign in",[1159,1188,1290,1295,1398,1459],{"text":1160,"config":1161,"menu":1163},"Plattform",{"dataNavLevelOne":1162},"platform",{"type":1164,"columns":1165},"cards",[1166,1172,1180],{"title":1160,"description":1167,"link":1168},"Die intelligente Orchestrierungsplattform für DevSecOps",{"text":1169,"config":1170},"Die Plattform erkunden",{"href":1171,"dataGaName":1162,"dataGaLocation":1142},"/de-de/platform/",{"title":1173,"description":1174,"link":1175},"GitLab Duo Agent Platform","Agentische KI für den gesamten Software-Lebenszyklus",{"text":1176,"config":1177},"Lerne GitLab Duo kennen",{"href":1178,"dataGaName":1179,"dataGaLocation":1142},"/de-de/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":1181,"description":1182,"link":1183},"Warum GitLab?","Erfahre, warum sich Unternehmen für GitLab entscheiden",{"text":1184,"config":1185},"Mehr erfahren",{"href":1186,"dataGaName":1187,"dataGaLocation":1142},"/de-de/why-gitlab/","why gitlab",{"text":1189,"left":148,"config":1190,"menu":1192},"Produkt",{"dataNavLevelOne":1191},"solutions",{"type":1193,"link":1194,"columns":1198,"feature":1269},"lists",{"text":1195,"config":1196},"Alle Lösungen anzeigen",{"href":1197,"dataGaName":1191,"dataGaLocation":1142},"/de-de/solutions/",[1199,1224,1247],{"title":1200,"description":1201,"link":1202,"items":1207},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":1203},{"icon":1204,"href":1205,"dataGaName":1206,"dataGaLocation":1142},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[1208,1212,1215,1220],{"text":1209,"config":1210},"CI/CD",{"href":1211,"dataGaLocation":1142,"dataGaName":1209},"/de-de/solutions/continuous-integration/",{"text":1173,"config":1213},{"href":1178,"dataGaLocation":1142,"dataGaName":1214},"gitlab duo agent platform - product menu",{"text":1216,"config":1217},"Quellcodeverwaltung",{"href":1218,"dataGaLocation":1142,"dataGaName":1219},"/de-de/solutions/source-code-management/","Source Code Management",{"text":1221,"config":1222},"Automatische Softwarebereitstellung",{"href":1205,"dataGaLocation":1142,"dataGaName":1223},"Automated software delivery",{"title":1225,"description":1226,"link":1227,"items":1232},"Sicherheit","Entwickle Code schneller ohne Abstriche bei der Sicherheit",{"config":1228},{"href":1229,"dataGaName":1230,"dataGaLocation":1142,"icon":1231},"/de-de/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[1233,1237,1242],{"text":1234,"config":1235},"Anwendungssicherheitstests",{"href":1229,"dataGaName":1236,"dataGaLocation":1142},"Application security testing",{"text":1238,"config":1239},"Schutz der Software-Lieferkette",{"href":1240,"dataGaLocation":1142,"dataGaName":1241},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":1243,"config":1244},"Software-Compliance",{"href":1245,"dataGaName":1246,"dataGaLocation":1142},"/de-de/solutions/software-compliance/","software compliance",{"title":1248,"link":1249,"items":1254},"Messung",{"config":1250},{"icon":1251,"href":1252,"dataGaName":1253,"dataGaLocation":1142},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[1255,1259,1264],{"text":1256,"config":1257},"Sichtbarkeit und Messung",{"href":1252,"dataGaLocation":1142,"dataGaName":1258},"Visibility and Measurement",{"text":1260,"config":1261},"Wertstrommanagement",{"href":1262,"dataGaLocation":1142,"dataGaName":1263},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":1265,"config":1266},"Analysen und Einblicke",{"href":1267,"dataGaLocation":1142,"dataGaName":1268},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":1270,"type":1193,"items":1271},"GitLab für",[1272,1278,1284],{"text":1273,"config":1274},"Enterprise",{"icon":1275,"href":1276,"dataGaLocation":1142,"dataGaName":1277},"Building","/de-de/enterprise/","enterprise",{"text":1279,"config":1280},"Kleinunternehmen",{"icon":1281,"href":1282,"dataGaLocation":1142,"dataGaName":1283},"Work","/de-de/small-business/","small business",{"text":1285,"config":1286},"Öffentlicher Sektor",{"icon":1287,"href":1288,"dataGaLocation":1142,"dataGaName":1289},"Organization","/de-de/solutions/public-sector/","public sector",{"text":1291,"config":1292},"Preise",{"href":1293,"dataGaName":1294,"dataGaLocation":1142,"dataNavLevelOne":1294},"/de-de/pricing/","pricing",{"text":1296,"config":1297,"menu":1299},"Ressourcen",{"dataNavLevelOne":1298},"resources",{"type":1193,"link":1300,"columns":1304,"feature":1388},{"text":1301,"config":1302},"Alle Ressourcen anzeigen",{"href":1303,"dataGaName":1298,"dataGaLocation":1142},"/de-de/resources/",[1305,1338,1360],{"title":1306,"items":1307},"Erste Schritte",[1308,1313,1318,1323,1328,1333],{"text":1309,"config":1310},"Installieren",{"href":1311,"dataGaName":1312,"dataGaLocation":1142},"/de-de/install/","install",{"text":1314,"config":1315},"Kurzanleitungen",{"href":1316,"dataGaName":1317,"dataGaLocation":1142},"/de-de/get-started/","quick setup checklists",{"text":1319,"config":1320},"Lernen",{"href":1321,"dataGaLocation":1142,"dataGaName":1322},"https://university.gitlab.com/","learn",{"text":1324,"config":1325},"Produktdokumentation",{"href":1326,"dataGaName":1327,"dataGaLocation":1142},"https://docs.gitlab.com/","product documentation",{"text":1329,"config":1330},"Best-Practice-Videos",{"href":1331,"dataGaName":1332,"dataGaLocation":1142},"/de-de/getting-started-videos/","best practice videos",{"text":1334,"config":1335},"Integrationen",{"href":1336,"dataGaName":1337,"dataGaLocation":1142},"/de-de/integrations/","integrations",{"title":1339,"items":1340},"Entdecken",[1341,1346,1351,1355],{"text":1342,"config":1343},"Kundenerfolge",{"href":1344,"dataGaName":1345,"dataGaLocation":1142},"/de-de/customers/","customer success stories",{"text":1347,"config":1348},"Blog",{"href":1349,"dataGaName":1350,"dataGaLocation":1142},"/de-de/blog/","blog",{"text":1352,"config":1353},"The Source",{"href":1354,"dataGaName":1350,"dataGaLocation":1142},"/de-de/the-source/",{"text":1356,"config":1357},"Remote",{"href":1358,"dataGaName":1359,"dataGaLocation":1142},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1361,"items":1362},"Vernetzen",[1363,1368,1373,1378,1383],{"text":1364,"config":1365},"GitLab-Services",{"href":1366,"dataGaName":1367,"dataGaLocation":1142},"/de-de/services/","services",{"text":1369,"config":1370},"Community",{"href":1371,"dataGaName":1372,"dataGaLocation":1142},"/community/","community",{"text":1374,"config":1375},"Forum",{"href":1376,"dataGaName":1377,"dataGaLocation":1142},"https://forum.gitlab.com/","forum",{"text":1379,"config":1380},"Veranstaltungen",{"href":1381,"dataGaName":1382,"dataGaLocation":1142},"/events/","events",{"text":1384,"config":1385},"Partner",{"href":1386,"dataGaName":1387,"dataGaLocation":1142},"/de-de/partners/","partners",{"config":1389,"title":1392,"text":1393,"link":1394},{"background":1390,"textColor":1391},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Neues bei GitLab","Über die neuesten Funktionen und Verbesserungen auf dem Laufenden bleiben.",{"text":1395,"config":1396},"Aktuelle Nachrichten",{"href":1354,"dataGaName":1397,"dataGaLocation":1142},"the source",{"text":1399,"config":1400,"menu":1402},"Company",{"dataNavLevelOne":1401},"company",{"type":1193,"columns":1403},[1404],{"items":1405},[1406,1411,1417,1419,1424,1429,1434,1439,1444,1449,1454],{"text":1407,"config":1408},"Über",{"href":1409,"dataGaName":1410,"dataGaLocation":1142},"/de-de/company/","about",{"text":1412,"config":1413,"footerGa":1416},"Karriere",{"href":1414,"dataGaName":1415,"dataGaLocation":1142},"/jobs/","jobs",{"dataGaName":1415},{"text":1379,"config":1418},{"href":1381,"dataGaName":1382,"dataGaLocation":1142},{"text":1420,"config":1421},"Geschäftsführung",{"href":1422,"dataGaName":1423,"dataGaLocation":1142},"/company/team/e-group/","leadership",{"text":1425,"config":1426},"Team",{"href":1427,"dataGaName":1428,"dataGaLocation":1142},"/company/team/","team",{"text":1430,"config":1431},"Handbuch",{"href":1432,"dataGaName":1433,"dataGaLocation":1142},"https://handbook.gitlab.com/","handbook",{"text":1435,"config":1436},"Investor Relations",{"href":1437,"dataGaName":1438,"dataGaLocation":1142},"https://ir.gitlab.com/","investor relations",{"text":1440,"config":1441},"Trust Center",{"href":1442,"dataGaName":1443,"dataGaLocation":1142},"/de-de/security/","trust center",{"text":1445,"config":1446},"AI Transparency Center",{"href":1447,"dataGaName":1448,"dataGaLocation":1142},"/de-de/ai-transparency-center/","ai transparency center",{"text":1450,"config":1451},"Newsletter",{"href":1452,"dataGaName":1453,"dataGaLocation":1142},"/company/contact/#contact-forms","newsletter",{"text":1455,"config":1456},"Presse",{"href":1457,"dataGaName":1458,"dataGaLocation":1142},"/press/","press",{"text":1460,"config":1461,"menu":1462},"Kontakt",{"dataNavLevelOne":1401},{"type":1193,"columns":1463},[1464],{"items":1465},[1466,1469,1474],{"text":1149,"config":1467},{"href":1151,"dataGaName":1468,"dataGaLocation":1142},"talk to sales",{"text":1470,"config":1471},"Support-Portal",{"href":1472,"dataGaName":1473,"dataGaLocation":1142},"https://support.gitlab.com","support portal",{"text":1475,"config":1476},"Kundenportal",{"href":1477,"dataGaName":1478,"dataGaLocation":1142},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1480,"login":1481,"suggestions":1488},"Schließen",{"text":1482,"link":1483},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":1484,"config":1485},"gitlab.com",{"href":1156,"dataGaName":1486,"dataGaLocation":1487},"search login","search",{"text":1489,"default":1490},"Vorschläge",[1491,1493,1498,1500,1505,1510],{"text":1173,"config":1492},{"href":1178,"dataGaName":1173,"dataGaLocation":1487},{"text":1494,"config":1495},"Codevorschläge (KI)",{"href":1496,"dataGaName":1497,"dataGaLocation":1487},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":1209,"config":1499},{"href":1211,"dataGaName":1209,"dataGaLocation":1487},{"text":1501,"config":1502},"GitLab auf AWS",{"href":1503,"dataGaName":1504,"dataGaLocation":1487},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":1506,"config":1507},"GitLab auf Google Cloud",{"href":1508,"dataGaName":1509,"dataGaLocation":1487},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1181,"config":1511},{"href":1186,"dataGaName":1512,"dataGaLocation":1487},"Why GitLab?",{"freeTrial":1514,"mobileIcon":1519,"desktopIcon":1524,"secondaryButton":1527},{"text":1515,"config":1516},"Kostenlos testen",{"href":1517,"dataGaName":1147,"dataGaLocation":1518},"https://gitlab.com/-/trials/new/","nav",{"altText":1520,"config":1521},"GitLab-Symbol",{"src":1522,"dataGaName":1523,"dataGaLocation":1518},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1520,"config":1525},{"src":1526,"dataGaName":1523,"dataGaLocation":1518},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1306,"config":1528},{"href":1529,"dataGaName":1530,"dataGaLocation":1518},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":1532,"mobileIcon":1536,"desktopIcon":1538},{"text":1533,"config":1534},"Mehr über GitLab Duo erfahren",{"href":1178,"dataGaName":1535,"dataGaLocation":1518},"gitlab duo",{"altText":1520,"config":1537},{"src":1522,"dataGaName":1523,"dataGaLocation":1518},{"altText":1520,"config":1539},{"src":1526,"dataGaName":1523,"dataGaLocation":1518},{"button":1541,"mobileIcon":1546,"desktopIcon":1548},{"text":1542,"config":1543},"/Option",{"href":1544,"dataGaName":1545,"dataGaLocation":1518},"#contact","switch",{"altText":1520,"config":1547},{"src":1522,"dataGaName":1523,"dataGaLocation":1518},{"altText":1520,"config":1549},{"src":1550,"dataGaName":1523,"dataGaLocation":1518},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1552,"mobileIcon":1557,"desktopIcon":1559},{"text":1553,"config":1554},"Zurück zur Preisübersicht",{"href":1293,"dataGaName":1555,"dataGaLocation":1518,"icon":1556},"back to pricing","GoBack",{"altText":1520,"config":1558},{"src":1522,"dataGaName":1523,"dataGaLocation":1518},{"altText":1520,"config":1560},{"src":1526,"dataGaName":1523,"dataGaLocation":1518},{"title":1562,"button":1563,"config":1568},"Sieh dir an, wie agentische KI die Softwarebereitstellung transformiert",{"text":1564,"config":1565},"Für GitLab Transcend am 10. Juni anmelden",{"href":1566,"dataGaName":1567,"dataGaLocation":1142},"/de-de/events/transcend/virtual/","transcend event",{"layout":1569,"disabled":1128},"release",{"data":1571},{"text":1572,"source":1573,"edit":1579,"contribute":1584,"config":1589,"items":1594,"minimal":1804},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":1574,"config":1575},"Quelltext der Seite anzeigen",{"href":1576,"dataGaName":1577,"dataGaLocation":1578},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1580,"config":1581},"Diese Seite bearbeiten",{"href":1582,"dataGaName":1583,"dataGaLocation":1578},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1585,"config":1586},"Beteilige dich",{"href":1587,"dataGaName":1588,"dataGaLocation":1578},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1590,"facebook":1591,"youtube":1592,"linkedin":1593},"https://x.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1595,1640,1693,1735,1768],{"title":1291,"links":1596,"subMenu":1611},[1597,1601,1606],{"text":1598,"config":1599},"Tarife anzeigen",{"href":1293,"dataGaName":1600,"dataGaLocation":1578},"view plans",{"text":1602,"config":1603},"Vorteile von Premium",{"href":1604,"dataGaName":1605,"dataGaLocation":1578},"/de-de/pricing/premium/","why premium",{"text":1607,"config":1608},"Vorteile von Ultimate",{"href":1609,"dataGaName":1610,"dataGaLocation":1578},"/de-de/pricing/ultimate/","why ultimate",[1612],{"title":1460,"links":1613},[1614,1616,1618,1620,1625,1630,1635],{"text":1149,"config":1615},{"href":1151,"dataGaName":1152,"dataGaLocation":1578},{"text":1470,"config":1617},{"href":1472,"dataGaName":1473,"dataGaLocation":1578},{"text":1475,"config":1619},{"href":1477,"dataGaName":1478,"dataGaLocation":1578},{"text":1621,"config":1622},"Status",{"href":1623,"dataGaName":1624,"dataGaLocation":1578},"https://status.gitlab.com/","status",{"text":1626,"config":1627},"Nutzungsbedingungen",{"href":1628,"dataGaName":1629,"dataGaLocation":1578},"/terms/","terms of use",{"text":1631,"config":1632},"Datenschutzerklärung",{"href":1633,"dataGaName":1634,"dataGaLocation":1578},"/de-de/privacy/","privacy statement",{"text":1636,"config":1637},"Cookie-Einstellungen",{"dataGaName":1638,"dataGaLocation":1578,"id":1639,"isOneTrustButton":148},"cookie preferences","ot-sdk-btn",{"title":1189,"links":1641,"subMenu":1650},[1642,1646],{"text":1643,"config":1644},"DevSecOps-Plattform",{"href":1171,"dataGaName":1645,"dataGaLocation":1578},"devsecops platform",{"text":1647,"config":1648},"KI-unterstützte Entwicklung",{"href":1178,"dataGaName":1649,"dataGaLocation":1578},"ai-assisted development",[1651],{"title":1652,"links":1653},"Themen",[1654,1658,1663,1668,1673,1678,1683,1688],{"text":1209,"config":1655},{"href":1656,"dataGaName":1657,"dataGaLocation":1578},"/de-de/topics/ci-cd/","cicd",{"text":1659,"config":1660},"GitOps",{"href":1661,"dataGaName":1662,"dataGaLocation":1578},"/de-de/topics/gitops/","gitops",{"text":1664,"config":1665},"DevOps",{"href":1666,"dataGaName":1667,"dataGaLocation":1578},"/de-de/topics/devops/","devops",{"text":1669,"config":1670},"Versionskontrolle",{"href":1671,"dataGaName":1672,"dataGaLocation":1578},"/de-de/topics/version-control/","version control",{"text":1674,"config":1675},"DevSecOps",{"href":1676,"dataGaName":1677,"dataGaLocation":1578},"/de-de/topics/devsecops/","devsecops",{"text":1679,"config":1680},"Cloud-nativ",{"href":1681,"dataGaName":1682,"dataGaLocation":1578},"/de-de/topics/cloud-native/","cloud native",{"text":1684,"config":1685},"KI für das Programmieren",{"href":1686,"dataGaName":1687,"dataGaLocation":1578},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":1689,"config":1690},"Agentische KI",{"href":1691,"dataGaName":1692,"dataGaLocation":1578},"/de-de/topics/agentic-ai/","agentic ai",{"title":1694,"links":1695},"Lösungen",[1696,1699,1701,1706,1710,1713,1716,1719,1721,1723,1725,1730],{"text":1234,"config":1697},{"href":1229,"dataGaName":1698,"dataGaLocation":1578},"Application Security Testing",{"text":1221,"config":1700},{"href":1205,"dataGaName":1206,"dataGaLocation":1578},{"text":1702,"config":1703},"Agile Entwicklung",{"href":1704,"dataGaName":1705,"dataGaLocation":1578},"/de-de/solutions/agile-delivery/","agile delivery",{"text":1707,"config":1708},"SCM",{"href":1218,"dataGaName":1709,"dataGaLocation":1578},"source code management",{"text":1209,"config":1711},{"href":1211,"dataGaName":1712,"dataGaLocation":1578},"continuous integration & delivery",{"text":1260,"config":1714},{"href":1262,"dataGaName":1715,"dataGaLocation":1578},"value stream management",{"text":1659,"config":1717},{"href":1718,"dataGaName":1662,"dataGaLocation":1578},"/de-de/solutions/gitops/",{"text":1273,"config":1720},{"href":1276,"dataGaName":1277,"dataGaLocation":1578},{"text":1279,"config":1722},{"href":1282,"dataGaName":1283,"dataGaLocation":1578},{"text":1285,"config":1724},{"href":1288,"dataGaName":1289,"dataGaLocation":1578},{"text":1726,"config":1727},"Bildungswesen",{"href":1728,"dataGaName":1729,"dataGaLocation":1578},"/de-de/solutions/education/","education",{"text":1731,"config":1732},"Finanzdienstleistungen",{"href":1733,"dataGaName":1734,"dataGaLocation":1578},"/de-de/solutions/finance/","financial services",{"title":1296,"links":1736},[1737,1739,1741,1743,1746,1748,1753,1755,1757,1760,1762,1764,1766],{"text":1309,"config":1738},{"href":1311,"dataGaName":1312,"dataGaLocation":1578},{"text":1314,"config":1740},{"href":1316,"dataGaName":1317,"dataGaLocation":1578},{"text":1319,"config":1742},{"href":1321,"dataGaName":1322,"dataGaLocation":1578},{"text":1324,"config":1744},{"href":1326,"dataGaName":1745,"dataGaLocation":1578},"docs",{"text":1347,"config":1747},{"href":1349,"dataGaName":1350,"dataGaLocation":1578},{"text":1749,"config":1750},"Neuigkeiten",{"href":1751,"dataGaName":1752,"dataGaLocation":1578},"/de-de/whats-new/","whats new",{"text":1342,"config":1754},{"href":1344,"dataGaName":1345,"dataGaLocation":1578},{"text":1356,"config":1756},{"href":1358,"dataGaName":1359,"dataGaLocation":1578},{"text":1758,"config":1759},"GitLab Services",{"href":1366,"dataGaName":1367,"dataGaLocation":1578},{"text":1369,"config":1761},{"href":1371,"dataGaName":1372,"dataGaLocation":1578},{"text":1374,"config":1763},{"href":1376,"dataGaName":1377,"dataGaLocation":1578},{"text":1379,"config":1765},{"href":1381,"dataGaName":1382,"dataGaLocation":1578},{"text":1384,"config":1767},{"href":1386,"dataGaName":1387,"dataGaLocation":1578},{"title":1769,"links":1770},"Unternehmen",[1771,1773,1775,1777,1779,1781,1783,1788,1793,1795,1797,1799],{"text":1407,"config":1772},{"href":1409,"dataGaName":1401,"dataGaLocation":1578},{"text":1412,"config":1774},{"href":1414,"dataGaName":1415,"dataGaLocation":1578},{"text":1420,"config":1776},{"href":1422,"dataGaName":1423,"dataGaLocation":1578},{"text":1425,"config":1778},{"href":1427,"dataGaName":1428,"dataGaLocation":1578},{"text":1430,"config":1780},{"href":1432,"dataGaName":1433,"dataGaLocation":1578},{"text":1435,"config":1782},{"href":1437,"dataGaName":1438,"dataGaLocation":1578},{"text":1784,"config":1785},"Nachhaltigkeit",{"href":1786,"dataGaName":1787,"dataGaLocation":1578},"/sustainability/","Sustainability",{"text":1789,"config":1790},"Vielfalt, Inklusion und Zugehörigkeit",{"href":1791,"dataGaName":1792,"dataGaLocation":1578},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1440,"config":1794},{"href":1442,"dataGaName":1443,"dataGaLocation":1578},{"text":1450,"config":1796},{"href":1452,"dataGaName":1453,"dataGaLocation":1578},{"text":1455,"config":1798},{"href":1457,"dataGaName":1458,"dataGaLocation":1578},{"text":1800,"config":1801},"Transparenzerklärung zu moderner Sklaverei",{"href":1802,"dataGaName":1803,"dataGaLocation":1578},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1805},[1806,1808,1811],{"text":1626,"config":1807},{"href":1628,"dataGaName":1629,"dataGaLocation":1578},{"text":1809,"config":1810},"Cookies",{"dataGaName":1638,"dataGaLocation":1578,"id":1639,"isOneTrustButton":148},{"text":1631,"config":1812},{"href":1633,"dataGaName":1634,"dataGaLocation":1578},[1814],{"id":1815,"title":7,"body":1122,"config":1816,"content":1818,"description":1122,"extension":1822,"meta":1823,"navigation":148,"path":1824,"seo":1825,"stem":1826,"__hash__":1827},"blogAuthors/en-us/blog/authors/michael-friedrich.yml",{"template":1817},"BlogAuthor",{"name":7,"config":1819},{"headshot":1820,"ctfId":1821},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi","yml",{},"/en-us/blog/authors/michael-friedrich",{},"en-us/blog/authors/michael-friedrich","lJ-nfRIhdG49Arfrxdn1Vv4UppwD51BB13S3HwIswt4",[1829],{"title":1830,"description":1831,"heroImage":1832,"category":1118,"date":1833,"authors":1834,"slug":1836,"externalUrl":1122},"Deployment-Prozesse mittels Custom Agent in GitLab Duo Agent automatisieren","Custom AI-Agenten automatisieren komplexe GitOps-Arbeit in Minuten – versioniert, kontrolliert und innerhalb der Unternehmensleitplanken gesichert.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1773856365/gsx2c0vqlswox3ldmq88.jpg","2026-05-07",[1835],"Cesar Saavedra","automate-deployment-with-duo-agent-platform",{"promotions":1838},[1839,1853,1864,1876],{"id":1840,"categories":1841,"header":1843,"text":1844,"button":1845,"image":1850},"ai-modernization",[1842],"ai","Hält KI, was uns versprochen wurde?","Das Quiz dauert maximal 5 Minuten.",{"text":1846,"config":1847},"Ermittle deinen KI-Reifegrad",{"href":1848,"dataGaName":1849,"dataGaLocation":1350},"/de-de/assessments/ai-modernization-assessment/","modernization assessment",{"config":1851},{"src":1852},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1854,"categories":1855,"header":1856,"text":1844,"button":1857,"image":1861},"devops-modernization",[1134,1677],"Verwaltest du Tool-Chaos oder stellst du Innovationen bereit?",{"text":1858,"config":1859},"Ermittle deinen DevOps-Reifegrad",{"href":1860,"dataGaName":1849,"dataGaLocation":1350},"/de-de/assessments/devops-modernization-assessment/",{"config":1862},{"src":1863},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1865,"categories":1866,"header":1868,"text":1844,"button":1869,"image":1873},"security-modernization",[1867],"security","Tauschst du Schnelligkeit gegen Sicherheit ein?",{"text":1870,"config":1871},"Ermittle deinen Sicherheitsreifegrad",{"href":1872,"dataGaName":1849,"dataGaLocation":1350},"/de-de/assessments/security-modernization-assessment/",{"config":1874},{"src":1875},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1877,"paths":1878,"header":1881,"text":1882,"button":1883,"image":1888},"github-azure-migration",[1879,1880],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Ist dein Team bereit für den Umzug von GitHub nach Azure?","GitHub stellt bereits auf Azure um. Finde heraus, was das für dich bedeutet.",{"text":1884,"config":1885},"Erfahre, wie GitLab im Vergleich zu GitHub abschneidet",{"href":1886,"dataGaName":1887,"dataGaLocation":1350},"/de-de/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1889},{"src":1863},{"header":1891,"blurb":1892,"button":1893,"secondaryButton":1898},"Beginne noch heute, schneller zu entwickeln","Entdecke, was dein Team mit der intelligenten Orchestrierungsplattform für DevSecOps erreichen kann.\n",{"text":1894,"config":1895},"Kostenlosen Test starten",{"href":1896,"dataGaName":1147,"dataGaLocation":1897},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/de-de/","feature",{"text":1149,"config":1899},{"href":1151,"dataGaName":1152,"dataGaLocation":1897},1778726630235]