Communitygithub.com

anisfakename/dotfiles-coach

๐Ÿ›  ์…ธ ๊ธฐ๋ก์„ ๋ถ„์„ํ•˜์—ฌ ์Šค๋งˆํŠธ ๋ณ„์นญ๊ณผ ์•ˆ์ „ ๊ธฐ๋Šฅ์„ GitHub Copilot CLI๋กœ ์ƒ์„ฑ, ์…ธ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ž๋™ํ™”ํ•˜์„ธ์š”.

dotfiles-coach๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์ด ์Šคํ‚ฌ์€ ์…ธ ์‚ฌ์šฉ ๊ธฐ๋ก์„ ๋ถ„์„ํ•˜์—ฌ ๋ฐ˜๋ณต์ ์ธ ๋ช…๋ น์–ด๋ฅผ ์ž๋™์œผ๋กœ ์‹๋ณ„ํ•˜๊ณ , ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์Šค๋งˆํŠธ ๋ณ„์นญ(alias)์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์•ˆ์ „ ์žฅ์น˜(safety guard)๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ณต์žกํ•œ `docker` ๋ช…๋ น์–ด๋ฅผ ์งง๊ณ  ๊ธฐ์–ตํ•˜๊ธฐ ์‰ฌ์šด ๋ณ„์นญ์œผ๋กœ ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜, ์œ„ํ—˜ํ•œ ๋ช…๋ น์–ด(`rm -rf`, `shutdown` ๋“ฑ) ์‹คํ–‰ ์ „์— ํ™•์ธ ๋ฉ”์‹œ์ง€๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šคํ‚ฌ์€ GitHub Copilot CLI์™€ ์—ฐ๋™ํ•˜์—ฌ ์ž์—ฐ์–ด ๊ธฐ๋ฐ˜์˜ ์ œ์•ˆ์„ ํ™œ์šฉํ•˜๋ฉฐ, `bash`, `zsh`, `fish` ๋“ฑ ์ฃผ์š” ์…ธ ํ™˜๊ฒฝ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋‚˜ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๊ณ  ์‹ค์ˆ˜๋ฅผ ์ค„์ด๋Š” ๋ฐ ์œ ์šฉํ•˜๋ฉฐ, Copilot CLI๊ฐ€ ์„ค์น˜๋œ ํ™˜๊ฒฝ์—์„œ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์„ค์ • ํŒŒ์ผ(`.bashrc`, `.zshrc` ๋“ฑ)์„ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž ํ™•์ธ ํ›„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด, ์•ˆ์ „ํ•˜๊ฒŒ ๊ธฐ์กด dotfiles์™€ ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค.

์ง€์› ๋Œ€์ƒ~Claude Code~Codex CLI~Cursor
npx skills add anisfakename/dotfiles-coach

์ฆ๊ฒจ ์‚ฌ์šฉํ•˜๋Š” AI์—๊ฒŒ ๋ฌผ์–ด๋ณด๊ธฐ

์ด ์—์ด์ „ํŠธ ์Šคํ‚ฌ์ด ๋ฏธ๋ฆฌ ๋กœ๋“œ๋œ ์ƒˆ ์ฑ„ํŒ…์„ ์—ฝ๋‹ˆ๋‹ค.

๋ฌธ์„œ

dotfiles-coach์€(๋Š”) ๋ฌด์—‡์„ ํ•˜๋‚˜์š”?

๐Ÿ›  ์…ธ ๊ธฐ๋ก์„ ๋ถ„์„ํ•˜์—ฌ ์Šค๋งˆํŠธ ๋ณ„์นญ๊ณผ ์•ˆ์ „ ๊ธฐ๋Šฅ์„ GitHub Copilot CLI๋กœ ์ƒ์„ฑ, ์…ธ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ž๋™ํ™”ํ•˜์„ธ์š”.

๊ฐœ์š”

dotfiles-coach๋Š” ์‚ฌ์šฉ์ž์˜ ์…ธ ๋ช…๋ น์–ด ๊ธฐ๋ก(์˜ˆ: .bash_history, .zhistory)์„ ๋ถ„์„ํ•˜์—ฌ ๋ฐ˜๋ณต์ ์ด๊ฑฐ๋‚˜ ์œ„ํ—˜ํ•œ ๋ช…๋ น์–ด ํŒจํ„ด์„ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ GitHub Copilot CLI๋ฅผ ํ™œ์šฉํ•ด ๋‹ค์Œ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

  • ์Šค๋งˆํŠธ ๋ณ„์นญ: ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ธด ๋ช…๋ น์–ด๋ฅผ ์งง์€ ๋ณ„์นญ์œผ๋กœ ๋“ฑ๋ก
  • ์•ˆ์ „ ์žฅ์น˜: ์œ„ํ—˜ ๋ช…๋ น์–ด ์‹คํ–‰ ์ „ ํ™•์ธ ๋ฉ”์‹œ์ง€ ์ถ”๊ฐ€ (์˜ˆ: rm -rf โ†’ rm -rf --interactive)
  • ์›Œํฌํ”Œ๋กœ์šฐ ์ตœ์ ํ™”: ์—ฌ๋Ÿฌ ๋‹จ๊ณ„ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋กœ ๊ฒฐํ•ฉ

์ง€์› ํ”Œ๋žซํผ

  • GitHub Copilot CLI
  • ์…ธ: bash, zsh, fish
  • ์šด์˜์ฒด์ œ: macOS, Linux, WSL

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  1. ํ„ฐ๋ฏธ๋„์—์„œ copilot ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  2. what-the-shell ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์งˆ๋ฌธํ•ฉ๋‹ˆ๋‹ค:
    • "Analyze my shell history and suggest 5 new aliases"
    • "Add safety confirmation to dangerous commands"
    • "Optimize my docker workflow with aliases"
  4. ์ œ์•ˆ๋œ ๋ณ„์นญ์„ ~/.zshrc ๋˜๋Š” ~/.bashrc์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

# ์‚ฌ์šฉ์ž ์งˆ๋ฌธ
$ copilot what-the-shell? Analyze my last 50 commands for alias opportunities

# Copilot CLI ์‘๋‹ต (์˜ˆ์‹œ)
๐Ÿš€ Found 3 repeat patterns:
1. `git add . && git commit -m "update" && git push` โ†’ alias `gup`
2. `docker compose up -d --build` โ†’ alias `dcup`
3. `kubectl get pods --all-namespaces` โ†’ alias `kgp`

# ์•ˆ์ „ ์žฅ์น˜ ์ œ์•ˆ
โš ๏ธ Dangerous command `rm -rf` detected. Suggested alias: `rmrf` with confirm.

ํ™˜๊ฒฝ ๋ณ€์ˆ˜

๋ณ€์ˆ˜๋ช…์„ค๋ช…๊ธฐ๋ณธ๊ฐ’
COPILOT_HISTORY_FILE๋ถ„์„ํ•  history ํŒŒ์ผ ๊ฒฝ๋กœ~/.zhistory
COPILOT_ALIAS_FILE๋ณ„์นญ์„ ์ €์žฅํ•  ์„ค์ • ํŒŒ์ผ~/.zshrc
COPILOT_SAFE_MODE์•ˆ์ „ ์žฅ์น˜ ์ž๋™ ์ ์šฉ ์—ฌ๋ถ€false

์ฐธ๊ณ  ๋งํฌ

๊ด€๋ จ ์Šคํ‚ฌ