Files
marekandClaude Opus 5 a2a93ca155 Agenti: multiagentní provoz se čtyřmi rolemi a pravidla pro git
Hlavní session běží jako orchestrator bez souborových nástrojů a deleguje
na scout, implementer a reviewer. Scout zjišťuje fakta, implementer píše
veškerý kód včetně kreslicího jádra a WPF vrstvy, reviewer dělá revizi
i nezávislý build a testy. Doplněn skill upresni pro nejednoznačná zadání.
Commit až po revizi, push jen na vyžádání.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 06:21:41 +02:00

8.0 KiB

Rozpisky — pokyny pro Claude Code

WPF desktopová aplikace (.NET 10, net10.0-windows, AnyCPU) — generátor výkresových rohových razítek („rozpisek") pro Správu železnic. Náhrada původního excelového nástroje „Rozpisky 1.0.8".

Příkazy

dotnet build "Rozpisky.sln" -nologo -v q -clp:ErrorsOnly
dotnet test  "Rozpisky.Tests\Rozpisky.Tests.csproj" -nologo -v q
dotnet run   --project "Rozpisky\Rozpisky.csproj"

Baseline: build bez chyb a varování, 119 testů zelených. Před hlášením hotovo obojí spustit (nebo použít /overit). Hlavní vlákno tyhle příkazy nespouští samo — deleguje je (viz Multiagentní provoz).

Architektura — jediné pravidlo, které se nesmí porušit

Veškerá kresba jde přes jedno rozhraní IProfileRenderer. Tatáž kresba teče na obrazovku, do PNG, do PDF i do DXF. Nový výstupní formát = nová implementace IProfileRenderer, nikdy nový kreslicí kód. Čtečka DxfTemplate jen čte DXF šablonu a „přehrává" ji do tohoto rozhraní.

Z toho plyne druhé pravidlo: co má přežít cestu DXF → model → DXF, musí protéct rozhraním. Zdrojové soubory jsou zapsané indexovanými barvami AutoCADu, takže stav kresby (KresliciStav) nese barvu i s původem (ACI index / true color / ByLayer / ByBlock), název textového stylu a vzor šrafy — ne jen výsledné RGB. Nová vlastnost, kterou má export zachovat, patří do rozhraní; obcházet ho stranou (sáhnout z rendereru zpátky na CadDocument šablony) je porušení prvního pravidla.

Podrobnosti (vrstvy, NuGet API, pravidla zápisu DXF, tabulka čtených entit a známá omezení) — ROZPISKY.md. Nečíst celý, jen relevantní kapitolu.

Konvence

  • Kód, komentáře, commity i názvy typů jsou česky (BoundsTesty, PlaceholderHladiny, NajdiKoren). Držet se toho, nepřejmenovávat do angličtiny.
  • MVVM bez frameworku: znovupoužít RelayCommand a ObservableObject — nepsat vlastní ani nepřidávat NuGet (CommunityToolkit apod.).
  • XAML: barvy a rozměry jen z Rozpisky/Themes/Colors.Dark.xaml a Metrics.xaml (WPF-DarkTheme-Kit). Žádné hardcoded #RRGGBB ani natvrdo zadané odsazení.
  • Nullable a ImplicitUsings jsou zapnuté v obou projektech.
  • COM (CAD, MS Excel) jde přes pozdní vazbu (dynamic) — nepřidávat interop assembly.
  • Uživatelská data (číselníky, výběr CADu, logy) jdou přes UzivatelskaData do %APPDATA%\Rozpisky. Do složky u .exe se nezapisuje — může být jen pro čtení a přeinstalace ji přepíše. Číselníky navíc žijí ve dvou vrstvách (CiselnikyStore) a loga ve dvou složkách (LogaResolver): dodávané + uživatelské navrch. Při konfliktu vyhrává uživatelská vrstva — jinak by se jeho úprava tiše neprojevila. Výjimka jsou data, která drží správnost výstupu (mapovani.json, Rozpiska.dxf) — tam vyhrává program. Změnu slučování vždy pokrýt testem: chyba tam se projeví tichou ztrátou dat.

Rozvržení složky — tři druhy podkladů

Kde Co to je
docs/ Podklady jen pro tvorbu programu — architektura, datový model, normativní manuál SŽ v .md. Nedodává se uživateli.
Rozpisky/Podklady/ Podklady nutné k běhu — kopírují se vedle .exe (plochá struktura + loga\, řídí Link v .csproj). Aplikace je jen čte.
%APPDATA%\Rozpisky Podklady vznikající za běhu — vše, co píše uživatel. V repu nejsou a nemají tam co dělat.
vzorky/ Cizí vstupy pro ruční zkoušení (schema.dxf). Nedodává se.

Nové dodávané datum = do Rozpisky/Podklady/ a řádek v .csproj s Link, ať výstup zůstane plochý. Nový zapisovaný soubor = přes UzivatelskaData.Cesta(...), nikdy AppContext.BaseDirectory.

Kam nesahat

  • Rozpisky/Podklady/Rozpiska.dxf, vzorky/schema.dxf — produkční DXF šablony.
  • Rozpisky/Podklady/loga/*.dxf — dodávaná loga (9 ks, testy je renderují).
  • Rozpisky/Podklady/SEZNAM.xlsx — mustr „Seznam příloh".
  • docs/SZ_SM011_P10_Manual_v6.md, Rozpisky/Podklady/SZ_SM011_P10_Manual_v6.pdf — normativní podklad SŽ, jen ke čtení.

Multiagentní provoz

Repo běží jako tým agentů. .claude/settings.json nastavuje "agent": "orchestrator", takže hlavní session je orchestrátor — má jen Agent, TodoWrite, AskUserQuestion a Skill, žádné nástroje na soubory ani na spouštění příkazů.

Role Model Nástroje Práce
orchestrator (hlavní session) Opus, high Agent, TodoWrite, AskUserQuestion, Skill, SendUserFile Plánuje a deleguje. Nemá žádné souborové nástroje (SendUserFile jen na cesty nahlášené subagentem).
scout Haiku Read, Grep, Glob Zjišťuje fakta o kódu. Read-only.
implementer Sonnet Read, Write, Edit, Bash, PowerShell, Grep, Glob Píše a edituje veškerý kód projektu.
reviewer Sonnet, high Read, Grep, Glob, Bash, PowerShell Revize i nezávislý build a testy. PROŠLO / POTŘEBUJE ZMĚNY. Read-only.

Pravidla

  • Hlavní vlákno nečte, nepíše, nehledá ani nespouští. Chceš-li se podívat do souboru, pošli scout.
  • Nejdřív fakta, pak plán: nech si od scout potvrdit, že soubor, metoda nebo konvence existuje, dřív než kolem toho plánuješ.
  • Veškerou implementaci dělá implementer. Změna přes víc vrstev (kreslicí jádro, UI, data...) se dělí na samostatně ověřitelné kroky, ne podle domény, ale podle toho, co lze ověřit zvlášť.
  • Každý prompt pro subagenta musí stát sám o sobě — absolutní cesty, úplná specifikace, znovu vypsaná zjištění. Subagent z konverzace nevidí nic.
  • Nic není hotové bez PROŠLO od reviewer.
  • Když je požadavek nejednoznačný natolik, že dvě čtení dají jinou práci, spusť skill upresni.

Ověřování

  • Žádný hook build nespouští. Ověřené je jen to, co agent skutečně spustil.
  • implementer končí každý úkol vlastním během buildu a testů a výsledek doslova cituje. Dokud je build červený, úkol není hotový.
  • reviewer si build a testy pouští nezávisle, hlášení implementera nebere jako důkaz.
  • Orchestrátor musí požadavek na ověření napsat explicitně do každého promptu pro implementera i revizora — subagent tahle pravidla automaticky nedědí.

Git — kdy commit a kdy push

  • Commit: jeden na jednu ucelenou, dokončenou a zrevidovanou změnu — ne po každé editaci souboru a ne po každém kroku plánu. Commituje se až po zeleném buildu a testech a po PROŠLO od reviewer. Rozdělaná práce, červený build ani „průběžný stav" se necommitují.
  • Zpráva commitu je česky, v duchu historie repa: Oblast: co se změnilo a proč (Šrafy: rozvinout vzor na čáry místo plné výplně). Popisuje účinek, ne seznam souborů.
  • Push jen na vyžádání. git push se nespouští sám od sebe — ani po commitu, ani na konci session. Čeká se, až o něj uživatel výslovně požádá. git push proto není a nemá být v permissions.allow; každý push projde promptem.
  • Když je v pracovním stromu hotová práce a session končí, orchestrátor v závěru jednou větou řekne, co je scommitované a kolik commitů čeká na push. Nenabízí push jako akci, kterou už provedl.
  • Commit spouští subagent, který má Bash (typicky ten, který změnu udělal); orchestrátor git nespouští, jen ho zadá jako samostatný krok po revizi.

Další dokumentace

ROZHRANI.md — obrazovky, pole a datový model. PODKLAD_CAD_Layout_Tisk.md — CAD, layouty a tisk přes COM.