claude-code-kr 0.1.21 โ†’ 0.1.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/cc-kr.js CHANGED
@@ -56,6 +56,18 @@ switch (cmd) {
56
56
  const result = patcher.apply();
57
57
  if (result.ok) {
58
58
  console.log(`๐ŸŽ‰ ${result.count}๊ฐœ ์ปค๋งจ๋“œ ํ•œ๊ธ€ํ™” ์™„๋ฃŒ`);
59
+ console.log(`๐Ÿ“ UI ํŒจ์น˜: ${result.ui.applied}/${result.ui.total}`);
60
+ console.log(`๐Ÿ”ง ๊ตฌ์กฐ ํŒจ์น˜: ${result.structural.applied}/${result.structural.total}`);
61
+ const totalSkipped = result.ui.skipped.length + result.structural.skipped.length;
62
+ if (totalSkipped > 0) {
63
+ console.log(`โš ๏ธ ${totalSkipped}๊ฐœ ์Šคํ‚ต (CC ๋ฒ„์ „ ์ฐจ์ด ๊ฐ€๋Šฅ)`);
64
+ if (process.argv.includes('--verbose') || process.argv.includes('-v')) {
65
+ for (const s of result.structural.skipped) console.log(` ๐Ÿ”ง ${s}`);
66
+ for (const s of result.ui.skipped) console.log(` ๐Ÿ“ ${s}`);
67
+ } else {
68
+ console.log(' cckr apply -v ๋กœ ์ƒ์„ธ ํ™•์ธ');
69
+ }
70
+ }
59
71
  console.log(' ์ƒˆ ์„ธ์…˜์—์„œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค');
60
72
  } else {
61
73
  console.error(`โŒ ${result.error}`);
@@ -123,15 +135,23 @@ switch (cmd) {
123
135
  console.log(pkg.version);
124
136
  break;
125
137
 
138
+ case '--help':
139
+ case '-h':
140
+ case 'help':
126
141
  default:
127
142
  console.log(`cckr (claude-code-kr) v${pkg.version} โ€” Claude Code ํ•œ๊ธ€ ํŒจ์น˜ CLI
128
143
 
129
144
  ์‚ฌ์šฉ๋ฒ•:
130
- cckr status ํŒจ์น˜ ์ƒํƒœ ํ™•์ธ
131
- cckr apply ํ•œ๊ธ€ ํŒจ์น˜ ์ ์šฉ
132
- cckr restore ์›๋ณธ ๋ณต์›
133
- cckr list ํ•œ๊ธ€ ๋งคํ•‘ ๋ชฉ๋ก
134
- cckr -v ๋ฒ„์ „ ํ™•์ธ`);
145
+ cckr status ํŒจ์น˜ ์ƒํƒœ ํ™•์ธ
146
+ cckr apply ํ•œ๊ธ€ ํŒจ์น˜ ์ ์šฉ
147
+ cckr apply -v ์ ์šฉ + ์Šคํ‚ต๋œ ํŒจ์น˜ ์ƒ์„ธ ๋ณด๊ธฐ
148
+ cckr restore ์›๋ณธ ๋ณต์›
149
+ cckr list ํ•œ๊ธ€ ๋งคํ•‘ ๋ชฉ๋ก
150
+ cckr -v ๋ฒ„์ „ ํ™•์ธ
151
+
152
+ sudo ํ™˜๊ฒฝ:
153
+ sudo cckr apply ์‹œ์Šคํ…œ Node.js๋กœ CC ์„ค์น˜ํ•œ ๊ฒฝ์šฐ
154
+ sudo cckr restore ์‹œ์Šคํ…œ Node.js๋กœ CC ์„ค์น˜ํ•œ ๊ฒฝ์šฐ`);
135
155
  }
136
156
 
137
157
  // ๋ชจ๋“  ๋ช…๋ น์–ด ์‹คํ–‰ ํ›„ ์—…๋ฐ์ดํŠธ ์•Œ๋ฆผ
package/lib/patcher.js CHANGED
@@ -125,15 +125,17 @@ function apply(cliJs) {
125
125
  // Bash
126
126
  ['return"Running command"', 'return"๋ช…๋ น์–ด ์‹คํ–‰ ์ค‘"'],
127
127
  ['return O??"Running in the background"', 'return O??"๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰ ์ค‘"'],
128
- // ๋„๊ตฌ ์š”์•ฝ ๋ฉ”์‹œ์ง€ (Searching for 3 patterns, reading 1 fileโ€ฆ)
129
- // ํ•œ๊ตญ์–ด๋Š” ๋‹จ๋ณต์ˆ˜ ๊ตฌ๋ถ„ ์—†์œผ๋ฏ€๋กœ ๋‹จ์ˆœํ™”
130
- ['q===1?"pattern":"patterns"', 'q===1?"ํŒจํ„ด":"ํŒจํ„ด"'],
131
- ['K===1?"file":"files"', 'K===1?"ํŒŒ์ผ":"ํŒŒ์ผ"'],
128
+ // ๋„๊ตฌ ์š”์•ฝ ๋ฉ”์‹œ์ง€ โ€” ํ…œํ”Œ๋ฆฟ ํ†ต์งธ ๊ต์ฒด (์–ด์ˆœ: ํ•œ๊ตญ์–ด)
129
+ // "Searching for 3 patterns" โ†’ "3๊ฐœ ํŒจํ„ด ๊ฒ€์ƒ‰"
130
+ ['O.push(`${$} ${q} ${q===1?"pattern":"patterns"}`)', 'O.push(`${q}๊ฐœ ํŒจํ„ด ${$}`)'],
131
+ ['O.push(`${$} ${K} ${K===1?"file":"files"}`)', 'O.push(`${K}๊ฐœ ํŒŒ์ผ ${$}`)'],
132
+ ['O.push(`${$} ${A} ${A===1?"directory":"directories"}`)', 'O.push(`${A}๊ฐœ ํด๋” ${$}`)'],
133
+ // ๋™์‚ฌ ํ•œ๊ธ€ํ™” (์œ„ ํ…œํ”Œ๋ฆฟ์—์„œ ${$}๋กœ ๋“ค์–ด๊ฐ)
132
134
  ['"Searching for":"searching for"', '"๊ฒ€์ƒ‰":"๊ฒ€์ƒ‰"'],
133
135
  ['"Searched for":"searched for"', '"๊ฒ€์ƒ‰ ์™„๋ฃŒ":"๊ฒ€์ƒ‰ ์™„๋ฃŒ"'],
134
136
  ['O.length===0?"Reading":"reading":O.length===0?"Read":"read"', 'O.length===0?"์ฝ๋Š” ์ค‘":"์ฝ๋Š” ์ค‘":O.length===0?"์ฝ๊ธฐ ์™„๋ฃŒ":"์ฝ๊ธฐ ์™„๋ฃŒ"'],
135
137
  ['O.length===0?"Listing":"listing":O.length===0?"Listed":"listed"', 'O.length===0?"๋ชฉ๋ก":"๋ชฉ๋ก":O.length===0?"๋ชฉ๋ก ์™„๋ฃŒ":"๋ชฉ๋ก ์™„๋ฃŒ"'],
136
- ['A===1?"directory":"directories"', 'A===1?"ํด๋”":"ํด๋”"'],
138
+ // directory ๋‹จ๋… ์‚ฌ์šฉ (๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ)
137
139
  ['g===1?"directory":"directories"', 'g===1?"ํด๋”":"ํด๋”"'],
138
140
  // ๋„๊ตฌ ์š”์•ฝ ๋ฉ”์‹œ์ง€ โ€” JSX ์ฝ”๋“œ๊ฒฝ๋กœ (2๋ฒˆ์งธ)
139
141
  ['z6?"Searching for":"searching for":z6?"Searched for":"searched for"', 'z6?"๊ฒ€์ƒ‰":"๊ฒ€์ƒ‰":z6?"๊ฒ€์ƒ‰ ์™„๋ฃŒ":"๊ฒ€์ƒ‰ ์™„๋ฃŒ"'],
@@ -141,7 +143,7 @@ function apply(cliJs) {
141
143
  ['z6?"Reading":"reading":z6?"Read":"read"', 'z6?"์ฝ๋Š” ์ค‘":"์ฝ๋Š” ์ค‘":z6?"์ฝ๊ธฐ ์™„๋ฃŒ":"์ฝ๊ธฐ ์™„๋ฃŒ"'],
142
144
  ['z6?"Listing":"listing":z6?"Listed":"listed"', 'z6?"๋ชฉ๋ก":"๋ชฉ๋ก":z6?"๋ชฉ๋ก ์™„๋ฃŒ":"๋ชฉ๋ก ์™„๋ฃŒ"'],
143
145
  // ๊ถŒํ•œ ๋ชจ๋“œ
144
- ['title:"Bypass Permissions",shortTitle:"Bypass"', 'title:"๊ถŒํ•œ ๋ฌด์‹œ",shortTitle:"๋ฌด์‹œ"'],
146
+ ['title:"Bypass Permissions",shortTitle:"Bypass"', 'title:"ํ™•์ธ ์ƒ๋žต",shortTitle:"์ƒ๋žต"'],
145
147
  ['title:"Accept edits",shortTitle:"Accept"', 'title:"์ˆ˜์ • ํ—ˆ์šฉ",shortTitle:"ํ—ˆ์šฉ"'],
146
148
  ['title:"Don\'t Ask",shortTitle:"DontAsk"', 'title:"๋ฌป์ง€ ์•Š๊ธฐ",shortTitle:"์ž๋™"'],
147
149
  ['title:"Auto mode",shortTitle:"Auto"', 'title:"์ž๋™ ๋ชจ๋“œ",shortTitle:"์ž๋™"'],
@@ -153,8 +155,20 @@ function apply(cliJs) {
153
155
  // ๊ถŒํ•œ ๋ชจ๋“œ label (ํ™”๋ฉด์— ์ง์ ‘ ํ‘œ์‹œ)
154
156
  ['label:"accept edits on"', 'label:"์ˆ˜์ • ํ—ˆ์šฉ ๋ชจ๋“œ"'],
155
157
  ['label:"auto mode on"', 'label:"์ž๋™ ๋ชจ๋“œ"'],
156
- // ์ƒํƒœ๋ฐ”
158
+ // ๊ถŒํ•œ ๋ชจ๋“œ footer ํ‘œ์‹œ (title.toLowerCase() + " on")
159
+ ['.toLowerCase()," on"', '.toLowerCase()," ์ค‘"'],
160
+ ['action:"cycle"', 'action:"์ „ํ™˜ํ•˜๊ธฐ"'],
161
+ // KeyboardShortcutHint โ€” "to" โ†’ "์œผ๋กœ"
162
+ ['"(",X," to ",z,")"', '"(",X,"์œผ๋กœ ",z,")"'],
163
+ ['X," to ",z)', 'X," ",z)'],
164
+ ['action:"expand"', 'action:"ํŽผ์ณ๋ณด๊ธฐ"'],
165
+ // ์ƒํƒœ๋ฐ” โ€” tokens, thinking
157
166
  [' ยท /effort`', ' ยท /๋…ธ๋ ฅ`'],
167
+ ['`${Z6} tokens`:`${s6.arrowDown} ${Z6} tokens`', '`${Z6} ํ† ํฐ`:`${s6.arrowDown} ${Z6} ํ† ํฐ`'],
168
+ ['`thinking${G}`:typeof f==="number"?`thought for ${Math.max(1,Math.round(f/1000))}s`', '`์ƒ๊ฐ์ค‘${G}`:typeof f==="number"?`${Math.max(1,Math.round(f/1000))}์ดˆ ์ƒ๊ฐ`'],
169
+ // formatDuration โ€” ์‹œ๊ฐ„ ํ‘œ์‹œ ํ•œ๊ธ€ํ™”
170
+ ['return`${_}d ${z}h`;return`${_}d ${z}h ${Y}m`}if(z>0){if(O&&Y===0&&A===0)return`${z}h`;if(O&&A===0)return`${z}h ${Y}m`;return`${z}h ${Y}m ${A}s`}if(Y>0){if(O&&A===0)return`${Y}m`;return`${Y}m ${A}s`}return`${A}s`',
171
+ 'return`${_}์ผ ${z}์‹œ๊ฐ„`;return`${_}์ผ ${z}์‹œ๊ฐ„ ${Y}๋ถ„`}if(z>0){if(O&&Y===0&&A===0)return`${z}์‹œ๊ฐ„`;if(O&&A===0)return`${z}์‹œ๊ฐ„ ${Y}๋ถ„`;return`${z}์‹œ๊ฐ„ ${Y}๋ถ„ ${A}์ดˆ`}if(Y>0){if(O&&A===0)return`${Y}๋ถ„`;return`${Y}๋ถ„ ${A}์ดˆ`}return`${A}์ดˆ`'],
158
172
  // ๋„์›€๋ง ํ™”๋ฉด (shortcuts)
159
173
  ['"! for bash mode"', '"! bash ๋ชจ๋“œ"'],
160
174
  ['"/ for commands"', '"/ ์ปค๋งจ๋“œ"'],
@@ -185,22 +199,110 @@ function apply(cliJs) {
185
199
  ['"Conversation compacted"', '"๋Œ€ํ™” ์••์ถ• ์™„๋ฃŒ"'],
186
200
  // ๋„๊ตฌ ์™„๋ฃŒ (Done)
187
201
  ['j===1?"1 tool use":`${j} tool uses`', 'j===1?"๋„๊ตฌ 1ํšŒ":`๋„๊ตฌ ${j}ํšŒ`'],
188
- // thinking ํ‘œ์‹œ
189
- ['`thinking${G}`:typeof f==="number"?`thought for ${Math.max(1,Math.round(f/1000))}s`', '`์‚ฌ๊ณ  ์ค‘${G}`:typeof f==="number"?`${Math.max(1,Math.round(f/1000))}์ดˆ ์‚ฌ๊ณ `'],
190
202
  // hook says
191
203
  ['" says: "', '": "'],
192
204
  // Advisor
193
205
  ['"Advisor unavailable ("', '"์กฐ์–ธ์ž ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ("'],
206
+ // ์‹œ์ž‘ ํ™”๋ฉด
207
+ ['"Tips for getting started"', '"์‹œ์ž‘ ๊ฐ€์ด๋“œ"'],
208
+ ['"Recent activity"', '"์ตœ๊ทผ ํ™œ๋™"'],
209
+ ['"Run /init to create a CLAUDE.md file with instructions for Claude"', '"/init์œผ๋กœ Claude ์ง€์‹œ์‚ฌํ•ญ CLAUDE.md ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ"'],
210
+ // ์ƒํƒœ ํ‘œ์‹œ
211
+ ['"Answeringโ€ฆ"', '"๋‹ต๋ณ€ ์ค‘โ€ฆ"'],
212
+ ['"Initializingโ€ฆ"', '"์ดˆ๊ธฐํ™” ์ค‘โ€ฆ"'],
213
+ ['"Shortcuts"', '"๋‹จ์ถ•ํ‚ค"'],
214
+ // ๊ถŒํ•œ ๋Œ€ํ™”์ƒ์ž
215
+ ['"tell Claude what to do next"', '"๋‹ค์Œ์— ํ•  ์ผ์„ ์•Œ๋ ค์ฃผ์„ธ์š”"'],
216
+ ['"tell Claude what to do differently"', '"๋‹ค๋ฅด๊ฒŒ ํ•  ์ผ์„ ์•Œ๋ ค์ฃผ์„ธ์š”"'],
217
+ ['"What would you like to do?"', '"๋ฌด์—‡์„ ํ• ๊นŒ์š”?"'],
218
+ ['"Yes, allow all edits during this session"', '"๋„ค, ์ด ์„ธ์…˜์—์„œ ๋ชจ๋“  ์ˆ˜์ • ํ—ˆ์šฉ"'],
219
+ // ๊ณ„ํš ์Šน์ธ
220
+ ['"Approved Plan"', '"๊ณ„ํš ์Šน์ธ๋จ"'],
221
+ ['"Approved Plan (edited by user)"', '"๊ณ„ํš ์Šน์ธ๋จ (์‚ฌ์šฉ์ž ์ˆ˜์ •)"'],
222
+ // progressMessage (prompt ์ปค๋งจ๋“œ์šฉ์ด์ง€๋งŒ UI์— ํ‘œ์‹œ๋จ)
223
+ ['progressMessage:"creating commit"', 'progressMessage:"์ปค๋ฐ‹ ์ƒ์„ฑ ์ค‘"'],
224
+ ['progressMessage:"creating commit and PR"', 'progressMessage:"์ปค๋ฐ‹ ๋ฐ PR ์ƒ์„ฑ ์ค‘"'],
225
+ ['progressMessage:"reviewing pull request"', 'progressMessage:"ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ๋ฆฌ๋ทฐ ์ค‘"'],
226
+ ['progressMessage:"analyzing your sessions"', 'progressMessage:"์„ธ์…˜ ๋ถ„์„ ์ค‘"'],
227
+ // ํŒ ๋ฉ”์‹œ์ง€ (์Šคํ”ผ๋„ˆ ํ‘œ์‹œ)
228
+ ['"Start with small features or bug fixes, tell Claude to propose a plan, and verify its suggested edits"', '"์ž‘์€ ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฒ„๊ทธ ์ˆ˜์ •๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ณ , Claude์—๊ฒŒ ๊ณ„ํš์„ ์ œ์•ˆํ•˜๊ฒŒ ํ•œ ๋’ค ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ™•์ธํ•˜์„ธ์š”"'],
229
+ ['"Use /config to change your default permission mode (including Plan Mode)"', '"/config๋กœ ๊ธฐ๋ณธ ๊ถŒํ•œ ๋ชจ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๊ณ„ํš ๋ชจ๋“œ ํฌํ•จ)"'],
230
+ ['"Use git worktrees to run multiple Claude sessions in parallel."', '"git worktree๋กœ ์—ฌ๋Ÿฌ Claude ์„ธ์…˜์„ ๋ณ‘๋ ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."'],
231
+ ['"Running multiple Claude sessions? Use /color and /rename to tell them apart at a glance."', '"์—ฌ๋Ÿฌ Claude ์„ธ์…˜ ์‹คํ–‰ ์ค‘? /color์™€ /rename์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์„ธ์š”."'],
232
+ ['"Use /memory to view and manage Claude memory"', '"/memory๋กœ Claude ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜์„ธ์š”"'],
233
+ ['"Use /theme to change the color theme"', '"/theme์œผ๋กœ ์ƒ‰์ƒ ํ…Œ๋งˆ๋ฅผ ๋ณ€๊ฒฝํ•˜์„ธ์š”"'],
234
+ ['"Try setting environment variable COLORTERM=truecolor for richer colors"', '"ํ™˜๊ฒฝ๋ณ€์ˆ˜ COLORTERM=truecolor๋ฅผ ์„ค์ •ํ•˜๋ฉด ๋” ํ’๋ถ€ํ•œ ์ƒ‰์ƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค"'],
235
+ ['"Use /statusline to set up a custom status line that will display beneath the input box"', '"/statusline์œผ๋กœ ์ž…๋ ฅ์ฐฝ ์•„๋ž˜์— ์ปค์Šคํ…€ ์ƒํƒœ์ค„์„ ์„ค์ •ํ•˜์„ธ์š”"'],
236
+ ['"Hit Enter to queue up additional messages while Claude is working."', '"Claude ์ž‘์—… ์ค‘ Enter๋ฅผ ๋ˆŒ๋Ÿฌ ์ถ”๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋Œ€๊ธฐ์—ด์— ๋„ฃ์œผ์„ธ์š”."'],
237
+ ['"Send messages to Claude while it works to steer Claude in real-time"', '"Claude ์ž‘์—… ์ค‘ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐฉํ–ฅ์„ ์กฐ์ •ํ•˜์„ธ์š”"'],
238
+ ['"Ask Claude to create a todo list when working on complex tasks to track progress and remain on track"', '"๋ณต์žกํ•œ ์ž‘์—… ์‹œ Claude์—๊ฒŒ ํ•  ์ผ ๋ชฉ๋ก์„ ๋งŒ๋“ค๊ฒŒ ํ•˜๋ฉด ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค"'],
239
+ ['"Connect Claude to your IDE ยท /ide"', '"Claude๋ฅผ IDE์— ์—ฐ๊ฒฐํ•˜์„ธ์š” ยท /ide"'],
240
+ ['"Run /install-github-app to tag @claude right from your Github issues and PRs"', '"/install-github-app์œผ๋กœ GitHub ์ด์Šˆ์™€ PR์—์„œ @claude๋ฅผ ํƒœ๊ทธํ•˜์„ธ์š”"'],
241
+ ['"Run /install-slack-app to use Claude in Slack"', '"/install-slack-app์œผ๋กœ Slack์—์„œ Claude๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”"'],
242
+ ['"Use /permissions to pre-approve and pre-deny bash, edit, and MCP tools"', '"/permissions๋กœ bash, edit, MCP ๋„๊ตฌ๋ฅผ ๋ฏธ๋ฆฌ ํ—ˆ์šฉ/๊ฑฐ๋ถ€ํ•˜์„ธ์š”"'],
243
+ ['"Did you know you can drag and drop image files into your terminal?"', '"ํ„ฐ๋ฏธ๋„์— ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค"'],
244
+ ['"Paste images into Claude Code using control+v (not cmd+v!)"', '"control+v๋กœ Claude Code์— ์ด๋ฏธ์ง€๋ฅผ ๋ถ™์—ฌ๋„ฃ์œผ์„ธ์š” (cmd+v ์•„๋‹˜!)"'],
245
+ ['"Double-tap esc to rewind the conversation to a previous point in time"', '"esc ๋‘ ๋ฒˆ ๋ˆŒ๋Ÿฌ ๋Œ€ํ™”๋ฅผ ์ด์ „ ์‹œ์ ์œผ๋กœ ๋˜๋Œ๋ฆฌ์„ธ์š”"'],
246
+ ['"Double-tap esc to rewind the code and/or conversation to a previous point in time"', '"esc ๋‘ ๋ฒˆ ๋ˆŒ๋Ÿฌ ์ฝ”๋“œ์™€ ๋Œ€ํ™”๋ฅผ ์ด์ „ ์‹œ์ ์œผ๋กœ ๋˜๋Œ๋ฆฌ์„ธ์š”"'],
247
+ ['"Run claude --continue or claude --resume to resume a conversation"', '"claude --continue ๋˜๋Š” --resume์œผ๋กœ ๋Œ€ํ™”๋ฅผ ์ด์–ด์„œ ํ•˜์„ธ์š”"'],
248
+ ['"Name your conversations with /rename to find them easily in /resume later"', '"/rename์œผ๋กœ ๋Œ€ํ™” ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋ฉด /resume์—์„œ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค"'],
249
+ ['"Create skills by adding .md files to .claude/skills/ in your project or ~/.claude/skills/ for skills that work in any project"', '".claude/skills/์— .md ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด ์Šคํ‚ฌ์„ ๋งŒ๋“œ์„ธ์š”. ~/.claude/skills/๋Š” ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ"'],
250
+ ['"Use /agents to optimize specific tasks. Eg. Software Architect, Code Writer, Code Reviewer"', '"/agents๋กœ ํŠน์ • ์ž‘์—…์„ ์ตœ์ ํ™”ํ•˜์„ธ์š”. ์˜ˆ: Software Architect, Code Writer, Code Reviewer"'],
251
+ ['"Use --agent <agent_name> to directly start a conversation with a subagent"', '"--agent <์—์ด์ „ํŠธ๋ช…>์œผ๋กœ ์„œ๋ธŒ์—์ด์ „ํŠธ์™€ ์ง์ ‘ ๋Œ€ํ™”๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”"'],
252
+ ['"Run Claude Code locally or remotely using the Claude desktop app: clau.de/desktop"', '"Claude ๋ฐ์Šคํฌํ†ฑ ์•ฑ์œผ๋กœ ๋กœ์ปฌ/์›๊ฒฉ์—์„œ ์‹คํ–‰ํ•˜์„ธ์š”: clau.de/desktop"'],
253
+ ['"Run tasks in the cloud while you keep coding locally ยท clau.de/web"', '"๋กœ์ปฌ์—์„œ ์ฝ”๋”ฉํ•˜๋ฉด์„œ ํด๋ผ์šฐ๋“œ์—์„œ ์ž‘์—… ์‹คํ–‰ ยท clau.de/web"'],
254
+ ['"/mobile to use Claude Code from the Claude app on your phone"', '"/mobile๋กœ ํœด๋Œ€ํฐ Claude ์•ฑ์—์„œ Claude Code ์‚ฌ์šฉ"'],
255
+ ['"Use /feedback to help us improve!"', '"/feedback์œผ๋กœ ๊ฐœ์„ ์— ๋„์›€์„ ์ฃผ์„ธ์š”!"'],
256
+ // ๋™์  ํŒ โ€” ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์˜ ์ •์  ๋ถ€๋ถ„
257
+ ['"chat:imagePaste","Chat","ctrl+v")} to paste images from your clipboard', '"chat:imagePaste","Chat","ctrl+v")}๋กœ ํด๋ฆฝ๋ณด๋“œ ์ด๋ฏธ์ง€๋ฅผ ๋ถ™์—ฌ๋„ฃ์œผ์„ธ์š”'],
258
+ ['Use Plan Mode to prepare for a complex request before making changes. Press ${', '๋ณต์žกํ•œ ์š”์ฒญ ์ „ ๊ณ„ํš ๋ชจ๋“œ๋กœ ์ค€๋น„ํ•˜์„ธ์š”. ${'],
259
+ ['"chat:cycleMode","Chat","shift+tab")} twice to enable.', '"chat:cycleMode","Chat","shift+tab")}๋ฅผ ๋‘ ๋ฒˆ ๋ˆŒ๋Ÿฌ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”.'],
260
+ ['"chat:cycleMode","Chat","shift+tab")} to cycle between default mode, auto-accept edit mode, and plan mode', '"chat:cycleMode","Chat","shift+tab")}๋กœ ๊ธฐ๋ณธ ๋ชจ๋“œ, ์ˆ˜์ • ํ—ˆ์šฉ, ๊ณ„ํš ๋ชจ๋“œ๋ฅผ ์ „ํ™˜ํ•˜์„ธ์š”'],
261
+ ['"chat:cycleMode","Chat","shift+tab")} twice to activate Plan Mode and plan with Claude Opus.', '"chat:cycleMode","Chat","shift+tab")}๋ฅผ ๋‘ ๋ฒˆ ๋ˆŒ๋Ÿฌ ๊ณ„ํš ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”.'],
262
+ ['Your default model setting is Opus Plan Mode. Press ${', '๊ธฐ๋ณธ ๋ชจ๋ธ์ด Opus ๊ณ„ํš ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. ${'],
263
+ ['Continue your session in Claude Code Desktop with ${', 'Claude Code Desktop์—์„œ ์„ธ์…˜ ์ด์–ด๊ฐ€๊ธฐ: ${'],
264
+ // ๋™์  ํŒ โ€” ์กฐ๊ฑด๋ถ„๊ธฐ (ternary) ์ •์  ๋ฌธ์ž์—ด
265
+ ['"Run /terminal-setup to enable convenient terminal integration like Option + Enter for new line and more"', '"/terminal-setup์œผ๋กœ Option+Enter ์ค„๋ฐ”๊ฟˆ ๋“ฑ ํ„ฐ๋ฏธ๋„ ์—ฐ๋™์„ ์„ค์ •ํ•˜์„ธ์š”"'],
266
+ ['"Run /terminal-setup to enable convenient terminal integration like Shift + Enter for new line and more"', '"/terminal-setup์œผ๋กœ Shift+Enter ์ค„๋ฐ”๊ฟˆ ๋“ฑ ํ„ฐ๋ฏธ๋„ ์—ฐ๋™์„ ์„ค์ •ํ•˜์„ธ์š”"'],
267
+ ['"Press Option+Enter to send a multi-line message"', '"Option+Enter๋กœ ์—ฌ๋Ÿฌ ์ค„ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์„ธ์š”"'],
268
+ ['"Press Shift+Enter to send a multi-line message"', '"Shift+Enter๋กœ ์—ฌ๋Ÿฌ ์ค„ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์„ธ์š”"'],
269
+ ['"Run /terminal-setup to enable Option+Enter for new lines"', '"/terminal-setup์œผ๋กœ Option+Enter ์ค„๋ฐ”๊ฟˆ์„ ์„ค์ •ํ•˜์„ธ์š”"'],
270
+ ['"Run /terminal-setup to enable Shift+Enter for new lines"', '"/terminal-setup์œผ๋กœ Shift+Enter ์ค„๋ฐ”๊ฟˆ์„ ์„ค์ •ํ•˜์„ธ์š”"'],
194
271
  ];
195
272
 
273
+ let uiApplied = 0;
274
+ const uiSkipped = [];
275
+
196
276
  for (const [old, rep] of toolPatches) {
197
277
  if (content.includes(old)) {
198
278
  content = content.replaceAll(old, rep);
279
+ uiApplied++;
280
+ } else {
281
+ uiSkipped.push(old.length > 50 ? old.slice(0, 50) + 'โ€ฆ' : old);
199
282
  }
200
283
  }
201
284
 
285
+ // ๊ตฌ์กฐ์  ํŒจ์น˜ ์ถ”์ 
286
+ const structuralPatches = [
287
+ ['tab completion', tabOld],
288
+ ['autocomplete display', displayOld],
289
+ ['autocomplete regex 1', acOld],
290
+ ['autocomplete regex 2', acOld2],
291
+ ];
292
+ const structSkipped = [];
293
+ for (const [name, pattern] of structuralPatches) {
294
+ // ์ด๋ฏธ ์œ„์—์„œ replace ํ–ˆ์œผ๋ฏ€๋กœ new ๋ฒ„์ „์ด ์žˆ๋Š”์ง€ ์ฒดํฌ
295
+ const applied = !content.includes(pattern);
296
+ if (!applied) structSkipped.push(name);
297
+ }
298
+
202
299
  fs.writeFileSync(cliJs, content);
203
- return { ok: true, count };
300
+ return {
301
+ ok: true,
302
+ count,
303
+ ui: { applied: uiApplied, total: toolPatches.length, skipped: uiSkipped },
304
+ structural: { applied: structuralPatches.length - structSkipped.length, total: structuralPatches.length, skipped: structSkipped },
305
+ };
204
306
  }
205
307
 
206
308
  function restore(cliJs) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-kr",
3
- "version": "0.1.21",
3
+ "version": "0.1.27",
4
4
  "description": "Claude Code ํ•œ๊ธ€ ํŒจ์น˜ CLI โ€” /btw โ†’ /๊ทผ๋ฐ, /help โ†’ /๋„์›€, /compact โ†’ /์••์ถ•",
5
5
  "main": "./index.js",
6
6
  "bin": {