{"id":224,"date":"2026-01-31T20:30:46","date_gmt":"2026-01-31T20:30:46","guid":{"rendered":"https:\/\/bina-meira.co.il\/claude-picker-smart-terminal-startup-that-reads-your-mind\/"},"modified":"2026-01-31T20:30:46","modified_gmt":"2026-01-31T20:30:46","slug":"claude-picker-smart-terminal-startup-that-reads-your-mind","status":"publish","type":"post","link":"https:\/\/bina-meira.co.il\/?p=224","title":{"rendered":"Claude Picker: Smart Terminal Startup That Reads Your Mind"},"content":{"rendered":"<article>\n<p><strong>The micro-friction that kills flow:<\/strong> Every time I opened a new terminal, it landed in my home directory. I knew exactly which project I wanted to work on, but I still had to type <code>cd project-name<\/code> and then <code>cld<\/code> (my Claude Code alias). Two commands. Every. Single. Time.<\/p>\n<p>So I asked Claude Code to fix it. Five minutes later, I had a smart terminal that reads my mind.<\/p>\n<h2>The Solution: Context-Aware Terminal Startup<\/h2>\n<p>Now when I open a terminal:<\/p>\n<ul>\n<li><strong>If I'm in home (~):<\/strong> An interactive project picker appears with fuzzy search<\/li>\n<li><strong>If I'm already in a project folder:<\/strong> Claude Code launches immediately<\/li>\n<\/ul>\n<p>The picker uses <a href=\"https:\/\/github.com\/junegunn\/fzf\">fzf<\/a> &#8211; the fuzzy finder that lets you type to filter, with a preview pane showing what's in each folder.<\/p>\n<h2>What It Looks Like<\/h2>\n<pre><code>\ud83d\udcc2 Select project folder (or ESC to stay in ~)\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Project:                                 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 > ai-video-maker                         \u2502\n\u2502   architect-workshops                    \u2502\n\u2502   aviz-crm                               \u2502\n\u2502   claude-skills-library                  \u2502\n\u2502   inbox                                  \u2502\n\u2502   remotion-assistant                     \u2502\n\u2502   sb                                     \u2502\n\u2502   tasks                                  \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/code><\/pre>\n<p>Type a few letters, hit Enter, and you're in your project with Claude Code running. Press ESC to stay in home.<\/p>\n<h2>Smart Features<\/h2>\n<ol>\n<li><strong>Filters system folders<\/strong> &#8211; Hides Library, Applications, Desktop, Downloads, etc.<\/li>\n<li><strong>Preview pane<\/strong> &#8211; Shows <code>ls -la<\/code> of the hovered folder so you know what's inside<\/li>\n<li><strong>Runs once per session<\/strong> &#8211; Opening new tabs won't re-trigger the picker<\/li>\n<li><strong>Context-aware<\/strong> &#8211; Skips the picker inside VS Code or Claude Code subshells<\/li>\n<\/ol>\n<h2>The Implementation<\/h2>\n<p>It's a bash script that sources from <code>.bash_profile<\/code>:<\/p>\n<pre><code>#!\/bin\/bash\n# Skip if not interactive \/ already ran \/ inside Claude\n[[ $- != *i* ]] && return\n[[ -n \"$CLAUDE_PICKER_RAN\" ]] && return\nexport CLAUDE_PICKER_RAN=1\n\nclaude_picker() {\n    if [[ \"$(pwd)\" == \"$HOME\" ]]; then\n        selected=$(find \"$HOME\" -maxdepth 1 -type d \\\n            ! -name \".*\" ! -name \"Library\" ! -name \"Applications\" \\\n            ! -name \"Desktop\" ! -name \"Downloads\" -print | \\\n            sed \"s|$HOME\/||\" | sort | \\\n            fzf --height=40% --reverse --border \\\n                --prompt=\"Project: \" \\\n                --preview=\"ls -la $HOME\/{} | head -20\")\n\n        if [[ -n \"$selected\" ]]; then\n            cd \"$HOME\/$selected\"\n            cld  # Claude Code alias\n        fi\n    else\n        cld\n    fi\n}\n\nclaude_picker<\/code><\/pre>\n<h2>How Claude Code Built This in 5 Minutes<\/h2>\n<p>The conversation went like this:<\/p>\n<ol>\n<li><strong>My request:<\/strong> &quot;every new terminal&#8230; if inside ~ folder&#8230; let me choose from folders&quot;<\/li>\n<li><strong>Claude investigates:<\/strong> Checked my shell config, found I'm using bash<\/li>\n<li><strong>First attempt:<\/strong> Added to <code>.bashrc<\/code><\/li>\n<li><strong>My feedback:<\/strong> &quot;doesn't work&quot;<\/li>\n<li><strong>Claude debugs:<\/strong> Realized macOS Terminal sources <code>.bash_profile<\/code>, not <code>.bashrc<\/code><\/li>\n<li><strong>Fixed:<\/strong> Moved the source to <code>.bash_profile<\/code><\/li>\n<li><strong>Done.<\/strong><\/li>\n<\/ol>\n<p>This is what working with Claude Code feels like. You describe the friction, and it disappears.<\/p>\n<h2>Try It Yourself<\/h2>\n<ol>\n<li>Install fzf: <code>brew install fzf<\/code><\/li>\n<li>Create the script at <code>~\/bin\/claude-picker.sh<\/code><\/li>\n<li>Add <code>source ~\/bin\/claude-picker.sh<\/code> to your shell profile<\/li>\n<li>Open a new terminal and enjoy<\/li>\n<\/ol>\n<p>Small automations like this compound. Every terminal session saved 5 seconds and a mental context switch. Over a day of heavy coding, that's real focus preserved.<\/p>\n<\/article>\n","protected":false},"excerpt":{"rendered":"<p>The micro-friction that kills flow: Every time I opened a new terminal, it landed in my home directory. I knew exactly which project I wanted to work on, but I still had to type cd project-name and then cld (my Claude Code alias). Two commands. Every. Single. Time. So I asked Claude Code to fix [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-224","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/bina-meira.co.il\/index.php?rest_route=\/wp\/v2\/posts\/224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bina-meira.co.il\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bina-meira.co.il\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bina-meira.co.il\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bina-meira.co.il\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=224"}],"version-history":[{"count":0,"href":"https:\/\/bina-meira.co.il\/index.php?rest_route=\/wp\/v2\/posts\/224\/revisions"}],"wp:attachment":[{"href":"https:\/\/bina-meira.co.il\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=224"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bina-meira.co.il\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=224"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bina-meira.co.il\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}