- TYPE_LABEL['md'] in scripts/build-testakte-gesamt-pdf.py: 'Aktenstuecke (Markdown)' -> 'Aktenstuecke'
- Alle 201 Gesamt-PDFs regeneriert
- Verifikation: 0/201 PDFs enthalten noch 'Markdown' auf Seite 1
- Begruendung: Im PDF verwirrt der Hinweis, dass die Quelldateien Markdown waren - die User sehen ja nur das fertige PDF
Der frueher autogenerierte '<!-- BEGIN TESTAKTEN-SECTION (auto-generated) -->'-
Block ist in 84 Plugin-READMEs wieder aufgetaucht und stand redundant
direkt neben dem aktuellen 'plugin-sofort-download-section'-Block.
Beispiel: normenkontrolle-bauleitplanung/README.md, wo der alte Block
zusaetzlich nur 1 von 2 vorhandenen Testakten zeigte.
Die Plugins selbst sind technisch unveraendert (plugin.json + skills/
in Ordnung); Aenderung ist reine README-Kosmetik. Kein Versions-Bump
noetig, Release-ZIPs sind nicht betroffen.
scripts/inject-testakten-section.py: komplett auf 'Entferner' umgebaut.
Es injiziert nichts mehr in Plugin-READMEs, sondern bereinigt nur noch
zurueckkehrende Altblocke idempotent. Plugin-READMEs erhalten ihre
Testakten-Auflistung ausschliesslich aus inject-plugin-sofort-download-section.
Bisher haben zwei Generator-Skripte parallel die gleichen Testakten in
jede Plugin-README eingefuegt:
- scripts/inject-plugin-sofort-download-section.py
-> Sektion '## Sofort-Downloads' mit Plugin-ZIP + Akten-Tabelle (PDF+ZIP)
- scripts/inject-plugin-testakten-section.py
-> Sektion '## Demonstrations-Akten' mit derselben Akten-Tabelle (PDF+ZIP)
Ergebnis: 117 von 132 Plugin-READMEs listeten ihre Testakten zweimal
direkt untereinander (z.B. gesellschaftsgruender/README.md).
Konsolidierung:
- Altes Skript scripts/inject-plugin-testakten-section.py entfernt.
- Alle <!-- BEGIN plugin-testakten-section --> Bloecke aus den READMEs entfernt.
- Sofort-Downloads-Sektion regeneriert (idempotent, Marker unveraendert).
Validator: validate-plugin-structure OK.
Damit der Plugin-ZIP-Download in JEDEM Plugin sofort sichtbar ist (nicht
mehr versteckt weit unten in der README), wird in alle 110 Plugin-READMEs
direkt nach dem H1-Titel ein 'Sofort-Downloads'-Abschnitt eingefuegt mit:
- Plugin-ZIP-Direktlink zum aktuellsten GitHub-Release
- Pro zugeordneter Testakte: Gesamt-PDF + Akten-ZIP
User-Beschwerde: Word-Plugin (word-legal-ai-plugin-and-skill-for-german-lawyers)
hatte den Download-Link erst weit unten - nicht akzeptabel.
Aenderungen:
- scripts/inject-plugin-sofort-download-section.py (neu, idempotent)
- 110/110 Plugin-READMEs: Sofort-Download-Block eingefuegt
- marketplace.json 51.3.0 -> 51.4.0
- SKILLS.md regeneriert (2682 Skills/110 Plugins)
- CHANGELOG.md, README.md, ASSET_INDEX.md, SKILLS.md, skills-index/, testakten/README.md
auf v51.4.0 aktualisiert
Validatoren (alle gruen):
- validate-plugin-structure.mjs OK
- validate-yaml-frontmatter.py 0 Fehler
- validate-testakten-gesamt-pdf.py OK (127 Testakten)
Bereitet v51.0.0 Welle 1 (Testakten fuer Plugins ohne eigene Akte) vor:
- scripts/inject-plugin-testakten-section.py (neu): Generiert
idempotent eine 'Demonstrations-Akten'-Tabelle in jedem Plugin-README,
das eine zugehoerige Testakte besitzt. Tabelle listet Gesamt-PDF (lesen)
und Akten-ZIP (Release-Download). Relative Pfade zeigen korrekt nach
'../testakten/<slug>/...'.
- 31 bestehende Plugin-READMEs bekommen diese Section eingespielt, damit
die seit v50.10.0 fertigen ZIP- und PDF-Links auch im jeweiligen
Plugin-README sichtbar sind (Aufgabe aus v50.10.0 nachgezogen).
- testakten/README.md: Vier neue Akten (arbeitsrecht-kuendigungsdrama-
koerber-werk, arzthaftung-geburtsschaden-meinhardt-evangelisches-
klinikum, erbstreit-krypto-multisig-edelmann-stuttgart,
scheidung-trennungsdrama-wagenknecht-luetzelberg) sind alphabetisch
in Tabelle und Direkt-Download-Liste eingetragen. Stand-Hinweis auf
v51.0.0 und 67 Testakten gesetzt.
- ASSET_INDEX.md: Vier neue Akten-Eintraege, Erwartungszahlen auf 179
Assets / 67 Fallakten-ZIPs aktualisiert.
User-Wunsch: In jedem Testakten-README soll oben sowohl das Gesamt-PDF als auch
die Akten-ZIP mit allen Einzeldateien direkt verlinkt sein.
- scripts/inject-gesamt-pdf-section.py: Autogen-Sektion erweitert. Zwei Zeilen:
Gesamt-PDF (lokal eingecheckt) und Akten-ZIP (stabile URL auf
releases/latest/download/testakte-<slug>.zip). Idempotent.
- Alle 63 Testakten-READMEs neu generiert.
- CI-Workflow baut die testakte-<slug>.zip schon seit erstem Release; die URLs
werden ab v50.10.0 nun auch in den READMEs angezeigt.
- Marketplace 50.9.1 -> 50.10.0; Generator laeuft. 108 Plugins / 2655 Skills.
User-Meldung: SKILLS.md (2 MB, 2617 Tabellenzeilen) hat in GitHubs
Markdown-Renderer endlos neu geladen / die Seite ist abgestuerzt.
GitHubs Renderer-Limit liegt bei ca. 512 KB.
- SKILLS.md jetzt nur noch ca. 27 KB (Hinweisblock, Download-Buttons,
Plugin-Schnellzugriffstabelle).
- Pro Plugin eigene Detailseite unter skills-index/<plugin>.md mit
vollstaendiger Skill-Tabelle. Groesste Datei 161 KB.
- Mega-ZIP-Download prominent ganz oben: alle-plugins-megazip.zip
(~11 MB) und alles-komplettpaket.zip (~80 MB) als bestehende
Release-Assets verlinkt.
- skills-index/README.md als Sitemap der Detailseiten.
- Generator scripts/generate-skills-md.py schreibt alles in einem
Lauf, loescht veraltete Detailseiten idempotent.
- Marketplace 50.3.0 -> 50.4.0
Validatoren gruen.
* feat(v50.3.0): SKILLS.md vollautomatisch generieren mit Download-Links
User-Wunsch: Skill-Uebersicht oben prominent erklaeren, dass die Skills
nichts weiter als grosse Markdown-Prompts sind und in jedem Chatbot per
Copy-Paste funktionieren. Pro Skill Direkt-Download (Markdown + Raw),
pro Plugin ein ZIP-Download-Button. Garantie: jeder neue Skill landet
automatisch in der Uebersicht.
- Neues Skript scripts/generate-skills-md.py: liest Plugin-Reihenfolge
aus marketplace.json, scannt alle <plugin>/skills/<skill>/SKILL.md,
liest description aus dem YAML-Frontmatter, schreibt SKILLS.md neu.
- SKILLS.md hat jetzt oben einen Hinweisblock 'Worum es hier geht:
alles nur grosse Prompts' mit Schritt-fuer-Schritt-Anleitung fuer
ChatGPT/Mistral/Gemini/DeepSeek/Le Chat-Nutzer.
- Pro Plugin: Plugin-README-Link + ZIP-Download-Link auf das
Release-Asset (https://github.com/.../releases/latest/download/
<plugin>.zip, vorhandenes Artefakt aus release-plugin-zips.yml).
- Pro Skill: Spalte 'Download' mit [Markdown]-Link (github.com/blob/main)
und [Raw .md]-Link (raw.githubusercontent.com), beide direkt klickbar.
- Stand: 2617 Skills in 107 Plugins, v50.2.0.
Validatoren gruen.
* chore: marketplace 50.2.0 -> 50.3.0, SKILLS.md regeneriert, CHANGELOG
User-Wunsch: jede Testakte soll im ZIP-Release zusaetzlich ein
'doppelt gemoppeltes' Gesamt-PDF mit allen Aktenstuecken haben.
- Neues Skript scripts/build-testakte-gesamt-pdf.py buendelt
MD/TXT/EML/CSV/XLSX/DOCX/PDF einer Testakte zu einem PDF mit
Cover, Inhaltsverzeichnis, Seitenzahlen und Trennblaettern.
Sehr lange Tabellenzellen werden in Absaetze umgewandelt, damit
ReportLab nicht ueberlauft (Wandeldarlehen-Bilingual).
- Neues Skript scripts/inject-gesamt-pdf-section.py ergaenzt jede
Testakte-README idempotent um eine Gesamt-PDF-Sektion direkt
unter dem H1.
- 63 Testakten erhalten gesamt-pdf/<name>_gesamt.pdf
- Stichprobensichtung des Repos: keine TODO/FIXME-Marker, keine
Lorem-Ipsum-Reste, keine leeren Quelldateien.
- Versionen: Marketplace 50.1.1 -> 50.2.0
- Plugin-Manifeste unveraendert.
Validatoren gruen.
User-Feedback: Testakten waren in Plugin-READMEs zu tief unten erwaehnt
und es fehlten Downloadlinks. Die Rosengarten-Testakte sollte um alle
gaengigen Datenformate erweitert werden.
Plugin-READMEs (50 betroffene Plugins):
- Neues Skript scripts/inject-testakten-section.py legt idempotenten
Auto-Block 'Testakte(n)' direkt unter Direkt-Download an. HTML-
Kommentar-Marker grenzen den Block ab; alte manuelle Sektionen
werden entfernt. Mapping Plugin->Testakten hardcoded mit allen
zuvor unmatched Akten zugeordnet.
Rosengarten-Testakte (testakten/nachbarschaftsstreit-horrorfall-rosengarten/):
- emails/: 6 EML-Dateien (Thuja, Carport, Bauamt-Anfrage/Antwort)
- whatsapp/: Standard-WhatsApp-Chat-Export
- xlsx/: Kosten/Schaeden + Riss-Log (2 Sheets)
- docx/: Anwaltsschreiben Kessler, Aufforderung Albers, Vergleich
- pdfs/: Baumgutachten, Bauamt-Bescheid, Vermessungsskizze
- scan-whatsapp/: visuell gerenderter Handy-Screenshot-Scan
- gesamt-pdf/: alles in einem Gesamtdokument mit Cover und
Inhaltsverzeichnis und Trennblaettern fuer die externen PDFs
- neue MD-Stuecke 13_zeugenliste_und_anwohner.md und
14_telefonprotokolle_kanzlei.md mit Anwohnern, Handwerkern,
Behoerdenkontakten und sechs Telefonprotokollen
- README komplett neu strukturiert mit Gesamt-PDF prominent oben
Versionen:
- nachbarschaftsstreit-pruefer 50.0.0 -> 50.1.0
- Marketplace top-level 50.0.0 -> 50.1.0
- Die 50 anderen Plugin-READMEs ohne Versions-Bump (nur READMEs)
Validatoren gruen.
Sanity-Check ergab Skill-Drift in 96 von 107 Plugin-READMEs. In den
meisten Faellen fehlte nur der allgemein-Triage-Skill; bei
steuerrecht-anwalt-und-berater, selbstvertreter-amtsgericht, arbeitsrecht
und 18 fachanwalt-Plugins fehlten ganze Bloecke.
Loesung:
- Neues Skript scripts/generate-skills-overview.py baut in jeder
Plugin-README einen automatisch gepflegten Abschnitt 'Alle Skills im
Ueberblick' ans Ende. Der Block ist mit HTML-Kommentar-Markern
eingegrenzt und idempotent regenerierbar.
- 107 Plugin-READMEs einmalig generiert. Jede README listet jetzt alle
Skills des Plugins mit Description aus der jeweiligen SKILL.md.
- Cross-Check: 0 Plugins mit Skill-Drift in der README (vorher: 96).
Plugin-Versionen bleiben unveraendert. Es haben sich nur READMEs
geaendert. Der Repo-Tag v49.2.0 markiert den Sweep auf Repo-Ebene.
Validatoren gruen.
Drei kritische Befunde aus dem Post-Merge-Stresstest von PR #68:
1. plugin.json description war 466 Zeichen — Marketplace-Limit ist 300.
Plugin haette beim naechsten Marketplace-Sync abgelehnt werden koennen.
Gekuerzt auf 293 Zeichen ohne inhaltlichen Verlust (Aufzaehlung der
Detail-Skills entfernt, da im Plugin-README dokumentiert).
Marketplace.json-Eintrag gespiegelt.
2. 'Maßstab' (ß) im Frontmatter von stb-ueberschuldungspruefung-19-inso.
Frontmatter-Konvent im Plugin ist ASCII-only (alle anw-Skills folgen
dem, neue stb-Skills sollten gleich gestylt sein). Body bleibt mit
Umlauten/ß unveraendert. Geaendert zu 'Massstab'.
3. Validator hatte Luecke: Skill-Description-Laenge wurde gegen 1024
geprueft, aber Plugin-Description-Laenge gegen das Marketplace-Limit
300 nicht. Check ergaenzt in scripts/validate-plugin-structure.mjs;
alle 97 Plugin-Descriptions sind aktuell <= 300, Validator weiterhin
OK.
Validator: OK.
- patentrecherche: 13 Skills (Kaltstart, Klassifikation, agentische Datenbankrecherche, Stand der Technik, Neuheit, erfinderische Taetigkeit, FTO, Patentfamilien, Rechtsstand, Ueberwachung, Pruefungsbescheid, Recherchebericht, Rueckfragen), 3 References (CPC/IPC, Patentdatenbanken, BPatG/EPA-Leitentscheidungen), Marketplace- und README-Eintrag.
- Methodenlehre: Anspruchsgrundlagen-Reihenfolge bereinigt. Sammelbegriffe 'vertragsaehnlich' und 'quasivertraglich' bewusst entfernt (uneinheitlich besetzt). Gefaehrdungshaftung als eigenstaendige Haftungsspur ergaenzt, mit Paragraphen-Katalog. Geaendert in references/methodik-deutsches-recht.md, methodenlehre-deutsches-recht (Spiegel und SKILL.md) sowie jurastudium/skills/fall-zusammenfassung.
- Cross-Plugin-Hinweise: sozialrecht-kanzlei und fortbestehensprognose nennen jetzt im Marketplace-description die empfohlenen Begleitplugins (kanzlei-cowork bzw. liquiditaetsplanung und insolvenzrecht). Klargestellt dass die Plugins eigenstaendig funktionieren.
- Referenz-Sync: scripts/sync-references.py spiegelt die Repo-Root-Referenzen (methodik-deutsches-recht.md und zitierweise.md) in die Plugin-Spiegel methodenlehre-deutsches-recht/references/ und zitierweise-deutsches-recht/references/. README-Hinweis fuer Mitwirkende ergaenzt.
Uebernahme nuetzlicher Validator-Erweiterungen aus dem parallelen Codex-
Vorschlag, ohne die flache ZIP-Struktur aufzugeben (STEP1-11 hatten
empirisch bewiesen, dass Cowork mit flachem '.claude-plugin/plugin.json'
an der ZIP-Wurzel laeuft).
- description-Feld in plugin.json darf max. 300 Zeichen haben
- Zahl-Komma-Zahl-Sequenz wird auch beim Release-ZIP-Build erneut
geprueft (doppelte Verteidigung neben validate-plugin-structure.mjs)
Der Cowork-Plugin-Validator lehnte ZIPs ab, sobald eine description-Zeile
eine Sequenz wie 'BGHZ 217, 129' oder '§§ 5, 6 DDG' enthielt. Diese
Sequenzen sind nun durch 'Rn', 'und' oder Schraegstrich-Notation ersetzt.
Aenderungen
- 16 SKILL.md Frontmatter-Descriptions umgeschrieben
- 1 plugin.json Description (produktrecht) umgeschrieben
- Validator scripts/validate-plugin-structure.mjs lehnt Zahl-Komma-Zahl
in description-Feldern jetzt explizit ab
- Hilfsskript scripts/fix-comma-numbers-in-descriptions.py fuer kuenftige
Massenkorrekturen hinzugefuegt
Das Cowork-/Marketplace-Upload geht knapp unter 1 MB in die Knie und gibt
nur eine generische 'Plugin validation failed' zurueck. Ursache ist nicht
die Frontmatter oder Manifest-Struktur, sondern die Dateigroesse.
Behoben:
- liquiditaetsplanung: 5 BGH-Volltext-PDFs (zusammen ~1 MB) entfernt,
ZIP faellt von 1017 KB auf ~61 KB.
- insolvenzrecht: dieselben PDFs entfernt, ZIP von 1003 KB auf ~47 KB.
- references/rechtsprechung/INDEX.md jeweils ueberarbeitet: Volltexte
werden jetzt ueber die BGH-Rechtsprechungsdatenbank und openJur
verlinkt; juengere Entscheidung steht oben, Pinpoint-Zitierung
bleibt verbindlich.
- Strukturvalidator: PDF-Existenzpruefung entfernt, statt dessen wird
das Vorliegen der INDEX.md gefordert.
- Release-Validator: harter 950-KB-Schwellwert pro ZIP, damit der
Upload-Limit-Fehler bereits im CI auffaellt.
- plugin.json: Pre-Release-Suffix -de.2 entfernt (12 Plugins → 1.0.0)
- SKILL.md: restliche Nicht-Schema-Felder entfernt (description einzeilig, keine Multiline)
- Validator: Allowlist strikt name+description, Semver-strict-Check, XML-Bracket-Check, description-Längen-Check (1024)
- ZIP-Build schließt jetzt __pycache__/*.pyc aus
Baut auf Commit 00171d9 (SKILL.md-Reduktion) auf und schließt die letzten Lücken,
die zu 'Plugin validation failed' im Claude Code Desktop führen können.
Add release ZIP validation
- Add a Python release guard for plugin ZIP assets.
- Validate flat ZIP layout, manifest names, cache-file exclusion, and the standalone Liquiditätsplanung generator.
- Run the guard from the release workflow before publishing assets.
Validated with structure checks, Claude plugin marketplace validation, Python compile, diff check, and local ZIP simulation for all 17 plugin ZIPs.
Make Liquiditätsplanung plugin standalone
- Add the Excel generator directly to the standalone liquiditaetsplanung plugin.
- Bump the plugin manifest to 0.2.1.
- Extend structural validation to require the standalone generator.
Validated with plugin structure checks, Claude plugin validation, standalone XLSX generation, and local ZIP inspection.
- liquiditaetsplanung: drei autarke Skills (3-Wochen, 3/6/12-Monate, insolvenzrechtlich)
jeweils mit Format-Wahl (Excel/HTML-Padlet/Markdown), Banking-Wahl (manuell/Datei-Import/Connector),
Memo nur auf Anfrage, wochenaktuell zum Freitag, Verhaeltnis zu offenen Forderungen
- Excel-Vorlage Liquiditaetsplan-Wochenbasis.xlsx mit BGH-Block ab Zeile 42
(Aktiva I/II, Passiva I/II, Luecke abs./%, Ampel, Offene Forderungen, BGH-Hinweise)
- Single-file HTML-Padlet liquiditaets-padlet.html, live rechnend, localStorage, JSON Export/Import
- Markdown-Artefakt-Vorlage
- BGH-PDFs (5 Leitentscheidungen) als references/rechtsprechung/ in liquiditaetsplanung und insolvenzrecht
inklusive INDEX.md mit Pinpoint-Liste
- plugin.json: Version 0.2.0, Dependencies entfernt (Power-Plugin standalone)
- marketplace.json: Beschreibung aktualisiert
- README.md und CLAUDE.md: standalone-Charakter dokumentiert
- Validator: Pruefung auf autarke Skills, Assets und BGH-PDFs statt Dependencies
- steuerberater-werkzeuge und insolvenzrecht: Powerplugin-Hinweis am Anfang der drei
Schwester-Skills, damit Benutzer das Power-Plugin als Vollversion erkennen
Belege: BGH 19.12.2017 II ZR 88/16 (BGHZ 217, 129 Passiva II), BGH 28.06.2022 II ZR 112/21
(Bugwellenrspr.), BGH 28.04.2022 IX ZR 48/21 (10-Prozent-Schwelle), BGH 23.01.2025 IX ZR 229/22
(titulierte Forderungen), BGH 11.03.2025 II ZR 139/23 (objektive Umstaende), BGH 24.05.2005
IX ZR 123/04 (BGHZ 163, 134 Grundsatzentscheidung).