# Honorar Mahnwesen

> Wertet offene Posten (OPOS-CSV oder EXTF-Buchungsstapel) deterministisch aus — offener Restbetrag, Tage seit Fälligkeit, konfigurierbare Mahnstufen, Priorisierung (Betrag × Alter) — und draftet daraus interne Zahlungserinnerungen/Mahnungen der Kanzlei an eigene Mandanten. Triggert bei Mahnwesen, offene Rechnungen, Zahlungserinnerung, überfällige Forderungen, offene Posten, OPOS.

- **Type:** Skill
- **Install:** `agentstack add skill-eliasreiche-legal-ops-germany-honorar-mahnwesen`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [eliasreiche](https://agentstack.voostack.com/s/eliasreiche)
- **Installs:** 0
- **Category:** [Data & Analytics](https://agentstack.voostack.com/c/data-and-analytics)
- **Latest version:** 0.1.0
- **License:** Apache-2.0
- **Upstream author:** [eliasreiche](https://github.com/eliasreiche)
- **Source:** https://github.com/eliasreiche/legal-ops-germany/tree/main/plugins/legal-ops/skills/honorar-mahnwesen

## Install

```sh
agentstack add skill-eliasreiche-legal-ops-germany-honorar-mahnwesen
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# honorar-mahnwesen

> **Status: `beta`** — automatisierte Tests (Parser-Round-Trip gegen den
> EXTF-Writer, OPOS-Auswertung, CLI-Reject-Matrix) laufen grün in CI. Noch
> **nicht** händisch abgenommen; `status: getestet` vergibt allein der
> Maintainer nach einer Live-Abnahme (Reifegrad-Leiter, CONVENTIONS.md).

## Zweck

Wertet offene Honorarforderungen der Kanzlei aus und bereitet interne
Mahn-/Erinnerungsschreiben vor. Der deterministische Kern
[`core/calc/opos/`](../../core/calc/opos/README.md) berechnet je Posten:

- **offener Restbetrag** = Rechnungsbetrag − bereits gezahlt (`Decimal`, nie `float`),
- **Tage seit Fälligkeit** = Stichtag − Fälligkeitsdatum (reine Kalenderdifferenz),
- **Mahnstufe** aus konfigurierbaren Tagesschwellen (Default: Erinnerung ab
  Fälligkeit, 1. Mahnung ab 14 Tagen, 2. Mahnung ab 30 Tagen),
- **Priorität** = offener Restbetrag × Tage seit Fälligkeit (Sortierung der Arbeitsliste).

**Berufsrechts-Grenze (RDG):** internes Forderungsmanagement **in eigener
Sache** — kein Inkasso für Dritte, keine Rechtsdienstleistung. Der Skill sagt
nicht, ob rechtlich Verzug eingetreten ist; „Tage seit Fälligkeit" ist eine
kalendarische Größe, keine Verzugsfeststellung (§ 286 BGB).

**Bewusst zurückgestellt (v1):**
- **Verzugszinsen (§ 288 BGB)** — bräuchten gepflegte Basiszinssatz-Stammdaten
  (Halbjahres-Sätze der Deutschen Bundesbank); erscheinen im Report als
  **Hinweis-Lücke**, nie als Zahl.
- **Rechtliche Verzugsfeststellung (§ 286 BGB)** — u. a. verbraucherabhängig
  (Verzug ohne Mahnung erst 30 Tage nach Fälligkeit *und* Hinweis bei
  Verbrauchern, § 286 Abs. 3 BGB); bleibt ausdrücklich Kanzleisache.

## Eingaben (Datei-Kontrakt, P2)

Genau **eine** Quelle je Lauf (vollständiges Schema: [`schema/README.md`](schema/README.md)):

| Quelle | Flag | Format | Charakter |
|---|---|---|---|
| OPOS-Liste | `--opos-csv` | `.csv` (Semikolon, Komma-Dezimal, Kopfzeile) | **präzise Primärquelle** — je Zeile ein Posten mit Fälligkeitsdatum |
| Buchungsstapel | `--extf` | DATEV-EXTF (Format 700, Kategorie 21) | **ergänzend** — vereinfachte Belegfeld-1-Aggregation, kein Fälligkeitsdatum im EXTF |

Zusätzlich immer `--stichtag JJJJ-MM-TT` (Bezugstag für „Tage seit
Fälligkeit" — aus der Eingabe, **nie** aus der Wall-Clock, damit gleiche
Eingabe denselben Report liefert). Optional `--mahnstufen-config `
(Tagesschwellen überschreiben) und `--zahlungsziel-tage ` (nur `--extf`,
Default 14).

Die EXTF-Quelle liest der strikte Parser
[`core/calc/extf/parser.py`](../../core/calc/extf/parser.py) (das getestete
Gegenstück zum `datev-export`-Writer). Fehlende Angaben (Mandant/Fälligkeit
im EXTF, Buchungen ohne Belegfeld 1) werden als **Lücke** bzw. unter
`nicht_zuordenbar` ausgewiesen — nie geraten.

## Ablauf

1. **Claude ruft den Executor auf** (kein eigenes Rechnen/Formatieren):

   ```bash
   # Präzise Quelle (OPOS-CSV):
   python3 ${CLAUDE_PLUGIN_ROOT}/skills/honorar-mahnwesen/executor.py \
     --opos-csv  --stichtag 2026-07-16 \
     --output 

   # Ergänzende Quelle (EXTF-Buchungsstapel):
   python3 ${CLAUDE_PLUGIN_ROOT}/skills/honorar-mahnwesen/executor.py \
     --extf  --stichtag 2026-07-16 --zahlungsziel-tage 14 \
     --output 
   ```

2. **Bei Exit 0**: Claude liest den JSON-Report und stellt die nach Priorität
   sortierte Arbeitsliste zusammen (Rechnungsnummer, Mandant, offener Rest,
   Tage seit Fälligkeit, Mahnstufe) — und weist **immer** auf die
   Zurückstellungen hin: keine Verzugszinsen (§ 288 BGB), keine
   Verzugsfeststellung (§ 286 BGB), Versand ist Kanzlei-Entscheidung.
3. **Schreiben-Entwürfe (optional):** Auf Wunsch draftet Claude je Posten eine
   **Zahlungserinnerung/Mahnung** — ausschließlich aus Executor-Werten. Jeder
   Betrag, jedes Datum und jede „Tage seit Fälligkeit"-Angabe im Entwurf ist
   ein Executor-Ergebnis; Claude erfindet keine Beträge/Fristen und trägt
   keine Verzugszinsen ein. Bausteine siehe unten. Der Entwurf geht nie ohne
   Kanzlei-Freigabe hinaus.
4. **Bei Exit 2** (Eingabe-/Formatfehler): Claude gibt die Fehlermeldung
   unverändert wieder und korrigiert die Eingabe bzw. fragt nach — er rät
   keinen Ersatz-Betrag, kein Ersatz-Datum und erzeugt keine Teil-Datei.

## Output-Format

Ein JSON-Report aus [`executor.py`](executor.py) / [`core/calc/opos/rechner.py`](../../core/calc/opos/rechner.py) (P3):

- `zusammenfassung` (Anzahl offen, Summe offen, ausgeglichen, nicht zuordenbar),
- `offene_posten` — nach Priorität absteigend; je Posten offener Rest, Tage
  seit Fälligkeit, Mahnstufe, Priorität, `verzugszins_hinweis` (immer Lücke,
  nie Zahl), `hinweise[]`,
- `ausgeglichene_posten`, `nicht_zuordenbar` (EXTF-Buchungen ohne Belegfeld 1),
- alle Zahlen als Decimal-Strings (keine float-Rundung).

Beispiel-Eingabe: [`schema/beispiel-opos.csv`](schema/beispiel-opos.csv).
Deterministik-Grenze (P3): jeder Zahlen-/Datums-/Geldwert stammt aus dem
Executor und ist als solcher markiert (`meta.deterministik`).

## Schreiben-Bausteine (Entwurf, kein Template-Engine)

Claude setzt den Entwurf aus diesen Bausteinen zusammen und füllt **nur**
Executor-Werte ein (Platzhalter in `{}`):

- **Zahlungserinnerung** (freundlich): „Sehr geehrte/r {mandant}, zu unserer
  Rechnung {rechnungsnummer} vom {rechnungsdatum} ist ein Betrag von
  {offener_rest} € offen (fällig seit {faelligkeitsdatum}, {tage} Tage). Wir
  bitten um Ausgleich bis {…, von der Kanzlei zu setzen}."
- **1./2. Mahnung** (bestimmter): zusätzlich Verweis auf die vorherige
  Erinnerung; **keine** Zinsforderung durch den Skill (§ 288 BGB bleibt
  Kanzleisache), **keine** Verzugsbehauptung.

Jeder Norm-Verweis im Entwurf trägt einen 3-Zustands-Marker
(CONVENTIONS.md): § 286 BGB ⚠️ (nicht prüfbar — der Executor prüft keinen
Verzug), § 288 BGB ⚠️ (bewusst nicht berechnet). Verifizierbar über die
BGB-Standard-Registry des Querschnitts-Skills
[`zitat-pruefer`](../zitat-pruefer/SKILL.md).

## Grenzen (bewusst)

- **Keine Verzugszinsen** (§ 288 BGB ⚠️) und **keine** rechtliche
  Verzugsfeststellung (§ 286 BGB ⚠️) — nur „Tage seit Fälligkeit".
- **EXTF-Quelle ist vereinfacht** (Belegfeld-1-Saldo, Zahlungsziel-Annahme
  statt echtem Fälligkeitsdatum) — präzise Quelle ist die OPOS-CSV.
- **Kein Inkasso, keine Rechtsdienstleistung** — nur eigenes
  Forderungsmanagement der Kanzlei.
- **Kein Versand** — der Skill erzeugt Entwürfe; Mahnung/Versand entscheidet
  die Kanzlei.
- **`status: getestet` erst nach Live-Abnahme** durch den Maintainer — nie
  durch automatisierte Tests allein.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [eliasreiche](https://github.com/eliasreiche)
- **Source:** [eliasreiche/legal-ops-germany](https://github.com/eliasreiche/legal-ops-germany)
- **License:** Apache-2.0

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-eliasreiche-legal-ops-germany-honorar-mahnwesen
- Seller: https://agentstack.voostack.com/s/eliasreiche
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
