3.1 KiB
3.1 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Progetto
LlmRun: eseguibile C# (.NET 10, Windows) che invoca Claude Code (claude -p) da terminale. Senza argomenti apre una GUI WinForms, con argomenti funziona da CLI. Non è un repo git.
Workflow doc-first (obbligatorio)
- Specifica e criteri di accettazione: docs/MVP.md. Fasi e stato: docs/ROADMAP.md. Uso: README.md.
- Ad ogni richiesta di modifica: aggiornare prima i doc interessati (MVP.md, ROADMAP.md con le spunte, README.md se cambia l'uso), poi il codice, poi questo file se cambiano comandi, design o vincoli. Nessuna modifica deve lasciare i doc disallineati.
Comandi
- Build:
dotnet build(LlmRun.csproj, net10.0-windows, WinForms) - GUI:
dotnet run; CLI:dotnet run -- "prompt" - Publish single-file:
dotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=true - Test: non esistono ancora.
Architettura
- Program.cs: top-level statements. Senza argomenti avvia
Gui; con argomenti è la CLI (claude -p <prompt>conArgumentList, stdout/stderr ereditati, exit code propagato, 127 seclaudenon è nel PATH). - Gui.cs: chat WinForms. WebView2 (conversazione, in alto) + pannello in basso (menu modello/effort, "Nuova chat", input, Invia). Ogni messaggio lancia
claude -pcon stdout/stderr rediretti; la risposta è convertita da markdown a HTML con Markdig (DisableHtml) e la pagina viene rigenerata per intero conNavigateToString. Contesto tra messaggi:--session-id <guid>al primo,--resume <guid>poi.--model/--effortomessi se "predefinito". Lista modelli hardcoded inGui.Models, da aggiornare quando escono nuovi modelli. - Dipendenze NuGet (solo GUI): Markdig, Microsoft.Web.WebView2.
Vincoli non ovvi
- La working directory di
claudedeve essere la cartella dell'exe: usareAppContext.BaseDirectory, maiEnvironment.CurrentDirectorynéAssembly.Location(vuoto in single-file). - Lo stdin di
claudeva redirezionato e chiuso subito, altrimenti aspetta 3s. claudeè un .exe nativo (~/.local/bin), avviabile direttamente. Se fosseclaude.cmdservecmd.exe /c.- La logica di avvio processo è duplicata tra CLI (
Program.cs) e GUI (Gui.cs): se cambia (cartella di lavoro, stdin, flag), modificarla in entrambi i punti. - La GUI non mostra link né HTML della risposta nella finestra: i link
http(s)vanno aperti nel browser di sistema. - La GUI deve girare su un thread STA (creato a mano in
Program.cs, perché i top-level statements non hanno[STAThread]): senza, WebView2 fallisce conRPC_E_CHANGED_MODE.
Skill del repo
.claude/settings.json abilita il plugin ui-ux-pro-max (marketplace nextlevelbuilder/ui-ux-pro-max-skill). Usarlo per le modifiche alla GUI WinForms (layout, usabilità, accessibilità).
Commit
Messaggi di commit in italiano: titolo breve all'indicativo o in forma nominale, eventuale corpo che spiega il perché. Mantenere la riga finale Co-Authored-By prevista dall'ambiente. Fare commit solo su richiesta.