Add support for passing prompt without -one-shot

Added `-prompt` option
diff --git a/cmd/sketch/main.go b/cmd/sketch/main.go
index ae029f9..3809701 100644
--- a/cmd/sketch/main.go
+++ b/cmd/sketch/main.go
@@ -44,7 +44,8 @@
 	maxIterations := flag.Uint64("max-iterations", 0, "maximum number of iterations the agent should perform per turn, 0 to disable limit")
 	maxWallTime := flag.Duration("max-wall-time", 0, "maximum time the agent should run per turn, 0 to disable limit")
 	maxDollars := flag.Float64("max-dollars", 5.0, "maximum dollars the agent should spend per turn, 0 to disable limit")
-	oneShot := flag.String("one-shot", "", "run a single iteration with the given prompt and exit without termui")
+	oneShot := flag.Bool("one-shot", false, "exit after the first turn without termui")
+	prompt := flag.String("prompt", "", "prompt to send to sketch")
 	verbose := flag.Bool("verbose", false, "enable verbose output")
 	version := flag.Bool("version", false, "print the version and exit")
 	workingDir := flag.String("C", "", "when set, change to this directory before running")
@@ -80,7 +81,7 @@
 	var slogHandler slog.Handler
 	var err error
 	var logFile *os.File
-	if *oneShot == "" && !*verbose {
+	if !*oneShot && !*verbose {
 		// Log to a file
 		logFile, err = os.CreateTemp("", "sketch-cli-log-*")
 		if err != nil {
@@ -199,6 +200,7 @@
 			OutsideOS:         runtime.GOOS,
 			OutsideWorkingDir: cwd,
 			OneShot:           *oneShot,
+			Prompt:            *prompt,
 		}
 		if err := dockerimg.LaunchContainer(ctx, stdout, stderr, config); err != nil {
 			if *verbose {
@@ -291,8 +293,9 @@
 		}
 	}
 
-	if *oneShot != "" {
-		agent.UserMessage(ctx, *oneShot)
+	// Use prompt if provided
+	if *prompt != "" {
+		agent.UserMessage(ctx, *prompt)
 	}
 
 	// Open the web UI URL in the system browser if requested
@@ -317,7 +320,7 @@
 		go skabandclient.DialAndServeLoop(ctx, *skabandAddr, *sessionID, pubKey, srv, connectFn)
 	}
 
-	if *oneShot != "" {
+	if *oneShot {
 		for {
 			m := agent.WaitForMessage(ctx)
 			if m.Content != "" {
diff --git a/dockerimg/dockerimg.go b/dockerimg/dockerimg.go
index e40a77b..1d6237b 100644
--- a/dockerimg/dockerimg.go
+++ b/dockerimg/dockerimg.go
@@ -77,8 +77,11 @@
 	OutsideOS         string
 	OutsideWorkingDir string
 
-	// If not empty, handle this message and exit
-	OneShot string
+	// If true, exit after the first turn
+	OneShot bool
+
+	// Initial prompt
+	Prompt string
 }
 
 // LaunchContainer creates a docker container for a project, installs sketch and opens a connection to it.
@@ -442,8 +445,11 @@
 	if config.SkabandAddr != "" {
 		cmdArgs = append(cmdArgs, "-skaband-addr="+config.SkabandAddr)
 	}
-	if config.OneShot != "" {
-		cmdArgs = append(cmdArgs, "-one-shot", config.OneShot)
+	if config.Prompt != "" {
+		cmdArgs = append(cmdArgs, "-prompt", config.Prompt)
+	}
+	if config.OneShot {
+		cmdArgs = append(cmdArgs, "-one-shot")
 	}
 	if out, err := combinedOutput(ctx, "docker", cmdArgs...); err != nil {
 		return fmt.Errorf("docker create: %s, %w", out, err)