95 lines
4.3 KiB
Markdown
95 lines
4.3 KiB
Markdown
|
|
---
|
||
|
|
name: license-check
|
||
|
|
description: "Prüft und aktualisiert THIRD_PARTY_LICENSES.txt bei Dependency-Änderungen. Verwende diesen Skill IMMER zusammen mit dem version-bump Skill wenn der Benutzer einen Git-Commit erstellen möchte, 'commit' erwähnt, oder nach /commit fragt. Der Skill erkennt automatisch ob sich Dependencies in pyproject.toml geändert haben und aktualisiert die Lizenzdatei entsprechend."
|
||
|
|
---
|
||
|
|
|
||
|
|
# License Check Skill
|
||
|
|
|
||
|
|
Dieser Skill stellt sicher, dass die Datei `THIRD_PARTY_LICENSES.txt` immer synchron mit den tatsächlichen Dependencies in `pyproject.toml` bleibt. Er wird automatisch als Teil des Commit-Workflows ausgeführt, parallel zum version-bump Skill.
|
||
|
|
|
||
|
|
## Warum das wichtig ist
|
||
|
|
|
||
|
|
DocuMentor listet alle verwendeten Drittanbieter-Bibliotheken mit Lizenzinformationen in `THIRD_PARTY_LICENSES.txt` auf. Wenn Dependencies hinzugefügt oder entfernt werden, muss diese Datei aktualisiert werden — sonst sind die Lizenzangaben unvollständig oder veraltet, was rechtliche Konsequenzen haben kann.
|
||
|
|
|
||
|
|
## Ablauf
|
||
|
|
|
||
|
|
### Schritt 1: Prüfskript ausführen
|
||
|
|
|
||
|
|
Führe das gebündelte Prüfskript aus:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
uv run python .claude/skills/license-check/scripts/check_licenses.py
|
||
|
|
```
|
||
|
|
|
||
|
|
Das Skript gibt JSON aus mit:
|
||
|
|
- `missing`: Dependencies in pyproject.toml die in THIRD_PARTY_LICENSES.txt fehlen
|
||
|
|
- `removed`: Einträge in THIRD_PARTY_LICENSES.txt die nicht mehr in pyproject.toml stehen
|
||
|
|
- `info`: Automatisch ermittelte Lizenz-Metadaten für fehlende Pakete
|
||
|
|
|
||
|
|
### Schritt 2: Ergebnis auswerten
|
||
|
|
|
||
|
|
- Wenn `missing` und `removed` beide leer sind: **Keine Aktion nötig.** Fahre direkt mit dem Commit fort.
|
||
|
|
- Wenn es Änderungen gibt: Zeige dem Benutzer eine Zusammenfassung und frage ob die Lizenzdatei aktualisiert werden soll.
|
||
|
|
|
||
|
|
Beispiel-Zusammenfassung:
|
||
|
|
```
|
||
|
|
Lizenzdatei-Prüfung:
|
||
|
|
+ lxml (BSD License) — neu hinzuzufügen
|
||
|
|
- some-old-lib — aus Lizenzdatei zu entfernen
|
||
|
|
```
|
||
|
|
|
||
|
|
### Schritt 3: THIRD_PARTY_LICENSES.txt aktualisieren
|
||
|
|
|
||
|
|
#### Neue Dependencies hinzufügen
|
||
|
|
|
||
|
|
Füge neue Einträge in die passende Sektion ein (Python-Abhängigkeiten oder Eingebettete Bibliotheken). Verwende das bestehende Format:
|
||
|
|
|
||
|
|
```
|
||
|
|
N. PaketName
|
||
|
|
Version: >=X.Y.Z
|
||
|
|
Lizenz: Lizenzname
|
||
|
|
Webseite: https://...
|
||
|
|
GitHub: https://github.com/...
|
||
|
|
Beschreibung: Kurzbeschreibung auf Englisch
|
||
|
|
Copyright: Copyright (c) Jahr Autor
|
||
|
|
```
|
||
|
|
|
||
|
|
Dabei gilt:
|
||
|
|
- Die Nummerierung fortlaufend innerhalb der Sektion
|
||
|
|
- Dev-Dependencies bekommen den Suffix `(Development)` im Namen
|
||
|
|
- Transitive Dependencies bekommen den Suffix `(via HauptPaket)` im Namen
|
||
|
|
- Die Lizenzinfos aus dem `info`-Feld des Skripts verwenden
|
||
|
|
- Wenn das Skript keine Info liefert (Paket nicht installiert), recherchiere via Web
|
||
|
|
|
||
|
|
#### Sortierung
|
||
|
|
|
||
|
|
Die Reihenfolge der Einträge folgt der logischen Gruppierung:
|
||
|
|
1. Haupt-Dependencies (Runtime)
|
||
|
|
2. Transitive Dependencies direkt nach ihrem Eltern-Paket (z.B. ConnectorX nach Polars)
|
||
|
|
3. Dev-Dependencies am Ende der Python-Sektion
|
||
|
|
|
||
|
|
#### Entfernte Dependencies löschen
|
||
|
|
|
||
|
|
Entferne den kompletten Block (Name, Version, Lizenz, etc.) des entfernten Pakets und nummeriere die verbleibenden Einträge neu.
|
||
|
|
|
||
|
|
#### Neue Lizenztypen
|
||
|
|
|
||
|
|
Wenn eine neue Dependency eine Lizenz verwendet, die noch nicht im Abschnitt "Lizenztexte" am Ende der Datei aufgeführt ist, füge den Lizenztext dort hinzu. Gängige Lizenztexte (MIT, Apache 2.0, BSD-3-Clause) sind bereits vorhanden.
|
||
|
|
|
||
|
|
### Schritt 4: KNOWN_ALIASES aktualisieren
|
||
|
|
|
||
|
|
Wenn neue Dependencies hinzugefügt werden, prüfe ob das `KNOWN_ALIASES`-Dict in `.claude/skills/license-check/scripts/check_licenses.py` aktualisiert werden muss:
|
||
|
|
|
||
|
|
- Wenn der Paketname in pyproject.toml anders ist als in THIRD_PARTY_LICENSES.txt (z.B. durch Suffixe wie "(Development)" oder "(via X)")
|
||
|
|
- Wenn eine Dependency transitive Dependencies hat, die separat gelistet werden
|
||
|
|
|
||
|
|
### Schritt 5: Commit fortsetzen
|
||
|
|
|
||
|
|
Füge die geänderte `THIRD_PARTY_LICENSES.txt` (und ggf. `check_licenses.py`) zum Staging-Bereich hinzu und fahre mit dem normalen Commit-Workflow fort.
|
||
|
|
|
||
|
|
## Wichtige Hinweise
|
||
|
|
|
||
|
|
- Das Skript prüft nur **Python-Abhängigkeiten** und **eingebettete Bibliotheken** — externe Tools (Saxon, FOP, diff-pdf) werden ignoriert
|
||
|
|
- Die Lizenzdatei enthält auch den Abschnitt "Stand: Monat Jahr" am Ende — diesen bei Änderungen auf den aktuellen Monat aktualisieren
|
||
|
|
- `uv.lock` nicht manuell ändern — wird durch `uv sync` automatisch aktualisiert
|