You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* [luv-32] Add -b base-branch flag
Add `-b <branch>` so a new workspace is cloned at, and branched off, a
caller-specified base instead of the repo default:
- Parse `-b` as a value flag (same validation as `-m`).
- Validate the base exists via `git ls-remote --heads` before cloning, so
a bad base errors cleanly with no half-created workspace dir.
- `git clone --branch <base>` then `git checkout -b luv-{N}` off it.
- Record `git config luv.base <base>` in the clone (local .git/config) so
the eventual PR can target it; warn (non-fatal) if that write fails.
- Error clearly if `-b` is combined with a non-creation command
(--clean/--init/-l/-pr/reopen-by-number/bare -n/-r).
- Document the flag in README and -h.
Bump version to 0.0.23.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RzFzm7YUJsqTAauzC7MBVt
* [luv-32] Add Claude and Codex agent selection
* chore: commit review-session artifact (claude-output.txt)
Empty harness output file present in the working tree during the
automated review of PR #32. Committed locally to satisfy the
require-commit-before-stop policy; not pushed. Not part of the PR diff.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Nivedit (Hermes) <hermes@exosphere.host>
Copy file name to clipboardExpand all lines: README.md
+19-10Lines changed: 19 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# luv
2
2
3
-
A CLI that launches [Claude Code](https://docs.anthropic.com/en/docs/claude-code) agents on GitHub repos with isolated workspaces and optional Docker dev environments.
3
+
A CLI that launches Claude Code or Codex agents on GitHub repos with isolated workspaces and optional Docker dev environments.
4
4
5
5
`luv` clones a repo, creates a branch, and drops you into a Claude session ready to work. When the repo ships a `.luv/settings.json`, it spins up Docker Compose automatically so every command runs in the right environment.
6
6
@@ -14,7 +14,7 @@ uv tool install luv-cli
14
14
pip install luv-cli
15
15
```
16
16
17
-
**Requirements:**[Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI and [GitHub CLI](https://cli.github.com/) (`gh`) must be installed and authenticated.
17
+
**Requirements:**[GitHub CLI](https://cli.github.com/) (`gh`) plus either Claude Code or Codex must be installed and authenticated.
18
18
19
19
## Quick start
20
20
@@ -25,6 +25,12 @@ luv --init
25
25
# Create a new workspace and launch Claude
26
26
luv my-repo "add user authentication"
27
27
28
+
# Launch Codex in YOLO mode instead
29
+
luv --codex my-repo "add user authentication"
30
+
31
+
# Select Claude explicitly (Claude remains the default)
32
+
luv --claude my-repo "add user authentication"
33
+
28
34
# Base a new workspace off a non-default branch
29
35
luv my-repo -b develop "add user authentication"
30
36
@@ -51,8 +57,8 @@ luv --clean
51
57
52
58
1. Clones the repo into `~/prs/{repo}-{number}/`
53
59
2. Creates a new branch `luv-{number}`
54
-
3.Trusts the project in Claude Code config
55
-
4. Launches Claude with Opus 4.8 at max effort
60
+
3.Configures the selected agent with the workspace's PR conventions
61
+
4. Launches Claude with Opus 4.8 at max effort, or Codex in YOLO mode
56
62
57
63
All workspaces live under `~/prs/`. The number comes from the repo's GitHub issue counter to avoid collisions.
58
64
@@ -61,7 +67,8 @@ All workspaces live under `~/prs/`. The number comes from the repo's GitHub issu
61
67
| Command | Description |
62
68
|---------|-------------|
63
69
|`luv --init`| Configure default GitHub org |
64
-
|`luv [org/]<repo> [prompt...]`| Create a new workspace and launch Claude |
70
+
|`luv [org/]<repo> [prompt...]`| Create a new workspace and launch Claude (default) |
71
+
|`luv --codex [org/]<repo> [prompt...]`| Create a workspace and launch Codex in YOLO mode |
65
72
|`luv [org/]<repo> -b <branch> [prompt...]`| Create a workspace based off `<branch>` instead of the default |
66
73
|`luv [org/]<repo> <number> [prompt]`| Reopen an existing workspace |
67
74
|`luv -l <PR URL> [prompt]`| Open any GitHub PR by URL |
@@ -74,11 +81,13 @@ All workspaces live under `~/prs/`. The number comes from the repo's GitHub issu
74
81
75
82
| Flag | Description |
76
83
|------|-------------|
84
+
|`--claude`| Launch Claude Code (default) |
85
+
|`--codex`| Launch Codex with approvals and sandboxing bypassed (YOLO mode) |
77
86
|`-n`| Navigate: open a shell instead of Claude |
78
-
|`-r`| Resume: resume the last Claude session |
87
+
|`-r`| Resume: resume the selected agent's last session |
79
88
|`-p`| Launch Claude in plan permission mode (default: `bypassPermissions`) |
80
-
|`-nit`| Non-interactive: run `claude -p <prompt>` and exit (no REPL); streams `stream-json` events to stdout |
81
-
|`-m MODEL`|Claude model to use (default: `claude-opus-4-8`); passed through to `claude --model`, so aliases like `opus`/`sonnet`/`haiku` work|
89
+
|`-nit`| Non-interactive: run the selected agent and exit (no REPL); Claude streams `stream-json` events to stdout |
90
+
|`-m MODEL`|Model to use; Claude defaults to `claude-opus-4-8`, while Codex uses its configured CLI default|
82
91
|`-b BRANCH`| Base a new workspace off `BRANCH` (clone + branch from it); recorded in `git config luv.base` so the PR can target it |
83
92
|`-e`| Env: pass `LUV_*` environment variables (with prefix stripped) into the session |
0 commit comments