Představte si, že požádáte agenta, aby zahrál partii v hotové hře v prohlížeči. Udělá několik tahů, popíše pozici a zmlkne. Partie ale pokračuje. Napíšete "pokračuj". Agent znovu táhne figurami a zase čeká na vaši zprávu. Po chvíli zjistíte, že nejmonotónnější úkon tu děláte vy.

Goal je cíl s podmínkou dokončení, který agentovi zadáte příkazem /goal. Například: "hrajte střídavě za obě strany, dokud stránka neukáže, že partie skončila". Po každém dalším kole práce samostatný model podle konverzace ověří, zda už bylo cíle dosaženo. Pokud ne, práce pokračuje bez vašeho "pokračuj". Můžete tak počkat na výsledek, i když překážka nebo chyba mohou práci zastavit dřív.
Začneme hotovou podmínkou pro hru a pak sestavíme cíle pro vyhledávání, formulář a mobilní stránku. Každý bude mít jasný výsledek a způsob ověření. Ukážeme si také, jak požádat agenta, aby podmínku připravil za vás, a jak odlišit skutečné dokončení od zastavení bez výsledku.
Co /goal udržuje v chodu
V konverzaci kolem příkladu s hrou se uplatňují dva různé mechanismy, které lze snadno zaměnit. Jeden provádí akce v prohlížeči: kliká, zadává tahy a čte, co stránka zobrazuje. Druhý nekliká vůbec - přečte celou konverzaci a rozhodne, zda má práce pokračovat.
První je Playwright, nástroj pro prohlížeč předem připojený přes MCP. Ten druhý se spouští příkazem /goal. Playwright hýbe figurami, /goal rozhoduje, zda už je čas skončit - jsou to dvě různé úlohy, i když to zvenčí může vypadat jako jedna.
| Kdo jedná | Co se děje |
|---|---|
| Agent přes Playwright | provede další akci v prohlížeči a získá pozorování - to, co stránka skutečně zobrazila |
Vyhodnocovací model /goal | po dokončení dalšího kola práce agenta přečte konverzaci a rozhodne: podmínka ještě není splněna, už splněna je, nebo ji v zásadě nelze splnit |
Důležitý detail: vyhodnocení neprobíhá po každém kliknutí myší, ale až poté, co agent dokončí své kolo práce - zhruba řečeno, celou odpověď. Během jednoho takového kola může agent udělat několik akcí po sobě: táhnout figurou, přečíst výsledek a reagovat na něj. /goal se zapojí až potom, když je co vyhodnocovat.
/goal nepřidává Playwright ani žádné jiné nástroje - pouze sleduje už probíhající práci. Neodstraňuje ani běžné žádosti o povolení: pokud nastavení vyžaduje potvrzení nějaké akce, agent o něj požádá stejně, ať cíl zadáte, nebo ne.
Připravte hru ke spuštění
Než zadáte podmínku, musí příklad fungovat: stránka se otevírá na známé adrese, nástroje pro hru jsou už připojené (třeba už zmíněný Playwright) a stránka obsahuje značku, podle které poznáte, zda partie skončila.
V našem příkladu jde o data-atribut: data-game-over="false" u rozehrané partie a data-game-over="true" u dokončené. Toto pravidlo stanovil autor herní stránky - agent si ho nevymýšlí, jen ho čte.
Ověřit to je snadné: požádejte agenta, aby otevřel stránku a přečetl hodnotu atributu. U právě zahájené partie uvidí false. a to je v pořádku, přesně tak to má na začátku být.
Pokud na stránce atribut vůbec není, je na zadání cíle ještě brzy. Podmínka může vycházet jen z toho, co lze skutečně přečíst, takže nejdřív obnovte samotnou značku, místo abyste za pochodu vymýšleli její náhradu. A když už je příklad připravený, neměňte během partie kritérium ani ke hře nepřidávejte zvláštní časovač jen proto, aby ukázka skončila rychleji. Podmínka zůstává od začátku do konce stejná.
Spusťte připravený cíl
A teď samotný příkaz. Podmínka pro náš příklad může znít takto:
/goal hrajte střídavě za obě strany přes rozhraní stránky.
Po každém tahu přečtěte data-game-over a ukažte, co stránka zobrazuje.
Partie je dokončená, když se data-game-over změní na true.
Pokud se tak nestane ani po 40 tazích, zastavte se a popište,
na čem jste se zasekli. Kód hry neměňte.Rozeberme si zadání po částech. Stejné části se vám budou hodit i u vlastních úloh:
- "hrajte... přes rozhraní stránky" - měřitelná akce, kterou agent může v konverzaci skutečně doložit;
- "partie je dokončená, když se data-game-over změní na true" - jediný skutečný výsledek, který se tu počítá. Právě ten bude vyhodnocovací model v konverzaci hledat;
- "po každém tahu přečtěte... a ukažte" - právě tento údaj umožní vyhodnocovacímu modelu vůbec něco ověřit. Bez této věty nemá co kontrolovat;
- "pokud se tak nestane ani po 40 tazích, zastavte se a popište" - samostatný pokyn pro případ, že true vůbec nenastane. Není součástí úspěchu, ale způsobem, jak práci ukončit bez něj: omezuje rozsah cíle, nenahrazuje však výsledek. Pořád jde jen o textový pokyn, ne o pevný programový časovač - i tento pokyn se posuzuje podle konverzace;
- "kód hry neměňte" - vymezení toho, co se nesmí stát, když agent usiluje o výsledek.
Jaký bude výsledek, předem nevíme - nelze slíbit konkrétního vítěze, délku partie ani to, že vůbec skončí. Je ale jasné, co má agent ukázat: přečtený stav hry a důvod, proč pokračuje, nebo práci ukončuje.
Jak sestavit vlastní podmínku
Začněte větou "úloha je hotová, když...". Pokud věta pokračuje slovy "všechno je lepší", agent si bude muset domýšlet, co jste měli na mysli. Nahraďte hodnocení pozorovatelným chováním: "po vymazání vyhledávání jsou znovu vidět všechny karty". Můžete uvést několik kontrol, pokud popisují jediný výsledek, například opravené vyhledávání.
- Pojmenujte výsledek. "Opravit vyhledávání" určuje směr, zatímco "vyhledávání najde kartu podle názvu a po vymazání vrátí celý seznam" stanoví, kdy je hotovo.
- Určete způsob ověření. Napište, co otevřít, co zadat a jaká odpověď se očekává. Požádejte agenta, aby skutečný výsledek ukázal v konverzaci, kde si ho může přečíst vyhodnocovací model.
- Omezte rozsah změn. Pokud potřebujete upravit jen styly, řekněte to. Jestli agent kontroluje hotovou hru, zakažte mu měnit její kód kvůli žádoucímu výsledku.
- Počítejte i se zastavením bez úspěchu. Například po třech pokusech o opravu a opakované kontrole má agent popsat přetrvávající problém. Jde o limit práce, ne o další způsob, jak prohlásit úlohu za hotovou.
Před spuštěním ověřte, že má agent přístup k potřebné stránce, souborům a nástrojům. Adresa a názvy prvků v podmínce musí odpovídat vašemu projektu. Textový limit počtu pokusů pomáhá řídit práci, ale nepředstavuje pevný technický limit času ani nákladů.
Všimněte si zpětné šipky. Pokud výsledek ještě není dosažen, agent dostane další kolo práce a může problém opravit a znovu ověřit. Ukončení tohoto cyklu ale nemusí znamenat úspěch: překážku nebo dohodnutý limit je potřeba uvést zvlášť. Schéma ukazuje princip podmínky; limit pokusů agent i vyhodnocovací model sledují podle konverzace.
Tři příklady pro vaše úlohy
Níže najdete ukázková zadání pro existující stránky. Před spuštěním nahraďte adresy, data a očekávané chování údaji ze svého projektu. Jsou to příklady podmínek, nikoli zprávy o provedené práci.
Opravit vyhledávání v katalogu
Řekněme, že lokální katalog obsahuje karty "Atlas" a "Orion", ale po vymazání vyhledávání zůstane seznam prázdný. Požadavek "udělej pořádné vyhledávání" neříká nic o očekávaném chování. Užitečnější jsou tři konkrétní případy:
/goal opravte vyhledávání v katalogu na http://localhost:3000/catalog.
Hotovo je, když dotaz "atlas" najde kartu "Atlas",
dotaz "zzzz-no-match" zobrazí "Nic nenalezeno"
a vymazání pole vrátí všechny původní karty.
Ověřte všechny tři případy přes Playwright a v konverzaci ukažte
dotaz, očekávaný výsledek a skutečně zobrazené karty
nebo zprávu. Po poslední úpravě zopakujte všechny tři kontroly.
Měňte pouze logiku vyhledávání; data katalogu ani vzhled neměňte.
Pokud problém přetrvá i po třech pokusech o opravu a ověření,
zastavte se a vypište, které případy stále nefungují.Důležité je tu slovo "všechny": nalezení jedné karty ještě nepotvrzuje, že je vyhledávání opravené. Data katalogu jsou pevně daná, takže požadovaného výsledku nelze dosáhnout přejmenováním karet. Opakovaná kontrola po poslední úpravě je nutná proto, že oprava vymazání pole mohla rozbít samotné vyhledávání.
Ověřit formulář bez úprav
Výsledkem cíle může být i seznam pozorování. Představte si, že chcete otestovat hotový registrační formulář a případné opravy probrat zvlášť. Cíl pak končí po ověření všech případů, i když se najdou chyby.
/goal ověřte formulář na http://localhost:3000/signup
přes Playwright, aniž byste měnili soubory projektu.
Ověřte dva případy, pokaždé začněte s prázdným formulářem:
1. Klikněte na "Zaregistrovat se" bez vyplnění polí.
Očekává se upozornění na povinné pole, registrace neproběhne.
2. Zadejte "alex" do pole email a ostatní povinná pole
vyplňte platnými testovacími hodnotami, pak klikněte na tlačítko.
Očekává se chyba formátu emailu, registrace neproběhne.
Hotovo je, když konverzace obsahuje zprávu o obou případech:
co bylo zadáno, co se očekávalo, co stránka zobrazila a zda se to liší.
Neodesílejte formulář se správným emailem a nevytvářejte účty.
Pokud stránku nebo prvek nelze otevřít, kontrolu ukončete
a uveďte, který případ zůstal neověřený a proč.Všimněte si rozdílu: "ověřit formulář" a "zařídit, aby formulář fungoval" jsou dvě různé úlohy. Chyba ve formuláři nebrání dokončení zprávy, pokud agent skutečně ověřil oba případy a ukázal výsledky. Nedostupná stránka ale ano: domněnky místo pozorování cíl nesplní.
Přizpůsobit stránku telefonu
"Udělej to hezké na mobilu" nechává příliš mnoho na úsudku agenta. Vyberte konkrétní stránku, rozměry okna a prvky, které musí zůstat dostupné.
/goal opravte styly stránky http://localhost:3000
pro okna o rozměrech 390x844 a 1440x900.
Hotovo je, když na obou rozměrech není vodorovný posuvník,
nadpis a tlačítko "Začít" jsou celé viditelné a nepřekrývají se
a kliknutí na "Začít" stále otevře herní část.
Po poslední úpravě ověřte oba rozměry přes Playwright.
Ukažte snímky obrazovky, výsledek kliknutí a naměřené hodnoty
scrollWidth a clientWidth kořenového prvku stránky:
scrollWidth nesmí být větší než clientWidth.
Měňte pouze CSS. Kvůli odstranění posuvníku obsah neskrývejte ani neořezávejte.
Zachovejte text i chování hry.
Pokud podmínky nesplníte ani po třech pokusech o úpravu a ověření,
zastavte se a ukažte, co stále neodpovídá.Rozměry označují šířku a výšku okna prohlížeče v pixelech. scrollWidth udává šířku obsahu včetně části za okrajem, zatímco clientWidth je dostupná šířka. Jejich porovnání pomůže odhalit přetečení, samo ale nedokazuje, že text není oříznutý a tlačítko je dostupné. Proto zadání zahrnuje také snímky obrazovky a kliknutí. Ani dvě velikosti nezaručují použitelnost na všech zařízeních - vymezují rozsah právě této úlohy.
Požádejte agenta, aby připravil goal
Nemusíte podmínku psát od začátku. Sbírka Claude Code Best Practice obsahuje dva tipy komunity: požádat agenta, aby navrhl cíle podle kontextu projektu, a svěřit mu sestavení zadání po přečtení konverzace a souborů. Níže tyto postupy přizpůsobíme menší úloze.
Pokud zatím nevíte, co svěřit delší práci, začněte běžnou zprávou bez /goal:
Přečtěte si dosavadní konverzaci a soubory projektu související s úlohou.
Navrhněte tři užitečné cíle, které lze dovést k ověřitelnému
výsledku. U každého uveďte výsledek, způsob ověření,
hranice změn a co zatím chybí ke spuštění.
Vycházejte z našich dohod. Cíle zatím nespouštějte,
soubory neměňte. Pokud není záměr jasný, položte otázky.Vyberte jeden cíl. Dlouhá práce sama o sobě není výhodou: opravené vyhledávání je užitečnější než několik hodin neurčitých "vylepšení". Pokud už je úloha jasná, první požadavek můžete přeskočit a rovnou si vyžádat návrh podmínky:
Sestavte zadání /goal pro vybranou úlohu podle naší konverzace,
souborů projektu a jeho dokumentace. Zatím nic neprovádějte.
Uveďte pozorovatelný výsledek, jak ho ověřit a co ukázat
v konverzaci. Přidejte hranice úprav a podmínku zastavení bez úspěchu.
Nevymýšlejte adresy, příkazy ani kritéria dokončení:
najděte je v projektu nebo se mě zeptejte.
Vraťte jedno hotové zadání a zvlášť vypište nejasnosti.Před odesláním návrhu si ověřte, že dává smysl. Odpovídá výsledek tomu, co jste chtěli? Existuje uvedená stránka? Nedovolil agent zároveň měnit data nebo přidávat funkce? Pokud na konci zůstaly nejasnosti, nejdřív je vyřešte. Spouštějte až upřesněné zadání: příkaz /goal okamžitě zahájí práci.
Zkontrolujte stav a zastavte práci
Dokud je cíl aktivní, můžete sledovat jeho průběh: příkaz /goal bez argumentů zobrazí aktuální stav - podmínku, uplynulý čas a počet kol i poslední důvod, který vrátil vyhodnocovací model.
Cíl můžete předčasně zastavit příkazem /goal clear. Zruší podmínku, i když partie ještě neskončila.
Potvrzený výsledek je tu jen jeden: podmínka je splněná, což je patrné z odpovědi vyhodnocovacího modelu v konverzaci. Zrušit cíl příkazem /goal clear je také srozumitelný konec, ale je to vaše rozhodnutí přestat, ne důkaz, že je práce hotová. Ostatní způsoby automatického zastavení cíle výsledek nepotvrzují.
Pokud vyhodnocovací model usoudí, že podmínku nelze splnit, nebo se dosáhne limitu uvedeného v podmínce, cíl se také sám zastaví, aniž byste zadali příkaz. S chybami je to složitější: cíl se sám zruší jen při takové, kterou je nutné opravit ručně (například došly kredity). Po dočasném výpadku zůstává aktivní a čeká na opakování nebo na vaši zprávu, a pokud agent několik kroků po sobě nepostupuje, Claude Code vám vrátí řízení, také bez zrušení cíle. Nic z toho ale není totéž jako "partie dohrána": výše zastavení buď potvrdil vyhodnocovací model, nebo jste se sami rozhodli cíl zrušit, zatímco tady neplatí ani jedno. Nepřizpůsobujte příklad příznivému stavu tím, že podmínku zpětně zmírníte. Pokud se práce zasekla, je rozumnější cíl zrušit příkazem /goal clear a otevřeně popsat, na čem jste uvázli, než přepisovat podmínku tak, aby ji agent určitě splnil.
Co vidí vyhodnocovací model
Vyhodnocovací model /goal nevidí samotnou stránku, ale konverzaci: to, co agent napsal, i to, co do ní zkopíroval z pozorování v prohlížeči. Nemá vlastní nástroje - stránku znovu neotevře ani sám nespouští příkazy, pouze čte dosavadní text.
Z toho plyne jednoduchý závěr. Samotná věta agenta "partie skončila" nic nedokazuje ani vyhodnocovacímu modelu, ani vám. Důkazem je výsledek, který agent skutečně přečetl ze stránky - právě hodnota data-game-over. První je hlášení, druhé pozorování. Jsou to různé věci, i když mohou znít podobně.
Je dobré znát i omezení samotného ukazatele. data-game-over popisuje stav konkrétní aplikace - tedy to, co do ní vložil autor stránky. Neříká nic o tom, zda byla celá partie odehrána podle šachových pravidel bez jediné chyby. Stejně tak absence posuvníku nedokazuje, že tlačítko funguje. Vyberte ukazatel podle výsledku, kterého chcete skutečně dosáhnout, a nepřisuzujte mu víc, než říká.
Co to mění při práci
U vlastní úlohy můžete projít stejnou krátkou cestou:
- jasný výsledek a dostupný způsob jeho ověření;
- podmínku s hranicemi úprav a zastavení, zadanou příkazem
/goal; - stav, který můžete kdykoli zkontrolovat příkazem
/goalbez argumentů; - závěr podložený pozorováními a výsledky kontrol;
- cíl ručně zrušený příkazem
/goal clear, pokud se práce zasekla nebo se podmínka ukázala jako nevhodná.
Automatické pokračování práce a rozhodnutí, co dělat dál, jsou dvě různé věci. První můžete v rámci jedné relace svěřit příkazu /goal. Druhé - zjistit, co se skutečně podařilo, zrušit nedokončený cíl a zadat další úlohu - zůstává na vás.
Přesné chování vyhodnocovacího modelu a formát stavu se mohou mírně lišit podle verze Claude Code. Základní princip - vyhodnocení podle konverzace, nikoli podle přímého přístupu ke stránce - zůstává stejný.
GO TO FULL VERSION