From f7517fbd1bf4202afb205b8aac48618085231217 Mon Sep 17 00:00:00 2001 From: Chris Wanstrath Date: Tue, 17 Feb 2026 20:15:09 -0800 Subject: [PATCH] optional prompt for `new` --- src/cli.ts | 5 +++-- src/vm.ts | 9 ++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/cli.ts b/src/cli.ts index 077c3fe..c23ab17 100755 --- a/src/cli.ts +++ b/src/cli.ts @@ -18,8 +18,9 @@ program.name("sandlot").description("Branch-based development with git worktrees program .command("new") .argument("", "branch name") + .argument("[prompt]", "initial prompt for Claude") .description("Create a new session and launch Claude") - .action(async (branch: string) => { + .action(async (branch: string, prompt?: string) => { const root = await git.repoRoot() const worktreeRel = `.sandlot/${branch}` const worktreeAbs = join(root, worktreeRel) @@ -43,7 +44,7 @@ program created_at: new Date().toISOString(), }) - await vm.claude(worktreeAbs) + await vm.claude(worktreeAbs, prompt) }) // ── sandlot list ────────────────────────────────────────────────────── diff --git a/src/vm.ts b/src/vm.ts index 2fb5717..19da88d 100644 --- a/src/vm.ts +++ b/src/vm.ts @@ -65,13 +65,12 @@ async function loadEnv(): Promise> { } /** Launch claude in the VM at the given workdir. */ -export async function claude(workdir: string): Promise { +export async function claude(workdir: string, prompt?: string): Promise { const env = await loadEnv() const envArgs = Object.entries(env).map(([k, v]) => `${k}=${v}`) - const proc = Bun.spawn( - ["limactl", "shell", `--workdir=${workdir}`, VM_NAME, "env", ...envArgs, "claude", "--dangerously-skip-permissions"], - { stdin: "inherit", stdout: "inherit", stderr: "inherit" }, - ) + const args = ["limactl", "shell", `--workdir=${workdir}`, VM_NAME, "env", ...envArgs, "claude", "--dangerously-skip-permissions"] + if (prompt) args.push(prompt) + const proc = Bun.spawn(args, { stdin: "inherit", stdout: "inherit", stderr: "inherit" }) await proc.exited }