Eine MTG-Begleit-App mit Remote Coding bauen
Die Idee
Es fing an, wie die meisten Nebenprojekte anfangen – mit einem Problem mitten in einem Spieleabend.
Wir wollten eine Runde Magic: The Gathering in der Advanced Kingdoms-Variante spielen – eine Commander-Modifikation für größere Gruppen, bei der jeder Spieler eine geheime Rolle bekommt. Der König ist allen bekannt, die Banditen kennen sich untereinander, und verschiedene Subtypen haben besondere Informationen. Das Problem: Wir hatten die ausgedruckte Rollenkarte zu Hause vergessen.
Die Rollen werden zufällig vergeben, manche bleiben verborgen, manche werden teilweise aufgedeckt. Normalerweise haben wir eine ausgedruckte Version der Rollen dabei, aber an diesem Abend nicht. Eine kleine selbst gehostete Web-App schien die richtige Alternative.
Das Projekt aufsetzen
Das Setup war schnell erledigt. GitHub-Repo erstellen, Claude Zugriff geben, die Regeln-PDF als Kontext hinzufügen – alles unkompliziert. Der direkte Link zu einem geteilten Google-Drive-Ordner hat für das Laden des Kontexts nicht funktioniert, also war die einfachere Lösung, die PDF direkt über das GitHub-Webinterface ins Repo hochzuladen.
Erster Prompt:
Erstelle eine einfache selbst gehostete Web-App für die MTG Commander Kingdom-Variante (https://www.mtgsalvation.com/forums/the-game/commander-edh/818991-advanced-kingdoms-edh-variant-feedback-welcome). Der Ablauf: Ein Spiel mit Spieleranzahl und einem versteckten Namen erstellen. Sobald der Host auf Erstellen klickt, wird ein teilbarer Link generiert und nur seine Rolle wird ihm angezeigt. Andere Spieler nutzen den Link zum Beitreten und sehen ihre eigene Rolle. Sobald alle Spieler beigetreten sind, können keine weiteren Spieler mehr eintreten.
Das hat uns ziemlich schnell eine funktionierende Basis gegeben.
Den Code strukturieren
Das erste Ergebnis war eine einzelne app.py mit allem zusammengepfercht – HTML, CSS, Python-Logik. Für einen Prototyp in Ordnung, aber nicht gut für die Wartbarkeit oder für das LLM, das später daran weiterarbeiten soll. Ein kurzer zweiter Prompt hat das bereinigt:
Teile
app.pyauf und verwende separate Dateien für HTML, CSS usw. Halte dich an PEP-Coding-Richtlinien.
Die Rollenlogik selbst brauchte auch noch etwas Arbeit. Da das LLM vom Reddit-Post und nicht von der eigentlichen Regeln-PDF gearbeitet hat, hatte es einige Lücken mit eigenen Interpretationen gefüllt. Nachdem die PDF direkt ins Repo geladen wurde, stimmten die Rollenbeschreibungen.
Morgendliche Verbesserungen
Am nächsten Morgen habe ich das Projekt wieder aufgegriffen und ein paar Dinge hinzugefügt:
- Unterstützung für verschiedene Varianten der Variante (das Regeldokument hat mehrere Versionen)
- Vorbereitung für ein geplantes 2.0-Regelwerk
- Pre-Commit-Hooks mit
ruff,tyund einer Secrets-Prüfung - Einfache Unit-Tests
- Ein GitHub-Actions-Workflow, der ein Container-Image baut und veröffentlicht
Mein Heim-NAS läuft jetzt mit der App, über nginx exponiert. Nichts Exotisches, aber genau das, was ich wollte – eine URL zum Teilen vor dem Spielbeginn.
Wenn die KI in die falsche Richtung geht
Etwas, das erwähnenswert ist: Das Container-Setup hat beim GitHub-Actions-Workflow gehakt. Ich hatte das Image auf ghcr.io/astral-sh/uv:0.11.3-python3.14-trixie-slim basiert, und die Action schlug immer wieder fehl, weil sie eine README.md suchte, die nicht im erwarteten Ordner war.
Als ich Claude bat, das zu fixen, war der erste Vorschlag, auf ein älteres, nicht-schlankes Basis-Image zu wechseln – im Grunde den richtigen Fix gegen einen funktionierenden Workaround eintauschen. Ein kurzes Lesen der eigentlichen Fehlermeldung und ein manueller Ein-Zeilen-Fix haben das sauber gelöst.
Das ist ein Muster, das man im Hinterkopf behalten sollte: Selbst genug zu wissen, um den Fehler zu lesen und einen faulen Fix abzulehnen, gehört immer noch zum Job.
Das Ergebnis
Die App funktioniert. Spieler bekommen einen Link, treten bei, sehen ihre Rolle – und wir müssen nichts mehr ausdrucken.
Screenshots:

Der Code ist hier: github.com/tobiwan88/mtg_kimgdom
Persönliches Fazit
Als Teenager habe ich IRC-Bots gebaut, um Dinge auf meinem Heimsystem zu automatisieren. Ich erinnere mich daran, davon geträumt zu haben, einer Maschine einfach eine Idee zu erklären und sie umzusetzen zu lassen – und das fühlt sich jetzt näher an der Realität an als je zuvor.
Ich glaube trotzdem, dass man verstehen muss, was darunter passiert, um das Beste aus diesen Tools herauszuholen. Zu wissen, wie Dinge funktionieren sollten, ist das, was einen schlechte Vorschläge erkennen und die Richtung korrigieren lässt.
Die Disruption fühlt sich real an. Ein funktionierender Prototyp oder MVP ist jetzt ein Wocheneneprojekt – die Hürde, etwas zu bauen, ist erheblich gesunken. Im großen Maßstab am Laufen zu halten ist eine ganz andere Geschichte, aber der erste Schritt ist einfacher als je zuvor.
Wie Gesellschaft und Regierungen auf einen so schnellen Wandel reagieren werden, ist wohl die größere Frage. Ältere Institutionen bewegen sich langsam, und die Entscheidungen, die in den nächsten Jahren getroffen – oder nicht getroffen – werden, könnten die Dinge in sehr unterschiedliche Richtungen lenken. Ob das am Ende näher an einer Dystopie oder einer Utopie landet, hängt wohl sehr davon ab, wer das Steuer hält und wie schnell sie aufholen. Und angesichts der aktuellen Lage der Welt fühlt sich der dystopische Pfad leider wahrscheinlicher an. Es liegt an uns allen, auf die andere Möglichkeit hinzuarbeiten.