Die technischen Schulden werden jetzt fällig.
Technische Schulden abbauen. Jetzt. Automatisch.
Eine portable Agent-Skill-Suite für Claude Code, die ein PHP-Projekt dauerhaft unter kontrolliertem Refactoring hält: scannen, priorisieren, planen, umsetzen, lernen – immer wieder.
Auch für dein PHP-Projekt buchbar → weigandtlabs.de
Technical debt is coming due.
Paying down technical debt. Now. Automatically.
A portable agent-skill suite for Claude Code that keeps a PHP codebase under continuous, controlled refactoring: scan, prioritize, design, implement, learn — on repeat.
Also bookable for your PHP project → weigandtlabs.de
Warum jetzt?
KI-Agenten agieren zunehmend eigenständig – auch als Angreifer. Nach einem eigenen Sicherheitsvorfall zieht OpenAI ein klares Fazit:
„Sowohl Modellentwickler:innen als auch Cyberverteidiger:innen im weiteren Sinne müssen sich gegen KI-gestützte Angreifer:innen wappnen, die schneller, in größerem Maßstab und besser koordiniert agieren als menschliche Angreifer:innen.“
— OpenAI, „The Hugging Face incident and the road ahead“
Verteidigung heißt auch, die eigene Webanwendung laufend auf dem neuesten Stand zu halten. Neben CI/CD gehört deshalb auch CR – Continuous Refactoring zur Grundausstattung: eine Anwendung, die sich kontinuierlich in Richtung Wartbarkeit, Testbarkeit und Sicherheit weiterentwickelt, statt in seltenen, riskanten Kraftakten.
Und dieser Abbau ist gerade jetzt besonders günstig: Er kann automatisiert passieren. Die Tools selbst – Semgrep für OWASP Top 10, ein sich selbst verschärfender Test-Coverage-Boden, statische Analyse via PHPStan und Psalm – sind dabei nicht das Ziel, sondern die Voraussetzung: ein wachsendes Sicherheitsnetz, das jede automatisierte Änderung prüfbar macht. Denn einer KI sollte man nicht blind trauen. Erst mit diesem Netz kann das eigentliche Ziel weiterlaufen – kontinuierliches Scannen und Refactoring der Codebasis selbst, laufend und beiläufig.
Why now?
AI agents are increasingly acting on their own — including as attackers. Following a security incident of its own, OpenAI drew a clear conclusion:
"Both model developers and cyberdefenders more broadly need to prepare for AI-powered adversaries that act faster, at greater scale, and with better coordination than human attackers." (own translation of the German original)
— OpenAI, "The Hugging Face incident and the road ahead"
Defense also means keeping your own web application continuously up to date. Alongside CI/CD, that's why CR — Continuous Refactoring belongs in the toolbox: an application that keeps evolving toward maintainability, testability, and security, instead of rare, risky overhauls.
And paying it down is especially cheap right now: it can happen automatically. The tools themselves — Semgrep for OWASP Top 10, a test-coverage floor that only ever tightens, static analysis via PHPStan and Psalm — aren't the goal, they're the precondition: a growing safety net that makes every automated change verifiable. Because an AI shouldn't be trusted blindly. Only with that net in place can the actual goal keep running — continuously scanning and refactoring the codebase itself, ongoing and almost incidental.
Die Methode
Fünf Skills bilden einen geschlossenen Kreislauf. Jeder Durchlauf hinterlässt Spuren, an denen sich der nächste orientiert.
The method
Five skills form a closed loop. Every pass leaves traces that guide the next one.
Tippen, um direkt dorthin zu springen – sonst dreht sich der Loop von selbst weiter.
Tap to jump straight there — otherwise the loop keeps turning on its own.
-
Scan
Scannt erst das Sicherheitsnetz, dann die Codebasis auf Refactoring-Kandidaten.
Scan
Scans the safety net first, then the codebase for refactoring candidates.
-
Priorisieren
Reagiert auf Feedback, bewertet, sortiert und priorisiert die gefundenen Kandidaten.
Prioritize
Weighs feedback, sorts and ranks the candidates found.
-
Planen
Erstellt eine Spec zu einem Kandidaten und zurrt alles fest für die Umsetzung.
Design
Drafts a spec for the candidate and locks everything down for implementation.
-
Umsetzen
Implementiert den Plan testgetrieben und legt es zum Review vor.
Implement
Implements the plan test-first and puts it up for review.
-
Lernen
Hält fest, was gemacht und entschieden wurde.
Learn
Records what was done and decided.
- Jeder Schritt ist reviewbar: annehmen, ändern oder ablehnen. Every step is reviewable: accept, change, or reject it.
- Testgetrieben, Schritt für Schritt – Tempo spielt keine Rolle. Test-driven, step by step — speed doesn't matter.
- Flexible Kadenz: von gelegentlich, per Hand angestoßen, bis 24/7 durchlaufend, wenn eine Gegenstelle (Mensch oder Agent) die Vorschläge akzeptiert. Flexible cadence: from occasional, manually triggered runs to running 24/7, once a counterpart (human or agent) is accepting the proposals.
Die Skills
The skills
/continuous-refactoring
Orchestrator
Führt einen Durchlauf des gesamten Loops aus – scannen, priorisieren, planen, umsetzen, lernen. Auf Zuruf oder über einen eigenen wiederkehrenden Trigger – und stößt dabei automatisch einen fälligen Housekeeping-Sweep mit an, sobald das einmal aktiviert wurde.
Orchestrator
Runs one pass of the loop — propose, prioritise, design, implement, learn. Use on demand or via your own recurring trigger — and automatically kicks off a due housekeeping sweep too, once that's been opted into.
/refactor-scan
Schlägt vor, was als Nächstes dran ist – zuerst Sicherheitsnetz-Knoten aus dem Tooling-Baum, dann der echte Scan der Codebase auf Refactoring-Kandidaten. Erkennt außerdem – ohne zu handeln – erledigte Issues/Merge Requests.
Proposes what's next — first the safety-net nodes from the tooling tree, then the real scan of the codebase for refactoring candidates. Also detects — never acts on — issues/merge requests that have since resolved.
/refactor-prioritize
Rankt die Vorschläge von refactor-scan und empfiehlt den nächsten Arbeitsschritt – oder begründet, warum diese Runde pausiert.
Ranks refactor-scan's proposals and recommends the next one to work on, or says why nothing should start this pass.
/refactor-design
Macht aus dem gewählten Knoten einen konkreten Plan und legt ihn als Issue an – durchsucht bei structural-scan-Knoten zuerst den Code.
Turns the chosen node into a concrete refactoring plan, filing it as an issue — searches the codebase first when the node is structural-scan.
/refactor-implement
Setzt einen geplanten Refactoring-Plan testgetrieben um, Slice für Slice, am vereinbarten Seam – prüft das Ergebnis und öffnet den Merge Request.
Executes a designed refactor plan test-first, slice by slice, at the agreed seam — reviews the result, then opens the merge request.
/refactor-learn
Der einzige Skill, der Buch führt: verarbeitet Scan-Befunde und frisch geöffnete Merge Requests, pflegt Ledger, ADRs, CONTEXT.md und den Zeitstempel.
The suite's only writer of bookkeeping — acts on refactor-scan's reconciliation findings and refactor-implement's freshly opened merge request, records the ledger, ADRs, CONTEXT.md, and the last-run stamp.
/continuous-housekeeping
Separat vom Loop
Ein wiederkehrender Wartungs-Sweep – Dependency-Aktualität, Tooling-Deprecation-Cleanup, Doku-Sync – bewusst getrennt von der Scan-bis-Learn-Pipeline. Einmal aktiviert, stößt jeder /continuous-refactoring-Lauf einen fälligen Sweep automatisch mit an.
Separate from the loop
A recurring maintenance sweep — dependency currency, tooling-deprecation cleanup, documentation sync — deliberately separate from the scan-to-learn pipeline. Once opted in, every /continuous-refactoring run checks for a due sweep and runs it first, automatically.
Installation
Erst dieses Repo klonen, dann die Skills per Symlink ins Zielprojekt einbinden:
Installation
First clone this repo, then wire the skills into a target project via symlink:
git clone https://github.com/Art4/continuous-refactoring.git
ln -s /path/to/continuous-refactoring/skills/* <target>/.agents/skills/
Der Kern ist sprachneutral; die erste Spezialisierung ist ein allgemeines PHP-Projekt (Code-Style, Rector, PHPStan über den Tooling-Baum).
Der PHP-Tooling-Baum basiert auf über 20 Jahren PHP-Erfahrung von Artur Weigandt und wird laufend an den aktuellen Stand der Technik angepasst. Die Suite lernt außerdem aus jeder Entscheidung: Nimmt ein Maintainer einen Vorschlag an, lehnt ihn ab oder ändert ihn, fließt das in künftige Empfehlungen ein. Wiederkehrende Scans schlagen so immer weitere Schritte in Richtung Wartbarkeit, Testbarkeit und Sicherheit vor – inklusive OWASP-Top-10-Abdeckung durch Semgrep und einem sich selbst verschärfenden Test-Coverage-Boden.
The core is language-neutral; the first specialization is a general PHP project (code style, Rector, PHPStan via the tooling tree).
The PHP tooling tree is grounded in over 20 years of PHP experience by Artur Weigandt and is continuously updated to current best practice. The suite also learns from every decision: whenever a maintainer accepts, rejects, or changes a proposal, that feeds into future recommendations. Recurring scans keep suggesting further steps toward maintainability, testability, and security — including OWASP Top 10 coverage via Semgrep and a test-coverage floor that only ever tightens.