Commit iniziale
This commit is contained in:
commit
2718c3d2fb
3 files changed
+89
No files matched your search
@@ -0,0 +1,31 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Stato del progetto
|
||||
|
||||
Repository vuoto (nessun codice, nessun git). Obiettivo: MVP di un eseguibile C# che, "sotto il cofano", invoca Claude Code (CLI `claude`) da terminale.
|
||||
|
||||
## Approccio doc-first
|
||||
|
||||
Prima si aggiorna la documentazione, poi il codice. Specifica e criteri di accettazione: [docs/MVP.md](docs/MVP.md). Fasi e stato: [docs/ROADMAP.md](docs/ROADMAP.md). Se il codice diverge dall'MVP, aggiornare prima i doc.
|
||||
|
||||
Design deciso: un solo `Program.cs`, nessuna dipendenza, lancio di `claude -p <prompt>` con `ProcessStartInfo.ArgumentList`, output in streaming, exit code propagato.
|
||||
|
||||
## Requisito chiave
|
||||
|
||||
Claude Code deve essere lanciato con working directory = la directory in cui risiede l'eseguibile, non la current directory del chiamante. In C# usare `AppContext.BaseDirectory` (non `Environment.CurrentDirectory`) come `ProcessStartInfo.WorkingDirectory`.
|
||||
|
||||
Nota: con single-file publish `Assembly.Location` è vuoto, quindi `AppContext.BaseDirectory` è la scelta corretta.
|
||||
|
||||
## Comandi (da .NET SDK, una volta creato il progetto)
|
||||
|
||||
- Build: `dotnet build`
|
||||
- Run: `dotnet run`
|
||||
- Publish single-file: `dotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=true`
|
||||
|
||||
Aggiornare questa sezione quando esisteranno il `.csproj` e i test.
|
||||
|
||||
## Ambiente
|
||||
|
||||
Windows. `claude` è installato come script npm (`claude.cmd`): con `Process.Start` e `UseShellExecute=false` può servire lanciare via `cmd.exe /c claude ...` oppure risolvere il percorso completo, altrimenti il processo non viene trovato.
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
# 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`?
|
||||
@@ -0,0 +1,22 @@
|
||||
# Roadmap
|
||||
|
||||
Dettagli dell'MVP in [MVP.md](MVP.md).
|
||||
|
||||
## Fase 0 — Doc-first
|
||||
- [x] Scrivere MVP.md e ROADMAP.md
|
||||
- [ ] Chiudere le domande aperte in MVP.md
|
||||
|
||||
## Fase 1 — MVP
|
||||
- [ ] `dotnet new console`, `Program.cs` unico
|
||||
- [ ] Lancio di `claude -p` nella cartella dell'exe, streaming, exit code
|
||||
- [ ] Publish single-file win-x64 e verifica dei criteri di accettazione
|
||||
|
||||
## Fase 2 — Robustezza
|
||||
- [ ] Input del prompt da stdin e da file
|
||||
- [ ] Timeout e cancellazione (Ctrl+C propagato al figlio)
|
||||
- [ ] Opzioni passate a `claude` (`--model`, `--allowedTools`, `--output-format`)
|
||||
|
||||
## Fase 3 — Oltre
|
||||
- [ ] Modalità sessione (`--resume` / `--continue`)
|
||||
- [ ] Config file accanto all'exe
|
||||
- [ ] Test automatici e CI
|
||||
Reference in new issue
Block a user