37 lines
1.5 KiB
Markdown
37 lines
1.5 KiB
Markdown
# 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
|
|
1. Se non ci sono argomenti: stampa l'uso ed esce con codice 2.
|
|
2. Avvia `claude -p <prompt>` (modalità non interattiva) con `WorkingDirectory = AppContext.BaseDirectory`.
|
|
3. Ritrasmette stdout e stderr del processo figlio in tempo reale.
|
|
4. Esce con lo stesso exit code di `claude`.
|
|
5. Se `claude` non è trovato: messaggio chiaro ed exit code 127.
|
|
|
|
## Scelte tecniche
|
|
- .NET 8+, un solo `Program.cs`, nessuna dipendenza esterna.
|
|
- `ProcessStartInfo.ArgumentList` per passare il prompt (niente problemi di quoting).
|
|
- Windows: `claude` è `claude.cmd`, quindi si avvia `cmd.exe /c claude ...`.
|
|
- Working dir: `AppContext.BaseDirectory`, non la cwd del chiamante.
|
|
|
|
## Fuori scope (MVP)
|
|
Modalità interattiva, sessioni/`--resume`, config file, logging su file, test automatici, supporto Linux/macOS.
|
|
|
|
## Criteri di accettazione
|
|
- [ ] Eseguito da un'altra cartella, `claude` parte 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 `--allowedTools` o `--permission-mode` per l'uso non interattivo?
|
|
- Formato output: testo semplice o `--output-format stream-json`?
|