Složku s hotovou stránkou máte, odkaz ne. Zveřejníme ji na Cloudflare Workers a celý postup svěříme Claude Code: vytvoříme skill, se kterým se publikace i aktualizace smrsknou na krátkou prosbu.

1. Co jsou Cloudflare Workers pro statické soubory

Slovo Workers zní jako "programy, které běží na serveru", a je to pravda. Jenže ne celá: k workeru můžete připojit složku souborů a server je pak prostě posílá návštěvníkům, jako běžný hosting. Nenapíšete přitom ani řádek kódu.

Pro stránku z HTML, CSS a obrázků tento režim stačí. V dokumentaci se tato složka nazývá static assets, statické soubory, a v nastavení projektu zabírá právě jedno pole s cestou.

Cloudflare distribuuje soubory přes svou síť serverů a ukládá je do mezipaměti blíže k návštěvníkům.

Worker bez kódu je normální

Worker, ke kterému je připojena jen složka, nic nespouští. Program k němu můžete přidat později a složka zůstane na místě - ale to už je jiný příběh a jiný účet.

2. Kolik to stojí

Požadavky na statické soubory jsou zdarma a jejich počet není omezen. Je to podmínka tarifu, nikoli slib, že nebudete mít statistiku návštěv.

Kde se tedy bere známé číslo - 100 000 požadavků za den? Jde o limit na volání Worker skriptu, onoho programu na serveru. Stránka, ke které je připojena jen složka, skript nemá, a do tohoto počítadla nespadá.

Požadavky na soubory se neúčtují, zatímco požadavky, které spouštějí Worker skript, se počítají do denního limituNávštěvníkPožadavek na souborSoubor vrácenPožadavek na skriptSkript doběhlse neúčtujepočítá se do denního limitu
Do počítadla spadá jen požadavek, který spustil program

Horní cesta v diagramu odpovídá naší stránce: soubor se odešle bez volání serverového programu. Spodní budete potřebovat, pokud později přidáte Worker skript.

Nějaké limity bezplatný tarif přece jen má, ale týkají se něčeho jiného - velikosti toho, co nahráváte:

OmezeníBezplatný tarif
Souborů v jednom nasazení20 000
Velikost jednoho souboru25 MB
Workerů na účet100

Stránce s desítkou obrázků tyto limity obvykle stačí. Před velkým projektem si ověřte aktuální podmínky Cloudflare: omezení se mohou změnit. 25 MB na soubor mimochodem vypadá štědře přesně do prvního videa.

3. Účet

Registrace na cloudflare.com je běžná: e-mail a heslo, potom potvrzovací e-mail. Platební karta pro bezplatný tarif potřeba není. Vlastní doménu také přidávat nemusíte - služba vám to nabídne, ale ta nabídka se týká druhé poloviny produktu, ochrany a zrychlení existujících webů.

Po přihlášení se požadovaná sekce jmenuje "Workers & Pages" a není na očích: v levé nabídce nejdříve skupina Build, v ní Compute a pak uvnitř - "Workers & Pages". Panel se postupem času přeuspořádává, takže pokud tam sekce není, hledejte podle názvu: vyhledávání vlevo nahoře se otevírá stisknutím Ctrl + K. Dvě slova v názvu - to jsou dva produkty Cloudflare; vy potřebujete první polovinu, Workers, a dostanete se tam sami, aniž byste cokoli speciálně vybírali.

Ještě jedna věc se objeví při prvním nasazení: Cloudflare vás požádá vybrat jméno subdomény pro váš účet. Poběží na ní všechny vaše projekty a adresa se skládá ze dvou částí - název projektu plus vaše subdoména:

my-landing.example-account.workers.dev
|          |               |
|          |               společná doména Cloudflare
|          subdoména vašeho účtu
název projektu

změnit ho později jde ztěžka, takže tam radši nepište první, co vás napadne.

4. První nasazení

Nejdřív se krátce podíváme, jak publikace vypadá v panelu. Je to nepovinné seznámení se službou: pokud chcete rovnou nastavit nasazení přes agenta a zachovat jednu adresu, přejděte k přípravě níže.

Platí to pro oba způsoby

Nahráváte vždy celou složku a hlavní stránka uvnitř ní se musí jmenovat právě index.html a musí být v kořenu:

landing/          <- tuto složku nahráváme
  index.html      <- hlavní stránka, jméno je povinné
  wrangler.jsonc  <- agent jej vytvoří před prvním nasazením
  style.css
  img/
    hero.png

Je to výchozí pravidlo: na požadavek bez jména souboru server vrátí index.html z příslušné složky. Vnořené složky fungují stejně - about/index.html se otevře na adrese /about/.

Žádný seznam souborů se neobjeví: pokud index.html v kořenu není (řekněme, že jste nahráli složku o úroveň výš a on skončil ve vnořené), odkaz vrátí prostě chybu 404.

Před publikací ověřte obsah vybrané složky: soubory v ní se stanou veřejnými. Odstraňte z ní osobní soubory a koncepty, které jste nehodlali sdílet.

Ručně přes panel

V sekci projektů je tlačítko, které vytvoří nový projekt. Pak vám služba nabídne nahrát soubory: můžete vybrat jeden soubor nebo celou složku. Nahráno, potvrzeno - Cloudflare je u sebe rozmístil a vrátil odkaz. Názvy tlačítek a pořadí obrazovek se tady mění častěji, než vycházejí články, takže se držte smyslu, ne popisků: založit projekt, nahrát soubory, získat adresu.

Otevřete získanou adresu https://…workers.dev a zkontrolujte stránku a obrázky. Můžete to udělat ze stejného počítače. Telefon se hodí pro dodatečnou kontrolu dostupnosti a mobilního vzhledu.

Po publikaci přes panel se lokální konfigurační soubor neobjeví. Skill z našeho příkladu sám složku s takovým projektem nepropojí: bez konfiguračního souboru vytvoří nové jméno a druhou adresu. Cloudflare umožňuje aktualizovat existující Worker přes Wrangler, ale k tomu je potřeba zvlášť nastavit konfiguraci na jeho jméno.

Co je potřeba, aby to dělal agent

Pro další publikace si nastavíme skill. Příprava je potřeba jen jednou, na vašem počítači.

Programů bude potřeba jen pár. Účet už máte, potřebujete ještě Node.js - ověříte ho příkazem node -v, a pokud systém příkaz nenajde, musíte Node.js nejdřív nainstalovat. Samotný wrangler instalovat nemusíte: npx si aktuální verzi stáhne sám, jakmile na něj přijde řada.

  • Účet
  • wrangler login
  • wrangler deploy
  • Odkaz

Druhý krok v diagramu je přihlášení a vyplatí se ho vyřídit hned teď, dřív než cokoli dalšího:

npx wrangler login    # otevře se prohlížeč s tlačítkem potvrzení

Spusťte příkaz v terminálu. Bez tohoto kroku se celý postup zastaví na prvním spuštění a bude to vypadat jako rozbitý skill, ačkoli skill za to vůbec nemůže. Ověřit, že se všechno povedlo, můžete příkazem npx wrangler whoami - ukáže, pod kterým účtem jste přihlášeni.

Pro tuto cestu stačí přihlášení přes prohlížeč. API tokenu se věnuje nepovinné pokračování na konci.

Třetí krok diagramu, npx wrangler deploy, bude spouštět agent ze složky stránky. Nejdřív mu dáme pravidla pro přípravu konfigurace a publikaci.

5. Vlastní skill pro nasazení

Pokud je stránka jenom jedna, postačí prosba v chatu. Ale jakmile budete mít druhou, třetí, desátou - pokaždé budete muset agentovi vysvětlovat totéž: kterou složku vzít, jak projekt pojmenovat, co dělat s konfiguračním souborem. Napotřetí vás to přestane bavit.

Co by měl skill umět

Pět kroků a každý řeší konkrétní problém, žádný tam není jen pro úplnost:

  1. Vzít složku, kterou jste zadali, a ověřit, že index.html leží v jejím kořenu. Levná kontrola, která odchytí nejčastější chybu před nasazením, ne poté.
  2. Určit název projektu - odvodit jej z názvu složky, ne se ptát pokaždé.
  3. Zkontrolovat, zda soubor wrangler.jsonc leží uvnitř složky vedle index.html. Není tam - vytvořit jej; je tam - vzít z něj název a nic v něm neměnit.
  4. Spustit nasazení z dané složky a ukázat příkaz před jeho spuštěním.
  5. Vrátit veřejnou adresu a připomenout, ať na ní zkontrolujete stránku a obrázky.

Název projektu se odvozuje ze složky

Je to klíčové rozhodnutí celého postupu a právě to nelze nechat na improvizaci agenta. Pokud název neurčuje pravidlo, agent si ho vymyslí sám - a příště si vymyslí jiný. Vznikne druhý projekt s jinou adresou a ten první zůstane viset.

Pravidlo je jednoduché: název složky je název projektu. V názvu workeru mohou být jen malá latinská písmena, číslice a pomlčka, takže všechno ostatní - tečky, mezery, podtržítka - nahradíme pomlčkou a přidáme krátkou příponu, čtyři náhodné znaky:

landing/                 ->  landing-42c2
my.first.page/           ->  my-first-page-8e10
portfolio-2026/          ->  portfolio-2026-b7a3

Přípona je potřeba, aby dvě složky se stejným jménem v různých projektech nezabraly stejnou adresu. Vygeneruje se jednou, při vytvoření konfiguračního souboru, a vždy příkazem, ne z hlavy agenta: jinak vezme příponu z příkladu a všichni, kdo četli stejný článek, ji budou mít stejnou. Dál se přípona vždy čte z konfiguračního souboru. Právě proto se skill nejdřív podívá do existující konfigurace a teprve pak něco zapíše.

Název nasazeného projektu se nemění

Úprava pole name v hotové konfiguraci není přejmenování. Cloudflare vytvoří nový projekt s novou adresou a starý dál poběží na staré adrese - té, kterou jste už někomu poslali.

Proto má postup právě tenhle krok: konfigurační soubor existuje - vezmi z něj název a nech jej být.

Konfigurační soubor píše agent

V wrangler.jsonc agent zapisuje název projektu a nastavení publikace tak, aby mohl spustit nasazení bez dotazů v terminálu. Konfigurační soubor leží vedle index.html, takže cesta k souborům je v něm tečka, "tato složka":

{
  "name": "landing-42c2",
  "compatibility_date": "2026-09-07",
  "assets": { "directory": "." }
}

Pole compatibility_date volí chování platformy slučitelné s daným datem. Pro novou konfiguraci agent nastaví aktuální datum, jak doporučuje dokumentace Cloudflare; při opětovné publikaci zachová původní.

Klást konfiguraci o úroveň výš, vedle složky, se nevyplácí: název souboru je pevný, v jednom adresáři může být takový soubor jen jeden a druhá složka buď přepíše konfiguraci první, nebo se nahraje pod jejím jménem. Uvnitř složky je každý projekt soběstačný a nasazení se spouští přímo z ní.

Vedlejší efekt takového uspořádání: konfigurační soubor leží ve stejné složce jako stránka, takže se nasadí spolu s ní a bude přístupný přes odkaz. Tajné údaje v něm nejsou - jen jméno, datum a tečka - a komu to vadí, dá vedle soubor .assetsignore a vypíše v něm, co nenahrávat.

Tři pravidla, která je dobré v úkolu výslovně zmínit, jinak je agent neuhádne:

  • soubor chybí - vytvořit a ukázat, co bylo zapsáno;
  • soubor existuje - jméno a datum ponechat jak je, i když je dnešní datum jiné;
  • soubor přepsat jen tehdy, když se obsah skutečně mění.

Čtyři prosby, které se vyplatí mít po ruce

První je samotné zadání skillu. Je delší než ostatní, protože je to jediný případ, kdy popisujete postup celý:

Sestav skill pro nasazení statických stránek na Cloudflare Workers.
Umísti ho do .claude/skills/ tohoto projektu.
Na konci ukaž cestu k vytvořenému SKILL.md a způsob, jak skill explicitně vyvolat.

Nejdřív si přečti aktuální dokumentaci Cloudflare k Workers
a static assets: příkazy a pole konfigurace se mohly změnit.
Pokud se něco v popisu níže rozchází s dokumentací - řekni mi to,
tiše neměň.

V popisu skillu vypiš fráze, na které by měl reagovat,
minimálně: "zveřejni složku", "zveřejni znovu", "nasaď na Cloudflare".

Postup: vezmu složku, zkontroluju, že v kořenu je index.html.
Název projektu odvodím z názvu té složky: zůstanou jen
malá latinská písmena, čísla a pomlčka, všechno ostatní (mezery,
podtržítka, velká písmena, cyrilice) nahradím pomlčkou.
Na konec přidám pomlčkou příponu ze čtyř znaků.
Příponu si nevymýšlím, ale dostanu příkazem:
node -e "console.log(crypto.randomUUID().slice(0,4))"
Konfigurační soubor wrangler.jsonc leží uvnitř publikované složky, vedle
index.html, a assets.directory v něm se rovná ".".
Pokud konfigurační soubor chybí - vytvořím ho: name, compatibility_date,
assets.directory. Pro nový compatibility_date vezmu aktuální datum
ve formátu YYYY-MM-DD. Ukážu, co jsem zapsal.
Pokud konfigurační soubor existuje - vezmu z něj název a datum a nepřepisuji je.
Soubor přepíšu jen tehdy, když se obsah skutečně mění.
Pokud konfigurační soubor existuje, ale assets.directory neukazuje na tuto složku
nebo je v konfiguraci pole main - zastavím se a řeknu to, nasazení nespustím.
Pokud mě požádají zveřejnit znovu, ale ve složce konfigurační soubor není - zastavím se
a zeptám se, nový projekt nevytvářím.
Nasazení: npx wrangler deploy ze složky projektu. Příkaz ukážu před spuštěním.
V odpovědi vrátím veřejnou adresu a připomenu, ať se na ní zkontroluje
stránka a obrázky. Při aktualizaci musí adresa zůstat stejná.
Pokud chybí Node.js nebo neproběhlo přihlášení - řeknu to,
nesnažím se to obejít.
Pokud účet ještě nemá subdoménu workers.dev - řeknu to:
neinteraktivní nasazení na tom selže.

Po vytvoření otevřete soubor .claude/skills/<jméno>/SKILL.md, který vám agent ukázal: měla by v něm být pravidla výše. Před druhou prosbou explicitně vyvolejte vytvořený skill způsobem, který agent ukázal. Pokud se skill nenajde, požádejte agenta, ať ověří cestu a jeho dostupnost v aktuálním projektu.

Druhá je kontrola předem. Hodí se před prvním nasazením složky, když chcete vidět plán dřív, než něco odejde ven; pokud je složek víc, zadává se pro každou:

Soubory nevytvářej ani neměň, wrangler nespouštěj. Jen ukaž,
co chceš udělat se složkou landing: jaké jméno projektu,
jakou konfiguraci zapíšeš, jaký příkaz spustíš.

Jedna výhrada: přípona vzniká v okamžiku zápisu konfigurace, takže u složky, kde konfigurační soubor ještě není, se jméno v plánu a jméno při skutečném spuštění nemusí shodovat. Všechno ostatní sedět bude.

Třetí a čtvrtá jsou pracovní, kvůli nim se to celé dělá:

Zveřejni složku landing na Cloudflare Workers.
Upravil jsem index.html v landing. Zveřejni ji znovu na Cloudflare Workers.

Po první publikaci otevřete získaný odkaz, zkontrolujte text a obrázky. Pak změňte jednu nápadnou větu v landing/index.html a pošlete čtvrtou prosbu. Obnovte stránku na původní adrese: měla by se objevit nová věta. Pokud se adresa změnila, požádejte agenta, ať před dalším nasazením zkontroluje jméno v konfiguraci.

Tím je hlavní cesta hotová: skill je vytvořen, stránka je publikována a aktualizace je ověřena na stejném odkazu. Před každou publikací zbývá vybrat správnou složku a podívat se na příkaz agenta.

6. Další scénáře

Dál číst nemusíte, dokud nepotřebujete připravovat mnoho složek najednou nebo spouštět nasazení bez přihlášení přes prohlížeč.

Když postup přestane stačit

Skill s pokyny funguje dobře, dokud je složek pár nebo pár desítek. Pak začne vadit, že agent pokaždé znovu čte postup a provádí ho ručně: u padesáti složek je to zdlouhavé a ne vždy stejné.

Tehdy se postup přepíše do skriptu: sám projde složky, zapíše konfigurační soubory, přeskočí ty, kde se nic nezměnilo, a vypíše souhrn. Skill přitom nikam nemizí - jen volá skript, místo aby konfigurační soubory psal sám, a nasazení dál spouští sám.

Psát ho taky nebudete vy. Agent už má podrobný popis postupu - váš skill - takže prosba bude krátká:

Napiš v Pythonu skript, který dělá totéž, co popisuje můj skill
pro nasazení, jen rovnou pro všechny složky projektu.

Vezme složky, které mají v kořenu index.html;
do node_modules, .git a dist nenahlíží.
Pro každou sestaví jméno podle našeho pravidla a zapíše wrangler.jsonc
dovnitř složky.
Pokud konfigurační soubor už existuje - vezme z něj jméno a compatibility_date
a soubor přepíše jen tehdy, když se obsah opravdu změnil.
Pokud konfigurační soubor nejde přečíst - nesahá na něj, řekne to
a složku přeskočí.
Ve výchozím stavu jen ukazuje plán a nic nezapisuje;
zápis až po explicitním přepínači.
Potřebuju filtr, abych mohl spustit jen vybrané složky.
Skript jen připravuje konfigurační soubory, nasazení nespouští.
Na konci vypíše tabulku: složka, jméno projektu, co se udělalo.
Pokud je v tomto popisu něco nejednoznačné - zeptej se, tiše nedomýšlej.

Zobrazení plánu umožňuje zkontrolovat seznam složek před zápisem. Zachování jména a data chrání existující konfigurace před náhodnými změnami. Skript sám jen připravuje nastavení; publikaci dál provádí skill.

Přístupový token

Na svém počítači jste se už přihlásili přes npx wrangler login. Wrangler si přihlášení uloží a používají ho i příkazy agenta.

Pokud potřebujete automatické spouštění bez přihlášení přes prohlížeč nebo užší oprávnění, používá se API token. Vytvoříte ho v profilu: avatar, profil, sekce API tokenů. Přímá adresa je dash.cloudflare.com/profile/api-tokens.

Formulář vytvoření vypadá hrozivě: skupiny oprávnění, zdroje, nějaké filtry. Ve skutečnosti tam jsou jen čtyři rozhodnutí a polovinu polí nemusíte vůbec měnit.

  1. Název tokenu. Za půl roku si nevzpomenete, k čemu je, tak ho pojmenujte věcně: "nasazení stránek z notebooku", ne "token 2".
  2. Oprávnění. Skládat je po jednom není nutné a nemá to smysl. V seznamu hotových sad je Edit Cloudflare Workers - ta už obsahuje vše, co je pro publikaci potřeba.
  3. Zdroje. Omezte token na jeden účet, ten, kam nahráváte. I když máte účet jediný, vyberte ho explicitně: účtů může přibýt a token zůstane stejný.
  4. Doba platnosti a IP filtr. Pole jsou volitelná. Dobu platnosti má smysl nastavit, když je token potřeba na jeden večer nebo pro cizí počítač; při běžné práci se nechávají, jak jsou.
Oprávnění nemusíte hádat

Sady oprávnění se časem mění a do projektu se někdy přidá něco nového - úložiště, databáze, pošta. Token, který včera fungoval, najednou přestane stačit a vypadá to jako odmítnutí z ničeho nic.

Panikařit nemusíte: wrangler v takovém případě řekne, jaký přesně přístup mu chyběl. Ten řádek můžete celý ukázat agentovi a zeptat se, co do oprávnění tokenu přidat - dokumentaci služby si přečte rychleji, než si ji vy vybavíte zpaměti.

Token se pak umístí do proměnné prostředí CLOUDFLARE_API_TOKEN a účet se uvede v CLOUDFLARE_ACCOUNT_ID. Proměnná prostředí je nastavení vašeho počítače, které si programy čtou samy; wrangler obě najde bez vaší pomoci. Jak proměnné fungují a kde je správně držet - to je na samostatné povídání, tady stačí vědět, že je to místo, ne řádek v chatu.

Kde se příkaz spouštíJak se přihlásit
Váš počítač, prohlížeč k dispoziciwrangler login
Server bez prohlížeče, cizí počítač, automatické spuštěníAPI token v proměnné prostředí
Token se nevkládá do chatu

Konverzace s agentem se ukládá a odchází po síti a token s právy na workery umožňuje vaším jménem nahrát i smazat cokoli. Pokud se agent na token ptá, správná odpověď je říct mu, odkud si ho může přečíst, ne vložit samotný řetězec.

Token, který se někde jednou mihl, se v panelu zruší a vytvoří znovu. Vyjde to levněji než hádat, jestli ho někdo viděl, nebo ne.