1.7 KiB
1.7 KiB
MVP (doc-first)
Obiettivo
Eseguibile C# a riga di comando che inoltra un prompt a Claude Code (claude) lanciandolo nella directory dell'eseguibile, e ne mostra l'output.
Uso
llmrun.exe "spiega questo progetto"
Tutti gli argomenti sono uniti in un unico prompt.
Comportamento
- Se non ci sono argomenti: stampa l'uso ed esce con codice 2.
- Avvia
claude -p <prompt>(modalità non interattiva) conWorkingDirectory = AppContext.BaseDirectory. - Ritrasmette stdout e stderr del processo figlio in tempo reale.
- Esce con lo stesso exit code di
claude. - Se
claudenon è trovato: messaggio chiaro ed exit code 127.
GUI
Senza argomenti si apre una finestra WinForms (prompt, pulsante, output) che usa lo stesso lancio di claude -p. Con argomenti resta la CLI.
Scelte tecniche
- .NET 8+, un solo
Program.cs, nessuna dipendenza esterna. ProcessStartInfo.ArgumentListper passare il prompt (niente problemi di quoting).claudeè un .exe nativo (~/.local/bin): si avvia direttamente, senzacmd /c. Lo stdin è chiuso subito per evitare l'attesa di 3s di claude.- Working dir:
AppContext.BaseDirectory, non la cwd del chiamante.
Fuori scope (MVP)
Modalità interattiva (chat), sessioni/--resume, config file, logging su file, test automatici, supporto Linux/macOS.
Criteri di accettazione
- Eseguito da un'altra cartella,
claudeparte nella cartella dell'exe (verificabile chiedendo "pwd"). - L'output appare in streaming, non solo alla fine.
- L'exit code è propagato.
- Un prompt con virgolette e spazi arriva intatto.
Domande aperte
- Permessi: serve
--allowedToolso--permission-modeper l'uso non interattivo? - Formato output: testo semplice o
--output-format stream-json?