Claude Code๋ฅผ ๊ฝค ์˜ค๋ž˜ ์จ๋„ ์ด์ƒํ•˜๊ฒŒ ๋Š˜ ๋น„์Šทํ•œ ๋ฐ์„œ ๋ง‰ํžŒ๋‹ค. ํ”„๋กฌํ”„ํŠธ๋Š” ์ž˜ ์ผ๋Š”๋ฐ ์„ธ์…˜์ด ๊ผฌ์ด๊ณ , ๊ธด ์ž‘์—…์€ ์ค‘๊ฐ„์— ํ๋ฆ„์ด ๋Š๊ธฐ๊ณ , ๋ฐ˜๋ณต ์Šน์ธ๊ณผ ๋ฐ˜๋ณต ์„ค๋ช… ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ์ค„์–ด๋“ ๋‹ค. ๊ทธ๋ž˜์„œ ์‹ค์ „์—์„œ ์ค‘์š”ํ•œ ๊ฑด โ€œ๋” ๋˜‘๋˜‘ํ•œ ํ•œ ์ค„ ํ”„๋กฌํ”„ํŠธโ€๋ณด๋‹ค ์„ธ์…˜์„ ์—ฌ๋Š” ๋ฐฉ์‹, ๊ฒ€์ฆ์„ ๋ถ™์ด๋Š” ๋ฐฉ์‹, ๊ทœ์น™์„ ๋ฐ–์œผ๋กœ ๊บผ๋‚ด๋Š” ๋ฐฉ์‹์ด๋‹ค.

Builder.io์˜ 50 Claude Code Tips and Best Practices For Daily Use๋Š” ์›๋ฌธ 50๊ฐœ ์ „์ฒด๋ฅผ ๋‹ด๊ณ  ์žˆ๊ณ , GeekNews ํ๋ ˆ์ด์…˜๊ณผ Vishwas์˜ X ๊ณต์œ ๋Š” ์ด ๊ธ€์ด ์‹ค์ œ ์‚ฌ์šฉ์ž ์‚ฌ์ด์—์„œ ์–ด๋–ค ํฌ์ธํŠธ๋กœ ํ™•์‚ฐ๋˜๋Š”์ง€ ๋ณด์—ฌ์ค€๋‹ค. X ํฌ์ŠคํŠธ๋Š” ๋น„๋กœ๊ทธ์ธ ํ™˜๊ฒฝ์—์„œ ๋ณธ๋ฌธ ์ „์ฒด๋ฅผ ์ฝ๊ธฐ ์–ด๋ ค์› ์ง€๋งŒ, ํŽ˜์ด์ง€ ํƒ€์ดํ‹€ ๊ธฐ์ค€์œผ๋กœ ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋„๋ฆฌ ๊ณต์œ ํ•œ ๋งํฌ์ž„์€ ํ™•์ธ๋๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋‹จ์ˆœ ๋ฒˆ์—ญ์— ๊ทธ์น˜์ง€ ์•Š๊ณ , ์–ธ์ œ ์“ฐ๋Š”์ง€, ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋Š”์ง€, ์–ด๋””์„œ ์‚ฌ๊ณ ๊ฐ€ ๋‚˜๋Š”์ง€๊นŒ์ง€ ์‹ค์ „ ๊ธฐ์ค€์œผ๋กœ ํ’€์–ด๊ฐ„๋‹ค.

๊ณต์‹ ๋ฌธ์„œ ๊ธฐ์ค€ ํฐ ๋ผˆ๋Œ€๋Š” Overview, Best practices, CLI reference, Sub-agents, Settings, Security, Remote Control์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. Builder ๊ธ€์€ ์ด ๊ณต์‹ ๊ธฐ๋Šฅ๋“ค์„ ์‹ค์ œ ์‚ฌ์šฉ ์Šต๊ด€์œผ๋กœ ๋ฐ”๊พธ๋Š” ๋ฐ ๊ฐ•์ ์ด ์žˆ๋‹ค.

flowchart LR
  A[๋น ๋ฅธ ์‹œ์ž‘] --> B[๊ฒ€์ฆ ์ž๋™ํ™”]
  B --> C[์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ]
  C --> D[๋ณ‘๋ ฌ ์‹คํ–‰]
  D --> E[์•ˆ์ „์žฅ์น˜]
  E --> F[๋ฐ˜๋ณต ์ž‘์—… ์‹œ์Šคํ…œํ™”]
  F --> G[๋ฆฌ๋ทฐ ํ’ˆ์งˆ ํ–ฅ์ƒ]
  G --> H[์ง€์† ๊ฐ€๋Šฅํ•œ ์šด์˜ ์Šต๊ด€]

๐Ÿง  ์น ํŒ ์น˜ํŠธ์‹œํŠธ

  • Claude Code ์‹ค๋ ฅ์€ ํ”„๋กฌํ”„ํŠธ ์žฌ์ฃผ๋ณด๋‹ค ์šด์˜ ์Šต๊ด€์—์„œ ๊ฐˆ๋ฆฐ๋‹ค.
  • ํ…Œ์ŠคํŠธ, ๋ฆฐํŠธ, ํ›…์„ ๋ถ™์ด๋ฉด โ€œ์ž˜๋˜๊ธธ ๋ฐ”๋ผ๋Š” ์‚ฌ์šฉโ€์—์„œ โ€œ๊ฒ€์ฆ๋˜๋Š” ์‚ฌ์šฉโ€์œผ๋กœ ๋ฐ”๋€๋‹ค.
  • ์„ธ์…˜์€ ์˜ค๋ž˜ ๋Œ์ˆ˜๋ก ์ข‹์•„์ง€๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ํ•„์š”ํ•  ๋•Œ ๋น„์šฐ๊ณ  ๋ถ„๋ฆฌํ• ์ˆ˜๋ก ์ข‹์•„์ง„๋‹ค.
  • ํฐ ์ž‘์—…์€ ํ•œ ์„ธ์…˜์— ๋ชฐ์ง€ ๋ง๊ณ  worktreeยทsubagentยทreview ์„ธ์…˜์œผ๋กœ ์ชผ๊ฐœ์•ผ ํ•œ๋‹ค.
  • ์ธ์ฆ, ๊ฒฐ์ œ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์€ ๋๊นŒ์ง€ ์‚ฌ๋žŒ์ด ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

์ด 50๊ฐ€์ง€๋ฅผ ์ฝ๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•

์ด ๊ธ€์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ํ•œ ๋ฒˆ์— ์™ธ์šธ ํ•„์š”๋Š” ์—†๋‹ค. ๋Œ€์‹  ์•„๋ž˜ ์ˆœ์„œ๋กœ ๋ณด๋ฉด ๋น ๋ฅด๋‹ค.

  1. ์˜ค๋Š˜ ๋ฐ”๋กœ ์“ธ ๊ฒƒ: 1, 2, 3, 4, 12, 13, 25, 33
  2. ์ด๋ฒˆ ์ฃผ ์•ˆ์— ๋ถ™์ผ ๊ฒƒ: 15, 19, 21, 28, 38, 39, 40
  3. ์šด์˜์ด ์ปค์กŒ์„ ๋•Œ ์“ธ ๊ฒƒ: 20, 35, 36, 41, 45, 49
  4. ์žฌ๋ฏธ์ง€๋งŒ ์€๊ทผ ์ค‘์š”ํ•œ ๊ฒƒ: 47, 48, 50

์•„๋ž˜๋ถ€ํ„ฐ๋Š” 50๊ฐœ๋ฅผ ํ•˜๋‚˜๋„ ๋นผ์ง€ ์•Š๊ณ , ์‹ค์ „์—์„œ ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ˆœ์„œ๋Œ€๋กœ ํ’€์–ด๊ฐ„๋‹ค.

๋จผ์ € ๋„์ž…ํ•˜๋ฉด ์ข‹์€ 10๋ถ„ ๋ฃจํ‹ด

์•„์ง Claude Code๋ฅผ โ€œ๊ฐ€๋” ๋น ๋ฅธ ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐโ€ ์ •๋„๋กœ ์“ฐ๊ณ  ์žˆ๋‹ค๋ฉด, ์•„๋ž˜ 10๋ถ„ ๋ฃจํ‹ด๋งŒ ๋จผ์ € ์ ์šฉํ•ด๋„ ์ฒด๊ฐ์ด ๋‹ฌ๋ผ์ง„๋‹ค.

  1. alias ํ•˜๋‚˜ ๋งŒ๋“ค๊ธฐ
  2. ํ…Œ์ŠคํŠธ ๋ช…๋ น์„ ํ”„๋กฌํ”„ํŠธ์— ๊ฐ™์ด ์“ฐ๊ธฐ
  3. ์„ธ์…˜์ด ๋‹ค๋ฅธ ์ž‘์—…์œผ๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ /clear ํ•˜๊ธฐ
  4. ๋ฐ˜๋ณต ์Šน์ธ ๋ฐ›๋Š” ๋ช…๋ น์„ /permissions๋กœ ์ •๋ฆฌํ•˜๊ธฐ
  5. CLAUDE.md ์ดˆ์•ˆ ๋งŒ๋“ค๋˜ ์ ˆ๋ฐ˜ ์ด์ƒ ์ง€์šฐ๊ธฐ
  6. PostToolUse ํ›…์œผ๋กœ ํฌ๋งคํ„ฐ ์ž๋™ํ™”ํ•˜๊ธฐ
  7. PreToolUse ํ›…์œผ๋กœ ์œ„ํ—˜ ๋ช…๋ น ์ฐจ๋‹จํ•˜๊ธฐ
flowchart LR
  A[Claude Code ์‹œ์ž‘] --> B{์ž‘์—…์ด ์ž‘๋‚˜?}
  B -- ์˜ˆ --> C[๋ฐ”๋กœ ์‹คํ–‰]
  B -- ์•„๋‹ˆ์˜ค --> D[Plan Mode ๋˜๋Š” ์ธํ„ฐ๋ทฐ๋กœ ์ŠคํŽ™ ์ •๋ฆฌ]
  C --> E[ํ…Œ์ŠคํŠธ/๋ฆฐํŠธ ๋ถ™์ด๊ธฐ]
  D --> E
  E --> F{์กฐ์‚ฌ๋Ÿ‰์ด ํฐ๊ฐ€?}
  F -- ์˜ˆ --> G[subagent ๋˜๋Š” worktree ๋ถ„๋ฆฌ]
  F -- ์•„๋‹ˆ์˜ค --> H[๋ฉ”์ธ ์„ธ์…˜ ์ง„ํ–‰]
  G --> I[๋ฆฌ๋ทฐ ์„ธ์…˜์—์„œ ์žฌ๊ฒ€ํ† ]
  H --> I
  I --> J[ํ›…๊ณผ ์ˆ˜๋™ ๊ฒ€ํ† ๋กœ ๋งˆ๊ฐ]

๊ณต์‹ Best Practices ๋ฌธ์„œ๊ฐ€ ๋งํ•˜๋Š” ์ง„์งœ ์ค‘์‹ฌ์ถ•

์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๊ธฐ์—๋Š” Claude Code๊ฐ€ โ€œ๋˜‘๋˜‘ํ•œ ์ฝ”๋”ฉ ์ฑ—๋ด‡โ€์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ณต์‹ ๋ฌธ์„œ๊ฐ€ ๋ฐ˜๋ณตํ•ด์„œ ๊ฐ•์กฐํ•˜๋Š” ํ•ต์‹ฌ์€ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. Claude Code๋Š” ์งˆ๋ฌธ์„ ๋ฐ›๊ณ  ๋‹ต๋งŒ ์ฃผ๋Š” ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋ผ, ํŒŒ์ผ์„ ์ฝ๊ณ , ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ , ๊ณ„ํš์„ ์„ธ์šฐ๊ณ , ์ง์ ‘ ์ˆ˜์ •๊นŒ์ง€ ํ•ด ๋‚˜๊ฐ€๋Š” agentic coding environment๋ผ๋Š” ์ ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์„ฑ๋Šฅ ์ฐจ์ด๋Š” ๋ชจ๋ธ IQ๋ณด๋‹ค๋„ ์ž‘์—… ํ™˜๊ฒฝ๊ณผ ์šด์˜ ๋ฃจํ”„๋ฅผ ์–ด๋–ป๊ฒŒ ์งœ๋А๋ƒ์—์„œ ํฌ๊ฒŒ ๋‚œ๋‹ค.

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ณต์‹ ๋ฉ”์‹œ์ง€๋Š” ํ•˜๋‚˜๋‹ค. ์ปจํ…์ŠคํŠธ ์ฐฝ์€ ๊ฐ€์žฅ ๋จผ์ € ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ž์›์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ๋Œ€ํ™”, ์ฝ์€ ํŒŒ์ผ, ์‹คํ–‰ํ•œ ๋ช…๋ น ์ถœ๋ ฅ์ด ์ „๋ถ€ ์—ฌ๊ธฐ์— ์Œ“์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด Claude Code์˜ ์ปจํ…์ŠคํŠธ๋Š” ๋ฐฐ๋‚ญ๊ณผ ๋น„์Šทํ•˜๋‹ค. ํ•„์š”ํ•œ ์žฅ๋น„๋งŒ ๋„ฃ์œผ๋ฉด ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์›€์ง์ด๋Š”๋ฐ, ์•ˆ ์จ๋„ ๋˜๋Š” ์ง๊นŒ์ง€ ๋‹ค ๋„ฃ์œผ๋ฉด ๊ฑท๋Š” ์†๋„๋„ ๋А๋ ค์ง€๊ณ  ํ•„์š”ํ•œ ๊ฑธ ๊บผ๋‚ด๋Š” ๋ฐ๋„ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. ๊ทธ๋ž˜์„œ /clear, /compact, subagent, @ํŒŒ์ผ์ฐธ์กฐ, Plan Mode๊ฐ€ ๋ชจ๋‘ ๊ฒฐ๊ตญ์€ ๋ฐฐ๋‚ญ ๊ด€๋ฆฌ ๊ธฐ์ˆ ๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค.

๊ณต์‹ ๋ฌธ์„œ์˜ ๊ธฐ๋ณธ ๋ฃจํ”„๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ์ดํ•ดํ•˜๋ฉด ์‰ฝ๋‹ค.

flowchart LR
  A[Explore
  ๋จผ์ € ์ฝ๊ณ  ์ดํ•ด] --> B[Plan
  ๊ตฌํ˜„ ๊ณ„ํš ์ž‘์„ฑ]
  B --> C[Implement
  ์ฝ”๋“œ ๋ณ€๊ฒฝ + ๊ฒ€์ฆ]
  C --> D[Commit
  ์ปค๋ฐ‹/PR ์ •๋ฆฌ]

๊ณต์‹ ๋ฌธ์„œ๊ฐ€ ๊ถŒ์žฅํ•˜๋Š” 4๋‹จ๊ณ„ ํ๋ฆ„์„ ์‹ค์ œ๋กœ ์“ฐ๋ฉด ๋Œ€๋žต ์ด๋Ÿฐ ๋А๋‚Œ์ด๋‹ค.

Explore: ๋จผ์ € ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ

read /src/auth and understand how we handle sessions and login.
also look at how we manage environment variables for secrets.

Plan: ์ˆ˜์ • ๊ณ„ํš๋ถ€ํ„ฐ ๋งŒ๋“ค๊ธฐ

I want to add Google OAuth. What files need to change?
What's the session flow? Create a plan.

Implement: ๊ณ„ํš ๊ธฐ์ค€์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ๊ฒ€์ฆํ•˜๊ธฐ

implement the OAuth flow from your plan.
write tests for the callback handler,
run the test suite and fix any failures.

Commit: ๋งˆ๊ฐ ์ •๋ฆฌํ•˜๊ธฐ

commit with a descriptive message and open a PR

์ด 4๋‹จ๊ณ„๋Š” ๊ผญ ํฐ ๊ธฐ๋Šฅ์—๋งŒ ์“ฐ๋Š” ๊ฒŒ ์•„๋‹ˆ๋‹ค. ์ž‘์—… ๋ฒ”์œ„๊ฐ€ ๋ถˆ๋ช…ํ™•ํ• ์ˆ˜๋ก Explore์™€ Plan์˜ ๋น„์ค‘์„ ๋Š˜๋ฆฌ๊ณ , ๋ฒ”์œ„๊ฐ€ ์•„์ฃผ ์ž‘์œผ๋ฉด Explore/Plan์„ ์ค„์ด๋Š” ์‹์œผ๋กœ ํƒ„๋ ฅ์ ์œผ๋กœ ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ๋„ โ€œํ•œ ๋ฌธ์žฅ diff๋กœ ์„ค๋ช… ๊ฐ€๋Šฅํ•œ ์ž‘์—…์ด๋ฉด ๊ตณ์ด ๊ณ„ํš์„ ๊ธธ๊ฒŒ ์„ธ์šฐ์ง€ ์•Š์•„๋„ ๋œ๋‹คโ€๊ณ  ๋งํ•œ๋‹ค.

๊ณต์‹ ๋ฌธ์„œ ๊ธฐ์ค€, ๊ผญ ๊ธฐ์–ตํ•ด์•ผ ํ•  6๊ฐœ ์šด์˜ ์›์น™

1) ๊ฒ€์ฆ ๋ฃจํ”„๊ฐ€ ์—†์œผ๋ฉด ๊ฒฐ๊ตญ ์‚ฌ๋žŒ์ด ๋ชจ๋“  ์‹ค์ˆ˜๋ฅผ ์žก๊ฒŒ ๋œ๋‹ค

๊ณต์‹ ๋ฌธ์„œ๋Š” โ€œGive Claude a way to verify its workโ€๋ฅผ ๊ฐ€์žฅ ๋†’์€ ๋ ˆ๋ฒ„๋ฆฌ์ง€ ํ–‰๋™์œผ๋กœ ๋ณธ๋‹ค. ํ…Œ์ŠคํŠธ, ์Šคํฌ๋ฆฐ์ƒท ๋น„๊ต, ๋นŒ๋“œ ์„ฑ๊ณต, ๊ธฐ๋Œ€ ์ถœ๋ ฅ ํ™•์ธ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋ถ™์–ด์•ผ ํ•œ๋‹ค.

2) ์—ฐ๊ตฌ์™€ ๊ตฌํ˜„์„ ๋ถ„๋ฆฌํ•ด์•ผ ์—‰๋šฑํ•œ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค

๋ฐ”๋กœ ์ฝ”๋“œ๋ฅผ ์น˜๊ฒŒ ํ•˜๋ฉด Claude๋„ ์‚ฌ๋žŒ์ฒ˜๋Ÿผ โ€œ์ •๋‹ต์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์˜ค๋‹ตโ€์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. Explore โ†’ Plan โ†’ Implement ๋ถ„๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋‹ค.

3) ๊ตฌ์ฒด์  ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๊ฒฐ๊ตญ ์ˆ˜์ • ํšŸ์ˆ˜๋ฅผ ์ค„์ธ๋‹ค

์–ด๋–ค ํŒŒ์ผ์„ ๋ณด๋ผ๊ณ  ํ• ์ง€, ์–ด๋–ค ์—ฃ์ง€ ์ผ€์ด์Šค๋ฅผ ๋‹ค๋ฃฐ์ง€, ์–ด๋–ค ํ…Œ์ŠคํŠธ๋ฅผ ์„ ํ˜ธํ•˜๋Š”์ง€๋ฅผ ๋จผ์ € ๋ช…์‹œํ•˜๋ฉด ๋˜๋Œ๋ฆผ์ด ํฌ๊ฒŒ ์ค„์–ด๋“ ๋‹ค.

4) CLAUDE.md๋Š” ์งง๊ณ  ๊ฐ•ํ•ด์•ผ ํ•œ๋‹ค

๊ณต์‹ ๋ฌธ์„œ๋Š” CLAUDE.md๋ฅผ ์งง๊ณ  ์‚ฌ๋žŒ ์ฝ๊ธฐ ์‰ฌ์šด ๋ฌธ์„œ๋กœ ์œ ์ง€ํ•˜๋ผ๊ณ  ๊ถŒํ•œ๋‹ค. ๊ธธ์–ด์งˆ์ˆ˜๋ก ์ค‘์š”ํ•œ ๊ทœ์น™์ด ๋ฌปํžŒ๋‹ค.

5) ๊ฐ•์ œํ•  ๊ฒƒ์€ Hook์œผ๋กœ, ๊ถŒ๊ณ ํ•  ๊ฒƒ์€ CLAUDE.md๋กœ ๋‚˜๋ˆ ์•ผ ํ•œ๋‹ค

๋งค๋ฒˆ ๋ฐ˜๋“œ์‹œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ํฌ๋งคํŒ…ยท๋ฆฐํŒ…ยท๋ณด์•ˆ ์ฐจ๋‹จ์€ Hook์ด ๋งž๊ณ , ํ˜‘์—… ๊ทœ์น™์ด๋‚˜ ์Šคํƒ€์ผ ์„ ํ˜ธ๋Š” CLAUDE.md๊ฐ€ ๋งž๋‹ค.

6) ์„ธ์…˜์€ ์˜ค๋ž˜ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ž˜ ๋Š๊ณ  ์ž˜ ์ด์–ด๋ถ™์ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค

Esc, /rewind, /clear, /compact, claude --continue, claude --resume์€ ๋ชจ๋‘ โ€œ์„ธ์…˜์„ ๊ธธ๊ฒŒ ๋Œ๊ธฐ ์œ„ํ•œ ๋„๊ตฌโ€๊ฐ€ ์•„๋‹ˆ๋ผ โ€œ์„ธ์…˜์„ ๊ฑด๊ฐ•ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๋„๊ตฌโ€๋‹ค.

๋ฐ”๋กœ ๋ณต๋ถ™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต์‹ ๋ฌธ์„œํ˜• ์šด์˜ ํ…œํ”Œ๋ฆฟ

์•„๋ž˜ ํ…œํ”Œ๋ฆฟ์€ ๊ณต์‹ Best Practices ๋ฌธ์„œ์˜ ๋ฐฉํ–ฅ์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜์˜ํ•œ ์ตœ์†Œ ์˜ˆ์‹œ๋‹ค.

1) ์ตœ์†Œํ˜• CLAUDE.md ์˜ˆ์‹œ

# Code style
- Use ES modules, not CommonJS
- Prefer existing project patterns over introducing new libraries
 
# Workflow
- After a set of code changes, run typecheck and the smallest relevant tests
- For UI work, provide before/after screenshots when possible
- Never modify migration files unless explicitly asked
 
# Safety
- Ask for confirmation before destructive database operations
- Treat auth, billing, and data deletion paths as human-review-required

2) API ๊ทœ์น™์šฉ skill ์˜ˆ์‹œ

---
name: api-conventions
description: REST API conventions for our services
---
# API Conventions
- Use kebab-case for URL paths
- Use camelCase for JSON fields
- Add pagination to list endpoints
- Version APIs in the path (/v1, /v2)

3) issue ํ•ด๊ฒฐ์šฉ workflow skill ์˜ˆ์‹œ

---
name: fix-issue
description: Fix a GitHub issue
disable-model-invocation: true
---
Analyze and fix the GitHub issue: $ARGUMENTS.
 
1. Read the issue with gh issue view
2. Identify affected files
3. Reproduce with a failing test
4. Implement the fix
5. Run tests and lint
6. Commit with a descriptive message
7. Open a PR

4) PostToolUse ํฌ๋งคํŒ… Hook ์˜ˆ์‹œ

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "npm exec prettier --write \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
          }
        ]
      }
    ]
  }
}

5) PreToolUse ์œ„ํ—˜ ๋ช…๋ น ์ฐจ๋‹จ Hook ์˜ˆ์‹œ

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "type": "command",
        "command": "if echo \"$TOOL_INPUT\" | grep -qE 'rm -rf|drop table|truncate'; then echo 'BLOCKED: destructive command' >&2; exit 2; fi"
      }
    ]
  }
}

6) ๋ณด์•ˆ ๋ฆฌ๋ทฐ์šฉ custom subagent ์˜ˆ์‹œ

---
name: security-reviewer
description: Reviews code for security vulnerabilities
tools: Read, Grep, Glob, Bash
model: opus
---
You are a senior security engineer. Review code for:
- Injection vulnerabilities
- Authentication and authorization flaws
- Secrets in code
- Insecure data handling
 
Provide exact file references and suggested fixes.

์ด ํ…œํ”Œ๋ฆฟ๋“ค์˜ ๊ณตํ†ต์ ์€ ํ•˜๋‚˜๋‹ค. Claude์—๊ฒŒ ๋” ๋งŽ์ด ์‹œํ‚ค๋Š” ๊ฒƒ๋ณด๋‹ค, ๋ฌด์—‡์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ง€ํ‚ค๊ฒŒ ํ• ์ง€ ์‹œ์Šคํ…œ ์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด๋‹ค.

1. cc alias๋ฅผ ๋งŒ๋“ค์–ด ์‹œ์ž‘ ์†๋„๋ฅผ ์ค„์ด๊ธฐ

๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํŒ์ด์ง€๋งŒ, ๋งค์ผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์‹œ์ž‘ ๋น„์šฉ์„ ์ค„์ด๋Š” ํšจ๊ณผ๊ฐ€ ํฌ๋‹ค. ๊ธ€์—์„œ๋Š” alias cc='claude --dangerously-skip-permissions'๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค์—ˆ์ง€๋งŒ, ์ด ์„ค์ •์€ ์ •๋ง๋กœ ๊ฐ•๋ ฅํ•˜๋‹ค. ์ด๋ฆ„์ด ๋ฌด์„ญ๊ฒŒ ๋ถ™์€ ์ด์œ ๊ฐ€ ์žˆ๊ณ , ๊ถŒํ•œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ฑฐ์˜ ๊ฑด๋„ˆ๋›ฐ๊ฒŒ ๋งŒ๋“œ๋Š” ์šด์˜ ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

alias cc='claude --dangerously-skip-permissions'

์ฒ˜์Œ ์“ฐ๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋ฌด์กฐ๊ฑด ์ด ๋ณ„์นญ๋ถ€ํ„ฐ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค, alias cc='claude'์ฒ˜๋Ÿผ ์•ˆ์ „ํ•œ ๋ณ„์นญ๋ถ€ํ„ฐ ๋‘๊ณ  ๊ฐ์„ ์ตํžˆ๋Š” ํŽธ์ด ๋‚ซ๋‹ค. ์ดํ›„ ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„, ๊ถŒํ•œ ๋ฒ”์œ„, ํ›…, ์ƒŒ๋“œ๋ฐ•์Šค๊ฐ€ ์ •๋ฆฌ๋์„ ๋•Œ๋งŒ ๊ณต๊ฒฉ์ ์ธ ๋ณ„์นญ์œผ๋กœ ๊ฐ€๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค. ๊ด€๋ จ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์€ CLI reference, ์šด์˜ ์›์น™์€ Best practices์—์„œ ํ•จ๊ป˜ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

์‹คํ–‰ ์˜ˆ์‹œ

  • Before: claude ์ž…๋ ฅ โ†’ ๊ถŒํ•œ ์Šน์ธ ๋ฐ˜๋ณต โ†’ ์ง‘์ค‘๋ ฅ ๋Š๊น€
  • After: cc ์ž…๋ ฅ โ†’ ์„ธ์…˜ ์ฆ‰์‹œ ์‹œ์ž‘ โ†’ ์Šน์ธ ์ •์ฑ…์€ ๋ณ„๋„ ๊ด€๋ฆฌ

๊ฒ€์ฆ ํฌ์ธํŠธ

  • ํ•˜๋ฃจ์— ๋ช‡ ๋ฒˆ Claude๋ฅผ ์—ฌ๋Š”์ง€ ์„ธ์–ด๋ณด๊ณ , ์‹œ์ž‘ ๋™์ž‘์ด ์ค„์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ๊ถŒํ•œ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์ค„์–ด๋“  ๋Œ€์‹  ๋ถˆ์•ˆ๊ฐ์ด ์ปค์กŒ๋‹ค๋ฉด alias๋ณด๋‹ค /permissions์™€ /sandbox๋ฅผ ๋จผ์ € ์ •๋น„ํ•˜๋Š” ์ชฝ์ด ๋งž๋‹ค.

2. ! ์ ‘๋‘์‚ฌ๋กœ bash ๋ช…๋ น์„ ์ธ๋ผ์ธ ์‹คํ–‰ํ•˜๊ธฐ

!git status, !npm test์ฒ˜๋Ÿผ ์•ž์— !๋ฅผ ๋ถ™์ด๋ฉด Claude์—๊ฒŒ ์„ค๋ช…ํ•˜์ง€ ์•Š๊ณ  ๊ณง๋ฐ”๋กœ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ค‘์š”ํ•œ ์ ์€ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๊ณง๋ฐ”๋กœ ์ปจํ…์ŠคํŠธ ์•ˆ์— ๋“ค์–ด๊ฐ„๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Claude๊ฐ€ ๋‹ค์‹œ ์ƒํ™ฉ์„ ํŒŒ์•…ํ•˜๊ณ  ๋‹ค์Œ ํ–‰๋™์œผ๋กœ ์ด์–ด๊ฐ€๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค.

!git status
!npm test

์ด ๋ฐฉ์‹์€ โ€œ๋ช…๋ น ์‹คํ–‰ ์š”์ฒญ โ†’ Claude๊ฐ€ ํ•ด์„ โ†’ ๋‹ค์‹œ ์‹คํ–‰โ€์ด๋ผ๋Š” ํ•œ ๋‹จ๊ณ„๋ฅผ ์ค„์—ฌ์ค€๋‹ค. CLI๋ฅผ ์ด๋ฏธ ์•„๋Š” ์‚ฌ๋žŒ์ผ์ˆ˜๋ก ํšจ๊ณผ๊ฐ€ ํฌ๋‹ค. ๊ธฐ๋ณธ ์ธํ„ฐ๋ž™์…˜ ํ๋ฆ„์€ CLI reference์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹ค์ „ ํŒ

  • ๋น ๋ฅธ ์ƒํƒœ ํ™•์ธ์€ !๊ฐ€ ์ข‹๋‹ค.
  • ํŒŒ๊ดด ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ฑฐ๋‚˜ ์˜ต์…˜์ด ๊ธด ๋ช…๋ น์€ ์ง์ ‘ ์ฝ๊ณ  ์Šน์ธํ•˜๋Š” ํ๋ฆ„์ด ๋” ์•ˆ์ „ํ•˜๋‹ค.

3. Esc๋กœ ๋ฉˆ์ถ”๊ณ  Esc+Esc ๋˜๋Š” /rewind๋กœ ๋˜๊ฐ๊ธฐ

Claude Code๋ฅผ ์ž˜ ์“ฐ๋Š” ์‚ฌ๋žŒ์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ •๋‹ต ๊ฒฝ๋กœ๋งŒ ์ฐพ์ง€ ์•Š๋Š”๋‹ค. 40% ํ™•์‹ ์ธ ์‹œ๋„๋„ ํ•ด๋ณด๊ณ , ์•„๋‹ˆ๋ฉด ๋˜๊ฐ๋Š”๋‹ค. ์ด๊ฒŒ ์†๋„๋ฅผ ๋งŒ๋“ ๋‹ค.

Esc๋Š” ์ง€๊ธˆ ํ•˜๋˜ ์ผ์„ ๋ฉˆ์ถ”๊ฒŒ ํ•˜๊ณ , Esc+Esc ๋˜๋Š” /rewind๋Š” ์ฒดํฌํฌ์ธํŠธ ๊ธฐ์ค€์œผ๋กœ ์ฝ”๋“œยท๋Œ€ํ™”ยท๋‘˜ ๋‹ค ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ๋‹ค๋งŒ Builder ๊ธ€์ด ๊ฐ•์กฐํ•˜๋“ฏ bash ๋ช…๋ น์œผ๋กœ ์ผ์–ด๋‚œ ์™ธ๋ถ€ ์ƒํƒœ ๋ณ€ํ™”๋Š” ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ์ „๋ถ€ ๋ณต๊ตฌํ•ด์ฃผ์ง€ ๋ชปํ•œ๋‹ค. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, ์‹ค์ œ DB ๋ณ€๊ฒฝ, ๋ฐฐํฌ ๋ช…๋ น์€ ๋ณ„๋„๋‹ค.

์‹ค์ „ ์˜ˆ์‹œ

  • ์‹คํŒจ ์‚ฌ๋ก€: Claude๊ฐ€ ์ž˜๋ชป๋œ ๋ฆฌํŒฉํ„ฐ๋ง ๋ฐฉํ–ฅ์œผ๋กœ 10๋ถ„ ๋‹ฌ๋ ธ๋‹ค.
  • ๋Œ€์‘: Esc๋กœ ๋ฉˆ์ถค โ†’ /rewind โ†’ ์ฝ”๋“œ๋งŒ ๋ณต๊ตฌ โ†’ ๋” ์ •ํ™•ํ•œ ์กฐ๊ฑด์œผ๋กœ ์žฌ์‹œ์ž‘.

๊ฒ€์ฆ ํฌ์ธํŠธ

  • ๋˜๊ฐ๊ธฐ ์ „์— bash๋กœ ๋ฐ”๋€ ๊ฒƒ์ด ์—†๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • โ€œํ•œ ๋ฒˆ ์ž˜๋ชป ๊ฐ€๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค ๋‚ ๋ฆฐ๋‹คโ€๋Š” ๋ถ€๋‹ด์ด ์ค„์—ˆ๋Š”์ง€ ์ฒด๊ฐํ•ด๋ณธ๋‹ค.

4. Claude๊ฐ€ ์Šค์Šค๋กœ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ…Œ์ŠคํŠธ์™€ ๊ธฐ๋Œ€ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ™์ด ์ฃผ๊ธฐ

์ด ํŒ์€ ์ฒด๊ฐ ํšจ๊ณผ๊ฐ€ ๊ฐ€์žฅ ํฐ ์ถ•์ด๋‹ค. โ€œ๋ฆฌํŒฉํ„ฐ๋งํ•ดโ€๋ณด๋‹ค โ€œ๋ฆฌํŒฉํ„ฐ๋งํ•˜๊ณ  ํ…Œ์ŠคํŠธ๊นŒ์ง€ ๋Œ๋ ค์„œ ์‹คํŒจ๋ฅผ ๊ณ ์ณโ€๊ฐ€ ํ›จ์”ฌ ๊ฐ•ํ•˜๋‹ค. ๊ณต์‹ ์šด์˜ ๊ด€์ ์—์„œ๋„ Best practices๋Š” ์™„๋ฃŒ ์กฐ๊ฑด๊ณผ ๊ฒ€์ฆ ๋ฃจํ”„๋ฅผ ๋ช…ํ™•ํžˆ ์ฃผ๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณตํ•ด์„œ ๊ฐ•์กฐํ•œ๋‹ค.

auth ๋ฏธ๋“ค์›จ์–ด๋ฅผ JWT ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฆฌํŒฉํ„ฐ๋งํ•ด.
๋ณ€๊ฒฝ ํ›„ ๊ธฐ์กด ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ์‹คํ–‰ํ•ด.
์‹คํŒจ๊ฐ€ ๋‚˜๋ฉด ์ „๋ถ€ ์ˆ˜์ •ํ•œ ๋’ค ๋๋‚ฌ๋‹ค๊ณ  ๋งํ•ด.

UI๋ผ๋ฉด Playwright ๊ฐ™์€ ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ ๊ฒ€์ฆ๊นŒ์ง€ ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค. ์ด๋•Œ๋Š” MCP ๊ฐœ๋…์ด ํ•จ๊ป˜ ๋“ค์–ด์˜ค๋ฉฐ, ๋ฐฐ๊ฒฝ ์ดํ•ด์—๋Š” MCP introduction์ด ๋„์›€์ด ๋œ๋‹ค.

๋ฏธ๋‹ˆ ์‚ฌ๋ก€ 1

  • Before: โ€œ๋ฒ„๊ทธ ๊ณ ์ณ์ค˜โ€ โ†’ ๊ณ ์นœ ๋“ฏ ๋ณด์˜€์ง€๋งŒ ํšŒ๊ท€ ๋ฐœ์ƒ
  • After: โ€œ๋ฒ„๊ทธ ๊ณ ์น˜๊ณ  npm test์™€ npm run lint๊นŒ์ง€ ํ†ต๊ณผ์‹œ์ผœโ€ โ†’ ์ค‘๊ฐ„ ์‹คํŒจ๋ฅผ Claude๊ฐ€ ์Šค์Šค๋กœ ์žก์Œ

๊ฒ€์ฆ ํฌ์ธํŠธ

  • ๋งˆ์ง€๋ง‰ ๋‹ต๋ณ€์— โ€œ๋ฌด์—‡์„ ๊ฒ€์ฆํ–ˆ๊ณ  ์–ด๋–ค ๊ฒฐ๊ณผ์˜€๋Š”์ง€โ€๊ฐ€ ํฌํ•จ๋˜๋Š”์ง€ ๋ณธ๋‹ค.
  • ํ…Œ์ŠคํŠธ๊ฐ€ ์—†๋‹ค๋ฉด ์ตœ์†Œํ•œ ์ˆ˜๋™ ๊ฒ€์ฆ ์ ˆ์ฐจ๋ผ๋„ ํ”„๋กฌํ”„ํŠธ์— ๋„ฃ๋Š”๋‹ค.

5. ์–ธ์–ด๋ณ„ ์ฝ”๋“œ ์ธํ…”๋ฆฌ์ „์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ํ•˜๊ธฐ

์ด ํŒ์€ โ€œ๋ฌธ๋ฒ• ํ‹€๋ฆฌ๋ฉด ๋‚˜์ค‘์— ์‚ฌ๋žŒ์ด ์žก๊ฒ ์ง€โ€๋ฅผ ์ค„์—ฌ์ค€๋‹ค. LSP ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ์œผ๋ฉด Claude๊ฐ€ ํŒŒ์ผ ํŽธ์ง‘ ์งํ›„ ํƒ€์ž… ์˜ค๋ฅ˜, ๋ˆ„๋ฝ๋œ ๋ฐ˜ํ™˜ํ˜•, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” import ๊ฐ™์€ ์‹ ํ˜ธ๋ฅผ ๋” ๋นจ๋ฆฌ ๋ณธ๋‹ค.

/plugin install typescript-lsp@claude-plugins-official
/plugin install pyright-lsp@claude-plugins-official
/plugin install rust-analyzer-lsp@claude-plugins-official
/plugin install gopls-lsp@claude-plugins-official

ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž์ฒด๋ณด๋‹ค ์ค‘์š”ํ•œ ๊ฑด ๋‚ด ์Šคํƒ์— ๋งž๋Š” ์–ธ์–ด ์„œ๋ฒ„ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์„ค์น˜๋ผ ์žˆ๋Š”์ง€๋‹ค. ์—†๋Š” ์ƒํƒœ์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ๋งŒ ๋ถ™์ด๋ฉด ๊ธฐ๋Œ€ํ–ˆ๋˜ ์ž๋™ ์ง„๋‹จ์ด ์•ˆ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ํ™˜๊ฒฝยท์„ค์ • ์ชฝ์€ Settings๋ฅผ ๊ฐ™์ด ๋ณด๋ฉด ์ข‹๋‹ค.

6. gh CLI์™€ ๊ธฐํƒ€ CLI ๋„๊ตฌ๋ฅผ Claude์—๊ฒŒ ๊ฐ€๋ฅด์น˜๊ธฐ

Claude Code์˜ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” ๋ชจ๋ฅด๋Š” CLI๋„ --help๋ฅผ ์ฝ๊ณ  ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ํŠนํžˆ GitHub ๊ด€๋ จ ์ž‘์—…์€ ๋ณ„๋„ MCP ์„œ๋ฒ„๋ฅผ ๋ถ™์ด์ง€ ์•Š์•„๋„ gh CLI๋งŒ์œผ๋กœ ๊ฝค ๋งŽ์€ ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Use 'sentry-cli --help' to learn the syntax,
then find the most recent production error.

์ด ๋ฐฉ์‹์˜ ํ•ต์‹ฌ์€ โ€œ๋„๊ตฌ ์Šคํ‚ค๋งˆ๋ฅผ ํ•ญ์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” MCPโ€๋ณด๋‹ค โ€œํ•„์š”ํ•  ๋•Œ ์ฝ๊ณ  ์“ฐ๋Š” CLIโ€๊ฐ€ ์ปจํ…์ŠคํŠธ ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ๋„๊ตฌ ์„ ํƒ ๊ธฐ์ค€์€ MCP introduction๊ณผ CLI reference๋ฅผ ๊ฐ™์ด ๋ณด๋ฉด ๊ฐ์ด ์žกํžŒ๋‹ค.

7. ๋ณต์žกํ•œ ์ž‘์—…์—๋Š” ultrathink ๋˜๋Š” ๋†’์€ effort๋ฅผ ์“ฐ๊ธฐ

๋ชจ๋“  ์ž‘์—…์— ๊นŠ์€ ์‚ฌ๊ณ ๊ฐ€ ํ•„์š”ํ•œ ๊ฑด ์•„๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ช… ๋ฐ”๊พธ๊ธฐ, ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ ์ˆ˜์ •, ์ž์ž˜ํ•œ import ์ •๋ฆฌ ๊ฐ™์€ ์ผ์€ ๋†’์€ effort๊ฐ€ ์˜คํžˆ๋ ค ๋А๋ฆฌ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ •, ๋ณต์žกํ•œ ๋””๋ฒ„๊น…, ์—ฌ๋Ÿฌ ์ œ์•ฝ์ด ์–ฝํžŒ ์„ค๊ณ„๋Š” ๋” ๊นŠ์€ ์‚ฌ๊ณ ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๊ทธ๋ž˜์„œ ์ค‘์š”ํ•œ ๊ฑด โ€œ๊ณ ์„ฑ๋Šฅ ๋ชจ๋“œ๋ฅผ ํ•ญ์ƒ ์ผœ๋Š” ๊ฒƒโ€์ด ์•„๋‹ˆ๋ผ ๋ฌธ์ œ ๋‚œ์ด๋„์— ๋งž๊ฒŒ ์‚ฌ๊ณ  ๊นŠ์ด๋ฅผ ์กฐ์ ˆํ•˜๋Š” ์šด์˜ ๊ฐ๊ฐ์ด๋‹ค. Builder ๊ธ€์€ ultrathink๋ผ๋Š” ํ‘œํ˜„์„ ์†Œ๊ฐœํ•˜์ง€๋งŒ, ์‹ค๋ฌด์ ์œผ๋กœ๋Š” โ€œ์ด ์ž‘์—…์ด ์ •๋ง ๊ณ ๋‚œ๋„์ธ์ง€โ€๋ฅผ ๋จผ์ € ํŒ๋‹จํ•˜๋Š” ๊ฒŒ ๋” ์ค‘์š”ํ•˜๋‹ค.

๊ฐ„๋‹จ ๊ธฐ์ค€

  • ๋‹จ์ˆœ ์ˆ˜์ •: ๊ธฐ๋ณธ/๋‚ฎ์€ effort
  • ๊ตฌ์กฐ ์„ค๊ณ„: ๋†’์€ effort
  • ์‹คํŒจ๊ฐ€ ๋น„์‹ผ ๊ฒฐ์ •: ๋†’์€ effort + ๊ณ„ํš ๋จผ์ €

8. ์ž์ฃผ ์•ˆ ์“ฐ๋Š” ์ „๋ฌธ ์ง€์‹์€ skills๋กœ ๋นผ๊ธฐ

๋ชจ๋“  ๊ทœ์น™์„ CLAUDE.md์— ๋ชฐ์•„๋„ฃ์œผ๋ฉด ์„ธ์…˜์ด ๋ฌด๊ฑฐ์›Œ์ง„๋‹ค. ์Šคํ‚ฌ์€ ๊ทธ๊ฑธ ์ค„์—ฌ์ค€๋‹ค. ๊ฐ€๋” ํ•„์š”ํ•˜์ง€๋งŒ ๊ผญ ํ•„์š”ํ•  ๋•Œ๋Š” ์ •ํ™•ํ•ด์•ผ ํ•˜๋Š” ์ง€์‹์„ ๋ณ„๋„ ๋ฌถ์Œ์œผ๋กœ ๊บผ๋‚ด ์“ฐ๋Š” ๋ฐฉ์‹์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด API ๊ทœ์น™, ๋ฐฐํฌ ์ ˆ์ฐจ, ํŠน์ • ํŒ€์˜ ์ฝ”๋“œ ์Šคํƒ€์ผ, ํŠน์ • ์™ธ๋ถ€ ์„œ๋น„์Šค ์šด์˜๋ฒ•์ด ์—ฌ๊ธฐ์— ์ž˜ ๋งž๋Š”๋‹ค. ๊ณต์‹ ๊ตฌ์กฐ ์ดํ•ด์—๋Š” Best practices๊ฐ€ ๊ธฐ๋ณธ์ด๊ณ , ์šด์˜์ƒ ๋ถ„๋ฆฌ ๊ฐœ๋…์€ Overview์™€ Settings๋ฅผ ํ•จ๊ป˜ ๋ณด๋ฉด ์ข‹๋‹ค.

9. ํœด๋Œ€ํฐ์—์„œ Claude Code๋ฅผ ์ด์–ด์„œ ์ œ์–ดํ•˜๊ธฐ

์ด ๊ธฐ๋Šฅ์˜ ํ•ต์‹ฌ์€ โ€œํด๋ผ์šฐ๋“œ์—์„œ ๋Œ€์‹  ๋Œ์•„๊ฐ„๋‹คโ€๊ฐ€ ์•„๋‹ˆ๋‹ค. ์„ธ์…˜์€ ๊ณ„์† ๋‚ด ๋กœ์ปฌ ๋จธ์‹ ์—์„œ ๋ˆ๋‹ค. ํฐ์ด๋‚˜ ์›น์€ ๊ทธ ์„ธ์…˜์— ๋ถ™๋Š” ์ฐฝ์ผ ๋ฟ์ด๋‹ค. ์ด ์ฐจ์ด๋ฅผ ์ดํ•ดํ•ด์•ผ ๋ณด์•ˆ๊ณผ ๊ธฐ๋Œ€์น˜๊ฐ€ ๋งž์•„์ง„๋‹ค.

๊ด€๋ จ ๊ณต์‹ ๋ฌธ์„œ๋Š” Remote Control์ด๋‹ค.

์‹ค์ „ ์ƒํ™ฉ

  • ์‚ฌ๋ฌด์‹ค์—์„œ ๊ธด ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ๋ ค๋‘ 
  • ์ด๋™ ์ค‘ ํœด๋Œ€ํฐ์œผ๋กœ ์ƒํƒœ๋งŒ ํ™•์ธ
  • ์Šน์ธ ํ•„์š” ์‹œ ๋ชจ๋ฐ”์ผ์—์„œ ์ฒ˜๋ฆฌ
  • ๋‹ค์‹œ ์ž๋ฆฌ๋กœ ๋Œ์•„์˜ค๋ฉด ๊ฐ™์€ ๋กœ์ปฌ ์„ธ์…˜์ด ์ด์–ด์ง

10. ํฐ ์ปจํ…์ŠคํŠธ ์œˆ๋„์šฐ๋Š” ๋ฌด์กฐ๊ฑด ๋‹ต์ด ์•„๋‹ˆ๋ผ ์กฐ์ ˆ ๋Œ€์ƒ์ด๋‹ค

1M ํ† ํฐ ๊ฐ™์€ ํฐ ์ปจํ…์ŠคํŠธ๋Š” ๋ถ„๋ช… ๋งค๋ ฅ์ ์ด๋‹ค. ํ•˜์ง€๋งŒ โ€œ๋งŽ์ด ๋‹ด์œผ๋ฉด ๋ฌด์กฐ๊ฑด ์ž˜ํ•œ๋‹คโ€๋Š” ๋œป์€ ์•„๋‹ˆ๋‹ค. ํฐ ์ฐฝ์€ ์˜ค๋ž˜ ๋ฒ„ํ‹ฐ๊ฒŒ ํ•ด์ฃผ์ง€๋งŒ, ํ’ˆ์งˆ ๊ด€๋ฆฌ์™€ ์ปดํŒฉ์…˜ ์ „๋žต์ด ๊ฐ™์ด ๋”ฐ๋ผ์™€์•ผ ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ Builder ๊ธ€์ด ๋งํ•˜๋“ฏ 500k๋ถ€ํ„ฐ ์ ์ง„์ ์œผ๋กœ ๋Š˜๋ ค๋ณด๋Š” ์ ‘๊ทผ์ด ํ˜„์‹ค์ ์ด๋‹ค. ์ž๋™ ์ปดํŒฉ์…˜ ์‹œ์ , ์••์ถ• ๊ธฐ์ค€, ๋ฌด์—‡์„ ๋‚จ๊ธธ์ง€ ๊ฐ™์€ ์šด์˜ ํ•ญ๋ชฉ์€ Best practices์™€ Settings ๊ด€์ ์—์„œ ํ•จ๊ป˜ ๋ณด๋Š” ๊ฒŒ ๋งž๋‹ค.

11. ์ ‘๊ทผ์ด ํ™•์‹คํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” Plan Mode๋ถ€ํ„ฐ

์ž‘์—… ๋ฒ”์œ„๊ฐ€ ํฌ๊ณ , ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ๊ฑด๋“œ๋ฆฌ๊ณ , ๊ตฌ์กฐ ํŒ๋‹จ์ด ๋“ค์–ด๊ฐ€๋ฉด Plan Mode๊ฐ€ ์ž˜ ๋งž๋Š”๋‹ค. ๋ช‡ ๋ถ„ ๋จผ์ € ์ƒ๊ฐํ•˜๋Š” ๋น„์šฉ์ด, ๋‚˜์ค‘ 20๋ถ„ ์ž˜๋ชป ๊ฐ€๋Š” ๋น„์šฉ๋ณด๋‹ค ์‹ธ๋‹ค.

๋ฐ˜๋Œ€๋กœ ์ฐจ์ด๊ฐ€ ํ•œ ์ค„ diff๋กœ ์„ค๋ช…๋˜๋Š” ์ผ์ด๋ผ๋ฉด Plan Mode๊ฐ€ ๊ณผํ•  ์ˆ˜ ์žˆ๋‹ค. Plan์€ ๋ถˆํ™•์‹ค์„ฑ์ด ํด์ˆ˜๋ก ๋น›๋‚œ๋‹ค. Builder ๊ธ€์ด ์ถ”์ฒœํ•˜๋Š” ์ „ํ˜•์ ์ธ ์ƒํ™ฉ์€ ๋‹ค์ค‘ ํŒŒ์ผ ์ˆ˜์ •, ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ๋ฒ ์ด์Šค, ์•„ํ‚คํ…์ฒ˜ ํŒ๋‹จ์ด๋‹ค.

12. ๊ด€๋ จ ์—†๋Š” ์ž‘์—… ์‚ฌ์ด๋Š” /clear๋กœ ๋Š์–ด์ฃผ๊ธฐ

์„ธ์…˜์€ ๊ธธ๋‹ค๊ณ  ํ•ญ์ƒ ์ข‹์€ ๊ฒŒ ์•„๋‹ˆ๋‹ค. ์ด์ „ ์ž‘์—…์˜ ๋งฅ๋ฝ์ด ๋‹ค์Œ ์ž‘์—…์„ ๋” ์ž˜ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ, ๊ด€๊ณ„์—†๋Š” ์ž‘์—…์ด๋ผ๋ฉด ์˜คํžˆ๋ ค ๋ฐฉํ•ด๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ /clear๋Š” โ€œ๊ธฐ์–ต ์ƒ์‹คโ€์ด ์•„๋‹ˆ๋ผ ์ง‘์ค‘ ์žฌ์„ค์ •์— ๊ฐ€๊น๋‹ค.

๊ณต์‹ ์šด์˜ ํŒ์—์„œ๋„ Best practices๋Š” ๋ชฉํ‘œ์™€ ๋ฒ”์œ„๋ฅผ ์„ ๋ช…ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ์ชฝ์„ ๊ถŒํ•œ๋‹ค.

์‹ค์ „ ์˜ˆ์‹œ

  • ์˜ค์ „: ๋ฐฐํฌ ์‹คํŒจ ์›์ธ ๋ถ„์„
  • ์˜คํ›„: ์™„์ „ํžˆ ๋‹ค๋ฅธ UI ๊ฐœ์„  ์ž‘์—…
  • ์ด๋•Œ /clear ์—†์ด ์ด์–ด๊ฐ€๋ฉด ์ด์ „ ๋กœ๊ทธยท์˜ค๋ฅ˜ ๋งฅ๋ฝ์ด ์ƒˆ ์ž‘์—…์„ ์˜ค์—ผ์‹œํ‚จ๋‹ค.

13. ๋ฒ„๊ทธ๋ฅผ ํ•ด์„ํ•ด์„œ ์„ค๋ช…ํ•˜์ง€ ๋ง๊ณ  ์›์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ™์—ฌ๋„ฃ๊ธฐ

์‚ฌ๋žŒ์ด ๋จผ์ € ์š”์•ฝํ•œ ๋ฒ„๊ทธ ์„ค๋ช…์€ ์ข…์ข… ์ค‘์š”ํ•œ ๋””ํ…Œ์ผ์„ ์žƒ๋Š”๋‹ค. ๋กœ๊ทธ, CI ์ถœ๋ ฅ, Slack ์Šค๋ ˆ๋“œ, ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๊ทธ๋Œ€๋กœ ์ฃผ๋ฉด Claude๊ฐ€ ์ถ”์ธก์ด ์•„๋‹ˆ๋ผ ์ฆ๊ฑฐ๋กœ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

cat error.log | claude "explain this error and suggest a fix"
npm test 2>&1 | claude "fix the failing tests"

๋ฏธ๋‹ˆ ์‚ฌ๋ก€ 2

  • Before: โ€œ๋กœ๊ทธ์ธ ์ชฝ์ด ์ด์ƒํ•ด. ์•„๋งˆ ์„ธ์…˜ ๋ฌธ์ œ ๊ฐ™์•„.โ€
  • After: ์‹ค์ œ ์—๋Ÿฌ ๋กœ๊ทธ์™€ ์‹คํŒจ ํ…Œ์ŠคํŠธ ์ถœ๋ ฅ ์ „์ฒด ์ „๋‹ฌ
  • ๋ณ€ํ™”: ์ถ”์ธก์„ฑ ์ˆ˜์ • ํšŸ์ˆ˜๊ฐ€ ์ค„๊ณ  ์›์ธ ๋„๋‹ฌ ์†๋„๊ฐ€ ๋นจ๋ผ์ง

14. /btw๋กœ ๋ณธ ํ๋ฆ„์„ ๋”๋Ÿฝํžˆ์ง€ ์•Š๊ณ  ์งง์€ ์งˆ๋ฌธํ•˜๊ธฐ

๋ฉ”์ธ ์„ธ์…˜์„ ๋Š์ง€ ์•Š๊ณ  โ€œ์™œ ์ด ์ ‘๊ทผ์„ ํƒํ–ˆ์–ด?โ€, โ€œ๋‹ค๋ฅธ ์˜ต์…˜๊ณผ ๋น„๊ตํ•˜๋ฉด ์–ด๋–ค๋ฐ?โ€ ๊ฐ™์€ ์˜†์งˆ๋ฌธ์„ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์œ ์šฉํ•œ ํŒจํ„ด์ด๋‹ค. ๊ธด ๋ถ„์„ ํ๋ฆ„ ์†์—์„œ ์ž์ž˜ํ•œ ํ™•์ธ ์งˆ๋ฌธ์„ ํ•ด๋„ ๋ฉ”์ธ ์ปจํ…์ŠคํŠธ๋ฅผ ๋œ ์˜ค์—ผ์‹œํ‚จ๋‹ค.

์ด ๊ธฐ๋Šฅ์˜ ํ•ต์‹ฌ ๊ฐ€์น˜๋Š” ๋‹ต๋ณ€ ํ’ˆ์งˆ๋ณด๋‹ค ๋Œ€ํ™” ํ๋ฆ„ ๊ด€๋ฆฌ์— ์žˆ๋‹ค.

15. --worktree๋กœ ๊ฒฉ๋ฆฌ๋œ ๋ณ‘๋ ฌ ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ธฐ

๊ฐ™์€ ์ €์žฅ์†Œ์—์„œ ์—ฌ๋Ÿฌ ์‹œ๋„๋ฅผ ๋™์‹œ์— ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด worktree๊ฐ€ ๊ฐ•๋ ฅํ•˜๋‹ค. ๊ฐ worktree๋Š” ์„ธ์…˜๋„ ๋‹ค๋ฅด๊ณ  ๋ธŒ๋žœ์น˜๋„ ๋‹ค๋ฅด๊ณ  ํŒŒ์ผ์‹œ์Šคํ…œ ์ƒํƒœ๋„ ๋…๋ฆฝ์ ์ด๋ผ, ์‹คํ—˜๊ณผ ๋น„๊ต๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค.

์ด ๊ฐœ๋…์€ Claude Code๋งŒ์˜ ๊ณ ์œ  ๋งˆ๋ฒ•์ด๋ผ๊ธฐ๋ณด๋‹ค, git worktree ์œ„์— ์—์ด์ „ํŠธ ์›Œํฌํ”Œ๋กœ๋ฅผ ์–น๋Š” ๋ฐœ์ƒ์ด๋‹ค. Builder ๊ธ€์€ ์ด๊ฑธ ๊ฐ€์žฅ ํฐ ์ƒ์‚ฐ์„ฑ ํ•ด์ œ ์ค‘ ํ•˜๋‚˜๋กœ ๋ณธ๋‹ค.

์‹ค์ „ ์˜ˆ์‹œ

  • worktree A: ๋กœ๊ทธ์ธ ๋ฆฌํŒฉํ„ฐ๋ง
  • worktree B: ํ…Œ์ŠคํŠธ ์•ˆ์ •ํ™”
  • worktree C: ๋ฌธ์„œํ™”์™€ ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ

๋‹จ, ๊ฐ™์€ ํŒŒ์ผ์„ ๋™์‹œ์— ์†๋Œ€๋Š” ๋ณ‘๋ ฌํ™”๋Š” ์ถฉ๋Œ ํ™•๋ฅ ์ด ํฌ๋‹ค.

16. ๊ธด ํ”„๋กฌํ”„ํŠธ๋ฅผ ์“ฐ๋‹ค ๋Š๊ธฐ๋ฉด Ctrl+S๋กœ ์ž„์‹œ ์ €์žฅ

์ด๊ฑด ์‚ฌ์†Œํ•ด ๋ณด์—ฌ๋„ ์˜์™ธ๋กœ ๊ฐ•ํ•˜๋‹ค. ๋ณต์žกํ•œ ์š”๊ตฌ๋ฅผ ์ ๋‹ค๊ฐ€ ๊ฐ‘์ž๊ธฐ ๊ฐ„๋‹จํ•œ ์งˆ๋ฌธ ํ•˜๋‚˜๊ฐ€ ๋จผ์ € ๋– ์˜ค๋ฅผ ๋•Œ, ์ดˆ์•ˆ์„ ์žƒ์ง€ ์•Š๊ณ  ์ž ๊น ๋‹ค๋ฅธ ์งˆ๋ฌธ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธด ํ”„๋กฌํ”„ํŠธ ์ž‘์„ฑ ๋น„์šฉ์„ ์ค„์ด๋Š” ์ž‘์€ ๋งˆ์ฐฐ ์ œ๊ฑฐ ์žฅ์น˜๋‹ค.

17. ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์€ Ctrl+B๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ๋ณด๋‚ด๊ธฐ

๊ธด ํ…Œ์ŠคํŠธ, ๋นŒ๋“œ, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ๋Œ ๋•Œ ์„ธ์…˜ ์ „์ฒด๊ฐ€ ๋ฉˆ์ถ˜ ๋А๋‚Œ์ด ๋“ค๋ฉด ํ๋ฆ„์ด ๋Š๊ธด๋‹ค. Ctrl+B๋Š” ๊ทธ ๋‹ต๋‹ตํ•จ์„ ์ค„์ธ๋‹ค. ๊ธด ๋ช…๋ น์€ ๋Œ๊ฒŒ ๋‘๊ณ , ์‚ฌ์šฉ์ž๋Š” ๋‹ค๋ฅธ ์งˆ๋ฌธ์ด๋‚˜ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ํŒ์€ ๊ธด ์ž‘์—…์ด ๋งŽ์€ ํ”„๋กœ์ ํŠธ์ผ์ˆ˜๋ก ํšจ๊ณผ๊ฐ€ ํฌ๋‹ค.

18. ์ƒํƒœ์ค„์„ ๋ถ™์—ฌ ํ˜„์žฌ ์œ„์น˜์™€ ์ปจํ…์ŠคํŠธ ์ƒํƒœ๋ฅผ ํ•ญ์ƒ ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ

์ƒํƒœ์ค„์€ โ€œ์ง€๊ธˆ ์–ด๋А ๋””๋ ‰ํ† ๋ฆฌ์ธ์ง€, ์–ด๋А ๋ธŒ๋žœ์น˜์ธ์ง€, ์ปจํ…์ŠคํŠธ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ฐผ๋Š”์ง€โ€ ๊ฐ™์€ ๊ฒƒ์„ ์ฆ‰์‹œ ๋ณด์—ฌ์ค€๋‹ค. ์ด๊ฑด ๋ณด๊ธฐ ์ข‹์œผ๋ผ๊ณ  ๋‹ค๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ์ž˜๋ชป๋œ ์„ธ์…˜์— ๋ง์„ ๊ฑธ๊ฑฐ๋‚˜ ๊ณผํ•˜๊ฒŒ ์ฑ„์›Œ์ง„ ์ปจํ…์ŠคํŠธ๋ฅผ ๋Šฆ๊ฒŒ ๋ˆˆ์น˜์ฑ„๋Š” ์‚ฌ๊ณ ๋ฅผ ์ค„์ด๋Š” ์žฅ์น˜๋‹ค.

19. ๋ฉ”์ธ ์ปจํ…์ŠคํŠธ๋ฅผ ์‚ด๋ฆฌ๋ ค๋ฉด ์กฐ์‚ฌ ์ž‘์—…์€ subagent๋กœ ๋ถ„๋ฆฌํ•˜๊ธฐ

์ฝ”๋“œ ํ•œ ์ค„ ์“ฐ๊ธฐ ์ „์— ์กฐ์‚ฌ ๋•Œ๋ฌธ์— ์ปจํ…์ŠคํŠธ ์ ˆ๋ฐ˜์„ ์จ๋ฒ„๋ฆฌ๋Š” ์ƒํ™ฉ์ด ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ๋‹ค. ์ด๋•Œ subagent๊ฐ€ ๋น›๋‚œ๋‹ค. ์กฐ์‚ฌ์šฉ ์„ธ์…˜์ด ํŒŒ์ผ์„ ์ฝ๊ณ  ์š”์•ฝ๋งŒ ๊ฐ€์ ธ์˜ค๋ฉด, ๋ฉ”์ธ ์„ธ์…˜์€ ์‹ค์ œ ๊ตฌํ˜„๊ณผ ์˜์‚ฌ๊ฒฐ์ •์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ณต์‹ ๋ฌธ์„œ๋Š” Sub-agents๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค.

์–ธ์ œ ์ž˜ ๋งž๋‚˜

  • ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ ํƒ์ƒ‰
  • ์žฅ์•  ์›์ธ ์ถ”์ 
  • ํ•œ ๋ชจ๋“ˆ์˜ ๋™์ž‘ ๋ฐฉ์‹ ํŒŒ์•…
  • ๋ฐ”๋€ ํŒŒ์ผ ๋ชฉ๋ก๊ณผ ์˜ํ–ฅ ๋ฒ”์œ„ ์กฐ์‚ฌ

20. ๋ฉ€ํ‹ฐ ์„ธ์…˜ ์กฐ์œจ์ด ํ•„์š”ํ•˜๋ฉด Agent Teams๋ฅผ ๊ณ ๋ คํ•˜๊ธฐ

Agent Teams๋Š” ๊ฐ•๋ ฅํ•˜์ง€๋งŒ, ๋™์‹œ์— ์กฐ์‹ฌํ•ด์„œ ์จ์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ๋ณ‘๋ ฌ์„ฑ์ด ์ปค์ง„๋‹ค๊ณ  ์ž๋™์œผ๋กœ ํ’ˆ์งˆ์ด ์ข‹์•„์ง€๋Š” ๊ฑด ์•„๋‹ˆ๋‹ค. ๊ฐ™์€ ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ ํŒ€์›์ด ๊ฑด๋“œ๋ฆฌ๋ฉด ๊ณง๋ฐ”๋กœ ์ถฉ๋Œ๊ณผ ๋ฎ์–ด์“ฐ๊ธฐ๊ฐ€ ์ƒ๊ธด๋‹ค.

๊ทธ๋ž˜์„œ ์ดˆ๋ฐ˜์—๋Š” ๊ตฌํ˜„ ๋ณ‘๋ ฌํ™”๋ณด๋‹ค ๋ฆฌ์„œ์น˜, ๋ฆฌ๋ทฐ, ๋ฒ„๊ทธ ์กฐ์‚ฌ์ฒ˜๋Ÿผ ์ถฉ๋Œ์ด ์ ์€ ์ผ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค. ํŒ€ ๊ตฌ์กฐ์™€ ๋ณ‘๋ ฌ ์ฑ…์ž„ ๋ถ„๋ฆฌ๋Š” Sub-agents์™€ Builder์˜ agents ๊ด€๋ จ ๊ธ€์„ ํ•จ๊ป˜ ๋ณด๋ฉด ๊ฐ์ด ์˜จ๋‹ค.

21. ์ปดํŒฉ์…˜์ด ์ผ์–ด๋‚  ๋•Œ ๋ฌด์—‡์„ ๋‚จ๊ธธ์ง€ ์ง์ ‘ ์ง€์‹œํ•˜๊ธฐ

์ปจํ…์ŠคํŠธ ์••์ถ•์€ ๋ฌด์กฐ๊ฑด ๋‚˜์œ ์ผ์ด ์•„๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌด์—‡์„ ๋‚จ๊ฒจ์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์ง€ ์•Š์œผ๋ฉด ์ค‘์š”ํ•œ ์‹ค๋งˆ๋ฆฌ๋ฅผ ์žƒ๋Š”๋‹ค. ๊ทธ๋ž˜์„œ /compact focus on the API changes and the list of modified files ๊ฐ™์€ ์ง€์‹œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค.

๋” ๋‚˜์•„๊ฐ€ CLAUDE.md์— โ€œ์ปดํŒฉ์…˜ ์‹œ ์ˆ˜์ • ํŒŒ์ผ ๋ชฉ๋ก๊ณผ ํ˜„์žฌ ํ…Œ์ŠคํŠธ ์ƒํƒœ๋ฅผ ๋ณด์กดํ•˜๋ผโ€ ๊ฐ™์€ ์ƒ์‹œ ๊ทœ์น™์„ ๋„ฃ์–ด๋‘˜ ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฑด ํŠนํžˆ ๊ธด ์ž‘์—…์—์„œ ํšจ๊ณผ๊ฐ€ ํฌ๋‹ค.

22. /loop๋กœ ๋ฐ˜๋ณต ํ™•์ธ ์ž‘์—…์„ ์„ธ์…˜ ์•ˆ์— ๋‚จ๊ธฐ๊ธฐ

๋ฐฐํฌ ์„ฑ๊ณต ์—ฌ๋ถ€ ํ™•์ธ, CI ์ƒํƒœ ์ถ”์ , ์™ธ๋ถ€ ์„œ๋น„์Šค ํด๋ง ๊ฐ™์€ ์ผ์€ ์‚ฌ๋žŒ์ด ๊ณ„์† ์ƒˆ๋กœ ๋ฌป๊ธฐ ๊ท€์ฐฎ๋‹ค. /loop๋Š” ์ด๋Ÿฐ ๋ฐ˜๋ณต ์ ๊ฒ€์„ ์„ธ์…˜์ด ์—ด๋ ค ์žˆ๋Š” ๋™์•ˆ ์ž๋™์œผ๋กœ ๋Œ๊ฒŒ ํ•ด์ค€๋‹ค.

/loop 5m check if the deploy succeeded and report back
/loop 20m /review-pr 1234

์ž‘์—…์€ ์„ธ์…˜ ๋ฒ”์œ„์ด๋ฉฐ 3์ผ ๋’ค ๋งŒ๋ฃŒ๋œ๋‹ค. ์ฆ‰, ์˜์›ํžˆ ๋– ๋‹ค๋‹ˆ๋Š” ํฌ๋ก ์ด ์•„๋‹ˆ๋ผ ์งง์€ ์šด์˜์šฉ ๋ฐ˜๋ณต๊ธฐ์— ๊ฐ€๊น๋‹ค.

23. ์Œ์„ฑ ๋ฐ›์•„์“ฐ๊ธฐ๋กœ ๋” ํ’๋ถ€ํ•œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ

์‚ฌ๋žŒ์€ ํƒ€์ดํ•‘ํ•  ๋•Œ๋ณด๋‹ค ๋งํ•  ๋•Œ ๋ฐฐ๊ฒฝ๊ณผ ๋งฅ๋ฝ์„ ๋” ๋งŽ์ด ์„ค๋ช…ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ /voice๋Š” ์ƒ๊ฐ๋ณด๋‹ค ํ’ˆ์งˆ ํ–ฅ์ƒ์— ๋„์›€์ด ๋œ๋‹ค. ํŠนํžˆ ์š”๊ตฌ์‚ฌํ•ญ์ด ์• ๋งคํ•˜๊ณ , ์ œ์•ฝ๊ณผ ๋ฐฐ๊ฒฝ์ด ๋งŽ๊ณ , ํƒ€์ดํ•‘์ด ๊ท€์ฐฎ์€ ์ƒํ™ฉ์—์„œ ์œ ๋ฆฌํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ์Œ์„ฑ ์ž…๋ ฅ์ด ๋งŒ๋Šฅ์€ ์•„๋‹ˆ๋‹ค. ์ˆซ์ž, ํŒŒ์ผ๋ช…, ๊ฒฝ๋กœ, ์ฝ”๋“œ ์กฐ๊ฐ์€ ์—ฌ์ „ํžˆ ํ…์ŠคํŠธ๋กœ ๋ณด์ •ํ•˜๋Š” ํŽธ์ด ์ •ํ™•ํ•˜๋‹ค.

24. ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋‘ ๋ฒˆ ๊ณ ์ณค๋Š”๋ฐ๋„ ํ•ด๊ฒฐ ์•ˆ ๋˜๋ฉด ์ƒˆ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ

์ด๊ฑด 12๋ฒˆ /clear์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋” ๊ฐ•ํ•œ ์›์น™์ด๋‹ค. ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฐ™์€ ์„ธ์…˜์—์„œ ๋‘ ๋ฒˆ ์ด์ƒ ์ˆ˜์ •ํ–ˆ๋Š”๋ฐ๋„ ์•ˆ ํ’€๋ฆฌ๋ฉด, ๊ทธ ์„ธ์…˜์€ ์‹คํŒจํ•œ ์ ‘๊ทผ์˜ ํ”์ ์œผ๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ์„ ํ™•๋ฅ ์ด ๋†’๋‹ค. ๊ทธ๋•Œ๋Š” ๋ฏธ๋ จ ์—†์ด ๋Š๊ณ  ๋” ์ข‹์€ ์‹œ์ž‘ ํ”„๋กฌํ”„ํŠธ๋กœ ๋‹ค์‹œ ์—ฌ๋Š” ๊ฒŒ ๋น ๋ฅด๋‹ค.

25. Claude๊ฐ€ ๋ณผ ํŒŒ์ผ์„ ์ •ํ™•ํžˆ ์ง€์ •ํ•˜๊ธฐ

@src/auth/middleware.ts ๊ฐ™์€ ์ง์ ‘ ์ฐธ์กฐ๋Š” ๊ฐ„๋‹จํ•˜์ง€๋งŒ ํ† ํฐ์„ ๊ฝค ์•„๋‚€๋‹ค. Claude๊ฐ€ ์Šค์Šค๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๋Šฅ๋ ฅ์ด ์—†๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ํƒ์ƒ‰๋„ ๋น„์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฏธ ๋‚ด๊ฐ€ ๋งž๋Š” ํŒŒ์ผ์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ๊ฐ€๋ฆฌ์ผœ์ฃผ๋Š” ํŽธ์ด ์ข‹๋‹ค.

์‹ค์ „ ์˜ˆ์‹œ

  • โ€œ๋กœ๊ทธ์ธ ๋ฌธ์ œ ๋ด์ค˜โ€๋ณด๋‹ค
  • โ€œ@src/auth/middleware.ts, @src/lib/jwt.ts, @tests/auth.spec.ts ์„ธ ํŒŒ์ผ ๊ธฐ์ค€์œผ๋กœ ๋กœ๊ทธ์ธ ์‹คํŒจ ์›์ธ ์ฐพ์•„์ค˜โ€๊ฐ€ ํ›จ์”ฌ ํšจ์œจ์ ์ด๋‹ค.

26. ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ์—๋Š” ์ผ๋ถ€๋Ÿฌ ๋ชจํ˜ธํ•œ ์งˆ๋ฌธ๋„ ์จ๋ณด๊ธฐ

๋ชจ๋“  ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๊ตฌ์ฒด์ ์ด์–ด์•ผ ํ•˜๋Š” ๊ฑด ์•„๋‹ˆ๋‹ค. ๋‚ฏ์„  ์ €์žฅ์†Œ์—์„œ โ€œ์ด ํŒŒ์ผ์—์„œ ๋ญ˜ ๊ฐœ์„ ํ•˜๊ฒ ์–ด?โ€ ๊ฐ™์€ ์งˆ๋ฌธ์€ ์˜คํžˆ๋ ค ์˜ˆ์ƒ ๋ชป ํ•œ ํŒจํ„ด๊ณผ ๋ƒ„์ƒˆ๋ฅผ ์ž˜ ๋“œ๋Ÿฌ๋‚ธ๋‹ค.

์ฆ‰, ์ •ํ™•ํ•œ ๋ช…๋ นํ˜• ํ”„๋กฌํ”„ํŠธ๋Š” ์‹คํ–‰์šฉ, ์—ด๋ฆฐ ์งˆ๋ฌธํ˜• ํ”„๋กฌํ”„ํŠธ๋Š” ํƒ์ƒ‰์šฉ์ด๋ผ๊ณ  ๋‚˜๋ˆ  ์ƒ๊ฐํ•˜๋ฉด ์ข‹๋‹ค.

27. ๊ณ„ํš์„ ํ…์ŠคํŠธ ์—๋””ํ„ฐ์—์„œ ์ง์ ‘ ํŽธ์ง‘ํ•˜๊ธฐ

Claude๊ฐ€ ์ œ์•ˆํ•œ ๊ณ„ํš์ด 80%๋Š” ๋งž๋Š”๋ฐ 20%๊ฐ€ ๋งˆ์Œ์— ์•ˆ ๋“ค ๋•Œ, ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์„ค๋ช…ํ•˜๊ธฐ๋ณด๋‹ค ๊ณ„ํš ์ž์ฒด๋ฅผ ์—ด์–ด ์†๋ณด๋Š” ๋ฐฉ์‹์ด ๋น ๋ฅด๋‹ค. ์ด ํŒ์˜ ๋ณธ์งˆ์€ โ€œClaude๊ฐ€ ์ง  ๊ณ„ํš์„ ๊ทธ๋ƒฅ ๋”ฐ๋ฅด์ง€ ๋ง๊ณ , ๋‚ด ์˜๋„๋ฅผ ๋นจ๋ฆฌ ๋ง์”Œ์›Œ๋ผโ€์— ์žˆ๋‹ค.

28. /init์œผ๋กœ ์‹œ์ž‘ํ•˜๋˜, ๊ฒฐ๊ณผ๋Š” ์ ˆ๋ฐ˜ ์ด์ƒ ๋œ์–ด๋‚ด๊ธฐ

CLAUDE.md๋Š” ์„ธ์…˜์ด ์‹œ์ž‘๋  ๋•Œ ์ฝ๋Š” ์ƒ์‹œ ๊ทœ์น™ ํŒŒ์ผ์ด๋‹ค. /init์€ ์ดˆ์•ˆ์„ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์ง€๋งŒ, ๋ณดํ†ต์€ ์นœ์ ˆํ•œ ๋Œ€์‹  ๊ธธ๋‹ค. ๊ทธ๋ž˜์„œ Builder ๊ธ€์ด ๋งํ•˜๋“ฏ ์ ˆ๋ฐ˜ ์ด์ƒ ์ง€์šฐ๋Š” ํŽธ์ง‘์ด ์ค‘์š”ํ•˜๋‹ค.

๊ด€๋ จ ๊ด€๋ฆฌ๋Š” Best practices์™€ Settings๋ฅผ ํ•จ๊ป˜ ๋ณด๋ฉด ์ข‹๋‹ค.

์‹ค์ „ ๊ธฐ์ค€

  • ๊ผญ ํ•„์š”ํ•œ ๋นŒ๋“œ ๋ช…๋ น
  • ์ž์ฃผ ํ‹€๋ฆฌ๋Š” ๊ทœ์น™
  • ์ ˆ๋Œ€ ๊ฑด๋“œ๋ฆฌ๋ฉด ์•ˆ ๋˜๋Š” ํด๋”
  • ์‚ฐ์ถœ๋ฌผ ํ˜•์‹

์ด ์ •๋„๋งŒ ๋‚จ๊ฒจ๋„ ํ›จ์”ฌ ์ข‹์•„์ง„๋‹ค.

29. CLAUDE.md์˜ ๋ชจ๋“  ์ค„์— โ€œ์ด๊ฒŒ ์—†์œผ๋ฉด ์ง„์งœ ํ‹€๋ฆด๊นŒ?โ€๋ฅผ ๋ฌป๊ธฐ

์ด ์งˆ๋ฌธ ํ•˜๋‚˜๋กœ ๊ตฐ๋”๋”๊ธฐ ๊ทœ์น™์„ ๋งŽ์ด ๊ฑท์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. Claude๊ฐ€ ์›๋ž˜๋„ ์ž˜ํ•˜๋Š” ์ผ์„ ๊ตณ์ด ์ ์–ด๋‘๋ฉด, ์ •๋ง ์ค‘์š”ํ•œ ๊ทœ์น™์˜ ํž˜์ด ์•ฝํ•ด์ง„๋‹ค. ๊ธ€์ด ์–ธ๊ธ‰ํ•œ โ€œ์•ฝ 150~200๊ฐœ ์ง€์‹œ ์˜ˆ์‚ฐโ€ ์ด์•ผ๊ธฐ๋Š” ๊ณผ์žฅ ์„ž์ธ ๊ฐ๊ฐ ํ‘œํ˜„์ฒ˜๋Ÿผ ๋“ค๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฐฉํ–ฅ์„ฑ์€ ๋ถ„๋ช…ํ•˜๋‹ค. ๊ทœ์น™์€ ๋งŽ์„์ˆ˜๋ก ์ข‹์€ ๊ฒŒ ์•„๋‹ˆ๋ผ, ์ค‘์š”ํ•œ ๊ฒƒ๋งŒ ๋‚จ์„์ˆ˜๋ก ๊ฐ•ํ•˜๋‹ค.

30. Claude๊ฐ€ ์‹ค์ˆ˜ํ•˜๋ฉด โ€œ๋‹ค์Œ๋ถ€ํ„ฐ ์•ˆ ํ‹€๋ฆฌ๊ฒŒ CLAUDE.md๋ฅผ ์—…๋ฐ์ดํŠธํ•ดโ€๋ผ๊ณ  ํ•˜๊ธฐ

์ด๊ฑด ๊ต‰์žฅํžˆ ์‹ค์šฉ์ ์ธ ์Šต๊ด€์ด๋‹ค. ์‹ค์ˆ˜๋ฅผ ํ•œ ๋ฒˆ ์žก๊ณ  ๋๋‚ด์ง€ ๋ง๊ณ , ๊ทธ ์‹ค์ˆ˜์˜ ์žฌ๋ฐœ ๋ฐฉ์ง€ ๊ทœ์น™์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ๋‹ค์Œ ์„ธ์…˜์—์„œ ๋‹ค์‹œ ์„ค๋ช…ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

๋‹จ, ๋ชจ๋“  ์‹ค์ˆ˜๋ฅผ ๋ฉ”์ธ ํŒŒ์ผ์— ๋ˆ„์ ํ•˜๋ฉด ๋˜ ๋น„๋Œ€ํ•ด์ง„๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์Œ 31๋ฒˆ, 32๋ฒˆ๊ณผ ์—ฐ๊ฒฐ๋œ๋‹ค.

31. .claude/rules/๋กœ ์กฐ๊ฑด๋ถ€ ๊ทœ์น™์„ ๋ถ„๋ฆฌํ•˜๊ธฐ

ํ•ญ์ƒ ์ ์šฉํ•  ๊ทœ์น™๊ณผ, ํŠน์ • ํŒŒ์ผ์—์„œ๋งŒ ํ•„์š”ํ•œ ๊ทœ์น™์€ ๋‹ค๋ฅด๋‹ค. TypeScript ๊ทœ์น™, Go ๊ทœ์น™, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํŒŒ์ผ ๊ทœ์น™, ํ…Œ์ŠคํŠธ ํŒŒ์ผ ๊ทœ์น™์„ ์ „๋ถ€ CLAUDE.md ํ•œ ์žฅ์— ๋„ฃ์œผ๋ฉด ๋น„ํšจ์œจ์ ์ด๋‹ค.

---
paths:
  - "**/*.ts"
---
Prefer interfaces over types.

์ด๋ ‡๊ฒŒ ์กฐ๊ฑด๋ถ€ ๊ทœ์น™์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด ํ•ด๋‹น ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ๋งŒ ๊ทœ์น™์ด ์‚ด์•„๋‚œ๋‹ค.

32. @imports๋กœ CLAUDE.md๋ฅผ ๊ฐ€๋ณ๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ

์ƒ์„ธ ๊ทœ์น™์€ ๋ณ„๋„ ๋ฌธ์„œ๋กœ ๋ณด๋‚ด๊ณ , CLAUDE.md์—๋Š” โ€œํ•„์š”ํ•˜๋ฉด ์—ฌ๊ธฐ ๋ดโ€๋งŒ ์ ๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด ํŒจํ„ด์€ ์šด์˜ ๋ฌธ์„œ๋ฅผ ๊ณ„์ธตํ™”ํ•  ๋•Œ ํŠนํžˆ ์œ ๋ฆฌํ•˜๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด @docs/git-instructions.md, @README.md, @package.json์ฒ˜๋Ÿผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•ต์‹ฌ์€ ์ƒ์‹œ ๋กœ๋“œ ๋ฌธ์„œ์™€ ํ•„์š” ์‹œ ๋กœ๋“œ ๋ฌธ์„œ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

33. ์ž์ฃผ ์Šน์ธํ•˜๋Š” ์•ˆ์ „ ๋ช…๋ น์€ /permissions๋กœ ํ—ˆ์šฉ๋ชฉ๋ก ๋งŒ๋“ค๊ธฐ

๋งค๋ฒˆ npm run lint, npm test, git status ๊ฐ™์€ ๊ฑธ ์Šน์ธํ•˜๋‹ค ๋ณด๋ฉด ๋ฆฌ๋“ฌ์ด ๋ฌด๋„ˆ์ง„๋‹ค. /permissions๋Š” ์ด๋Ÿฐ ๋ฐ˜๋ณต ์Šน์ธ์„ ์ค„์—ฌ์ค€๋‹ค.

๊ณต์‹ ์„ค์ • ๊ด€๋ฆฌ๋Š” Settings, ๋ณด์•ˆ ์›์น™์€ Security์™€ ํ•จ๊ป˜ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

์‹ค์ „ ํŒ

  • ์ž์ฃผ ์“ฐ๊ณ , ๊ฒฐ๊ณผ๊ฐ€ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ณ , ํŒŒ๊ดด์ ์ด์ง€ ์•Š์€ ๊ฒƒ๋งŒ ํ—ˆ์šฉ๋ชฉ๋ก์— ๋„ฃ๋Š”๋‹ค.
  • DB ๋ณ€๊ฒฝ, ์‚ญ์ œ, ๋ฐฐํฌ, ์™ธ๋ถ€ ์“ฐ๊ธฐ ์ž‘์—…์€ ๋ณ„๋„ ์Šน์ธ์„ ์œ ์ง€ํ•œ๋‹ค.

34. ๋” ์ž์œ ๋กญ๊ฒŒ ์ผํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด /sandbox๋ฅผ ๋จผ์ € ์ผœ๊ธฐ

์—์ด์ „ํŠธ๋ฅผ ์˜ค๋ž˜ ๋Œ๋ฆฌ๊ณ  ์‹ถ์„์ˆ˜๋ก ์ž์œ ๋ฅผ ์ฃผ๊ณ  ์‹ถ์–ด์ง„๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ž์œ ๋ฅผ ์ฃผ๋Š” ์ˆœ๊ฐ„ ๋” ๊ฐ•ํ•œ ๊ฐ€๋“œ๋ ˆ์ผ๋„ ํ•„์š”ํ•ด์ง„๋‹ค. /sandbox๋Š” ๊ทธ ๊ท ํ˜•์ ์ด๋‹ค. ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ์“ฐ๊ธฐ ์ œํ•œ, ํ—ˆ์šฉ ๋„๋ฉ”์ธ ๋„คํŠธ์›Œํฌ ์ œํ•œ ๋“ฑ OS ์ˆ˜์ค€ ๊ฒฉ๋ฆฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

๋ณด์•ˆ ๊ด€๋ จ ๊ณต์‹ ๋ฌธ์„œ๋Š” Security์™€ Settings๋‹ค.

์‹ค์ „ ์ƒํ™ฉ

  • ๋ฐค์ƒˆ ๋ฆฌํŒฉํ„ฐ๋ง์„ ๋Œ๋ฆฌ๊ณ  ์‹ถ๋‹ค.
  • ๊ทธ๋ƒฅ ์ „๊ถŒ์„ ์ฃผ๊ธฐ์—” ๋ถˆ์•ˆํ•˜๋‹ค.
  • ๊ทธ๋Ÿด ๋•Œ ์ƒŒ๋“œ๋ฐ•์Šค + ํ›… + ์ปจํ…Œ์ด๋„ˆ ์กฐํ•ฉ์ด ์•ˆ์ „ํ•˜๋‹ค.

35. ๋ฐ˜๋ณต ์—ญํ• ์€ ์ปค์Šคํ…€ subagent๋กœ ๊ณ ์ •ํ•˜๊ธฐ

์ฆ‰์„ subagent๋Š” ์ผํšŒ์šฉ ์กฐ์‚ฌ์— ์ข‹๊ณ , ์ปค์Šคํ…€ subagent๋Š” ๋ฐ˜๋ณต๋˜๋Š” ์—ญํ• ์— ์ข‹๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋ณด์•ˆ ๋ฆฌ๋ทฐ์–ด, ๋น ๋ฅธ ๊ฒ€์ƒ‰ ์ „์šฉ ์—์ด์ „ํŠธ, ๋ฌธ์„œ ์ ๊ฒ€ ์—์ด์ „ํŠธ์ฒ˜๋Ÿผ ๋ง์ด๋‹ค.

๊ด€๋ จ ๊ฐœ๋…์€ Sub-agents์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์–ธ์ œ ์ปค์Šคํ…€์ด ์œ ๋ฆฌํ•œ๊ฐ€

  • ๊ฐ™์€ ์—ญํ• ์„ ์ฃผ 2ํšŒ ์ด์ƒ ๋ฐ˜๋ณตํ•œ๋‹ค.
  • ๊ถŒํ•œ, ๋ชจ๋ธ, ๋„๊ตฌ ๋ฒ”์œ„๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค.
  • ๋ฉ”์ธ ์„ธ์…˜๊ณผ ๋ถ„๋ฆฌ๋œ ํŒŒ์ผ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•˜๋‹ค.

36. ์Šคํƒ์— ๋งž๋Š” MCP ์„œ๋ฒ„๋งŒ ๊ณ ๋ฅด๊ธฐ

์ฒ˜์Œ๋ถ€ํ„ฐ MCP๋ฅผ ๋งŽ์ด ๋ถ™์ด๋Š” ๊ฑด ๋ฉ‹์ ธ ๋ณด์ด์ง€๋งŒ, ์šด์˜์€ ๋” ์–ด๋ ค์›Œ์ง„๋‹ค. ๊ทธ๋ž˜์„œ Playwright, DB, Slack, Figma์ฒ˜๋Ÿผ ์ง€๊ธˆ ๋‚ด ๋ณ‘๋ชฉ์„ ๋ฐ”๋กœ ์ค„์ด๋Š” ๊ฒƒ๋ถ€ํ„ฐ ๊ณ ๋ฅด๋Š” ํŽธ์ด ๋‚ซ๋‹ค.

๋ฐฐ๊ฒฝ ๊ฐœ๋…์€ MCP introduction์„ ๋ณด๋ฉด ๋œ๋‹ค. ํ•ต์‹ฌ์€ โ€œ๋งŽ์ด ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒโ€์ด ์•„๋‹ˆ๋ผ โ€œํ•„์š”ํ•  ๋•Œ๋งŒ ๋กœ๋“œํ•˜๊ณ , ์ •๋ง ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๋ถ™์ด๋Š” ๊ฒƒโ€์ด๋‹ค.

37. ์ถœ๋ ฅ ์Šคํƒ€์ผ์„ ๋จผ์ € ์ •ํ•ด์„œ ์ฝ๊ธฐ ํ”ผ๋กœ๋ฅผ ์ค„์ด๊ธฐ

/config์—์„œ Explanatory, Concise, Technical ๊ฐ™์€ ์Šคํƒ€์ผ์„ ๊ณ ๋ฅด๋ฉด ์‘๋‹ต ํ˜•ํƒœ๊ฐ€ ๊ฝค ๋‹ฌ๋ผ์ง„๋‹ค. ์ด๊ฑด ์‚ฌ์†Œํ•ด ๋ณด์ด์ง€๋งŒ, ๊ฐ™์€ ํ’ˆ์งˆ์ด๋ผ๋„ ๋‚ด๊ฐ€ ์ฝ๊ธฐ ์‰ฌ์šด ํ˜•์‹์ด ์•„๋‹ˆ๋ฉด ์‹ค๋ฌด ์†๋„๋Š” ๋А๋ ค์ง„๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด:

  • ์˜์‚ฌ๊ฒฐ์ •์šฉ: Concise
  • ๊นŠ์€ ํ•™์Šต์šฉ: Explanatory
  • ํŒ€ ๊ณต์œ ์šฉ: Technical ๋˜๋Š” ์ปค์Šคํ…€ ์Šคํƒ€์ผ

38. CLAUDE.md๋Š” ๊ถŒ๊ณ , Hooks๋Š” ๊ฐ•์ œ๋ผ๊ณ  ์ดํ•ดํ•˜๊ธฐ

์ด ๊ตฌ๋ถ„์€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. CLAUDE.md๋Š” โ€œ๊ฐ€๋Šฅํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ํ•ด์ค˜โ€์— ๊ฐ€๊น๊ณ , ํ›…์€ โ€œ๋ฌด์กฐ๊ฑด ์ด ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณโ€์— ๊ฐ€๊น๋‹ค. ๊ทธ๋ž˜์„œ ํฌ๋งคํŒ…, ๋ฆฐํŒ…, ๋ณด์•ˆ ๊ฒ€์‚ฌ์ฒ˜๋Ÿผ ํ•œ ๋ฒˆ๋„ ๋น ์ง€๋ฉด ์•ˆ ๋˜๋Š” ๊ฒƒ์€ ํ›…์ด ๋” ๋‚ซ๋‹ค.

๊ด€๋ จ ๊ณต์‹ ์„ค์ • ๋ฌธ์„œ๋Š” Settings์™€ Security๋‹ค.

39. PostToolUse ํ›…์œผ๋กœ ์ž๋™ ํฌ๋งคํŒ… ๋ถ™์ด๊ธฐ

ํŒŒ์ผ์„ ๊ณ ์น  ๋•Œ๋งˆ๋‹ค Prettier๋‚˜ ํฌ๋งคํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋Œ๋ฆฌ๋ฉด, ๊ฒฐ๊ณผ๋ฌผ ์ผ๊ด€์„ฑ์ด ํฌ๊ฒŒ ์˜ฌ๋ผ๊ฐ„๋‹ค.

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
          }
        ]
      }
    ]
  }
}

|| true๊ฐ€ ์žˆ๋Š” ์ด์œ ๋Š” ํ›… ์‹คํŒจ๊ฐ€ ๋ณธ ์ž‘์—…์„ ๋ง‰์ง€ ์•Š๊ฒŒ ํ•˜๋ ค๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์— eslint fix๋ฅผ ์ถ”๊ฐ€ ์ฒด์ธ์œผ๋กœ ๋ถ™์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

40. PreToolUse ํ›…์œผ๋กœ ํŒŒ๊ดด์  ๋ช…๋ น์„ ๋ฏธ๋ฆฌ ์ฐจ๋‹จํ•˜๊ธฐ

์‚ฌํ›„ ๋ณต๊ตฌ๋ณด๋‹ค ์‚ฌ์ „ ์ฐจ๋‹จ์ด ๋‚ซ๋‹ค. rm -rf, drop table, truncate ๊ฐ™์€ ํŒจํ„ด์€ ์•„์˜ˆ ์‹œ๋„๋„ ๋ชป ํ•˜๊ฒŒ ๋ง‰๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์•ˆ์ „ํ•˜๋‹ค.

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "type": "command",
        "command": "if echo \"$TOOL_INPUT\" | grep -qE 'rm -rf|drop table|truncate'; then echo 'BLOCKED: destructive command' >&2; exit 2; fi"
      }
    ]
  }
}

์ด๊ฑด ๋‹จ์ˆœ ํŽธ์˜๊ฐ€ ์•„๋‹ˆ๋ผ Security ๊ด€์ ์˜ ์šด์˜ ๊ธฐ๋ณธ๊ธฐ๋‹ค.

41. ์ปดํŒฉ์…˜ ๋’ค์—๋„ ์ค‘์š”ํ•œ ๋งฅ๋ฝ์„ ๋‹ค์‹œ ์ฃผ์ž…ํ•˜๋Š” ํ›… ๋งŒ๋“ค๊ธฐ

๊ธด ์„ธ์…˜์ผ์ˆ˜๋ก ์ปดํŒฉ์…˜ ํ›„ โ€œ์ง€๊ธˆ ๋ญ ํ•˜๊ณ  ์žˆ์—ˆ์ง€?โ€ ํ˜„์ƒ์ด ์ƒ๊ธด๋‹ค. ๊ทธ๋ž˜์„œ Notification ํ›…์œผ๋กœ ํ˜„์žฌ ์ž‘์—…, ์ˆ˜์ • ํŒŒ์ผ, ํ•˜๋“œ ์ œ์•ฝ์„ ๋‹ค์‹œ ์•Œ๋ ค์ฃผ๋Š” ํŒจํ„ด์ด ์œ ์šฉํ•˜๋‹ค.

ํŠนํžˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํŒŒ์ผ ๊ธˆ์ง€, ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ ์ˆ˜์ • ๊ธˆ์ง€, ํ˜„์žฌ ๊ฒ€์ฆ ์ƒํƒœ ๊ฐ™์€ ๊ฑด ์žฌ์ฃผ์ž… ๋Œ€์ƒ์ด ๋˜๊ธฐ ์ข‹๋‹ค.

42. ์ธ์ฆ, ๊ฒฐ์ œ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์€ ๋๊นŒ์ง€ ์‚ฌ๋žŒ์ด ์ง์ ‘ ๋ฆฌ๋ทฐํ•˜๊ธฐ

์ด ํŒ์€ 50๊ฐœ ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์•ˆ์ „ ๊ทœ์น™์ด๋‹ค. ์ž๋™ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์–ด๋„, Claude๊ฐ€ ์ „์ฒด์ ์œผ๋กœ ์ข‹์•„ ๋ณด์—ฌ๋„, ์ธ์ฆ ์Šค์ฝ”ํ”„ยท๊ฒฐ์ œ ์›นํ›…ยท๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ยทํŒŒ๊ดด์  DB ์ž‘์—…์€ ์‚ฌ๋žŒ์ด ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๋ด์•ผ ํ•œ๋‹ค.

์‹คํŒจ ์˜ˆ์‹œ

  • ๊ถŒํ•œ ์Šค์ฝ”ํ”„ ํ•˜๋‚˜ ์ž˜๋ชป ์ค˜์„œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ๊ฒฐ์ œ ์›นํ›… ๊ฒ€์ฆ ๋ˆ„๋ฝ์œผ๋กœ ์ด์ค‘ ์ฒญ๊ตฌ ๊ฐ€๋Šฅ
  • ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์กฐ์šฉํžˆ ์ปฌ๋Ÿผ ์‚ญ์ œ

์ด๊ฑด ์ƒ์‚ฐ์„ฑ๋ณด๋‹ค ์‹ ๋ขฐ์˜ ๋ฌธ์ œ๋‹ค.

43. /branch ๋˜๋Š” /fork๋กœ ๋‹ค๋ฅธ ์ ‘๊ทผ์„ ํ‰ํ–‰ํ•˜๊ฒŒ ์‚ด์•„ ์žˆ๊ฒŒ ๋‘๊ธฐ

/rewind๊ฐ€ ๊ณผ๊ฑฐ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๋„๊ตฌ๋ผ๋ฉด, /branch๋Š” ํ˜„์žฌ์—์„œ ๊ฐ€์ง€๋ฅผ ์น˜๋Š” ๋„๊ตฌ๋‹ค. ์œ„ํ—˜ํ•œ ๋ฆฌํŒฉํ„ฐ๋ง์„ ํ•œ ๊ฐˆ๋ž˜์—์„œ ์‹œ๋„ํ•˜๊ณ , ์›๋ž˜ ํ๋ฆ„์€ ๊ทธ๋Œ€๋กœ ์‚ด๋ ค๋‘˜ ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰ โ€œ๋‘˜ ์ค‘ ๋ญ๊ฐ€ ๋‚˜์„์ง€ ๋ชจ๋ฅด๊ฒ ์„ ๋•Œโ€ ํ•œ ๊ธธ๋งŒ ๊ณ ์ง‘ํ•˜์ง€ ์•Š๊ณ  ๋ณ‘๋ ฌ๋กœ ์‹คํ—˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

44. ์ŠคํŽ™์ด ๋œ ์ •๋ฆฌ๋์œผ๋ฉด Claude๊ฐ€ ๋‚˜๋ฅผ ์ธํ„ฐ๋ทฐํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ

์š”๊ตฌ์‚ฌํ•ญ์ด ํ๋ฆฟํ•  ๋•Œ ๊ณง๋ฐ”๋กœ ๊ตฌํ˜„์œผ๋กœ ๊ฐ€๋ฉด ๋‚˜์ค‘์— ๋˜๋Œ๋ฆผ ๋น„์šฉ์ด ์ปค์ง„๋‹ค. ์ด๋•Œ๋Š” Claude์—๊ฒŒ ์งˆ๋ฌธํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ํŽธ์ด ๋‚ซ๋‹ค.

I want to build [brief description].
Interview me in detail using the AskUserQuestion tool.
Ask about implementation, edge cases, concerns, and tradeoffs.
Then write the spec to SPEC.md.

ํ•ต์‹ฌ์€ ๊ตฌํ˜„ ์„ธ์…˜๊ณผ ์ŠคํŽ™ ์„ธ์…˜์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ธํ„ฐ๋ทฐ๊ฐ€ ๋๋‚˜๋ฉด ์ƒˆ ์„ธ์…˜์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ํŽธ์ด ํ›จ์”ฌ ์•ˆ์ •์ ์ด๋‹ค.

45. ํ•œ Claude๊ฐ€ ๋งŒ๋“ค๊ณ , ๋‹ค๋ฅธ Claude๊ฐ€ ๋ฆฌ๋ทฐํ•˜๊ฒŒ ํ•˜๊ธฐ

์ด ํŒจํ„ด์€ ์ •๋ง ๊ฐ•ํ•˜๋‹ค. ๊ตฌํ˜„ ์„ธ์…˜์€ ๊ตฌํ˜„์— ๋ชฐ์ž…ํ•˜๋‹ค ๋ณด๋ฉด ์ž๊ธฐ ์„ ํƒ์— ๊ด€๋Œ€ํ•ด์ง„๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ƒˆ ์ปจํ…์ŠคํŠธ์˜ ๋ฆฌ๋ทฐ ์„ธ์…˜์€ ๊ทธ๋Ÿฐ ๋งฅ๋ฝ์ด ์—†์–ด์„œ ๋” ๋ƒ‰์ •ํ•˜๊ฒŒ ๋ณธ๋‹ค.

์‹ค์ „ ์šด์˜ ์˜ˆ์‹œ

  • ์„ธ์…˜ A: ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์„ธ์…˜ B: staff engineer์ฒ˜๋Ÿผ ๋ฆฌ๋ทฐ
  • ์„ธ์…˜ C(์„ ํƒ): ํ…Œ์ŠคํŠธ ์ „์šฉ ๋˜๋Š” ๋ณด์•ˆ ์ „์šฉ ํ™•์ธ

TDD์—๋„ ๋น„์Šทํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค. A๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ์“ฐ๊ณ , B๊ฐ€ ๊ทธ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ์‹œํ‚ค๋Š” ์‹์ด๋‹ค.

46. PR ๋ฆฌ๋ทฐ๋Š” ์ผํšŒ์„ฑ ์ถœ๋ ฅ๋ณด๋‹ค ๋Œ€ํ™”ํ˜•์œผ๋กœ ํ•˜๊ธฐ

ํ•œ ๋ฒˆ์— โ€œPR ๋ฆฌ๋ทฐํ•ด์ค˜โ€๋ผ๊ณ  ๋๋‚ด๋ฉด ์‚ฌ์†Œํ•œ ์Šคํƒ€์ผ ์ง€์ ์€ ์ž˜ ๋‚˜์˜ค์ง€๋งŒ, ์•„ํ‚คํ…์ฒ˜ ๋ฆฌ์Šคํฌ๋Š” ๋†“์น˜๊ธฐ ์‰ฝ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋Œ€ํ™”ํ˜• ๋ฆฌ๋ทฐ๋Š” ๊นŠ๊ฒŒ ํŒŒ๊ณ ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด:

  • ์ด PR์—์„œ ๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ๋ณ€๊ฒฝ์€ ๋ญ์•ผ?
  • ๋™์‹œ ์‹คํ–‰๋˜๋ฉด ์–ด๋””๊ฐ€ ๊นจ์งˆ ์ˆ˜ ์žˆ์–ด?
  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ด ๊ธฐ์กด ์ฝ”๋“œ๋ฒ ์ด์Šค์™€ ์ผ์น˜ํ•ด?

์ด๋Ÿฐ ์งˆ๋ฌธ์ด ์‹ค์ œ ํ’ˆ์งˆ์„ ๋” ์ž˜ ๋Œ์–ด์˜ฌ๋ฆฐ๋‹ค.

47. ์„ธ์…˜ ์ด๋ฆ„๊ณผ ์ƒ‰์„ ๋ถ™์—ฌ ํ—ท๊ฐˆ๋ฆผ ์‚ฌ๊ณ  ์ค„์ด๊ธฐ

2~3๊ฐœ ์„ธ์…˜๋งŒ ๋– ๋„ ์‚ฌ๋žŒ์€ ๊ธˆ๋ฐฉ ํ—ท๊ฐˆ๋ฆฐ๋‹ค. /rename auth-refactor, /color blue ๊ฐ™์€ ์ž‘์€ ํ‘œ์‹œ๊ฐ€ ์‹ค์ œ ์‚ฌ๊ณ ๋ฅผ ๋ง‰์•„์ค€๋‹ค. ํŠนํžˆ ๋ณ‘๋ ฌ ์„ธ์…˜์„ ์“ธ์ˆ˜๋ก ํšจ๊ณผ๊ฐ€ ํฌ๋‹ค.

์ด๊ฑด ์ƒ์‚ฐ์„ฑ ํŒ์ด๋ฉด์„œ ๋™์‹œ์— ์•ˆ์ „ ํŒ์ด๋‹ค. ์ž˜๋ชป๋œ ์„ธ์…˜์— ์ž˜๋ชป๋œ ์ง€์‹œ๋ฅผ ๋„ฃ๋Š” ์‚ฌ๊ณ ๋Š” ์ƒ๊ฐ๋ณด๋‹ค ์ž์ฃผ ๋‚œ๋‹ค.

48. ์ž‘์—… ์™„๋ฃŒ ์‹œ ์†Œ๋ฆฌ๊ฐ€ ๋‚˜๊ฒŒ ๋งŒ๋“ค๊ธฐ

๊ธด ์ž‘์—…์„ ๋Œ๋ ค๋‘๊ณ  ๋‹ค๋ฅธ ์ผ์„ ํ•  ๋•Œ, ๋๋‚ฌ๋Š”์ง€ ๋ชฐ๋ผ์„œ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ ์ž๊พธ ํ™•์ธํ•˜๋Ÿฌ ๊ฐ€๋Š” ๋งˆ์ฐฐ์ด ์ƒ๊ธด๋‹ค. Stop ํ›…์œผ๋กœ ์†Œ๋ฆฌ๋ฅผ ๋ถ™์ด๋ฉด ์ด ๋งˆ์ฐฐ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

{
  "hooks": {
    "Stop": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "/usr/bin/afplay /System/Library/Sounds/Glass.aiff"
          }
        ]
      }
    ]
  }
}

Linux๋ผ๋ฉด paplay๋‚˜ aplay๋กœ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค. ์ž‘์•„ ๋ณด์ด์ง€๋งŒ, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์ด ๋งŽ์€ ์‚ฌ๋žŒ์—๊ฒ ๊ฝค ์“ธ๋ชจ ์žˆ๋‹ค.

49. claude -p๋กœ ๋ฐฐ์น˜ ์ž‘์—…์„ fan-out ํ•˜๊ธฐ

๋…๋ฆฝ๋œ ํŒŒ์ผ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•  ๋•Œ๋Š” ๋น„๋Œ€ํ™”ํ˜• ๋ชจ๋“œ๊ฐ€ ๊ฐ•ํ•˜๋‹ค. ํŠนํžˆ ํŒŒ์ผ ๊ฐ„ ์˜์กด์ด ์•ฝํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, import ์ •๋ฆฌ, ํฌ๋งท ๋ณ€ํ™˜ ๊ฐ™์€ ์ผ์— ์ž˜ ๋งž๋Š”๋‹ค.

for file in $(cat files-to-migrate.txt); do
  claude -p "Migrate $file from class components to hooks" \
    --allowedTools "Edit,Bash(git commit *)" &
done
wait

ํ•ต์‹ฌ์€ ๋…๋ฆฝ์„ฑ์ด ๋ณด์žฅ๋œ ๋Œ€์ƒ๋งŒ ๋ณ‘๋ ฌ๋กœ ๋Œ๋ฆฐ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์„œ๋กœ ์–ฝํžŒ ํŒŒ์ผ์— ๋ฌด๋ฆฌํ•˜๊ฒŒ ์“ฐ๋ฉด ์˜คํžˆ๋ ค ๊ด€๋ฆฌ ๋น„์šฉ์ด ๋Š˜์–ด๋‚œ๋‹ค.

50. ์Šคํ”ผ๋„ˆ ๋ฌธ๊ตฌ๊นŒ์ง€ ๋‚ด ์Šคํƒ€์ผ๋กœ ๋ฐ”๊พธ๊ธฐ

์ด๊ฑด ๊ธฐ๋Šฅ์ ์œผ๋กœ ๊ฐ€์žฅ ๋œ ์ค‘์š”ํ•˜์ง€๋งŒ, ๋งค์ผ ์˜ค๋ž˜ ์“ฐ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์€๊ทผํžˆ ์ฒด๊ฐ์ด ์žˆ๋‹ค. ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์˜ ๊ฐ์ •์„ ๋ฐ”๊ฟ”์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. Builder ๊ธ€์€ โ€œHarry Potter ์ฃผ๋ฌธโ€์ฒ˜๋Ÿผ ๋ถ„์œ„๊ธฐ๋ฅผ ์ •ํ•ด์ฃผ๋ฉด Claude๊ฐ€ ์•Œ์•„์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ๋งํ•œ๋‹ค.

์ž‘์€ ๋””ํ…Œ์ผ์ด์ง€๋งŒ, ์ด๋Ÿฐ ๋งž์ถคํ™”๋Š” ๋„๊ตฌ๋ฅผ ๋” ์ž์ฃผ ์—ด๊ฒŒ ๋งŒ๋“œ๋Š” ํž˜์ด ์žˆ๋‹ค.

์ง€๊ธˆ ๋ฐ”๋กœ ๋ณต๋ถ™ํ•ด์„œ ์จ๋ณผ ์ˆ˜ ์žˆ๋Š” ์šด์˜ ํŒจํ„ด 5๊ฐœ

ํŒจํ„ด 1. ๋ฒ„๊ทธ ์ˆ˜์ •์šฉ ํ”„๋กฌํ”„ํŠธ

@src/auth/middleware.ts ์™€ @tests/auth.spec.ts ๊ธฐ์ค€์œผ๋กœ ๋กœ๊ทธ์ธ ์‹คํŒจ ์›์ธ์„ ์ฐพ์•„์ค˜.
๋จผ์ € ์‹คํŒจ ํ…Œ์ŠคํŠธ์™€ ์—๋Ÿฌ ๋กœ๊ทธ๋ฅผ ์ฝ๊ณ ,
์ˆ˜์ • ํ›„ npm test ์™€ npm run lint ๋ฅผ ์‹คํ–‰ํ•ด.
์‹คํŒจ๊ฐ€ ์žˆ์œผ๋ฉด ๊ณ ์น˜๊ณ  ๋งˆ์ง€๋ง‰์— ๋ณ€๊ฒฝ ํŒŒ์ผ๊ณผ ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋ฅผ ์š”์•ฝํ•ด.

ํŒจํ„ด 2. ์ŠคํŽ™ ์ธํ„ฐ๋ทฐ์šฉ ํ”„๋กฌํ”„ํŠธ

์ƒˆ ๊ธฐ๋Šฅ [๊ธฐ๋Šฅ๋ช…]์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค.
๋‚ด๊ฐ€ ๋น ๋œจ๋ฆฐ ๊ตฌํ˜„ ์„ธ๋ถ€์‚ฌํ•ญ, ์—ฃ์ง€ ์ผ€์ด์Šค, ๋ณด์•ˆ ๊ฑฑ์ •, ์šด์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ์ธํ„ฐ๋ทฐ ํ˜•์‹์œผ๋กœ ๋ฌผ์–ด๋ด.
์ถฉ๋ถ„ํžˆ ์ •๋ฆฌ๋˜๋ฉด SPEC.md์— ์™„์„ฑ ์ŠคํŽ™์„ ์จ์ค˜.
๊ตฌํ˜„์€ ํ•˜์ง€ ๋งˆ.

ํŒจํ„ด 3. ๋ฆฌ๋ทฐ ์ „์šฉ ์„ธ์…˜ ํ”„๋กฌํ”„ํŠธ

์ด ๋ธŒ๋žœ์น˜ ๋ณ€๊ฒฝ์„ fresh context์—์„œ ๋ฆฌ๋ทฐํ•ด์ค˜.
์Šคํƒ€์ผ๋ณด๋‹ค ๋ฆฌ์Šคํฌ๊ฐ€ ํฐ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋ณด๊ณ ,
๋™์‹œ์„ฑ, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ ์†์ƒ ๊ฐ€๋Šฅ์„ฑ, ์ธ์ฆ/๊ถŒํ•œ ์ด์Šˆ๋ฅผ ๋จผ์ € ๋ด์ค˜.

ํŒจํ„ด 4. ์ปดํŒฉ์…˜ ๋Œ€๋น„ ์ƒ์‹œ ๊ทœ์น™

์ปดํŒฉ์…˜ ์‹œ ํ˜„์žฌ ์ž‘์—… ๋ชฉํ‘œ, ์ˆ˜์ • ํŒŒ์ผ ๋ชฉ๋ก, ํ…Œ์ŠคํŠธ ์ƒํƒœ, ์ ˆ๋Œ€ ์ˆ˜์ • ๊ธˆ์ง€ ํŒŒ์ผ์„ ๋ณด์กดํ•˜๋ผ.

ํŒจํ„ด 5. ์•ผ๊ฐ„ ์ž‘์—… ์ „ ์•ˆ์ „ ์„ธํŒ…

  • /sandbox ํ™œ์„ฑํ™”
  • PreToolUse ์œ„ํ—˜ ๋ช…๋ น ์ฐจ๋‹จ
  • PostToolUse ํฌ๋งคํ„ฐ ์‹คํ–‰
  • Stop ํ›… ์•Œ๋ฆผ์Œ ์„ค์ •
  • ์ธ์ฆ/๊ฒฐ์ œ/๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ํŒŒ์ผ์€ ์ˆ˜๋™ ๊ฒ€ํ†  ๋Œ€๊ธฐ

์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋‚˜: ์ดˆ๋ณด์ž / ์‹ค๋ฌด์ž / ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž

์ดˆ๋ณด์ž

  1. 2๋ฒˆ ! ์ธ๋ผ์ธ ์‹คํ–‰
  2. 4๋ฒˆ ํ…Œ์ŠคํŠธ ๋ถ™์ด๊ธฐ
  3. 12๋ฒˆ /clear
  4. 13๋ฒˆ ์›์‹œ ๋กœ๊ทธ ๋ถ™์ด๊ธฐ
  5. 25๋ฒˆ ํŒŒ์ผ ์ง์ ‘ ์ง€์ •

์‹ค๋ฌด์ž

  1. 15๋ฒˆ worktree
  2. 19๋ฒˆ subagent
  3. 28~32๋ฒˆ CLAUDE.md ๊ฒฝ๋Ÿ‰ํ™”
  4. 33~41๋ฒˆ ๊ถŒํ•œ/ํ›… ์ฒด๊ณ„ํ™”
  5. 45~46๋ฒˆ ๋ฆฌ๋ทฐ ๋ถ„๋ฆฌ

๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž

  1. 20๋ฒˆ Agent Teams
  2. 35๋ฒˆ ์ปค์Šคํ…€ subagent
  3. 36๋ฒˆ MCP ์„œ๋ฒ„ ์ตœ์†Œ ์…‹์—…
  4. 49๋ฒˆ batch fan-out
  5. 41๋ฒˆ compaction ์žฌ์ฃผ์ž… ํ›…

์ด ๊ธ€์˜ ํ•ต์‹ฌ์„ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ๋‹ค์‹œ ๋งํ•˜๋ฉด

50๊ฐœ์˜ ํŒ์€ ๊ฐ๊ฐ ๋”ฐ๋กœ ๋ณด๋ฉด ์ž”๊ธฐ์ˆ ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉํ–ฅ์œผ๋กœ ๋ชจ์ธ๋‹ค. Claude Code๋ฅผ ๋” ์ž˜ ์“ฐ๋Š” ์‚ฌ๋žŒ์€ ๋” ๋งŽ์ด ๋ช…๋ นํ•˜๋Š” ์‚ฌ๋žŒ์ด ์•„๋‹ˆ๋ผ, ์„ธ์…˜์„ ๋” ์ž˜ ์ž๋ฅด๊ณ , ๊ฒ€์ฆ์„ ๋” ๋นจ๋ฆฌ ๋ถ™์ด๊ณ , ๊ทœ์น™์„ ๋” ๋ฐ”๊นฅ์œผ๋กœ ๊บผ๋‚ด๊ณ , ์œ„ํ—˜ํ•œ ๊ตฌ๊ฐ„์— ์‚ฌ๋žŒ ๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ฒจ๋‘๋Š” ์‚ฌ๋žŒ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์ •๋ง ์ค‘์š”ํ•œ ๊ฑด ๋ชจ๋“  ํŒ์„ ์˜ค๋Š˜ ๋‹ค ์ ์šฉํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋‹ค. ์ง€๋‚œ ์„ธ์…˜์—์„œ ๊ฐ€์žฅ ๊ฑฐ์Šฌ๋ ธ๋˜ ๋ณ‘๋ชฉ ํ•˜๋‚˜๋ฅผ ๊ณ ๋ฅด๊ณ , ๊ทธ ๋ณ‘๋ชฉ์„ ์—†์• ๋Š” ํŒ ํ•˜๋‚˜๋ฅผ ์˜ค๋Š˜ ๋ถ™์ด๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ ํ•œ ๋ฒˆ์ด ๋‹ค์Œ ์„ธ์…˜๋ถ€ํ„ฐ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ๋ฐ”๊พผ๋‹ค.

๊ณต์‹ Best Practices ๊ธฐ์ค€ ๋ณต์Šต ์ฒดํฌ๋ฆฌ์ŠคํŠธ

์•„๋ž˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋Š” ์›๋ฌธ 50๊ฐœ๋ฅผ ๋‹ค ์ฝ์€ ๋’ค, ์‹ค์ œ๋กœ ๋‚ด ์ž‘์—… ํ™˜๊ฒฝ์— ์ ์šฉ๋๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

์„ธ์…˜ ์šด์˜

  • ์ž‘์—…์ด ๋ฐ”๋€” ๋•Œ /clear๋ฅผ ์Šต๊ด€์ ์œผ๋กœ ์“ฐ๊ณ  ์žˆ๋Š”๊ฐ€?
  • ์ž˜๋ชป ๊ฐ€๋Š” ์ˆœ๊ฐ„ Esc๋กœ ๋นจ๋ฆฌ ๋Š๊ณ  ์žˆ๋Š”๊ฐ€?
  • ๋‘ ๋ฒˆ ์ด์ƒ ๊ฐ™์€ ๊ต์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด ์ƒˆ ์„ธ์…˜์œผ๋กœ ์žฌ์‹œ์ž‘ํ•˜๋Š”๊ฐ€?
  • ์„ธ์…˜ ์ด๋ฆ„์„ ๋ถ™์—ฌ ๋ณ‘๋ ฌ ์ž‘์—…์„ ๊ตฌ๋ถ„ํ•˜๊ณ  ์žˆ๋Š”๊ฐ€?

๊ฒ€์ฆ

  • ๋ชจ๋“  ๊ตฌํ˜„ ์š”์ฒญ์— ํ…Œ์ŠคํŠธ/๋ฆฐํŠธ/์Šคํฌ๋ฆฐ์ƒท ๊ฐ™์€ ๊ฒ€์ฆ ๊ธฐ์ค€์ด ๋ถ™๋Š”๊ฐ€?
  • UI ์ž‘์—…์€ ์‹ค์ œ ํ™”๋ฉด ๋น„๊ต๊นŒ์ง€ ํฌํ•จํ•˜๋Š”๊ฐ€?
  • ๋ฒ„๊ทธ ์ˆ˜์ •์€ ์ฆ์ƒ ์š”์•ฝ์ด ์•„๋‹ˆ๋ผ ๋กœ๊ทธ/์ถœ๋ ฅ ์›๋ฌธ ๊ธฐ์ค€์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š”๊ฐ€?

์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ

  • @ํŒŒ์ผ ์ฐธ์กฐ๋กœ ํƒ์ƒ‰ ๋น„์šฉ์„ ์ค„์ด๊ณ  ์žˆ๋Š”๊ฐ€?
  • ๊นŠ์€ ์กฐ์‚ฌ ์ž‘์—…์€ subagent๋กœ ๋นผ๊ณ  ์žˆ๋Š”๊ฐ€?
  • CLAUDE.md๋Š” ์งง๊ณ  ์ค‘์š”ํ•œ ๊ทœ์น™๋งŒ ๋‚จ๊ฒจ๋‘์—ˆ๋Š”๊ฐ€?
  • ํ•„์š”์‹œ /compact๋‚˜ ์ปดํŒฉ์…˜ ๋ณด์กด ์ง€์‹œ๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š”๊ฐ€?

ํ™˜๊ฒฝ ๊ตฌ์„ฑ

  • ๋ฐ˜๋ณต ์Šน์ธ ๋ช…๋ น์€ /permissions๋กœ ์ •๋ฆฌํ–ˆ๋Š”๊ฐ€?
  • ์žฅ์‹œ๊ฐ„ ์ž์œจ ์ž‘์—…์€ /sandbox ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ฒฉ๋ฆฌํ–ˆ๋Š”๊ฐ€?
  • ํฌ๋งทํŒ…/๋ฆฐํŒ…/๋ณด์•ˆ ์ฐจ๋‹จ์€ Hook์œผ๋กœ ๊ฐ•์ œํ–ˆ๋Š”๊ฐ€?
  • ์ž์ฃผ ๋ฐ˜๋ณต๋˜๋Š” ๋„๋ฉ”์ธ ์ง€์‹์€ skill์ด๋‚˜ subagent๋กœ ์™ธ๋ถ€ํ™”ํ–ˆ๋Š”๊ฐ€?

ํ’ˆ์งˆ ๋งˆ๊ฐ

  • ์ธ์ฆ/๊ฒฐ์ œ/๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์€ ์‚ฌ๋žŒ์ด ๋๊นŒ์ง€ ๊ฒ€ํ† ํ•˜๋Š”๊ฐ€?
  • ์ž‘์„ฑ ์„ธ์…˜๊ณผ ๋ฆฌ๋ทฐ ์„ธ์…˜์„ ๋ถ„๋ฆฌํ•ด fresh context ๋ฆฌ๋ทฐ๋ฅผ ๋Œ๋ฆฌ๋Š”๊ฐ€?
  • PR ๋ฆฌ๋ทฐ๋ฅผ ์ผํšŒ์„ฑ ์ถœ๋ ฅ๋ณด๋‹ค ๋Œ€ํ™”ํ˜•์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š”๊ฐ€?

์ฐธ์กฐ์šฉ ๋งˆ์Šคํ„ฐ ๋ช…๋ น์–ด ๋ชจ์Œ

์„ธ์…˜ ์ด์–ด์„œ ์“ฐ๊ธฐ

claude --continue
claude --resume

๋น„๋Œ€ํ™”ํ˜• ๋ฐฐ์น˜ ์‹คํ–‰

claude -p "Explain what this project does"
claude -p "List all API endpoints" --output-format json
claude -p "Analyze this log file" --output-format stream-json

ํŒฌ์•„์›ƒ ๋ฐฐ์น˜ ์ž‘์—…

for file in $(cat files.txt); do
  claude -p "Migrate $file from React to Vue. Return OK or FAIL." \
    --allowedTools "Edit,Bash(git commit *)"
done

๋ฐ˜๋ณต ์ƒํƒœ ํ™•์ธ

/loop 5m check if the deploy succeeded and report back

์ปจํ…์ŠคํŠธ ์••์ถ•

/compact Focus on the API changes and the list of modified files

์ง์ ‘ ํƒ์ƒ‰๋ณด๋‹ค ํŒŒ์ผ ์ง€์ •

@src/auth/middleware.ts ์™€ @tests/auth.spec.ts ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•ด์ค˜.

์ด ๋ธ”๋ก๋“ค์€ ๊ทธ๋ƒฅ ์˜ˆ์‹œ๊ฐ€ ์•„๋‹ˆ๋ผ, ์‹ค์ œ๋กœ Claude Code๋ฅผ ์šด์˜ ํˆด์ฒ˜๋Ÿผ ์“ฐ๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ ์ œ์ผ ๋จผ์ € ์†์— ์ตํžˆ๋ฉด ์ข‹์€ ๊ธฐ๋ณธ ๋ช…๋ น ์„ธํŠธ๋‹ค.

๋‹ค์Œ ์ฝ๊ธฐ

์ฐธ๊ณ  ๋งํฌ

์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๊ณ ์ง€

์ด ๋ฌธ์„œ๋Š” ๊ณต๊ฐœ๋œ ์›๋ฌธ๊ณผ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒ์„ฑํ˜• AI๋ฅผ ํ™œ์šฉํ•ด ์žฌ๊ตฌ์„ฑํ–ˆ์œผ๋ฉฐ, ์‹ค์ œ ์šด์˜์— ๋ฐ”๋กœ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ์˜ˆ์‹œยท๊ฒ€์ฆ ํฌ์ธํŠธยท๋„์ž… ์ˆœ์„œ๋ฅผ ํ•จ๊ป˜ ์ •๋ฆฌํ–ˆ๋‹ค.