From bc07c71f390bb3fa152d03e02bccc32767202181 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Mon, 11 May 2026 20:15:44 +0200 Subject: [PATCH] =?UTF-8?q?Neuer=20Skill:=20dep-update-check=20f=C3=BCr=20?= =?UTF-8?q?Dependency-=20und=20Python-Updates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .claude/skills/dep-update-check/SKILL.md | 154 +++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 .claude/skills/dep-update-check/SKILL.md diff --git a/.claude/skills/dep-update-check/SKILL.md b/.claude/skills/dep-update-check/SKILL.md new file mode 100644 index 0000000..8950b53 --- /dev/null +++ b/.claude/skills/dep-update-check/SKILL.md @@ -0,0 +1,154 @@ +--- +name: dep-update-check +description: Prüft manuell, ob Python-Version und Projekt-Dependencies aktualisiert werden können, und testet die Kompatibilität. Verwende diesen Skill AUSSCHLIESSLICH wenn der Benutzer explizit danach fragt – z.B. '/dep-update-check', 'Prüfe Dependencies', 'Sind Updates verfügbar?', 'Kann ich Python updaten?'. Niemals automatisch auslösen. +--- + +# Dependency & Python Update Check + +Dieser Skill prüft systematisch, welche Updates für das DocuMentor-Projekt verfügbar sind und ob sie kompatibel miteinander sind. Verwendete Werkzeuge: `uv`, `pyproject.toml`. + +## Ablauf + +Führe alle Schritte der Reihe nach aus und erstelle am Ende einen übersichtlichen Report. + +--- + +## Schritt 1: Python-Versionscheck + +Lies die Python-Constraint aus `pyproject.toml` (Feld `requires-python`). + +```bash +grep "requires-python" pyproject.toml +``` + +Prüfe dann, welche stabilen Python-Versionen im erlaubten Bereich verfügbar sind: + +```bash +uv python list +``` + +**Stabile Versionen** sind jene ohne Suffix wie `b1`, `rc1`, `a1` oder `+freethreaded`. Filtere Beta- und Release-Candidate-Versionen heraus. + +Vergleiche: +- Aktuell verwendete Version: `uv run python --version` +- Neueste stabile verfügbare Version innerhalb der Constraints + +Falls eine neuere stabile Version verfügbar ist, notiere dies für den Report. + +--- + +## Schritt 2: Veraltete Dependencies ermitteln + +```bash +uv tree --outdated +``` + +Extrahiere daraus die **direkten** Projektabhängigkeiten (aus `pyproject.toml`, Abschnitte `[project] dependencies` und `[dependency-groups]`) und trenne sie von transitiven Abhängigkeiten. + +Erstelle eine strukturierte Liste: +- Direkte Dependencies: Name, aktuelle Version, neueste Version +- Transitive Dependencies mit Updates (nur zur Information) + +--- + +## Schritt 3: Kompatibilitätstest + +Sichere zunächst die aktuelle Lock-Datei: + +```bash +cp uv.lock uv.lock.backup +``` + +Versuche dann, alle Dependencies auf die neuesten kompatiblen Versionen aufzulösen: + +```bash +uv lock --upgrade 2>&1 +``` + +**Interpretation:** +- `Resolved X packages` ohne Fehler → alle Updates sind kompatibel +- Fehlermeldungen über Versionskonflikte → notiere welche Pakete sich gegenseitig blockieren +- Prüfe ob `uv.lock` verändert wurde: `diff uv.lock.backup uv.lock | head -50` + +Stelle die Lock-Datei wieder her (wir wollen die Umgebung nicht tatsächlich ändern): + +```bash +mv uv.lock.backup uv.lock +``` + +--- + +## Schritt 4: Report erstellen + +Gib den Report im folgenden Format aus: + +--- + +### 🐍 Python-Version + +| | Version | +|---|---| +| Aktuell in Verwendung | z.B. 3.13.11 | +| Neueste stabile im erlaubten Bereich | z.B. 3.13.13 | +| Update empfohlen? | Ja / Nein | + +Falls ein Python-Update verfügbar ist, zeige den Befehl: +```bash +uv python install 3.X.Y +# Dann in pyproject.toml requires-python anpassen falls nötig +# Danach: uv sync +``` + +--- + +### 📦 Direkte Dependencies + +Tabelle mit Spalten: Paket | Aktuell | Verfügbar | Status + +Status-Symbole: +- ✅ Aktuell +- ⬆️ Update verfügbar +- ⚠️ Update verfügbar, aber Kompatibilitätsproblem + +--- + +### 🔗 Transitive Dependencies (Auswahl) + +Nur falls es relevante Updates gibt, kurze Liste. + +--- + +### 🔄 Kompatibilitäts-Ergebnis + +Klares Fazit: +- Können alle direkten Dependencies gleichzeitig aktualisiert werden? Ja/Nein +- Falls Nein: Welche Konflikte bestehen und warum? + +--- + +### 📋 Empfohlene Aktion + +Falls Updates verfügbar und kompatibel: +```bash +uv sync --upgrade +``` + +Falls nur einzelne Pakete aktualisiert werden sollen: +```bash +uv add paketname>=neue.version +``` + +Falls Python aktualisiert werden soll (nur wenn innerhalb der Constraints): +```bash +uv python install 3.X.Y +uv sync +``` + +--- + +## Hinweise + +- **Nie `uv sync --upgrade` automatisch ausführen** – nur im Report vorschlagen, der Benutzer entscheidet. +- Beta/RC-Python-Versionen werden nicht empfohlen (erkennbar an Suffixen wie `b1`, `rc1`). +- `pyarrow` und andere native Pakete können bei Python-Upgrades besondere Anforderungen haben – darauf hinweisen falls relevant. +- Wenn der `uv lock --upgrade`-Test fehlschlägt, die Lock-Datei **immer** aus dem Backup wiederherstellen.