26,461 skills for German lawyers: inside claude-fuer-deutsches-recht

June 23, 2026

|repo-review

by Florian Narr

26,461 skills for German lawyers: inside claude-fuer-deutsches-recht

claude-fuer-deutsches-recht is a Claude Code plugin marketplace for German legal practice: 235 installable plugins, one per practice area (Arbeitsrecht, Mietrecht, Insolvenzrecht, DSGVO, and so on), each shipping a set of SKILL.md files that walk through a specific legal task.

What it does

Install a plugin — say agb-recht-pruefer for AGB (standard terms) review — and Claude gets a library of narrow, structured workflows: check a clause against §§ 305-310 BGB, redline it, propose a compliant replacement, cite the source. Multiply that by 235 practice areas and you get the current count: 26,461 SKILL.md files, all in German, all reviewed against German civil procedure and citation conventions.

Why I starred it

I don't practice German law. What caught my eye is the scale of the operation and how seriously the maintainer treats the failure mode that matters most here: a legal AI tool that confidently hallucinates a case citation or an outdated statute limit. Legal content is exactly the domain where "mostly right" is worse than useless, and the repo's engineering is visibly organized around that constraint rather than around feature count.

How it works

Every skill follows a fixed contract, spelled out in the repo's own CLAUDE.md. Frontmatter is locked to exactly name and description — no triggers, no model, no extra fields — and the body follows a mandated five-part structure: purpose, inputs, checklist, source-citation requirement, output format. Here's agb-recht-pruefer/skills/agb-abtretung/SKILL.md in full:

---
name: agb-abtretung
description: "Wenn es um Abtretung in AGB-Recht-Prüfer geht: ordnet
  Sachverhalt, Norm, Beweislast, Gegenargumente und nächsten Schritt..."
---

followed by a Prüfpfad (check path) that walks: secure the current statute text from Gesetze im Internet, establish scope, interpret against the customer, run the content-control test under § 307 BGB, then §§ 308-309, then work out the legal consequence. It's the same discipline as a well-typed function signature, applied to legal reasoning steps.

The part that made me stop scrolling is scripts/validate-current-law-sentinels.py — 2,026 lines of regex patterns, each one a specific hallucination the maintainer caught and fixed once, turned into a permanent regression test:

Sentinel(
    "alte Kleinunternehmergrenzen 22.000/50.000 Euro",
    re.compile(
        r"(?:UStG|Kleinunternehmer(?:regelung)?).{0,180}"
        r"22[.]000.{0,180}50[.]000",
        re.IGNORECASE | re.DOTALL,
    ),
),

That sentinel exists because an LLM once wrote the old (pre-reform) small-business VAT thresholds into a skill. Instead of just fixing the one file, the maintainer wrote a check that fails CI if that specific wrong number pattern — or a fabricated case citation like 10 O 306/25, or a wrong date paired with a real BFH decision — ever reappears anywhere in the 38,000-file tree. It's the same idea as a snapshot test, but for legal facts instead of UI markup.

Quality is graded, not just linted. scripts/run-eval.py reads a rubric.yaml per test case (testakten/) and runs typed checks — file_exists, text_contains, regex_match, yaml_field_equals, human_review — against the artifacts a skill is supposed to produce, explicitly modeled on Harvey's LAB benchmark methodology. EVAL_RESULTS.md reports pass counts per case; as of the last run, 205 of 205 rubric-bearing test files pass everything automatable.

The most candid file in the repo isn't a skill at all. anthropic-lessons/00-analyse-anthropic-vs-uns.md is the maintainer's own gap analysis against Anthropic's reference claude-for-legal repo, tracked on an isolated branch:

Anthropic baut wenige tiefe Skills mit reicher Infrastruktur drumherum. Wir bauen viele kompakte Skills mit minimaler Infrastruktur.

At that snapshot (v52.8.0), their repo had 112 plugins and 3,670 skills against Anthropic's 13 plugins and 151 skills — already ahead on breadth, openly behind on depth (no persistent per-plugin CLAUDE.md from a cold-start interview, no MCP wiring, no shared company-profile.md). It's rare to see a maintainer publish a structured "here's where the reference implementation beats us" doc inside their own repo.

One more file worth a look: scripts/orchestrate.py, a reference event loop for cross-agent handoffs, ships with an explicit prompt-injection threat model in its docstring — closed-schema intents as the primary control, target-agent allowlisting, and a denylist explicitly labeled "do not rely on it" for defense in depth. Given the domain (documents from opposing counsel, scanned intake files), taking injected instructions seriously isn't optional.

Using it

Everything installs through the standard plugin mechanism:

# Grab one plugin's ZIP from the latest release and add it via
# Customize -> Plugins, or point a marketplace sync at the repo's
# .claude-plugin/marketplace.json
gh api repos/Klotzkette/claude-fuer-deutsches-recht/contents/.claude-plugin/marketplace.json \
  -q .content | base64 -d | head -20

Each plugin also ships a standalone "Werkstatt" (deep) and "Schnellstart" (quick-start) Markdown prompt under 7,500 characters, usable without installing anything — just paste into any chat surface.

Rough edges

The whole tree is 1.4 GB and 38,000+ files — cloning it is not casual. Everything is German-only by design, so it's not a drop-in for other jurisdictions even though the methodology (claim-basis analysis, four-method interpretation) would translate. And test coverage leans structural: most rubric.yaml checks confirm a file exists or a pattern appears, not that the legal reasoning inside is correct — the repo says as much, repeatedly, in its own disclaimers about § 203 StGB confidentiality and DSGVO compliance being the user's responsibility, not something the skills verify.

Bottom line

If you're building AI tooling for a regulated, citation-heavy domain, this is worth reading past the README for the engineering pattern: encode every caught hallucination as a permanent regex sentinel, grade outputs with typed rubrics instead of vibes, and publish your own gaps against the reference implementation instead of hiding them.

Klotzkette/claude-fuer-deutsches-recht on GitHub
Klotzkette/claude-fuer-deutsches-recht