1. Czym jest Markdown: filozofia, CommonMark i dlaczego to natywny język AI
Markdown to lekka język znaczników tekstu, stworzony przez Johna Grubera w 2004 roku z prostym celem: pisanie strukturyzowanego tekstu, który pozostaje maksymalnie czytelny w postaci surowej i łatwo konwertuje się do poprawnego HTML-a. Współczesny wzorzec formatu został ustandaryzowany w specyfikacji CommonMark i rozszerzony o standard GitHub Flavored Markdown (GFM).
W interakcji ze sztuczną inteligencją (ChatGPT, Claude Code, Gemini, lokalne modele Ollama) to właśnie Markdown jest głównym językiem komunikacji.
Dlaczego duże modele językowe „myślą” w Markdownie
- Idealna ekonomia tokenów: W przeciwieństwie do XML czy HTML, gdzie każdy tag wymaga otwarcia i zamknięcia (
<p>Tekst</p>), w Markdownie używa się jedynie minimalnych znaczników kontrolnych lub zwykłych znaków nowej linii. - Jednoznaczność semantyczna: Symbole
#,-,>oraz backticki nie obciążają okna kontekstowego, dając modelowi wyraźną mapę hierarchii myśli. - Naturalność dla streamingu: Generowanie tekstu słowo po słowie bez skomplikowanych niezamkniętych tagów pozwala renderować formatowanie na bieżąco w interfejsie czatu.
- Kontrola wersji w Git: Pliki
.mdsą zwykłymi plikami tekstowymi, więc wszelkie zmiany w bazie wiedzy czy dokumentacji są łatwo śledzone za pomocągit diff.
Formatowanie w Markdownie dzieli się na dwa poziomy: elementy blokowe (nagłówki, listy, cytaty, tabele, bloki kodu) oraz elementy inline (pogrubienie, kursywa, linki, kod inline). Elementy blokowe muszą być zawsze oddzielone pustą linią.
2. Hierarchia nagłówków a struktura nawigacyjna dokumentów
Nagłówki stanowią szkielet dokumentu i tworzą spis treści (Table of Contents). W Markdownie poziomy nagłówków oznacza się symbolem kratki (#) na początku linii – od jednego do sześciu.
Hierarchia poziomów nagłówków w Markdownie i odpowiadające im tagi HTML| Poziom nagłówka | Składnia Markdown | Ekwiwalent HTML | Typowe zastosowanie |
|---|---|---|---|
| Poziom 1 | # Nagłówek | <h1> | Tytuł całego artykułu lub dokumentu (tylko 1 na stronę) |
| Poziom 2 | ## Nagłówek | <h2> | Główne sekcje i kluczowe moduły tematu |
| Poziom 3 | ### Nagłówek | <h3> | Podsekcje, kroki instrukcji, poszczególne narzędzia |
| Poziom 4 | #### Nagłówek | <h4> | Szczegóły podpunktów, parametry, przypisy |
| Poziom 5 | ##### Nagłówek | <h5> | Drobne przypisy techniczne |
| Poziom 6 | ###### Nagłówek | <h6> | Mikro-nagłówki specyfikacji |
Krytyczna zasada spacji po kratce
Zgodnie ze standardem CommonMark, między symbolem kratki a tekstem nagłówka musi znajdować się pojedyncza spacja. Jeśli spacja jest pominięta, większość współczesnych parserów potraktuje wpis jako zwykły hashtag lub surowy tekst.
Porównanie poprawnej i błędnej składni nagłówkówNigdy nie używaj symbolu # dla nagłówka pierwszego poziomu wewnątrz treści artykułu, jeśli nagłówek jest już zdefiniowany w metadanych (frontmatter). Na stronie powinien wystąpić dokładnie jeden semantyczny tag <h1>.
3. Formatowanie tekstu: pogrubienie, kursywa, przekreślenie i znaki specjalne
Formatowanie inline pomaga zwrócić uwagę na kluczowe terminy i pojęcia.
Składnia wyróżniania tekstu kursywą w Markdownie| Styl wyróżnienia | Składnia Markdown | Wynik wyświetlania |
|---|---|---|
| Pogrubienie (Bold) | **ważny termin** lub __termin__ | ważny termin |
| Kursywa (Italic) | *akcent* lub _akcent_ | akcent |
| Pogrubiona kursywa | ***krytyczna akcja*** | krytyczna akcja |
| Przekreślenie (Strikethrough) | ~~przestarzała wersja~~ | |
| Kod Inline | `apiKey` | apiKey |
Praktyczne niuanse typografii
- Wyróżnianie wewnątrz słowa: Jeśli chcesz wyróżnić część słowa, zawsze używaj gwiazdek (
A*cat*meow), ponieważ podkreślenia wewnątrz słów niektóre procesory ignorują, traktując je jako część identyfikatora zmiennej (user_profile_id). - Łamanie linii bez nowego akapitu: Aby dodać złamanie linii (
<br>) wewnątrz jednego akapitu, umieść dwie spacje na końcu linii lub skorzystaj z tagu<br>. - Komentarze: Dla notatek, które nie powinny być renderowane na finalnej stronie, używaj składni komentarzy HTML:
<!-- To jest wewnętrzny komentarz -->.
4. Listy i struktury zagnieżdżone: numerowane, wypunktowane oraz checkboxy
Listy porządkują algorytmy krok po kroku oraz zestawy parametrów.
Listy wypunktowane i numerowane
Dodatkowe bloki wewnątrz list
Aby wstawić akapit, cytat lub blok kodu do punktu listy bez przerywania ogólnej numeracji, zrób wcięcie wynoszące 4 spacje przed każdą podrzędną linią:
Upewnij się, że zmienne środowiskowe w pliku .env są poprawnie skonfigurowane przed uruchomieniem.
- Sprawdź katalog wyjściowy
dist/.
6. Kod inline, bloki kodu i podświetlanie składni
Kod i konfiguracje wymagają fontu monospace oraz ochrony przed interpretacją zawartych w nich znaków.
Kod Inline vs Fenced Blocks
- Kod Inline: pojedyncze backticki:
git status. - Eskapowanie backticka w kodzie inline: owijanie podwójnymi backtickami:
`npm test`. - Fenced blocks kodu: potrójne backticki z obowiązkowym wskazaniem identyfikatora języka.
Surowa zasada izolacji promptów: Wszystkie systemowe prompty lub zasady asystentów (.cursorrules, CLAUDE.md), które zawierają własne symbole nagłówków (#, ##), muszą być owinięte w wydzielony blok kodu ze wskazaniem języka (np. markdown lub text). Pozostawienie ich bez bloku kodu w treści tekstu spowoduje, że wewnętrzne nagłówki promptu trafią do spisu treści (TOC) artykułu i zniszczą nawigację strony.
7. Cytaty, callouty i poziome separatory
Cytaty tworzy się za pomocą symbolu > na początku linii i służą one do wyróżniania myśli, ważnych ostrzeżeń lub cytowania tekstu.
Standardowe cytaty i wielopoziomowe zagnieżdżenie
Współczesne GitHub Alerts (Bloki Callout)
Nowoczesne platformy dokumentacyjne wspierają standaryzowane wyodrębnione bloki z kolorowymi ikonami:
Poziome separatory
Trzy lub więcej dywizów (---), gwiazdek (***) lub podkreśleń (___) w osobnej linii tworzy poziomą kreskę:
8. Eskapowanie znaków specjalnych i wbudowany HTML
Gdy trzeba wyświetlić znak składni Markdown jako zwykły znak drukarski, stawia się przed nim odwrotny ukośnik (\).
Specjalne znaki składni Markdown, które można eskapować odwrotnym ukośnikiemLista znaków do eskapowania
| Znak | Nazwa | Przykład eskapowania | Wynik renderowania |
|---|---|---|---|
\ | Odwrotny ukośnik (Backslash) | \\ | \ |
` | Backtick | \` | ` |
* | Gwiazdka (Asterisk) | \*nie kursywa\* | *nie kursywa* |
_ | Podkreślnik (Underscore) | \_nie pogrubienie\_ | _nie pogrubienie_ |
# | Kratka (Hash) | \# Nie nagłówek | # Nie nagłówek |
[ ] | Nawiasy kwadratowe | \[Nie link\] | [Nie link] |
! | Wykrzyknik | \!Nie obraz | !Nie obraz |
Bezpieczne użycie HTML
Jeśli standardowy Markdown jest niewystarczający, można skorzystać z tagów HTML, pamiętając jednak o ograniczeniach:
- Tag
<br>do wymuszonego łamania linii w tabelach. - Tag
<u>do tekstu podkreślonego. - Blokowe tagi (
<div>,<table>) muszą być oddzielone od kodu Markdown pustymi liniami, a wewnątrz nich składnia Markdown nie działa.
9. Tabele GitHub Flavored Markdown (GFM) i diagramy Mermaid
Tabele pozwalają porównywać charakterystyki, parametry i konfiguracje.
Składnia tabel GFM z wyrównaniem
:---— wyrównanie kolumny do lewej.:---:— wyrównanie do środka.---:— wyrównanie do prawej (idealne dla cen i liczb).
Wizualizacja architektury przez Mermaid
Zamiast ciężkich zrzutów ekranu rastrowego, współcześni deweloperzy używają wbudowanych tekstowych diagramów Mermaid:
10. Markdown w agentach AI: CLAUDE.md, System Prompty i checklista walidacji
W erze autonomicznych agentów AI (Claude Code, Cursor, Windsurf, Devin) Markdown stał się głównym językiem przekazywania kontekstu inżynierskiego.
Pliki instrukcji projektu (CLAUDE.md / .cursorrules)
Agenci czytają plik główny CLAUDE.md przed każdym zapytaniem. Jeśli jest on dobrze sformatowany, model bezbłędnie przestrzega architektury projektu:
Master-prompt do generowania idealnego Markdowna
Checklista kontroli jakości dokumentu Markdown
- W treści artykułu nie ma tagu
#(H1 jest generowany wyłącznie z tytułu strony). - Wszystkie sekcje najwyższego poziomu są ponumerowane kolejno (
## 1.,## 2.). - Po symbolach kratki
#musi występować spacja. - Wszystkie prompty, konfiguracje i przykłady kodu są owinięte w odpowiednie bloki
```. - Znaki specjalne w linkach są zakodowane w formacie percent-encoding.
- Tabele są sformatowane zgodnie ze standardem GFM bez uszkodzonych separatorów.
- Teksty alternatywne (alt-text) dla obrazów są przetłumaczone i opisowe.