Commands¶
Workflow Commands¶
These are the primary commands, available at the top level.
triage¶
Spawn a sandboxed Claude agent to triage a GitHub issue.
The agent retrieves the issue, checks for duplicates and existing documentation, and posts a friendly follow-up comment asking for more information or pointing to a solution.
fix¶
Create a git worktree and spawn a sandboxed agent to fix a GitHub issue.
This command:
- Creates a git worktree at
<worktree-dir>/issue-<N>with branchissue-<N> - Launches Claude in a nono sandbox with write access to the worktree and read access to the main repo
- The agent retrieves the issue, analyzes the codebase, and implements a fix
If the worktree or branch already exists, the existing worktree is reused.
review¶
Spawn a sandboxed Claude agent to review a GitHub pull request.
The agent retrieves the PR diff, reviews for correctness, security, and style, then drafts a comment. Attach to the session to approve posting the review.
feature¶
Create a git worktree and spawn a sandboxed agent for new feature development.
This command:
- Creates a git worktree at
<worktree-dir>/<branch-name>with the given branch - Launches Claude in a nono sandbox with write access to the worktree
- The agent waits for your direction when you attach
sb -- Sandbox Session Management¶
sb status¶
Show a dashboard of all managed worktrees and nono sessions.
Output:
NAME PATH TYPE ISSUE/PR SESSION STATUS ATTACH AGE CHANGES
issue-42 .worktrees/issue-42 fix #42 82984b running detached 2h30m +34 -12
review-530 - review #530 abe85b running attached 15m -
issue-99 .worktrees/issue-99 fix #99 - - - - +120 -45
Columns are dynamically sized to fit content.
sb attach¶
Reconnect to a running nono session.
The target can be:
- A session name (e.g.,
fix-123,review-530) - An issue or PR number (e.g.,
123) -- finds the matching session - A session ID or prefix (e.g.,
82984b)
sb stop¶
Stop a running nono session.
nono-dev sb stop <target>
nono-dev sb stop review-530
nono-dev sb stop 530
nono-dev sb stop --force fix-123
| Flag | Description |
|---|---|
--force |
SIGKILL instead of SIGTERM |
sb prune¶
Clean up old nono session files.
nono-dev sb prune
nono-dev sb prune --dry-run
nono-dev sb prune --older-than 7
nono-dev sb prune --keep 10
| Flag | Description |
|---|---|
--dry-run |
Show what would be removed |
--older-than DAYS |
Remove sessions older than N days |
--keep N |
Keep only the N most recent sessions |
wt -- Worktree Management¶
wt list¶
List all managed worktrees.
wt cd¶
Print the path to a worktree (used by the wt shell function).
With eval "$(nono-dev shell-init)" in your .zshrc, use the wt function directly:
wt issue-123 # cd into the worktree
wt 123 # also works with issue numbers
wt fix-123 # or session names
wt cleanup¶
Remove worktrees and their branches.
If a worktree has uncommitted changes, you are prompted before deletion:
| Flag | Description |
|---|---|
--all |
Remove all worktrees in the configured directory |
--force |
Skip confirmation prompts |
git -- AI-Assisted Git Operations¶
git commit¶
Generate a commit message using Gemini AI and commit with sign-off.
This command:
- Collects all staged, unstaged, and untracked changes
- Sends the diff to Gemini 2.5 Flash to generate a conventional commit message
- Shows the proposed message and asks for confirmation
- Stages all changes and commits with
git commit -s
Options at the prompt:
- Y -- commit with the proposed message
- n -- abort
- e -- open the message in
$EDITORfor manual editing before committing
Requires GEMINI_API_KEY or GOOGLE_API_KEY set in your environment.
vm -- OrbStack VM Management¶
vm create¶
Create a development VM.
nono-dev vm create [--os {debian,ubuntu}] [name] [--extras PKG,PKG] [--mount PATH] [--user USER] [--no-rust] [--shell-setup]
| Flag | Default | Description |
|---|---|---|
--os |
debian |
Operating system |
name |
nono-dev |
VM name |
--extras |
none | Additional apt packages (comma-separated) |
--mount |
current directory | Host directory to mount as ~/project |
--user |
current macOS user | Username in the VM |
--no-rust |
Skip Rust/Cargo installation | |
--shell-setup |
Install zsh, starship, eza, tmux, ripgrep, fzf with dotfiles |
vm connect¶
Open an interactive shell inside a VM.
vm status¶
List all OrbStack VMs and their current state.
vm destroy¶
Delete a VM.
vm recreate¶
Destroy and recreate a VM in one step. Accepts the same flags as vm create.
Utilities¶
dotfiles¶
Deploy shipped dotfiles and install shell tools on the local machine.
nono-dev dotfiles
nono-dev dotfiles --force
nono-dev dotfiles --no-install
nono-dev dotfiles --preset nono-dev
This command:
- Installs shell tools via Homebrew (starship, eza, tmux, z, zsh-autosuggestions)
- Installs the MesloLGS Nerd Font for starship icons
- Deploys
.zshrc,.zprofile, and.tmux.confto your home directory - Lets you pick a starship prompt preset
Existing files are backed up to <file>.bak before overwriting. Files that are already up to date are skipped.
Run this command again after updating nono-dev to pick up any dotfile changes.
| Flag | Description |
|---|---|
--force |
Overwrite existing files without backing up |
--no-install |
Only deploy dotfiles, skip Homebrew tool installation |
--preset NAME |
Use a specific starship preset (skip interactive picker) |
Available starship presets: nono-dev, catppuccin-powerline, tokyo-night, pastel-powerline, bracketed-segments, gruvbox-rainbow, jetpack, pure-preset.
install¶
Install nono-dev as a globally available command via uv tool.
| Flag | Description |
|---|---|
--force |
Reinstall even if already installed |
shell-init¶
Print shell functions for nono-dev integration. Add to your .zshrc or .bashrc:
This provides the wt function for changing into worktree directories.