Meine Kenntnisse in Softwareentwicklung sind eher begrenzt. Daher habe ich versucht mit Unterstützung von Claude Code meinen Claude Analyzer (siehe KI-gestützte Alert-Analyse für Kubernetes und CheckMK) zu entwickeln, einem Go-Dienst, der Monitoring-Alerts von Kubernetes und CheckMK entgegennimmt, Kontext sammelt und via Claude API eine automatische Ursachenanalyse erstellt.
Die Besonderheit: Sowohl der initiale Entwurf als auch die gesamte weitere Entwicklung laufen primär über KI, ohne dass ich selbst eine Zeile Code manuell schreibe.
Phase 1: Initialer Entwurf mit Claude Code
Den Grundstein legte ich lokal mit Claude Code kombiniert mit dem Superpower Skill, der erweiterte autonome Fähigkeiten ermöglicht. In dieser ersten Phase entstand die Architektur: die zwei Analyzer-Dienste, die gemeinsame Bibliothek, das Webhook-Handling, die Claude-API-Integration und die Grundstruktur der Tests.
Sobald der initiale Entwurf stand, wurde der Code in ein Git-Repository überführt, und damit begann Phase zwei.
Phase 2: Autonome Weiterentwicklung über NanoClaw
Der Großteil der Weiterentwicklung läuft über NanoClaw, einem "secure", "lightweight" "personal AI agent". Als Kommunikationspunkt mit dem Agent nutze ich einen für die Entwicklung des Analyzers dedizierten Matrix/Element Chat-Channel. Ich kann per Chat Anweisungen geben, Fragen stellen, Bugs melden, und der Bot liest den Code, analysiert ihn und macht Änderungen.
Das alleine ist schon praktisch. Aber der eigentliche Kern des Ansatzes ist ein stündlicher automatischer Task: Ohne, dass ich etwas mache, wacht NanoClaw einmal pro Stunde auf, liest den aktuellen Stand des Repositories, prüft auf mögliche Verbesserungen, schreibt Tests, schließt Coverage-Lücken, behebt Lint-Fehler, und committet das Ergebnis direkt auf den Main-Branch. Schaut man sich die commit History an, sieht man fast stündlich einen neuen commit. Nein, ich arbeite Nachts nicht. Normalerweise schlafe ich da 😅
Der Entwicklungszyklus sieht in der Praxis so aus:
- Ich schreibe eine Nachricht über Element: "Füge einen separaten Prometheus Metrics-Endpunkt auf einem konfigurierbaren Port hinzu"
- Der Bot liest die relevanten Dateien, plant die Implementierung und setzt sie um
- Tests, Lint, Commit, alles in einem Durchgang
- Beim nächsten stündlichen Task prüft der Bot, ob es Folgearbeiten oder andere dem Prompt entsprechende Aufgaben gibt
Guardrails: Pre-Commit Hooks als Sicherheitsnetz
Wenn ein KI-Bot eigenständig Code schreibt und committet, braucht es ein paar Absicherungen. Natürlich kann ich dem Agent sagen, führe nach jeder Änderung go test und golangci-lint aus. Das funktioniert...naja... drauf verlassen würde ich mich nicht.
Es musste eine Lösung her, die Unabhängig vom Agent funktioniert: Pre-Commit Hooks. Pre-commit Hooks werden automatisch ausgeführt, bevor der git commit angewendet wird. Neben kleineren Dingen führen die vor allem go test und golangci-lint aus, unabhängig vom Agent. Und der Agent kann sich nicht dagegen wehren.
Schlägt einer der Hooks fehl, wird der Commit blockiert. Der Agent bekommt den Fehler zurück und muss ihn beheben, bevor er erneut commiten kann. Das hat sich in der Praxis sehr bewährt. Viele typischen Fehler, etwa fehlende return-Statements nach t.Fatal(), nicht geprüfte Error-Returns, falsche Selektoren, wurden so bisher zuverlässig abgefangen.
Etwas mehr Dokumentation zu den pre-commit Hooks ist im Git Repo zu finden.
Automatische Dependency-Updates mit Renovate
Go-Module, GitHub Actions, Docker Base Images, alles veraltet mit der Zeit. Statt manuell go get -u auszuführen oder GitHub Actions Versionen zu pflegen, übernimmt das Renovate. Niemand kann manuell bei all den Depdendencies den Überblick behalten...
Renovate scannt das Repository regelmäßig, erkennt veraltete Abhängigkeiten und öffnet automatisch Pull Requests mit den Updates. Da jeder Merge auf Main ein neues Docker Image baut, landet ein Dependency Update innerhalb kürzester Zeit als frisches Image in der Registry, ohne auch nur einen Finger manueller Arbeit zu rühren.
CI/CD: Jeder Commit baut ein Docker Image
Das Projekt enthält ein Multi-Stage Dockerfile mit zwei Targets: einen für den k8s-analyzer und einen für den checkmk-analyzer. Die GitHub Actions Pipeline baut bei jedem Push auf Main beide Images und pusht sie nach ghcr.io, getaggt mit dem kurzen Commit-SHA und latest.
Das bedeutet: Jede Änderung des Bots, jedes Renovate-Update, jeder meiner Commits landet automatisch als deployfertige Container-Images in der Registry. Kein manuelles Bauen, kein manuelles Pushen.
Fazit: KI-gestützte Entwicklung mit definierten Grenzen
Dieses Setup zeigt, was heute mit KI-gestützter Entwicklung möglich sein kann, wenn man ein paar Dinge beachtet:
- Mit dem Source Code über einen Chat Kanal "chatten"
- Autonomie durch einen stündlichen Task, der ohne Intervention
arbeitet - Sicherheit durch Pre-Commit Hooks, die schlechten Code blockieren
- Aktualität durch Renovate für automatische Dependency-Updates
- Schnelligkeit durch CI/CD, das jeden Commit direkt als Image verfügbar macht
Der Bot ist kein Ersatz für technisches Verständnis. Bei Features muss ich immer noch entscheiden, was gebaut wird und warum. Aber das Wie und die iterative Feinarbeit, Tests, Lint-Fixes, Coverage-Lücken schließen, übernimmt NanoClaw. Und das macht einen erheblichen Unterschied.
Den Quellcode gibt es auf GitHub: madic-creates/claude-alert-analyzer.


