Orzecznictwo sądów administracyjnych (NSA/WSA) z CBOSA
Skill do orzecznictwa sądów administracyjnych: Naczelnego Sądu Administracyjnego (NSA)
i 16 wojewódzkich sądów administracyjnych (WSA). Sięga do CBOSA — Centralnej Bazy Orzeczeń
Sądów Administracyjnych (https://orzeczenia.nsa.gov.pl, ~2,4 mln orzeczeń od 2004 r., wybrane
starsze). Używaj go zawsze, gdy pytanie dotyczy skarg na decyzje administracyjne, interpretacji
podatkowych, postępowania przed organami — czyli tam, gdzie właściwe są sądy administracyjne.
CBOSA nie ma oficjalnego API — silnik czyta publiczne strony HTML wyszukiwarki (read-only,
bez logowania, z throttlingiem ≥0,5 s). To najbardziej kompletne i urzędowe źródło orzecznictwa
administracyjnego; SAOS (skill prawo-pl-saos) sądów administracyjnych praktycznie nie ma.
Podział ról (który skill do czego)
- NSA/WSA (administracja, podatki) → ten skill. Skargi na decyzje, interpretacje
indywidualne, kary administracyjne, RODO (skargi na decyzje UODO), budowlane, samorząd.
- SN/TK/sądy powszechne/KIO → prawo-pl-saos. Sprawy cywilne, karne, gospodarcze.
- Treść przepisu → prawo-pl-eli (ELI Sejmu). Orzeczenie mogło zapaść na starszym stanie
prawnym — brzmienie i aktualność przepisu potwierdź w ELI.
- Decyzje Prezesa UODO → prawo-pl-uodo; wyroki WSA/NSA ze skarg na te decyzje → ten skill.
- Delegując research subagentowi, wpisz: „orzecznictwo sądów administracyjnych pobieraj
przez
scripts/cbosa.py (skill prawo-pl-cbosa)".
Narzędzie
Wszystko robi helper scripts/cbosa.py (tylko biblioteka standardowa Pythona — bez instalacji).
Skrypt leży obok tego pliku SKILL.md (<katalog skilla>/scripts/cbosa.py) — NIE zakładaj, że to
~/.claude/skills/prawo-pl-cbosa (skill zainstalowany jako plugin leży w katalogu pluginów; w Claude
Code: ${CLAUDE_PLUGIN_ROOT}/skills/prawo-pl-cbosa). Uruchamiaj wyłącznie helper z bieżącego pakietu:
# 1) Claude Code: przy ładowaniu skilla podstawia ${CLAUDE_PLUGIN_ROOT} (pełna ścieżka poniżej).
CBOSA="${CLAUDE_PLUGIN_ROOT}/skills/prawo-pl-cbosa/scripts/cbosa.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 "$CBOSA" ] || CBOSA="<katalog skilla>/scripts/cbosa.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 "$CBOSA" ] || CBOSA=$(python3 - <<'EOF'
import hashlib, os, sys, urllib.request
WERSJA, SHA256 = "2.0.1", "e81aeed97349663993a0b188664db1c902b44d7970f7dc16fcb785fa016f06c4"
URL = f"https://raw.githubusercontent.com/jamarpl21/prawo-pl-eli/v{WERSJA}/plugins/prawo-pl-cbosa/skills/prawo-pl-cbosa/scripts/cbosa.py"
p = os.path.join(os.environ.get("TMPDIR", "/tmp"), f"prawo-pl-cbosa-{WERSJA}", "cbosa.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 "$CBOSA" ] || exit 1
python3 "$CBOSA" <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/cbosa.py oznacza python3 "$CBOSA", jeśli nie jesteś w katalogu skilla.)
Komendy
- szukaj — znajdź orzeczenia po kryteriach:
python3 scripts/cbosa.py szukaj "odpowiedzialność członków zarządu" --sad NSA --od 2024-01-01
Opcje: --sad NSA | "WSA Warszawa" | "WSA Kraków" … (16 miast; można też podać pełną nazwę),
--sygnatura "II FSK 2870/18", --rodzaj wyrok|postanowienie|uchwala, --symbol 6119
(symbol sprawy, np. 611x podatki), --sedzia "Nowak", --od/--do RRRR-MM-DD (można też sam rok
2024 albo 2024-01 — silnik uzupełni do początku/końca okresu),
--strona N (od 1; stała wielkość strony: 10 wyników).
- orzeczenie — pełne orzeczenie po
doc_id (z listy szukaj):
python3 scripts/cbosa.py orzeczenie 8889489BE0
Pokazuje metadane (sąd, sędziowie, symbol, hasła, skarżony organ, powołane przepisy,
sygnatury powiązane z doc_id do skoku), prawomocność (linia Prawomocność: zaraz po dacie;
w JSON prawomocne: true/false/null + prawomocnosc = tekst oznaczenia CBOSA), sentencję
i uzasadnienie. Do długich uzasadnień: --fragment "interpretacja" (wycina okna wokół frazy;
brzegi okien dopasowane do granic zdań/wyrazów, … na brzegu oznacza ucięcie, [...] między oknami).
- sygnatura — szybkie odszukanie po sygnaturze:
python3 scripts/cbosa.py sygnatura II FSK 2870/18
- 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”).
Prawomocność i tryb --strict
CBOSA oznacza każde orzeczenie na stronie /doc/<id> kursywą „orzeczenie prawomocne” /
„orzeczenie nieprawomocne” (w wierszu „Data orzeczenia”); przy części orzeczeń (np. postanowienia
wpadkowe, świeże orzeczenia) pole jest puste — CBOSA nic nie twierdzi. Silnik czyta to oznaczenie
i w orzeczenie zawsze je pokazuje:
Prawomocność: prawomocne — bez uwag.
Prawomocność: NIEPRAWOMOCNE + głośne UWAGA na początku wyniku: orzeczenie mogło zostać
uchylone lub zmienione w wyższej instancji (typowo: wyrok WSA uchylony przez NSA). Zanim je
zacytujesz, skocz do orzeczenia powiązanego (Sygn. powiązane / ↳ powiązane, WSA ↔ NSA) i sprawdź
jego „Treść wyniku”. Przykład: I SA/Bk 226/18 (doc 109C7D1883) jest nieprawomocny — NSA w
II FSK 2870/18 (doc 8889489BE0) „uchylił zaskarżony wyrok”.
Prawomocność: nieznana + UWAGA — CBOSA nie podaje (puste pole) albo oznaczenia nie znaleziono
(zmiana układu strony). Nie traktuj tego jak „prawomocne”.
Lista wyników szukaj/sygnatura NIE ma tego oznaczenia (strona wyników CBOSA go nie niesie) —
flaga jest dostępna wyłącznie przez orzeczenie <doc_id>.
--strict blokuje wynik (komunikat + kod ≠ 0, nic na stdout także z --json), gdy: (1) transport TLS
nie został zweryfikowany, (2) strona orzeczenia nie została rozpoznana / wyszukiwarka nie odpowiedziała
poprawną stroną, (3) orzeczenie jest oznaczone jako nieprawomocne, (4) prawomocności na stronie
brak (puste pole / oznaczenie nieznalezione). Bez --strict dostaniesz w tych dwóch ostatnich
przypadkach pełny tekst z ostrzeżeniem. --strict nie sprawdza: czy wyrok NSA jest ostateczny
w sensie wznowienia/skargi nadzwyczajnej, czy przepisy powołane w orzeczeniu nadal obowiązują (→ ELI),
ani prawomocności wyników szukaj (brak danych na liście).
Typowy przepływ: szukaj (zawęź --sad/--od/--symbol) → wybierz doc_id → orzeczenie <doc_id>
(spójrz na Prawomocność:) → w razie potrzeby skacz po sygnaturach powiązanych (WSA ↔ NSA w tej samej
sprawie).
Zasady (ważne — dlaczego)
- To scraping, nie API. CBOSA nie udostępnia API ani zrzutów danych; silnik parsuje publiczny
HTML. Zmiana układu stron może zepsuć parsowanie — gdy wynik wygląda na obcięty/pusty, zajrzyj
pod podany link „Źródło" i zgłoś problem. Nie zrównoleglaj zapytań (wbudowany throttling ≥0,5 s;
serwer bywa przeciążony i ucina połączenia — silnik sam ponawia).
- Rozróżniaj trzy komunikaty — tylko jeden znaczy „awaria".
„Brak wyników (zweryfikowane zero)" = CBOSA wyszukało i nic nie ma → zmień zapytanie
(krótsza fraza, bez
--sad, szerszy zakres dat), nie ponawiaj tego samego.
„CBOSA odrzuciło zapytanie: …" = błąd parametrów (np. formatu daty) → popraw i ponów.
„BŁĄD: … strona bez listy wyników" albo „BŁĄD sieci" = serwer → ponów za chwilę.
- Baza ma charakter informacyjno-edukacyjny (nie jest urzędowym publikatorem, orzeczenia są
zanonimizowane). Zawsze podawaj sygnaturę + sąd + datę (np. „wyrok NSA z 10.02.2021,
II FSK 2870/18"); do dosłownego cytatu w piśmie podaj też link do strony orzeczenia.
- Dwuinstancyjność: sprawy WSA i NSA łącz przez pole „Sygn. powiązane" (skarga kasacyjna od
wyroku WSA → wyrok NSA). Sygnatury: NSA np.
II FSK 2870/18, WSA np. I SA/Bk 226/18.
Wyrok WSA oznaczony NIEPRAWOMOCNE może już nie obowiązywać — najpierw sprawdź wyrok NSA.
- Nie myl orzeczenia z przepisem. Brzmienie i aktualność powołanych przepisów potwierdź w ELI
(skill prawo-pl-eli) — orzeczenie mogło zapaść na starszym stanie prawnym.
- Okno serwisowe: CBOSA ma codzienną krótką przerwę ok. 21:00 — błędy o tej porze są normalne.
- Błąd certyfikatu TLS nie obniża zabezpieczeń automatycznie. Domyślnie daje
UNKNOWN.
Jeżeli operator świadomie akceptuje ryzyko, może dla jednego uruchomienia ustawić
CBOSA_INSECURE_TLS=1. Wynik JSON ma wtedy transport_tls_verified: false, a wynik tekstowy
ostrzeżenie przy treści. Takiej treści nie cytuj bez sprawdzenia w innym źródle.
- Szczegóły kontraktu HTML (pola formularza, struktura stron):
references/api.md.
Czego ten skill NIE obejmuje
- treści przepisów (ustawy/kodeksy → skill prawo-pl-eli),
- orzecznictwa SN, TK, sądów powszechnych i KIO (→ skill prawo-pl-saos),
- prawa UE i orzecznictwa TSUE (→ skill prawo-eu-eurlex),
- decyzji Prezesa UODO (→ skill prawo-pl-uodo; tu są tylko WYROKI ze skarg na nie),
- pism stron, akt sprawy (dostępne tylko dla stron postępowania w portalach sądów).
Jeśli zagadnienie wymaga tych źródeł — powiedz to wprost, nie udawaj, że CBOSA je pokryje.
Przykładowy przepływ
Pytanie: „jak NSA podchodzi do odpowiedzialności członka zarządu za zaległości podatkowe spółki
(art. 116 Ordynacji podatkowej)?"
- (opcjonalnie) ELI:
tekst <t.j. Ordynacji> --fragment "art. 116" → brzmienie przepisu
(skill prawo-pl-eli).
szukaj "odpowiedzialność członka zarządu" --sad NSA --od 2024-01-01 --symbol 6116
→ lista wyroków NSA z sygnaturami i doc_id.
orzeczenie <doc_id> --fragment "art. 116" → wycinki uzasadnienia wokół przepisu
- powołane przepisy + sygnatury powiązane (wyrok WSA I instancji).
- W odpowiedzi: zacytuj tezę, podaj sygnaturę + sąd + datę + link, zaznacz „baza CBOSA
(informacyjna) — do dosłownego cytatu zweryfikuj na stronie orzeczenia".
1---2name: prawo-pl-cbosa3description: Przeszukuje CBOSA — Centralną Bazę Orzeczeń Sądów Administracyjnych (orzeczenia.nsa.gov.pl): wyroki, postanowienia i uchwały NSA oraz 16 WSA (~2,4 mln orzeczeń od 2004 r.). Używaj przy KAŻDYM pytaniu o orzecznictwo sądów administracyjnych: skargi na decyzje organów, interpretacje podatkowe, „jak NSA/WSA interpretuje…", „wyrok NSA sygn. …", linia orzecznicza w sprawach administracyjnych i podatkowych (k.p.a., Ordynacja podatkowa, p.p.s.a., RODO/UODO, prawo budowlane, samorządowe, cudzoziemcy). CBOSA NIE MA oficjalnego API — skill czyta publiczne strony HTML (read-only, z throttlingiem). Orzecznictwo SN/TK/sądów powszechnych/KIO → skill prawo-pl-saos; treść przepisów → prawo-pl-eli; decyzje UODO → prawo-pl-uodo. Polish administrative courts (NSA/WSA) case-law from the public CBOSA database.4---56# Orzecznictwo sądów administracyjnych (NSA/WSA) z CBOSA78Skill do **orzecznictwa sądów administracyjnych**: Naczelnego Sądu Administracyjnego (NSA)9i 16 wojewódzkich sądów administracyjnych (WSA). Sięga do **CBOSA** — Centralnej Bazy Orzeczeń10Sądów Administracyjnych (`https://orzeczenia.nsa.gov.pl`, ~2,4 mln orzeczeń od 2004 r., wybrane11starsze). Używaj go zawsze, gdy pytanie dotyczy **skarg na decyzje administracyjne, interpretacji12podatkowych, postępowania przed organami** — czyli tam, gdzie właściwe są sądy administracyjne.1314**CBOSA nie ma oficjalnego API** — silnik czyta publiczne strony HTML wyszukiwarki (read-only,15bez logowania, z throttlingiem ≥0,5 s). To najbardziej kompletne i urzędowe źródło orzecznictwa16administracyjnego; SAOS (skill prawo-pl-saos) sądów administracyjnych praktycznie nie ma.1718## Podział ról (który skill do czego)19201. **NSA/WSA (administracja, podatki) → ten skill.** Skargi na decyzje, interpretacje21 indywidualne, kary administracyjne, RODO (skargi na decyzje UODO), budowlane, samorząd.222. **SN/TK/sądy powszechne/KIO → prawo-pl-saos.** Sprawy cywilne, karne, gospodarcze.233. **Treść przepisu → prawo-pl-eli** (ELI Sejmu). Orzeczenie mogło zapaść na starszym stanie24 prawnym — brzmienie i aktualność przepisu potwierdź w ELI.254. **Decyzje Prezesa UODO → prawo-pl-uodo**; wyroki WSA/NSA ze skarg na te decyzje → ten skill.265. **Delegując research subagentowi**, wpisz: „orzecznictwo sądów administracyjnych pobieraj27 przez `scripts/cbosa.py` (skill prawo-pl-cbosa)".2829## Narzędzie3031Wszystko robi helper `scripts/cbosa.py` (tylko biblioteka standardowa Pythona — bez instalacji).32Skrypt leży **obok tego pliku SKILL.md** (`<katalog skilla>/scripts/cbosa.py`) — NIE zakładaj, że to33`~/.claude/skills/prawo-pl-cbosa` (skill zainstalowany jako plugin leży w katalogu pluginów; w Claude34Code: `${CLAUDE_PLUGIN_ROOT}/skills/prawo-pl-cbosa`). Uruchamiaj wyłącznie helper z bieżącego pakietu:3536```37# 1) Claude Code: przy ładowaniu skilla podstawia ${CLAUDE_PLUGIN_ROOT} (pełna ścieżka poniżej).38CBOSA="${CLAUDE_PLUGIN_ROOT}/skills/prawo-pl-cbosa/scripts/cbosa.py"39# 2) Codex / Claude Desktop / instalacja ręczna: katalog TEGO pliku SKILL.md (Claude Code podaje go40# jako „Base directory for this skill”, Codex w liście skilli) — podstaw go zamiast <katalog skilla>.41[ -f "$CBOSA" ] || CBOSA="<katalog skilla>/scripts/cbosa.py"42# 3) Piaskownica (Cowork, czat z code execution): katalog pluginu bywa NIEWIDOCZNY dla powłoki — wtedy43# pobierz DOKŁADNIE tę wersję helpera (tag = wersja z nagłówka tego pliku). Suma SHA-256 jest44# sprawdzana w kodzie przed zapisem i przed każdym uruchomieniem; niezgodna = helper nie startuje.45[ -f "$CBOSA" ] || CBOSA=$(python3 - <<'EOF'46import hashlib, os, sys, urllib.request47WERSJA, SHA256 = "2.0.1", "e81aeed97349663993a0b188664db1c902b44d7970f7dc16fcb785fa016f06c4"48URL = f"https://raw.githubusercontent.com/jamarpl21/prawo-pl-eli/v{WERSJA}/plugins/prawo-pl-cbosa/skills/prawo-pl-cbosa/scripts/cbosa.py"49p = os.path.join(os.environ.get("TMPDIR", "/tmp"), f"prawo-pl-cbosa-{WERSJA}", "cbosa.py")50try:51 dane = open(p, "rb").read() if os.path.exists(p) else urllib.request.urlopen(URL, timeout=30).read()52except Exception as e:53 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.")54if hashlib.sha256(dane).hexdigest() != SHA256:55 os.path.exists(p) and os.remove(p)56 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.")57os.makedirs(os.path.dirname(p), exist_ok=True); open(p, "wb").write(dane); print(p)58EOF59) && [ -f "$CBOSA" ] || exit 160python3 "$CBOSA" <komenda> [...]61```6263Nie 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.6465(W przykładach niżej `python3 scripts/cbosa.py` oznacza `python3 "$CBOSA"`, jeśli nie jesteś w katalogu skilla.)6667### Komendy6869- **szukaj** — znajdź orzeczenia po kryteriach:70 `python3 scripts/cbosa.py szukaj "odpowiedzialność członków zarządu" --sad NSA --od 2024-01-01`71 Opcje: `--sad NSA | "WSA Warszawa" | "WSA Kraków" …` (16 miast; można też podać pełną nazwę),72 `--sygnatura "II FSK 2870/18"`, `--rodzaj wyrok|postanowienie|uchwala`, `--symbol 6119`73 (symbol sprawy, np. 611x podatki), `--sedzia "Nowak"`, `--od/--do RRRR-MM-DD` (można też sam rok74 `2024` albo `2024-01` — silnik uzupełni do początku/końca okresu),75 `--strona N` (od 1; stała wielkość strony: 10 wyników).76- **orzeczenie** — pełne orzeczenie po `doc_id` (z listy `szukaj`):77 `python3 scripts/cbosa.py orzeczenie 8889489BE0`78 Pokazuje metadane (sąd, sędziowie, symbol, hasła, skarżony organ, **powołane przepisy**,79 sygnatury powiązane z doc_id do skoku), **prawomocność** (linia `Prawomocność:` zaraz po dacie;80 w JSON `prawomocne: true/false/null` + `prawomocnosc` = tekst oznaczenia CBOSA), sentencję81 i uzasadnienie. Do długich uzasadnień: `--fragment "interpretacja"` (wycina okna wokół frazy;82 brzegi okien dopasowane do granic zdań/wyrazów, `…` na brzegu oznacza ucięcie, `[...]` między oknami).83- **sygnatura** — szybkie odszukanie po sygnaturze:84 `python3 scripts/cbosa.py sygnatura II FSK 2870/18`85- każda komenda przyjmuje `--json` oraz `--strict`; obie flagi działają przed komendą i po niej.86 Zero trafień / nierozpoznana odpowiedź API kończą się komunikatem i kodem wyjścia ≠ 0 — także z `--json`87 (nie dostaniesz pustego JSON-a, który wyglądałby jak „sprawdzone, nic nie ma”).8889### Prawomocność i tryb `--strict`9091CBOSA oznacza każde orzeczenie na stronie `/doc/<id>` kursywą **„orzeczenie prawomocne” /92„orzeczenie nieprawomocne”** (w wierszu „Data orzeczenia”); przy części orzeczeń (np. postanowienia93wpadkowe, świeże orzeczenia) pole jest **puste** — CBOSA nic nie twierdzi. Silnik czyta to oznaczenie94i w `orzeczenie` zawsze je pokazuje:9596- `Prawomocność: prawomocne` — bez uwag.97- `Prawomocność: NIEPRAWOMOCNE` + głośne **UWAGA** na początku wyniku: orzeczenie mogło zostać98 **uchylone lub zmienione w wyższej instancji** (typowo: wyrok WSA uchylony przez NSA). Zanim je99 zacytujesz, skocz do orzeczenia powiązanego (`Sygn. powiązane` / `↳ powiązane`, WSA ↔ NSA) i sprawdź100 jego „Treść wyniku”. Przykład: `I SA/Bk 226/18` (doc 109C7D1883) jest nieprawomocny — NSA w101 `II FSK 2870/18` (doc 8889489BE0) „uchylił zaskarżony wyrok”.102- `Prawomocność: nieznana` + UWAGA — CBOSA nie podaje (puste pole) albo oznaczenia nie znaleziono103 (zmiana układu strony). Nie traktuj tego jak „prawomocne”.104105**Lista wyników `szukaj`/`sygnatura` NIE ma tego oznaczenia** (strona wyników CBOSA go nie niesie) —106flaga jest dostępna wyłącznie przez `orzeczenie <doc_id>`.107108`--strict` blokuje wynik (komunikat + kod ≠ 0, nic na stdout także z `--json`), gdy: (1) transport TLS109nie został zweryfikowany, (2) strona orzeczenia nie została rozpoznana / wyszukiwarka nie odpowiedziała110poprawną stroną, (3) orzeczenie jest oznaczone jako **nieprawomocne**, (4) prawomocności na stronie111brak (puste pole / oznaczenie nieznalezione). Bez `--strict` dostaniesz w tych dwóch ostatnich112przypadkach pełny tekst z ostrzeżeniem. `--strict` **nie sprawdza**: czy wyrok NSA jest ostateczny113w sensie wznowienia/skargi nadzwyczajnej, czy przepisy powołane w orzeczeniu nadal obowiązują (→ ELI),114ani prawomocności wyników `szukaj` (brak danych na liście).115116Typowy przepływ: `szukaj` (zawęź `--sad`/`--od`/`--symbol`) → wybierz doc_id → `orzeczenie <doc_id>`117(spójrz na `Prawomocność:`) → w razie potrzeby skacz po sygnaturach powiązanych (WSA ↔ NSA w tej samej118sprawie).119120## Zasady (ważne — dlaczego)1211221. **To scraping, nie API.** CBOSA nie udostępnia API ani zrzutów danych; silnik parsuje publiczny123 HTML. Zmiana układu stron może zepsuć parsowanie — gdy wynik wygląda na obcięty/pusty, zajrzyj124 pod podany link „Źródło" i zgłoś problem. Nie zrównoleglaj zapytań (wbudowany throttling ≥0,5 s;125 serwer bywa przeciążony i ucina połączenia — silnik sam ponawia).1262. **Rozróżniaj trzy komunikaty — tylko jeden znaczy „awaria".**127 „Brak wyników (zweryfikowane zero)" = CBOSA wyszukało i nic nie ma → **zmień zapytanie**128 (krótsza fraza, bez `--sad`, szerszy zakres dat), nie ponawiaj tego samego.129 „CBOSA odrzuciło zapytanie: …" = błąd parametrów (np. formatu daty) → popraw i ponów.130 „BŁĄD: … strona bez listy wyników" albo „BŁĄD sieci" = serwer → ponów za chwilę.1313. **Baza ma charakter informacyjno-edukacyjny** (nie jest urzędowym publikatorem, orzeczenia są132 zanonimizowane). Zawsze podawaj **sygnaturę + sąd + datę** (np. „wyrok NSA z 10.02.2021,133 II FSK 2870/18"); do dosłownego cytatu w piśmie podaj też link do strony orzeczenia.1344. **Dwuinstancyjność:** sprawy WSA i NSA łącz przez pole „Sygn. powiązane" (skarga kasacyjna od135 wyroku WSA → wyrok NSA). Sygnatury: NSA np. `II FSK 2870/18`, WSA np. `I SA/Bk 226/18`.136 Wyrok WSA oznaczony `NIEPRAWOMOCNE` może już nie obowiązywać — najpierw sprawdź wyrok NSA.1375. **Nie myl orzeczenia z przepisem.** Brzmienie i aktualność powołanych przepisów potwierdź w ELI138 (skill prawo-pl-eli) — orzeczenie mogło zapaść na starszym stanie prawnym.1396. **Okno serwisowe:** CBOSA ma codzienną krótką przerwę ok. 21:00 — błędy o tej porze są normalne.1407. **Błąd certyfikatu TLS nie obniża zabezpieczeń automatycznie.** Domyślnie daje `UNKNOWN`.141 Jeżeli operator świadomie akceptuje ryzyko, może dla jednego uruchomienia ustawić142 `CBOSA_INSECURE_TLS=1`. Wynik JSON ma wtedy `transport_tls_verified: false`, a wynik tekstowy143 ostrzeżenie przy treści. Takiej treści nie cytuj bez sprawdzenia w innym źródle.1448. Szczegóły kontraktu HTML (pola formularza, struktura stron): `references/api.md`.145146## Czego ten skill NIE obejmuje147148- **treści przepisów** (ustawy/kodeksy → skill **prawo-pl-eli**),149- **orzecznictwa SN, TK, sądów powszechnych i KIO** (→ skill **prawo-pl-saos**),150- **prawa UE i orzecznictwa TSUE** (→ skill **prawo-eu-eurlex**),151- **decyzji Prezesa UODO** (→ skill **prawo-pl-uodo**; tu są tylko WYROKI ze skarg na nie),152- pism stron, akt sprawy (dostępne tylko dla stron postępowania w portalach sądów).153Jeśli zagadnienie wymaga tych źródeł — powiedz to wprost, nie udawaj, że CBOSA je pokryje.154155## Przykładowy przepływ156157Pytanie: „jak NSA podchodzi do odpowiedzialności członka zarządu za zaległości podatkowe spółki158(art. 116 Ordynacji podatkowej)?"1591. (opcjonalnie) ELI: `tekst <t.j. Ordynacji> --fragment "art. 116"` → brzmienie przepisu160 (skill prawo-pl-eli).1612. `szukaj "odpowiedzialność członka zarządu" --sad NSA --od 2024-01-01 --symbol 6116`162 → lista wyroków NSA z sygnaturami i doc_id.1633. `orzeczenie <doc_id> --fragment "art. 116"` → wycinki uzasadnienia wokół przepisu164 + powołane przepisy + sygnatury powiązane (wyrok WSA I instancji).1654. W odpowiedzi: zacytuj tezę, podaj sygnaturę + sąd + datę + link, zaznacz „baza CBOSA166 (informacyjna) — do dosłownego cytatu zweryfikuj na stronie orzeczenia".