Files
xsl-validator/.claude/skills/dep-update-check/SKILL.md
T
2026-05-11 20:15:44 +02:00

155 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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.