Klagewerkstatt-Plugin mit Plugin-Generator und Online-Zustaendigkeitspruefung

- Neues Plugin forderungsmanagement-klagewerkstatt mit zwei Skills:
  * klagevorlage-aus-eigenen-mustern (Lernlauf): destilliert aus eigenen
    Mustern, Urteilen, Kommentaren, Aufsaetzen und Formatvorlagen eine
    hauseigene Standardklage-Vorlage; sammelt Sachverhalt; prueft online
    Zustaendigkeit; liefert Klage; packt eigenes Mini-Plugin als ZIP.
  * klage-aus-eigenem-skill (Laufzeit): nimmt nur Sachverhalt und
    Beklagtenadresse, prueft online erneut, befuellt Hausvorlage.
- Pflicht-Online-Adresscheck ueber justizadressen.nrw.de und
  justiz.de Gerichtsverzeichnis; SS 23, 71 GVG sachlich;
  SS 12, 13, 29, 29c, 38 ZPO oertlich; Bruessel Ia VO grenzueberschreitend.
- Plugin-Generator-Script scripts/plugin_aus_hausregeln.py erzeugt
  klagewerkstatt-<slug>.zip mit fest verdrahteten Hausregeln.
- Single-file HTML-Padlet mit Live-Vorschau, localStorage, Export/Import.
- Standardvorlage, Hausregeln-Beispiel, Belegmuster, Anlagenliste,
  Zustaendigkeits-Quellen, BGH-Leitentscheidungs-INDEX.
- Marketplace-Eintrag; Validator OK.
This commit is contained in:
Klotzkette
2026-05-19 17:17:12 +00:00
parent 80b01f9b8f
commit b8fcb2e76b
12 changed files with 1428 additions and 0 deletions
+8
View File
@@ -126,6 +126,14 @@
"name": "Klotzkette"
}
},
{
"name": "forderungsmanagement-klagewerkstatt",
"source": "./forderungsmanagement-klagewerkstatt",
"description": "Generalisierter Klage-Assistent für Forderungsmanagement-Klagen mit eigenem Plugin-Generator. Lernlauf-Skill destilliert aus eigenen Klagemustern, Urteilen, Kommentaren, Aufsätzen und Formatvorlagen eine hauseigene Standardklage-Vorlage, sammelt den Sachverhalt und prüft online die sachliche und örtliche Zuständigkeit (justizadressen.nrw.de, justiz.de Gerichtssuche; §§ 12, 13, 29, 29c ZPO; §§ 23, 71 GVG). Laufzeit-Skill nimmt nur Sachverhalt und Beklagtenadresse entgegen und erzeugt die nächste Klage direkt in der hauseigenen Vorlage. Zusätzlich packt der Skill ein eigenes Mini-Plugin (klagewerkstatt-<kanzlei>.zip), das in Claude Code direkt installierbar ist. Eigenständig nutzbar; ergänzt sich mit prozessrecht und liquiditaetsplanung.",
"author": {
"name": "Klotzkette"
}
},
{
"name": "betreuungsrecht",
"source": "./betreuungsrecht",
@@ -0,0 +1,26 @@
{
"name": "forderungsmanagement-klagewerkstatt",
"version": "0.1.0",
"description": "Generalisierter Klage-Assistent für Forderungsmanagement-Klagen mit eigenem Plugin-Generator. Aus eigenen Klagemustern, Urteilen, Kommentaren, Aufsätzen und Formatvorlagen destilliert der Skill eine hauseigene Standardklage-Vorlage, sammelt den Sachverhalt, prüft online die örtliche und sachliche Zuständigkeit (justizadressen.nrw.de, justiz.de Gerichtssuche; §§ 12, 13, 29, 29c ZPO; §§ 23, 71 GVG) und liefert die fertige Klage als DOCX und Markdown. Zusätzlich erzeugt der Skill ein eigenes, sofort in Claude Code installierbares Mini-Plugin (ZIP), mit dem die nächste Klage ohne Extraktionsschritt direkt in der hauseigenen Vorlage entsteht. Eigenständig nutzbar; ergänzt sich mit prozessrecht, vertragsrecht und liquiditaetsplanung, hängt aber nicht davon ab.",
"license": "Apache-2.0 OR MIT",
"author": {
"name": "Klotzkette"
},
"homepage": "https://github.com/Klotzkette/claude-fuer-deutsches-recht",
"keywords": [
"forderungsmanagement",
"klage",
"klageschrift",
"inkasso",
"verzug",
"zpo",
"mahnverfahren",
"klagewerkstatt",
"skill-generator",
"plugin-generator",
"bea",
"egvp",
"zustaendigkeit",
"justizadressen-nrw"
]
}
@@ -0,0 +1,35 @@
# Hauspflichten — forderungsmanagement-klagewerkstatt
Verbindliche Regeln für jeden Lauf in diesem Plugin. Gilt für beide Skills.
## Pflichtschritte
1. **Online-Zuständigkeitsprüfung** ist Pflicht. Vor jeder Auslieferung der Klageschrift sind beide Quellen abzurufen und im Output mit Abrufdatum auszuweisen:
- <https://www.justizadressen.nrw.de/de/justiz/suche>
- <https://www.justiz.de/onlinedienste/gerichtsverzeichnis_und_orga/index.php>
2. **Sachliche Zuständigkeit** rechnerisch (§§ 23 Nr. 1, 71 GVG; Sondertatbestände beachten).
3. **Örtliche Zuständigkeit** rechtlich (§§ 12, 13, 17, 24, 29, 29c, 38 ZPO; grenzüberschreitend Brüssel Ia VO 1215/2012).
4. **BeA-SAFE-ID** des Empfangsgerichts: wenn nicht aus den Quellen abrufbar, mit Hinweis „über beA-Adressbuch zu ergänzen" markieren.
## Stil
- **Zitierweise**: Pinpoint mit Randnummer; jüngere BGH-Entscheidungen zuerst; deutsche Kommentartradition (Bearbeiterstil mit Auflage, Jahr, Rn.).
- **Englische etablierte Begriffe** bleiben erhalten (NDA, SPA, MAC, Stakeholder, Compliance, BeA).
- **Auslöser** statt „Hooks"; **Agentenrezepte** statt „Cookbooks".
- **Memo** im Gutachtenstil nur auf ausdrückliche Anfrage.
## Format-/Banking-Wahl
- Am Anfang **einmal** fragen, welches Ergebnisformat gewünscht ist (DOCX + Markdown, zusätzlich Padlet?).
- Hausvorlage (DOCX) NICHT verändern, wenn der Nutzer einen Briefkopf mitgeliefert hat. Platzhalter respektieren.
## Plugin-Generator
- Output-Slug aus Kanzleinamen ableiten (lowercased, Umlaute transliteriert, Bindestriche).
- Erzeugtes Plugin enthält die Hausregeln fest verdrahtet und führt weiterhin die Online-Zuständigkeitsprüfung als Pflicht aus.
## Übergabe
- Bei drohender Zahlungsunfähigkeit der Beklagten an `liquiditaetsplanung`.
- Bei einstweiligem Rechtsschutz / Mahnverfahren an `prozessrecht`.
- Wiederverwendung beim nächsten Mal über den Laufzeit-Skill `klage-aus-eigenem-skill`.
@@ -0,0 +1,94 @@
# Forderungsmanagement — Klagewerkstatt
**Generalisierter Klage-Assistent für Inkasso- und Forderungsmanagement-Klagen mit eigenem Plugin-Generator.** Aus eigenen Mustern eine hauseigene Standardvorlage destillieren, online die Zuständigkeit prüfen, die Klage erzeugen und als sofort installierbares Mini-Plugin verpacken.
---
## ⬇️ Direkt-Download (einzelnes ZIP)
| Plugin | Direkt-Download |
| --- | --- |
| **forderungsmanagement-klagewerkstatt** (dieses Plugin) | [forderungsmanagement-klagewerkstatt.zip](https://github.com/Klotzkette/claude-fuer-deutsches-recht/releases/latest/download/forderungsmanagement-klagewerkstatt.zip) |
| prozessrecht (sinnvolle Ergänzung) | [prozessrecht.zip](https://github.com/Klotzkette/claude-fuer-deutsches-recht/releases/latest/download/prozessrecht.zip) |
| liquiditaetsplanung (Folgeprüfung) | [liquiditaetsplanung.zip](https://github.com/Klotzkette/claude-fuer-deutsches-recht/releases/latest/download/liquiditaetsplanung.zip) |
Die URLs sind **stabil** und zeigen immer auf die neueste Version. Alle weiteren Plugins (Vertragsrecht, Arbeitsrecht, Datenschutz, …) liegen unter [Releases · latest](https://github.com/Klotzkette/claude-fuer-deutsches-recht/releases/latest).
### Installation in Claude Code
1. ZIP herunterladen (Link oben).
2. Claude Code → **Customize Plugins****Install from .zip** → Datei wählen.
3. Fertig. Skills sind sofort verfügbar.
---
## Was ist drin
Zwei Skills, gedacht als Lernlauf-+-Laufzeit-Paar:
| Skill | Zweck |
| --- | --- |
| `klagevorlage-aus-eigenen-mustern` | **Lernlauf**: frisst eigene Klagemuster, Urteile, Kommentare, Aufsätze, Formatvorlagen; destilliert die hauseigene Standardklage-Vorlage; sammelt den Sachverhalt; **prüft online die Zuständigkeit** (justizadressen.nrw.de, justiz.de); liefert die Klage und erzeugt zusätzlich ein eigenes installierbares **Mini-Plugin als ZIP**. |
| `klage-aus-eigenem-skill` | **Laufzeit**: setzt voraus, dass das im Lernlauf erzeugte Mini-Plugin installiert ist. Nimmt nur noch Sachverhalt und Beklagtenadresse, prüft erneut online die Zuständigkeit, befüllt die Hausvorlage. Keine erneute Extraktion. |
Beide Skills führen **bei jedem Lauf** die Online-Zuständigkeitsprüfung über [justizadressen.nrw.de](https://www.justizadressen.nrw.de/de/justiz/suche) und das [bundesweite Justizportal](https://www.justiz.de/onlinedienste/gerichtsverzeichnis_und_orga/index.php) durch.
## Plugin-Generator
Aus den extrahierten Hausregeln und der Standardvorlage packt der Skill ein eigenes, in Claude Code direkt installierbares ZIP:
```bash
python scripts/plugin_aus_hausregeln.py \
--kanzlei "Kanzlei Mustermann" \
--vorlage assets/vorlagen-leer/standardklage.md \
--regeln /pfad/hausregeln.json \
--ziel /pfad/klagewerkstatt-mustermann.zip
```
Layout des erzeugten Plugins:
```
klagewerkstatt-<slug>/
.claude-plugin/plugin.json
skills/klage-erstellen/SKILL.md
assets/vorlage/standardklage.md
references/hausregeln.json
references/belegmuster.md
references/anlagenliste.md
references/zustaendigkeit-quellen.md
README.md
```
Der erzeugte Skill enthält die Hausregeln fest verdrahtet und führt weiterhin die **Online-Zuständigkeitsprüfung** als Pflichtschritt aus.
## Ergebnisformate
- **DOCX** über `office/docx` (`Klage-<Beklagte>-<YYYYMMDD>.docx`) und **Markdown-Spiegel**.
- **Anlage Zuständigkeitsprüfung** mit Online-Quelle und Abrufdatum.
- **HTML-Padlet** (`assets/padlet/klage-padlet.html`) — single-file, autark, Live-Vorschau, speichert in `localStorage`, exportiert/importiert JSON.
- **Memo** im Gutachtenstil — nur auf ausdrückliche Anfrage.
## Online-Zuständigkeit (Pflicht in jedem Lauf)
1. **Sachlich** rechnerisch: ≤ 5.000 EUR → AG (§ 23 Nr. 1 GVG); > 5.000 EUR → LG (§ 71 GVG); Sondertatbestände beachten.
2. **Örtlich** rechtlich: §§ 12, 13 ZPO Allgemeiner Gerichtsstand, § 29 ZPO Erfüllungsort, § 29c ZPO Verbraucherverträge, § 38 ZPO Gerichtsstandsvereinbarung; grenzüberschreitend Brüssel Ia VO 1215/2012.
3. **Online-Adressrecherche**: `justizadressen.nrw.de` (PLZ/Ort) und bundesweit `justiz.de`; Quelle und Abrufdatum dokumentieren.
4. BeA-SAFE-ID: aus dem beA-Adressbuch zu ergänzen.
## Leitentscheidungen (Auswahl, siehe `references/rechtsprechung/INDEX.md`)
- BGH, Urt. v. 25.06.2020 VII ZR 308/19, NJW 2020, 2884 (§ 288 Abs. 5 BGB)
- BGH, Urt. v. 22.01.2008 VIII ZR 6/06, NJW 2008, 1888 (RA-Kosten als Verzugsschaden)
- BGH, Urt. v. 04.10.2007 III ZR 180/06, NJW 2008, 50 (Mahnung)
- BGH, Beschl. v. 23.06.2022 V ZB 12/22 (§ 130a ZPO)
- BGH, Beschl. v. 31.01.2023 XI ZB 23/22 (beA-Sorgfalt)
- BGH, Urt. v. 22.04.2009 VIII ZR 156/07, NJW 2009, 2197 (§ 29 ZPO)
- EuGH, Urt. v. 14.09.2023 C-393/22 (Brüssel Ia VO)
## Lizenz
Apache-2.0 OR MIT — Auswahl beim Empfänger.
## Quellen-Disclaimer
Alle Aussagen beruhen auf der zitierten BGH-Rechtsprechung und genannter Kommentarliteratur. Die Skills ersetzen keine eigene anwaltliche Prüfung im Einzelfall.
@@ -0,0 +1,465 @@
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Klagewerkstatt — Live-Padlet</title>
<style>
:root {
--bg: #F7F6F2;
--surface: #F9F8F5;
--border: #D4D1CA;
--text: #28251D;
--muted: #7A7974;
--primary: #01696F;
--primary-hover: #0C4E54;
--warning: #964219;
--success: #437A22;
}
* { box-sizing: border-box; }
body {
margin: 0;
font: 16px/1.55 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, sans-serif;
background: var(--bg);
color: var(--text);
}
header {
padding: 16px 24px;
background: var(--surface);
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
gap: 16px;
flex-wrap: wrap;
}
header h1 { font-size: 18px; margin: 0; }
header .meta { color: var(--muted); font-size: 13px; margin-left: auto; }
.layout {
display: grid;
grid-template-columns: minmax(340px, 1fr) minmax(420px, 1.4fr);
gap: 0;
min-height: calc(100vh - 60px);
}
.form, .vorschau {
padding: 20px 24px;
overflow-y: auto;
max-height: calc(100vh - 60px);
}
.form { background: var(--surface); border-right: 1px solid var(--border); }
.vorschau { background: var(--bg); }
.gruppe {
border: 1px solid var(--border);
border-radius: 6px;
padding: 12px 14px 14px;
margin-bottom: 14px;
background: #FBFBF9;
}
.gruppe > h2 {
margin: 0 0 10px;
font-size: 13px;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--primary);
}
label { display: block; font-size: 12px; color: var(--muted); margin: 8px 0 4px; }
input, textarea, select {
width: 100%;
padding: 6px 8px;
font: inherit;
font-size: 14px;
border: 1px solid var(--border);
border-radius: 4px;
background: white;
color: var(--text);
}
textarea { min-height: 70px; resize: vertical; }
.row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.row3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; }
.aktionen {
position: sticky;
bottom: 0;
background: var(--surface);
padding: 10px 0;
display: flex;
gap: 8px;
flex-wrap: wrap;
border-top: 1px solid var(--border);
margin-top: 12px;
}
button {
font: inherit;
padding: 7px 12px;
border-radius: 4px;
border: 1px solid var(--border);
background: white;
cursor: pointer;
}
button.primary { background: var(--primary); color: white; border-color: var(--primary); }
button.primary:hover { background: var(--primary-hover); border-color: var(--primary-hover); }
button.warn { color: var(--warning); }
.vorschau-doc {
background: white;
padding: 28px 36px;
border: 1px solid var(--border);
border-radius: 4px;
font-family: Georgia, "Times New Roman", serif;
line-height: 1.5;
font-size: 14.5px;
min-height: 80vh;
}
.vorschau-doc h1 { font-size: 22px; margin: 0 0 12px; text-align: center; }
.vorschau-doc h2 { font-size: 16px; margin: 18px 0 6px; }
.vorschau-doc .briefkopf, .vorschau-doc .ortdatum { color: var(--muted); white-space: pre-line; }
.vorschau-doc .platzhalter { color: #BB653B; font-style: italic; }
.vorschau-doc table { border-collapse: collapse; width: 100%; margin: 6px 0 10px; font-family: inherit; font-size: 13px; }
.vorschau-doc th, .vorschau-doc td { border: 1px solid var(--border); padding: 4px 6px; text-align: left; vertical-align: top; }
.hinweis {
background: #F3EDE3;
border-left: 4px solid var(--warning);
padding: 8px 12px;
margin: 10px 0 16px;
font-size: 13px;
color: var(--text);
}
.zust-ok { color: var(--success); }
.zust-warn { color: var(--warning); }
.online-link a { color: var(--primary); }
@media (max-width: 960px) {
.layout { grid-template-columns: 1fr; }
.form, .vorschau { max-height: none; }
}
</style>
</head>
<body>
<header>
<h1>Klagewerkstatt — Live-Padlet</h1>
<span class="meta">Single-File, autark, speichert lokal im Browser (<code>localStorage</code>).
Pflichtschritt vor Versand: Zuständigkeit online prüfen.</span>
</header>
<div class="layout">
<section class="form" id="form">
<!-- generiert per JS -->
</section>
<section class="vorschau">
<div class="hinweis">
<strong>Hinweis:</strong> Vorschau dient der Pflege, nicht der Einreichung.
Vor Versand zwingend online prüfen:
<span class="online-link">
<a href="https://www.justizadressen.nrw.de/de/justiz/suche" target="_blank" rel="noopener">justizadressen.nrw.de</a> ·
<a href="https://www.justiz.de/onlinedienste/gerichtsverzeichnis_und_orga/index.php" target="_blank" rel="noopener">Justizportal</a>
</span>.
</div>
<div id="zust" class="hinweis"></div>
<article id="doc" class="vorschau-doc"></article>
</section>
</div>
<script>
"use strict";
const SCHEMA = [
{ gruppe: "Kanzlei", felder: [
{ id: "kanzlei_briefkopf", label: "Briefkopf (mehrzeilig)", type: "textarea" },
{ id: "ort_datum", label: "Ort, Datum", type: "text", placeholder: "Berlin, 19.05.2026" },
{ id: "unterschrift", label: "Unterschriftsblock", type: "textarea" }
]},
{ gruppe: "Rubrum", felder: [
{ id: "klagepartei", label: "Klagepartei (Name, Anschrift, ggf. Vertretung)", type: "textarea" },
{ id: "bevollmaecht", label: "Prozessbevollmächtigte", type: "textarea" },
{ id: "beklagte", label: "Beklagte(r) (Name, Anschrift, ggf. Vertretung)", type: "textarea" },
{ id: "beklagte_plz", label: "PLZ Beklagte (für Zuständigkeit)", type: "text" },
{ id: "beklagte_ort", label: "Ort Beklagte", type: "text" },
{ id: "beklagte_b2c", label: "Beklagte ist Verbraucher (§ 29c ZPO)", type: "select", optionen: ["nein", "ja"] }
]},
{ gruppe: "Streit und Anträge", felder: [
{ id: "anspruch_grund", label: "Forderungsgrund (Kauf, Werk, Dienst, Darlehen, Miete, …)", type: "text" },
{ id: "streitwert", label: "Streitwert (EUR)", type: "number" },
{ id: "hauptforderung", label: "Hauptforderung (EUR)", type: "number" },
{ id: "zinsen", label: "Zinsen (z. B. 9 Prozentpunkte über Basiszinssatz, § 288 Abs. 2 BGB)", type: "text" },
{ id: "zinslauf_ab", label: "Zinslauf seit", type: "text", placeholder: "TT.MM.JJJJ" },
{ id: "kosten", label: "Vorgerichtliche RA-Kosten (EUR)", type: "number" }
]},
{ gruppe: "Sachverhalt und Würdigung", felder: [
{ id: "sachverhalt", label: "Sachverhalt", type: "textarea" },
{ id: "rechtliche_wuerdigung",label: "Rechtliche Würdigung", type: "textarea" },
{ id: "beweismittel", label: "Beweismittel (Urkunden, Zeugen, …)", type: "textarea" }
]},
{ gruppe: "Zuständigkeit (online geprüft)", felder: [
{ id: "gericht_bez", label: "Gericht (z. B. Amtsgericht Köln)", type: "text" },
{ id: "gericht_adr", label: "Postanschrift Gericht", type: "textarea" },
{ id: "gericht_safe", label: "BeA-SAFE-ID (sofern bekannt)", type: "text" },
{ id: "zust_sachlich", label: "Sachliche Zuständigkeit (Norm)", type: "text", placeholder: "§ 71 GVG" },
{ id: "zust_oertlich", label: "Örtliche Zuständigkeit (Norm)", type: "text", placeholder: "§§ 12, 13 ZPO" },
{ id: "zust_quelle", label: "Online-Quelle", type: "text", placeholder: "justizadressen.nrw.de" },
{ id: "zust_abrufdatum", label: "Abrufdatum", type: "text", placeholder: "TT.MM.JJJJ" }
]},
{ gruppe: "Anlagen", felder: [
{ id: "anlagen", label: "Anlagenliste (eine pro Zeile, z. B. K1 Rechnung)", type: "textarea" }
]}
];
const KEY = "klagewerkstatt-padlet-v1";
const STATE = Object.fromEntries(
SCHEMA.flatMap(g => g.felder).map(f => [f.id, f.type === "select" ? f.optionen[0] : ""])
);
function laden() {
try {
const raw = localStorage.getItem(KEY);
if (!raw) return;
Object.assign(STATE, JSON.parse(raw));
} catch (_) { /* ignore */ }
}
function speichern() {
try { localStorage.setItem(KEY, JSON.stringify(STATE)); } catch (_) { /* ignore */ }
}
function feld(f) {
const wrap = document.createElement("div");
const lbl = document.createElement("label");
lbl.textContent = f.label;
lbl.htmlFor = f.id;
wrap.appendChild(lbl);
let el;
if (f.type === "textarea") {
el = document.createElement("textarea");
} else if (f.type === "select") {
el = document.createElement("select");
for (const opt of f.optionen) {
const o = document.createElement("option");
o.value = o.textContent = opt;
el.appendChild(o);
}
} else {
el = document.createElement("input");
el.type = f.type;
}
el.id = f.id;
if (f.placeholder) el.placeholder = f.placeholder;
el.value = STATE[f.id] ?? "";
el.addEventListener("input", () => {
STATE[f.id] = el.value;
speichern();
rendern();
});
wrap.appendChild(el);
return wrap;
}
function aufbauen() {
const root = document.getElementById("form");
for (const g of SCHEMA) {
const sec = document.createElement("div");
sec.className = "gruppe";
const h = document.createElement("h2");
h.textContent = g.gruppe;
sec.appendChild(h);
for (const f of g.felder) sec.appendChild(feld(f));
root.appendChild(sec);
}
const akt = document.createElement("div");
akt.className = "aktionen";
akt.innerHTML = `
<button class="primary" id="btnMd">Markdown exportieren</button>
<button id="btnJson">JSON exportieren</button>
<label style="margin:0;display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);">
<input id="btnImport" type="file" accept="application/json" style="font-size:12px;" />
Import (JSON)
</label>
<button class="warn" id="btnReset">Zurücksetzen</button>`;
root.appendChild(akt);
document.getElementById("btnMd").onclick = () => download("klage.md", "text/markdown", asMarkdown());
document.getElementById("btnJson").onclick = () => download("klage.json", "application/json", JSON.stringify(STATE, null, 2));
document.getElementById("btnReset").onclick = () => {
if (!confirm("Alle Eingaben löschen?")) return;
localStorage.removeItem(KEY);
location.reload();
};
document.getElementById("btnImport").onchange = async (e) => {
const file = e.target.files?.[0]; if (!file) return;
try {
const data = JSON.parse(await file.text());
Object.assign(STATE, data);
speichern();
location.reload();
} catch (err) { alert("Import fehlgeschlagen: " + err.message); }
};
}
function download(name, mime, text) {
const blob = new Blob([text], { type: mime + ";charset=utf-8" });
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url; a.download = name; document.body.appendChild(a); a.click();
a.remove(); URL.revokeObjectURL(url);
}
function ph(v, hint) {
if (v && String(v).trim()) return escapeHtml(v);
return `<span class="platzhalter">{{${hint}}}</span>`;
}
function escapeHtml(s) {
return String(s).replace(/[&<>]/g, c => ({"&":"&amp;","<":"&lt;",">":"&gt;"}[c]));
}
function nl2br(s) { return escapeHtml(s).replace(/\n/g, "<br>"); }
function pruefeZust() {
const sw = parseFloat(STATE.streitwert || "0");
const zeilen = [];
if (sw > 0) {
if (sw <= 5000) zeilen.push(`Sachlich: Amtsgericht (§ 23 Nr. 1 GVG), Streitwert ${sw.toLocaleString("de-DE")} EUR.`);
else zeilen.push(`Sachlich: Landgericht (§ 71 GVG), Streitwert ${sw.toLocaleString("de-DE")} EUR.`);
}
if (STATE.beklagte_b2c === "ja") {
zeilen.push("Örtlich: § 29c ZPO — Wohnsitz des Verbrauchers, AGB-Gerichtsstand unwirksam (§ 38 Abs. 3 ZPO).");
} else if (STATE.beklagte_plz || STATE.beklagte_ort) {
zeilen.push("Örtlich: §§ 12, 13 ZPO am allgemeinen Gerichtsstand der Beklagten; § 29 ZPO Erfüllungsort prüfen.");
}
if (!STATE.gericht_bez || !STATE.zust_quelle || !STATE.zust_abrufdatum) {
zeilen.push("<span class=\"zust-warn\">Online-Adresscheck noch offen.</span>");
} else {
zeilen.push(`<span class="zust-ok">Adresscheck dokumentiert: ${escapeHtml(STATE.zust_quelle)} (${escapeHtml(STATE.zust_abrufdatum)}).</span>`);
}
return zeilen.join("<br>");
}
function asHtml() {
const anlagen = (STATE.anlagen || "")
.split(/\n+/)
.filter(z => z.trim())
.map(z => `<li>${escapeHtml(z)}</li>`).join("");
return `
<div class="briefkopf">${ph(STATE.kanzlei_briefkopf, "kanzlei.briefkopf")}</div>
<div class="ortdatum">${ph(STATE.ort_datum, "ort_datum")}</div>
<p>An das<br><strong>${ph(STATE.gericht_bez, "gericht.bezeichnung")}</strong><br>
${ph(STATE.gericht_adr, "gericht.adresse")}<br>
${STATE.gericht_safe ? "beA-EGVP, SAFE-ID: " + escapeHtml(STATE.gericht_safe) : ""}</p>
<h1>Klage</h1>
<p><strong>In dem Rechtsstreit</strong></p>
<p>${ph(STATE.klagepartei, "rubrum.klagepartei")}<br>— Klägerin/Kläger —</p>
<p>Prozessbevollmächtigte: ${ph(STATE.bevollmaecht, "rubrum.bevollmaechtigte")}</p>
<p><strong>gegen</strong></p>
<p>${ph(STATE.beklagte, "rubrum.beklagte")}<br>— Beklagte/Beklagter —</p>
<p><strong>wegen</strong> Forderung aus ${ph(STATE.anspruch_grund, "anspruch.grundsatz")}</p>
<p><strong>Streitwert:</strong> ${ph(STATE.streitwert, "streitwert.eur")} EUR</p>
<h2>Anträge</h2>
<p>Die Klägerin/der Kläger beantragt,</p>
<ol>
<li>die Beklagte/den Beklagten zu verurteilen, an die Klägerin/den Kläger
<strong>${ph(STATE.hauptforderung, "antrag.hauptforderung")} EUR</strong>
nebst Zinsen i. H. v. <strong>${ph(STATE.zinsen, "antrag.zinsen")}</strong>
seit ${ph(STATE.zinslauf_ab, "antrag.zinslauf_ab")} zu zahlen;</li>
<li>vorgerichtliche Rechtsanwaltskosten i. H. v.
<strong>${ph(STATE.kosten, "antrag.kosten")} EUR</strong>
nebst Zinsen i. H. v. 5 Prozentpunkten über Basiszinssatz seit Rechtshängigkeit zu zahlen;</li>
<li>die Kosten des Rechtsstreits der Beklagten aufzuerlegen.</li>
</ol>
<h2>Begründung</h2>
<h3>I. Sachverhalt</h3>
<p>${nl2br(STATE.sachverhalt || "")}</p>
<h3>II. Rechtliche Würdigung</h3>
<p>${nl2br(STATE.rechtliche_wuerdigung || "")}</p>
<h3>III. Zuständigkeit</h3>
<p>Sachlich: ${ph(STATE.zust_sachlich, "zustaendigkeit.sachlich")}.<br>
Örtlich: ${ph(STATE.zust_oertlich, "zustaendigkeit.oertlich")}.<br>
Adresse des Gerichts verifiziert am ${ph(STATE.zust_abrufdatum, "zustaendigkeit.abrufdatum")}
bei ${ph(STATE.zust_quelle, "zustaendigkeit.quelle")}.</p>
<h3>IV. Beweismittel</h3>
<p>${nl2br(STATE.beweismittel || "")}</p>
<h2>Anlagen</h2>
<ul>${anlagen || "<li><span class='platzhalter'>{{anlagen.liste}}</span></li>"}</ul>
<p>${nl2br(STATE.unterschrift || "")}</p>
`;
}
function asMarkdown() {
const anlagen = (STATE.anlagen || "")
.split(/\n+/).filter(z => z.trim())
.map(z => `- ${z}`).join("\n") || "{{anlagen.liste}}";
const safe = STATE.gericht_safe ? `beA-EGVP, SAFE-ID: ${STATE.gericht_safe}\n` : "";
return `${STATE.kanzlei_briefkopf || "{{kanzlei.briefkopf}}"}
${STATE.ort_datum || "{{ort_datum}}"}
An das
**${STATE.gericht_bez || "{{gericht.bezeichnung}}"}**
${STATE.gericht_adr || "{{gericht.adresse}}"}
${safe}
---
# Klage
**In dem Rechtsstreit**
${STATE.klagepartei || "{{rubrum.klagepartei}}"}
— Klägerin/Kläger —
Prozessbevollmächtigte: ${STATE.bevollmaecht || "{{rubrum.bevollmaechtigte}}"}
**gegen**
${STATE.beklagte || "{{rubrum.beklagte}}"}
— Beklagte/Beklagter —
**wegen** Forderung aus ${STATE.anspruch_grund || "{{anspruch.grundsatz}}"}
**Streitwert:** ${STATE.streitwert || "{{streitwert.eur}}"} EUR
---
## Anträge
Die Klägerin/der Kläger beantragt,
1. die Beklagte/den Beklagten zu verurteilen, an die Klägerin/den Kläger **${STATE.hauptforderung || "{{antrag.hauptforderung}}"} EUR** nebst Zinsen i. H. v. **${STATE.zinsen || "{{antrag.zinsen}}"}** seit ${STATE.zinslauf_ab || "{{antrag.zinslauf_ab}}"} zu zahlen;
2. vorgerichtliche Rechtsanwaltskosten i. H. v. **${STATE.kosten || "{{antrag.kosten}}"} EUR** nebst Zinsen i. H. v. 5 Prozentpunkten über Basiszinssatz seit Rechtshängigkeit zu zahlen;
3. die Kosten des Rechtsstreits der Beklagten aufzuerlegen.
## Begründung
### I. Sachverhalt
${STATE.sachverhalt || "{{sachverhalt}}"}
### II. Rechtliche Würdigung
${STATE.rechtliche_wuerdigung || "{{rechtliche_wuerdigung}}"}
### III. Zuständigkeit
Sachlich: ${STATE.zust_sachlich || "{{zustaendigkeit.sachlich}}"}. Örtlich: ${STATE.zust_oertlich || "{{zustaendigkeit.oertlich}}"}. Adresse verifiziert am ${STATE.zust_abrufdatum || "{{zustaendigkeit.abrufdatum}}"} bei ${STATE.zust_quelle || "{{zustaendigkeit.quelle}}"}.
### IV. Beweismittel
${STATE.beweismittel || "{{beweismittel}}"}
---
## Anlagen
${anlagen}
---
${STATE.unterschrift || "{{unterschrift}}"}
`;
}
function rendern() {
document.getElementById("doc").innerHTML = asHtml();
document.getElementById("zust").innerHTML = pruefeZust() ||
"Streitwert, Beklagtenadresse und Online-Adresscheck eingeben — die Vorschau aktualisiert sich live.";
}
laden();
aufbauen();
rendern();
</script>
</body>
</html>
@@ -0,0 +1,42 @@
{
"kanzlei": {
"name": "<Kanzlei XY>",
"briefkopf_pfad": "assets/briefkopf.docx",
"bea_safe_id_eigene": "",
"anschrift": ""
},
"stil": {
"tonalitaet": "knapp-sachlich",
"anrede_gericht": "An das",
"nummerierung_antraege": "arabisch",
"anlagensigel": "K"
},
"zitierweise": {
"schema": "pinpoint_rn",
"reihenfolge": "juengere_bgh_zuerst",
"kommentartradition": "deutsch"
},
"standardklauseln": {
"zinsantrag_b2b": "9 Prozentpunkte über Basiszinssatz, § 288 Abs. 2 BGB",
"zinsantrag_b2c": "5 Prozentpunkte über Basiszinssatz, § 288 Abs. 1 BGB",
"verzugspauschale_b2b": "40 EUR, § 288 Abs. 5 BGB",
"nebenforderung_ra_kosten": "Geschäftsgebühr Nr. 2300 VV RVG abzgl. Anrechnung Vorbem. 3 Abs. 4 VV RVG"
},
"standardbeleg": {
"ra_kosten_als_verzugsschaden": "BGH, Urt. v. 22.01.2008 VIII ZR 6/06, NJW 2008, 1888",
"mahnung_anforderungen": "BGH, Urt. v. 04.10.2007 III ZR 180/06, NJW 2008, 50",
"verzugspauschale_reichweite": "BGH, Urt. v. 25.06.2020 VII ZR 308/19, NJW 2020, 2884"
},
"anlagen_default": [
"Rechnung mit Fälligkeit",
"1. Mahnung",
"2. Mahnung mit Frist und Verzugsfolgenhinweis",
"Auftragsbestätigung / Vertrag",
"Lieferschein / Leistungsnachweis",
"AGB (sofern einbezogen)"
],
"zustaendigkeit": {
"quelle_primaer": "https://www.justizadressen.nrw.de/de/justiz/suche",
"quelle_bundesweit": "https://www.justiz.de/onlinedienste/gerichtsverzeichnis_und_orga/index.php"
}
}
@@ -0,0 +1,68 @@
{{kanzlei.briefkopf}}
{{ort_datum}}
An das
**{{gericht.bezeichnung}}**
{{gericht.adresse}}
{{#gericht.bea_safe_id}}beA-EGVP, SAFE-ID: {{gericht.bea_safe_id}}{{/gericht.bea_safe_id}}
---
# Klage
**In dem Rechtsstreit**
{{rubrum.klagepartei}}
— Klägerin/Kläger —
Prozessbevollmächtigte: {{rubrum.bevollmaechtigte}}
**gegen**
{{rubrum.beklagte}}
— Beklagte/Beklagter —
**wegen** Forderung aus {{anspruch.grundsatz}}
**Streitwert:** {{streitwert.eur}} EUR
---
## Anträge
Die Klägerin/der Kläger beantragt,
1. die Beklagte/den Beklagten zu verurteilen, an die Klägerin/den Kläger **{{antrag.hauptforderung}} EUR** nebst Zinsen i. H. v. **{{antrag.zinsen}}** seit {{antrag.zinslauf_ab}} zu zahlen;
2. die Beklagte/den Beklagten zu verurteilen, an die Klägerin/den Kläger vorgerichtliche Rechtsanwaltskosten i. H. v. **{{antrag.kosten}} EUR** nebst Zinsen i. H. v. 5 Prozentpunkten über dem Basiszinssatz seit Rechtshängigkeit zu zahlen;
3. die Kosten des Rechtsstreits der Beklagten/dem Beklagten aufzuerlegen.
Es wird angeregt, im schriftlichen Vorverfahren (§ 276 ZPO) zu entscheiden.
## Begründung
### I. Sachverhalt
{{sachverhalt}}
### II. Rechtliche Würdigung
{{rechtliche_wuerdigung}}
### III. Zuständigkeit
Die sachliche Zuständigkeit folgt aus {{zustaendigkeit.sachlich}}. Die örtliche Zuständigkeit folgt aus {{zustaendigkeit.oertlich}}. Die Adresse des Gerichts wurde am {{zustaendigkeit.abrufdatum}} bei {{zustaendigkeit.quelle}} verifiziert.
### IV. Beweismittel
{{beweismittel}}
---
## Anlagen
{{anlagen.liste}}
---
{{unterschrift}}
@@ -0,0 +1,27 @@
# Leitentscheidungen für Forderungsklagen
Belege zur Subsumtion. Pinpoint mit Randnummer, jüngere BGH-Entscheidungen zuerst.
## Verzug, Zinsen, Verzugsschaden
1. **BGH, Urt. v. 25.06.2020 VII ZR 308/19**, NJW 2020, 2884 — Verzugspauschale § 288 Abs. 5 BGB; Reichweite, Anrechnung auf Verfahrenskosten verneint.
2. **BGH, Urt. v. 22.01.2008 VIII ZR 6/06**, NJW 2008, 1888 — vorgerichtliche Rechtsanwaltskosten als Verzugsschaden (§ 280 Abs. 1, 2; § 286 BGB).
3. **BGH, Urt. v. 04.10.2007 III ZR 180/06**, NJW 2008, 50 — Anforderungen an Mahnung; Inhalt und Bestimmtheit.
## Elektronische Einreichung (§ 130a, § 130d ZPO)
4. **BGH, Beschl. v. 23.06.2022 V ZB 12/22** — Anforderungen an die elektronische Einreichung; Wirksamkeit qualifizierte Signatur.
5. **BGH, Beschl. v. 31.01.2023 XI ZB 23/22** — Sorgfaltspflichten bei beA-Übermittlung; Eingangsbestätigung prüfen.
## Anwaltskosten als Nebenforderung / RVG
6. **BGH, Urt. v. 18.01.2005 VI ZR 73/04**, NJW 2005, 1112 — Erstattungsfähigkeit vorgerichtlicher RA-Kosten dem Grunde nach.
## Gerichtsstand und Erfüllungsort
7. **BGH, Urt. v. 22.04.2009 VIII ZR 156/07**, NJW 2009, 2197 — Erfüllungsort § 29 ZPO bei Geldschulden, Abgrenzung Schickschuld.
8. **EuGH, Urt. v. 14.09.2023 C-393/22** — Auslegung Art. 7 Nr. 1 lit. b Brüssel Ia VO (Erfüllungsort).
## Quellen-Disclaimer
Volltexte sind über JURIS, beck-online, openJur, dejure.org und die kostenlosen Datenbanken der Justiz erreichbar. PDFs nur dann hier ablegen, wenn die Lizenz das erlaubt.
@@ -0,0 +1,25 @@
# Online-Quellen für die Zuständigkeitsprüfung
**Pflicht in jedem Klagelauf.** Beide Quellen abrufen, Abrufdatum dokumentieren.
## Primärquelle (NRW + bundesweit über Verlinkungen)
- **Justiz-Adressen NRW**: <https://www.justizadressen.nrw.de/de/justiz/suche>
- Suchfelder: PLZ oder Ortsname der Beklagten-Anschrift.
- Liefert: zuständiges Amtsgericht, Landgericht, Oberlandesgericht, Staatsanwaltschaft samt Postanschrift.
- Wenn nicht eindeutig: Hinweis der Seite beachten und mit Ortsname nachfassen.
- Einschränkung: nach Streitgegenstand kann ein anderes Gericht ausschließlich örtlich zuständig sein (Familie, Insolvenz, Patente).
## Bundesweit ergänzend
- **Justizportal des Bundes und der Länder — Gerichtsverzeichnis**: <https://www.justiz.de/onlinedienste/gerichtsverzeichnis_und_orga/index.php>
- **Bundeseinheitliche Mahngerichte**: <https://www.mahngerichte.de>
## BeA-EGVP-Adressbuch (SAFE-ID)
Die SAFE-ID des Empfangsgerichts wird im **beA-Adressbuch** geführt und ist über das Anwaltspostfach abrufbar. Sie ist nicht öffentlich gelistet; in der Klage genügt regelmäßig die Postanschrift; bei elektronischer Einreichung (§ 130d ZPO) wird die SAFE-ID des Empfangsgerichts beim Versand aus beA gewählt.
## Hinweise zum Mahngericht
- Zentralisierte Mahngerichte je Bundesland (§ 689 Abs. 3 ZPO), Auflistung unter mahngerichte.de.
- Beklagten-Wohnsitz bestimmt das zuständige Mahngericht; bei Mahnverfahren gegen Schuldner ohne allgemeinen Gerichtsstand im Inland gilt das AG Schöneberg (§ 689 Abs. 2 S. 2 ZPO i. V. m. § 15a ZPO).
@@ -0,0 +1,417 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
plugin_aus_hausregeln.py — Plugin-Generator der Klagewerkstatt.
Packt aus den im Lernlauf gewonnenen Hausregeln (`hausregeln.json`) und der
hauseigenen Standardvorlage (`standardklage.md`) ein eigenständiges, in
Claude Code direkt installierbares Mini-Plugin als ZIP-Datei.
Aufruf:
python scripts/plugin_aus_hausregeln.py \
--kanzlei "Kanzlei Mustermann" \
--vorlage assets/vorlagen-leer/standardklage.md \
--regeln hausregeln.json \
--ziel /pfad/klagewerkstatt-mustermann.zip
Layout des erzeugten Plugins:
klagewerkstatt-<slug>/
.claude-plugin/plugin.json
skills/klage-erstellen/SKILL.md
assets/vorlage/standardklage.md
references/hausregeln.json
references/belegmuster.md
references/anlagenliste.md
references/zustaendigkeit-quellen.md
README.md
Lizenz: Apache-2.0 OR MIT (Auswahl beim Empfänger). Autor: Klotzkette.
"""
from __future__ import annotations
import argparse
import io
import json
import re
import sys
import zipfile
from datetime import date
from pathlib import Path
# ---------------------------------------------------------------------------
# Hilfsfunktionen
# ---------------------------------------------------------------------------
def slugify(name: str) -> str:
"""Erzeugt einen URL-/Plugin-tauglichen Kurznamen aus einem Kanzleinamen."""
s = name.strip().lower()
s = re.sub(r"[äÄ]", "ae", s)
s = re.sub(r"[öÖ]", "oe", s)
s = re.sub(r"[üÜ]", "ue", s)
s = re.sub(r"[ß]", "ss", s)
s = re.sub(r"[^a-z0-9]+", "-", s)
s = re.sub(r"-+", "-", s).strip("-")
return s or "kanzlei"
def lese_json(pfad: Path) -> dict:
if not pfad.exists():
raise SystemExit(f"Hausregeln nicht gefunden: {pfad}")
try:
return json.loads(pfad.read_text(encoding="utf-8"))
except json.JSONDecodeError as err:
raise SystemExit(f"Hausregeln {pfad} sind kein gültiges JSON: {err}")
def lese_text(pfad: Path) -> str:
if not pfad.exists():
raise SystemExit(f"Vorlage nicht gefunden: {pfad}")
return pfad.read_text(encoding="utf-8")
# ---------------------------------------------------------------------------
# Dateiinhalte für das erzeugte Plugin
# ---------------------------------------------------------------------------
def plugin_json(slug: str, kanzlei: str) -> str:
manifest = {
"name": f"klagewerkstatt-{slug}",
"version": "0.1.0",
"description": (
f"Hauseigenes Klage-Plugin der Kanzlei {kanzlei}. "
"Erzeugt aus der eigenen Standardvorlage und den extrahierten Hausregeln "
"durch die Klagewerkstatt (forderungsmanagement-klagewerkstatt). "
"Nimmt im Laufzeitbetrieb nur noch Sachverhalt und Beklagtenadresse entgegen, "
"prüft online die sachliche und örtliche Zuständigkeit "
"(justizadressen.nrw.de und justiz.de Gerichtssuche; "
"§§ 12, 13, 29, 29c ZPO; §§ 23, 71 GVG) und liefert die fertige "
"Klageschrift als DOCX und Markdown in der hauseigenen Formatvorlage."
),
"license": "Apache-2.0 OR MIT",
"author": {"name": "Klotzkette"},
"homepage": "https://github.com/Klotzkette/claude-fuer-deutsches-recht",
"keywords": [
"klage",
"forderungsmanagement",
"inkasso",
"zpo",
"klagewerkstatt",
"hauskanzlei",
"bea",
"zustaendigkeit",
slug,
],
}
return json.dumps(manifest, ensure_ascii=False, indent=2) + "\n"
def skill_md(slug: str, kanzlei: str, regeln: dict) -> str:
zinsantrag_b2b = regeln.get("standardklauseln", {}).get(
"zinsantrag_b2b", "9 Prozentpunkte über Basiszinssatz, § 288 Abs. 2 BGB"
)
zinsantrag_b2c = regeln.get("standardklauseln", {}).get(
"zinsantrag_b2c", "5 Prozentpunkte über Basiszinssatz, § 288 Abs. 1 BGB"
)
anlagensigel = regeln.get("stil", {}).get("anlagensigel", "K")
return f"""---
name: klage-erstellen
description: Hauseigener Klage-Skill der Kanzlei {kanzlei}. Erzeugt Forderungsklagen direkt in der hauseigenen Standardvorlage. Nimmt nur Sachverhalt und Beklagtenadresse entgegen, prüft online die sachliche und örtliche Zuständigkeit (justizadressen.nrw.de und justiz.de Gerichtssuche; §§ 12, 13, 29, 29c ZPO; §§ 23, 71 GVG), füllt die hinterlegte Vorlage und liefert die Klageschrift als DOCX und Markdown. Keine Extraktion, kein Lernlauf.
language: de
license: Apache-2.0 OR MIT
when_to_use: |
Trigger phrases and example requests:
- neue Klage in Hausvorlage {kanzlei}
- Forderungsklage erstellen
- Klage in unserer Standardvorlage
- Inkasso-Klage ohne Lernlauf
- {slug} klage
---
# Klage-Erstellen — {kanzlei}
## Zweck
Hauseigener Laufzeit-Skill. Setzt die Hausregeln und die Standardvorlage der
Kanzlei {kanzlei} fest verdrahtet voraus. Erzeugt aus Sachverhalt und
Beklagtenadresse eine vollständige Forderungsklage in der hauseigenen Form.
## Ablauf
**1. Sachverhalt einsammeln (eine Liste, einmal):**
- Forderungsgrund (Kauf, Werkvertrag, Dienstvertrag, Darlehen, Miete, sonstiges)
mit kurzer Vertragsbeschreibung.
- Beklagte(r): Name, Anschrift, Rechtsform, ggf. gesetzliche Vertretung;
**Anschrift exakt** für die Zuständigkeitsprüfung.
- Hauptforderung in EUR, Fälligkeitsdatum, etwaige Teilzahlungen.
- Mahnungen mit Datum und Inhalt; Mahnverzugseintritt.
- Vorgerichtliche Rechtsanwaltskosten als Nebenforderung
(Geschäftsgebühr Nr. 2300 VV RVG, Anrechnung Vorbem. 3 Abs. 4 VV RVG).
- Beweismittel (Urkunden, Zeugen, Sachverständige, Parteivernehmung).
- Besonderheiten: Verbraucher (§ 29c ZPO), AGB-Gerichtsstand (§ 38 ZPO),
Erfüllungsort (§ 29 ZPO), grenzüberschreitender Bezug (Brüssel Ia VO).
Dokumenten-Drop akzeptieren (Rechnungen, Mahnungen, Korrespondenz) und
Felder automatisch belegen.
**2. Zuständigkeit online prüfen (Pflicht):**
1. **Sachlich** rechnerisch: ≤ 5.000 EUR → AG (§ 23 Nr. 1 GVG);
> 5.000 EUR → LG (§ 71 GVG). Sondertatbestände beachten
(Wohnraummiete § 23 Nr. 2a GVG; Handelssachen §§ 95, 96 GVG).
2. **Örtlich** rechtlich: §§ 12, 13 ZPO Allgemeiner Gerichtsstand;
§ 29 ZPO Erfüllungsort; § 29c ZPO Verbraucherverträge;
§ 38 ZPO Gerichtsstandsvereinbarung (gegenüber Verbrauchern unwirksam).
3. **Online-Adressrecherche** (immer ausführen):
- `pplx content fetch "https://www.justizadressen.nrw.de/de/justiz/suche?suchbegriff=<PLZ_oder_Ort>"`
- bundesweit `pplx content fetch "https://www.justiz.de/onlinedienste/gerichtsverzeichnis_und_orga/index.php"`
- Treffer übernehmen: Bezeichnung, Postanschrift, ggf. BeA-SAFE-ID
(sonst Hinweis: „über beA-Adressbuch nachtragen").
4. Quelle und Abrufdatum in Anlage **Zuständigkeitsprüfung** dokumentieren.
**3. Klage erzeugen:**
- Vorlage `assets/vorlage/standardklage.md` befüllen.
- DOCX über `office/docx` rendern. Dateiname `Klage-<Beklagte>-<YYYYMMDD>.docx`.
- Anlagenliste aus `references/anlagenliste.md`; Sigel `{anlagensigel}1`, `{anlagensigel}2`, …
- Zinsantrag: B2B `{zinsantrag_b2b}`; B2C `{zinsantrag_b2c}`.
**4. Memo (nur auf Anfrage):**
> Soll ich zusätzlich ein Kurz-Memo im Gutachtenstil mit Anspruchsgrundlagen,
> Beweislage und Prozessrisiken erstellen?
## Rechtlicher Rahmen
- **Pflichtinhalte**: § 253 ZPO; **Form**: §§ 130, 130a, 130d ZPO (beA-Pflicht
für Rechtsanwältinnen und Rechtsanwälte); **Anwaltszwang**: § 78 ZPO.
- **Sachliche Zuständigkeit**: §§ 23, 71 GVG.
- **Örtliche Zuständigkeit**: §§ 12, 13, 17, 24, 29, 29c, 38 ZPO; grenzüber-
schreitend Brüssel Ia VO (EU) 1215/2012, insb. Art. 7 Nr. 1.
- **Anspruchsgrundlagen** (Auswahl): §§ 433 II, 535 II, 488, 611a II, 631 I BGB.
- **Verzug**: §§ 286, 288 BGB; **RA-Kosten als Verzugsschaden**: § 280 BGB.
## Leitentscheidungen (siehe `references/belegmuster.md`)
- BGH, Urt. v. 25.06.2020 VII ZR 308/19, NJW 2020, 2884
- BGH, Urt. v. 22.01.2008 VIII ZR 6/06, NJW 2008, 1888
- BGH, Urt. v. 04.10.2007 III ZR 180/06, NJW 2008, 50
- BGH, Beschl. v. 23.06.2022 V ZB 12/22
- BGH, Beschl. v. 31.01.2023 XI ZB 23/22
## Ausgabeformat
1. Klageschrift als DOCX (`Klage-<Beklagte>-<YYYYMMDD>.docx`) und Markdown-Spiegel.
2. Anlage Zuständigkeitsprüfung mit Online-Quellen und Abrufdatum.
3. Memo nur auf Anfrage.
## Übergabe
- Bei drohender Zahlungsunfähigkeit der Beklagten an `liquiditaetsplanung`.
- Bei einstweiligem Rechtsschutz / Mahnverfahren an `prozessrecht`.
- Wenn die Hausvorlage veraltet wirkt, zurück an den Schwester-Skill
`klagevorlage-aus-eigenen-mustern` im Plugin `forderungsmanagement-klagewerkstatt`
zum aktualisierten Lernlauf.
"""
def belegmuster_md(regeln: dict) -> str:
sb = regeln.get("standardbeleg", {})
zeilen = ["# Belegmuster — hauseigene Standardfundstellen", ""]
for thema, beleg in sb.items():
zeilen.append(f"- **{thema}**: {beleg}")
zeilen.extend(
[
"",
"## Weitere Leitentscheidungen",
"",
"- BGH, Urt. v. 25.06.2020 VII ZR 308/19, NJW 2020, 2884 (§ 288 Abs. 5 BGB).",
"- BGH, Urt. v. 22.01.2008 VIII ZR 6/06, NJW 2008, 1888 (RA-Kosten als Verzugsschaden).",
"- BGH, Urt. v. 04.10.2007 III ZR 180/06, NJW 2008, 50 (Mahnung).",
"- BGH, Beschl. v. 23.06.2022 V ZB 12/22 (§ 130a ZPO).",
"- BGH, Beschl. v. 31.01.2023 XI ZB 23/22 (beA-Sorgfalt).",
"- BGH, Urt. v. 22.04.2009 VIII ZR 156/07, NJW 2009, 2197 (Erfüllungsort § 29 ZPO).",
"- EuGH, Urt. v. 14.09.2023 C-393/22 (Art. 7 Nr. 1 lit. b Brüssel Ia VO).",
"",
"Pinpoint-Zitat mit Randnummer; jüngere Entscheidungen zuerst.",
"",
]
)
return "\n".join(zeilen)
def anlagenliste_md(regeln: dict) -> str:
sigel = regeln.get("stil", {}).get("anlagensigel", "K")
eintraege = regeln.get("anlagen_default", []) or [
"Rechnung mit Fälligkeit",
"1. Mahnung",
"2. Mahnung mit Frist und Verzugsfolgenhinweis",
"Auftragsbestätigung / Vertrag",
"Lieferschein / Leistungsnachweis",
"AGB (sofern einbezogen)",
]
zeilen = ["# Anlagenliste — Standard der Kanzlei", ""]
for i, e in enumerate(eintraege, 1):
zeilen.append(f"- **{sigel}{i}** {e}")
zeilen.extend(
[
"",
"Reihenfolge an den Sachverhalt anpassen; weitere Anlagen fortlaufend nummerieren.",
"",
]
)
return "\n".join(zeilen)
def zustaendigkeit_quellen_md(regeln: dict) -> str:
z = regeln.get("zustaendigkeit", {}) or {}
primaer = z.get("quelle_primaer", "https://www.justizadressen.nrw.de/de/justiz/suche")
bund = z.get(
"quelle_bundesweit",
"https://www.justiz.de/onlinedienste/gerichtsverzeichnis_und_orga/index.php",
)
return f"""# Online-Quellen für die Zuständigkeitsprüfung
Pflicht in jedem Klagelauf. Beide Quellen abrufen und das Abrufdatum dokumentieren.
## Primärquelle
- **Justiz-Adressen NRW**: <{primaer}>
- Suchfeld PLZ oder Ortsname der Beklagten-Anschrift.
- Liefert zuständiges Amtsgericht, Landgericht, Oberlandesgericht,
Staatsanwaltschaft samt Postanschrift.
## Bundesweit ergänzend
- **Justizportal Gerichtsverzeichnis**: <{bund}>
- **Bundeseinheitliche Mahngerichte**: <https://www.mahngerichte.de>
## BeA-EGVP-Adressbuch (SAFE-ID)
Die SAFE-ID des Empfangsgerichts wird im **beA-Adressbuch** geführt. Bei
elektronischer Einreichung (§ 130d ZPO) wird sie beim Versand aus beA gewählt;
in der Klage genügt regelmäßig die Postanschrift. Falls eine SAFE-ID nicht
öffentlich gelistet ist, im Output mit dem Hinweis
„über beA-Adressbuch zu ergänzen" markieren.
"""
def readme_md(slug: str, kanzlei: str) -> str:
heute = date.today().isoformat()
return f"""# Klagewerkstatt — {kanzlei}
Hauseigenes Klage-Plugin. Erzeugt aus der eigenen Standardvorlage und den
extrahierten Hausregeln direkt die nächste Forderungsklage in der gewohnten
Formatvorlage.
**Erzeugt am:** {heute}
**Quelle:** Klagewerkstatt (forderungsmanagement-klagewerkstatt) der
[Klotzkette German Legal Skills](https://github.com/Klotzkette/claude-fuer-deutsches-recht).
## Installation in Claude Code
1. Diese ZIP-Datei (`klagewerkstatt-{slug}.zip`) herunterladen.
2. Claude Code → **Customize Plugins** → **Install from .zip** → Datei wählen.
3. Fertig. Skill `klage-erstellen` ist sofort verfügbar.
## Verwendung
> „Neue Forderungsklage in Hausvorlage."
Das Plugin fragt dann strukturiert nach Sachverhalt und Beklagtenadresse, prüft
**online** sachliche und örtliche Zuständigkeit über
[justizadressen.nrw.de](https://www.justizadressen.nrw.de/de/justiz/suche) und
das bundesweite [Justizportal](https://www.justiz.de/onlinedienste/gerichtsverzeichnis_und_orga/index.php)
und liefert die fertige Klageschrift als DOCX und Markdown.
## Inhalt
- `.claude-plugin/plugin.json`
- `skills/klage-erstellen/SKILL.md`
- `assets/vorlage/standardklage.md`
- `references/hausregeln.json`
- `references/belegmuster.md`
- `references/anlagenliste.md`
- `references/zustaendigkeit-quellen.md`
## Pflege
Wenn sich Standardklauseln, Belegmuster oder Layout ändern: einfach den
Lernlauf-Skill `klagevorlage-aus-eigenen-mustern` im Mutter-Plugin neu starten
und das aktualisierte ZIP überschreibend installieren.
## Lizenz
Apache-2.0 OR MIT — Auswahl beim Empfänger.
"""
# ---------------------------------------------------------------------------
# ZIP-Aufbau
# ---------------------------------------------------------------------------
def baue_zip(
ziel: Path,
slug: str,
kanzlei: str,
regeln: dict,
vorlage_text: str,
) -> None:
base = f"klagewerkstatt-{slug}"
ziel.parent.mkdir(parents=True, exist_ok=True)
with zipfile.ZipFile(ziel, "w", zipfile.ZIP_DEFLATED) as zf:
def add(name: str, data: str) -> None:
zf.writestr(f"{base}/{name}", data)
add(".claude-plugin/plugin.json", plugin_json(slug, kanzlei))
add("skills/klage-erstellen/SKILL.md", skill_md(slug, kanzlei, regeln))
add("assets/vorlage/standardklage.md", vorlage_text)
add(
"references/hausregeln.json",
json.dumps(regeln, ensure_ascii=False, indent=2) + "\n",
)
add("references/belegmuster.md", belegmuster_md(regeln))
add("references/anlagenliste.md", anlagenliste_md(regeln))
add("references/zustaendigkeit-quellen.md", zustaendigkeit_quellen_md(regeln))
add("README.md", readme_md(slug, kanzlei))
# ---------------------------------------------------------------------------
# CLI
# ---------------------------------------------------------------------------
def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
ap = argparse.ArgumentParser(
description="Generiert ein hauseigenes Klage-Plugin als ZIP.",
)
ap.add_argument("--kanzlei", required=True, help="Kanzleiname (z. B. 'Kanzlei Mustermann').")
ap.add_argument("--vorlage", required=True, type=Path, help="Pfad zur Standardvorlage (.md).")
ap.add_argument("--regeln", required=True, type=Path, help="Pfad zur hausregeln.json.")
ap.add_argument("--ziel", required=True, type=Path, help="Pfad zur Ausgabe-ZIP.")
ap.add_argument(
"--slug",
default=None,
help="Optionaler Slug. Default: aus --kanzlei abgeleitet.",
)
return ap.parse_args(argv)
def main(argv: list[str] | None = None) -> int:
args = parse_args(argv)
regeln = lese_json(args.regeln)
vorlage_text = lese_text(args.vorlage)
slug = args.slug or slugify(args.kanzlei)
baue_zip(args.ziel, slug, args.kanzlei, regeln, vorlage_text)
print(f"OK: {args.ziel} (klagewerkstatt-{slug}.zip-Struktur)")
return 0
if __name__ == "__main__": # pragma: no cover
sys.exit(main())
@@ -0,0 +1,51 @@
---
name: klage-aus-eigenem-skill
description: Laufzeit-Variante der Klagewerkstatt. Setzt voraus, dass ein zuvor mit klagevorlage-aus-eigenen-mustern erzeugtes hauseigenes Klage-Plugin installiert ist (klagewerkstatt-<kanzlei>). Nimmt nur noch den Sachverhalt und die Beklagtenadresse entgegen, prüft online die sachliche und örtliche Zuständigkeit (justizadressen.nrw.de und justiz.de Gerichtssuche; §§ 12, 13, 29, 29c ZPO; §§ 23, 71 GVG), füllt die hauseigene Standardvorlage und liefert die fertige Klageschrift als DOCX und Markdown. Keine erneute Extraktion, kein erneuter Lernlauf.
language: de
license: Apache-2.0 OR MIT
when_to_use: |
Trigger phrases and example requests:
- neue Klage in unserer Hausvorlage
- Klage mit unserem Klagewerkstatt-Plugin erstellen
- Forderungsklage Sachverhalt einreichen
- Klage aus eigenem Skill
- schnelle Klage Inkasso ohne Lernlauf
---
# Klagewerkstatt — Laufzeit aus eigenem Skill
## Zweck
Dieser Skill ist die **Laufzeit-Variante**. Er setzt voraus, dass das hauseigene Klage-Plugin (`klagewerkstatt-<kanzlei>`) bereits installiert ist (erzeugt vom Schwester-Skill `klagevorlage-aus-eigenen-mustern`). Er extrahiert nichts mehr, sondern nimmt Sachverhalt und Beklagtenadresse entgegen, prüft online die Zuständigkeit, füllt die hauseigene Vorlage und liefert die Klageschrift.
## Ablauf
**Schritt 1 — Hausvorlage finden**
Prüfen, ob `klagewerkstatt-<slug>` installiert ist und `assets/vorlage/standardklage.md` sowie `references/hausregeln.json` enthält. Wenn nicht: höflich auf `klagevorlage-aus-eigenen-mustern` verweisen.
**Schritt 2 — Sachverhalt einsammeln**
Alle Felder, die der Schwester-Skill in Schritt 5 abfragt, in einer Liste stellen. Dokumenten-Drop akzeptieren und Felder daraus belegen.
**Schritt 3 — Zuständigkeit online prüfen (Pflicht)**
Identisch zum Schwester-Skill, Schritt 6: rechnerische sachliche Zuständigkeit (§§ 23, 71 GVG), rechtliche örtliche Zuständigkeit (§§ 12, 13, 29, 29c, 38 ZPO; ggf. Brüssel Ia VO), Online-Recherche unter `https://www.justizadressen.nrw.de/de/justiz/suche` (PLZ oder Ort) und bundesweit unter `https://www.justiz.de/onlinedienste/gerichtsverzeichnis_und_orga/index.php`. Quelle und Abrufdatum dokumentieren. BeA-SAFE-ID nachtragen.
**Schritt 4 — Klage erzeugen**
Vorlage `assets/vorlage/standardklage.md` mit Sachverhalt befüllen, DOCX über `office/docx` rendern. Anlagenliste aus `references/anlagenliste.md` ergänzen. Dateiname `Klage-<Beklagte>-<YYYYMMDD>.docx`.
**Schritt 5 — Memo (nur auf Anfrage)**
> Soll ich zusätzlich ein Kurz-Memo im Gutachtenstil mit Anspruchsgrundlagen, Beweislage und Prozessrisiken erstellen?
## Rechtlicher Rahmen
Identisch zum Schwester-Skill (siehe dort): § 253 ZPO, §§ 130, 130a, 130d ZPO, §§ 23, 71 GVG, §§ 12, 13, 29, 29c, 38 ZPO, Brüssel Ia VO 1215/2012, §§ 286, 288, 280 BGB, RVG VV.
## Ausgabeformat
1. **Klageschrift** als DOCX und Markdown.
2. **Anlage Zuständigkeitsprüfung** mit Online-Quellen und Abrufdatum.
3. **Memo** nur auf Anfrage.
## Übergabe
Wenn die Hausvorlage erkennbar veraltet ist (z. B. Zitierungen oder Gerichtsstand-Klauseln nicht mehr aktuell), zurück an `klagevorlage-aus-eigenen-mustern` zum aktualisierten Lernlauf.
@@ -0,0 +1,170 @@
---
name: klagevorlage-aus-eigenen-mustern
description: Lernlauf der Klagewerkstatt für Forderungsmanagement-Klagen. Frisst eigene Klagemuster, Urteile, Kommentare, Aufsätze und Formatvorlagen des Nutzers (DOCX, PDF, MD, TXT), destilliert daraus eine hauseigene generische Standardklage-Vorlage mit Platzhaltern, sammelt den Sachverhalt im Dialog oder aus weiteren Dokumenten, prüft online die sachliche und örtliche Zuständigkeit (justizadressen.nrw.de und justiz.de Gerichtssuche; §§ 12, 13, 29, 29c ZPO; §§ 23, 71 GVG) und liefert die fertige Klageschrift als DOCX und Markdown. Erzeugt zusätzlich ein eigenes Mini-Plugin als ZIP, das in Claude Code direkt installierbar ist und die nächste Klage ohne erneute Extraktion in der hauseigenen Vorlage produziert. Memo nur auf Anfrage.
language: de
license: Apache-2.0 OR MIT
when_to_use: |
Trigger phrases and example requests:
- Klagevorlage aus eigenen Mustern bauen
- eigene Klagewerkstatt einrichten
- Klage für Forderungsmanagement entwerfen
- aus unseren alten Klagen eine Standardvorlage machen
- Inkasso-Klage neu aufsetzen
- Klageschrift § 253 ZPO
- eigenes Klage-Plugin generieren
---
# Klagewerkstatt — Lernlauf aus eigenen Mustern
## Zweck
Dieser Skill ist der **Lernlauf** der Klagewerkstatt. Er macht in einem Durchgang vier Dinge:
1. Aus eigenen Klagemustern, Urteilen, Kommentaren, Aufsätzen und Formatvorlagen wird eine **hauseigene generische Standardklage-Vorlage** destilliert (Markdown + DOCX, mit Platzhaltern).
2. Der Sachverhalt wird im Dialog und aus weiteren hochgeladenen Dokumenten eingesammelt und in die Vorlage gespiegelt.
3. **Online-Prüfung der Zuständigkeit** ist Pflicht: justizadressen.nrw.de und justiz.de Gerichtssuche. Streitwert → AG/LG; Beklagtenadresse → örtliche Zuständigkeit; Sondertatbestände beachten.
4. Aus den extrahierten Hausregeln wird ein **eigenes Mini-Plugin als ZIP** generiert (`klagewerkstatt-<kanzlei>.zip`), das in Claude Code direkt installierbar ist und beim nächsten Mal ohne erneute Extraktion in der hauseigenen Vorlage produziert (siehe Schwester-Skill `klage-aus-eigenem-skill`).
Memo (rechtliche Würdigung) wird **nur auf ausdrückliche Anfrage** erstellt.
## Ablauf
**Schritt 1 — Kanzlei-Profil**
Einmal abfragen und merken:
> Kanzleiname, Rechtsanwältin/Rechtsanwalt mit Anschrift, BeA-SAFE-ID, AGB-Klausel zum Gerichtsstand (sofern für Verbraucher unzulässig nach § 29c ZPO klar abgrenzen), übliche Mandantengruppe (B2B, B2C, gemischt), bevorzugte Zinsformel (Basiszins+5/+9, §§ 288 Abs. 1/2 BGB), Standard-Anlagenliste (z. B. Rechnung, Auftragsbestätigung, Mahnungen, Lieferschein, AGB).
**Schritt 2 — Materialaufnahme (Lernkorpus)**
Den Nutzer bitten, alle einschlägigen Eigenmaterialien hochzuladen oder per Pfad zu nennen:
- Eigene Klage-Muster (mind. 2, gern 515) als DOCX, PDF, MD, TXT.
- Urteile zur eigenen Forderungspraxis (Volltexte oder Auszüge).
- Kommentar- und Aufsatz-Auszüge im Bearbeiterstil.
- Format- und Layout-Vorlagen (Briefkopf-DOCX, Schriftarten, Nummerierung).
- Optional: typische Mahnschreiben, Verzugsbriefe, RVG-Berechnungen.
Bei Schweigen mit den im Plugin liegenden Leervorlagen unter `assets/vorlagen-leer/` arbeiten und das im Endprodukt transparent kennzeichnen.
**Schritt 3 — Extraktion der Hausregeln**
Aus dem Lernkorpus extrahieren (Zusammenfassung am Schluss dem Nutzer vorlegen):
- Aufbau der Klageschrift (Rubrum, Anträge, Begründung, Beweismittel, Anlagen, Schluss).
- Standardklauseln: Antragswortlaut, Zinsantrag, vorgerichtliche RA-Kosten als Nebenforderung, Mahnverzugsbeginn, Verzugszinsen (§§ 286, 288 BGB), Verzugsschaden (§ 280 BGB).
- Tonalität: knapp/ausführlich; aktiv/passiv; Direktanrede des Gerichts.
- Zitierweise: Pinpoint, Randnummer, jüngere BGH-Entscheidungen zuerst, deutsche Kommentartradition.
- Belegmuster: bevorzugte Fundstellen für Standardprobleme (Verzug, Beweislast, RVG-VV-Nrn., Anwaltskosten als Verzugsschaden BGH NJW 2008, 1888; Mahnung BGH NJW 2008, 50).
- Anlagenstrategie und Anlagensigel (K1, K2, …).
**Schritt 4 — Hauseigene Standardvorlage erzeugen**
Aus den Hausregeln eine **generische Klage-Vorlage** schreiben:
- Format: Markdown (Vorlage in `assets/vorlagen-leer/standardklage.md`) und parallel DOCX (über `office/docx`-Skill). Layout aus dem mitgelieferten Briefkopf, sonst Klotzkette-Default.
- Platzhalter strikt in geschweiften Doppelklammern: `{{kanzlei.briefkopf}}`, `{{rubrum.klagepartei}}`, `{{rubrum.beklagte}}`, `{{rubrum.bevollmaechtigte}}`, `{{gericht.bezeichnung}}`, `{{gericht.adresse}}`, `{{gericht.bea_safe_id}}`, `{{streitwert.eur}}`, `{{antrag.hauptforderung}}`, `{{antrag.zinsen}}`, `{{antrag.kosten}}`, `{{sachverhalt}}`, `{{rechtliche_wuerdigung}}`, `{{anlagen.liste}}`, `{{ort_datum}}`, `{{unterschrift}}`.
- Standardabschnitte enthalten Hausregel-Bausteine.
**Schritt 5 — Sachverhalt einsammeln**
Strukturierte Rückfragen (alle als Liste auf einmal stellen, damit der Nutzer in einem Schwung antworten kann):
- Forderungsgrund (Kauf, Werkvertrag, Dienstvertrag, Darlehen, Miete, sonstiges) mit kurzer Vertragsbeschreibung.
- Beklagte(r): Name, Anschrift, Rechtsform, ggf. gesetzliche Vertretung; **Anschrift exakt** für die Zuständigkeitsprüfung.
- Hauptforderung in EUR, Fälligkeitsdatum, etwaige Teilzahlungen.
- Mahnungen mit Datum, Form und Inhalt; Mahnverzugseintritt.
- Vorgerichtliche RA-Kosten als Nebenforderung (Geschäftsgebühr Nr. 2300 VV RVG, Anrechnung Vorbem. 3 Abs. 4 VV RVG).
- Beweismittel: Urkunden, Zeugen, Sachverständige, Parteivernehmung, Augenschein.
- Besonderheiten: Verbrauchereigenschaft des Beklagten, AGB-Gerichtsstand, Erfüllungsort, ausländische Beteiligung (EuGVVO/Brüssel Ia VO 1215/2012).
Zusätzlich Dokumenten-Drop akzeptieren (Rechnungen, Mahnungen, Korrespondenz). Aus diesen Dokumenten Felder automatisch befüllen und die Belegung jeweils kennzeichnen.
**Schritt 6 — Zuständigkeit online prüfen (Pflicht)**
Pflichtschritt vor Auslieferung. Reihenfolge:
1. **Sachliche Zuständigkeit** rechnerisch: Streitwert ≤ 5.000 EUR → AG (§ 23 Nr. 1 GVG); > 5.000 EUR → LG (§ 71 GVG). Sondertatbestände beachten: Mietsachen Wohnraum AG (§ 23 Nr. 2a GVG), Familiensachen FamG, Handelssachen Kammer für Handelssachen (§§ 95, 96 GVG).
2. **Örtliche Zuständigkeit** rechtlich: allgemeiner Gerichtsstand der Beklagten (§§ 12, 13 ZPO). Erfüllungsort (§ 29 ZPO) prüfen — bei Geldschulden Sitz der Klagepartei nur bei qualifizierter Schickschuld, sonst Wohnsitz Beklagte. Verbraucher-Sondertatbestand § 29c ZPO. AGB-Gerichtsstand prüfen, aber bei Verbrauchern nach § 38 ZPO unwirksam.
3. **Online-Adressrecherche** (immer ausführen):
- Für NRW-Anschriften: `pplx content fetch "https://www.justizadressen.nrw.de/de/justiz/suche?suchbegriff=<PLZ_oder_Ort>"` (PLZ oder Ort der Beklagten). Wenn PLZ allein nicht reicht, mit Ort nachfassen.
- Bundesweit ergänzend: `pplx content fetch "https://www.justiz.de/onlinedienste/gerichtsverzeichnis_und_orga/index.php"` und Landes-Justizportale.
- Treffer prüfen und Bezeichnung, Postanschrift, Telefax und — wo bekannt — die BeA-EGVP-SAFE-ID (Bundesweites elektronisches Adressverzeichnis SAFE, abrufbar in beA bzw. unter justiz.de) einsetzen. Wenn keine SAFE-ID gelistet, mit dem Hinweis „EGVP-Adresse über beA-Adressbuch (SAFE-ID) zu ergänzen" markieren.
4. Quelle und Abrufdatum stets im Output ausweisen (Anlage `Zuständigkeitsprüfung`).
**Schritt 7 — Klageschrift erzeugen**
- **Immer**: `Klage-<Beklagte>-<YYYYMMDD>.docx` (über `office/docx`) und Spiegel `Klage-<Beklagte>-<YYYYMMDD>.md`.
- Anlagenkonvolut als Liste mit K-Sigeln; Anlagenkopfbogen optional.
- **Padlet** (auf Wunsch): single-file HTML aus `assets/padlet/klage-padlet.html` mit Live-Vorschau und Pflegefeldern; speichert in `localStorage`.
**Schritt 8 — Eigenes Mini-Plugin als ZIP erzeugen**
Aus den Hausregeln und der Standardvorlage wird ein eigenes Plugin gepackt:
- Skript: `python scripts/plugin_aus_hausregeln.py --kanzlei "<Name>" --vorlage <pfad.md> --regeln <regeln.json> --ziel <ziel.zip>`.
- Inhalt des ZIP:
- `klagewerkstatt-<slug>/.claude-plugin/plugin.json` (Name `klagewerkstatt-<slug>`, Version 0.1.0).
- `klagewerkstatt-<slug>/skills/klage-erstellen/SKILL.md` (siehe Schwester-Skill `klage-aus-eigenem-skill` als Bauanleitung; im erzeugten Plugin lebt die Skill-Datei eigenständig).
- `klagewerkstatt-<slug>/assets/vorlage/standardklage.md` und `.docx`.
- `klagewerkstatt-<slug>/references/hausregeln.json`, `belegmuster.md`, `anlagenliste.md`, `zustaendigkeit-quellen.md`.
- `klagewerkstatt-<slug>/README.md` mit Direkt-Download-Hinweis und Installationsanleitung.
- ZIP-Dateiname `klagewerkstatt-<slug>.zip`. Datei dem Nutzer zum Download geben mit Installationsanweisung für Claude Code (`Customize Plugins → Install from .zip`).
**Schritt 9 — Memo (nur auf Anfrage)**
> Soll ich zusätzlich ein Kurz-Memo im Gutachtenstil mit Anspruchsgrundlagen, Beweislage und Prozessrisiken erstellen?
Bei Zustimmung: zwei Seiten, DOCX oder Markdown.
## Rechtlicher Rahmen
### Pflichtinhalte und Form der Klageschrift
- **§ 253 Abs. 2 ZPO** Klageinhalt (Parteien, Gericht, Anträge, Sachverhalt, Beweismittel).
- **§ 130 ZPO** Form der Schriftsätze; **§ 130a ZPO** elektronisches Dokument; **§ 130d ZPO** Pflicht zur elektronischen Einreichung für Rechtsanwältinnen und Rechtsanwälte (beA).
- **§ 78 ZPO** Anwaltszwang vor LG aufwärts.
- **§ 12 RVG / Anlage 2 VV RVG**: Gebührentabelle; **Nr. 2300 VV RVG** Geschäftsgebühr; **Vorbem. 3 Abs. 4 VV RVG** Anrechnung 0,65; **Nr. 3100 VV RVG** Verfahrensgebühr.
### Sachliche Zuständigkeit
- **§ 23 Nr. 1 GVG** AG bis 5.000 EUR.
- **§ 71 GVG** LG über 5.000 EUR.
- **§ 23 Nr. 2a GVG** Wohnraummietsachen AG ohne Streitwertgrenze.
### Örtliche Zuständigkeit
- **§§ 12, 13 ZPO** allgemeiner Gerichtsstand der Beklagten.
- **§ 17 ZPO** Sitz juristischer Personen.
- **§ 29 ZPO** besonderer Gerichtsstand des Erfüllungsortes.
- **§ 29c ZPO** Verbraucherverträge (Wohnsitz Verbraucher).
- **§ 38 ZPO** Gerichtsstandsvereinbarung (zwischen Vollkaufleuten zulässig, gegenüber Verbraucher gemäß § 38 Abs. 3 ZPO eingeschränkt).
- **§ 17 ZPO** Sitz; **§ 24 ZPO** dinglicher Gerichtsstand.
- Bei grenzüberschreitenden Sachverhalten **Brüssel Ia VO (EU) 1215/2012**, insb. Art. 7 Nr. 1 lit. a und b (Erfüllungsort), Art. 1719 (Verbrauchersachen), Art. 25 (Gerichtsstandsvereinbarung).
### Materielle Anspruchsgrundlagen (Standard)
- **§ 433 Abs. 2 BGB** Kaufpreisanspruch; **§ 631 Abs. 1 BGB** Werklohnanspruch; **§ 611a Abs. 2 BGB** Vergütungsanspruch Dienstvertrag; **§ 535 Abs. 2 BGB** Miete; **§ 488 BGB** Darlehensrückzahlung.
- **§ 286 BGB** Verzug; **§ 288 Abs. 1 BGB** Verzugszinsen 5 Prozentpunkte über Basiszins; **§ 288 Abs. 2 BGB** 9 Prozentpunkte zwischen Unternehmern für Entgeltforderung; **§ 288 Abs. 5 BGB** Verzugspauschale 40 EUR (B2B).
- **§ 280 BGB** Schadensersatz inkl. vorgerichtlicher RA-Kosten.
### Leitentscheidungen
- BGH, Urt. v. 22.01.2008 VIII ZR 6/06, NJW 2008, 1888 — vorgerichtliche RA-Kosten als Verzugsschaden.
- BGH, Urt. v. 04.10.2007 III ZR 180/06, NJW 2008, 50 — Anforderungen an Mahnung.
- BGH, Urt. v. 25.06.2020 VII ZR 308/19, NJW 2020, 2884 — Verzugspauschale § 288 Abs. 5 BGB nicht im Arbeitsrecht; Reichweite.
- BGH, Beschl. v. 23.06.2022 V ZB 12/22 — Anforderungen elektronische Einreichung § 130a ZPO.
- BGH, Beschl. v. 31.01.2023 XI ZB 23/22 — Sorgfaltspflichten bei beA-Übermittlung.
### Kommentarliteratur (Bearbeiterstil)
- *Greger*, in: Zöller, ZPO, 35. Aufl. 2024, § 253 ZPO Rn. 160.
- *Toussaint*, in: BeckOK ZPO, 53. Ed. Stand 03.2025, § 130a Rn. 135.
- *Patzina*, in: MüKo-ZPO, 6. Aufl. 2024, §§ 12, 13 Rn. 125.
- *Grüneberg*, in: Grüneberg, BGB, 84. Aufl. 2025, § 286 Rn. 135; § 288 Rn. 118.
## Ausgabeformat
1. **Klageschrift** als DOCX (`Klage-<Beklagte>-<YYYYMMDD>.docx`) und Markdown-Spiegel.
2. **Anlage Zuständigkeitsprüfung** mit Online-Quellen und Abrufdatum.
3. **Hauseigenes Mini-Plugin** als ZIP (`klagewerkstatt-<slug>.zip`) mit Standardvorlage, Hausregeln und sofort installierbarem Skill `klage-erstellen`.
4. **Optional**: HTML-Padlet zur Pflege, DOCX-Anlagenkopfbogen, Memo im Gutachtenstil.
## Quellenpflicht
Mindestens zwei BGH-Belege (jüngere zuerst) und zwei Kommentarbelege im Bearbeiterstil. Online-Adressquelle (justizadressen.nrw.de bzw. justiz.de) mit Abrufdatum zwingend. PDFs unter `references/rechtsprechung/` belegen die zitierten Leitentscheidungen.
## Übergabe
- Bei drohender Zahlungsunfähigkeit der Beklagten an `liquiditaetsplanung` (Plugin) zur Schnellprüfung.
- Bei einstweiligem Rechtsschutz/Mahnverfahren an `prozessrecht` (Plugin) verweisen.
- Wenn der Nutzer beim nächsten Mal nur den Sachverhalt einreichen will: Schwester-Skill `klage-aus-eigenem-skill` mit dem im Schritt 8 erzeugten Plugin verwenden.