Lekce 03.3: Promptování v terminálu (Prompting in the Terminal)
🧠 Mentální model & teoretický rozbor
Terminálové promptování se diametrálně liší od konverzace v chatu na webu. V terminálu nepíšeme lidskou prózu, ale přesné inženýrské specifikace.
STRUKTURA INŽENÝRSKÉHO TERMINÁLOVÉHO PROMPTU:┌────────────────────────────────────────────────────────────────────────┐│ 1. KONTEXT & CÍL: Přesný název souboru, modulu a cíl úpravy │├────────────────────────────────────────────────────────────────────────┤│ 2. MANTINELY: Co je výslovně ZAKÁZÁNO měnit (schéma, knihovny, typy) │├────────────────────────────────────────────────────────────────────────┤│ 3. PŘEDPOKLADY: Na které existující utility a soubory navázat │├────────────────────────────────────────────────────────────────────────┤│ 4. VERIFIKACE: Přesný příkaz, kterým agent sám ověří splnění úkolu │└────────────────────────────────────────────────────────────────────────┘Každé slovo, které do terminálu napíšete, se stává součástí kontextu pro všechny následující tahy. Úsporné, precizní vyjadřování přímo šetří peníze a zvyšuje přesnost modelu.
🏢 Realistický scénář z praxe
Vývojář potřebuje upravit formátování částek v košíku:
- Vibe prompt: „Můžeš prosím tě zařídit, aby se ceny zobrazovaly česky s mezerami a symbolem Kč na konci?“
- Agent vygeneruje vlastní ad-hoc formátovač s regexem, ignoruje existující lokalizační modul a rozbije podporu pro EUR.
- Inženýrský prompt: „V
src/components/CartSummary.tsxpoužij pro zobrazení částky existující utilituformatCurrencyzsrc/lib/currency.tss měnou CZK. Spusť test:npm test -- cart-summary.test.tsx.“- Agent během 5 sekund provede přesný import a změnu na 2 řádcích.
💻 Konkrétní ukázky kódu & promptů
Šablona pro zadávání komplexního úkolu do terminálu (Copy & Paste):
Kontext: Implementace nového endpointu pro export uživatelských dat do CSV v Next.js API Routes.
Soubory k úpravě:- Vytvořit: src/app/api/export/route.ts- Test: src/app/api/export/__tests__/route.test.ts
Technické mantinely:1. Použij knihovnu `csv-stringify/sync` (již nainstalována v package.json).2. Endpoint vyžaduje autentizaci přes session token (použij `getServerSession(authOptions)`).3. Neautentizovaný požadavek musí vrátit HTTP 401 Unauthorized.4. Exportovaná pole: id, email, createdAt, role.
Verifikační kritérium:Spusť `npx vitest run src/app/api/export/__tests__/route.test.ts` a skonči, až všechny testy projdou.⚠️ Analýza selhání & Anti-patterns
Chyba: Zdvořilostní balast a vágní formulace
Psát do CLI agenta (agy nebo claude): „Dobrý den, mohl bys být tak neuvěřitelně laskav a podívat se mi na tento kód, jestli by tam náhodou nešla přidat podpora pro dark mode?“
- Plýtvá tokeny v každém dalším tahu.
- Snižuje direktivní váhu instrukce v systémovém promptu.
- Pravidlo: Používejte věcný, rozkazovací způsob (imperativ): „Implementuj podporu dark mode v src/theme.ts podle Tailwind specifikace.“
🛠️ Inženýrský postup krok za krokem (Playbook)
- Ujasněte si soubory předem: Než stisknete Enter, mějte jasno, které soubory má agent otevřít.
- Specifikujte verifikaci: Nikdy neodesílejte prompt bez instrukce pro spuštění testu nebo kompilátoru.
- Víceřádkový vstup: Pro zadání delšího zadání připravte text v editoru a vložte ho do terminálu najednou.
🧪 Praktické cvičení (Hands-on Lab)
Úkol:
Přeformulujte vágní prompt na inženýrskou specifikaci.
Zadání:
Máte vágní požadavek: „Udělej mi validaci hesla, ať je bezpečné.“
Přepište ho na strukturovaný inženýrský prompt pro funkci validatePassword(password: string) s přesnými mantinely (min 8 znaků, číslice, speciální znak, selhávající unit test).