Repository navigation
Releases: jamarpl21/prawo-pl-eli
Release list
v2.2.0
Modele i dokumentacja
- Skille są optymalizowane i testowane pod modele Claude Fable 5.1 i Claude Opus 5.5: oba przeszły ten sam zestaw 10 zadań z pułapkami wykrytymi w tym wydaniu z wynikiem 10/10 (wybór skilla, ostrzeżenia, brak cytowania z pamięci, poprawność) — opis w
docs/test-modeli-2026-10.mdi w README. - README, instrukcja Claude Desktop (osiem skilli), opisy pluginów i AGENTS.md zaktualizowane do stanu 2.2.0; raport audytu z sierpnia ma notę o stanie punktów z „Luk”.
ELI — tekst ujednolicony i przepisy, które jeszcze nie obowiązują
-
tekstdla kodeksów czytanych z PDF tekstu ujednoliconego Kancelarii Sejmu (m.in. k.p.c., k.k., u.k.s.c., Konstytucja) nie wkleja już notek z marginesu w treść przepisów. Dotądtekst DU 2026 468 --fragment "art. 461"zwracał zdanie przetykane notką „…stosunku § 1 1 w art. 461 wejdzie w życie z pracy…". Notka wychodzi teraz osobno jako[margines: Nowe brzmienie … wejdzie w życie z dn. 5.11.2026 r. (Dz. U. … poz. 1046).], a brzmienie obecne[ … ]i przyszłe< … >są osobnymi akapitami. -
Nagłówek takiego tekstu mówi, że to nieurzędowy tekst ujednolicony z datą wydruku i listą „Opracowano na podstawie”. Dotąd był podpisany samą datą stanu prawnego t.j., a lista „zmian po t.j.” kazała nanosić ręcznie zmiany, które w tekście już są. Pozycje tej listy są teraz oznaczone jako uwzględnione albo spoza podstawy tekstu.
-
Przed tekstem i fragmentem pojawia się ostrzeżenie „PRZEPISY, KTÓRE JESZCZE NIE OBOWIĄZUJĄ” z datami — z notek tekstu ujednoliconego i z przypisów t.j. „wejdzie w życie z dniem …” (np. k.c. art. 860 § 3–4 od 1.11.2028), także gdy fragment leży wewnątrz dodanego działu (k.p.c. dział IVFA od 28.10.2026).
--fragmentznajduje artykuły dodane lub zmienione w nawiasach (<Art. 477⁶ᵃ.). -
metaitekstostrzegają, gdy akt jeszcze nie wszedł w życie (np. DU 2026/1046 — status API „obowiązujący”, wejście w życie 5.11.2026) albo gdy część przepisów wchodzi w życie później według „Uwag”.metapodaje urzędową formę cytatu („Dz. U. z 2001 r. Nr 112, poz. 1198”) i, przy akcie uchylonym, akt uchylający. -
Notki o przyszłym brzmieniu są oddawane w całości także w liczbie mnogiej („wejdą w życie”, „utracą moc”), na dole strony, przy tabelach i gdy dwie notki na siebie nachodzą, i przypinane do artykułu, którego dotyczą. W przeglądzie wszystkich 186 obowiązujących tekstów ujednoliconych bez HTML poprawnie oddanych jest 1119 z 1120 notek (pierwsza wersja poprawki: 814), a w żadnym akcie notka nie wpada w treść przepisu (było 47 aktów, m.in. Ordynacja podatkowa, k.p.k., k.k.s., p.p.s.a.).
-
Notka „wejdzie w życie z dniem określonym w komunikacie” daje ostrzeżenie „termin wejścia w życie nieznany”; przypis przy nagłówku rozdziału (np. k.wyb. rozdział 11b) ostrzega przy każdym artykule tego rozdziału.
-
Indeks górny sklejony w PDF jest rozpoznawany (art. 13¹ nie udaje już „Art. 131.”), a zapis z
struktura(„art. 7_1”) działa w--fragment;strukturapodaje gotową postać „art. 7(1)”. Lista „Opracowano na podstawie” nie gubi pozycji po kropce w środku, a rozstrzelony tytuł („M IN I S TR A F IN AN SÓ W”) jest sklejany. -
--fragment "§ N"i--fragment "art. N § M"wycinają dokładnie jeden paragraf. Dotąd w rozporządzeniach fragment zaczynał się w środku wyrazu albo od końca poprzedniego paragrafu (np.tekst DU 2017 1692 --fragment "§ 4"dawał 1609 słów zamiast 301); w aktach z artykułami narzędzie pokazuje wszystkie trafienia z artykułem, w którym leżą. -
Na tekście jednolitym z obwieszczeniem Marszałka lista nowelizacji jest porównywana z obwieszczeniem: zmiany ujęte w t.j. są oznaczone „UWZGLĘDNIONA”, a nieobjęte — „NIE objęta t.j.”. Dotąd np. k.p. (DU 2026/1245) podawał nowelizację DU 2026/1046 jako zmianę „po tekście jednolitym”, choć t.j. ją już obejmuje. Przypisy odsyłające do innych przypisów są rozwijane, więc przy dwóch brzmieniach przepisu (art. 94³ k.p.) widać, które obowiązuje dziś.
-
--strictblokuje tekst, w którym brakuje treści stron PDF bez warstwy tekstowej; w ścieżce HTML tytuł aktu nie jest sklejany („Ministra Zdrowiaz dnia”), znika artefakt „Pokaż całość” i podwójne przypisy.
ELI — akty Dz.U. i M.P. 2000–2011 z PDF (PR #14, PolskiAgentW)
tekstdla aktów Dz.U. i M.P. 2000–2011 bez HTML (M.P. z tych lat nie ma HTML wcale) zwraca tekst samego aktu, łam po łamie, z poprawnymi polskimi literami. Dotąd łamy się mieszały („ustawy z dnia § 4. 1. Minimalna norma”), litery były zniekształcone („Za∏àcznik”), więc--fragmentnie znajdował fraz z polskimi znakami, a tekst zawierał sąsiednie akty z tych samych stron zeszytu (tekst DU 2003 991zaczynał się od załącznika do poz. 990).- Po recenzji: tabele nie są rozrywane na łamy (stawki zostają przy pozycjach), koniec aktu jest rozpoznawany po tytule następnego aktu (komórka tabeli z liczbą nie ucina już aktu), zniekształcone litery są rozpoznawane po treści strony (także DU 2010 poz. 1), ze znaku wodnego www.rcl.gov.pl nie zostają resztki, a ostatni akt zeszytu nie zawiera stopki wydawniczej z ceną i ISSN.
tekstdla ogłoszonych aktów Dz.U. i M.P. z lat 1990–1999 bez HTML zwraca sam akt, łam po łamie, bez nagłówków stron, spisu treści zeszytu, sąsiednich aktów i ogłoszeń wydawcy; wynik ostrzega, że warstwa tekstowa tych PDF to OCR, więc liczby, daty i kwoty trzeba sprawdzić w PDF. Na 24 aktach z lat 90. porównanych z HTML odsetek słów we właściwej kolejności wzrósł z 0,58 do 0,90, bez pogorszenia w żadnym akcie.- W zeszytach 2000–2011 spis treści pierwszej strony nie psuje już podziału na łamy, a akt zaczynający się od sygnatury („Sygn. akt”) jest poprawnie wycinany.
- Strony-skany bez warstwy tekstowej są odczytywane przez OCR, gdy w systemie jest
tesseractz językiem polskim: do 10 stron samodzielnie, dłuższe skany ztekst … --ocr(ok. 7 s na stronę; wynik zapamiętywany na dysku),--bez-ocrwyłącza OCR. Tekst z OCR ma wyraźne ostrzeżenie, że litery, cyfry, daty i kwoty mogą być przekłamane, a--strictgo blokuje. Np. DU 1992 poz. 413 (sam skan) dotąd kończyło się błędem „pdftotext nie zwrócił tekstu”. - Zeszyty 2000–2011: strony z reklamą wydawcy nie są doklejane do ostatniego przepisu aktu (DU 2010/1128, 2010/20), indeks górny jest odczytywany (art. 222¹ zamiast „art. 2221”), a wyraz łamany z powtórzonym dywizem jest scalany („Środkowo-Wschodniej”).
- Przypisy z dołu łamu w zeszytach 1990–2011 trafiają pod akapit, którego dotyczą, zamiast w środek tekstu (na 109 losowych zeszytach przypisy bez treści: 372 → 135), a podpis dosunięty do krawędzi lewego łamu nie przestawia już kolejności łamów.
tekstostrzega, ile stron PDF nie ma warstwy tekstowej (np. DU 2010 poz. 1: 563 z 565 stron to skany) — tej treści w wyniku nie ma.- Na 25 losowych aktach Dz.U. 2000–2011, porównanych z ich wersją HTML, średni odsetek słów we właściwej kolejności wzrósł z ok. 0,49 do ok. 0,80, bez pogorszenia w żadnym akcie.
Rejestr umów
- Gdy API ogranicza liczbę zapytań (HTTP 429), narzędzie samo czeka i ponawia zapytanie (do 60 s) zamiast od razu kończyć błędem.
- Kwoty są pokazywane bez „zł”, a
umowamówi wprost, że rejestr nie podaje waluty ani tego, czy kwota jest netto czy brutto — dotąd dopisek „zł” sugerował złotówki także przy umowach zagranicznych.
E-dzienniki urzędowe województw
tekstostrzega o stwierdzonej nieważności aktu (z tytułem rozstrzygnięcia nadzorczego lub uchwały RIO i unieważnionym paragrafem), o sprostowaniach, uchyleniach i zmianach. Dotądtekst DS 2026 584 --fragment "wyniki pracy placówki"podawał unieważniony § 6 ust. 4 bez słowa, także z--strict. Teraz--strictblokuje akt nieważny w całości, fragment z unieważnionej jednostki i sytuację, gdy nie da się pobrać powiązań; nieważność w części i sprostowanie dają głośne ostrzeżenie.aktpodaje zakres nieważności z tytułu rozstrzygnięcia (np. „§ 6 ust. 4”), urzędową formę cytatu („Dz. Urz. Woj. Dolnośląskiego z 2026 r. poz. 584”) i datę wejścia w życie ze źródłem, gdy rejestr ją podaje.- Dziennik mazowiecki znów działa z helpera — przyczyną był filtr antybotowy serwera, nie blokada ruchu spoza Polski, jak twierdził komunikat.
- Błędy TLS są nazywane trafnie: dla dziennika pomorskiego „certyfikat WYGASŁ (ważny do 2026-10-01)” zamiast mylącej porady o brakującym certyfikacie pośrednim.
tekst --fragment "§ N"nie łapie wiersza numeracji kolumn tabeli w załączniku („§ 1. 2. 3. 4.”), a paragraf z załącznika jest oznaczony jako trafienie w załączniku.- Nagłówki dzienników lubuskiego i warmińsko-mazurskiego z PDF są odczytywane poprawnie („Gorzów Wielkopolski, dnia …”), a pozycje techniczne dziennika śląskiego nie trafiają już do wyników jako puste wiersze.
EUR-Lex
teksti--pdfaktu bazowego wymieniają sprostowania w danym języku (CELEX, data, poprawione artykuły) i wskazują wersję skonsolidowaną z poprawnym brzmieniem;--fragmentna sprostowanym artykule ostrzega, że brzmienie jest niesprostowane, a--strictblokuje taki tekst. Dotądtekst 32016R0679 --fragment "art. 4"podawał bez ostrzeżenia brzmienie RODO sprzed sprostowania („informacje” zamiast „wszelkie informacje”; podobnie art. 10 i art. 82 ust. 2).teksti--pdfdziałają dla starszych aktów, np. dyrektywy 95/46/WE i obowiązującej dyrektywy e-Privacy 2002/58/WE, oraz dla PDF wersji skonsolidowanych. Dotąd kończyły się błędem 404 z sugestią złego numeru CELEX; teraz komunikat mówi, czego brakuje (wersji językowej albo HTML).- Wskazówka do urzędowego cytatu obejmuje sprostowania, nie tylko „akt bazowy + zmiany”.
metaodróżnia koniec obowiązywania aktu od częściowego upływu ważności (np. rozporządzenie 470/2009: dotąd „Koniec obowiązywania: 2022-01-27” przy statusie „OBOWIĄZUJE”, teraz brak daty końca i częściowy upływ ważności art. 30), opisuje rodzaj dat (wejście w życie / stosowanie) i podaje termin transpozycji także wtedy, gdy CELLAR zapisuje go jako ogólny termin (dyrektywa 2002/12: 20.09.2003, art. 3.1).odniesienianie podaje już każdej pozycji dwa razy (rozporządzenie 470/2009: ...
v2.1.0
- Dodano ósmy plugin
prawo-pl-orzeczenia-ms: wyszukiwanie orzeczeń SA/SO/SR bezpośrednio w Portalu Orzeczeń MS, metryki, pełne uzasadnienia, powołane przepisy, eksport PDF i kanały RSS. - Dostęp do portalu MS działa przez standardową bibliotekę Pythona z przetestowanym User-Agentem, bez
agent-browser, JavaScriptu i dodatkowych bibliotek. Blokada F5/TSPD lub niekompletna odpowiedź jest zgłaszana jako błąd, a nie brak orzeczeń. - Nowy silnik oddziela datę wyroku od daty publikacji, zachowuje indeksy górne i rozpoznaje tekstowe oraz graficzne oznaczenie nieprawomocności i sygnalizuje nieustalony status;
--strictblokuje pobieranie dokumentu bez potwierdzenia prawomocności. - Udokumentowano filtry wyszukiwarki, ograniczony zakres RSS oraz dobór źródła MS/SAOS/CBOSA; dodano plugin do obu marketplace’ów i walidacji wydania.
- Dodano 29 testów nowego silnika, opartych na odpowiedziach portalu i przypadkach błędnych; przed wydaniem zweryfikowano także wyszukiwanie, pobieranie treści, PDF i RSS na żywo.
v2.0.3
- Dodano kontakt przez LinkedIn w polu
author.urlwszystkich siedmiu pluginów, w manifestach Claude i Codex oraz wpisach autorów w marketplace Claude. - Dodano ten changelog i stałe instrukcje jego prowadzenia w
AGENTS.md. - Opisy kolejnych wydań GitHub Release są pobierane z changelogu. Brak wpisu dla wydawanej wersji blokuje publikację.
v2.0.2
- ELI: tryb
--strictblokuje wynik, gdy odpowiedź endpointu odniesień ma nieprawidłową strukturę. W zwykłym trybie tekstowi towarzyszy ostrzeżenie o niezweryfikowanej aktualności. - ELI: odpowiedzi JSON i inne dane niebędące tekstem z endpointu HTML nie są już wyświetlane jako treść aktu.
- EUR-Lex: brak znalezionych konsolidacji nie jest już przedstawiany jako dowód, że akt nie był zmieniany; komunikat kieruje do sprawdzenia zmian i sprostowań.
- Rejestr umów: komendy
najnowszeiszukajsprawdzają strukturę odpowiedzi. Obiekt błędu ani pusta pierwsza strona przy dodatniej liczbie trafień nie są traktowane jako poprawny wynik, także w trybie JSON. - Dodano testy regresyjne powyższych przypadków.
- Dodano kontakt z Krzysztofem Gibkiem przez LinkedIn w README.
v2.0.1
Zmiany w tym wydaniu (tematy commitów; szczegółowy opis zmian prowadzony jest w CHANGELOG.md od wersji 2.0.2):
- fix: 2.0.1 — helper w piaskownicy z przypiętego tagu, weryfikowany sumą SHA-256 z SKILL.md
Full Changelog: v2.0.0...v2.0.1
v2.0.0 — po audycie merytorycznym
2.0.0 — po audycie merytorycznym
Wydanie główne. 22–23 sierpnia 2026 wersja 1.7.0 wszystkich siedmiu silników przeszła audyt merytoryczny: nie jakości kodu, lecz tego, czy to, co narzędzia zwracają, jest w 100% prawdą w zestawieniu z niezależnym źródłem urzędowym (ISAP i urzędowe PDF-y Dz.U., strony i PDF-y dzienników wojewódzkich, EUR-Lex, sn.pl / ipo.trybunal.gov.pl / uzp.gov.pl, surowe strony CBOSA, portal UODO i uodo.gov.pl, API rejestru umów i Biała lista VAT). 15 agentów w trzech fazach (sondy per silnik → adwersaryjna weryfikacja → krytyk kompletności), 129 kontroli: 73 TRUE, 37 PARTIAL, 18 FALSE, 1 UNVERIFIABLE; 56 defektów (7 potwierdzonych adwersaryjnie, 0 obalonych). Pełny raport z dowodami i krokami reprodukcji: docs/audyt-merytoryczny-2026-08.md; tabela defekt → naprawa: README, sekcja „Audyt merytoryczny (sierpień 2026) i wydanie 2.0".
Tam, gdzie silnik ma tekst, brzmienie przepisów zgadzało się z urzędowym PDF znak po znaku; błędy dotyczyły metadanych i kompletności — dat ogłoszenia, aktualności tekstu, statusów uchylenia i prawomocności, brakujących stron i relacji oraz dokumentacji obiecującej więcej, niż kod sprawdzał. To wydanie naprawia wszystkie 56.
Najważniejsze naprawy
- ELI / e-dzienniki: „Ogłoszono" było datą uchwalenia, nie publikacji (sygnaliści: 14.06 vs 24.06.2024; DS 3292: 7 tygodni) — teraz
Data aktu+Ogłoszono(promulgation),Stan prawny na,Uwagio rozłożonym wejściu w życie. Treść aktu bez HTML (k.c. Dz.U. 2026 poz. 795, Konstytucja; wszystkie dzienniki wojewódzkie, gdzietext.htmlto tylko 1. strona) pochodzi z urzędowego PDF przezpdftotext— art. 187 k.c. w brzmieniu z 2026 r., nie z 2024 r. - ELI: „Nowelizacje po tekście jednolitym" uzupełniane z aktu bazowego (k.p.c.: 5 zamiast 2);
Znaleziono=totalCount; przypisy bez wchodzenia w numerację jednostek. - e-dzienniki: listing bez
?limit=100000(przestarzały cache serwera — brak najnowszych aktów, unieważniony MPZP jako „obowiązujący"); detekcja uszkodzonego tekstu; dociąganie łańcucha TLS przez AIA (MP/LS/LD) z pełną weryfikacją; powiązania aktu (sprostowania, uchylenia, rozstrzygnięcia nadzorcze). - UODO: decyzje uchylone przez sąd (Bisnode — kara 943 470 zł; Morele) pokazywały „w obrocie: tak" — teraz blok „Kontrola sądowa" z sygnaturami WSA/NSA, nagłówek „DECYZJA UCHYLONA PRZEZ SĄD",
--strictblokuje;--od/--doopisane zgodnie z prawdą (data decyzji) +--pub-od/--pub-do; tekst zbody.html. - CBOSA: flaga prawomocności ze strony orzeczenia;
--strictblokuje nieprawomocne. - SAOS: granice zbiorów SN/TK/KIO z dokładnością do dnia (22.06.2016 / 9.12.2015 / 6.09.2018), potwierdzane na żywo;
art. 556¹zamiast łamania linii; ostrzeżenie o spłaszczonych indeksach w tekstach SN; działające wzorce adresów źródeł; typy orzeczeń po polsku. - EUR-Lex: daty aktu bazowego na wersji skonsolidowanej; ostrzeżenie o nieaktualnych datach stosowania po nowelizacji (AI Act); terminy transpozycji dyrektyw; uchylenia w obie strony; ostatni artykuł bez podpisów i przypisów.
- Rejestr umów:
--nip/--regon/--jsfpfiltrują zamawiającego (--rola wykonawca|dowolna), okno 10 000 bez fałszywego zera, prawdziwa sekcjazmianyUmowy+--zmiana-rodzaj/--zmiana-od/--zmiana-do, adresy z powiatem i gminą. - Wszystkie:
szukajkończy zero trafień komunikatem i kodem ≠ 0 także z--json; kontrakt--strictopisany per silnik w SKILL.md i rozszerzony; helpery lokalizowane wyłącznie w bieżącym pakiecie (bezfind/curl).
Dodatkowo ultrareview całego kodu (2 przebiegi): 5 ustaleń (1 normal, 4 nit) — fałszywa „Przerwa techniczna" w SAOS dla poprawnego JSON-u z tą frazą, walidacja miesiąca w --od/--do, obcinanie --limit UODO przed offsetem, parametr 0 gubiony w query, kontrola przekierowań https→http w rejestrze umów i e-dziennikach — wszystkie naprawione.
Zmiany łamiące
meta --jsonw EUR-Lex jest obiektem (meta,akt_bazowy,zmieniajace,wersje_skonsolidowane,ostrzezenia) zamiast listy.szukaj --jsonprzy zerze trafień kończy się kodem ≠ 0 i komunikatem zamiast[]/count: 0.--nip/--regon/--jsfpw rejestrze umów dopasowują wyłącznie zamawiającego.--strictodrzuca więcej klas wyników (uchylone decyzje, nieprawomocne orzeczenia, tekst zastępczy, niekompletny listing).- Zalecany
pdftotext(poppler):brew install poppler/apt install poppler-utils. Bez niego tekst aktów bez HTML pochodzi z tekstu zastępczego z ostrzeżeniem, a--strictgo odrzuca.
Weryfikacja
Testy jednostkowe offline: 276 → 502; tools/validate.py zielony (lockstep 2.0.0); każda naprawa sprawdzona na żywo na przypadkach z audytu.
Aktualizacja: claude plugin update <nazwa>@gibek-skills (każdy z 7 pluginów) albo claude plugin marketplace update gibek-skills.
v1.7.0
Zmiany w tym wydaniu (tematy commitów; szczegółowy opis zmian prowadzony jest w CHANGELOG.md od wersji 2.0.2):
- feat: punkty 1 i 3 - dodaj tryb strict dla weryfikacji
- fix: punkt 4 - blokuj starszy tekst jednolity w strict
- docs: punkt 2 - przypnij helpery do biezacego pakietu
- fix: punkt 5 - wymus HTTPS na bialej liscie hostow
- fix: punkt 1 - blokuj strict przed emisja wyniku
- docs: obsluz reczna instalacje helperow
- fix: egzekwuj strict przed emisja wynikow
- fix: strict także na starszym t.j. (ELI), metadane aktu bazowego bez blokady (EUR-Lex), --strict we wszystkich 7 silnikach
- chore: lockstep 1.7.0 — tryb --strict we wszystkich silnikach (weryfikacja przed emisją wyniku), helpery przypięte do pakietu
Full Changelog: v1.6.6...v1.7.0
v1.6.6
Authenticated transport for legal-citation sources (PR #6 by @mwatola-glitch, cherry-picked + follow-up):
- EUR-Lex/CELLAR: act text is now always fetched over HTTPS — including manifestation URLs from SPARQL and, per follow-up, redirect targets (CELLAR answers 303 with an
http://Location even for https requests). - CBOSA: a TLS certificate verification failure no longer silently downgrades to an unverified connection — it yields
UNKNOWNunless the operator explicitly opts in withCBOSA_INSECURE_TLS=1; results then carrytransport_tls_verified: false.
Full Changelog: v1.6.5...v1.6.6
v1.6.5
Zmiany w tym wydaniu (tematy commitów; szczegółowy opis zmian prowadzony jest w CHANGELOG.md od wersji 2.0.2):
- fix: distinguish transport/API failure (UNKNOWN) from confirmed empty result
- fix: 404/410 to zweryfikowany brak, a awaria zapytania pobocznego nie odbiera treści głównej
- chore: lockstep 1.6.5 — kontrakt found/verified_absent/unknown we wszystkich silnikach sieciowych
Full Changelog: v1.6.4...v1.6.5
v1.6.4
Zmiany w tym wydaniu (tematy commitów; szczegółowy opis zmian prowadzony jest w CHANGELOG.md od wersji 2.0.2):
- fix: --json po komendzie we wszystkich silnikach + koniec fałszywych negatywów z odmiany i zamkniętych zbiorów — wydanie 1.6.4
Full Changelog: v1.6.3...v1.6.4