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>
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
RelayCommandaObservableObject— nepsat vlastní ani nepřidávat NuGet (CommunityToolkit apod.). - XAML: barvy a rozměry jen z
Rozpisky/Themes/Colors.Dark.xamlaMetrics.xaml(WPF-DarkTheme-Kit). Žádné hardcoded#RRGGBBani natvrdo zadané odsazení. NullableaImplicitUsingsjsou 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
UzivatelskaDatado%APPDATA%\Rozpisky. Do složky u.exese 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
scoutpotvrdit, ž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.
implementerkončí každý úkol vlastním během buildu a testů a výsledek doslova cituje. Dokud je build červený, úkol není hotový.reviewersi 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ŠLOodreviewer. 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 pushse 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 pushproto není a nemá být vpermissions.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.