66# ============================================================================
77
88cc () {
9- # No arguments → pick project + launch claude in acceptEdits mode
9+ # No arguments → launch Claude in current directory ( acceptEdits mode)
1010 if [[ $# -eq 0 ]]; then
11- if (( $+ functions[pick] )) ; then
12- pick && claude --permission-mode acceptEdits
13- else
14- claude --permission-mode acceptEdits
15- fi
11+ claude --permission-mode acceptEdits
1612 return
1713 fi
1814
1915 # Check if first arg is a known subcommand
2016 local is_subcommand=0
2117 case " $1 " in
22- yolo|y|plan|p|now|n|resume|r|continue|c|ask|a|file|f|diff|d|rpkg|print|pr|opus|o|haiku|h|help|--help|-h)
18+ pick| yolo|y|plan|p|now|n|resume|r|continue|c|ask|a|file|f|diff|d|rpkg|print|pr|opus|o|haiku|h|help|--help|-h)
2319 is_subcommand=1
2420 ;;
2521 esac
@@ -41,48 +37,73 @@ cc() {
4137 fi
4238
4339 case " $1 " in
40+ # Pick project first, then launch
41+ pick)
42+ shift
43+ if (( $+ functions[pick] )) ; then
44+ pick && claude --permission-mode acceptEdits " $@ "
45+ else
46+ echo " ❌ pick function not available" >&2
47+ return 1
48+ fi
49+ ;;
50+
4451 # Launch modes
4552 yolo|y)
4653 shift
47- # Check if next arg is a project name
48- if [[ -n " $1 " && " $1 " != -* ]]; then
49- local project_name=" $1 "
54+ # Check for 'pick' subcommand: cc yolo pick
55+ if [[ " $1 " == " pick" ]]; then
5056 shift
5157 if (( $+ functions[pick] )) ; then
52- pick " $project_name " && claude --dangerously-skip-permissions " $@ "
58+ pick && claude --dangerously-skip-permissions " $@ "
5359 else
54- claude --dangerously-skip-permissions " $@ "
60+ echo " ❌ pick function not available" >&2
61+ return 1
5562 fi
56- else
63+ # Check if next arg is a project name (direct jump)
64+ elif [[ -n " $1 " && " $1 " != -* ]]; then
65+ local project_name=" $1 "
66+ shift
5767 if (( $+ functions[pick] )) ; then
58- pick && claude --dangerously-skip-permissions " $@ "
68+ pick " $project_name " && claude --dangerously-skip-permissions " $@ "
5969 else
6070 claude --dangerously-skip-permissions " $@ "
6171 fi
72+ else
73+ # No args after yolo → launch in current directory
74+ claude --dangerously-skip-permissions " $@ "
6275 fi
6376 ;;
6477
6578 plan|p)
6679 shift
67- if [[ -n " $1 " && " $1 " != - * ]] ; then
68- local project_name= " $1 "
80+ # Check for 'pick' subcommand: cc plan pick
81+ if [[ " $1 " == " pick " ]] ; then
6982 shift
7083 if (( $+ functions[pick] )) ; then
71- pick " $project_name " && claude --permission-mode plan " $@ "
84+ pick && claude --permission-mode plan " $@ "
7285 else
73- claude --permission-mode plan " $@ "
86+ echo " ❌ pick function not available" >&2
87+ return 1
7488 fi
75- else
89+ # Check if next arg is a project name (direct jump)
90+ elif [[ -n " $1 " && " $1 " != -* ]]; then
91+ local project_name=" $1 "
92+ shift
7693 if (( $+ functions[pick] )) ; then
77- pick && claude --permission-mode plan " $@ "
94+ pick " $project_name " && claude --permission-mode plan " $@ "
7895 else
7996 claude --permission-mode plan " $@ "
8097 fi
98+ else
99+ # No args after plan → launch in current directory
100+ claude --permission-mode plan " $@ "
81101 fi
82102 ;;
83103
84- # Direct launch (no picker )
104+ # Direct launch (DEPRECATED - default now does this )
85105 now|n)
106+ echo " ⚠️ 'cc now' is deprecated. Just use 'cc' (default is current dir now)" >&2
86107 shift
87108 claude --permission-mode acceptEdits " $@ "
88109 ;;
@@ -157,39 +178,53 @@ cc() {
157178 # Model selection
158179 opus|o)
159180 shift
160- if [[ -n " $1 " && " $1 " != - * ]] ; then
161- local project_name= " $1 "
181+ # Check for 'pick' subcommand: cc opus pick
182+ if [[ " $1 " == " pick " ]] ; then
162183 shift
163184 if (( $+ functions[pick] )) ; then
164- pick " $project_name " && claude --model opus --permission-mode acceptEdits " $@ "
185+ pick && claude --model opus --permission-mode acceptEdits " $@ "
165186 else
166- claude --model opus --permission-mode acceptEdits " $@ "
187+ echo " ❌ pick function not available" >&2
188+ return 1
167189 fi
168- else
190+ # Check if next arg is a project name (direct jump)
191+ elif [[ -n " $1 " && " $1 " != -* ]]; then
192+ local project_name=" $1 "
193+ shift
169194 if (( $+ functions[pick] )) ; then
170- pick && claude --model opus --permission-mode acceptEdits " $@ "
195+ pick " $project_name " && claude --model opus --permission-mode acceptEdits " $@ "
171196 else
172197 claude --model opus --permission-mode acceptEdits " $@ "
173198 fi
199+ else
200+ # No args after opus → launch in current directory
201+ claude --model opus --permission-mode acceptEdits " $@ "
174202 fi
175203 ;;
176204
177205 haiku|h)
178206 shift
179- if [[ -n " $1 " && " $1 " != - * ]] ; then
180- local project_name= " $1 "
207+ # Check for 'pick' subcommand: cc haiku pick
208+ if [[ " $1 " == " pick " ]] ; then
181209 shift
182210 if (( $+ functions[pick] )) ; then
183- pick " $project_name " && claude --model haiku --permission-mode acceptEdits " $@ "
211+ pick && claude --model haiku --permission-mode acceptEdits " $@ "
184212 else
185- claude --model haiku --permission-mode acceptEdits " $@ "
213+ echo " ❌ pick function not available" >&2
214+ return 1
186215 fi
187- else
216+ # Check if next arg is a project name (direct jump)
217+ elif [[ -n " $1 " && " $1 " != -* ]]; then
218+ local project_name=" $1 "
219+ shift
188220 if (( $+ functions[pick] )) ; then
189- pick && claude --model haiku --permission-mode acceptEdits " $@ "
221+ pick " $project_name " && claude --model haiku --permission-mode acceptEdits " $@ "
190222 else
191223 claude --model haiku --permission-mode acceptEdits " $@ "
192224 fi
225+ else
226+ # No args after haiku → launch in current directory
227+ claude --model haiku --permission-mode acceptEdits " $@ "
193228 fi
194229 ;;
195230
@@ -226,17 +261,18 @@ ${_C_YELLOW}║${_C_NC} ${_C_CYAN}CC${_C_NC} - Claude Code Dispatcher
226261${_C_YELLOW} ╚════════════════════════════════════════════════════════════╝${_C_NC}
227262
228263${_C_YELLOW} 💡 QUICK START${_C_NC} :
229- ${_C_DIM} \$ ${_C_NC} cc ${_C_DIM} # Pick project → NEW Claude session${_C_NC}
264+ ${_C_DIM} \$ ${_C_NC} cc ${_C_DIM} # Launch Claude HERE (current dir)${_C_NC}
265+ ${_C_DIM} \$ ${_C_NC} cc pick ${_C_DIM} # Pick project → Claude${_C_NC}
230266 ${_C_DIM} \$ ${_C_NC} cc flow ${_C_DIM} # Direct jump to flow-cli → Claude${_C_NC}
231- ${_C_DIM} \$ ${_C_NC} cc yolo ${_C_DIM} # Pick project → YOLO mode${_C_NC}
232267
233268${_C_BLUE} 🚀 LAUNCH MODES${_C_NC} :
234- ${_C_CYAN} cc${_C_NC} Pick project → NEW Claude (acceptEdits)
235- ${_C_CYAN} cc <project>${_C_NC} Direct jump → NEW Claude (no picker!)
236- ${_C_CYAN} cc yolo${_C_NC} Pick project → YOLO mode (skip all permissions)
237- ${_C_CYAN} cc yolo <project>${_C_NC} Direct jump → YOLO mode
238- ${_C_CYAN} cc plan${_C_NC} Pick project → Plan mode
239- ${_C_CYAN} cc now${_C_NC} Launch here (no picker, current dir)
269+ ${_C_CYAN} cc${_C_NC} Launch Claude HERE (acceptEdits mode)
270+ ${_C_CYAN} cc pick${_C_NC} Pick project → Claude (acceptEdits)
271+ ${_C_CYAN} cc <project>${_C_NC} Direct jump → Claude (no picker!)
272+ ${_C_CYAN} cc yolo${_C_NC} Launch HERE in YOLO mode (skip permissions)
273+ ${_C_CYAN} cc yolo pick${_C_NC} Pick project → YOLO mode
274+ ${_C_CYAN} cc plan${_C_NC} Launch HERE in Plan mode
275+ ${_C_CYAN} cc plan pick${_C_NC} Pick project → Plan mode
240276
241277${_C_BLUE} 🔄 SESSION${_C_NC} :
242278 ${_C_CYAN} cc resume${_C_NC} Resume with Claude session picker
@@ -249,8 +285,10 @@ ${_C_BLUE}❓ QUICK ACTIONS${_C_NC}:
249285 ${_C_CYAN} cc rpkg${_C_NC} R package context helper
250286
251287${_C_BLUE} 🎯 MODEL SELECTION${_C_NC} :
252- ${_C_CYAN} cc opus [project]${_C_NC} Use Opus model
253- ${_C_CYAN} cc haiku [project]${_C_NC} Use Haiku model
288+ ${_C_CYAN} cc opus${_C_NC} Launch HERE with Opus model
289+ ${_C_CYAN} cc opus pick${_C_NC} Pick project → Opus model
290+ ${_C_CYAN} cc haiku${_C_NC} Launch HERE with Haiku model
291+ ${_C_CYAN} cc haiku pick${_C_NC} Pick project → Haiku model
254292
255293${_C_BLUE} 📋 OTHER${_C_NC} :
256294 ${_C_CYAN} cc print <prompt>${_C_NC} Print mode (non-interactive)
@@ -262,7 +300,7 @@ ${_C_MAGENTA}💡 DIRECT JUMP EXAMPLES${_C_NC}:
262300 cc yolo stat Direct → stat-440 + YOLO Claude
263301
264302${_C_MAGENTA} 💡 SHORTCUTS${_C_NC} :
265- y = yolo, p = plan, n = now, r = resume, c = continue
303+ y = yolo, p = plan, r = resume, c = continue
266304 a = ask, f = file, d = diff, o = opus, h = haiku, pr = print
267305"
268306}
0 commit comments