Grün heißt nur: Die Pipeline hat nichts gefunden.
Was sie nicht sucht, prüfen sechs weitere Stufen. KI-generierter Code, geprüft vom Pull Request bis zum Live-Stand.
Prüfstand ausprobierenPrüfstand: Sechs Stufen zwischen KI-Vorschlag und Hauptzweig
„Im Warenkorb die Summe mit Versand als Euro-Betrag anzeigen.“
KI-Fassung · Testlauf grün: 1 Test, 0 Erwartungen3 Erwartungen, 0 verletzt
6 von 6gestoppt
0unbemerkt live
Merge gesperrt, bis F1, F2, F3 und F4 behoben sind und die Freigabe vorliegt.
Wer Stufen abschaltet, sieht, was dann unbemerkt live geht.
-
Jede geänderte Datei braucht eine Quelle im Auftrag.
styles/kopf.csswurde geändert, der Auftrag nennt nur den Warenkorb. Zurückbauen oder als eigener Pull Request.Bei mir heute: Im Abnahmeprotokoll steht je Bauteil die Quelle im Auftrag und was bewusst nicht geändert wurde; größere Bauten beginnen mit einer Elementliste.
-
Syntax, leere Fehlerzweige und unbenutzte Werte, ohne den Code auszuführen.
Zeile 16 hat einen leeren
catch. Fällt das Laden aus, steht im Warenkorb „NaN“.Bei mir heute: in der Regel Syntaxprüfung und die Prüfskripte des Kundenrepos vor dem Pull Request, danach seine Pipeline. Welches Analysewerkzeug diese Stufe im Projekt übernimmt, entscheidet der Messlauf in Woche 3.
-
Ein Test zählt nur, wenn er fehlschlagen kann.
Der Test gibt nur aus und prüft nichts. Mit der Erwartung „44,70 €“ schlägt er an, denn Zeile 5 liefert „44,7“: Ohne
style: "currency"fehlen Euro-Zeichen und zweite Nachkommastelle.Bei mir heute: eigene Playwright-Prüfungen außerhalb des Kundenrepos. Seit Mitte Oktober gilt: Eine Prüfung ohne Erwartung zählt nicht, sie endet mit „Erwartungen n, verletzt m“.
-
Ein zweiter Agent liest Diff, Regeln und Repo, aber nicht den Bauverlauf.
betragFormatieren()ist doppelt,helpers/geld.jshatformatEuro()schon. Beide schreiben „44,70 €“, aber mit verschiedenem Leerzeichen.Bei mir heute: seit Oktober in der Regel unabhängige Prüf-Agenten mit eigenem Auftrag. Seit dem 15. Oktober gilt: Eine Korrektur prüft der Prüfer nach, der den Fund gemeldet hat.
-
Merge und Push nur mit ausdrücklicher Freigabe; ohne sie hält die Sperre den Agenten an. Im Team ist das die Freigabe durch Reviewer oder Tech Lead.
Der Agent startet den Merge, während Funde offen sind.
Bei mir heute: ein eigener Claude-Code-Hook. Seit seiner Einführung am 16. Oktober lief jeder meiner Merges erst nach einer Freigabe mit Wortlaut.
-
Jede geänderte Datei byteweise gegen den Merge-Commit.
Der Server liefert
summe.jsnoch aus dem Cache. Deploy grün, Stand alt.Bei mir heute: byteweiser Abgleich nach dem Deploy, zum Beispiel am 01.11.: 17 von 18 Dateien gleich, 1 Abweichung erklärt.
+export function summeMitVersand(posten, versand) {
+ let summe = 0;
+ for (const p of posten) summe += p.preis * p.menge;
+ summe += versand;
+ return summe.toLocaleString("de-DE", { currency: "EUR" });F3 gestoppt
+}
+
+export function betragFormatieren(wert) {F4 gestoppt
+ return wert.toFixed(2).replace(".", ",") + " €";
+}
+
+export async function versandLaden(plz) {
+ try {
+ const antwort = await fetch("/api/versand?plz=" + plz);
+ return (await antwort.json()).preis;
+ } catch (fehler) {}F2 gestoppt
+}
+import { summeMitVersand } from "./summe.js";
+test("Summe mit Versand", () => {
+ const summe = summeMitVersand([{ preis: 19.9, menge: 2 }], 4.9);
+ console.log(summe);F3 gestoppt
+});
−.kopf { padding: 0 16px; }
+.kopf { padding: 0 12px; }F1 gestoppt
+import { formatEuro } from "../helpers/geld.js";F4 behoben
+
+export function summeMitVersand(posten, versand) {
+ let summe = versand;
+ for (const p of posten) summe += p.preis * p.menge;
+ return formatEuro(summe);F3 behoben
+}
+
+export async function versandLaden(plz) {
+ const url = "/api/versand?plz=" + encodeURIComponent(plz);
+ const antwort = await fetch(url);
+ if (!antwort.ok) throw new Error("HTTP " + antwort.status);F2 behoben
+ return (await antwort.json()).preis;
+}
+import { summeMitVersand } from "./summe.js";
+test("Summe mit Versand als Euro-Betrag", () => {
+ const summe = summeMitVersand([{ preis: 19.9, menge: 2 }], 4.9);
+ expect(summe).toBe("44,70\u00a0€");F3 behoben
+});
+// Intl setzt zwischen Betrag und € ein geschütztes Leerzeichen.
.kopf { padding: 0 16px; }F1 behoben
KI-Fassung: Der Test läuft grün, weil er nichts erwartet. Mit Erwartung liefert Zeile 5 „44,7“ statt „44,70 €“.
Beispielcode, für diese Arbeitsprobe geschrieben; der JavaScript-Teil ist in Node 24 nachgerechnet. Kein Kundencode.
Gemessen am 1. November 2026
Die Zahlen hinter dem Ablauf.
Aus dem laufenden Auftrag für einen Anbieter von Software für Rechnungs- und Belegmanagement (klickbare Prototypen neuer Programmmodule).
- Pull Requests im Hauptzweig
- über 100
- Merges seit dem Hook, alle nach Freigabe
- 40 von 40
- eigene Playwright-Skripte
- über 200
- Tagen mit Claude Code
- 90 von 93
Wie gemessen
Gelesen aus GitHub und aus meinen eigenen Prüfdateien; die Nutzungstage aus dem Verlauf von Claude Code.
- über 100 · Pull Requests im HauptzweigSeit dem 3. September, gebaut mit Claude Code. Stand 1. November, 19:31 Uhr: 103 im Hauptzweig, einer geschlossen.Liste meiner eigenen Pull Requests im Kundenrepo per GitHub-CLI, nur lesend, 01.11.2026 19:31, mit Status und Prüfläufen je Pull Request.
- 104 von 104 · Pipeline grün durchgelaufenbuild, validate, linkcheck, healthy und Vorschau-Deploy, je Pull Request erfolgreich abgeschlossen.Gezählt ist der Endzustand der Prüfläufe. Die Pipeline gehört dem Kunden.
- 65 · AbnahmeprotokolleSeit September, je Bau oder Runde: Auftrag, Gebautes und offene Punkte; seit dem 21. Oktober in der Regel auch Messung und Prüfer.Dateien
Abnahmeprotokoll_*.mdin meinem Belegordner zum Auftrag gezählt. - 40 von 40 · Merges seit dem Hook, alle nach FreigabeSeit seiner Einführung am 16. Oktober hält ein Hook in Claude Code Merge, Push und neue Pull Requests an, bis eine Freigabe mit Wortlaut vorliegt.Für jeden Merge seit Einführung des Hooks (16.10.2026, 12:32 Uhr) steht im Protokoll des Claude-Code-Hooks eine Freigabe für genau diesen Pull Request (Nummer oder Zweig), höchstens fünf Minuten vor dem Merge.
- über 200 · eigene Playwright-SkripteFür Prüfungen, Messungen und Bilder, außerhalb des Kundenrepos. Gezählt ohne doppelte Kopien.JavaScript-Dateien im Belegordner, die Playwright laden; inhaltsgleiche Kopien einmal gezählt.
- 90 von 93 · Tagen mit Claude CodeSeit dem 1. August, gezählt im Verlauf von Claude Code.Tage mit mindestens einem Eintrag im Verlauf von Claude Code, 01.08. bis 01.11.2026.
Merge-Protokoll
Echter Fall, anonymisiert.
Kundenrepo · 18 geänderte Dateien · gebaut mit Claude Code
Zeiten aus dem Abnahmeprotokoll und den Prüfdateien dieses Merges; um 17:14 war das Protokoll um Merge, Deploy und Live-Abgleich ergänzt. Kunde, Produkt und Repo bewusst ohne Namen.
Sa 31.10.
- vorabUmbruch-Prüfung der Kopf- und Schritttexte96 Messungen, 0 Umbrüche
- 20:16Pull Request nach Freigabe mit Wortlaut, Pipeline des Kunden5 von 5
- 20:19Vorschau byteweise gegen den Commit18 von 18 gleich
So 01.11.
- 17:09Freigabe „ja mergen“, die Sperre öffnet genau einmalfrei
- 17:11Merge in den Hauptzweig, Deploy um 17:13erfolgreich
- 17:13Live byteweise gegen den Merge-CommitDie eine Abweichung schreibt der Host selbst in die Seite (E-Mail-Schutz, 4 Zeilen).17 gleich, 1 erklärt
Vorschlag
Die ersten vier Wochen.
Erst messen, dann Regeln. Jede Woche endet mit einem Ergebnis, das Tech Leads prüfen können.
- Woche 1
Bestandsaufnahme
Codebasis und Pipeline messen. Ergebnis: ein Befund mit Zahlen je Team.
- Woche 2
Fehlerkatalog
Aus echten Funden der Codebasis einen Katalog typischer Fehler in KI-generiertem Code bauen, so wie im Prüfstand oben.
- Woche 3
Werkzeuge messen
Werkzeuge für automatische Reviews und Codeanalyse gegen den Katalog laufen lassen: Was findet welches, wie viele Fehlalarme kommen dazu.
- Woche 4
Pilotteam
Quality Gate in der Pipeline eines Teams, Prüfliste für Pull Requests, Abnahmeprotokoll für Tech Leads. Danach Team für Team ausrollen.
Die Anzeige, Punkt für Punkt
| Aus der Anzeige | Wo es hier steht |
|---|---|
| „Praktische Erfahrung mit KI gestützter Softwareentwicklung und Tools wie … Claude Code“ | Über 100 Pull Requests im Hauptzweig, Claude Code an 90 von 93 Tagen seit August |
| „Analyse und Bewertung bestehender Codebasen … insbesondere bei KI generiertem Code“ | Prüfstand, Stufen 1 bis 4, und Woche 1 |
| „Testautomatisierung, statischer Codeanalyse und der Integration automatisierter Quality Gates in CI/CD Pipelines“ | Stufen 2, 3 und 6; Lauf der Kunden-Pipeline im Merge-Protokoll; Quality Gate im Pilotteam (Woche 4) |
| „Evaluation und Einführung KI gestützter Lösungen für automatisierte Code Reviews“ | Stufe 4 und Wochen 2 und 3: Werkzeuge am Fehlerkatalog messen |
| „Konzeption und Optimierung von QA Prozessen … über mehrere Entwicklungsteams hinweg“ | Abnahmeprotokoll und Woche 4: erst ein Pilotteam, dann Team für Team |
| „Identifikation von Verbesserungspotenzialen … zur nachhaltigen Steigerung der Softwarequalität“ | Die Umbruch-Prüfung im Merge-Protokoll entstand am 29.10. aus einer Rückmeldung des Kunden und gehört seitdem zur Abnahme |
| „Eigenständige, pragmatische Arbeitsweise … Zusammenarbeit mit Entwicklern, Tech Leads“ | Abstimmung schriftlich und nachvollziehbar, Abnahmeprotokoll vor dem Merge |
| „Start: ASAP · 100% Remote · Vollzeit (Teilzeit möglich)“ | Ab sofort, remote, bis zu 40 Stunden pro Woche |
Ein kurzes Ja an Connectly genügt.
Dann beginnt Woche 1: die Bestandsaufnahme der Codebasis.
Ansprechpartner ist Marcel Wlömer; der Start läuft über Connectly.Start ab sofort: remote, in Vollzeit oder Teilzeit, mit bis zu 40 Stunden pro Woche.