První prompt, který funguje
Čtyři části, ze kterých se skládá prompt pro Claude Code: kontext, cíl, omezení a formát výstupu. S ukázkami špatné a lepší verze vedle sebe.
Většina zklamání z AI nevzniká u modelu, ale o dvě vteřiny dřív, když píšeš zadání. Rozdíl mezi „tohle je k ničemu" a „tohle je přesně ono" bývá pět vět navíc. Ukážu ti, kterých pět a proč.
Budu psát o Claude Code, protože v něm pracuju, ale ta struktura platí kdekoliv. Je jedno, jestli sedíš v terminálu nebo v chatu.
Prompt má čtyři části#
Dobrý prompt není delší, je úplnější. Chybí mu obvykle jedna ze čtyř věcí:
- Kontext. Kde jsi, co už existuje, co se v tom projektu smí a nesmí.
- Cíl. Co má být hotové a podle čeho poznáš, že je.
- Omezení. Čeho se nedotýkat, jaké nástroje použít, co je zakázané.
- Formát výstupu. Chceš kód, plán, seznam, jeden soubor, nebo diff.
Když jednu z nich vynecháš, model si ji doplní sám. A doplní si ji podle průměru internetu, ne podle tvého projektu.
Kontext: řekni, kde stojíš#
Model nevidí tvůj disk, nezná tvoje zvyklosti a nepamatuje si, co jsi dělal minule. Kontext je to, co doplňuje jeho slepou skvrnu.
Špatná verze:
Přidej přihlašování.Lepší verze:
Projekt: Next.js 16, App Router, TypeScript, soubory v src/.
Styly jedu na Tailwindu v4, komponenty jsou v src/components/.
Databázi zatím nemám, uživatele drží jednoduchý JSON soubor.
Přidej přihlašování e-mailem a heslem.Čtyři řádky navíc a model přestane hádat. Nenavrhne ti knihovnu, která ve verzi tvého frameworku nefunguje, a nezaloží složku, kterou v projektu nemáš.
Cíl: popiš výsledek, ne postup#
Tohle je nejčastější past. Lidi popisují, jak to má model udělat, místo aby popsali, co má vzniknout. Výsledek je, že model splní instrukce a mine se záměrem.
Špatná verze:
Vytvoř funkci, která projde pole, pro každou položku zavolá API
a výsledek uloží do jiného pole.Lepší verze:
Chci načíst detaily objednávek pro seznam ID, který mám v poli.
Objednávek bývá kolem padesáti, API zvládne pět požadavků najednou.
Když jeden požadavek selže, zbytek musí doběhnout a chybu chci vidět
v návratové hodnotě, ne v konzoli.První verze dostane cyklus, který pošle padesát požadavků naráz a při první chybě spadne celý. Druhá verze dostane rozumné řešení, protože model ví, co se má stát v mezních situacích. Popsat mezní situace je většinou důležitější než popsat ten hlavní případ.
Omezení: řekni, čeho se nemá dotýkat#
Model má tendenci být užitečný nad rámec zadání. Přepíše ti konfiguraci, doplní knihovnu, přejmenuje soubor „aby to bylo hezčí". Když jsi v půlce projektu, je to poslední věc, kterou chceš.
Omezení jsou krátká a účinná:
Neměň nic mimo src/components/Formular.tsx.
Nepřidávej nové závislosti, vystač si s tím, co je v package.json.
Nespouštěj build, jenom napiš kód.Poslední řádek je důležitější, než vypadá. Když víš, že build právě běží jinde, nebo že testy trvají čtvrt hodiny, ušetříš si tím spoustu čekání.
Zvlášť užitečná omezení#
- „Nejdřív mi řekni plán, počkej na moje ok, pak teprve piš kód."
- „Když si nejsi jistý, zeptej se, nehádej."
- „Drž se stylu, který v tom souboru už je."
Ta druhá věta je zlatá. Model bez ní radši vymyslí odpověď, než aby přiznal, že mu chybí informace.
Formát výstupu: řekni, co chceš dostat zpátky#
Poslední část je nejlevnější a nejčastěji chybí. Bez ní dostaneš esej, když jsi chtěl seznam, nebo tři soubory, když jsi chtěl jeden.
Vrať mi jenom obsah toho jednoho souboru, bez vysvětlování.Vrať mi číslovaný seznam kroků, každý krok jednou větou. Kód zatím nepiš.Vrať mi tabulku: sloupec problém, sloupec dopad, sloupec návrh opravy.Formát výstupu je nejrychlejší způsob, jak zkrátit odpověď na polovinu. Model nepíše dlouze proto, že chce, ale proto, že mu nikdo neřekl, jak krátce.
Celé to dohromady#
Takhle vypadá zadání, které má všechny čtyři části a přitom se vejde na obrazovku:
Kontext:
Next.js 16, App Router, TypeScript, Tailwind v4. Komponenty v src/components/.
Máme sdílenou komponentu Section, používej ji místo vlastního obalu.
Cíl:
Stránka /kontakt s formulářem (jméno, e-mail, zpráva). Po odeslání se
zobrazí potvrzení na stejné stránce, bez přesměrování. Prázdná pole
a nesmyslný e-mail se hlásí u konkrétního políčka, ne nahoře.
Omezení:
Žádné nové závislosti. Odesílání zatím jen naloguj na server, backend
řeším potom. Nesahej na globals.css.
Výstup:
Nejdřív plán v pěti bodech, počkej na moje ok. Pak kód, jeden soubor.Není to magická formulka a nemusíš to dodržovat otrocky. Ale pokaždé, když ti model vrátí něco mimo, projdi ty čtyři body a zjistíš, který jsi vynechal. V devíti případech z deseti je to omezení nebo formát.
Co dělat, když to pořád nesedí#
Neopravuj špatnou odpověď dokola. Vrať se o krok zpět a napiš zadání znovu, jinými slovy, ale s tím, co ses mezitím dozvěděl. Konverzace, ve které je pět neúspěšných pokusů, model spíš mate, než aby mu pomáhala.
A když se ti nějaká struktura promptu osvědčí, ulož si ji. Přesně proto mám v nástrojích hotové prompty ke stažení, včetně toho, co používám na obrázky a video. Nemusíš vymýšlet, co už jednou fungovalo.
Kafe a cígo, fajně si sednout a jdeme na to.
Vojta Horava