Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Österreichische Rechtsprechung über die offene RIS-API (data.bka.gv.at v2.6) thematisch durchsuchen — OGH, OLG, LG, BG, VfGH, VwGH, BVwG, LVwG, DSB, GBK u. a. Liefert pro Treffer Metadaten (Geschäftszahl, Entscheidungsdatum, Leitsatz) und einen Direkt-Link in das RIS. TRIGGER bei thematischen Fragen wie "Gibt es OGH-Judikatur zu Mietzinsminderung in der Pandemie?", "Aktuelle BVwG-Entscheidungen zu Afghanistan-Asyl", "Was sagt der VfGH zur Versammlungsfreiheit seit 2020?". NICHT TRIGGERN für gezi
.claude/skills/thomasmoreai-ris-rechtsprechung/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 271% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 148% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 286% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 328% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 228% | 0% |
Du recherchierst österreichische Gerichtsentscheidungen über die offene RIS-API v2.6 (Rechtsinformationssystem des Bundes, betrieben vom Bundeskanzleramt). Die API ist authentifizierungsfrei und liefert JSON.
Scope dieses Skills: nur Rechtsprechung (Judikatur), nur Metadaten + Link. Es wird kein Volltext heruntergeladen oder konvertiert. Bundes- und Landesrecht sind nicht enthalten.
Hauptpfad — thematische / explorative Recherche im Chat:
--suchworte, --schlagworte)--von / --bis)--applikation)Beispiele, die diesen Skill triggern:
Sekundärpfade (technisch unterstützt, aber meist im RIS-Web-Frontend schneller — nur nutzen, wenn der User explizit darum bittet oder die Suche aus dem Chat-Kontext heraus eindeutig per Skript schneller geht):
--geschaeftszahl)--norm "ABGB §1319a")--rechtssatznummer RS0123456)Norm-Suche → Rechtssätze: bei reiner --norm-Suche (ohne --suchworte) liefert die OGD-API per Default überwiegend Rechtssätze, kaum Volltext-Entscheidungen — Rechtssätze sind im Norm-Index hinterlegt, Entscheidungstexte erst über die zusätzlichen Flags SucheNachRechtssatz / SucheNachText. Das Skript sendet diese Flags bewusst nur bei --suchworte-Suchen, weil bei reiner Norm-Recherche Rechtssätze i. d. R. die gewollte Trefferart sind.
Nicht anwenden, wenn:
konkreten Entscheidung (z. B. „Was sagt die Lehre zu §..." → Kommentar, nicht RIS),
Gerichte; ggf. wird die österreichische Folgejudikatur gesucht — dann Skill anwenden, aber den Hinweis geben),
enthält nur veröffentlichte Entscheidungen).
https://data.bka.gv.at/ris/api/v2.6/GET /JudikaturAccept: application/json)Applikation (genau einer):
| Wert | Gericht/Behörde | |---|---| | Justiz | OGH, OLG, LG, BG (Zivil-/Strafgerichtsbarkeit) — Standard | | Vfgh | Verfassungsgerichtshof | | Vwgh | Verwaltungsgerichtshof | | Bvwg | Bundesverwaltungsgericht | | Lvwg | Landesverwaltungsgerichte | | Dsk | Datenschutzbehörde (vormals -kommission) | | AsylGH | Asylgerichtshof (historisch, bis 2013) | | Normenliste | Normprüfungs-/Normenliste | | Pvak | Personalvertretungs-Aufsichtskommission | | Gbk | Gleichbehandlungskommission | | Dok | Disziplinarkommission |
Plus mindestens einer dieser Suchparameter (sonst HTTP 400):
| Parameter | Beispiel | Hinweis | |---|---|---| | Suchworte | Mietzinsminderung | URL-encoden; * nur am Wortende; AND/OR/NOT. OGD-API-Einschränkung: nur _ein_ Platzhalter pro Wort (Web-Frontend toleriert mehrere). | | Geschaeftszahl | 5Ob234/20b | exakte Aktenzeichen-Suche | | Norm | ABGB §1319a | Format: {Gesetzeskürzel} §{Paragraph} (kanonische Zitierform) — andere Reihenfolgen wie 1319a ABGB liefern fast keine Treffer. Fehlt nur das §-Zeichen (ArbVG 105), ergänzt das Skript es automatisch und schreibt einen Hinweis in den Output. Für EU-Verordnungen (z. B. DSGVO) ist der Norm-Index unzuverlässig; lieber Volltextsuche via Suchworte. | | Rechtssatznummer | RS0123456 | bei OGH-Rechtssatz-Suche | | Schlagworte | Datenschutz | kontrolliertes RIS-Vokabular | | EntscheidungsdatumVon / Bis | 2024-01-01 | ISO-Datum |
Optional:
SucheNachRechtssatz, SucheNachText — steuern, in welchen Felderndas Suchworte-Token gesucht wird (Rechtssatz-Text vs. Entscheidungstext). Nicht ein Filter für Trefferarten — auch mit --no-rechtssatz können Rechtssatz-Dokumente zurückkommen, wenn der Suchbegriff im Volltext gefunden wurde. Das Skript sendet die Flags nur bei --suchworte-Suchen.
ImRisSeit ∈ {Undefined, EinerWoche, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr}Sortierung ∈ {Datum, Geschaeftszahl, Relevanz} — die API toleriertweitere Werte; nur die hier gelisteten sind in den RIS-Handbüchern dokumentiert. Skript-Default: setzt das Skript weder --sortierung noch --sort-direction, sortiert es nach Datum/Descending (im Chat-Kontext meist gewollt — „aktuelle Judikatur zu …"). Der API-Default Relevanz ist mit --sortierung Relevanz zurückzuholen.
SortDirection ∈ {Ascending, Descending}Pagination:
DokumenteProSeite ∈ {Ten, Twenty, Fifty, OneHundred} — Default TwentySeitennummer (1-basiert) — bei --alle-seiten der Einstiegspunkt--alle-seiten holt mehrere Seiten automatisch,bis Treffer erschöpft oder --max-seiten N (Default 5) erreicht. RIS-konforme Pause zwischen Seiten konfigurierbar via --pause-pagination (Default 1.5 s). Default-Cap: 5 × 20 = 100 Treffer. Für breite Themen-Recherchen mit --pro-seite Fifty --alle-seiten --max-seiten 5 bis zu 250 Treffer auf einmal.
Verwende immer das beigelegte Skript scripts/ris_search.py (Python 3, nur Standardbibliothek). Es kapselt URL-Bau, Pflichtparameter-Validierung, JSON-Parsing und Rendering in einem Aufruf.
--applikation + Suchparameter. Bei Unsicherheit--applikation Justiz + Volltext-Suche.
scripts/ris_search.pyrelativ zum Skill-Ordner (dem Verzeichnis, das diese SKILL.md enthält). Der absolute Pfad zum Skill-Ordner hängt von der Umgebung ab; Du als ausführendes Modell weißt, in welcher Umgebung Du läufst.
Generisches Aufrufmuster — cd in den Skill-Ordner, dann relativ aufrufen. Standard-Chat-Recherche (Themensuche mit Auto-Pagination): bash cd <skill-folder> && python scripts/ris_search.py \ --applikation Justiz \ --suchworte "Mietzinsminderung" \ --von 2020-01-01 --bis 2024-12-31 \ --pro-seite Fifty --alle-seiten --max-seiten 3 Liefert bis zu 150 Treffer, sortiert nach Datum absteigend (Default).
Python-Aufruf je Umgebung — probiere in dieser Reihenfolge: python → python3 → py -3. Üblicherweise:
python3 oder pythonpy -3 (python3 fehlt meist im PATH)Skill-Ordner je Umgebung — typische Pfade:
~/.claude/skills/ris-rechtsprechung/%USERPROFILE%\.claude\skills\ris-rechtsprechung\/mnt/skills/... oder /home/.../skills/...); folge der Pfadangabe, die Dir der Skill-Loader liefert.
Falls cd in der Umgebung nicht zur Verfügung steht (manche Sandboxes), verwende den absoluten Pfad zum Skript, z. B.: bash python "<skill-folder>/scripts/ris_search.py" --applikation Justiz ...
Ausgabe ist Markdown (Default) oder strukturiertes JSON (--json).
Leitsatz (sofern vorhanden) und RIS-Link weitergeben. Bei mehr als 10 Treffern die ersten 10 ausführlich, den Rest als Bullet-Liste.
ca. 1,5 s warten (RIS-Empfehlung).
Default (Markdown). Für Rechtssatz-Dokumente (häufigster Fall bei Norm-Suchen — Rechtssätze sind im Norm-Index hinterlegt):
**Treffer:** 7 (Seite 1, 10 pro Seite)
### 1. OGH 2 Ob 554/86 vom 28.10.1986 [Rechtssatz RS0051942]
**Norm:** ArbVG §105 Abs3 Z2 litb
- [Rechtssatz im RIS](https://www.ris.bka.gv.at/Dokument.wxe?Abfrage=Justiz&Dokumentnummer=JJR_19861028_OGH0002_0020OB00554_8600000_007)
- [Volltext der Stammentscheidung](https://www.ris.bka.gv.at/Dokument.wxe?Abfrage=Justiz&Dokumentnummer=JJT_19861028_OGH0002_0020OB00554_8600000_000)
_Auch zitiert in 21 weiteren Entscheidungen._Für Volltext-Dokumente:
### 2. OGH 5 Ob 234/20b vom 15.04.2021 [Volltext]
_Leitsatz:_ ...
**Norm:** ABGB §1119
- [Zur Entscheidung im RIS](https://ris.bka.gv.at/Dokumente/Justiz/JJT_20210415_OGH0002_.../JJT_....html)in Geschaeftszahl eine Verkettung aller zitierenden Geschäftszahlen und in Entscheidungsdatum das jüngste Update-Datum. Beides ist irreführend. Wir nutzen stattdessen Justiz.Entscheidungstexte.item[0] — die Stamm-Entscheidung — als Quelle für Heading-GZ + Datum.
DokumentUrl), nicht mehr aus der Heuristik. Die Heuristik bleibt als Fallback für seltene Sonderfälle.
Technisch.Organ (zuverlässiger alsJustiz.Gericht). Fallback auf Applikation.
[Rechtssatz RS0051942] —praktisch zum Zitieren.
Stamm zählt nicht), nur ausgegeben wenn N > 1.
--json liefert ein normalisiertes Objekt mit allen Feldern:
jsonc{ "total_hits": 7, "page": 1, "page_size": 10, "documents": [ { "dokumentnummer": "JJR_19861028_OGH0002_0020OB00554_8600000_007", "applikation": "Justiz", "gericht": "OGH", "doc_type": "Rechtssatz", // "Volltext" | "Rechtssatz" | null "rechtssatznummer": "RS0051942", // null bei Volltext-Dokumenten "geschaeftszahl": "2 Ob 554/86", // Stamm-GZ aus Entscheidungstexte[0] "geschaeftszahlen": [...], // ALLE zitierenden GZ "entscheidungsdatum": "1986-10-28", // Stamm-Datum "leitsatz": null, // Bei Rechtssätzen meist null "normen": ["ArbVG §105 Abs3 Z2 litb"], "fachgebiete": [], "entscheidungstexte_count": 22, "link": "https://www.ris.bka.gv.at/Dokument.wxe?...JJR_..._007", "volltext_url": "https://www.ris.bka.gv.at/Dokument.wxe?...JJT_..._000", "content_urls": { "html": "...", "pdf": "...", "xml": "...", "rtf": "..." } } ] }
doc_type und rechtssatznummer sind nur bei OGH/VfGH/VwGH-Dokumenten zuverlässig gesetzt (J{Court}{T|R}-Konvention). Andere Applikationen (BVWG, LVWG, DSB u. a.) folgen der Konvention nicht; dort bleibt doc_type = null.
--raw gibt die unveränderte API-Antwort aus, falls du selbst parsen willst.
Aus der Dokumentennummer ableitbar (Präfix → Pfad):
| Präfix | Pfad | |---|---| | JJT, JJR | https://ris.bka.gv.at/Dokumente/Justiz/{nr}/{nr}.html | | JFT, JFR | https://ris.bka.gv.at/Dokumente/Vfgh/{nr}/{nr}.html | | JWT, JWR | https://ris.bka.gv.at/Dokumente/Vwgh/{nr}/{nr}.html | | BVWG | https://ris.bka.gv.at/Dokumente/Bvwg/{nr}/{nr}.html | | LVWG | https://ris.bka.gv.at/Dokumente/Lvwg/{nr}/{nr}.html | | DSB | https://ris.bka.gv.at/Dokumente/Dsk/{nr}/{nr}.html | | GBK | https://ris.bka.gv.at/Dokumente/Gbk/{nr}/{nr}.html | | PVAK | https://ris.bka.gv.at/Dokumente/Pvak/{nr}/{nr}.html |
Validierung: Dokumentennummern matchen ^[A-Z][A-Z0-9_]+$, Länge 5–50. Das Skript leitet diesen Link automatisch ab und stellt ihn unter link bzw. content_urls.html bereit.
Volltext-Download ist explizit nicht Teil dieses Skills. Wenn der User den Volltext einer Entscheidung will, gib ihm den Link aus dem Trefferdatensatz und überlasse ihm das Lesen.
Bei Suchworte-Anfragen mit 0 Treffern erzeugt das Skript automatisch eine Google site:-Such-Query nach dem Muster
site:ris.bka.gv.at <Applikation> <Suchworte> [<Norm>] ["<Geschaeftszahl>"] [after:<Jahr>] [before:<Jahr>]und gibt sie zusammen mit dem Hinweis aus. Hintergrund: Google indexiert das RIS-Web-Frontend deutlich breiter als der OGD-API-Volltext-Index — insbesondere bei alten Entscheidungen (vor ca. 1990), wo der API-Volltext oft amputiert oder gar nicht durchsuchbar ist.
Wenn Du in einem Claude-Kontext mit web_search-Tool läufst: sobald Du die Query im Output siehst, übergib sie unverändert an das web_search-Tool. Aus den Treffern extrahierst Du RIS-URLs der Form https://www.ris.bka.gv.at/Dokument.wxe?Abfrage=…&Dokumentnummer=… und holst Dir bei Bedarf den Volltext mit web_fetch. Daraus baust Du dann dieselben Trefferzeilen wie aus der API-Antwort (Geschäftszahl, Datum, Leitsatz/Rechtssatz, Link).
Das Skript selbst führt keine Web-Suche aus — die Logik bleibt bei Claude. Im JSON-Output ist die Query als websearch_query-Feld verfügbar; im Markdown-Output steht sie im Hinweis-Block am Ende der Trefferliste.
Applikation).Suchworte trotz nachweisbarem Vorkommen →Bekannte Limitation des OGD-Volltext-Index, insbesondere bei alten Entscheidungen (vor ca. 1990). Der Volltext kann existieren und das Suchwort enthalten, ohne dass der API-Index ihn findet. Das Skript generiert in diesem Fall automatisch eine Google site:-Such-Query als Fallback (siehe Abschnitt Web-Search-Fallback).
--pro-seite wiederholen (das Skriptretried automatisch zwei Mal mit 2/4 s Pause).
--applikation Justiz,--suchworte ... setzen.
Im Repo liegt der Skill unter recherche-ris-rechtsprechung/skill-draft/ris-rechtsprechung/ und ist self-contained: ein Ordner mit SKILL.md und scripts/ris_search.py. Da das Skript ausschließlich die Python-Standardbibliothek nutzt, ist keine Build-Phase und keine Pip-Installation nötig.
bashmkdir -p ~/.claude/skills cp -r recherche-ris-rechtsprechung/skill-draft/ris-rechtsprechung \ ~/.claude/skills/
powershell$dest = "$env:USERPROFILE\.claude\skills" New-Item -ItemType Directory -Force -Path $dest | Out-Null Copy-Item -Recurse -Force ` "recherche-ris-rechtsprechung\skill-draft\ris-rechtsprechung" ` $dest
bash cd recherche-ris-rechtsprechung/skill-draft/ zip -r ris-rechtsprechung.zip ris-rechtsprechung/ PowerShell: powershell Compress-Archive -Path "recherche-ris-rechtsprechung\skill-draft\ris-rechtsprechung" -DestinationPath ris-rechtsprechung.zip -Force
ZIP-Datei auswählen.
Web search & code execution → Network access die folgenden Hosts freigeben. Falls Claude.ai Wildcards akzeptiert, deckt `.bka.gv.at alle drei mit einem Eintrag ab.
data.bka.gv.at — OGD-API (Pflicht; ohne das blockt die Sandboxalle Skript-Aufrufe).
ris.bka.gv.at — RIS-Direkt-HTML-URLs der Form/Dokumente/Justiz/JJT_…/JJT_….html (abgeleitete „Volltext (vermutet)"-Links bei Rechtssatz-Treffern; Hinweis-Link auf die RIS-Web-Suche https://www.ris.bka.gv.at/Judikatur/ bei 0 Volltext-Treffern).
www.ris.bka.gv.at — Dokument.wxe?…-URLs, die die API selbstin der Trefferliste zurückgibt.
ris-rechtsprechung/
├── SKILL.md
└── scripts/ris_search.pyVoraussetzung: Python ≥ 3.9 in der ausführenden Umgebung. Keine Pip-Pakete nötig.
Die über die OGD-Schnittstelle bezogenen RIS-Daten stehen unter Creative Commons Namensnennung 4.0 International (CC BY 4.0). Bei Wiedergabe ist die Quelle zu nennen — das Skript hängt deshalb an jeden Markdown-Output automatisch eine Attribution-Zeile (Quelle: RIS, Bundeskanzleramt — CC BY 4.0) und im JSON-Output ein attribution-Feld.
Rechtlich verbindlich ist laut Bundeskanzleramt ausschließlich der Wortlaut im Bundesgesetzblatt (Applikation „Bundesgesetzblatt authentisch") bzw. in den jeweiligen Landesgesetzblättern. Der OGD-Datenbestand wird ohne Gewähr für Richtigkeit, Aktualität oder Vollständigkeit bereitgestellt. Wenn Du RIS-Treffer im Chat ausgibst, formuliere entsprechend — die zurückgelieferten Texte sind Recherchehilfe, keine authentische Rechtsquelle.
Massenabfragen: ein durchschnittlicher Skill-Aufruf (bis 5 Seiten × 100 Treffer) ist unbedenklich. Wer den Skill systematisch über den Tag verteilt nutzt oder --max-seiten deutlich hochdreht, sollte das RIS-Team unter ris.it@bka.gv.at vorab informieren (siehe OGD-FAQ), um nicht versehentlich als DDoS-Verkehr klassifiziert zu werden.
https://data.bka.gv.at/ris/ogd/v2.6/Documents/Dokumentation_OGD-RIS_API.pdfhttps://www.ris.bka.gv.at/RisInfo/OGD-FAQ.pdfhttps://www.data.gv.at/katalog/dataset/ris2_6shrinkwrap-legal/shrinkwrap-legal-api (Java/Spring)philrox/ris-mcp-ts (TypeScript MCP-Server)ris.it@bka.gv.at| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 21,723 | 8,228 | -62% | 1 | 1 | 0% | 3,790 | 6,533 | +72% | 0 | 0 | — |
case-02 | fail→fail | 23,080 | 125,547 | +444% | 1 | 1 | 0% | 3,685 | 6,491 | +76% | 0 | 0 | — |
case-03 | fail→fail | 20,684 | 16,766 | -19% | 1 | 1 | 0% | 3,883 | 6,466 | +67% | 0 | 0 | — |
case-04 | fail→fail | 7,267 | 6,658 | -8% | 1 | 1 | 0% | 1,300 | 7,215 | +455% | 0 | 0 | — |
case-05 | fail→fail | 17,445 | 9,768 | -44% | 1 | 1 | 0% | 3,250 | 6,809 | +110% | 0 | 0 | — |
case-06 | fail→fail | 19,714 | 32,621 | +65% | 1 | 1 | 0% | 3,424 | 11,827 | +245% | 0 | 0 | — |
case-07 | fail→pass | 12,561 | 5,682 | -55% | 1 | 1 | 0% | 1,961 | 7,268 | +271% | 0 | 0 | — |
case-08 | fail→pass | 16,614 | 5,811 | -65% | 1 | 1 | 0% | 2,942 | 7,283 | +148% | 0 | 0 | — |
case-09 | fail→pass | 11,969 | 3,392 | -72% | 1 | 1 | 0% | 1,713 | 6,605 | +286% | 0 | 0 | — |
case-10 | fail→fail | 11,362 | 7,573 | -33% | 1 | 1 | 0% | 2,148 | 6,491 | +202% | 0 | 0 | — |
case-11 | pass→pass | 8,599 | 3,517 | -59% | 1 | 1 | 0% | 1,640 | 6,767 | +313% | 0 | 0 | — |
case-12 | fail→fail | 6,249 | 9,536 | +53% | 1 | 1 | 0% | 1,055 | 6,614 | +527% | 0 | 0 | — |
case-13 | fail→pass | 8,962 | 2,947 | -67% | 1 | 1 | 0% | 1,540 | 6,592 | +328% | 0 | 0 | — |
case-14 | fail→pass | 11,188 | 3,498 | -69% | 1 | 1 | 0% | 2,069 | 6,785 | +228% | 0 | 0 | — |
case-15 | fail→pass | 9,687 | 3,533 | -64% | 1 | 1 | 0% | 1,605 | 6,613 | +312% | 0 | 0 | — |
case-16 | fail→pass | 12,565 | 5,780 | -54% | 1 | 1 | 0% | 2,074 | 7,203 | +247% | 0 | 0 | — |
case-17 | pass→pass | 9,704 | 4,250 | -56% | 1 | 1 | 0% | 1,764 | 7,084 | +302% | 0 | 0 | — |
case-18 | fail→pass | 12,365 | 2,726 | -78% | 1 | 1 | 0% | 2,040 | 6,577 | +222% | 0 | 0 | — |
case-19 | fail→pass | 10,172 | 3,022 | -70% | 1 | 1 | 0% | 1,809 | 6,512 | +260% | 0 | 0 | — |
case-20 | pass→pass | 14,507 | 5,919 | -59% | 1 | 1 | 0% | 2,408 | 6,999 | +191% | 0 | 0 | — |
case-21 | fail→pass | 8,327 | 2,543 | -69% | 1 | 1 | 0% | 1,495 | 6,532 | +337% | 0 | 0 | — |
case-22 | pass→pass | 10,742 | 2,375 | -78% | 1 | 1 | 0% | 1,892 | 6,487 | +243% | 0 | 0 | — |
case-23 | pass→pass | 7,460 | 3,425 | -54% | 1 | 1 | 0% | 1,282 | 6,688 | +422% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 18 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +43 percentage points is the difference between those two pass rates over the 18 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.