Přeskočit na obsah

Lekce 03.3: Promptování v terminálu (Prompting in the Terminal)

⏱️ 3 min čtení Lekce 03.3

🧠 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.tsx použij pro zobrazení částky existující utilitu formatCurrency z src/lib/currency.ts s 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)

  1. Ujasněte si soubory předem: Než stisknete Enter, mějte jasno, které soubory má agent otevřít.
  2. Specifikujte verifikaci: Nikdy neodesílejte prompt bez instrukce pro spuštění testu nebo kompilátoru.
  3. 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).