Polskie orzecznictwo z publicznego API SAOS
Skill do orzecznictwa (judykatury) polskiego: wyroków, postanowień i uchwał. Sięga do publicznego API
SAOS (System Analizy Orzeczeń Sądowych, https://www.saos.org.pl/api) — agregatu orzeczeń jawnych:
SN, TK, sądy powszechne (SA/SO/SR), KIO. Używaj go zawsze, gdy pytanie dotyczy tego, jak sądy
stosują/interpretują przepis, gdy trzeba znaleźć konkretny wyrok po sygnaturze, ustalić linię
orzeczniczą albo poprzeć argument w piśmie procesowym judykaturą.
Podział ról (przepis ≠ orzeczenie)
- Treść przepisu — z ELI, nie z SAOS. Brzmienie polskiej ustawy/kodeksu cytuj przez skill
prawo-pl-eli (
scripts/eli.py). SAOS daje orzeczenia, nie autorytatywny tekst przepisu.
- JAK sądy stosują przepis — z SAOS. „Co mówi orzecznictwo o art. 299 k.s.h.", „czy SN dopuszcza…",
„linia orzecznicza w sprawie…", „znajdź wyrok sygn. III CSK 203/09" — to zadania dla tego skilla.
- Most ELI → SAOS: najpierw ustal przepis w ELI, potem
szukaj --przepis "..." w SAOS, by znaleźć
orzeczenia powołujące ten przepis.
- Delegując research subagentowi, wpisz: „orzecznictwo polskie pobieraj przez
scripts/saos.py
(skill prawo-pl-saos); treść przepisów przez scripts/eli.py (prawo-pl-eli)".
Narzędzie
Wszystko robi helper scripts/saos.py (tylko biblioteka standardowa Pythona — bez instalacji).
Skrypt leży obok tego pliku SKILL.md (<katalog skilla>/scripts/saos.py) — NIE zakładaj, że to
~/.claude/skills/prawo-pl-saos (skill zainstalowany jako plugin leży w katalogu pluginów; w Claude
Code: ${CLAUDE_PLUGIN_ROOT}/skills/prawo-pl-saos). Uruchamiaj wyłącznie helper z bieżącego pakietu:
# 1) Claude Code: przy ładowaniu skilla podstawia ${CLAUDE_PLUGIN_ROOT} (pełna ścieżka poniżej).
SAOS="${CLAUDE_PLUGIN_ROOT}/skills/prawo-pl-saos/scripts/saos.py"
# 2) Codex / Claude Desktop / instalacja ręczna: katalog TEGO pliku SKILL.md (Claude Code podaje go
# jako „Base directory for this skill”, Codex w liście skilli) — podstaw go zamiast <katalog skilla>.
[ -f "$SAOS" ] || SAOS="<katalog skilla>/scripts/saos.py"
# 3) Piaskownica (Cowork, czat z code execution): katalog pluginu bywa NIEWIDOCZNY dla powłoki — wtedy
# pobierz DOKŁADNIE tę wersję helpera (tag = wersja z nagłówka tego pliku). Suma SHA-256 jest
# sprawdzana w kodzie przed zapisem i przed każdym uruchomieniem; niezgodna = helper nie startuje.
[ -f "$SAOS" ] || SAOS=$(python3 - <<'EOF'
import hashlib, os, sys, urllib.request
WERSJA, SHA256 = "2.0.1", "71f87c1eda5e2d8a6084ac8226d3a9513a74564062a937248816040850d7d655"
URL = f"https://raw.githubusercontent.com/jamarpl21/prawo-pl-eli/v{WERSJA}/plugins/prawo-pl-saos/skills/prawo-pl-saos/scripts/saos.py"
p = os.path.join(os.environ.get("TMPDIR", "/tmp"), f"prawo-pl-saos-{WERSJA}", "saos.py")
try:
dane = open(p, "rb").read() if os.path.exists(p) else urllib.request.urlopen(URL, timeout=30).read()
except Exception as e:
sys.exit(f"BŁĄD: nie udało się pobrać helpera ({e}). Bez helpera NIE cytuj prawa z pamięci ani z portali — poinformuj użytkownika.")
if hashlib.sha256(dane).hexdigest() != SHA256:
os.path.exists(p) and os.remove(p)
sys.exit("BŁĄD: suma SHA-256 helpera nie zgadza się z SKILL.md — helper NIE zostanie uruchomiony. Nie cytuj prawa z pamięci ani z portali — poinformuj użytkownika.")
os.makedirs(os.path.dirname(p), exist_ok=True); open(p, "wb").write(dane); print(p)
EOF
) && [ -f "$SAOS" ] || exit 1
python3 "$SAOS" <komenda> [...]
Nie szukaj helpera przez find po katalogach użytkownika ani systemu i nie pobieraj go z żadnego innego źródła niż przypięty tag z sumą wyżej (żadnego main, żadnej innej wersji z cache) — inna wersja helpera to inne wyniki.
(W przykładach niżej python3 scripts/saos.py oznacza python3 "$SAOS", jeśli nie jesteś w katalogu skilla.)
Komendy
- szukaj — znajdź orzeczenia po kryteriach:
python3 scripts/saos.py szukaj "rękojmia wiary publicznej" --sad SN --limit 5
Opcje: --sad SN|TK|powszechne|admin|KIO, --sygnatura "III CSK 203/09", --przepis "Kodeks cywilny"
(powołany przepis/akt — luźne dopasowanie pełnotekstowe: --przepis "art. 415" trafia art. 415 k.c.,
k.p.c. i k.p.k. jednakowo; dopisz nazwę aktu, np. "Kodeks cywilny art. 415", i sprawdź akt w
orzeczenie <id>), --sedzia "Górski", --haslo "nienależne świadczenie",
--typ wyrok|postanowienie|uchwala|zarzadzenie|uzasadnienie, --od 2020-01-01, --do 2024-12-31
(także RRRR / RRRR-MM), --limit N (1–100), --strona N (od 0).
- orzeczenie — pełne orzeczenie po ID (z listy
szukaj):
python3 scripts/saos.py orzeczenie 76341
Pokazuje metadane, powołane przepisy i powołane orzeczenia (z ID do dalszego skoku) oraz treść
uzasadnienia. Do długich uzasadnień: --fragment "rękojmia" (okna wokół frazy, dosunięte do granic
zdań/słów, z „…" na ucięciu). Typ orzeczenia zawsze po polsku (wyrok / postanowienie / uchwała /
zarządzenie / uzasadnienie). „Powołane przepisy" to automatyczna ekstrakcja SAOS — bywa niepełna
(KIO 1564/18 nie ma w niej ŻADNEGO przepisu Pzp, o które chodzi w sentencji) i bywa uszkodzona
(art. 4793647945, Nr 0, art. 2oraz — silnik oznacza takie wpisy „wpis SAOS prawdopodobnie
uszkodzony"); przepisy rozstrzygnięcia czytaj z sentencji.
- sygnatura — szybkie odszukanie po numerze sprawy:
python3 scripts/saos.py sygnatura III CSK 203/09
- każda komenda przyjmuje
--json oraz --strict; obie flagi działają przed komendą i po niej.
Zero trafień / nierozpoznana odpowiedź API kończą się komunikatem i kodem wyjścia ≠ 0 — także z --json
(nie dostaniesz pustego JSON-a, który wyglądałby jak „sprawdzone, nic nie ma”); przy --sad SN|TK|KIO
komunikat zawiera granicę zbioru do dnia i to, czy Twój zakres leży poza nią. Z --json i wynikami
ostrzeżenie o granicy idzie na stderr (stdout to czysty JSON).
Co sprawdza --strict: (1) zakres dat dla SN/TK/KIO nie może wychodzić poza koniec zbioru
(porównanie do dnia; brak --do = blokada; przed blokadą silnik potwierdza granicę na żywo jednym
zapytaniem o najnowsze orzeczenie — gdyby SAOS wznowił zasilanie, granica się przesunie), (2) odpowiedź
API musi być kompletnym wynikiem (items + totalResults) albo pełnym orzeczeniem — inaczej błąd,
(3) żadna z tych kontroli nie przepuszcza „pustego" wyniku jako sukcesu. --strict NIE sprawdza
prawdziwości treści ani kompletności listy powołanych przepisów.
- Czas:
/search/judgments bywa bardzo wolne (40–60 s); limit na żądanie to 90 s, 2 próby. Przekroczenie
czasu lub „Przerwa techniczna" (nocne okno serwisowe SAOS) to BŁĄD sieci / przerwa techniczna
z kodem ≠ 0 — nigdy fałszywe zero trafień. Wtedy ponów później, nie wnioskuj „brak orzecznictwa".
Typowy przepływ: szukaj (zawęź --sad/--przepis/--haslo) → wybierz ID → orzeczenie <id>
→ w razie potrzeby skacz po referencedCourtCases do powołanych orzeczeń.
Zasady (ważne — dlaczego)
- SAOS to baza WTÓRNA (agregat), nie źródło urzędowe. Orzeczenia są jawne, ale do dosłownego cytatu
i pewności zweryfikuj w portalu właściwego sądu. Link
source.judgmentUrl z SAOS dla SN/TK/KIO jest
martwy albo ogólny (sprawdzone 2026-08-23: sn.pl/…/Baza_orzeczen → 404, otk.trybunal.gov.pl
i ftp.uzp.gov.pl nieosiągalne) — silnik pokazuje go tylko jako „link z metadanych SAOS" i NIE jest to
ścieżka weryfikacji. Zamiast tego orzeczenie drukuje źródło urzędowe: dla SN wzorzec adresu PDF
https://www.sn.pl/sites/orzecznictwo/Orzeczenia3/<SYGN z „/"→„-", spacje %20>.pdf (np.
II%20KK%2056-16.pdf; zweryfikowany curl -I na II KK 56/16, I CSK 364/15, III CZP 17/15 — traktuj jako
wzorzec „sprawdź", nie gwarancję; uzasadnienie bywa pod …-1.pdf), dla TK wyszukiwarkę OTK
(ipo.trybunal.gov.pl/ipo/), dla KIO wyszukiwarkę UZP (orzeczenia.uzp.gov.pl/Home/Search). Linki
sądów powszechnych (apiorzeczenia.*.sa.gov.pl) działają. Zawsze podawaj sygnaturę + sąd + datę
(np. „wyrok SN z 9.04.2010, III CSK 203/09").
- Brak sądów administracyjnych. NSA/WSA są w SAOS praktycznie nieobecne (
--sad admin zwykle zwraca 0).
Orzecznictwo administracyjne pobieraj skillem prawo-pl-cbosa (baza CBOSA, scripts/cbosa.py).
- Zbiory SN, TK i KIO są ZAMKNIĘTE — granice DO DNIA, sprawdzone na żywo 2026-08-23 (najnowsze
orzeczenie w SAOS, sortowanie po dacie malejąco): SN kończy się 22.06.2016 (III KK 195/16),
TK 9.12.2015 (K 35/15, Ts 266/14), KIO 6.09.2018 (KIO 1711/18); sądy powszechne idą na bieżąco.
Rocznik granicy NIE jest pokryty w całości: uchwała SN III CZP 81/16 z 8.12.2016 i wyrok KIO 2577/18
z 27.12.2018 istnieją, a w SAOS ich nie ma — dlatego silnik porównuje
--od/--do z granicą do dnia,
--strict blokuje zakres sięgający poza nią (podpowiada --do 2016-06-22 itd.), a sygnatura dla
numeru z rocznika granicy mówi „może być późniejsze niż koniec zbioru", nie „nie ma". Zero trafień
z nowszą datą NIE znaczy, że orzecznictwa nie ma. Nowsze bierz z portalu SN (sn.pl/orzecznictwo),
OTK (ipo.trybunal.gov.pl) albo UZP (orzeczenia.uzp.gov.pl) i oznacz jako źródło spoza SAOS.
- Świeżość bywa opóźniona. Najnowsze orzeczenia sądów powszechnych mogą jeszcze nie być w bazie — przy
sprawie na konkretną datę zaznacz „wg SAOS na dzień X — do potwierdzenia" i sprawdź portal sądu.
- Nie myl orzeczenia z przepisem. Po znalezieniu orzeczenia, brzmienie powołanego przepisu i jego
aktualność potwierdź w ELI (
prawo-pl-eli) — orzeczenie mogło zapaść na starszym stanie prawnym.
- Indeksy górne w numerach przepisów. W tekstach SN/TK/KIO SAOS spłaszcza indeksy górne:
art. 417¹ k.c. → „art. 4171 k.c.", art. 398¹⁴ → „39814", art. 479⁴⁵ → „47945" (w surowym API nie ma
<sup>, więc silnik nie może tego odtworzyć — drukuje stałą notę „UWAGA: SAOS spłaszcza indeksy górne…").
Nigdy nie cytuj „art. 4171 k.c." — numerację sprawdź w źródle urzędowym albo w ELI. W tekstach
sądów powszechnych <sup> jest zachowane i silnik renderuje je w linii: art. 556¹ § 1 k.c..
--przepis jest luźne, a lista „Powołane przepisy" niepełna. Filtr referencedRegulation to
dopasowanie pełnotekstowe w polu powołanych przepisów (bez rozróżnienia aktu), a samo pole to automatyczna
ekstrakcja SAOS z lukami — trafienia przez --przepis traktuj jako kandydatów, nie jako „wszystkie
orzeczenia do art. X". Uzupełnij wyszukiwanie frazą (szukaj "art. 415 k.c.") i --haslo.
- Pełna lista endpointów i parametrów:
references/api.md.
Czego ten skill NIE obejmuje
- treści przepisów (ustawy/kodeksy → skill prawo-pl-eli, ELI Sejmu),
- prawa UE i orzecznictwa TSUE (→ skill prawo-eu-eurlex, EUR-Lex/CELLAR),
- sądów administracyjnych (NSA/WSA — w SAOS ich nie ma; → skill prawo-pl-cbosa),
- decyzji Prezesa UODO (→ skill prawo-pl-uodo),
- pism stron, akt sprawy, KRS, ksiąg wieczystych.
Jeśli zagadnienie wymaga tych źródeł — powiedz to wprost, nie udawaj, że SAOS je pokryje.
Przykładowy przepływ
Pytanie (przy analizie pozwu z art. 299 k.s.h.): „jak SN podchodzi do odpowiedzialności członka zarządu
za zobowiązania spółki — znajdź orzecznictwo".
- (opcjonalnie) ELI:
tj DU 2000 1037 → brzmienie art. 299 k.s.h. (skill prawo-pl-eli).
szukaj "odpowiedzialność członka zarządu" --przepis "Kodeks spółek handlowych" --sad SN --limit 5
→ lista orzeczeń SN z sygnaturami i ID.
orzeczenie <id> → teza/uzasadnienie + powołane przepisy + powołane orzeczenia (skok po linii orzeczniczej).
- W odpowiedzi: zacytuj tezę, podaj sygnaturę + sąd + datę, zaznacz „baza SAOS (wtórna) — do dosłownego
cytatu zweryfikuj w portalu sądu" (dla SN: wzorzec PDF z
orzeczenie), a dla SN/TK/KIO nie przepisuj
spłaszczonych numerów przepisów (art. 4171 → art. 417¹) i pamiętaj, że zbiór SN kończy się 22.06.2016.
1---2name: prawo-pl-saos3description: Odpytuje PUBLICZNE API SAOS (saos.org.pl) — bazę polskiego ORZECZNICTWA: wyroki, postanowienia i uchwały Sądu Najwyższego (SN), Trybunału Konstytucyjnego (TK), sądów powszechnych (SA/SO/SR) i Krajowej Izby Odwoławczej (KIO). Używaj, gdy potrzebujesz ORZECZEŃ, a nie treści przepisu: „orzecznictwo SN/TK do art. X", „jak sądy interpretują/stosują…", „linia orzecznicza", „znajdź wyrok o sygnaturze…", „uchwała SN sygn. …", przy ANALIZIE i PISANIU pism procesowych (poszukiwanie podstawy w judykaturze). Treść przepisu bierz z ELI (skill prawo-pl-eli), tu szukasz JAK go stosują. Filtruj po sądzie, sygnaturze, sędzim, powołanym przepisie i dacie; zwraca pełne uzasadnienia, powołane przepisy i powołane orzeczenia. UWAGA: SAOS to baza WTÓRNA (agregat) — sądy administracyjne (NSA/WSA) są w niej praktycznie nieobecne (dla nich: skill prawo-pl-cbosa), a zbiory SN (do 22.06.2016), TK (do 9.12.2015) i KIO (do 6.09.2018) są zamknięte; sądy powszechne idą na bieżąco. Polish case-law from the public SAOS API.4---56# Polskie orzecznictwo z publicznego API SAOS78Skill do **orzecznictwa** (judykatury) polskiego: wyroków, postanowień i uchwał. Sięga do publicznego API9**SAOS** (System Analizy Orzeczeń Sądowych, `https://www.saos.org.pl/api`) — agregatu orzeczeń jawnych:10**SN, TK, sądy powszechne (SA/SO/SR), KIO**. Używaj go zawsze, gdy pytanie dotyczy tego, **jak sądy11stosują/interpretują przepis**, gdy trzeba znaleźć **konkretny wyrok po sygnaturze**, ustalić **linię12orzeczniczą** albo poprzeć argument w piśmie procesowym judykaturą.1314## Podział ról (przepis ≠ orzeczenie)15161. **Treść przepisu — z ELI**, nie z SAOS. Brzmienie polskiej ustawy/kodeksu cytuj przez skill17 **prawo-pl-eli** (`scripts/eli.py`). SAOS daje orzeczenia, nie autorytatywny tekst przepisu.182. **JAK sądy stosują przepis — z SAOS.** „Co mówi orzecznictwo o art. 299 k.s.h.", „czy SN dopuszcza…",19 „linia orzecznicza w sprawie…", „znajdź wyrok sygn. III CSK 203/09" — to zadania dla tego skilla.203. **Most ELI → SAOS:** najpierw ustal przepis w ELI, potem `szukaj --przepis "..."` w SAOS, by znaleźć21 orzeczenia powołujące ten przepis.224. **Delegując research subagentowi**, wpisz: „orzecznictwo polskie pobieraj przez `scripts/saos.py`23 (skill prawo-pl-saos); treść przepisów przez `scripts/eli.py` (prawo-pl-eli)".2425## Narzędzie2627Wszystko robi helper `scripts/saos.py` (tylko biblioteka standardowa Pythona — bez instalacji).28Skrypt leży **obok tego pliku SKILL.md** (`<katalog skilla>/scripts/saos.py`) — NIE zakładaj, że to29`~/.claude/skills/prawo-pl-saos` (skill zainstalowany jako plugin leży w katalogu pluginów; w Claude30Code: `${CLAUDE_PLUGIN_ROOT}/skills/prawo-pl-saos`). Uruchamiaj wyłącznie helper z bieżącego pakietu:3132```33# 1) Claude Code: przy ładowaniu skilla podstawia ${CLAUDE_PLUGIN_ROOT} (pełna ścieżka poniżej).34SAOS="${CLAUDE_PLUGIN_ROOT}/skills/prawo-pl-saos/scripts/saos.py"35# 2) Codex / Claude Desktop / instalacja ręczna: katalog TEGO pliku SKILL.md (Claude Code podaje go36# jako „Base directory for this skill”, Codex w liście skilli) — podstaw go zamiast <katalog skilla>.37[ -f "$SAOS" ] || SAOS="<katalog skilla>/scripts/saos.py"38# 3) Piaskownica (Cowork, czat z code execution): katalog pluginu bywa NIEWIDOCZNY dla powłoki — wtedy39# pobierz DOKŁADNIE tę wersję helpera (tag = wersja z nagłówka tego pliku). Suma SHA-256 jest40# sprawdzana w kodzie przed zapisem i przed każdym uruchomieniem; niezgodna = helper nie startuje.41[ -f "$SAOS" ] || SAOS=$(python3 - <<'EOF'42import hashlib, os, sys, urllib.request43WERSJA, SHA256 = "2.0.1", "71f87c1eda5e2d8a6084ac8226d3a9513a74564062a937248816040850d7d655"44URL = f"https://raw.githubusercontent.com/jamarpl21/prawo-pl-eli/v{WERSJA}/plugins/prawo-pl-saos/skills/prawo-pl-saos/scripts/saos.py"45p = os.path.join(os.environ.get("TMPDIR", "/tmp"), f"prawo-pl-saos-{WERSJA}", "saos.py")46try:47 dane = open(p, "rb").read() if os.path.exists(p) else urllib.request.urlopen(URL, timeout=30).read()48except Exception as e:49 sys.exit(f"BŁĄD: nie udało się pobrać helpera ({e}). Bez helpera NIE cytuj prawa z pamięci ani z portali — poinformuj użytkownika.")50if hashlib.sha256(dane).hexdigest() != SHA256:51 os.path.exists(p) and os.remove(p)52 sys.exit("BŁĄD: suma SHA-256 helpera nie zgadza się z SKILL.md — helper NIE zostanie uruchomiony. Nie cytuj prawa z pamięci ani z portali — poinformuj użytkownika.")53os.makedirs(os.path.dirname(p), exist_ok=True); open(p, "wb").write(dane); print(p)54EOF55) && [ -f "$SAOS" ] || exit 156python3 "$SAOS" <komenda> [...]57```5859Nie szukaj helpera przez `find` po katalogach użytkownika ani systemu i nie pobieraj go z żadnego innego źródła niż przypięty tag z sumą wyżej (żadnego `main`, żadnej innej wersji z cache) — inna wersja helpera to inne wyniki.6061(W przykładach niżej `python3 scripts/saos.py` oznacza `python3 "$SAOS"`, jeśli nie jesteś w katalogu skilla.)6263### Komendy6465- **szukaj** — znajdź orzeczenia po kryteriach:66 `python3 scripts/saos.py szukaj "rękojmia wiary publicznej" --sad SN --limit 5`67 Opcje: `--sad SN|TK|powszechne|admin|KIO`, `--sygnatura "III CSK 203/09"`, `--przepis "Kodeks cywilny"`68 (powołany przepis/akt — **luźne dopasowanie pełnotekstowe**: `--przepis "art. 415"` trafia art. 415 k.c.,69 k.p.c. i k.p.k. jednakowo; dopisz nazwę aktu, np. `"Kodeks cywilny art. 415"`, i sprawdź akt w70 `orzeczenie <id>`), `--sedzia "Górski"`, `--haslo "nienależne świadczenie"`,71 `--typ wyrok|postanowienie|uchwala|zarzadzenie|uzasadnienie`, `--od 2020-01-01`, `--do 2024-12-31`72 (także `RRRR` / `RRRR-MM`), `--limit N` (1–100), `--strona N` (od 0).73- **orzeczenie** — pełne orzeczenie po ID (z listy `szukaj`):74 `python3 scripts/saos.py orzeczenie 76341`75 Pokazuje metadane, **powołane przepisy** i **powołane orzeczenia** (z ID do dalszego skoku) oraz treść76 uzasadnienia. Do długich uzasadnień: `--fragment "rękojmia"` (okna wokół frazy, dosunięte do granic77 zdań/słów, z „…" na ucięciu). Typ orzeczenia zawsze po polsku (wyrok / postanowienie / uchwała /78 zarządzenie / uzasadnienie). „Powołane przepisy" to **automatyczna ekstrakcja SAOS — bywa niepełna**79 (KIO 1564/18 nie ma w niej ŻADNEGO przepisu Pzp, o które chodzi w sentencji) i bywa uszkodzona80 (`art. 4793647945`, `Nr 0`, `art. 2oraz` — silnik oznacza takie wpisy „wpis SAOS prawdopodobnie81 uszkodzony"); przepisy rozstrzygnięcia czytaj z sentencji.82- **sygnatura** — szybkie odszukanie po numerze sprawy:83 `python3 scripts/saos.py sygnatura III CSK 203/09`84- każda komenda przyjmuje `--json` oraz `--strict`; obie flagi działają przed komendą i po niej.85 Zero trafień / nierozpoznana odpowiedź API kończą się komunikatem i kodem wyjścia ≠ 0 — także z `--json`86 (nie dostaniesz pustego JSON-a, który wyglądałby jak „sprawdzone, nic nie ma”); przy `--sad SN|TK|KIO`87 komunikat zawiera granicę zbioru do dnia i to, czy Twój zakres leży poza nią. Z `--json` i wynikami88 ostrzeżenie o granicy idzie na stderr (stdout to czysty JSON).89 **Co sprawdza `--strict`:** (1) zakres dat dla SN/TK/KIO nie może wychodzić poza koniec zbioru90 (porównanie do dnia; brak `--do` = blokada; przed blokadą silnik potwierdza granicę na żywo jednym91 zapytaniem o najnowsze orzeczenie — gdyby SAOS wznowił zasilanie, granica się przesunie), (2) odpowiedź92 API musi być kompletnym wynikiem (`items` + `totalResults`) albo pełnym orzeczeniem — inaczej błąd,93 (3) żadna z tych kontroli nie przepuszcza „pustego" wyniku jako sukcesu. `--strict` NIE sprawdza94 prawdziwości treści ani kompletności listy powołanych przepisów.95- Czas: `/search/judgments` bywa bardzo wolne (40–60 s); limit na żądanie to 90 s, 2 próby. Przekroczenie96 czasu lub „Przerwa techniczna" (nocne okno serwisowe SAOS) to `BŁĄD sieci` / `przerwa techniczna`97 z kodem ≠ 0 — nigdy fałszywe zero trafień. Wtedy ponów później, nie wnioskuj „brak orzecznictwa".9899Typowy przepływ: `szukaj` (zawęź `--sad`/`--przepis`/`--haslo`) → wybierz ID → `orzeczenie <id>`100→ w razie potrzeby skacz po `referencedCourtCases` do powołanych orzeczeń.101102## Zasady (ważne — dlaczego)1031041. **SAOS to baza WTÓRNA (agregat), nie źródło urzędowe.** Orzeczenia są jawne, ale do **dosłownego cytatu**105 i pewności zweryfikuj w portalu właściwego sądu. Link `source.judgmentUrl` z SAOS dla **SN/TK/KIO jest106 martwy albo ogólny** (sprawdzone 2026-08-23: `sn.pl/…/Baza_orzeczen` → 404, `otk.trybunal.gov.pl`107 i `ftp.uzp.gov.pl` nieosiągalne) — silnik pokazuje go tylko jako „link z metadanych SAOS" i NIE jest to108 ścieżka weryfikacji. Zamiast tego `orzeczenie` drukuje **źródło urzędowe**: dla SN wzorzec adresu PDF109 `https://www.sn.pl/sites/orzecznictwo/Orzeczenia3/<SYGN z „/"→„-", spacje %20>.pdf` (np.110 `II%20KK%2056-16.pdf`; zweryfikowany `curl -I` na II KK 56/16, I CSK 364/15, III CZP 17/15 — traktuj jako111 wzorzec „sprawdź", nie gwarancję; uzasadnienie bywa pod `…-1.pdf`), dla TK wyszukiwarkę OTK112 (`ipo.trybunal.gov.pl/ipo/`), dla KIO wyszukiwarkę UZP (`orzeczenia.uzp.gov.pl/Home/Search`). Linki113 sądów powszechnych (`apiorzeczenia.*.sa.gov.pl`) działają. Zawsze podawaj **sygnaturę + sąd + datę**114 (np. „wyrok SN z 9.04.2010, III CSK 203/09").1152. **Brak sądów administracyjnych.** NSA/WSA są w SAOS praktycznie nieobecne (`--sad admin` zwykle zwraca 0).116 Orzecznictwo administracyjne pobieraj skillem **prawo-pl-cbosa** (baza CBOSA, `scripts/cbosa.py`).1173. **Zbiory SN, TK i KIO są ZAMKNIĘTE — granice DO DNIA, sprawdzone na żywo 2026-08-23** (najnowsze118 orzeczenie w SAOS, sortowanie po dacie malejąco): **SN kończy się 22.06.2016** (III KK 195/16),119 **TK 9.12.2015** (K 35/15, Ts 266/14), **KIO 6.09.2018** (KIO 1711/18); sądy powszechne idą na bieżąco.120 Rocznik granicy NIE jest pokryty w całości: uchwała SN III CZP 81/16 z 8.12.2016 i wyrok KIO 2577/18121 z 27.12.2018 istnieją, a w SAOS ich nie ma — dlatego silnik porównuje `--od/--do` z granicą do dnia,122 `--strict` blokuje zakres sięgający poza nią (podpowiada `--do 2016-06-22` itd.), a `sygnatura` dla123 numeru z rocznika granicy mówi „może być późniejsze niż koniec zbioru", nie „nie ma". Zero trafień124 z nowszą datą NIE znaczy, że orzecznictwa nie ma. Nowsze bierz z portalu SN (`sn.pl/orzecznictwo`),125 OTK (`ipo.trybunal.gov.pl`) albo UZP (`orzeczenia.uzp.gov.pl`) i oznacz jako źródło spoza SAOS.1264. **Świeżość bywa opóźniona.** Najnowsze orzeczenia sądów powszechnych mogą jeszcze nie być w bazie — przy127 sprawie na konkretną datę zaznacz „wg SAOS na dzień X — do potwierdzenia" i sprawdź portal sądu.1285. **Nie myl orzeczenia z przepisem.** Po znalezieniu orzeczenia, brzmienie powołanego przepisu i jego129 aktualność potwierdź w ELI (`prawo-pl-eli`) — orzeczenie mogło zapaść na starszym stanie prawnym.1306. **Indeksy górne w numerach przepisów.** W tekstach **SN/TK/KIO SAOS spłaszcza indeksy górne**:131 art. 417¹ k.c. → „art. 4171 k.c.", art. 398¹⁴ → „39814", art. 479⁴⁵ → „47945" (w surowym API nie ma132 `<sup>`, więc silnik nie może tego odtworzyć — drukuje stałą notę „UWAGA: SAOS spłaszcza indeksy górne…").133 **Nigdy nie cytuj „art. 4171 k.c."** — numerację sprawdź w źródle urzędowym albo w ELI. W tekstach134 sądów powszechnych `<sup>` jest zachowane i silnik renderuje je w linii: `art. 556¹ § 1 k.c.`.1357. **`--przepis` jest luźne, a lista „Powołane przepisy" niepełna.** Filtr `referencedRegulation` to136 dopasowanie pełnotekstowe w polu powołanych przepisów (bez rozróżnienia aktu), a samo pole to automatyczna137 ekstrakcja SAOS z lukami — trafienia przez `--przepis` traktuj jako kandydatów, nie jako „wszystkie138 orzeczenia do art. X". Uzupełnij wyszukiwanie frazą (`szukaj "art. 415 k.c."`) i `--haslo`.1398. Pełna lista endpointów i parametrów: `references/api.md`.140141## Czego ten skill NIE obejmuje142143- **treści przepisów** (ustawy/kodeksy → skill **prawo-pl-eli**, ELI Sejmu),144- **prawa UE i orzecznictwa TSUE** (→ skill **prawo-eu-eurlex**, EUR-Lex/CELLAR),145- **sądów administracyjnych** (NSA/WSA — w SAOS ich nie ma; → skill **prawo-pl-cbosa**),146- **decyzji Prezesa UODO** (→ skill **prawo-pl-uodo**),147- pism stron, akt sprawy, KRS, ksiąg wieczystych.148Jeśli zagadnienie wymaga tych źródeł — powiedz to wprost, nie udawaj, że SAOS je pokryje.149150## Przykładowy przepływ151152Pytanie (przy analizie pozwu z art. 299 k.s.h.): „jak SN podchodzi do odpowiedzialności członka zarządu153za zobowiązania spółki — znajdź orzecznictwo".1541. (opcjonalnie) ELI: `tj DU 2000 1037` → brzmienie art. 299 k.s.h. (skill prawo-pl-eli).1552. `szukaj "odpowiedzialność członka zarządu" --przepis "Kodeks spółek handlowych" --sad SN --limit 5`156 → lista orzeczeń SN z sygnaturami i ID.1573. `orzeczenie <id>` → teza/uzasadnienie + powołane przepisy + powołane orzeczenia (skok po linii orzeczniczej).1584. W odpowiedzi: zacytuj tezę, podaj sygnaturę + sąd + datę, zaznacz „baza SAOS (wtórna) — do dosłownego159 cytatu zweryfikuj w portalu sądu" (dla SN: wzorzec PDF z `orzeczenie`), a dla SN/TK/KIO nie przepisuj160 spłaszczonych numerów przepisów (art. 4171 → art. 417¹) i pamiętaj, że zbiór SN kończy się 22.06.2016.