Neuer Skill: dep-update-check für Dependency- und Python-Updates
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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.
|
||||||
Reference in New Issue
Block a user