Skill: RIS Rechtsprechung (Österreich)
SkillDev toolsÖ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 gezielte Lookups einer bekannten Geschäftszahl oder Rechtssatznummer — das ist im RIS-Web-Frontend schneller.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Skill: RIS Rechtsprechung (Österreich) skill
What this skill tells your AI
The instructions your AI receives, as published by thomasmoreai/legal-skills-open in at/litigation/skills/ris-rechtsprechung/SKILL.md and read by ahel’s review.
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.
Wann diesen Skill anwenden
Hauptpfad — thematische / explorative Recherche im Chat:
- nach Stichworten / Schlagworten (
--suchworte,--schlagworte) - in einem bestimmten Zeitraum (
--von/--bis) - bei einer bestimmten Gerichtsbarkeit (
--applikation)
Beispiele, die diesen Skill triggern:
- „Gibt es OGH-Judikatur zu Mietzinsminderung in der Pandemie?"
- „Aktuelle BVwG-Entscheidungen zu Afghanistan-Asyl seit 2023"
- „Was sagt der VfGH zur Versammlungsfreiheit?"
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):
- Geschäftszahl-Lookup (
--geschaeftszahl) - Norm-Suche (
--norm "ABGB §1319a") - Rechtssatznummer-Lookup (
--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:
- die Frage rein dogmatisch / rechtspolitisch ist, ohne Bezug zu einer konkreten Entscheidung (z. B. „Was sagt die Lehre zu §..." → Kommentar, nicht RIS),
- Bundes-/Landesrecht gemeint ist (Gesetzestext, nicht Rechtsprechung),
- nach EuGH/EGMR-Urteilen gefragt wird (RIS enthält nur österreichische Gerichte; ggf. wird die österreichische Folgejudikatur gesucht — dann Skill anwenden, aber den Hinweis geben),
- nach laufenden Verfahren oder Pressemitteilungen gefragt wird (RIS enthält nur veröffentlichte Entscheidungen).
API-Grundlagen
- Base-URL:
https://data.bka.gv.at/ris/api/v2.6/ - Endpoint Rechtsprechung:
GET /Judikatur - Response-Format: JSON (
Accept: application/json) - Keine Auth, keine Quotas, aber:
- Bei Pagination 1–2 s Pause zwischen Seiten einlegen.
- Massenabfragen außerhalb 06–18 Uhr (MEZ) oder am Wochenende.
- Bei Fehlern Geduld haben — das System teilt sich Ressourcen mit dem Web-Frontend.
Pflichtparameter
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 Feldern dasSuchworte-Token gesucht wird (Rechtssatz-Text vs. Entscheidungstext). Nicht ein Filter für Trefferarten — auch mit--no-rechtssatzkö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 toleriert weitere Werte; nur die hier gelisteten sind in den RIS-Handbüchern dokumentiert. Skript-Default: setzt das Skript weder--sortierungnoch--sort-direction, sortiert es nachDatum/Descending(im Chat-Kontext meist gewollt — „aktuelle Judikatur zu …"). Der API-DefaultRelevanzist mit--sortierung Relevanzzurückzuholen.SortDirection∈ {Ascending,Descending}
Pagination:
DokumenteProSeite∈ {Ten,Twenty,Fifty,OneHundred} — DefaultTwentySeitennummer(1-basiert) — bei--alle-seitender Einstiegspunkt- Auto-Pagination:
--alle-seitenholt 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 5bis zu 250 Treffer auf einmal.
Empfohlenes Vorgehen
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.
-
Mapping: User-Frage →
--applikation+ Suchparameter. Bei Unsicherheit--applikation Justiz+ Volltext-Suche. -
Aufruf — das Skript liegt immer bei
scripts/ris_search.pyrelativ zum Skill-Ordner (dem Verzeichnis, das dieseSKILL.mdenthä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 —
cdin den Skill-Ordner, dann relativ aufrufen. Standard-Chat-Recherche (Themensuche mit Auto-Pagination):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 3Liefert bis zu 150 Treffer, sortiert nach Datum absteigend (Default).
Python-Aufruf je Umgebung — probiere in dieser Reihenfolge:
python→python3→py -3. Üblicherweise:- Linux / macOS / Claude.ai-Sandbox:
python3oderpython - Windows (Claude Code):
py -3(python3fehlt meist im PATH)
Skill-Ordner je Umgebung — typische Pfade:
- Claude Code (Linux/macOS):
~/.claude/skills/ris-rechtsprechung/ - Claude Code (Windows):
%USERPROFILE%\.claude\skills\ris-rechtsprechung\ - Claude.ai Custom Skills: vom Harness gemounteter Pfad (meist unter
/mnt/skills/...oder/home/.../skills/...); folge der Pfadangabe, die Dir der Skill-Loader liefert.
Falls
cdin der Umgebung nicht zur Verfügung steht (manche Sandboxes), verwende den absoluten Pfad zum Skript, z. B.:python "<skill-folder>/scripts/ris_search.py" --applikation Justiz ...Ausgabe ist Markdown (Default) oder strukturiertes JSON (
--json). - Linux / macOS / Claude.ai-Sandbox:
-
Antwort an den User: die Top-Treffer mit Geschäftszahl, Datum, Leitsatz (sofern vorhanden) und RIS-Link weitergeben. Bei mehr als 10 Treffern die ersten 10 ausführlich, den Rest als Bullet-Liste.
-
Pagination: bei mehr als einer Seite vor jeder weiteren Anfrage ca. 1,5 s warten (RIS-Empfehlung).
Skript-Output
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)
Anmerkungen
- Heading aus Stamm-Entscheidung: Bei Rechtssätzen liefert die API
in
Geschaeftszahleine Verkettung aller zitierenden Geschäftszahlen und inEntscheidungsdatumdas jüngste Update-Datum. Beides ist irreführend. Wir nutzen stattdessenJustiz.Entscheidungstexte.item[0]— die Stamm-Entscheidung — als Quelle für Heading-GZ + Datum. - Volltext-URL bei Rechtssätzen: kommt direkt aus der API (Stamm-
DokumentUrl), nicht mehr aus der Heuristik. Die Heuristik bleibt als Fallback für seltene Sonderfälle. - Gericht aus
Technisch.Organ(zuverlässiger alsJustiz.Gericht). Fallback auf Applikation. - Rechtssatznummer im Doktyp-Label:
[Rechtssatz RS0051942]— praktisch zum Zitieren. - „Auch zitiert in N weiteren Entscheidungen": Anzahl − 1 (die Stamm zählt nicht), nur ausgegeben wenn N > 1.
- Datumsformat: ISO-Datum → DD.MM.YYYY.
JSON-Output
--json liefert ein normalisiertes Objekt mit allen Feldern:
{
"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.
Direkte HTML-Volltext-URLs
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.
Web-Search-Fallback (bei 0 API-Treffern)
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.
Fehlerfälle
- HTTP 400 → mindestens einen Suchparameter ergänzen oder spezifischer machen.
- 0 Treffer → Suche entschärfen (allgemeinere Suchworte, größerer Zeitraum, andere
Applikation). - 0 Treffer bei
Suchwortetrotz 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 Googlesite:-Such-Query als Fallback (siehe Abschnitt Web-Search-Fallback). - Timeout → einmal mit kleinerem
--pro-seitewiederholen (das Skript retried automatisch zwei Mal mit 2/4 s Pause). - API-Pflichtparameter unbekannt → Default-Pfad:
--applikation Justiz,--suchworte ...setzen.
Installation
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.
Claude Code (lokal, Linux/macOS)
mkdir -p ~/.claude/skills
cp -r recherche-ris-rechtsprechung/skill-draft/ris-rechtsprechung \
~/.claude/skills/
Claude Code (lokal, Windows — 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
Claude.ai Custom Skills (Web-App)
- Skill-Ordner als ZIP packen:
PowerShell:cd recherche-ris-rechtsprechung/skill-draft/ zip -r ris-rechtsprechung.zip ris-rechtsprechung/Compress-Archive -Path "recherche-ris-rechtsprechung\skill-draft\ris-rechtsprechung" ` -DestinationPath ris-rechtsprechung.zip -Force - Claude.ai → Settings → Capabilities → Skills → Upload skill → ZIP-Datei auswählen.
- Wichtig: Im selben Settings-Bereich unter
Web search & code execution → Network access die folgenden Hosts
freigeben. Falls Claude.ai Wildcards akzeptiert, deckt
*.bka.gv.atalle drei mit einem Eintrag ab.data.bka.gv.at— OGD-API (Pflicht; ohne das blockt die Sandbox alle 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-Suchehttps://www.ris.bka.gv.at/Judikatur/bei 0 Volltext-Treffern).www.ris.bka.gv.at—Dokument.wxe?…-URLs, die die API selbst in der Trefferliste zurückgibt.
Endstruktur (überall identisch)
ris-rechtsprechung/
├── SKILL.md
└── scripts/ris_search.py
Voraussetzung: Python ≥ 3.9 in der ausführenden Umgebung. Keine Pip-Pakete nötig.
Lizenz, Namensnennung, Disclaimer
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.
Quellen
- Offizielle Doku-PDF:
https://data.bka.gv.at/ris/ogd/v2.6/Documents/Dokumentation_OGD-RIS_API.pdf - OGD-FAQ:
https://www.ris.bka.gv.at/RisInfo/OGD-FAQ.pdf - Datensatz-Eintrag:
https://www.data.gv.at/katalog/dataset/ris2_6 - Referenz-Implementierungen:
shrinkwrap-legal/shrinkwrap-legal-api(Java/Spring)philrox/ris-mcp-ts(TypeScript MCP-Server)
- Kontakt für API-Fragen:
ris.it@bka.gv.at
Signals
- GitHub stars
- 72
- Forks
- 7
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
ris-rechtsprechung- Source
- github.com/thomasmoreai/legal-skills-open