adapt-architecture
About
This skill executes structural system transformations using Strangler-Fig migration, phased rollouts, and interface preservation. It provides planning, parallel operation, progressive replacement, rollback design, and post-migration stabilization for architecture evolution. Use it when migrating monoliths to microservices, replacing core systems incrementally, or when avoiding big-bang changes.
Quick Install
Claude Code
Recommendednpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/adapt-architectureCopy and paste this command in Claude Code to install this skill
Documentation
Architektur anpassen
Strukturelle Metamorphose ausfuehren — die Architektur eines Systems von seiner aktuellen Form in eine Zielform transformieren und dabei die betriebliche Kontinuitaet aufrechterhalten. Verwendet Strangler-Fig-Migration, Chrysalis-Phasen und Schnittstellenbewahrung, um sicherzustellen, dass das System waehrend der Transformation nie aufhoert zu funktionieren.
Wann verwenden
- Formanalyse (siehe
assess-form) hat das System als BEREIT klassifiziert - Ein System muss seine Architektur weiterentwickeln, um neue Anforderungen ohne Ausfallzeit zu erfuellen
- Migration von Monolith zu Microservices (oder umgekehrt)
- Ersetzen eines Kernteilsystems waehrend abhaengige Systeme weiterlaufen
- Weiterentwicklung eines Datenmodells bei Beibehaltung der Abwaertskompatibilitaet
- Jede Architekturanpassung, die schrittweise statt als Big-Bang erfolgen muss
Eingaben
- Erforderlich: Aktuelle Formanalyse (von
assess-formoder gleichwertiger Analyse) - Erforderlich: Zielarchitektur (was das System werden soll)
- Erforderlich: Anforderungen an die betriebliche Kontinuitaet (was waehrend der Transformation nicht ausfallen darf)
- Optional: Verfuegbares Transformationsbudget (Zeit, Personen, Rechenleistung)
- Optional: Rollback-Anforderungen (wie weit muessen wir zurueckgehen koennen?)
- Optional: Parallelbetriebsdauer (wie lange sollen Alt und Neu gleichzeitig laufen?)
Vorgehensweise
Schritt 1: Transformations-Blueprint entwerfen
Den Metamorphose-Pfad von der aktuellen Form zur Zielform planen.
- Die Transformation als Abfolge von Zwischenformen abbilden:
- Aktuelle Form → Zwischenform 1 → ... → Zielform
- Jede Zwischenform muss betriebsfaehig sein (kann Traffic bedienen, Tests bestehen)
- Keine Zwischenform sollte schwieriger zu warten sein als die aktuelle Form
- Die Transformationsnaehte identifizieren:
- Wo kann die aktuelle Form "geschnitten" werden, um die neue Architektur einzufuegen?
- Natuerliche Naehte: bestehende Schnittstellen, Modulgrenzen, Datenpartitionen
- Kuenstliche Naehte: Schnittstellen, die speziell fuer den Schnitt erstellt wurden (Anti-Corruption-Layer)
- Das Metamorphose-Muster waehlen:
- Strangler Fig: Neues System waechst um das alte herum und ersetzt es schrittweise
- Chrysalis: Altes System wird in eine neue Huelle verpackt; Interna werden ersetzt, waehrend die Huelle die externe Schnittstelle bewahrt
- Budding: Neues System waechst neben dem alten; Traffic wird schrittweise umgeleitet (siehe
scale-colonyfuer Kolonie-Budding) - Metamorphe Migration: Phasenweise Ersetzung von Komponenten in Abhaengigkeitsreihenfolge (Blaetter zuerst, Wurzeln zuletzt)
- Die Schnittstellenbewahrungsschicht entwerfen:
- Externe Konsumenten duerfen keine Stoerung erfahren
- API-Versionierung, abwaertskompatible Vertraege, Adapter-Muster
- Die Bewahrungsschicht ist temporaeres Geruest — ihre Entfernung planen
Metamorphosis Patterns:
┌───────────────┬───────────────────────────────────────────────────┐
│ Strangler Fig │ New code intercepts routes one by one; │
│ │ old code handles everything else until replaced │
│ │ ┌──────────┐ │
│ │ │ Old ████ │ → │ Old ██ New ██ │ → │ New ████ │ │
│ │ └──────────┘ │
├───────────────┼───────────────────────────────────────────────────┤
│ Chrysalis │ Wrap old system in new interface; replace │
│ │ internals while external shell stays stable │
│ │ ┌──────────┐ ┌──[new]───┐ ┌──[new]───┐ │
│ │ │ old core │ → │ old core │ → │ new core │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │
├───────────────┼───────────────────────────────────────────────────┤
│ Budding │ New system runs in parallel; traffic shifts │
│ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │ │ Old │ │ New │ → │ Old │ │ New │ │
│ │ │ 100% │ │ 0% │ │ 0% │ │ 100% │ │
│ │ └──────┘ └──────┘ └──────┘ └──────┘ │
└───────────────┴───────────────────────────────────────────────────┘
Erwartet: Ein Transformations-Blueprint, der Zwischenformen, Naehte, das gewaehlte Metamorphose-Muster und die Schnittstellenbewahrungsstrategie zeigt. Jeder Schritt ist konkret und testbar.
Bei Fehler: Wenn keine saubere Naht gefunden werden kann, muss das System moeglicherweise vorab aufgeloest werden (siehe dissolve-form), um Naehte vor der Transformation zu schaffen. Wenn die Zwischenformen nicht betriebsfaehig sind, sind die Transformationsschritte zu gross — in kleinere Inkremente zerlegen.
Schritt 2: Geruest aufbauen
Die temporaere Infrastruktur konstruieren, die die Metamorphose unterstuetzt.
- Anti-Corruption-Layer erstellen:
- Eine duenne Uebersetzungsschicht zwischen dem alten und neuen System
- Leitet Anfragen basierend auf dem Migrationsstatus an das entsprechende System (alt oder neu) weiter
- Uebersetzt Datenformate zwischen alter und neuer Darstellung
- Diese Schicht ist der "Kokon", der die Transformation schuetzt
- Parallelbetrieb-Infrastruktur aufsetzen:
- Beide Systeme (alt und neu) muessen gleichzeitig deploybar sein
- Feature-Flags steuern, welches System welchen Traffic behandelt
- Vergleichsmechanismen validieren, dass alt und neu aequivalente Ergebnisse liefern
- Rollback-Kontrollpunkte einrichten:
- Bei jeder Zwischenform sicherstellen, dass ein Rollback zur vorherigen Form moeglich ist
- Rollback muss schneller sein als der Vorwaerts-Transformationsschritt
- Datenmigration muss reversibel sein (oder Daten muessen waehrend der Transition doppelt geschrieben werden)
- Validierungs-Harnisch aufbauen:
- Automatisierte Tests, die die betriebliche Kontinuitaet bei jeder Zwischenform verifizieren
- Performance-Benchmarks, die Regressionen erkennen
- Datenintegritaetspruefungen, die Migrationsfehler auffangen
Erwartet: Geruest-Infrastruktur (Anti-Corruption-Layer, Parallelbetrieb, Rollback, Validierung) ist vorhanden, bevor eine Transformation beginnt. Das Geruest selbst ist getestet und verifiziert.
Bei Fehler: Wenn das Geruest zu aufwaendig ist, vereinfachen: Das minimale Geruest ist ein Feature-Flag und ein Rollback-Verfahren. Anti-Corruption-Layer und Parallelbetrieb erhoehen die Sicherheit, sind aber fuer kleinere Transformationen nicht immer noetig.
Schritt 3: Progressive Umstellung durchfuehren
Funktionalitaet schrittweise von der alten Form in die neue Form migrieren.
- Komponenten fuer die Migration ordnen:
- Mit der am wenigsten gekoppelten, risikoaermsten Komponente beginnen (Vertrauen aufbauen)
- Zu kritischeren, staerker gekoppelten Komponenten fortschreiten
- Die am staerksten gekoppelte/kritischste Komponente fuer zuletzt aufheben (das Team hat dann Erfahrung)
- Fuer jede Komponente: a. Die neue Version hinter dem Anti-Corruption-Layer implementieren b. Parallel betreiben: sowohl alt als auch neu verarbeiten dieselben Eingaben c. Ausgaben vergleichen — sie sollten aequivalent sein (oder die Unterschiede sollten erwartet und dokumentiert sein) d. Bei Zuversicht den Traffic auf die neue Version umschalten (Feature-Flag-Wechsel) e. Auf Anomalien ueberwachen (Monitoring-Empfindlichkeit nach der Umstellung erhoehen) f. Nach einer Stabilitaetsphase die alte Version dieser Komponente stilllegen
- Kontinuierliche Auslieferung durchgehend aufrechterhalten:
- Jeder Umstellungsschritt ist ein normales Deployment, kein Sonderereignis
- Das System befindet sich immer in einem bekannten, getesteten, betriebsfaehigen Zustand
- Wenn eine Umstellung Probleme verursacht, auf den vorherigen Zustand zurueckrollen (der noch betriebsfaehig ist)
Erwartet: Funktionalitaet migriert Komponente fuer Komponente mit Validierung bei jedem Schritt. Das System ist immer betriebsfaehig. Jede Umstellung baut Vertrauen fuer die naechste auf.
Bei Fehler: Wenn der Parallelbetrieb Diskrepanzen aufdeckt, hat die neue Implementierung einen Fehler — vor der Umstellung beheben. Wenn eine Umstellung Performance-Verschlechterung verursacht, benoetigt die neue Komponente moeglicherweise Optimierung oder der Anti-Corruption-Layer erzeugt zu viel Overhead. Wenn das Team mitten in der Migration das Vertrauen verliert, pausieren und stabilisieren — ein halb-migriertes System in einem bekannten Zustand ist weit besser als eine ueberstuerzte vollstaendige Migration.
Schritt 4: Chrysalis-Phase managen
Die verwundbarste Phase navigieren — wenn sich das System zwischen den Formen befindet.
- Die Chrysalis-Realitaet anerkennen:
- Waehrend der Migration ist das System teils alt und teils neu
- Dieser Hybridzustand ist inherent komplexer als jeder reine Zustand
- Komplexitaet erreicht den Hoehepunkt am Mittelpunkt der Migration und nimmt dann ab
- Chrysalis-Disziplin:
- Keine neuen Features waehrend der Chrysalis-Phase (nur Transformation)
- Minimale externe Aenderungen (nicht-essentielle Deployments einfrieren)
- Erhoehtes Monitoring und Bereitschaftsabdeckung
- Taegliche Check-ins zum Migrationsfortschritt und Systemzustand
- Chrysalis-Zwischenbewertung:
- Am Halbzeitpunkt bewerten: Ist die Zielform noch das richtige Ziel?
- Hat sich etwas geaendert (Markt, Anforderungen, Team), das das Ziel beeinflusst?
- Sollte die Transformation fortgesetzt, pausiert oder umgeleitet werden?
- Die Chrysalis schuetzen:
- Den Rollback-Pfad jederzeit freihalten
- Den aktuellen Hybridzustand gruendlich dokumentieren (zukuenftige Debugger werden es brauchen)
- Der Versuchung widerstehen, temporaeres Geruest vor Abschluss der Migration "aufzuraeumen"
Erwartet: Die Chrysalis-Phase wird als bewusste, zeitlich begrenzte Periode mit erhoehter Disziplin und Monitoring gefuehrt. Das Team versteht, dass temporaere Komplexitaet der Preis fuer sichere Transformation ist.
Bei Fehler: Wenn die Chrysalis-Phase zu lange dauert, wird der Hybridzustand zum neuen Normal — was schlimmer ist als alt oder neu. Ein Zeitlimit setzen. Wenn das Limit erreicht ist, entweder die verbleibende Migration beschleunigen oder den Hybridzustand als "neue Form" akzeptieren und stabilisieren.
Schritt 5: Metamorphose abschliessen und stabilisieren
Die Transformation beenden und das Geruest entfernen.
- Finale Umstellung:
- Die letzte(n) Komponente(n) in die neue Form migrieren
- Vollstaendige Validierungssuite gegen das komplette neue System laufen lassen
- Performance-Test unter produktionsaequivalenter Last
- Geruest entfernen:
- Anti-Corruption-Layer stilllegen (wird nicht mehr benoetigt)
- Feature-Flags im Zusammenhang mit der Migration entfernen
- Parallelbetrieb-Infrastruktur bereinigen
- Den alten Systemcode archivieren (nicht loeschen) zur Referenz
- Post-Metamorphose-Stabilisierung:
- 2-4 Wochen in der neuen Form mit erhoehtem Monitoring betreiben
- Alle Probleme behandeln, die unter realen Bedingungen auftreten
- Dokumentation aktualisieren, um die neue Architektur widerzuspiegeln
- Retrospektive:
- Was lief gut bei der Transformation?
- Was war schwieriger als erwartet?
- Was wuerden wir naechstes Mal anders machen?
- Das Transformations-Playbook des Teams aktualisieren
Erwartet: Die Transformation ist abgeschlossen. Das System arbeitet in seiner neuen Form. Das Geruest ist entfernt. Die Dokumentation ist aktualisiert. Das Team hat Erkenntnisse fuer zukuenftige Transformationen festgehalten.
Bei Fehler: Wenn die neue Form nach der Umstellung instabil ist, den Rollback-Pfad aufrechterhalten und die Stabilisierung fortsetzen. Wenn die Stabilisierung laenger dauert als geplant, liegt moeglicherweise ein Designproblem in der neuen Architektur vor — abwaegen, ob gezielte Korrekturen oder ein teilweiser Rollback der problematischsten Komponente angemessen sind.
Validierung
- Transformations-Blueprint zeigt tragfaehige Zwischenformen
- Geruest (Anti-Corruption-Layer, Rollback, Validierungs-Harnisch) ist vor Migrationsbeginn vorhanden
- Komponenten migrieren in der Reihenfolge vom niedrigsten zum hoechsten Risiko
- Parallelbetrieb validiert Aequivalenz bei jedem Schritt
- Chrysalis-Phase ist zeitlich begrenzt mit Feature-Freeze-Disziplin
- Gesamtes Geruest wird nach Abschluss der Transformation entfernt
- Post-Metamorphose-Stabilisierungsphase verlaeuft ohne kritische Probleme
- Retrospektive erfasst Erkenntnisse
Haeufige Stolperfallen
- Big-Bang-Migration: Versuch, alles auf einmal zu transformieren. Dies gibt die Sicherheit der inkrementellen Umstellung auf und maximiert den Wirkungsradius. Immer inkrementell migrieren
- Permanentes Geruest: Anti-Corruption-Layer und Feature-Flags, die nie entfernt werden, werden zu technischen Schulden. Die Geruest-Entfernung als Teil der Transformation planen, nicht als Nachgedanke
- Chrysalis-Leugnung: So zu tun, als waere der Hybridzustand normal, fuehrt zu Feature-Entwicklung auf instabilen Grundlagen. Die Chrysalis-Phase anerkennen und ihre Disziplin durchsetzen
- Zielfixierung: So sehr auf die Zielarchitektur festgelegt sein, dass Anzeichen einer besseren Alternative ignoriert werden. Die Chrysalis-Zwischenbewertung existiert aus diesem Grund
- Transformationsmuedigkeit: Lange Migrationen erschoepfen Teams. Jeden Transformationsschritt klein genug halten, um in Tagen statt Wochen abgeschlossen zu werden. Meilensteine feiern, um die Dynamik aufrechtzuerhalten
Verwandte Skills
assess-form— Voraussetzungsanalyse, die bestimmt, ob das System fuer die Transformation bereit istdissolve-form— fuer Systeme, die zu starr fuer eine direkte Transformation sind; Aufloesung schafft die hier benoetigten Naehterepair-damage— Wiederherstellungs-Skill fuer den Fall, dass die Transformation Schaeden einfuehrtshift-camouflage— Oberflaechenanpassung, die ohne tiefgreifende Architekturanpassung ausreichen kanncoordinate-swarm— Schwarmkoordination informiert die Sequenzierung der Transformation ueber verteilte Systemescale-colony— Wachstumsdruck ist ein haeufiger Ausloeser fuer Architekturanpassungimplement-gitops-workflow— GitOps liefert die Deployment-Infrastruktur fuer progressive Umstellungreview-software-architecture— ergaenzender Review-Skill zur Bewertung der Zielarchitektur
GitHub Repository
Related Skills
executing-plans
DesignUse the executing-plans skill when you have a complete implementation plan to execute in controlled batches with review checkpoints. It loads and critically reviews the plan, then executes tasks in small batches (default 3 tasks) while reporting progress between each batch for architect review. This ensures systematic implementation with built-in quality control checkpoints.
requesting-code-review
DesignThis skill dispatches a code-reviewer subagent to analyze code changes against requirements before proceeding. It should be used after completing tasks, implementing major features, or before merging to main. The review helps catch issues early by comparing the current implementation with the original plan.
connect-mcp-server
DesignThis skill provides a comprehensive guide for developers to connect MCP servers to Claude Code using HTTP, stdio, or SSE transports. It covers installation, configuration, authentication, and security for integrating external services like GitHub, Notion, and custom APIs. Use it when setting up MCP integrations, configuring external tools, or working with Claude's Model Context Protocol.
web-cli-teleport
DesignThis skill helps developers choose between Claude Code Web and CLI interfaces based on task analysis, then enables seamless session teleportation between these environments. It optimizes workflow by managing session state and context when switching between web, CLI, or mobile. Use it for complex projects requiring different tools at various stages.
