Twój głos · skill dla Claude'a

Claude Code · skill writing-style · instrukcja · sierpień 2026

Jak nauczyć Claude'a pisać Twoim głosem

U Piotra drafty maili wychodzą dziś prawie bez poprawek — to jego własne wrażenie, nigdy nie policzone. Ta strona pokazuje dokładnie, z czego to się zbudowało i jak dojść do tego samego szybciej.

Przygotowane dla Ciebie12 sierpnia 2026na podstawie skilla, który działa od maja 2026
312
zasad z zapisanym powodem, stan na 12 sierpnia 2026
23
pliki tematyczne zamiast jednego monolitu
108
wywołań /internalize w 43 dniach
1236 linii
monolit, który przestał działać
Skrót · przeczytaj choćby to

Skill nie opisuje Twojego stylu przymiotnikami. Zaczyna od pomiaru Twoich maili, a rośnie na różnicach między draftem a tym, co wysłałaś.

Jeżeli Twój skill nadal wymaga poprawek, to prawie zawsze dlatego, że powstał z opisu („piszę zwięźle i ciepło") zamiast z pomiaru. Przymiotnik nie zmienia ani jednego zdania w drafcie. Zmienia je zasada wyciągnięta z policzalnej obserwacji: albo z tego, co realnie jest w Twojej skrzynce, albo z konkretnej różnicy draft/wysłane.

1

Materiał treningowy już masz i leży w Twojej skrzynce. Wysłane maile to Twój głos w czystej postaci. Jeszcze cenniejsze są pary: draft, który dostałaś, i wersja, którą faktycznie wysłałaś po poprawkach. Ta różnica to dokładnie to, czego model nie wie.

2

Jedna zasada = działanie plus powód plus wyzwalacz. „Rób X zamiast Y", pod spodem Why i How to apply. Zasada bez powodu nie generalizuje się na nową sytuację, a zasada bez wyzwalacza nie odpala we właściwym momencie.

3

Pętla po każdej wysyłce, nie jednorazowy setup. U nas to 108 wywołań /internalize rozłożonych na 43 dni. Każda runda to 0–3 nowe zasady — szacunek autora, nie pomiar; jednorazowa poprawka faktu nie daje żadnej. Bez pętli skill zamarza na dniu pierwszym i po miesiącu jest tak samo nietrafiony jak na starcie.

Zanim cokolwiek zmienisz — sprawdź te sześć rzeczy w swoim obecnym skillu

  • Czy zasady mają przykłady z Twoich maili — czy same przymiotniki? Jeśli nie ma ani jednego cytatu z Ciebie, skill opisuje wyobrażenie o Tobie.
  • Czy pole description zawiera frazy wyzwalające — po polsku i po angielsku? Bez tego Claude nie wczyta skilla sam i napisze „z głowy".
  • Czy zasady są w formie pozytywnej — „rób X zamiast Y"? Samo „nie rób X" zostawia model bez alternatywy, więc wraca do domyślnego stylu.
  • Czy w treści zasady nie ma nazwisk, firm i dat? Zasada z nazwą własną nie odpali przy następnym adresacie.
  • Czy SKILL.md ma mniej niż 200 linii, a każdy plik tematyczny mniej niż 250? SKILL.md dostaje u nas ostrzejsze 200 zamiast dokumentacyjnych 500, bo wczytuje się zawsze; 250 dla pliku tematycznego to nasza własna liczba — próg 200 dokumentacja podaje dla plików instrukcji CLAUDE.md, nie dla plików skilla. Powyżej progu dłuższy plik zjada kontekst i obniża stosowanie się do zasad.
  • Czy coś dopisuje do skilla po każdej wysyłce? Jeśli nie, to nie jest system uczący, tylko notatka.

Każde „nie" na tej liście odpowiada za konkretną klasę poprawek, które musisz robić ręcznie. Reszta strony to instrukcja, jak zamienić te „nie" na „tak".

Historia · co realnie się wydarzyło

Cztery fazy przez cztery i pół miesiąca. Wszystkie cztery skracasz do dwóch sesji.

To nie był plan, tylko seria potknięć — fazy nawet nie ustawiły się po kolei, bo pętla z fazy 3 ruszyła wcześniej niż podział z fazy 2. Dlatego warto tę historię znać: każdy element powstał dlatego, że poprzedni przestał działać, a Ty możesz wejść od razu na koniec.

Faza 0 — luźne notatki po korektach

koniec marca 2026 · pierwsze notatki · pierwsza o mailach 16 kwietnia
  1. Zaczęło się od pojedynczych korekt. Po każdej poprawce lądował mały plik w pamięci projektu: jedna obserwacja, jeden powód. Na koniec marca było ich dziesięć i żaden nie dotyczył pisania wiadomości; pierwszy plik o mailu ma datę 16 kwietnia 2026.
  2. Efekt: 13 plików o samym pisaniu — tyle SKILL.md wymienia dziś jako zastąpione przy rozbiciu monolitu, czyli zebrały się przed 26 maja; nazw nie podaje, więc dat ich powstania nie da się już odtworzyć. Cała pamięć projektowa Claude'a urosła do dziś do 229 plików feedbacku, ale zdecydowana większość dotyczy zupełnie innej pracy. Działało to na zasadzie „przypomnij sobie", ale nic nie pilnowało, żeby Claude to przeczytał przed pisaniem.
  3. Czego to nauczyło: zapis korekty jest bezwartościowy, jeśli nie ma mechanizmu wczytania go dokładnie w chwili pisania.

Faza 1 — jeden wielki plik ze stylem

kwiecień–maj 2026 · urósł do 1236 linii
  1. Wszystkie zasady trafiły do jednego dokumentu. Na początku było lepiej: jedno miejsce, jedno źródło prawdy.
  2. Potem zasady zaczęły po cichu przestawać działać. Nic się nie psuło głośno — po prostu draft ignorował regułę, która była w pliku od tygodni. Dokumentacja Claude Code mówi to wprost: dłuższe pliki zużywają więcej kontekstu i obniżają stosowanie się do instrukcji.
  3. Czego to nauczyło: istnieje próg objętości, powyżej którego dopisywanie kolejnej zasady pogarsza sytuację zamiast poprawiać.

Faza 2 — skill plus pliki tematyczne

26 maja 2026 · rozbicie monolitu
  1. Powstał skill writing-style. Jeden krótki SKILL.md: żelazne zasady obowiązujące zawsze plus tabela routingu „jeśli piszesz X, wczytaj references/X.md".
  2. Reszta poszła do plików tematycznych. Część dzieli się po kanale: mail po polsku, mail po angielsku, Slack, WhatsApp, Signal, LinkedIn. Większość jednak dzieli się po klasie wiadomości wewnątrz jednego kanału: follow-up po spotkaniu, twarde stanowisko, przypomnienie, mail do inwestora, ustalanie terminu. Pięć ostatnich plików nie dotyczy ani kanału, ani klasy, tylko mechaniki i strategii: mechanika Gmaila, negocjacje, adresaci w kopii, reguły wspólne dla wszystkich kanałów, obieg po wysyłce. Zawsze wczytuje się stały rdzeń — SKILL.md plus plik z regułami wspólnymi — a z routingu dochodzi ten jeden plik, który jest potrzebny; mechanika Gmaila ma osobną furtkę i wchodzi zawsze, gdy draft powstaje przez API.
  3. Żelazna zasada numer jeden brzmi: przeczytaj ten skill przed pisaniem, za każdym razem. Bez niej model pisze z pamięci, a pamięć jest uśredniona i nijaka.

Faza 3 — automatyczna pętla uczenia

od 14 maja 2026 · obecny kształt od 16 czerwca 2026 · działa do dziś
  1. Powstał drugi skill, który uczy pierwszy — i powstał jako pierwszy, nie ostatni. Pętla ruszyła 14 maja, dwanaście dni przed rozbiciem monolitu. Powód samego rozbicia jest zapisany w uzasadnieniu limitu w tym skillu i jest objętościowy: jeden wielki plik urósł do 1236 linii, a zasady zaczęły być po cichu pomijane. Dzisiejszy kształt tego skilla pochodzi z 16 czerwca. Po wysyłce pobiera realnie wysłaną wiadomość, porównuje z draftem, wyciąga regułę i dopisuje ją do właściwego pliku tematycznego.
  2. Sam mechanizm pilnuje higieny: scala bliźniacze zasady zamiast dopisywać duplikat, a gdy plik przekracza limit, dzieli go na dwa i poprawia tabelę routingu.
  3. Od tego momentu jakość rośnie sama. Trzeba tylko po wysłaniu powiedzieć jedno słowo.

Ile to realnie trwało i ile musi trwać u Ciebie

  • Cztery i pół miesiąca kalendarzowo — ale większość tego czasu poszła na odkrywanie struktury, którą teraz masz gotową.
  • 108 wywołań /internalize w 43 dniach — od 14 maja do 12 sierpnia 2026, licząc własne wiadomości Piotra, w których pada „/internalize"; dokładna reguła liczenia jest w sekcji Źródła. To wszystkie wywołania tej komendy, także po postach, dokumentach i innych skillach, a nie tylko rundy po wysłanym mailu. Strukturę i prompty, które z tych rund wyszły, dziedziczysz gotowe.
  • Nieskracalna zostaje tylko jedna rzecz: liczba prawdziwych wysyłek. Pętla karmi się realnymi wiadomościami, więc tempo wyznacza to, jak często piszesz, a nie jak szybko konfigurujesz.

Realistyczny plan dla Ciebie: dwie sesje na start, potem 8–12 wysyłek z pętlą. Przy normalnej korespondencji to dwa, trzy tygodnie do momentu, w którym poprawki wyraźnie rzedną. To nie jest ten sam punkt, w którym jest dziś skill Piotra po ponad stu rundach — na klasy wiadomości, których jeszcze nie wysłałaś, zasad po prostu nie ma i pojawią się dopiero z kolejnych wysyłek.

Zasady · co decyduje o wyniku

Sześć rzeczy, które robią różnicę. Numery 1–4 są ułożone od największego efektu; piąta to warunek wstępny, szósta decyduje o trwaniu pętli.

Wszystkie są przenośne — nie zależą od tego, w jakim języku piszesz ani do kogo. Piąta to twardy warunek wstępny: bez niej skill nie wczyta się sam i przy zwykłym poleceniu cztery pierwsze nie mają jak zadziałać. Szósta nie warunkuje zasad 1–4 — draft pokazany w czacie też jest napisany według nich — tylko decyduje, czy pętla utrzyma się w czasie.

1

Ucz na pomiarze i na różnicach, nie na opisach największy efekt

Model nie potrafi zoperacjonalizować przymiotnika. Potrafi odtworzyć konkretną zamianę, jeśli wie, kiedy ją stosować.

Samo „ciepło, ale profesjonalnie" nie zmienia niczego w drafcie — u Piotra takie zdanie w skillu jest, tylko nad zmierzonymi zasadami, nie zamiast nich. Zmienia coś dopiero: „w mailu do klienta zaczynaj od jednego zdania kontekstu zamiast od podziękowania za wiadomość". Pierwsza wersja takich zdań bierze się z pomiaru Twoich wysłanych maili, a każda następna z różnicy: co napisał Claude, a co wysłałaś Ty. Różnice są mocniejszym źródłem, bo pokazują dokładnie to, czego model sam nie wie.

2

Każda zasada w formie: rób X zamiast Y, plus Why, plus How to apply tanie i skuteczne

Powód pozwala modelowi zastosować zasadę w sytuacji, której nie przewidziałaś. Wyzwalacz decyduje, czy zasada w ogóle odpali.

Sam zakaz („nie używaj wykrzykników") zostawia pustkę, którą model wypełnia stylem domyślnym. Zapis pozytywny mówi, czym zastąpić. Ta trójka — działanie, powód, wyzwalacz — to format docelowy, do którego zasady się dociąga, a nie stan, w którym wszystkie już są. U Piotra dopisany powód ma 312 zasad, a spośród nich wyzwalacz około dwóch trzecich: 203 mają „How to apply" albo „Trigger", pozostałe 109 zatrzymało się na samym powodzie (stan na 12 sierpnia 2026). Pozostałe zapisy w tych plikach nie doszły nawet do powodu, więc w tej liczbie ich nie ma. To dług, nie cecha — zasada bez wyzwalacza odpala rzadziej.

3

Zasada zawsze o klasie odbiorcy, nigdy o konkretnej osobie łatwo o to potknięcie

Zasada z nazwiskiem w treści pasuje do jednego przypadku, który już się wydarzył, i do niczego więcej.

Kiedy wychodzi reguła „nie pisz tak do Kasi z tamtej firmy", trzeba ją podnieść o poziom: „w pierwszym kontakcie z osobą, której nie znasz, nie odwołuj się do wspólnych znajomych". Nazwiska, firmy i daty zostają jako przykład pod zasadą, nigdy w jej treści.

4

Podział na pliki tematyczne z tabelą routingu rozwiązuje problem objętości

Kontekst jest skończony. Poza tym, co obowiązuje zawsze, wczytuje się tylko ten plik, który dotyczy tego, co właśnie piszesz.

Krótki SKILL.md trzyma to, co obowiązuje zawsze, i tabelę „jeśli piszesz X, wczytaj plik X". Reszta siedzi w osobnych plikach i nie zajmuje miejsca, dopóki nie jest potrzebna. Dzięki temu skill może mieć 3000 linii i dalej działać.

5

Description z frazami wyzwalającymi w obu językach bez tego nic nie odpala samo

Claude decyduje o automatycznym wczytaniu skilla na podstawie pola description. Jeśli Twoje sformułowanie tam nie pada, skill nie wczyta się sam — zostaje wywołanie ręczne komendą /writing-style, a tego przy każdym mailu nie zrobisz.

W description ma być lista realnych fraz, których używasz: „odpisz", „napisz maila", „draft email", „reply to", „napisz wiadomość". Warto wiedzieć, że opis jest w liście skilli przycinany do 1536 znaków, więc najważniejsze frazy dajesz na początek.

6

Wysyłka bez tarcia, czyli draft ląduje od razu w skrzynce to decyduje, czy pętla przetrwa

Każdy dodatkowy krok między draftem a wysłaniem to miejsce, w którym pętla się urywa.

U nas draft nie jest pokazywany w czacie do zatwierdzenia — leci prosto do wersji roboczej w Gmailu. Poprawiasz na miejscu i wysyłasz. Dzięki temu różnica draft/wysłane jest zapisana w jednym miejscu i pętla ma czym się karmić.

Start · dwie sesje

Wyciągnij styl z własnej skrzynki, zamiast go opisywać.

Poniżej pięć gotowych promptów, ponumerowanych dokładnie w kolejności wklejania. Wklejasz jeden na raz i czekasz na wynik. Prompty 1–2 to pierwsza sesja, czyli sam pomiar. Prompty 3–4 to druga sesja, w której powstają oba skille. Prompt 5 to treść jednej rundy pętli — wklejasz go tylko wtedy, gdy skill z promptu 4 się nie zainstalował; normalnie po każdej wysyłce piszesz samo „internalize". Na samym końcu jest jeszcze jeden prompt dodatkowy, poza tą piątką — potrzebny wyłącznie wtedy, gdy Claude pisze do Gmaila przez Twoją własną integrację z API. Prompty są po angielsku, bo pliki skilla piszemy po angielsku — Claude i tak pisze maile po polsku, dokładnie tak jak u Piotra. Przykłady zdań w tych plikach zostają po polsku, w oryginale.

Zanim wkleisz cokolwiek — sprawdź, czy Claude widzi Twoją skrzynkę

Claude Code sam z siebie nie ma dostępu do poczty, a cała ta instrukcja zakłada, że potrafi dwie rzeczy: przeczytać Twoje wysłane maile i utworzyć wersję roboczą. Czytania wymagają prompty 1, 2 i 5, tworzenia wersji roboczej — zasada numer 6 z poprzedniej sekcji, a reguły z promptu dodatkowego dochodzą tylko przy własnej integracji z Gmail API. U Piotra robi to właśnie taka integracja, napisana pod siebie; jej nie skopiujesz.

Gotowego konektora Gmaila nie da się podłączyć od strony Claude Code — dokumentacja mówi to wprost: Gmail, Kalendarz Google i Microsoft 365 nie wspierają logowania OAuth z Claude Code, bo dostawca tożsamości przyjmuje wyłącznie adres powrotny zarejestrowany przez claude.ai. Podłącza się go na stronie claude.ai, w Ustawieniach w sekcji Konektory, i dopiero wtedy pojawia się w Claude Code sam z siebie. Trzy warunki, których łatwo nie zauważyć: musisz być zalogowana do Claude Code kontem claude.ai z abonamentem, a nie kluczem API ani tokenem (przy kluczu API konektory w ogóle się nie wczytują); na planie Team i Enterprise konektory dodaje administrator, nie Ty; a organizacja może wyłączyć albo ograniczyć poszczególne narzędzia konektora. Jeśli którykolwiek warunek nie jest spełniony, tej drogi po prostu nie ma i zostają ścieżki zapasowe poniżej — nie próbuj obejść tego dłużej niż kwadrans.

Sprawdzenie, że działa — wklej to jako pierwsze, ale w dwóch osobnych krokach, bo te dwie rzeczy bywają włączone osobno. Krok A, czytanie: List the subjects and dates of the three newest emails in my Sent folder. Krok B, zapis wersji roboczej: Create a draft addressed to me with the subject "test" and tell me its draft id. Do not send anything.

  • Jeśli oba kroki się udały — masz wszystko, cała reszta strony działa bez zmian.
  • Jeśli krok A działa, a krok B nie — Claude czyta pocztę, ale nie wolno mu tworzyć wersji roboczych. Prompty 1, 2 i 5 działają normalnie i pobieranie skrzynki jest niepotrzebne; odpada tylko zasada numer 6 z poprzedniej sekcji i prompt dodatkowy, czyli draft ląduje w czacie zamiast w skrzynce i przeklejasz go sama.
  • Jeśli krok A też nie działa — ścieżka zapasowa. Wejdź w Google „Pobieranie danych", wybierz tylko Mail, w kroku Mail odznacz „Uwzględnij wszystkie wiadomości" i zaznacz samą etykietę Wysłane. Dostaniesz jeden plik .mbox — podaj Claude'owi ścieżkę do niego.
  • Jeśli nie chcesz nic pobierać — ścieżka minimalna. Wklej 25–30 własnych wysłanych maili z różnych klas odbiorców. To wystarczy na pierwszą wersję.

Na obu ścieżkach zapasowych prompt 2 odpada, bo par draft/wysłane nie ma z czego wyciągnąć. Prompt 3 wtedy nie blokuje: buduje skill z samego pomiaru z promptu 1 i mówi wprost, że par nie było — dlatego pierwsza wersja jest chudsza, nie żadna. Prompt 1 czytasz wtedy z pliku .mbox albo z tego, co wkleiłaś, a prompt 5 wymaga wklejenia wysłanej wersji ręcznie za każdym razem. Zasada numer 6 z poprzedniej sekcji jest nieosiągalna — i to ona najczęściej decyduje, czy pętla przetrwa pierwszy miesiąc. Prompt dodatkowy z regułami Gmail API nie ma się wtedy na czym wykonać i po prostu go pomijasz. Dlatego dostęp do skrzynki naprawdę warto załatwić raz, a nie omijać.

Sesja 1— pomiar, wynik zapisany na dysk, żeby przetrwał do sesji drugiej

Prompt 1 — zmierz mój styl na moich wysłanych mailach

Read the last 60 emails I sent, newest first, skipping one-line logistics replies. If you cannot reach my mailbox, read them instead from the .mbox file at the path I give you, or from the messages I pasted above — everything below is the same on all three paths. Do not ask me how I write, and do not use anything I have told you about my style — I want you to measure it from the messages themselves.

For each email record: recipient class (client, colleague, friend, vendor, institution), language, word count, number of paragraphs, the exact greeting, the exact sign-off, whether it ends with a question or an ask, punctuation habits (dashes, ellipses, exclamation marks, emoji), whether Polish diacritics are written in full or dropped when I write fast, and any phrase that repeats. Then report the 3 to 5 recipient classes I actually write to, and for each one: median length, the greeting and sign-off inventory with frequencies, the sentence-length range, and 5 verbatim sentences that are most typical of me. Flag anything that varies too much to become a rule. Table plus verbatim examples. Then save the whole result — the table and the verbatim examples, nothing summarised away — to ~/.claude/skills/writing-style/_corpus-measurement.md, creating the folder if it does not exist, and tell me the path you wrote.

Prompt 2 — znajdź pary „wersja pierwsza kontra wersja wysłana"

Now find the pairs, which are the highest-signal training data I have. Search my mailbox for cases where a first version exists and a different final version went out: drafts written for me that I edited before sending, texts someone else wrote that I rewrote, and threads where I sent a corrected version of my own earlier message.

For each pair give me three columns: what the first version said, what I changed it to, and the smallest general rule that would have produced my version the first time. The rule must not name a person, a company, or a date — if it does, raise it one level until it is about a class of recipient or a class of message. Sort by how often the same change repeats, because a change I made once is noise and a change I made five times is a rule. Save the full table to ~/.claude/skills/writing-style/_corpus-pairs.md and tell me the path you wrote.

Sesja 2— budowa obu skilli

Prompt 3 — zbuduj skill z tego, co zmierzyłeś

First read ~/.claude/skills/writing-style/_corpus-measurement.md. If it is missing or empty, stop and tell me to rerun prompt 1 — do not work from memory and do not fill the gap with general knowledge. Then read ~/.claude/skills/writing-style/_corpus-pairs.md as well; if that one is missing, do not stop — say so and continue from the measurement alone, because on a mailbox you could not reach there are no draft/sent pairs to extract. Then check whether ~/.claude/skills/writing-style/ already holds a SKILL.md or references files. If it does, copy the whole folder to ~/.claude/writing-style-backup-<today's date>/ before touching anything — that path is deliberately outside ~/.claude/skills/, because any folder there containing a SKILL.md becomes a second live skill competing for the same trigger phrases — and merge instead of overwriting: keep every rule that is already there, add the measured ones, and at the end report what you kept, what you merged and what you dropped, with the reason for each drop.

Create the personal skill at ~/.claude/skills/writing-style/SKILL.md plus one references file per channel or class of message I actually use, based only on those two files. Nothing invented, nothing from general advice about business writing.

SKILL.md gets YAML frontmatter with name and a description listing my real trigger phrases in Polish and English, most important first. Then the iron rules that hold in every channel, with rule number one being: read this skill before drafting anything, every time; and, if the measurement in _corpus-measurement.md shows that I skip Polish diacritics when writing fast, rule number two being: write full Polish diacritics in every Polish message, even where my own sent messages skip them, because I never want them missing in what goes out. Then a routing table mapping each kind of message to its references file. Cap SKILL.md at 200 lines and every references file at 250. Every rule takes exactly this shape: a line saying do X instead of Y, then a Why line stating the reason at the level of a class of message, then a How to apply line stating the trigger. No person, company or date inside a rule statement — those go under it as examples. Put my own verbatim sentences under the rules they illustrate.

Prompt 4 — zainstaluj pętlę uczenia

First check whether ~/.claude/skills/internalize/ already exists. If it does, copy the whole folder to ~/.claude/internalize-backup-<today's date>/ before touching anything — that path is deliberately outside ~/.claude/skills/, because any folder there containing a SKILL.md becomes a second live skill competing for the same trigger phrases — and merge instead of overwriting: keep every instruction that is already there, add the ones below, and at the end report what you kept, what you merged and what you dropped, with the reason for each drop.

Now create a second skill at ~/.claude/skills/internalize/SKILL.md that I will run after sending a message. Its job: fetch from my mailbox the version that actually went out — and if it cannot reach my mailbox, ask me to paste the sent version and work from that, never inferring or reconstructing what went out — then diff that against the draft you produced, and for each difference that qualifies under the filter below, infer the general rule that would have produced my version first time.

The draft side of that diff must be a draft you actually wrote. The skill looks for it in the current conversation. It does not look in my Gmail drafts: Gmail deletes a draft the moment it is sent and creates a new message with a different id, so after sending there is nothing there to recover. If the draft is not in the conversation, the skill tells me to reopen the session it was written in with claude --resume and run internalize there, and only if that session is gone does it ask me to paste the draft — it never reconstructs, rewrites or guesses what the draft probably said, because a diff against an invented draft produces invented rules. If several of my messages went out since the last run, it asks once which one we are learning from. If several drafts of that same message exist in the conversation, it asks once which of them we are learning from, listing two or three candidates, and defaults to the first draft it produced for that message, counting every revision I asked for in between as a difference too. The never-ask rule below covers writing rules, not identifying the draft.

Not every difference is a rule. A one-off factual correction — a number, a date, a name, a fact I added or removed — is reported to me as a tactical note and never written into the skill. Only differences about form, tone, structure, length or register get generalised into rules. If nothing qualifies, the skill says "nothing new to internalize" and writes nothing; a run that produces zero rules is a correct run, not a failure.

It writes those rules into the matching references file, merging into an existing rule when one is close instead of appending a near-duplicate. If no existing references file fits the rule, it creates one named after the channel or the class of message and adds its row to the routing table in SKILL.md in the same run — a references file with no routing row never gets loaded again, so creating the file without the row is a silent failure. Before writing any rule it checks that the rule statement names no person, company, address or date — if one appears, it raises the rule to the class of recipient or class of message and keeps the name underneath as an example. It keeps SKILL.md under 200 lines, and if a references file goes over 250 lines it splits the most self-contained topic into a new references file and fixes the routing table in the same run. It never asks for approval before writing, and it finishes by listing one line per rule: what changed and why. Give its description the trigger words "internalize", "ucz się z tego", "zapamiętaj na przyszłość".

Zanim pójdziesz dalej — sprawdź, że skill naprawdę się wczytuje

Tego sprawdzenia nie pomijaj: skill, który leży na dysku, ale się nie ładuje, wygląda dokładnie tak samo jak brak skilla. Zrestartuj Claude Code, jeśli katalog ~/.claude/skills powstał dopiero w tej sesji — dokumentacja mówi wprost, że nowo utworzony katalog skilli wymaga ponownego uruchomienia, żeby Claude Code zaczął go obserwować; zmiany w katalogu, który już istniał na starcie sesji, widać bez restartu. Niezależnie od tego krok 2 rób w całkiem nowej sesji, bo kontekst z budowania skilla maskuje luki w jego instrukcjach.

  • Krok 1 — lista skilli. Otwórz menu /skills, po restarcie, jeśli był potrzebny. Muszą tam być oba: writing-style i internalize. Jeśli któregoś nie ma, plik SKILL.md leży w złym miejscu — popraw ścieżkę, zanim pójdziesz dalej. Obecność na liście nie dowodzi jednak niczego o opisie: przy zepsutym nagłówku YAML skill dalej jest wymieniony, tylko z pustym opisem.
  • Krok 2 — świeża sesja i jedno zdanie. W nowej, pustej sesji wklej zwykłe polecenie: Napisz krótkiego maila do klienta z prośbą o przesunięcie terminu. Zaraz po nim dopytaj: Which skills did you load for that, and which rules from them did you apply — quote them.
  • Jeśli Claude nie wymieni writing-style — najpierw wyklucz zepsuty nagłówek YAML: uruchom Claude Code z flagą --debug i poszukaj błędu parsowania frontmattera. Przy zepsutym nagłówku skill wczytuje się bez opisu i dopisywanie fraz nic nie da, dopóki go nie naprawisz. Jeśli nagłówek jest w porządku, problem jest w polu description, nie w zasadach: dopisz do niego dokładnie te słowa, których użyłaś w poleceniu, i powtórz krok 2. To jest zasada numer 5 z poprzedniej sekcji w praktyce. Osobno możesz wywołać skill ręcznie, komendą /writing-style — jeśli wtedy draft jest dobry, wina leży po stronie description; jeśli nadal zły, po stronie zasad.
  • Jeśli wymieni skill, ale zacytowane zasady nie są widoczne w drafcie — zasady są zbyt ogólne, żeby cokolwiek zmienić. To normalne na starcie i naprawia to dopiero pętla, nie kolejna runda budowania.
Tego nie kopiuj od Piotra

Zasady głosu

Jak zaczyna maile, czym je kończy, jak stawia prośbę, kiedy pisze krótko. To jest jego głos zbudowany na jego korespondencji. Skopiowany daje drafty, które brzmią jak on — czyli dokładnie ten problem, który próbujesz rozwiązać.

To skopiuj w całości

Mechanika i zasady techniczne

Struktura skilla, limity plików, tabela routingu i cały mechanizm uczenia. Nie mają nic wspólnego z tym, jak piszesz — a kosztowały kilkanaście rund poprawek, żeby je znaleźć. Reguły obsługi Gmaila z dodatku na końcu też są do skopiowania, ale tylko wtedy, gdy Claude pisze do skrzynki przez własną integrację z API.

Po pierwszej wysyłce— i od tego momentu po każdej następnej

Prompt 5 — treść jednej rundy pętli

I just sent that one. Fetch the version that actually went out; if you cannot reach my mailbox, ask me to paste the sent version and work from that instead of inferring what went out. Diff it against the draft you produced — look for that draft in this conversation. Do not look for it in my Gmail drafts: Gmail deletes a draft the moment it is sent, so it is no longer there. If it is not in this conversation, tell me to reopen the session it was written in with claude --resume and run this there; only if that session is gone, ask me to paste it instead of reconstructing it. If several of my messages went out since the last run, ask which one. If several drafts of that same message exist in this conversation, ask once which one and default to the first draft you produced for it, counting every revision I asked for in between as a difference too. For every difference that is about form, tone, structure, length or register, infer the general rule that would have produced my version first time. A one-off factual correction — a number, a date, a name, a fact I added or removed — is not a rule: report it to me as a note and do not write it. If nothing qualifies, say "nothing new" and write nothing. Write the rules that do qualify into the matching references file, merging where a close rule already exists; if no file fits, create one and add its row to the routing table in the same run. Then list one line per rule: what changed and why.

Gdy masz już zainstalowany skill z promptu 4, wystarczy napisać „internalize" — reszta jest w skillu. Rób to w tej samej sesji, w której powstał draft, bo tylko tam Claude go jeszcze widzi. Cała sekcja Pętla jest o tym, jak z tego zrobić nawyk.

Dodatek— tylko jeśli Claude pisze do Gmaila przez Twoją własną integrację z API

Prompt dodatkowy — reguły techniczne Gmail API

Ten prompt i lista pod nim dotyczą jednego przypadku: Claude sam składa wiadomość i zapisuje ją przez Gmail API, tak jak u Piotra. Konektor Gmaila z claude.ai to inna droga: tam wiadomość składa konektor, a nie Claude, więc nie masz gdzie tych reguł zastosować i możesz cały dodatek pominąć. Dokumentacja konektora wymienia jako jego możliwości wyszukiwanie i czytanie maili, tworzenie wersji roboczych, dostęp do metadanych, etykiety i wątki oraz listę zapisanych wersji roboczych, a jako ograniczenie podaje brak wysyłki, brak treści załączników i część zaawansowanych filtrów. O edycji istniejącej wersji roboczej ani o kontroli nad strukturą MIME czy formatowaniem HTML nie mówi nic w żadną stronę — ta strona po prostu nie wie, czy to działa. Wracasz tu dopiero, gdy podłączysz własną integrację.

If references/gmail-api.md already exists in the writing-style skill, copy it to ~/.claude/writing-style-backup-<today's date>/ first — outside ~/.claude/skills/, so the copy cannot turn into a second live skill — and merge into it rather than replacing it, keeping every rule that is already there and reporting what you kept and what you added. Otherwise create references/gmail-api.md in the writing-style skill and put the technical rules listed below in this prompt into it, each in the standard shape: the rule, then Why, then How to apply. These are mechanics, not voice, so take them as given rather than deriving them from my mailbox. Add a row for this file to the routing table with the trigger: any task that creates or updates an email draft through the API.

The rules: build every body as multipart HTML and never as plain text, because plain text hard-wraps at 76 columns and breaks both the rendering and the collapsing of quoted history. Set no font family, size or line height, and separate paragraphs with a single blank line. Include the full quoted thread in every reply, carried over in its original HTML rather than re-rendered. When editing an existing draft, replace only the new-content section and never rebuild the message from the body string, because a rebuild silently drops attachments and the quote. Select the reply target from real messages only, excluding drafts. Append the signature only to messages written from scratch, never to a reply. After writing a draft, assert that a text/html part exists and contains the quoted thread. Create and update drafts freely, never send.

Gotowiec techniczny — te same reguły po polsku, do sprawdzenia po fakcie

  • Treść maila budowana jako HTML, nigdy jako czysty tekst — czysty tekst łamie się twardo co 76 znaków, więc w Gmailu wychodzi wąska, poszarpana kolumna z przerwami w środku zdań, a wątek pod spodem przestaje się zwijać. To najczęściej zgłaszany objaw „mail wygląda dziwnie".
  • Zero własnego kroju, rozmiaru i interlinii — jeden blok tekstu, akapity rozdzielone pojedynczą pustą linią. Własne ustawienia czcionki nadpisują Twoje domyślne w Gmailu i mail wygląda jak wklejony z innego programu.
  • Odpowiedź zawsze z pełną zacytowaną historią wątku, przeniesioną w oryginalnej postaci. Historia przepisywana ręcznie albo poprzedzana znakami większości rozjeżdża zagnieżdżone cytaty.
  • Poprawka istniejącej wersji roboczej to podmiana samego fragmentu tekstu, nigdy zbudowanie wiadomości od nowa. Przebudowa po cichu gubi załączniki i cytowany wątek, a w podglądzie wszystko wygląda w porządku.
  • Odpowiadaj na ostatnią prawdziwą wiadomość w wątku, pomijając wersje robocze. Odpowiedź podpięta pod wersję roboczą psuje wątek po stronie odbiorcy.
  • Podpis tylko w mailach pisanych od zera, nigdy w odpowiedzi w wątku, gdzie i tak jest już niżej.
  • Sprawdzenie po zapisaniu, że wersja robocza naprawdę zawiera część HTML z cytowanym wątkiem. Samo „tekst cytatu jest obecny" przechodzi także wtedy, gdy wątek się nie zwija.
  • Wersja robocza tak, wysyłka nigdy bez Twojej decyzji — to jedyne miejsce, w którym potwierdzenie ma sens.

Jedna z tych reguł obowiązuje niezależnie od tego, czym Claude pisze do skrzynki, więc warto ją mieć zawsze: wersja robocza tak, wysyłka nigdy bez Twojej decyzji. Dochodzi do niej jedna spoza tej listy — diakrytyki uzupełniane za Ciebie w każdym mailu, jeśli piszesz szybko i gubisz ogonki; prompt 3 dopisuje ją sam, na każdej ścieżce, ale tylko wtedy, gdy pomiar z promptu 1 rzeczywiście to u Ciebie pokaże. Tanie zasady, a widać je w pierwszym zdaniu.

Pętla · to jest cała reszta pracy

Po każdej wysyłce jedno słowo. Tu powstaje różnica między draftem, który poprawiasz, a draftem, który po prostu wysyłasz.

Pierwsza wersja skilla trafia może w połowę. Reszta bierze się z tego, co poprawiasz — pod warunkiem, że każda poprawka zostaje zapisana jako zasada, a nie tylko wykonana.

Pętla: jedna wysyłka = 0–3 nowe zasady 1 · Skill pisze draft Claude — wczytuje skill przed pisaniem 2 · Poprawiasz i wysyłasz Ty — normalna praca, nic dodatkowego 3 · Mówisz jedno słowo Ty — jeden dodatkowy ruch w obiegu 4 · Pobranie wysłanej i różnica Claude — to, co poszło, nie draft 5 · Uogólnienie i zapis zasady Claude — o klasie, nigdy o osobie Nowa zasada działa już w następnym drafcie. Poprawka poza obiegiem wróci przy kolejnym mailu.
Jedyny krok, który wymaga Twojej decyzji, to poprawka, którą i tak robisz. Cała reszta obiegu jest automatyczna.

Czym uruchamiasz jedną rundę

Treść jest w prompcie 5 w sekcji Start. Gdy masz już zainstalowany skill z promptu 4, nie musisz go wklejać — wystarczy napisać „internalize" po wysłaniu wiadomości, a reszta jest w skillu.

Uruchamiaj rundę w tej samej sesji, w której powstał draft. Gmail kasuje wersję roboczą w chwili wysłania, więc draftu nie da się już odzyskać ze skrzynki. Jeśli sesja jest zamknięta, otwórz ją z powrotem: Claude Code zapisuje każdą sesję na dysk, więc komenda claude --resume pozwala wybrać tę właściwą z listy i uruchomić rundę w niej, z draftem nadal na miejscu. Wklejanie draftu ręcznie zostaje dopiero wtedy, gdy tej sesji już nie ma — a na ścieżce z zasady numer 6, gdzie draftu nie widziałaś w czacie, jedyną kopią jest to, co sama skopiujesz do notatki przed wysłaniem.

Bez podłączonej skrzynki ta sama runda wymaga wklejenia także wysłanej wersji, zaraz po słowie „internalize". Działa, tylko kosztuje jeden ruch więcej za każdym razem — i to jest ten ruch, na którym pętle najczęściej umierają.

Tak wygląda pętla, która nie uczy

Poprawiam draft i wysyłam

Poprawka jest wykonana, ale nigdzie nie zapisana. Ta sama zmiana wróci przy następnym mailu tej samej klasy, i przy kolejnym. Po miesiącu masz to samo poczucie, że „prawie dobrze, ale zawsze coś".

Tak wygląda pętla, która uczy

Poprawiam, wysyłam, mówię „internalize"

Poprawka zostaje uogólniona i wpisana do właściwego pliku tematycznego. Ta klasa zmian znika z następnych draftów. Liczba poprawek na maila spada z rundy na rundę w obrębie danej klasy wiadomości i to jest miernik postępu, na który patrz w pierwszej kolejności.

Jak sprawdzić po pięciu rundach, czy to idzie w dobrą stronę

  • Licz poprawki, nie wrażenia — po każdej wysyłce zanotuj liczbę zmian, które musiałaś zrobić. Trend ma spadać. Wrażenie „chyba lepiej" nie jest danymi.
  • Test na trzech zaczynach — daj Claude'owi trzy jednozdaniowe polecenia do trzech różnych klas odbiorców i porównaj drafty z tym, co sama byś napisała.
  • Jeśli trend nie spada — poproś: „pokaż, które zasady zastosowałeś w tym drafcie i zacytuj je". Zwykle okaże się, że skill się nie wczytał albo zasada jest zbyt ogólna, żeby cokolwiek zmienić.
  • Jeśli skok poprawek wypadł na wiadomości klasy, której wcześniej nie wysyłałaś — to nie usterka, tylko pierwsza runda tej klasy. Zasad na nią jeszcze nie ma, bo nie było ich z czego wyciągnąć. Licz trend osobno w obrębie każdej klasy, inaczej pierwszy nowy typ wiadomości wygląda jak regres.
Kształt · jak wygląda skill po dwóch i pół miesiąca

Nierówno i tylko tam, gdzie realnie narastały poprawki. To jest cecha, nie brak.

Poniżej realny rozkład 312 zasad z zapisanym powodem na 23 pliki tematyczne, stan na 12 sierpnia 2026 — kilka na kanał, więcej na klasę wiadomości, pięć na mechanikę i strategię. Sześć plików na górze zbiera połowę wszystkiego (160 z 312), a kilkanaście dalszych ma po kilka zasad, bo tyle wystarczyło. Skill rośnie z każdą rundą, więc za miesiąc te liczby będą inne.

Wykres słupkowy: liczba zasad w dwunastu największych plikach tematycznych, od 35 dla follow-upu po spotkaniu do 13 dla przypomnień mailowych.
Dwanaście największych plików tematycznych z dwudziestu trzech. Rozkład powstał sam, nikt go nie planował. Słupek mówi, gdzie narastały poprawki, a nie ile korespondencji idzie danym kanałem — na wysokość wpływa też to, jak obszernie zasady w danym pliku spisano i jak konsekwentnie dopisywano w nim znacznik powodu. Dane: skill writing-style, liczone jako wystąpienia znacznika „Why:" w plikach references, stan na 12 sierpnia 2026.

Higiena, bez której to się rozpada po kilkudziesięciu zasadach

  • Limit na plik — 200 linii dla SKILL.md, 250 dla pliku tematycznego. To są własne, ostrzejsze limity Piotra, nie liczby z dokumentacji: dokumentacja skilli mówi „trzymaj SKILL.md poniżej 500 linii", a próg 200 linii pada w dokumentacji pamięci projektowej, przy plikach instrukcji CLAUDE.md, wraz z powodem — dłuższe pliki zużywają więcej kontekstu i obniżają stosowanie się do nich. Ten sam powód wystarczy, żeby zejść niżej niż 500: SKILL.md wczytuje się zawsze, więc dostaje ostrzejsze 200. Plik tematyczny może być o pięćdziesiąt linii dłuższy, bo w jednym zadaniu wczytuje się tylko jeden z nich.
  • Scalanie zamiast dopisywania — jeśli nowa zasada jest bliska istniejącej, dochodzi jako kolejny przykład pod nią. Dwie prawie identyczne zasady to gwarancja, że któraś zostanie zignorowana.
  • Podział w tej samej sesji — przekroczony limit dzieli się od razu, nie „kiedyś". Odłożony podział nigdy się nie odbywa.
  • Filtr nazw własnych przed zapisem — przed dopisaniem zasady sprawdzenie, czy nie wpadło nazwisko, firma, adres albo data.

Wszystkie cztery są wpisane w prompt 4, więc od pierwszego dnia pilnują się same — łącznie z filtrem nazw własnych i limitem 200 linii, które muszą być właśnie tam, a nie tylko w prompcie budującym skill. Powód jest prosty: po pierwszej wysyłce każdą kolejną zasadę pisze już pętla, a nie Ty. Warto jednak wiedzieć, po co te reguły są, bo pierwszy odruch przy każdej z nich jest odwrotny.

Czego nie da się wyciągnąć z korpusu i trzeba dopisać ręcznie

  • Rzeczy, których nigdy nie wysłałaś — pierwszy kontakt z nowym typem odbiorcy, twarda odmowa, negocjacja. Nie ma ich w skrzynce, więc pojawią się dopiero z pętli.
  • Świadome zmiany stylu — jeśli chcesz pisać inaczej niż dotąd, korpus tego nie wie. To dopisujesz sama, jako zwykłą zasadę w tym samym formacie.
  • Strategia, nie forma — komu odpowiadać w kopii, czego nie stawiać na piśmie, kiedy nie odpisywać od razu. To osobne pliki, dokładnie tak samo zbudowane.

Czego NIGDY nie robić

Każdy z tych ruchów wygląda na skrót, a kończy się skillem, który dalej wymaga poprawek — tyle że teraz nie wiadomo dlaczego.

  • Poprzestawać na przymiotnikach — samo „ciepło, ale konkretnie" nie zmienia ani jednego zdania w drafcie; u Piotra taki czterolinijkowy opis głosu w skillu jest, ale stoi nad zmierzonymi zasadami, nie zamiast nich
  • Trzymać wszystkiego w jednym pliku — powyżej progu zasady przestają być stosowane i to się dzieje po cichu
  • Pisać zasad jako zakazów — bez „zamiast tego rób Y" model wraca do stylu domyślnego
  • Wpisywać nazwisk i firm w treść zasady — taka zasada nie odpali przy żadnym następnym adresacie
  • Ufać, że Claude pamięta — bez wczytania skilla przed pisaniem powstaje uśredniony draft
  • Traktować tego jako jednorazowego setupu — bez pętli po wysyłce jakość zatrzymuje się na dniu pierwszym
  • Uczyć na cudzych mailach — korpus to Twoja skrzynka, nie przykłady dobrych maili z internetu
  • Kopiować cudzych zasad głosu — mechanikę bierz w całości, reguły techniczne Gmaila tylko przy własnej integracji z API, ale zasady stylu zbudowane na czyjejś korespondencji dadzą drafty brzmiące jak ktoś inny
Źródła · sprawdzone 12 sierpnia 2026

Skąd wzięte są liczby i twierdzenia techniczne.

Liczby o skillu Piotra pochodzą z jego plików i z zapisów sesji, każda z podaną regułą liczenia. 312 zasad z zapisanym powodem w 23 plikach tematycznych, stan na 12 sierpnia 2026 — wystąpienia znacznika „Why:" w plikach references skilla writing-style, policzone tym samym przebiegiem skryptu, który narysował wykres wyżej; zapisów bez tego znacznika jest w tych plikach więcej i one w tej liczbie nie siedzą; z tego 203 mają pod tym samym znacznikiem linię wyzwalacza („How to apply" albo „Trigger"), a 109 nie, zaś sześć największych plików zbiera 160 z 312. Skill rośnie z każdą rundą, więc te cztery liczby są prawdziwe na dzień przeliczenia, nie na zawsze. 108 wywołań /internalize w 43 dniach — w plikach zapisu sesji Claude Code (katalog ~/.claude/projects, pliki .jsonl) zliczone zostały wiadomości użytkownika, w których treści pada „/internalize", z pominięciem bloków, które Claude Code sam dopisuje do zapisu jako wiadomość użytkownika: treści wczytanego skilla, komunikatów systemowych i powiadomień o zadaniach. Powtórzeń nie było: wszystkie 108 mają różne znaczniki czasu. Zakres od 14 maja do 12 sierpnia 2026, dni różnych 43. Liczba obejmuje każde użycie tej komendy, także po postach, dokumentach i pracy z innymi skillami — nie tylko rundy po wysłanym mailu. 13 wcześniejszych plików z notatkami o pisaniu — tyle wymienia SKILL.md jako zastąpione przy rozbiciu monolitu; wszystkich plików feedbacku w pamięci projektów jest dziś 229, ale dotyczą całej pracy z Claude'em, nie samego pisania. 1236 linii monolitu — liczba zapisana w uzasadnieniu limitu w skillu internalize; sam plik już nie istnieje. Daty powstania obu skilli pochodzą z dat utworzenia ich katalogów; data 16 czerwca to data utworzenia obecnego pliku internalize/SKILL.md. Kilku liczb na tej stronie nikt nie policzył i reguły liczenia nie mają: 0–3 zasady na rundę, 8–12 wysyłek na start, kilkanaście rund poprawek na samą mechanikę, trafienie mniej więcej w połowę przy pierwszej wersji — to szacunki autora. Tak samo zdanie „drafty wychodzą prawie bez poprawek", które jest wrażeniem, nie liczbą: poprawek na wysłanego maila Piotr u siebie nigdy nie liczył. Ty licz od pierwszej rundy, tak jak każe sekcja Pętla; będziesz miała to, czego on nie ma. Twierdzenia o działaniu Claude Code pochodzą z dokumentacji.

Gdzie mieszkają skille osobiste, że opis decyduje o automatycznym wczytaniu i że jest przycinany do 1536 znaków, że treść skilla zostaje w kontekście po wczytaniu, że sam SKILL.md ma się mieścić poniżej 500 linii, oraz że nowo utworzony katalog skilli wymaga ponownego uruchomienia Claude Code i że skille sprawdza się w świeżej sesji code.claude.com — Extend Claude with skills
Że pliki instrukcji projektowych warto trzymać poniżej 200 linii, bo dłuższe zużywają więcej kontekstu i obniżają stosowanie się do nich; oraz jak działa pamięć automatyczna w katalogu projektu code.claude.com — How Claude remembers your project
Że konektora Gmaila nie autoryzuje się w Claude Code, tylko na claude.ai w Ustawieniach → Konektory, że konektory wczytują się wyłącznie przy logowaniu kontem claude.ai, a nie przy kluczu API, i że na planach Team i Enterprise dodaje je administrator code.claude.com — Connect Claude Code to tools via MCP
Co konektor Gmaila z claude.ai wymienia jako swoje możliwości — wyszukiwanie i czytanie maili, tworzenie wersji roboczych, metadane, etykiety i wątki, lista zapisanych wersji roboczych — oraz jakie ograniczenia wymienia wprost: brak wysyłki, brak treści załączników, część zaawansowanych filtrów support.claude.com — Konektory w Claude
Że wersja robocza w Gmailu jest kasowana w chwili wysłania i powstaje nowa wiadomość z innym identyfikatorem, więc po wysyłce nie da się jej odzyskać ze skrzynki developers.google.com — Gmail API, wersje robocze
Jak pobrać własną pocztę na dysk, gdy Claude nie ma dostępu do skrzynki support.google.com — Pobieranie danych Google