Spezifikations-Vergleich (Bijektiver Diff)
Du erstellst einen vollständigen Vergleichsreport zwischen zwei Versionen einer
technischen Spezifikation. Der Report erfüllt die bijektive Vollständigkeitseigenschaft:
- Vorwärts: Alt + Änderungsdokument = Neu
- Rückwärts: Neu − Änderungsdokument = Alt
Das bedeutet: Jede einzelne inhaltliche Änderung wird dokumentiert. Keine Zusammenfassungen,
kein "z.B.", kein "etc.", kein "die wichtigsten Änderungen". Der Report ist eine
Arbeitsgrundlage, aus der sich ableiten lässt, was konkret geändert werden muss.
Sprache
Der Report wird auf Deutsch verfasst, es sei denn, der User gibt explizit
eine andere Sprache an.
Dreistufige Methodik
Befolge immer diese drei Schritte in dieser Reihenfolge:
Schritt 1: Maschineller Textdiff
Ziel: Rohdaten gewinnen – jede Textabweichung zwischen den Versionen erfassen.
Dateien identifizieren: Prüfe, welche Dateien verglichen werden sollen. Bei
Dokumentfamilien (z.B. eine mehrteilige Richtlinie Teil 1–6 plus Schemapaket) identifiziere alle
korrespondierenden Paare. Prüfe auch Begleit-Verzeichnisse (Schemata, Beispiele,
Konfigurationen).
Text extrahieren – abhängig vom Format:
- PDF:
PyMuPDF (fitz). Installiere mit pip install PyMuPDF --break-system-packages -q
- DOCX:
python-docx. Installiere mit pip install python-docx --break-system-packages -q
- Markdown/HTML/Text: Direkt lesen.
- XML/XSD: Direkt lesen, Leerzeichennormalisierung.
Normalisierung: Entferne Kopf-/Fußzeilen, Seitennummern und PDF-Artefakte
vor dem Diff. Normalisiere Whitespace (mehrere Leerzeichen → eines,
Trailing-Whitespace entfernen).
Versionszuordnung (PFLICHT — vor dem ersten Diff):
Lies die Titelseite / Editionsangabe / Versionsnummer jedes extrahierten
Dokuments. Bestimme, welches Dokument chronologisch älter ist.
Weise zu:
- v-alt = chronologisch ältere Version (from-Seite im Diff)
- v-neu = chronologisch neuere Version (to-Seite im Diff)
Dokumentiere die Zuordnung als Kommentar im Script, z.B.:
# ZUORDNUNG (chronologisch):
# v-alt = 2. Ausgabe (2015) = Ordner "v2"
# v-neu = 3. Ausgabe (2021) = Ordner "aktuell"
# Diff-Richtung: v2 → aktuell (alt → neu)
Wichtig: Ordnernamen, Dateinamen oder die Reihenfolge im User-Prompt
sind NICHT maßgeblich für die Zuordnung. Allein die im Dokument selbst
angegebene Version/Edition/Datum bestimmt, was v-alt und was v-neu ist.
Erstelle den Diff immer als unified_diff(from=v_alt, to=v_neu), sodass
--Zeilen = v-alt und +-Zeilen = v-neu. Damit sind Diff-Vorzeichen
und Report-Spalten deckungsgleich.
Diff erstellen: Python difflib.unified_diff mit n=3 (3 Kontextzeilen).
Speichere jeden Diff als separate Datei. Die from-Datei ist immer v-alt,
die to-Datei immer v-neu (siehe Schritt 4).
Statistik erfassen: Zähle pro Diff-Datei: Gesamtzeilen, Hunks (@@-Zeilen),
hinzugefügte Zeilen (+), entfernte Zeilen (-).
Verzeichnis-Vergleich (falls Begleitverzeichnisse existieren):
Dateiliste beider Versionen vergleichen. Neue/entfernte Dateien auflisten.
Für geänderte Dateien: inhaltlichen Diff erstellen.
Wichtig – PDF-Extraktionsartefakte erkennen:
PDF-Textextraktion verliert häufig Ligaturen. Typisch: "fi" → "" (Verlust),
sodass "Definition" als "Denition", "sufficient" als "sufcient" erscheint.
Identifiziere diese systematisch und dokumentiere sie als Artefakte – sie sind
KEINE echten Dokumentänderungen. Prüfe, ob ein Muster (immer gleiche Ligatur,
in beiden Versionen gleich betroffen) auf ein Artefakt hindeutet.
Schritt 2: Hunk-für-Hunk Inhaltsanalyse
Ziel: Jeden einzelnen Diff-Hunk verstehen, kategorisieren und dokumentieren.
Für jedes Dokumentpaar: Lies den Diff und kategorisiere jeden Hunk als entweder
Muster-basiert oder Unique.
Muster-basierte Änderungen (dokumentübergreifend)
Identifiziere zuerst wiederkehrende Muster, die in mehreren Dokumenten vorkommen.
Typische Muster in Spezifikationen sind:
- Versionsnummern-Updates (Deckblatt, Header, Fußzeilen)
- Terminologie-Änderungen (ein Begriff wird durchgehend ersetzt)
- Nummerierungsformat-Änderungen (z.B. Punkt nach Kapitelnummer eingefügt/entfernt)
- Referenz-Updates (Bibliographie-Schlüssel, Querverweise)
- Schema-/Namespace-Versionierung
- Adress-/Impressum-Änderungen
- Systematische Formatierungsänderungen (Tabellenbeschriftungen, Diagrammtext-Umbrüche)
Achtung – Substanzielle vs. kosmetische Muster: Ein Muster, das sich an
mehreren Stellen wiederholt, ist nicht automatisch unwichtig. Unterscheide:
Kosmetische Muster: Nummerierungsformat, Header-/Footer-Layout, Deckblatt-Updates,
rein typografische Änderungen. Diese gehören unter "Dokumentübergreifende Änderungen"
und brauchen im Fokus-Kapitel keine Hervorhebung.
Substanzielle Muster: Wenn sich z.B. ein Maßwert (12.50 → 12.45 mm) in
mehreren Abbildungen oder Tabellen wiederholt, ist das zwar ein Muster, aber ein
technisch kritisches. Ebenso: Wenn ein Normverweis überall von einer Altnorm auf
deren Nachfolgenorm aktualisiert wird, ist das ein fachlich relevantes Muster.
Substanzielle Muster gehören ins Fokus-Kapitel (falls vorhanden) und müssen dort
mit ihrem konkreten Inhalt hervorgehoben werden.
Die Faustregel: Wenn ein Muster bewirkt, dass sich ein Produkt, ein Prozess oder
eine technische Anforderung ändert, ist es substanziell — egal wie oft es vorkommt.
Dokumentiere jedes Muster einmal vollständig: Was genau ändert sich (alter Wert → neuer Wert),
in welchen Dokumenten/Stellen es auftritt, und wie viele Stellen betroffen sind.
Unique-Änderungen (dokumentspezifisch)
Alles, was nicht in ein Muster fällt, ist eine Unique-Änderung. Dokumentiere sie
einzeln mit:
- Genauer Fundstelle (Kapitel, Tabelle, Abbildung)
- Alter Text/Wert (v-alt)
- Neuer Text/Wert (v-neu)
- Kategorie (TECHNISCH, TERMINOLOGIE, EDITORIAL, STRUKTURELL, SCHEMA, FORMATIERUNG)
Numerische und parametrische Werte extrahieren
Beim Lesen der Diffs gilt besondere Aufmerksamkeit für konkrete Werte, die sich ändern.
Technische Spezifikationen leben von Zahlen, Maßen, Toleranzen, Fristen und Codes.
Jede Änderung an einem solchen Wert hat potenziell direkte Auswirkungen auf Produkte,
Prozesse oder Systeme, die auf der Spezifikation basieren.
Suche gezielt nach:
- Physische Maße und Toleranzen (mm, cm, Pixel, dpi)
- Codierungen und Zeichensätze (Feldpositionen, Prüfziffern, erlaubte Zeichen)
- Fristen und Übergangsregelungen (Datumsangaben, Transitionszeiträume)
- Neue Codes, Kennungen oder Klassifikationen
- Geänderte Schwellwerte, Grenzwerte, Mindest-/Maximalangaben
- Referenznormen (ISO-Nummern, Ausgabejahre)
Für jede solche Änderung: den exakten alten und neuen Wert im Report angeben.
Abstrakte Beschreibungen wie "Dimensionen wurden angepasst" oder "Tabellen wurden
aktualisiert" sind wertlos — der Leser braucht "12.50 mm → 12.45 mm".
Parallelisierung: Nutze Subagenten, um mehrere Dokumentpaare gleichzeitig zu
analysieren. Jeder Subagent erhält einen Diff und liefert:
- Anzahl Hunks pro Muster
- Liste aller Unique-Änderungen mit Fundstelle, altem/neuem Text und Kategorie
- Separat: Liste aller numerischen/parametrischen Wertänderungen mit exaktem
Alt- und Neu-Wert (auch wenn sie bereits als Teil eines Musters erfasst sind)
Schritt 3: Kreuzvalidierung
Ziel: Sicherstellen, dass nichts fehlt und nichts halluziniert wurde.
- Vorwärtsprüfung: Für jeden Diff-Hunk: Ist er im Report dokumentiert
(als Muster oder als Unique-Eintrag)?
- Rückwärtsprüfung: Für jeden Report-Eintrag: Gibt es einen
korrespondierenden Diff-Hunk?
- Artefakt-Bereinigung: Sind alle als Artefakt identifizierten Hunks
tatsächlich Artefakte (gleicher Text in beiden Originalversionen)?
- Hunk-Bilanz: Summe (Muster-Hunks + Unique-Hunks + Artefakt-Hunks)
muss der Gesamtzahl der Hunks pro Diff-Datei entsprechen.
- Wertänderungs-Vollständigkeit: Lies den gesamten Diff nochmals durch
und prüfe, ob alle numerischen/parametrischen Wertänderungen erfasst sind.
Dieser Schritt ist entscheidend, weil Subagenten dazu neigen, Wertänderungen
in Tabellen oder Abbildungsunterschriften zu übersehen.
Falls Lücken gefunden werden: zurück zu Schritt 2 und die fehlenden Hunks analysieren.
Fokus-Kapitel (Relevanzfilter)
Wenn der User einen bestimmten fachlichen Blickwinkel wünscht — z.B. "besonders
interessieren mich Aspekte für unsere Fertigung" oder "was bedeutet
das für unsere Firmware?" — erstelle ein Fokus-Kapitel als Kapitel 2 des Reports,
direkt nach der Methodik und vor dem Gesamtvergleich.
Warum ein Fokus-Kapitel?
Der Gesamtvergleich ist bijektiv vollständig, aber nicht priorisiert — dort steht eine
Nummerierungsänderung gleichrangig neben einer Maßänderung. Das Fokus-Kapitel ist der
Ort, an dem du als Analyst bewertest, was für den Kontext des Users wirklich relevant
ist. Damit erspart das Kapitel dem User, selbst durch hunderte Einzeländerungen zu filtern.
Aufbau und Priorisierung
Strukturiere das Fokus-Kapitel nach absteigender Praxisrelevanz:
Physische/technische Parameteränderungen — Maße, Toleranzen, Materialien,
Grenzwerte, die direkt Produktionsprozesse, Maschinen oder Prüfmittel betreffen.
Beispiel: Bauteilhöhe 12.50 → 12.45 mm; Lagetoleranz ±2 mm neu.
Neue oder entfernte Abschnitte mit Handlungsbedarf — Ganze Kapitel oder
Regelwerke, die neu eingeführt oder gestrichen wurden und die der User in seinen
Prozessen berücksichtigen muss. Beispiel: neuer Abschnitt 4.4 "Kennungssystematik"
mit Übergangsfristen.
Codierungs- und Datenformatänderungen — Änderungen an Feldstrukturen,
Prüfzifferberechnung, Zeichensätzen, die Software-Anpassungen erfordern.
Normverweisänderungen mit fachlicher Tragweite — Aktualisierte ISO-Referenzen,
die neue Anforderungen mit sich bringen (nicht bloß Nummernänderungen).
Übergangsregelungen und Fristen — Stichtage, Transitionszeiträume, die
Projektplanung beeinflussen.
Für jeden Punkt im Fokus-Kapitel: den konkreten alten und neuen Wert nennen und
kurz erläutern, warum die Änderung für den Kontext des Users relevant ist.
Was nicht ins Fokus-Kapitel gehört: Rein kosmetische Änderungen (Nummerierung,
Diagramm-Umbrüche, Titelblatt-Updates), selbst wenn sie als Muster häufig auftreten.
Diese sind im Gesamtvergleich dokumentiert und brauchen keine Hervorhebung.
Domänenkontext nutzen
Prüfe, ob ein Kontextskill zur Fachdomäne des Users verfügbar ist (ein Skill, der
Organisations-, Produkt- oder Prozesswissen bereitstellt), und lies ihn, um die
Domäne des Users besser zu verstehen. Je mehr du über die Arbeitsumgebung
des Users weißt, desto besser kannst du einschätzen, welche Änderungen operative
Relevanz haben.
Report-Erstellung
Erstelle den Report als DOCX mit python-docx. Lies dafür die SKILL.md des
docx-Skills, falls verfügbar, um Best Practices für die Dokumenterstellung zu befolgen.
Falls der docx-Skill nicht vorhanden ist, verwende das Template in references/report_template.md.
Report-Struktur
Titelseite
├── Dokumenttitel ("Vollständige Vergleichsanalyse [Spezifikationsname]")
├── Version Alt vs. Version Neu
├── Erstellungsdatum
├── Methodik-Hinweis
└── Bijektive Vollständigkeits-Zusicherung
1. Methodik
├── 1.1 Hinweis zu Extraktionsartefakten (falls PDF-Quellen)
└── 1.2 Analysierte Dokumente (Tabelle mit Seitenzahlen, Diff-Umfang)
2. Fokus-Kapitel: [Thema des Users] (falls vom User gewünscht)
├── 2.1–2.N nach Praxisrelevanz absteigend geordnet (siehe oben)
├── Jeder Abschnitt: konkreter Wert alt → neu, warum relevant
└── Hinweis: "Details siehe jeweiliges Dokumentkapitel im Gesamtvergleich"
3. Dokumentübergreifende Änderungen
├── 3.x [Jedes identifizierte Muster als eigener Abschnitt]
│ ├── Beschreibung: Was genau ändert sich
│ ├── Beispiel(e): alter Wert → neuer Wert
│ ├── Umfang: Wie viele Stellen, in welchen Dokumenten
│ └── (ggf. Änderungstabelle mit Spalten: Aspekt | v-alt | v-neu | Kategorie)
└── ...
4–N. [Pro Dokument/Teil ein Kapitel]
├── Diff-Umfang (Zeilen, Hunks: X Muster + Y Unique)
├── X.1 [Jede Unique-Änderung als eigener Unterabschnitt]
│ ├── Änderungstabelle: Aspekt | v-alt | v-neu | Kategorie
│ └── (bei komplexen Änderungen: Fließtext mit v-alt/v-neu-Zitaten)
└── ...
N+1. Schema-/Begleitdateien (falls vorhanden)
├── Breaking Changes
├── Neue/entfernte Elemente
└── Einzeldatei-Änderungen
N+2. Kreuzvalidierung und Vollständigkeitsnachweis
├── Vollständigkeits-Matrix (Tabelle: Band | Hunks | Dokumentiert | Abdeckung)
├── Kategorisierung nach Änderungstyp (prozentuale Verteilung)
└── Bijektive Eigenschaft (Vorwärts + Rückwärts)
Überschriften in den Dokumentkapiteln
Im Gesamtvergleich (Kapitel 4–N) wird jede Unique-Änderung als Unterabschnitt
dargestellt. Die Überschrift dieses Unterabschnitts muss die präzise Fundstelle
im Originaldokument angeben — also den Abschnitt, die Tabelle oder die Abbildung,
in der die Änderung stattfindet.
Gute Überschriften:
- "5.8 Abbildung 7 – Vorlage: Anmerkung 5 Randtoleranz (NEU)"
- "4.4 Kennungssystematik (NEUER ABSCHNITT)"
- "Tabelle 4 – Pflichtangaben, Zeile 'Höhe'"
Schlechte Überschriften:
- "Hunk 4" / "Hunk 10" — diese internen Diff-Referenzen sind für den Leser nutzlos,
weil sie keine Verbindung zum Originaldokument herstellen. Hunk-Nummern sind ein
internes Arbeitsmittel der Analyse; sie gehören nicht in den Report.
- "Verschiedene Änderungen in Abschnitt 5"
- "Weitere Tabellen-Updates"
Die Faustregel: Jemand, der den Report liest, sollte die Überschrift sehen und sofort
wissen, an welcher Stelle im Originaldokument er nachschlagen muss.
Änderungstabellen
Das Kernformat für jede Einzeländerung ist eine Tabelle mit vier Spalten:
| Aspekt |
v-alt |
v-neu |
Kategorie |
| Genaue Fundstelle |
Exakter alter Text/Wert |
Exakter neuer Text/Wert |
TECHNISCH/TERMINOLOGIE/... |
Verwende die Hilfsfunktion add_change_table() aus scripts/docx_helpers.py dafür.
Kategorien
Verwende diese Kategorien konsistent:
- TECHNISCH – Fachliche Anforderungsänderungen, neue/geänderte Parameter, Prozessänderungen
- TERMINOLOGIE – Begriffsersetzungen, Umbennennungen
- SCHEMA – XML/XSD-Änderungen, Namespace-Migrationen, neue Elemente/Attribute
- STRUKTURELL – Neue/entfernte Kapitel, Abschnitte, Profile
- EDITORIAL – Tippfehler, Grammatik, Typographie
- FORMATIERUNG – Nummerierung, Seitenumbrüche, Tabellenheader, Diagramm-Textumbrüche
- VERSION – Reine Versionsnummern-Updates
- BIBLIOGRAPHIE – Aktualisierte Referenzen, neue/entfernte Quellen
- ARTEFAKT – Extraktionsartefakte (nur im Methodik-Kapitel dokumentiert, nicht als Änderung gezählt)
Qualitätsprinzipien
Diese Prinzipien sind nicht optional – sie sind der Kern des Skills:
Bijektive Vollständigkeit: Jeder Diff-Hunk ist im Report nachvollziehbar.
Jeder Report-Eintrag hat einen korrespondierenden Diff-Hunk.
Keine Halluzinationen: Dokumentiere nichts, was nicht im Diff steht.
Wenn du dir unsicher bist, lies den Diff nochmal. Im Zweifel: den Hunk
als "unklar, bedarf manueller Prüfung" markieren statt zu raten.
Keine Zusammenfassungen: Nie "z.B.", "etc.", "unter anderem",
"die wichtigsten". Jede Änderung einzeln. Muster dürfen zusammengefasst
dokumentiert werden (das ist der Sinn der Muster-Erkennung), aber jedes
Muster muss vollständig beschrieben sein (alle betroffenen Stellen, exakte
alte/neue Werte).
Exakte Werte: Immer den exakten alten und neuen Text/Wert angeben.
Nicht "die Terminologie wurde geändert", sondern "'mandatory' wird zu 'REQUIRED'".
Nicht "die Dimensionen wurden aktualisiert", sondern "12.50 mm → 12.45 mm".
Abstrakte Umschreibungen, die den konkreten Wert verschleiern, verfehlen
den Zweck des Reports.
Transparenz bei Grenzen: Wenn die Extraktion Artefakte produziert,
dokumentiere das. Wenn ein Hunk unklar ist, sage das. Der User muss
wissen, wo er selbst nochmal hinschauen sollte.
Präzise Fundstellen: Jede Änderung wird mit ihrer genauen Position im
Originaldokument referenziert (Kapitel, Abschnitt, Tabelle, Abbildung).
Interne Diff-Referenzen wie "Hunk 7" oder "Zeile 234 im Diff" haben im
Report nichts zu suchen.
Umgang mit großen Dokumentfamilien
Bei Spezifikationen mit vielen Teilen (z.B. 6+ Teilbände):
Parallelisiere aggressiv: Nutze Subagenten für Textextraktion,
Diff-Analyse und Hunk-Kategorisierung. Starte alle unabhängigen
Analysen gleichzeitig.
Muster zuerst: Analysiere 2–3 Diffs zuerst, um die Muster zu
identifizieren. Gib den restlichen Subagenten die Muster-Liste mit,
damit sie effizient kategorisieren können.
Iteriere den Report: Generiere erst eine Grundversion, dann
verifiziere und ergänze. Lieber einmal mehr regenerieren als
Lücken im Report lassen.
Wertänderungs-Review am Ende: Bevor der Report als fertig gilt,
lies alle Diffs nochmals mit Fokus auf numerische und parametrische
Wertänderungen. Subagenten neigen dazu, Wertänderungen in Tabellen,
Abbildungsunterschriften und Fußnoten zu übersehen. Dieser letzte
Durchgang fängt die häufigsten Lücken auf.
Dateien in diesem Skill
references/report_template.md – Detailliertes Report-Template mit Styling-Anweisungen
scripts/docx_helpers.py – Python-Hilfsfunktionen für die DOCX-Generierung
1---2name: spec-diff3description: Erstellt einen vollständigen, bijektiven Vergleichsreport zwischen zwei Versionen einer technischen Spezifikation (PDF, DOCX, Markdown, HTML, XML/XSD oder Textdateien). Verwende diesen Skill immer wenn der User zwei Versionen eines Dokuments oder einer Spezifikation vergleichen will — egal ob "Vergleich", "Diff", "Delta", "was hat sich geändert", "Änderungsanalyse", "compare versions", "changelog erstellen", "Unterschiede finden", "v6 vs v7", "alt gegen neu", oder ähnliche Formulierungen. Auch geeignet wenn der User ein Änderungsdokument, eine Migrationsübersicht, ein Delta-Dokument oder eine Impact-Analyse zwischen Dokumentversionen erstellen will. Funktioniert mit einzelnen Dateien ebenso wie mit ganzen Dokumentfamilien (z.B. mehrteilige TRs, Normen, Standards mit Schema-Paketen).4---56# Spezifikations-Vergleich (Bijektiver Diff)78Du erstellst einen vollständigen Vergleichsreport zwischen zwei Versionen einer9technischen Spezifikation. Der Report erfüllt die **bijektive Vollständigkeitseigenschaft**:1011- **Vorwärts:** Alt + Änderungsdokument = Neu12- **Rückwärts:** Neu − Änderungsdokument = Alt1314Das bedeutet: Jede einzelne inhaltliche Änderung wird dokumentiert. Keine Zusammenfassungen,15kein "z.B.", kein "etc.", kein "die wichtigsten Änderungen". Der Report ist eine16Arbeitsgrundlage, aus der sich ableiten lässt, was konkret geändert werden muss.1718## Sprache1920Der Report wird auf **Deutsch** verfasst, es sei denn, der User gibt explizit21eine andere Sprache an.2223## Dreistufige Methodik2425Befolge immer diese drei Schritte in dieser Reihenfolge:2627### Schritt 1: Maschineller Textdiff2829**Ziel:** Rohdaten gewinnen – jede Textabweichung zwischen den Versionen erfassen.30311. **Dateien identifizieren:** Prüfe, welche Dateien verglichen werden sollen. Bei32 Dokumentfamilien (z.B. eine mehrteilige Richtlinie Teil 1–6 plus Schemapaket) identifiziere alle33 korrespondierenden Paare. Prüfe auch Begleit-Verzeichnisse (Schemata, Beispiele,34 Konfigurationen).35362. **Text extrahieren** – abhängig vom Format:37 - **PDF:** `PyMuPDF` (fitz). Installiere mit `pip install PyMuPDF --break-system-packages -q`38 - **DOCX:** `python-docx`. Installiere mit `pip install python-docx --break-system-packages -q`39 - **Markdown/HTML/Text:** Direkt lesen.40 - **XML/XSD:** Direkt lesen, Leerzeichennormalisierung.41423. **Normalisierung:** Entferne Kopf-/Fußzeilen, Seitennummern und PDF-Artefakte43 vor dem Diff. Normalisiere Whitespace (mehrere Leerzeichen → eines,44 Trailing-Whitespace entfernen).45464. **Versionszuordnung (PFLICHT — vor dem ersten Diff):**47 Lies die Titelseite / Editionsangabe / Versionsnummer jedes extrahierten48 Dokuments. Bestimme, welches Dokument **chronologisch älter** ist.49 Weise zu:50 - **v-alt** = chronologisch ältere Version (from-Seite im Diff)51 - **v-neu** = chronologisch neuere Version (to-Seite im Diff)5253 Dokumentiere die Zuordnung als Kommentar im Script, z.B.:54 ```python55 # ZUORDNUNG (chronologisch):56 # v-alt = 2. Ausgabe (2015) = Ordner "v2"57 # v-neu = 3. Ausgabe (2021) = Ordner "aktuell"58 # Diff-Richtung: v2 → aktuell (alt → neu)59 ```6061 **Wichtig:** Ordnernamen, Dateinamen oder die Reihenfolge im User-Prompt62 sind NICHT maßgeblich für die Zuordnung. Allein die im Dokument selbst63 angegebene Version/Edition/Datum bestimmt, was v-alt und was v-neu ist.64 Erstelle den Diff immer als `unified_diff(from=v_alt, to=v_neu)`, sodass65 `-`-Zeilen = v-alt und `+`-Zeilen = v-neu. Damit sind Diff-Vorzeichen66 und Report-Spalten deckungsgleich.67685. **Diff erstellen:** Python `difflib.unified_diff` mit `n=3` (3 Kontextzeilen).69 Speichere jeden Diff als separate Datei. Die from-Datei ist immer v-alt,70 die to-Datei immer v-neu (siehe Schritt 4).71726. **Statistik erfassen:** Zähle pro Diff-Datei: Gesamtzeilen, Hunks (`@@`-Zeilen),73 hinzugefügte Zeilen (`+`), entfernte Zeilen (`-`).74757. **Verzeichnis-Vergleich** (falls Begleitverzeichnisse existieren):76 Dateiliste beider Versionen vergleichen. Neue/entfernte Dateien auflisten.77 Für geänderte Dateien: inhaltlichen Diff erstellen.7879**Wichtig – PDF-Extraktionsartefakte erkennen:**80PDF-Textextraktion verliert häufig Ligaturen. Typisch: "fi" → "" (Verlust),81sodass "Definition" als "Denition", "sufficient" als "sufcient" erscheint.82Identifiziere diese systematisch und dokumentiere sie als Artefakte – sie sind83KEINE echten Dokumentänderungen. Prüfe, ob ein Muster (immer gleiche Ligatur,84in beiden Versionen gleich betroffen) auf ein Artefakt hindeutet.8586### Schritt 2: Hunk-für-Hunk Inhaltsanalyse8788**Ziel:** Jeden einzelnen Diff-Hunk verstehen, kategorisieren und dokumentieren.8990Für jedes Dokumentpaar: Lies den Diff und kategorisiere **jeden** Hunk als entweder91**Muster-basiert** oder **Unique**.9293#### Muster-basierte Änderungen (dokumentübergreifend)9495Identifiziere zuerst wiederkehrende Muster, die in mehreren Dokumenten vorkommen.96Typische Muster in Spezifikationen sind:9798- Versionsnummern-Updates (Deckblatt, Header, Fußzeilen)99- Terminologie-Änderungen (ein Begriff wird durchgehend ersetzt)100- Nummerierungsformat-Änderungen (z.B. Punkt nach Kapitelnummer eingefügt/entfernt)101- Referenz-Updates (Bibliographie-Schlüssel, Querverweise)102- Schema-/Namespace-Versionierung103- Adress-/Impressum-Änderungen104- Systematische Formatierungsänderungen (Tabellenbeschriftungen, Diagrammtext-Umbrüche)105106**Achtung – Substanzielle vs. kosmetische Muster:** Ein Muster, das sich an107mehreren Stellen wiederholt, ist nicht automatisch unwichtig. Unterscheide:108109- **Kosmetische Muster**: Nummerierungsformat, Header-/Footer-Layout, Deckblatt-Updates,110 rein typografische Änderungen. Diese gehören unter "Dokumentübergreifende Änderungen"111 und brauchen im Fokus-Kapitel keine Hervorhebung.112113- **Substanzielle Muster**: Wenn sich z.B. ein Maßwert (12.50 → 12.45 mm) in114 mehreren Abbildungen oder Tabellen wiederholt, ist das zwar ein Muster, aber ein115 technisch kritisches. Ebenso: Wenn ein Normverweis überall von einer Altnorm auf116 deren Nachfolgenorm aktualisiert wird, ist das ein fachlich relevantes Muster.117 Substanzielle Muster gehören ins Fokus-Kapitel (falls vorhanden) und müssen dort118 mit ihrem konkreten Inhalt hervorgehoben werden.119120Die Faustregel: Wenn ein Muster bewirkt, dass sich ein Produkt, ein Prozess oder121eine technische Anforderung ändert, ist es substanziell — egal wie oft es vorkommt.122123Dokumentiere jedes Muster **einmal** vollständig: Was genau ändert sich (alter Wert → neuer Wert),124in welchen Dokumenten/Stellen es auftritt, und wie viele Stellen betroffen sind.125126#### Unique-Änderungen (dokumentspezifisch)127128Alles, was nicht in ein Muster fällt, ist eine Unique-Änderung. Dokumentiere sie129**einzeln** mit:130- Genauer Fundstelle (Kapitel, Tabelle, Abbildung)131- Alter Text/Wert (v-alt)132- Neuer Text/Wert (v-neu)133- Kategorie (TECHNISCH, TERMINOLOGIE, EDITORIAL, STRUKTURELL, SCHEMA, FORMATIERUNG)134135#### Numerische und parametrische Werte extrahieren136137Beim Lesen der Diffs gilt besondere Aufmerksamkeit für konkrete Werte, die sich ändern.138Technische Spezifikationen leben von Zahlen, Maßen, Toleranzen, Fristen und Codes.139Jede Änderung an einem solchen Wert hat potenziell direkte Auswirkungen auf Produkte,140Prozesse oder Systeme, die auf der Spezifikation basieren.141142Suche gezielt nach:143- Physische Maße und Toleranzen (mm, cm, Pixel, dpi)144- Codierungen und Zeichensätze (Feldpositionen, Prüfziffern, erlaubte Zeichen)145- Fristen und Übergangsregelungen (Datumsangaben, Transitionszeiträume)146- Neue Codes, Kennungen oder Klassifikationen147- Geänderte Schwellwerte, Grenzwerte, Mindest-/Maximalangaben148- Referenznormen (ISO-Nummern, Ausgabejahre)149150Für jede solche Änderung: den exakten alten und neuen Wert im Report angeben.151Abstrakte Beschreibungen wie "Dimensionen wurden angepasst" oder "Tabellen wurden152aktualisiert" sind wertlos — der Leser braucht "12.50 mm → 12.45 mm".153154**Parallelisierung:** Nutze Subagenten, um mehrere Dokumentpaare gleichzeitig zu155analysieren. Jeder Subagent erhält einen Diff und liefert:156- Anzahl Hunks pro Muster157- Liste aller Unique-Änderungen mit Fundstelle, altem/neuem Text und Kategorie158- Separat: Liste aller numerischen/parametrischen Wertänderungen mit exaktem159 Alt- und Neu-Wert (auch wenn sie bereits als Teil eines Musters erfasst sind)160161### Schritt 3: Kreuzvalidierung162163**Ziel:** Sicherstellen, dass nichts fehlt und nichts halluziniert wurde.1641651. **Vorwärtsprüfung:** Für jeden Diff-Hunk: Ist er im Report dokumentiert166 (als Muster oder als Unique-Eintrag)?1672. **Rückwärtsprüfung:** Für jeden Report-Eintrag: Gibt es einen168 korrespondierenden Diff-Hunk?1693. **Artefakt-Bereinigung:** Sind alle als Artefakt identifizierten Hunks170 tatsächlich Artefakte (gleicher Text in beiden Originalversionen)?1714. **Hunk-Bilanz:** Summe (Muster-Hunks + Unique-Hunks + Artefakt-Hunks)172 muss der Gesamtzahl der Hunks pro Diff-Datei entsprechen.1735. **Wertänderungs-Vollständigkeit:** Lies den gesamten Diff nochmals durch174 und prüfe, ob alle numerischen/parametrischen Wertänderungen erfasst sind.175 Dieser Schritt ist entscheidend, weil Subagenten dazu neigen, Wertänderungen176 in Tabellen oder Abbildungsunterschriften zu übersehen.177178Falls Lücken gefunden werden: zurück zu Schritt 2 und die fehlenden Hunks analysieren.179180## Fokus-Kapitel (Relevanzfilter)181182Wenn der User einen bestimmten fachlichen Blickwinkel wünscht — z.B. "besonders183interessieren mich Aspekte für unsere Fertigung" oder "was bedeutet184das für unsere Firmware?" — erstelle ein **Fokus-Kapitel** als Kapitel 2 des Reports,185direkt nach der Methodik und vor dem Gesamtvergleich.186187### Warum ein Fokus-Kapitel?188189Der Gesamtvergleich ist bijektiv vollständig, aber nicht priorisiert — dort steht eine190Nummerierungsänderung gleichrangig neben einer Maßänderung. Das Fokus-Kapitel ist der191Ort, an dem du als Analyst bewertest, was für den Kontext des Users wirklich relevant192ist. Damit erspart das Kapitel dem User, selbst durch hunderte Einzeländerungen zu filtern.193194### Aufbau und Priorisierung195196Strukturiere das Fokus-Kapitel nach absteigender Praxisrelevanz:1971981. **Physische/technische Parameteränderungen** — Maße, Toleranzen, Materialien,199 Grenzwerte, die direkt Produktionsprozesse, Maschinen oder Prüfmittel betreffen.200 Beispiel: Bauteilhöhe 12.50 → 12.45 mm; Lagetoleranz ±2 mm neu.2012022. **Neue oder entfernte Abschnitte mit Handlungsbedarf** — Ganze Kapitel oder203 Regelwerke, die neu eingeführt oder gestrichen wurden und die der User in seinen204 Prozessen berücksichtigen muss. Beispiel: neuer Abschnitt 4.4 "Kennungssystematik"205 mit Übergangsfristen.2062073. **Codierungs- und Datenformatänderungen** — Änderungen an Feldstrukturen,208 Prüfzifferberechnung, Zeichensätzen, die Software-Anpassungen erfordern.2092104. **Normverweisänderungen mit fachlicher Tragweite** — Aktualisierte ISO-Referenzen,211 die neue Anforderungen mit sich bringen (nicht bloß Nummernänderungen).2122135. **Übergangsregelungen und Fristen** — Stichtage, Transitionszeiträume, die214 Projektplanung beeinflussen.215216Für jeden Punkt im Fokus-Kapitel: den konkreten alten und neuen Wert nennen und217kurz erläutern, warum die Änderung für den Kontext des Users relevant ist.218219**Was nicht ins Fokus-Kapitel gehört:** Rein kosmetische Änderungen (Nummerierung,220Diagramm-Umbrüche, Titelblatt-Updates), selbst wenn sie als Muster häufig auftreten.221Diese sind im Gesamtvergleich dokumentiert und brauchen keine Hervorhebung.222223### Domänenkontext nutzen224225Prüfe, ob ein Kontextskill zur Fachdomäne des Users verfügbar ist (ein Skill, der226Organisations-, Produkt- oder Prozesswissen bereitstellt), und lies ihn, um die227Domäne des Users besser zu verstehen. Je mehr du über die Arbeitsumgebung228des Users weißt, desto besser kannst du einschätzen, welche Änderungen operative229Relevanz haben.230231## Report-Erstellung232233Erstelle den Report als **DOCX** mit `python-docx`. Lies dafür die SKILL.md des234`docx`-Skills, falls verfügbar, um Best Practices für die Dokumenterstellung zu befolgen.235Falls der docx-Skill nicht vorhanden ist, verwende das Template in `references/report_template.md`.236237### Report-Struktur238239```240Titelseite241├── Dokumenttitel ("Vollständige Vergleichsanalyse [Spezifikationsname]")242├── Version Alt vs. Version Neu243├── Erstellungsdatum244├── Methodik-Hinweis245└── Bijektive Vollständigkeits-Zusicherung2462471. Methodik248├── 1.1 Hinweis zu Extraktionsartefakten (falls PDF-Quellen)249└── 1.2 Analysierte Dokumente (Tabelle mit Seitenzahlen, Diff-Umfang)2502512. Fokus-Kapitel: [Thema des Users] (falls vom User gewünscht)252├── 2.1–2.N nach Praxisrelevanz absteigend geordnet (siehe oben)253├── Jeder Abschnitt: konkreter Wert alt → neu, warum relevant254└── Hinweis: "Details siehe jeweiliges Dokumentkapitel im Gesamtvergleich"2552563. Dokumentübergreifende Änderungen257├── 3.x [Jedes identifizierte Muster als eigener Abschnitt]258│ ├── Beschreibung: Was genau ändert sich259│ ├── Beispiel(e): alter Wert → neuer Wert260│ ├── Umfang: Wie viele Stellen, in welchen Dokumenten261│ └── (ggf. Änderungstabelle mit Spalten: Aspekt | v-alt | v-neu | Kategorie)262└── ...2632644–N. [Pro Dokument/Teil ein Kapitel]265├── Diff-Umfang (Zeilen, Hunks: X Muster + Y Unique)266├── X.1 [Jede Unique-Änderung als eigener Unterabschnitt]267│ ├── Änderungstabelle: Aspekt | v-alt | v-neu | Kategorie268│ └── (bei komplexen Änderungen: Fließtext mit v-alt/v-neu-Zitaten)269└── ...270271N+1. Schema-/Begleitdateien (falls vorhanden)272├── Breaking Changes273├── Neue/entfernte Elemente274└── Einzeldatei-Änderungen275276N+2. Kreuzvalidierung und Vollständigkeitsnachweis277├── Vollständigkeits-Matrix (Tabelle: Band | Hunks | Dokumentiert | Abdeckung)278├── Kategorisierung nach Änderungstyp (prozentuale Verteilung)279└── Bijektive Eigenschaft (Vorwärts + Rückwärts)280```281282### Überschriften in den Dokumentkapiteln283284Im Gesamtvergleich (Kapitel 4–N) wird jede Unique-Änderung als Unterabschnitt285dargestellt. Die Überschrift dieses Unterabschnitts muss die **präzise Fundstelle286im Originaldokument** angeben — also den Abschnitt, die Tabelle oder die Abbildung,287in der die Änderung stattfindet.288289Gute Überschriften:290- "5.8 Abbildung 7 – Vorlage: Anmerkung 5 Randtoleranz (NEU)"291- "4.4 Kennungssystematik (NEUER ABSCHNITT)"292- "Tabelle 4 – Pflichtangaben, Zeile 'Höhe'"293294Schlechte Überschriften:295- "Hunk 4" / "Hunk 10" — diese internen Diff-Referenzen sind für den Leser nutzlos,296 weil sie keine Verbindung zum Originaldokument herstellen. Hunk-Nummern sind ein297 internes Arbeitsmittel der Analyse; sie gehören nicht in den Report.298- "Verschiedene Änderungen in Abschnitt 5"299- "Weitere Tabellen-Updates"300301Die Faustregel: Jemand, der den Report liest, sollte die Überschrift sehen und sofort302wissen, an welcher Stelle im Originaldokument er nachschlagen muss.303304### Änderungstabellen305306Das Kernformat für jede Einzeländerung ist eine Tabelle mit vier Spalten:307308| Aspekt | v-alt | v-neu | Kategorie |309|--------|-------|-------|-----------|310| Genaue Fundstelle | Exakter alter Text/Wert | Exakter neuer Text/Wert | TECHNISCH/TERMINOLOGIE/... |311312Verwende die Hilfsfunktion `add_change_table()` aus `scripts/docx_helpers.py` dafür.313314### Kategorien315316Verwende diese Kategorien konsistent:317318- **TECHNISCH** – Fachliche Anforderungsänderungen, neue/geänderte Parameter, Prozessänderungen319- **TERMINOLOGIE** – Begriffsersetzungen, Umbennennungen320- **SCHEMA** – XML/XSD-Änderungen, Namespace-Migrationen, neue Elemente/Attribute321- **STRUKTURELL** – Neue/entfernte Kapitel, Abschnitte, Profile322- **EDITORIAL** – Tippfehler, Grammatik, Typographie323- **FORMATIERUNG** – Nummerierung, Seitenumbrüche, Tabellenheader, Diagramm-Textumbrüche324- **VERSION** – Reine Versionsnummern-Updates325- **BIBLIOGRAPHIE** – Aktualisierte Referenzen, neue/entfernte Quellen326- **ARTEFAKT** – Extraktionsartefakte (nur im Methodik-Kapitel dokumentiert, nicht als Änderung gezählt)327328## Qualitätsprinzipien329330Diese Prinzipien sind nicht optional – sie sind der Kern des Skills:3313321. **Bijektive Vollständigkeit:** Jeder Diff-Hunk ist im Report nachvollziehbar.333 Jeder Report-Eintrag hat einen korrespondierenden Diff-Hunk.3343352. **Keine Halluzinationen:** Dokumentiere nichts, was nicht im Diff steht.336 Wenn du dir unsicher bist, lies den Diff nochmal. Im Zweifel: den Hunk337 als "unklar, bedarf manueller Prüfung" markieren statt zu raten.3383393. **Keine Zusammenfassungen:** Nie "z.B.", "etc.", "unter anderem",340 "die wichtigsten". Jede Änderung einzeln. Muster dürfen zusammengefasst341 dokumentiert werden (das ist der Sinn der Muster-Erkennung), aber jedes342 Muster muss vollständig beschrieben sein (alle betroffenen Stellen, exakte343 alte/neue Werte).3443454. **Exakte Werte:** Immer den exakten alten und neuen Text/Wert angeben.346 Nicht "die Terminologie wurde geändert", sondern "'mandatory' wird zu 'REQUIRED'".347 Nicht "die Dimensionen wurden aktualisiert", sondern "12.50 mm → 12.45 mm".348 Abstrakte Umschreibungen, die den konkreten Wert verschleiern, verfehlen349 den Zweck des Reports.3503515. **Transparenz bei Grenzen:** Wenn die Extraktion Artefakte produziert,352 dokumentiere das. Wenn ein Hunk unklar ist, sage das. Der User muss353 wissen, wo er selbst nochmal hinschauen sollte.3543556. **Präzise Fundstellen:** Jede Änderung wird mit ihrer genauen Position im356 Originaldokument referenziert (Kapitel, Abschnitt, Tabelle, Abbildung).357 Interne Diff-Referenzen wie "Hunk 7" oder "Zeile 234 im Diff" haben im358 Report nichts zu suchen.359360## Umgang mit großen Dokumentfamilien361362Bei Spezifikationen mit vielen Teilen (z.B. 6+ Teilbände):3633641. **Parallelisiere aggressiv:** Nutze Subagenten für Textextraktion,365 Diff-Analyse und Hunk-Kategorisierung. Starte alle unabhängigen366 Analysen gleichzeitig.3673682. **Muster zuerst:** Analysiere 2–3 Diffs zuerst, um die Muster zu369 identifizieren. Gib den restlichen Subagenten die Muster-Liste mit,370 damit sie effizient kategorisieren können.3713723. **Iteriere den Report:** Generiere erst eine Grundversion, dann373 verifiziere und ergänze. Lieber einmal mehr regenerieren als374 Lücken im Report lassen.3753764. **Wertänderungs-Review am Ende:** Bevor der Report als fertig gilt,377 lies alle Diffs nochmals mit Fokus auf numerische und parametrische378 Wertänderungen. Subagenten neigen dazu, Wertänderungen in Tabellen,379 Abbildungsunterschriften und Fußnoten zu übersehen. Dieser letzte380 Durchgang fängt die häufigsten Lücken auf.381382## Dateien in diesem Skill383384- `references/report_template.md` – Detailliertes Report-Template mit Styling-Anweisungen385- `scripts/docx_helpers.py` – Python-Hilfsfunktionen für die DOCX-Generierung