140 pull requestů za týden: orchestrace Claude Code agentů na hackathonu

Na tomhle blogu bylo dlouho ticho. Upřímný důvod je náročný klientský projekt, který mi měsíce požíral každou volnou hodinu. Minulý týden ale to ticho prolomil tím nejlepším možným způsobem: náš tým ho strávil na hackathonu, který završil renovaci, na níž jsme dřeli několik měsíců — a vyšli jsme z něj s více než 140 otevřenými pull requesty za ten jediný týden.
Zvládli jsme to s masivní pomocí AI. Co to číslo dělá málem absurdním: Claude Code jsme měli v rukou teprve poslední tři týdny. Neuškodilo ani to, že uprostřed týdne přistál nový Claude model Mythos a hodil do sprintu čerstvý skok ve schopnostech. Byli jsme v tom tak agresivní, že jsme dvakrát vyčerpali token limit naší enterprise Claude subscripce. (Jestli jste nikdy uprostřed sprintu nenarazili na zeď rate limitu, je to pokorná zkušenost — a kupodivu dobré znamení, že nástroj využíváte na hraně jeho možností.)
A teď to, o co se chci podělit, protože právě to bylo podstatné: ta propustnost nepřišla z rychlejšího psaní. Přišla z orchestrace. Jakmile přestanete o AI asistentovi uvažovat jako o jednom chatovacím okně a začnete ho vnímat jako flotilu, kterou řídíte, bottleneck se přesune z „jak rychle dokážu psát kód" na „kolik nezávislých problémů dokážu mít rozjetých naráz".
Tenhle článek je o mechanice toho všeho — jak spouštět Claude Code agenty paralelně, jak je řídit bez ztráty přehledu, co přežije reload, jak agenti a skills fungují dohromady, a o malé, ale mocné status line, která vás tím vším provede.
Od jednoho asistenta k mnoha
Mentální posun je tento: jedna Claude Code konverzace je dělník. Užitečný, ale sériový. Páka přichází z toho, že jich běží mnoho.
Pod pojmem „agenti" lidé myslí dvě odlišné věci a jejich směšování dělá zmatek:
- Subagenti — ty si Claude dispatchne sám, uprostřed úkolu, aby vyřešil vedlejší misi. Každý běží ve vlastním kontextovém okně, udělá svou práci (prohledá codebase, zreviduje diff, posbírá logy) a vrátí hlavní konverzaci shrnutí. Drží kontext hlavního vlákna čistý. Subagent nemůže spouštět další subagenty — zanoření je jen o jednu úroveň.
- Agent View (
claude agents) — dashboard, který řídíte vy a ve kterém spouštíte a sledujete několik nezávislých background sessions. Každá je plnohodnotná Claude Code session běžící na vašem stroji. Tohle je to, co z hackathonu udělá flotilní operaci: deset problémů, deset sessions, každá se prokousává vlastní branchí.
Na hackathonu vyhrál jednoduchý vzorec. Rozložte práci na kusy, které nesdílí stav — „zmigruj tenhle modul", „přepiš tyhle testy", „přidej tenhle endpoint" — a každý předejte vlastní session. Jednotkou paralelismu jsou nezávislé problémy. Ve chvíli, kdy potřebují dva agenti sáhnout na stejný soubor, vyrobili jste si merge konflikt, který později zaplatíte — takže to úvodní rozložení je ta skutečná dovednost.
Tip: Když agenti musí pracovat na překrývajícím se kódu, spusťte je v izolovaných git worktree, ať každý dostane vlastní checkout. Claude Code worktree izolaci přesně z tohoto důvodu podporuje — paralelní úpravy, které by se jinak srazily.
Řízení agentů bez ztráty přehledu
Řídit jednoho agenta je snadné. Řídit šest znamená, že mezi nimi musíte rychle přepínat a nikdy neztratit přehled o tom, co je kde. To je čistě problém klávesových zkratek a vyplatí se zažít si je do svalové paměti hned na začátku.
Ty, které se vyplatily:
| Zkratka | Co dělá |
|---|---|
Ctrl+O | Přepne verbose transcript — uvidíte celá volání nástrojů, ne jen shrnutí |
Ctrl+B | Pošle aktuální úkol na pozadí, ať můžete dělat něco jiného |
Shift+Tab | Cykluje permission módy (plan / accept-edits / …) |
Esc | Přeruší — zastaví agenta uprostřed myšlenky, abyste ho navedli jinam |
Uvnitř samotného Agent View je navigace vlastní malý svět:
| Klávesa | Akce |
|---|---|
↑ / ↓ | Pohyb mezi sessions |
Space | Otevře peek panel pro zvýrazněnou session |
Enter | Připojí se k session (nebo dispatchne, pokud jste napsali prompt) |
Ctrl+R | Přejmenuje session — dejte jí jméno, které poznáte na první pohled |
Ctrl+X | Ukončí / zabije session, se kterou jste hotovi |
Jedno varování, které stojí za vytištění tučně: klávesové zkratky se mezi verzemi Claude Code mění a několik z těchto je nedávných přírůstků. Neučte se nazpaměť blogový článek — spusťte /keybindings ve vlastní instalaci, ať vidíte autoritativní seznam pro vaši verzi, a tam si je i přizpůsobte. Už jen návyk Esc na přerušení stojí za vybudování: největším žroutem času u AI agentů je nechat jednoho běžet tři minuty špatným směrem, než ho zastavíte.
Perzistence: co přežije reload
Reálná obava, když vám běží šest sessions, je: co se stane, když zavřu notebook, restartuju CLI nebo se konverzace zkomprimuje (compact)? Během vícedenního hackathonu tohle přestává být hypotetické.
Hrubý mentální model:
- Background agent sessions přežívají na disku. Supervizní proces je drží naživu a CLI se k nim po restartu znovu připojí. Přežijí uspání stroje. Nepřežijí úplné vypnutí stroje.
- Subagent transcripty přežívají — práce, kterou subagent udělal, se neztratí, když se vrátí; transcript se zapíše a dá se k němu vrátit.
- Smyčkové / naplánované úlohy jsou vázané na session a expirují. Opakovaná úloha nastavená přes
/loopžije ve své konverzaci a automaticky expiruje zhruba po 7 dnech, pokud ji neobnovíte. Takže model není „nastav a zapomeň navždy", ale „nastav a tenhle týden zkontroluj".
Praktický závěr: na rozpracovanou práci, ke které se chcete vrátit, sázejte na background sessions; ale pokud potřebujete něco spolehlivě běžet týdny bez ohledu na stav notebooku, sáhněte po cloudovém plánování (k tomu níže) místo lokální smyčky.
Agenti a skills ruku v ruce
Agenti jsou kdo práci dělá. Skills jsou jak ji dělají — znovupoužitelné instrukce, které se načtou na vyžádání. Napsal jsem celý článek o skills dřív; tady chci ukázat, jak se kombinují s agenty v reálném workflow.
Rozhodnutí je jednodušší, než vypadá:
- Sáhněte po skillu, když máte znovupoužitelné instrukce nebo opakovatelný postup (deploy kroky, commit konvenci, týmové testovací vzory). Skills se aktivují samy, když váš požadavek odpovídá jejich
description, nebo si je vyvoláte přímo přes/skill-name. - Sáhněte po custom agentovi (
.claude/agents/*.md), když chcete izolovaného specialistu s vlastním system promptem, omezeným přístupem k nástrojům nebo jiným modelem. Frontmatter je malý —name,description, volitelnětoolsamodel— a přivoláte ho@-zmínkou nebo necháte Clauda delegovat.
---
name: pr-reviewer
description: Reviduje otevřené pull requesty na korektnost a porušení konvencí.
tools: Read, Grep, Glob, Bash
model: sonnet
---
Jsi soustředěný PR reviewer. U každého otevřeného PR zkontroluj...Tři kombinace odvedly skutečnou práci:
1. Knihovny skillů, které jste nepsali sami. Superpowers je plugin, který přináší knihovnu procesních skillů — strukturovaný brainstorming, test-driven development, systematické debugování, exekuci plánů. Hodnota není v žádném jednotlivém skillu; je v tom, že disciplína workflow je zakódovaná, takže agent nepřeskočí krok návrhu nebo verifikace jen proto, že je dychtivý. Na hackathonu, kde se pohybujete rychle, je skill, který vynutí „napiš návrh před kódem", svodidlo, ne brzda.
2. Hlídání PR ve smyčce. Když lítá 140 PR, bottleneckem se stává review, ne psaní. Příkaz /loop umožní spustit úlohu v opakovaném intervalu:
/loop 15m zkontroluj otevřené PR, shrň nové review komentáře a označ vše, co potřebuje moje rozhodnutíJdete stavět něco jiného; každých 15 minut agent projede frontu PR a vynese na povrch jen to, co potřebuje člověka. Vynechte interval a Claude si tempo určí sám. (Vzpomeňte na 7denní expiraci výše.)
3. Tickety jako zdroj pravdy přes MCP. Tady to zapadne do reálného workflow. S MCP serverem pro váš issue tracker — Linear, Jira, GitHub Issues — agent přečte ticket přímo, naimplementuje ho a propojí zpět PR. Definice úkolu žije tam, kde ji tým už spravuje; agent si ji odtud vyzvedne, místo abyste copy-pastovali požadavky do chatu. MCP servery se konfigurují per projekt (nebo per agent) a jsou to právě ony, co z „Clauda v terminálu" udělá „Clauda zapojeného do vašeho skutečného toolchainu".
O to jde — ten kumulativní efekt: custom agent, běžící disciplinovaný skill, krmený ticketem z MCP, otevírá PR, který reviduje další smyčkový agent. To je ta výrobní linka, která vyprodukuje 140 PR za týden.
Bonus: status line, která vás drží v obraze
Když řídíte flotilu, ta nejvíc dezorientující věc je ztratit přehled o tom, kde jste — který model, kolik zbývá kontextu, jestli zrovna nenarazíte na weekly limit (zeptejte se, jak to vím) a hlavně na které git branch jste. Custom status line tohle všechno vyřeší.
Claude Code umožní nasměrovat statusLine na příkaz, který dostane session JSON na stdin a vypíše jednořádek. Takhle vypadá ta moje, nakonfigurovaná v ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh",
"refreshInterval": 30
}
}Celý skript je k tomuto článku přibalený — stáhněte statusline.sh zde a hoďte ho do ~/.claude/. Přečte JSON a vyrenderuje něco jako:
🤖 Opus 4.8 | 📁 saasforge 🌿 main• | 47% | 📅 62% | ⏱️ 1h 12m | +340/-90 | $4.21Každý segment tam je z důvodu, který multi-agent práce zviditelní:
- Model (
🤖 Opus 4.8) — když žonglujete se sessions na různých modelech, chcete vědět, který máte před sebou. - Adresář + branch (
📁 saasforge 🌿 main•) —•značí necommitnuté změny. Tohle je tripwire: pokud se kdy ukáže main checkout tam, kde jste čekali feature worktree, kontext vám ujel a chystáte se commitnout na špatné místo. - Kontext % (
47%) — počítaný z token usage v transcriptu, zelená→žlutá→červená, jak se plní. To číslo, které vám řekne, kdy přijde komprese. - Weekly limit % (
📅 62%) — klouzavé 7denní využití subscripce. Ukazatel, který by mě byl varoval, než narazím na zeď. Dvakrát. - Doba, delta řádků, cena — session účetnictví, které je fajn mít na očích.
Implementace má pár detailů, které stojí za ukradnutí. Tahá všechna pole v jednom jq průchodu, místo aby parsovala znovu pole po poli, a spojuje je ASCII unit separatorem (0x1f) místo tabu — protože na rozdíl od tabu to není IFS whitespace znak, takže prázdná pole (třeba chybějící transcript path) se zachovají, místo aby se tiše zkolabovala, a zarovnání read proměnných zůstane v pořádku. Maličkost, ale je to rozdíl mezi status line, která je robustní, a tou, co se rozsype, jakmile je jedno pole prázdné.
IFS=$'\037' read -r model model_id cost added removed dur_ms big transcript cwd week < <(
printf '%s' "$input" | jq -r '[
.model.display_name // "?",
.model.id // "",
.cost.total_cost_usd // 0,
...
] | map(tostring) | join("")'
)Je to zhruba sto řádků bashe a je to ta nejlevnější situační orientace, kterou kdy koupíte.
Co jsem si odnesl
Hackathon mi přerámoval, jak přemýšlím o vývoji s pomocí AI. Strop dovednosti není prompting — je to orchestrace: rozkládání práce na nezávislé kusy, jejich paralelní běh, držení právě tak akorát dohledu, aby nic neujelo, a zapojení celku do nástrojů, které tým už používá.
Mechanika z tohoto článku — paralelní agenti, zkratky na jejich řízení, perzistence, na kterou se dá spolehnout, skills a MCP, které jim dají kontext, a status line pro udržení orientace — je lešení. 140 PR za týden je to, co lešení umožní. Dva vyčerpané token limity je to, co to stojí. Stálo to za to.
A číslo, které mě pořád překvapuje, je ta strmost: za poslední dva týdny vyskočila funkční parita renovované služby z 60 % na přes 90 %. Všechno je mergnuté a nasazené v produkci, běží na zeleno s dostupností 99,99 %. Práce ještě zbývá — pár bugů je potřeba dořešit, než bude parita opravdu úplná — ale cílová páska už je na dohled. Pak je spuštění naostro rozhodnutí businessu, ne inženýrů.
Další čtení:
- Claude Code Subagents
- Dokumentace Claude Code Skills
- Konfigurace status line
- Model Context Protocol (MCP)
- Jak používáme Claude Code Skills
Cover photo by Albert Sukhanov on Unsplash.


