Neuer Skill prüft bei jedem Commit automatisch ob THIRD_PARTY_LICENSES.txt mit pyproject.toml synchron ist. Fehlenden lxml-Eintrag ergänzt und Kategorie-Spalte im AboutDialog verbreitert. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.3 KiB
name, description
| name | description |
|---|---|
| license-check | 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:
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 fehlenremoved: Einträge in THIRD_PARTY_LICENSES.txt die nicht mehr in pyproject.toml steheninfo: Automatisch ermittelte Lizenz-Metadaten für fehlende Pakete
Schritt 2: Ergebnis auswerten
- Wenn
missingundremovedbeide 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:
- Haupt-Dependencies (Runtime)
- Transitive Dependencies direkt nach ihrem Eltern-Paket (z.B. ConnectorX nach Polars)
- 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.locknicht manuell ändern — wird durchuv syncautomatisch aktualisiert