Files
xsl-validator/.claude/skills/license-check/SKILL.md
T
info f7ef90079a Feat: License-Check-Skill und lxml-Lizenzeintrag hinzugefügt (v1.1.1)
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>
2026-03-21 17:20:07 +01:00

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 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