{"id":51602841,"url":"https://github.com/cs4alhaider/claudee","last_synced_at":"2026-07-11T23:02:04.399Z","repository":{"id":369166098,"uuid":"1288684602","full_name":"cs4alhaider/claudee","owner":"cs4alhaider","description":"Interactive terminal launcher for Claude Code — git-worktree wizard, resume sessions by title, grouped options. Zero dependencies.","archived":false,"fork":false,"pushed_at":"2026-07-03T22:30:21.000Z","size":29,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-03T23:27:07.390Z","etag":null,"topics":["claude","claude-code","cli","developer-tools","git-worktree","launcher","nodejs","terminal","tui"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cs4alhaider.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-03T21:23:41.000Z","updated_at":"2026-07-03T22:30:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cs4alhaider/claudee","commit_stats":null,"previous_names":["cs4alhaider/claudee"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/cs4alhaider/claudee","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cs4alhaider%2Fclaudee","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cs4alhaider%2Fclaudee/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cs4alhaider%2Fclaudee/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cs4alhaider%2Fclaudee/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cs4alhaider","download_url":"https://codeload.github.com/cs4alhaider/claudee/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cs4alhaider%2Fclaudee/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35377013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-11T02:00:05.354Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude","claude-code","cli","developer-tools","git-worktree","launcher","nodejs","terminal","tui"],"created_at":"2026-07-11T23:02:03.723Z","updated_at":"2026-07-11T23:02:04.393Z","avatar_url":"https://github.com/cs4alhaider.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# claudee\n\nA tiny, zero-dependency **interactive launcher for [Claude Code](https://claude.com/claude-code)**.\n\nType `claudee` and a fast, full-width arrow-key wizard lets you choose **where** to run (current directory, a new git worktree, or an existing one), then group all the launch options — skip-permissions, model, reasoning effort, and which past conversation to resume — on one screen. Hit `Enter` and it execs `claude` with the right flags.\n\nRun it with arguments (`claudee -c \"fix the bug\"`) and it skips the menu entirely, passing straight through to `claude --dangerously-skip-permissions`.\n\n\u003e One executable. No npm install, no dependencies — just Node and the `claude` CLI you already have.\n\n---\n\n## Demo\n\n**Step 1 — where should this session run?** (existing worktrees show a clean/dirty marker)\n\n```\n  ╭──────────────────────────────────────────────────────────────╮\n  │ ◆ claudee                              my-app · main  +1 ~2  │\n  ╰──────────────────────────────────────────────────────────────╯\n\n  Step 1 of 2   ● ○\n\n  Where should this session run?\n  Pick the working tree. Existing worktrees launch in place.\n\n  ‣ ◉ Current directory   run here — no worktree\n    ○ New worktree…       new worktree + branch\n    ○ feature/checkout    ~1  …/my-app/.worktrees/checkout\n    ○ feature/search      ✓   …/my-app/.worktrees/search\n\n  ↑↓ move · Enter next · Tab launch now · Esc quit\n```\n\n**Final — options grouped on one screen; `Enter` launches:**\n\n```\n  Options   — tweak with ←→, or Enter to launch\n\n  Worktree  Current directory\n\n  ‣ Skip permissions  ‹ Yes ›\n    Model             default\n    Effort            default\n    Resume            Fix the checkout race  3h ago\n    Fork session      No\n    Open in Cursor    No\n    Session name      (none)\n\n  → claude --dangerously-skip-permissions --resume 4f1c…\n\n  ↑↓ field · ←→ change · Enter launch · Esc back\n```\n\n**Delete a worktree** — press `d` on an existing one, then a deliberate confirm (default **No**):\n\n```\n  Delete this worktree?\n\n    claude/checkout-fix\n    …/my-app/.worktrees/checkout-fix\n\n  Removes the worktree folder and deletes its branch. This cannot be undone.\n\n    ‹ No ›   Yes\n\n  ←→ choose · Enter confirm · Esc cancel\n```\n\n---\n\n## Features\n\n- **Worktree-first.** Launch in the current directory, spin up a **new git worktree** (`claude --worktree`), or jump into an **existing worktree** — launched in place. Manage them without leaving the wizard: **rename** (branch + folder) or **delete** (`d`) — with a deliberate confirm that force-removes dirty worktrees behind a second prompt and cleans up the branch.\n- **Resume by title.** Instead of a blind \"continue last\", pick from your recent conversations shown by their **AI-generated title + relative time** (reads `~/.claude/projects`). Maps to `claude --resume \u003cid\u003e` or `-c`, and can **fork** into a fresh session (`--fork-session`).\n- **Grouped options.** Skip-permissions, model, reasoning effort, resume, and session name on one screen with sensible defaults — accept them all with a single `Enter`, or tweak inline with `←/→`. Context-aware extras appear only when relevant: **Fork session** (when resuming), **Open in Cursor** (opens the launch directory in the Cursor editor), and **tmux** (new worktree in iTerm2).\n- **Git status at a glance.** The header shows the current repo's state (`✓` clean, `+N` staged, `~N` unstaged); each existing worktree shows its own marker.\n- **Fast passthrough.** `claudee \u003cargs\u003e` behaves exactly like `claude --dangerously-skip-permissions \u003cargs\u003e`, so your muscle memory and scripts keep working. Subcommands (`claudee auth`, `claudee mcp …`) pass through untouched.\n- **Remembers you.** Persists your last model / effort / skip choice to `~/.config/claudee/state.json`.\n- **Responsive \u0026 themeable.** Fills the terminal width, re-flows on resize, and honors `NO_COLOR`.\n\n---\n\n## Requirements\n\n- [**Claude Code**](https://claude.com/claude-code) — the `claude` CLI on your `PATH`.\n- **Node.js ≥ 18** — or **[Bun](https://bun.sh)**, which `claudee` auto-detects and prefers for a faster launch (~25–30% quicker startup). Only runtime built-ins are used; no packages.\n- **git** — for worktree features (optional; the tool works fine outside a repo).\n\n\u003e **Runtime:** `claudee` ships a tiny `sh`/JS polyglot shebang — it runs on **Bun if installed, otherwise Node**, with no configuration. Nothing to set up either way.\n\n---\n\n## Install\n\n### Homebrew\n\n```sh\nbrew install cs4alhaider/tap/claudee\n```\n\n### From source\n\n```sh\ngit clone https://github.com/cs4alhaider/claudee.git\ncd claudee\n./install.sh\n```\n\n`install.sh` symlinks `bin/claudee` into `~/.local/bin` (override with `PREFIX=/usr/local ./install.sh`). Because it's a symlink, `git pull` updates your installed command instantly.\n\nMake sure the target dir is on your `PATH`:\n\n```sh\nexport PATH=\"$HOME/.local/bin:$PATH\"   # add to ~/.zshrc or ~/.bashrc\n```\n\nIf you previously had `alias claudee=...` in your shell rc, remove it so the executable takes precedence.\n\n### Manual\n\n```sh\nln -sf \"$PWD/bin/claudee\" ~/.local/bin/claudee\n```\n\n---\n\n## Usage\n\n```sh\nclaudee                 # open the interactive wizard\nclaudee -c              # passthrough: claude --dangerously-skip-permissions -c\nclaudee \"explain this\"  # passthrough with a prompt\nclaudee auth            # subcommands pass straight through (no skip-perms)\n```\n\n### Keys\n\n| Key | Action |\n| --- | --- |\n| `↑` `↓` | move between choices / fields |\n| `←` `→` | change the selected value |\n| `Enter` | next step · launch on the final screen |\n| `Tab` | launch immediately with current + default answers |\n| `d` | on an existing worktree: delete it (opens a confirm) |\n| `Esc` | back · cancel a confirm (quit on the first screen) |\n| `Ctrl-C` | quit |\n\n---\n\n## Configuration\n\nEnvironment variables:\n\n| Variable | Effect |\n| --- | --- |\n| `CLAUDEE_DRYRUN=1` | print the assembled `claude …` command instead of running it |\n| `CLAUDEE_NO_STATUS=1` | skip git-status checks for a faster launch |\n| `CLAUDEE_CLAUDE_BIN` | path/name of the `claude` binary (default: `claude`) |\n| `CLAUDEE_COLS` | force a fixed layout width (otherwise the terminal width) |\n| `NO_COLOR` | disable ANSI colors |\n\nState (last model / effort / skip) is stored at `~/.config/claudee/state.json`.\n\n---\n\n## How it works\n\n`claudee` never reimplements Claude Code — it just assembles flags and execs `claude`:\n\n- **New worktree** → `claude --worktree [name]` (Claude creates the worktree/branch).\n- **Existing worktree** → runs `claude` with its working directory set to that worktree.\n- **Resume** → reads session transcripts under `~/.claude/projects/\u003cslug\u003e/*.jsonl`, extracts each conversation's `ai-title`, and launches `claude --resume \u003cid\u003e` (or `-c` for the most recent). **Fork session** adds `--fork-session` so you branch into a new session id.\n- **Rename** → `git branch -m` + `git worktree move`, best-effort with inline error reporting.\n- **Delete** → `git worktree remove` (adds `--force` for dirty worktrees, behind a second confirm) + `git branch -D`, all behind a default-No prompt.\n- **Open in Cursor** → runs `cursor \u003claunch-dir\u003e` detached alongside the launch (no-op if the `cursor` CLI isn't installed).\n\n---\n\n## Project layout\n\nZero-dependency CommonJS modules — no build step, no bundler. `bin/claudee` is a thin entry point; the implementation is split by concern:\n\n```\nclaudee/\n├── bin/claudee     # entry: polyglot shebang · fast-path passthrough · boots the wizard\n└── lib/\n    ├── format.js   # pure text/color helpers + the git-status badge\n    ├── git.js      # git + session-history helpers (worktrees, status, resume list)\n    ├── claude.js   # the `claude` CLI interface: build args, run / dry-run\n    └── wizard.js   # the interactive TUI: state, screens, rendering, key input\n```\n\nThe install is a symlink into your `PATH`, so `require('../lib/…')` resolves against the repo — a `git pull` updates everything live, no rebuild.\n\n---\n\n## Uninstall\n\n```sh\nrm ~/.local/bin/claudee\nrm -rf ~/.config/claudee   # optional: remove saved preferences\n```\n\n---\n\n## License\n\n[Apache-2.0](./LICENSE) © cs4alhaider\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcs4alhaider%2Fclaudee","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcs4alhaider%2Fclaudee","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcs4alhaider%2Fclaudee/lists"}