"""Start Claude Code in the myclaude project directory.""" import os import shutil import subprocess import sys from pathlib import Path import click from rich.console import Console from myclaude.project_root import get_myclaude_project_root console = Console() def _resolve_chat_cwd() -> Path: root = get_myclaude_project_root() fallback = Path.home() / ".myclaude" if root == fallback: console.print( "[red]Cannot resolve myclaude project root.[/red] Run from the repo or set " "[cyan]MYCLAUDE_PROJECT_ROOT[/cyan].", file=sys.stderr, ) raise SystemExit(1) return root @click.command( "chat", context_settings={ "ignore_unknown_options": True, "allow_extra_args": True, }, ) @click.option( "--dangerously-skip-permissions", is_flag=True, default=False, help="Forward to claude: bypass permission checks (sandbox / isolated use only).", ) @click.pass_context def chat_cmd(ctx: click.Context, dangerously_skip_permissions: bool) -> None: """Run `claude` in the myclaude repo so CLAUDE.md and .claude/ apply; extra args pass through.""" binary = os.environ.get("CLAUDE_BIN") or shutil.which("claude") if not binary: console.print( "[red]claude CLI not found in PATH.[/red] Install Claude Code or set " "[cyan]CLAUDE_BIN[/cyan].", file=sys.stderr, ) raise SystemExit(127) cwd = _resolve_chat_cwd() cmd: list[str] = [binary] if dangerously_skip_permissions: cmd.append("--dangerously-skip-permissions") cmd.extend(ctx.args) proc = subprocess.run(cmd, cwd=str(cwd), check=False) raise SystemExit(proc.returncode)