Przejdź do głównej zawartości

Skille anty-slop: unslop, miodkuj i co mówią ewaluacje

Unslop to agent skill, który usuwa wzorce sprawiające, że tekst brzmi jak napisany przez maszynę, oparty na trzech deterministycznych skanerach w Pythonie, a nie na samej ocenie modelu. Ma cztery komendy, katalog 16 dosłownych fraz i 36 wzorców strukturalnych oraz, co rzadkie w tej kategorii, pakiet ewaluacji, którego ostatni publiczny wynik sam autor zapisuje jako no-ship.

Każdy zespół publikujący teksty pisane z AI prędzej czy później dostaje ten sam komentarz w review: „to brzmi jak ChatGPT”. Nikt nie potrafi wskazać zdania, które to zrobiło. Recenzent reaguje na kształt, nie na słowo: wstęp, który chrząka przed zdaniem, trzy przykłady tam, gdzie wystarczyłyby dwa, moralizujący akapit na końcu. Ten kształt przeżywa każdą rundę „napisz to bardziej naturalnie”, bo model, który przepisuje, ma te same domyślne odruchy co model, który pisał.

  • Słownik do komentarza, który i tak zostawiasz w review: nie „coś tu nie gra”, tylko „negatywny paralelizm, trzy razy w jednej sekcji, plus moralizująca koda”.
  • Detekcję, którą uruchomisz w CI zupełnie bez agenta: skanery unslopa to Python ze standardowej biblioteki, kończący się kodem różnym od zera przy trafieniu.
  • Tryb audytu, który raportuje i niczego nie zmienia, czyli dokładnie ten tryb, którego chcesz przez pierwsze dziesięć razy.
  • Sensowną odpowiedź w sporze o półpauzy, razem z tym, kiedy tę regułę zignorować.
  • Dla polszczyzny: zestaw reguł, który nie jest przetłumaczoną angielską listą słów, bo tropy są tu strukturalnie inne.

Unslop dzieli problem wzdłuż jednej osi i ten podział jest całym projektem. Detekcja jest tania, deterministyczna i mierzalna, więc to ona niesie zaufanie. Praca nad głosem jest generatywna, więc chodzi pod spodem: jak ujmuje to README, „any mimic or rewrite that reintroduces a tell fails, however well it matches the voice”.

Cztery komendy pokrywają całość:

KomendaCo robi
rewriteDomyślna. Diagnozuje tekst, odbudowuje go pod strażnikami, waliduje wynik.
cleanupTryb współautora: propozycje do przejrzenia, każda ze spanem, severity, kategorią i uzasadnieniem. Ma wariant report-only, który niczego nie zmienia.
teachBuduje wielokrotnego użytku profil głosu z twoich własnych próbek.
mimicPisze lub przepisuje w wyuczonym głosie, a potem przechodzi pełną baterię bramek usuwania.

Samo /unslop <tekst> bez nazwy komendy domyślnie wchodzi w rewrite. Routing łapie też frazy: „just flag it” trafia do cleanup w trybie report-only, a „does this sound like me?” do sprawdzenia głosu.

Najbardziej warta skopiowania, nawet jeśli nigdy tego nie zainstalujesz, jest czwórka bramek kontraktowych w cleanup. To one sprawiają, że przycisk „przyjmij wszystko” jest bezpieczny z konstrukcji, a nie z nadziei. Span-minimality: edycja zmienia tylko własny span, więc przepisanie całego zdania nie przechodzi. Replacement-scanner: każda proponowana zamiana przechodzi oba skanery osobno i nie dodaje nowego naruszenia w kontekście. Accept-all: zastosowanie wszystkich propozycji daje dokument, który dalej przechodzi skanery i dalej zachowuje wszystkie ograniczenia względem oryginału. Span-overlap: dwie propozycje nie mogą walczyć o te same znaki.

Trzy skanery i dlaczego są w Pythonie, a nie w promptcie

Dział zatytułowany „Trzy skanery i dlaczego są w Pythonie, a nie w promptcie”

Detekcja to trzy deterministyczne przebiegi, od zgrubnego do najdrobniejszego. Każdy zwraca JSON, kończy się kodem różnym od zera przy trafieniu i ma wiersze ochrony przed fałszywym alarmem, żeby dosłowne użycie go nie wywoływało.

  1. Warstwa fraz (banned_phrase_scan.py) — 16 dosłownych wyzwalaczy, każdy z kontekstową ochroną przed fałszywym trafieniem. Słowa pod nadzorem odpalają tylko w swoich żargonowych kolokacjach. Cytaty, blockquote’y i bloki kodu są maskowane przed skanowaniem, więc poradnik opisujący złe pisanie nie zgłasza własnych przykładów.

  2. Warstwa struktury (structure_scan.py) — 36 wzorców strukturalnych plus metryki na poziomie dokumentu, o nazwach, które same mówią, co mierzą: sentence_burstiness, paragraph_cv, triad_density, one_line_staccato_share, connective_paragraph_openers, signpost_density, conclusion_coda, summary_sandwich. To ta warstwa łapie rytm: równą długość zdań, serie staccato, każdy akapit otwierany na „However,” albo „Moreover,” i listę z pogrubionymi etykietami udającą prozę.

  3. Warstwa sylwetki (silhouette_scan.py) — ocenia, jak ułożone są myśli, czyli piętro nad powierzchnią. Łapie jechanie po konspekcie i pętle podsumowań: akapity otwierane sygnałem dyskursywnym zamiast własną tezą (scaffold_opener_share), słownictwo ze wstępu, które znika w środku i wraca na końcu (callback_content, w repo nazwane najsilniejszym pojedynczym tropem), i nagłówki sekcji powtarzające konspekt ze wstępu (heading_preview).

Na korpusie zakomitowanym w repo warstwa sylwetki rozdziela się czysto: 12 z 12 dokumentów AI oznaczonych, 0 z 8 dokumentów ludzkich. Uczciwe zastrzeżenie też jest w README: atak polegający na skasowaniu sygnałów dyskursywnych rozbija metrykę rusztowania, dlatego sylwetka jest punktowana łącznie ze skanerem struktury, a nie samodzielnie.

Ponieważ skanery to zwykły Python 3.8+ bez zewnętrznych zależności, działają bez skilla i bez agenta:

Okno terminala
python3 scripts/banned_phrase_scan.py < input.txt
python3 scripts/structure_scan.py --genre docs < README.md
python3 scripts/silhouette_scan.py < input.txt
python3 scripts/validate_preservation.py original.txt transformed.txt

To jest wersja do wpięcia w hooka przed publikacją. Agent jest od decyzji ocennych, skaner od tych, które oceny nie wymagają.

Dlaczego katalog reguł na 50 KB prawie nic nie kosztuje w kontekście

Dział zatytułowany „Dlaczego katalog reguł na 50 KB prawie nic nie kosztuje w kontekście”

Katalog fraz unslopa to plik markdown na 50 KB. Jego runner ewaluacji jest większy. Skill, który ładowałby to wszystko przy każdej sesji, byłby nie do obrony, i nie robi tego, ze względu na to, jak działa format Agent Skills.

Ładowanie ma trzy etapy. name i description z frontmattera siedzą w system prompcie cały czas, po około 100 tokenów na skill. Treść SKILL.md ładuje się dopiero, gdy skill się odpali, i ma się mieścić w około 5 tys. tokenów. Cała reszta (references/, presets/, scripts/) ładuje się dopiero wtedy, gdy coś po nią sięgnie, a skrypty idą przez bash, więc do kontekstu wchodzi tylko ich wyjście, nigdy źródło.

Katalog nie kosztuje więc nic, dopóki przepisanie faktycznie nie potrzebuje reguły, a pakiet ewaluacji nie kosztuje nic nigdy, chyba że kontrybuujesz do projektu. To jest architektoniczny powód, dla którego skill tej wielkości ma sens, i warto to zrozumieć, zanim napiszesz własny: budżetem jest opis, nie repozytorium.

Każda rodzina jest przypięta wierszem ewaluacji, a każdy wpis ma severity: hard (zawsze trop) albo soft (domyślny strażnik rejestru, który twój prawdziwy głos może nadpisać).

RodzinaZłapane przykłady
Chrząkanie na wstępie“Here’s the thing:”, “The uncomfortable truth is”, “Let me be clear”, “It turns out”, “Let’s dive in”
Podpórki emfazy“Full stop.”, “Let that sink in.”, “Make no mistake”, “Read that again.”, “This cannot be overstated.”
Negatywny paralelizm“It’s not X, it’s Y”, “Not only… but also”, “Not merely X, but Y”, “No X, no Y, just Z”
Napompowana doniosłość“stands as a testament to”, “pivotal moment”, “enduring legacy”, “rich tapestry”, “cornerstone of”
Fałszywa sprawczość“the numbers speak for themselves”, “the data tells a story”, “paints a clear picture”
Pytanie do samego siebie“Why does this matter? Because…”, “What does this mean for…”, “Why should you care?”
Mgliste przypisanie“Experts argue”, “Studies show”, “Some critics” — formy z podaniem źródła zostają czyste
Kolokacje korpo-żargonu“navigate challenges”, “leverage synergies”, “deep dive”, “circle back”, “move the needle”
Resztki czatbota“I hope this helps”, “Certainly!”, “Great question!”, “as an AI language model”
Wycieki łańcucha rozumowania“Let me think step by step”, “Breaking this down”, “Here’s my thought process”

Pojedyncze słowa są stopniowane, a nie zakazywane na sztywno: delve, tapestry, underscore i load-bearinghard, a myriad i plethorasoft. Te pod nadzorem mają wyjątki: load-bearing jest twardym trafieniem jako metafora i wprost wyłączone w „literal construction and mechanics”.

Przy interpunkcji katalog jest bezceremonialny i to jest ta reguła, o którą ludzie się kłócą:

Em-dashes are the single most reliable AI punctuation tell. […] Rule: Default to zero em-dashes. If one is absolutely necessary for rhythm and a comma or period genuinely won’t work, allow one per several paragraphs at most. Two or more in any paragraph is always wrong.

Pętla utrzymania jest najbardziej przenośną rzeczą w tym repo, a przykład z README jest dobry. Autor złapał frazę „Four presets, one input.” na własnej stronie marketingowej: samodzielny nagłówek w kadencji sloganu. Precheck powiedział, że katalog tego nie pokrywa, i to właśnie czyniło okaz wartym dodania.

Wiersz ewaluacji wylądował najpierw na czerwono, zanim istniała jakakolwiek poprawka:

{
"id": "OWNER-01",
"stdin": "Four presets, one input.",
"assertions": [
{ "type": "json", "path": "total_violations", "gte": 1 },
{ "type": "violation_category_equals", "value": "slogan_fragment" }
]
}

Dopiero potem powstał wzorzec, który przestawił go na zielono, celowo zakotwiczony na granicach linii: tropem jest pozycja samodzielnego nagłówka, a nie sam kształt „N X, one Y”. Wiersz ochronny dowodzi, że „The unit has two bedrooms, one bath, and a den.” zostaje czyste, bo te same słowa w środku zdania nigdy nie docierają do granicy linii.

Na tym polega cała dyscyplina: nowy wzorzec wchodzi dopiero wtedy, gdy wiersz fałszywie negatywny bez niego nie przechodzi oraz wiersz fałszywie pozytywny dowodzi, że dosłowny sens przeżył. Katalogi detekcji starzeją się razem z generatorami, więc ścieżką rozwoju musi być adwersarialne odświeżanie, a nie jednorazowa lista słów.

Zasada nieszkodzenia to połowa produktu i ta połowa decyduje, czy da się to trzymać włączone.

  • Strażnicy rejestru. „never store secrets”, „may cause drowsiness”, „does not establish causation” to treść, nie wypełniacz. W tekstach prawniczych, medycznych, bezpieczeństwa i naukowych te zastrzeżenia i absolutne sformułowania niosą znaczenie, a validate_preservation.py --strict zamienia skasowanie któregoś w twardy błąd.
  • Dosłowne użycia branżowe. Budownictwo, mechanika, prawo, medycyna, finanse, żeglarstwo i kod używają tych słów dosłownie, a każdy wzorzec kontekstowy ma wiersz, który to potwierdza.
  • Cytaty i przykłady. Cudzysłowy, blockquote’y i bloki kodu są domyślnie wyłączone, więc dokumentacja nigdy nie zgłasza złego pisania, którego uczy. (Ten artykuł byłby inaczej jednym wielkim naruszeniem.)
  • Fakty, ze świadomością rzędu wielkości. Liczby, nazwy, daty, jednostki i odwołania w rodzaju Section 12(b) przeżywają przepisanie, a kontrola zna rzędy wielkości: $47.3M nie może po cichu stać się $47.3 billion.
  • Wyjątki gatunkowe. --genre docs dopuszcza listy z pogrubionymi etykietami, których dokumentacja referencyjna naprawdę używa, a --genre social dopuszcza krótkie linijki właściwe dla social copy.
  • Tylko angielski. Tekst nieangielski dostaje tanią detekcję i jasną odmowę: skanery zwracają non_english: true i się zatrzymują. Ta odmowa jest powodem, dla którego istnieje następna sekcja tego artykułu.

Unslop trzyma się otwartego standardu Agent Skills, więc instaluje się tym samym CLI skills, co wszystko inne w tej sekcji.

Okno terminala
npx skills add theclaymethod/unslop -g -a cursor

Skille globalne lądują w ~/.cursor/skills/, a te przypięte do projektu w .agents/skills/<name>/SKILL.md, czyli we wspólnym katalogu otwartego standardu, który Cursor czyta. Nie ma komendy slash: opisz, czego chcesz („audit this draft for AI tells, change nothing”), a opis skilla go odpali.

Jedna komenda obsłuży kilku agentów naraz, co jest typowym przypadkiem, jeśli piszesz w więcej niż jednym miejscu:

Okno terminala
npx skills add theclaymethod/unslop -g -a claude-code -a cursor -a codex

To jest ta część projektu, która nie ma odpowiednika nigdzie indziej w tej kategorii.

Większość skilli tego typu dostarcza listę reguł i deklarację. Unslop dostarcza trzy osobne tablice wyników i nie pozwala, żeby jedna podrasowała pozostałe: core product (detekcja, naprawa, zachowanie treści, szkody, poprawa całego dokumentu), voice (wierność teach i mimic) oraz engineering (pokrycie skanerów, schematy, routing, cache, regresje). README wprost mówi, po co ten rozdział: „The engineering suite can show that the implementation behaves as specified. Only the core scoreboard can show that the specification improves writing”.

Porównanie rdzeniowe jest sparowane i kontrolowane modelem. Ten sam gpt-5.6-luna dostaje to samo nieznane źródło w obu ramionach; jedno ramię dostaje zamrożony pipeline unslopa, drugie neutralne wskazówki redakcyjne bez dostępu do repozytorium, bez wyjścia skanerów i bez informacji zwrotnej z walidacji. Zaślepiony sędzia gpt-5.6-sol widzi losowo pomieszane etykiety ramion.

A ostatni ważny publiczny wynik tego porównania to no-ship. Unslop istotnie poprawił recall i naprawę względem samej Luny, ale nie dobił do progu precyzji, szkód i bezpieczeństwa całego dokumentu. Późniejsze przebiegi rozwojowe wypadły kierunkowo lepiej, siedem wygranych, cztery remisy i zero przegranych, ale są sprzed poprawek scorera, a świeży prerejestrowany korpus nie przeszedł progu kompozycji, zanim ruszyło którekolwiek ramię, więc projekt mówi wprost, że obecna beta „does not claim a validated comparative lift”.

Zestaw to z resztą pola. Najczęściej gwiazdkowany skill w tej kategorii, blader/humanizer, ma ponad 36 500 gwiazdek i zero ewaluacji. Gwiazdek, a nie instalacji, żeby być precyzyjnym: liczby w całym tym artykule pochodzą z API GitHuba, czyli z jedynej miary dostępnej dla wszystkich tych projektów. Unslop ma o ponad dwa rzędy wielkości mniej i benchmark, który mówi, że własny produkt autora nie jest gotowy. Jeśli wybierasz między nimi na podstawie dowodów, a nie popularności, ta asymetria jest właściwym wnioskiem, a uczciwe odczytanie brzmi tak: nikt w tej kategorii nie wykazał jeszcze, że automatyczne odslopowywanie poprawia dokument jako całość. Jeden projekt po prostu mierzy.

Mierzenie zwraca się też gdzie indziej. Przepuszczenie powierzchni komend przez GEPA zwinęło siedem redundantnych faz w jedną kanoniczną komendę, co ścięło rozgrzane wywołania modelu z 48 do 24, tokeny komendy z 19 do 3, a deterministyczny czas orkiestracji z około 6,25 sekundy do około 3,02 sekundy, przy zachowanych wymaganych bramkach. Dwukrotną oszczędność znajduje się tylko wtedy, gdy się w ogóle mierzyło.

Miodkuj: ten sam problem w języku, którego katalogi nie obejmują

Dział zatytułowany „Miodkuj: ten sam problem w języku, którego katalogi nie obejmują”

Unslop zatrzymuje się na tekście nieangielskim i mówi to wprost. To poprawne zachowanie i zostawia realną dziurę, bo polski slop AI to nie angielski slop AI z podmienionymi słowami.

Miodkuj ją wypełnia. Jego jednozdaniowa obietnica to „Polszczyzna bez sztucznego tonu” i idzie po trzy rzeczy naraz: slop AI, rejestr urzędowy i kalki z angielskiego. Najważniejsze jest jego własne podsumowanie pozycji badawczej: miodkuj nie tłumaczy angielskich list zakazanych słów, tylko dostosowuje wzorce anty-slop do polszczyzny.

Nazwa to ukuty czasownik, mniej więcej „zmiodkować tekst”, od profesora Jana Miodka, który od dekad jest w Polsce publicznym autorytetem od poprawnej polszczyzny. README niesie zastrzeżenie, którego się oczekuje: nazwa jest hołdem językowym, a profesor Miodek ani nie uczestniczy w projekcie, ani go nie popiera.

Część rodzin pokrywa się z unslopem: resztki czatbota (jako model językowy, oto poprawiona wersja), chrząkanie (warto zauważyć, w dzisiejszych czasach), napompowana doniosłość (kluczowy, przełomowy, holistyczny). Ciekawsza połowa nie ma angielskiego odpowiednika w ogóle, bo pochodzi z rejestru urzędowego, który dominuje w polskim pisaniu instytucjonalnym:

RodzinaPrzedPo
Urzędniczyznaw dniu dzisiejszymdzisiaj
Urzędniczyznadokonać zakupukupić
Urzędniczyznaposiadać możliwośćmoże
Nominalizacjaprzeprowadzenie analizy danychzespół przeanalizował dane
Bezosobowa mgłanależy złożyć wniosekzłóż wniosek
Łańcuch dopełniaczyw przypadku braku możliwości uruchomienia pojazdujeśli nie możesz uruchomić pojazdu

Wiersz z łańcuchem dopełniaczy pokazuje, dlaczego przetłumaczona lista by poległa. Polszczyzna potrafi ustawić cztery rzeczowniki w dopełniaczu, zostać gramatyczna i przestać być czytelna; angielski nie ma takiej konstrukcji, więc żaden angielski katalog nie ma na to reguły. Tak samo jest z ciężkością imiesłowową (mając na uwadze, biorąc pod uwagę, uwzględniając) i z nominalizacją jako sygnałem morfologicznym: miodkuj dosłownie pilnuje końcówek -anie, -enie, -cie.

Każda rodzina ma jawnego strażnika fałszywych trafień, a plik zaczyna się od instrukcji, jak go czytać: „Use these as cluster-sensitive signals. Most items are not absolute bans”.

Jeśli odjąć listy słów, miodkuj to trzy pomysły.

Minimalna skuteczna edycja. „If the source already passes the quality gate, return it unchanged; do not replace correct wording merely to show an edit”. Tej instrukcji brakuje większości narzędzi przepisujących i to dlatego mielą dobrą prozę.

Drabina konkretności. Kiedy ogólnikowe twierdzenie potrzebuje gruntu, użyj faktu, który już jest w źródle; jeśli go nie ma, zestaw na nowo to, co już jest, bez zwiększania pewności; jeśli i to nie wyjdzie, zmniejsz twierdzenie albo je skasuj. Reguła pod spodem jest postawiona płasko: nigdy nie wymyślaj liczby, przykładu, klienta, źródła, mechanizmu ani porównania po to, żeby tekst brzmiał po ludzku, bo „a plausible inference is still new information”. Usunięcie sloganu nie daje prawa do wstawienia w to miejsce zmyślonego wyjaśnienia.

Test przenośności. „If a sentence could move unchanged to another company, ministry, product, project, or person, it is probably filler”. Jedno zdanie, a łapie więcej marketingowej waty niż jakakolwiek lista słów. Ma własnego strażnika: nie stosuj go mechanicznie do definicji, formuł prawnych, standardowych ostrzeżeń ani koniecznego języka proceduralnego.

Jest też warstwa rejestru, którą uniwersalny „humanizer” by spłaszczył. Tekst prawny i urzędowy musi zachować podmiot zobowiązany, moc prawną i formalny rejestr; tekst naukowy zachowuje swoje zastrzeżenia i poprawne formy bierne; dokumentacja techniczna zachowuje terminy i kod. Trybowi audytu wprost zabrania się orzekania o autorstwie AI: „Do not infer AI authorship from stylistic patterns. Describe the writing that is present”.

Cały argument zaufania w unslopie to determinizm. Miodkuj świadomie z niego rezygnuje i mówi dlaczego w swoim podsumowaniu badań:

Nie dodajemy deterministycznego lintera do rdzenia. Taki linter pomaga przy pracy wsadowej, lecz sama lista dopasowań nie rozstrzyga kontekstu i nie chroni głosu autora.

Obie postawy dają się obronić, bo optymalizują pod inne tryby porażki. Skanery unslopa dają bramkę, którą wstawisz w CI, i liczbę, którą zbenchmarkujesz, kosztem konieczności dopisania wiersza ochronnego do każdego wzorca, żeby bramka nie kaleczyła dosłownych użyć. Kontekstowe podejście miodkuja nie może być bramką w CI ani nie da się go zmierzyć tak samo, ale nigdy nie trzeba mu tłumaczyć, że niniejszy jest w ustawie poprawne.

Jeśli twój polski tekst jest instytucjonalny, prawny albo naukowy, ten drugi zakład jest właściwy. Jeśli bramkujesz anglojęzyczny pipeline dokumentacji, właściwy jest pierwszy.

Miodkuj dostarcza jeden plik skilla używany na wszystkich platformach i dlatego jego frontmatter jest minimalny w sensie specyfikacji: tylko name i description, żadnych pól wyłącznych dla Claude Code. To właśnie pozwala wgrać ten sam plik do ChatGPT i Claude.ai, a nie tylko zainstalować jako plugin.

/plugin marketplace add bartekpucek/miodkuj
/plugin install miodkuj@miodkuj
/reload-plugins

Wywołujesz go jako /miodkuj:miodkuj. Claude Code poprzedza nazwy skilli nazwą pluginu, więc ta droga nie daje krótkiego /miodkuj. Jeśli chcesz krótkiego, skopiuj katalog skilla ręcznie:

Okno terminala
miodkuj_tmp="$(mktemp -d)"
git clone --depth 1 https://github.com/bartekpucek/miodkuj.git "$miodkuj_tmp"
mkdir -p ~/.claude/skills
cp -R "$miodkuj_tmp/plugins/miodkuj/skills/miodkuj" ~/.claude/skills/miodkuj
rm -rf "$miodkuj_tmp"

Kategoria jest zatłoczona, a liczba gwiazdek nie jest sygnałem jakości. Zweryfikowane 19 sierpnia 2026:

SkillGwiazdkiKształtCzym się różni
blader/humanizer36 531Skill + plugin Claude + manifest CodeksaWybór domyślny. Przenosi wikipediowe znaki pisania AI na ponumerowane wzorce z parami przed/po. Bez skanerów, bez ewaluacji.
hardikpandya/stop-slop15 877Jeden SKILL.md + 3 pliki referencyjneNajstarszy z dużych. Celowo malutki: 8 reguł, 12 szybkich sprawdzeń, punktacja 1–10 na pięciu wymiarach. Unslop cytuje go z nazwy we własnym katalogu.
petergyang/no-ai-slop5 366Skill + plugin CodeksaTryby edycji i detekcji, minimalna skuteczna edycja, test przenośności. Filozoficznie najbliższy miodkujowi po angielsku, co zapewne tłumaczy, czemu miodkuj wymienia go wśród źródeł.
theclaymethod/unslop77Skill + 20 skanerów w Pythonie + pakiet ewaluacjiJedyny z deterministycznymi skanerami do CI i opublikowanym benchmarkiem rdzeniowym.
bartekpucek/miodkuj68Skill + manifesty pluginów dla czterech platformJedyny poważny polski. Świadomy rejestru, celowo bez lintera.

Dwie nieobecności mają tu znaczenie. Anthropic nie dostarcza żadnego skilla anty-slop ani stylistycznego: oficjalne repozytorium anthropics/skills zawiera dziewiętnaście skilli, a najbliżsi sąsiedzi to doc-coauthoring i internal-comms, z których żaden nie zajmuje się tropami AI. Nie ma go też obra/superpowers, którego czternaście skilli to skille procesu wytwarzania; tamtejsze writing-skills dotyczy pisania skilli, nie prozy.

Prawdziwym źródłem dla nich wszystkich jest wikipediowe Signs of AI writing, utrzymywane przez WikiProject AI Cleanup. To najdokładniejszy istniejący katalog, śledzi słownictwo po epokach (kohorta „delve / tapestry / testament” należy do lat 2023–2024, a „align with, enhance, fostering, showcasing” do 2024–2025) i jest darmowy. Unslop jako jedyny synchronizuje się z nim programowo: scripts/wiki_sync.py check porównuje katalog z żywą stroną i proponuje aktualizacje, zawsze zaczynając od wiersza ewaluacji.

Jeśli chcesz detekcji zupełnie bez agenta w pętli, istnieją też paczki reguł dla Vale (JMill/deslop, t0ddharris/slopster), choć obie są wczesne i żadna nie zbliża się pokryciem do skanerów unslopa.

Reguła półpauzy pokłóci się z twoim stylem domowym i czasem powinna przegrać. Przewodnik stylu tej strony używa półpauz świadomie; domyślne zero wycięłoby działającą część rejestru. Unslop radzi sobie z tym poprawnie, a nie dogmatycznie: cały poziom soft istnieje po to, żeby „twój prawdziwy głos” mógł nadpisać domyślnego strażnika rejestru, a preferencje głosu sprzeczne ze zmierzoną wartością wypływają jako nazwany konflikt, zamiast być rozstrzygane po cichu. Czego nie pozwoli, to bezgłośnie nadpisać reguły hard. Zdecyduj raz, wpisz to na górze pliku skilla i idź dalej.

Twarde zakazy trafiają w normalną prozę techniczną. load-bearing i wedge są twardymi trafieniami jako metafory. Jeśli piszesz o architekturze, oba słowa pojawiają się u ciebie regularnie w zwykłym inżynierskim sensie. Katalog wyłącza dosłowne użycia z budownictwa i mechaniki, ale „this assumption is load-bearing” w dokumencie projektowym to dokładnie ten metaforyczny sens, w który reguła celuje, i jednocześnie dokładnie właściwe słowo. Licz się z kłótnią.

Żaden z projektów nie udowodnił, że poprawia dokumenty. Unslop mówi to we własnym README. Pozostałe nie mierzyły. Traktuj je wszystkie jako narzędzia do znajdowania kandydatów, a nie jako bramkę jakości, której można powierzyć decyzję o merge’u.

Sprawdź licencję, zanim wciągniesz unslopa do siebie. README mówi „Licensed MIT”, a SKILL.md deklaruje license: MIT, ale w repozytorium nie ma pliku LICENSE, a API GitHuba nie wykrywa żadnej licencji. To niemal na pewno przeoczenie, a nie pułapka, ale jeśli wciągasz skanery do komercyjnego pipeline’u, załóż najpierw issue i doprowadź to do porządku.

Oba są małe i w ruchu. Żaden nie przekroczył stu gwiazdek, core contract unslopa został przepisany dwa tygodnie temu, a miodkuj ma jedenaście tygodni. To w porządku dla skilla, który czytasz i adaptujesz. To nie jest zależność, którą przypina się do pipeline’u publikacyjnego bez skopiowania jej do siebie.

I ta najgłębsza, którą Wikipedia formułuje lepiej niż ktokolwiek: jej wskazówki proszą redaktorów, żeby „do not merely treat these signs as the problems to be fixed; that could just make detection harder”. Optymalizowanie prozy pod listę tropów to nie to samo co dobre pisanie. Tekst, który przechodzi każdy skaner, dalej może być konspektem bez tezy, trzema przykładami mówiącymi to samo i zakończeniem, które powtarza wstęp. Skanery tego nie widzą. Ty widzisz.

Używaj ich tak, jak używasz lintera: żeby wyłapały błędy mechaniczne i zwolniły twoją uwagę dla tych, które mają znaczenie.