---
name: polish-style
description: Apply the Polish content style standard (post-2026 orthography, plain language, anti-"AI-polszczyzna" register) and lint the result with a bundled checker. Use whenever writing, editing, translating, rewriting, or generating Polish prose — documents, UI/microcopy, emails, notifications, marketing, blog, social posts, product copy, any user-facing Polish text. Not for code identifiers/comments (English) or non-Polish content.
---

# Polish content style (polszczyzna)

Whenever you produce Polish prose, write it to this standard, then **lint it** and fix the flags.
The enemy is not spelling — it is **"AI-polszczyzna"**: English-syntax calques, passive-voice
overload, noun-stacking, and corpo-tone. Write like a fluent native, not like a translation.

## Workflow
1. Draft the Polish text against the four layers below (L0–L3).
2. Lint it (Node, no deps — `${CLAUDE_SKILL_DIR}` resolves to this skill's folder from any cwd):
   - inline: `node "${CLAUDE_SKILL_DIR}/scripts/pl-linter.mjs" --text "twój tekst" --genre doc`
   - a file: `node "${CLAUDE_SKILL_DIR}/scripts/pl-linter.mjs" ścieżka.md --genre doc`
   - use `--genre ui` for buttons, microcopy, notifications, short labels.
3. Fix until **0 ERROR** and **L2 ≈ 0** (no AI-tells). L1 flags (sentence length / FOG) are
   warnings — tighten where it genuinely helps; dense domain prose may legitimately run higher.
4. Full rules, the calque/wydmuszka lists, and a before/after example: see [REFERENCE.md](REFERENCE.md).

## The four layers (universal Polish)
**L0 — Poprawność (norma 2026).** „nie" + przymiotniki i imiesłowy przymiotnikowe **łącznie**
(*niepalący, niemilszy, niezweryfikowany*); mieszkańcy miast wielką literą (*Warszawianin*);
**cudzysłów „ "** (proste `"` to błąd); obce nazwy odmieniaj, **apostrof tylko przy niemej końcówce**
(*Google'a, Apple'a* — ale *Cursora, Reacta, Dockera*); **„—"** do wtrąceń ze spacjami / **„–"** w
zakresach bez spacji (*8–10*); jednostki po polsku (*5 m², 25 EUR/h, 1,5 mln, 10 000*).

**L1 — Prostota.** Czasownik zamiast nominalizacji (*dokonać weryfikacji* → **zweryfikować**);
**strona czynna** (nie „zostać/być + imiesłów", nie bezosobniki -no/-to; **„się" jest OK**); krótkie
zdania (doc: średnia ≤ 15–18 słów, flaga > 25); FOG-PL doc ≤ 12 / ui ≤ 10.

**L2 — Anty-AI-polszczyzna (zero tolerancji).** Wytnij banowane otwarcia („W dzisiejszym… świecie",
„Warto zauważyć, że", „Kluczowym elementem jest", „realizowane jest", „pomyślnie"); wytnij
korpo-wydmuszki (*dedykowany, kompleksowy, holistyczny, innowacyjny, nowoczesny, intuicyjny,
synergiczny, rewolucyjny*); „dokonać X" → goły czasownik; „w oparciu o" → „na podstawie"
(preferencja, nie błąd); nie nadużywaj „który". (Wyjątek domenowy: „kompleksowa obsługa/usługa" jest OK.)

**L3 — Rejestr per gatunek.** Dokument = 3. osoba / bezosobowa **czynna**; UI/microcopy = **tryb
rozkazujący** („Dodaj zlecenie", „Wybierz kategorię"); email/powiadomienie = najważniejsze w 1. zdaniu,
serwis przez „my" („Wysłaliśmy"); B2B/prawne = „Państwo" lub bezosobowo. Anglicyzmy tylko gdy są
standardem (MVP, API). Emoji tylko w nieformalnych notatkach.

## Precedence & project canon
- **L3 (rejestr) wygrywa z ogólnym L1/L2** przy konflikcie — np. dokument zostaje w 3. osobie, nawet
  jeśli „plain" forsowałby „ty"; ale POD spodem nadal obowiązuje strona czynna i krótkie zdania.
- If the current **project defines its own Polish glossary or register** (e.g. a repo `CLAUDE.md` or
  `STYLE_GUIDE_PL.md`), follow that **on top** of these universal rules — **project canon wins on
  terminology and register.** This skill carries no domain glossary; it is universal Polish only.

**Goal after editing: 0 ERROR, L2 ≈ 0**, reads like a fluent Polish native.
