[00:00]
지금 시점에서 Claude Code는 확실히
[00:01]
AI와 함께 개발하는 전문가들에게
[00:03]
가장 유능한 도구인 것 같습니다
[00:05]
그리고 매일 더욱 인상적입니다
[00:08]
하지만 Claude Code와 함께
[00:10]
매일 작업하는 제 워크플로우에서
[00:13]
여전히 하나 거슬리는 부분이 있습니다
[00:16]
Claude Code에게 큰 작업을 주면
[00:18]
실행시킨 후 기다립니다
[00:20]
그리고 또 기다리죠
[00:23]
계속 기다리고
[00:25]
지켜봅니다. 작업을 하고 있으니까요
[00:28]
기다리면서 말이죠. Claude가 작업하는 동안
[00:31]
저는 별로 할 수 있는 게 없습니다
[00:34]
Claude Code가 제가 현재 작업하고 있는
[00:35]
같은 git 브랜치에서 작업하고 있기 때문입니다
[00:37]
만약 제가 이 기능을 계속
[00:39]
진행하고 싶다면 Claude가 저기서
[00:41]
작업하는 동안 여기서 말이죠
[00:43]
또는 여러 Claude Code 에이전트를 실행하고 싶다면
[00:46]
모두 같은 브랜치에서 작업하게 되어
[00:47]
많은 충돌이 발생하고 엉망이 될 것입니다
[00:50]
이 영상에서는 Git work trees를 사용하여
[00:51]
올바른 방법을 보여드리겠습니다
[00:53]
더 중요한 것은 필요할 때마다
[00:55]
빠르고 쉽게 여러 Claude Code 에이전트를
[00:58]
병렬로 실행할 수 있는 워크플로우를
[01:00]
설정하는 것입니다
[01:02]
그래서 우리가 흐름을 유지하고
[01:05]
계속 진전을 이루며
[01:07]
제품을 훨씬 빠르게 출시할 수 있습니다
[01:10]
이 채널의 지난 영상에서
[01:11]
Claude Code에 대해 설명하고
[01:13]
cursor 같은 다른 에이전트 코딩 도구들과
[01:16]
어떻게 함께 사용할 수 있는지 보여드렸습니다
[01:19]
그 영상에서 Claude Code가
[01:22]
자율적인 코딩 에이전트로서
[01:24]
얼마나 뛰어난지 보여드렸습니다
[01:27]
그래서 Claude Code로 멀티태스킹하는 것이
[01:29]
가장 자연스러운 다음 단계인 것 같습니다
[01:31]
이 채널의 구독자라면
[01:32]
제가 여러분과 저 같은 전문가들과 이야기하고 있다는 걸 아실 겁니다
[01:35]
우리는 AI로 개발할 때
[01:37]
앞서 나가고 싶어합니다
[01:39]
또한 저는 Builder Briefing이라는
[01:42]
주간 뉴스레터를 보내고 있습니다
[01:44]
무료이고 개발자로서 예리함을 유지하는 데
[01:46]
도움이 되는 5분 읽기입니다
[01:49]
buildermethods.com에서 Builder Briefing을 받아보실 수 있습니다
[01:52]
그리고 구독자들은 올해 후반에 출시될
[01:54]
제 Claude Code 코스에 대해 가장 먼저 알게 될 것입니다
[01:56]
이제 여러분이 궁금해할 수 있는 것은
[01:58]
왜 여러 Claude Code 인스턴스를
[02:00]
별도의 터미널 탭에서 열 수 없는지입니다
[02:02]
음, 같은 코드베이스에서 작업하는 한
[02:05]
모든 터미널 탭은
[02:08]
같은 Git 브랜치에서 작업하게 됩니다
[02:09]
터미널을 실행할 수 있는 여러 애플리케이션이
[02:11]
있어도 마찬가지입니다
[02:13]
당연해 보일 수 있지만
[02:15]
명확히 하자면 여러분과
[02:17]
팀의 다른 사람들이나
[02:19]
다른 에이전트들이 모두 같은 코드베이스의
[02:22]
같은 파일에서 같은 Git 브랜치에서
[02:24]
작업한다면 분명히 충돌이
[02:27]
발생할 수 있습니다
[02:29]
그렇다면 Anthropic에서는
[02:32]
이 문제를 어떻게 해결하라고 제안할까요?
[02:34]
Claude Code 문서에서
[02:35]
일반적인 워크플로우 페이지 아래에 묻혀있는
[02:38]
Git work trees를 사용하여
[02:41]
병렬 Claude Code 세션을 실행하는
[02:43]
섹션이 있습니다
[02:45]
Git work trees란 무엇일까요?
[02:47]
단순히 다른 브랜치를 만드는 대신
[02:49]
같은 파일 세트로 작업하는 대신, git work
[02:51]
tree는 전체 코드베이스, 모든 파일과
[02:54]
폴더를 시스템의 다른 디렉토리로 복사합니다.
[02:57]
이렇게 하면 여러분이나 에이전트가
[02:59]
복사된 코드베이스에서 자체 브랜치로
[03:02]
작업할 수 있게 됩니다. 즉, 작업이
[03:04]
메인 코드베이스와 완전히 다른
[03:06]
파일 세트에서 진행됩니다. 그리고
[03:09]
복사된 코드베이스의 work tree 브랜치에서
[03:11]
작업이 완료되면, 평소처럼
[03:13]
메인 브랜치로 다시 병합할 수 있습니다.
[03:15]
좋습니다. 이제 실제로 보겠습니다.
[03:17]
먼저 간단한 예제로 시작하고
[03:18]
그다음 전체 워크플로를 자동화해서
[03:20]
git work tree를 사용하여 여러 에이전트를
[03:22]
빠르고 쉽게 실행할 수 있도록
[03:24]
만들어보겠습니다. 오늘 제가 작업하고 있는 것은
[03:27]
예제 Rails 앱입니다. Music Shop이라고 불리는
[03:30]
앱으로, 다양한 악기의 재고를 추적하는
[03:32]
간단한 앱입니다. 지금까지는
[03:34]
기타만 추가했고, 새로운 기타를
[03:36]
만들고 이름을 지정하고 편집하고
[03:38]
보는 것이 가능합니다. 아주 간단한
[03:40]
CRUD 앱입니다. 이 비디오에서는
[03:43]
재고 추적기에 다른 악기들을 추가하여
[03:45]
이 앱을 확장해나갈 것입니다.
[03:47]
먼저 git work tree가 어떻게 작동하는지
[03:49]
이해해보겠습니다. 보시다시피
[03:50]
제 프로젝트의 메인 브랜치에 있고
[03:52]
Finder에서 열어보겠습니다.
[03:55]
시스템의 temp 폴더 안에
[03:56]
music shop이 있습니다. 이것이
[03:58]
실제 코드베이스입니다. 여기서
[04:01]
앱의 모든 파일과 폴더를 볼 수 있습니다.
[04:04]
git work tree를 만들기 전에
[04:05]
시스템에 폴더를 만들어야 합니다.
[04:08]
더 많은 work tree를 만들면서
[04:10]
복사된 코드베이스들을 넣을 곳이 필요합니다.
[04:12]
temp 폴더 안에 두겠습니다.
[04:14]
제가 하는 방식은 프로젝트 폴더와
[04:16]
인접한 work trees 폴더를
[04:18]
만드는 것입니다. 제 프로젝트 폴더는
[04:21]
music shop이라고 하니까
[04:23]
music shop dash work trees로 하겠습니다.
[04:25]
이제 폴더를 보겠습니다.
[04:27]
이제 메인 애플리케이션과 방금 만든
[04:30]
music shop work trees 디렉토리가 있습니다.
[04:32]
보시다시피 서로 바로 옆에 있어서
[04:34]
각 프로젝트와 관련된 work tree들을
[04:37]
쉽게 볼 수 있습니다. 이제
[04:39]
git work tree를 실행할 수 있습니다.
[04:40]
git work tree add를 입력합니다.
[04:45]
또한 이것에 대한 브랜치를 만들어야 합니다.
[04:47]
feature name이라고 하겠습니다.
[04:50]
그다음 파일을 복사할 목적지를
[04:53]
지정해야 합니다. 한 레벨 뒤로 가서
[04:54]
music shop work trees 디렉토리로
[04:55]
가겠습니다. 그리고 복사된 코드베이스의
[04:57]
폴더 이름을 지정해야 합니다.
[05:00]
브랜치 이름과 같게 하는 것을 좋아해서
[05:02]
feature name으로 하겠습니다.
[05:04]
이제 work tree가 생성되었습니다.
[05:07]
폴더를 확인해보겠습니다.
[05:10]
이제 메인 music shop 프로젝트가 있습니다.
[05:12]
그리고 music shop work trees 안에
[05:14]
feature name이라는 폴더가 있고
[05:15]
그 안에는
[05:17]
work tree가 생성되었습니다.
[05:20]
폴더를 살펴보겠습니다.
[05:23]
복사된 코드베이스의 폴더 이름을
[05:26]
브랜치 이름과 같게 유지하고 싶어서
[05:27]
feature name으로 하겠습니다.
[05:29]
work tree가 생성되었습니다.
[05:32]
폴더를 확인해보겠습니다.
[05:34]
이제 저희가 가지고 있는 것은
[05:36]
메인 뮤직 샵 프로젝트가 있습니다. 그리고
[05:39]
뮤직 샵 워크트리 안에는 이
[05:42]
feature name이라는 폴더가 있습니다. 그리고
[05:44]
그 안에는 전체 앱이 있습니다. 다시 말하지만, 모든
[05:47]
파일과 폴더, 전체 코드베이스가
[05:49]
git을 포함해서 여기에 복사되었습니다. 그래서
[05:51]
추적이 가능합니다. 앞으로
[05:53]
이제 새로운 큰 기능마다 더 많은
[05:55]
워크트리를 계속 만들 수 있습니다
[05:58]
제가 작업할 기능이든
[06:00]
개별 클로드 코드 에이전트가
[06:02]
작업할 기능이든 말입니다. 그래서 이 폴더는
[06:04]
워크트리로 계속 채워질 것입니다
[06:06]
제가 워크트리를 삭제하지 않는 한
[06:08]
나중에 할 수 있습니다. 이제 여기서
[06:10]
git worktree list를 실행해서 현재 가지고 있는
[06:13]
모든 워크트리의 목록을 볼 수 있습니다
[06:15]
보시다시피 여기에 메인
[06:17]
브랜치가 있고 그 다음에는
[06:19]
다른 워크트리의 위치를 알려줍니다.
[06:21]
이제 궁금하실 수 있습니다. 왜 제가
[06:23]
이 뮤직 샵 워크트리 폴더를
[06:25]
메인 프로젝트 폴더 밖에 만들었는지
[06:28]
말입니다. 왜 그냥
[06:30]
메인 프로젝트 안에 하위 폴더로 만들어서
[06:33]
워크트리를 메인 프로젝트 안에
[06:34]
넣지 않았을까요? 실제로 제가 클로드에게
[06:36]
바로 그 질문을 해서
[06:38]
최선의 관행이 무엇인지
[06:39]
잘 이해하게 되었습니다. 그리고 클로드는
[06:42]
여러 이유로 권장되지 않는다고 말합니다.
[06:44]
첫 번째는, git이 모든
[06:46]
워크트리 디렉토리를 추적하게 된다는 것입니다
[06:48]
git ignore에 추가하지 않는 한 말입니다
[06:50]
물론 할 수는 있지만 그게
[06:51]
오류가 발생하기 쉽습니다. 실수로
[06:54]
이렇게 복사된 전체 코드베이스를
[06:56]
저장소에 커밋할 수 있습니다.
[06:58]
git과 다양한 도구들이 중첩된
[07:01]
저장소로 인해 혼란스러워할 수 있습니다.
[07:02]
또한 코드베이스와 IDE에 따라
[07:06]
다양한 도구들이 의존성을 가지고
[07:07]
프로젝트의 디렉토리를 재귀적으로
[07:10]
스캔합니다. 다시 말하지만 메인 디렉토리를
[07:12]
스캔하고 그 안에 전체 복사본까지
[07:14]
스캔하면 복잡해질 수 있습니다.
[07:16]
그래서 더 나은 접근 방식은
[07:18]
프로젝트가 있고 그 다음에
[07:19]
워크트리 디렉토리가 있는 것입니다.
[07:22]
이 경우에는 그냥 바로 옆에
[07:24]
다른 디렉토리를 만들라고 제안합니다.
[07:25]
저는 워크트리라는 폴더 안에 넣는 것을 좋아합니다.
[07:30]
활성 프로젝트가 있을 때
[07:32]
여기에 많은 프로젝트가 있을 것이기 때문입니다.
[07:33]
그래서 각 프로젝트마다 메인 폴더와
[07:36]
워크트리 폴더가 있어야 하고
[07:38]
그 안에 모든 트리를 넣습니다.
[07:41]
이게 제가 정리하는
[07:42]
방법입니다. 이제 저는
[07:44]
feature name 브랜치에 있고
[07:46]
터미널이 현재 브랜치를 보여주도록
[07:49]
설정되어 있습니다. 그래서 이것으로도
[07:51]
충분합니다. 여기서 클로드를 실행해서
[07:53]
클로드가 feature name 코드베이스 안에서
[07:55]
그 브랜치에서 작업하도록 할 수 있습니다.
[07:58]
그것도 잘 작동할 것입니다. 하지만
[08:01]
함정이 될 수 있는 것은 여기 커서에서
[08:03]
클로드가 한 작업을 검토하거나
[08:05]
feature name 브랜치와 코드베이스의
[08:07]
파일 변경사항을 검토하고 싶을 때
[08:10]
여기서는 찾을 수 없다는 것입니다
[08:14]
여기 있는 파일들은 여전히 내 메인 뮤직샵 폴더에 있기 때문이에요.
[08:17]
그래서 제가 하는 일은 실제로 두 번째 커서 창을 여는 것입니다.
[08:20]
이렇게 하고 나서
[08:22]
폴더를 열 수 있습니다.
[08:24]
자, 이제 여기에 두 번째 커서 창이 있습니다.
[08:28]
복사된 코드베이스와
[08:30]
그에 해당하는 터미널과 브랜치를 가지고 있습니다.
[08:33]
그리고 여기서 Claude를 실행할 수 있습니다.
[08:35]
실제로 제가 좋아하는 것은, 저는 단일 모니터를 사용하는 이상한 사람 중 하나입니다.
[08:38]
믿기 어려우시겠지만요.
[08:39]
이걸 두 번째 데스크탑으로 옮기고
[08:41]
그러면 메인 브랜치인 뮤직샵과
[08:43]
여기 있는 feature name 브랜치 사이를 전환할 수 있습니다.
[08:46]
바로 이렇게요.
[08:48]
나중에 이 과정을 3-4번 반복하면
[08:51]
다양한 브랜치들이 실행되고 있을 거예요.
[08:53]
물론 이 전체 과정이 많은 작업이었죠.
[08:55]
새로운 git work tree에서 새로운 클라우드 코드 에이전트를 시작하려고 할 때마다
[08:56]
매번 이런 일을 하고 싶지는 않습니다.
[08:58]
그래서 자동화해 봅시다.
[09:00]
물론 제 첫 번째 아이디어는
[09:02]
클라우드 코드 자체를 사용해서
[09:04]
work tree를 생성하고 자기 자신을 설정하는 작업을 처리하는 것입니다.
[09:07]
자체 worktree 브랜치에서 작업을 시작할 수 있도록 말이죠.
[09:09]
그를 위해 클라우드 코드용 커스텀 슬래시 명령을 생성해볼 수 있습니다.
[09:12]
어디까지 할 수 있는지 봅시다.
[09:15]
좋아요. 커스텀 슬래시 명령을 만들려면
[09:17]
claude 폴더로 들어가야 합니다.
[09:18]
아직 없다면 클라우드 폴더를 만드세요.
[09:22]
그 안에 commands를 만들고,
[09:24]
그 안에 다시
[09:27]
create worktree.md라는 파일을 만들겠습니다.
[09:28]
좋습니다. 여기에
[09:30]
클라우드 코드가 이 명령을 호출할 때마다
[09:32]
따를 수 있는 지침을 넣을 것입니다.
[09:33]
이미 준비해 놓았습니다.
[09:36]
git work tree를 만들기 위해 다음 단계를 따르라고 되어 있습니다.
[09:40]
현재 프로젝트 폴더의 이름을 가져오세요.
[09:42]
이 경우에는 뮤직샵이라는 이름을 가져올 것입니다.
[09:45]
현재 프로젝트 폴더에 인접한 새 폴더를 만들고
[09:46]
그 프로젝트의 폴더 이름-work trees로 명명하세요.
[09:49]
어떻게 하는지 예시를 제공했습니다.
[09:51]
그리고 git work tree와 브랜치를 만들고
[09:53]
인수를 전달할 것입니다.
[09:55]
이것이 브랜치 이름이 될 것이고
[09:57]
사용하려는 폴더 이름이 될 것입니다.
[09:59]
그리고 그 폴더 안에 저장할 것입니다.
[10:01]
그런 다음 클라우드 코드에게 계속해서
[10:04]
workre 폴더 안에 생성된 그 폴더로 CD하라고 요청하고 있습니다.
[10:06]
좋습니다. 그럼 Claude를 실행해 보겠습니다.
[10:09]
물론 커서에 내장된 Claude 통합을 사용할 수 있지만
[10:11]
어떤 이유에서인지 터미널에서 사용하는 것을 더 좋아합니다.
[10:13]
좋습니다. 그럼 계속해서
[10:15]
새로운 명령인 create workree를 사용하겠습니다.
[10:17]
여기 맨 위에 있네요.
[10:19]
탭을 누르고 브랜치 이름을 넣겠습니다.
[10:22]
이것이 슬래시 명령으로 전달하는 인수입니다.
[10:24]
이것을 example feature라고 부르겠습니다.
[10:26]
좋습니다. 이것을 실행하고
[10:28]
어떻게 되는지 봅시다.
[10:30]
자동편집을 켜서 그냥 진행하도록 하겠습니다.
[10:32]
보기 좋네요.
[10:34]
프로젝트 폴더 이름을 가져온 것 같습니다.
[10:36]
좋습니다.
[10:38]
좋아요. 그럼 인접한 폴더를 만들었습니다.
[11:02]
프로젝트 폴더명을 제대로 가져온 것 같네요.
[11:03]
좋습니다.
[11:08]
좋아요. 인접한 폴더를 생성했고
[11:10]
폴더
[11:11]
그리고 git worktree를 생성하고 있습니다.
[11:14]
아하. 이건 뭔가요? 좋아요. 여기서
[11:17]
작은 문제가 발생했네요. 우리가
[11:19]
실제로 꽤 많이 진행했습니다. 실제로
[11:20]
폴더명을 가져왔고, work trees를
[11:22]
폴더를 생성했고 이 경우 그 폴더가
[11:25]
이미 생성되어 있었습니다. 그리고
[11:27]
git work tree를 생성할 수 있었고 그 안에서
[11:30]
example feature를 볼 수 있습니다. 그러니까
[11:32]
다시 말하지만 전체 코드베이스를 복사했습니다. 그래서
[11:34]
거기까지는 성공했지만 Claude 자체가
[11:37]
그 폴더로 cd할 수 없습니다. 왜냐하면 현재
[11:41]
메인 프로젝트 폴더의 제약 안에서
[11:43]
작업하고 있기 때문입니다. 그래서
[11:45]
Claude는 보안
[11:46]
권한이 그 폴더에서 나와서
[11:49]
내 파일 시스템의 다른 곳으로 갈 수 없습니다.
[11:51]
Claude는 메인 프로젝트 폴더와
[11:54]
하위 폴더 안에서만 작동할 수 있습니다.
[11:56]
그래서 이 오류가
[11:58]
여기서 우리에게 말해주고 있는 것입니다. 그리고
[12:00]
그런 것이 Claude가
[12:02]
여기서 우리에게 준 결론입니다. 그래서 좋은
[12:05]
시작입니다. 그리고 아마도
[12:06]
이런 것이 작동하도록 만들 수 있을 것입니다. 하지만
[12:08]
제 의견으로는 여전히 몇 가지 더
[12:10]
처리해야 할 단계가 있습니다. 예를 들어
[12:12]
새 창을 열고 그곳으로 cd하고
[12:14]
준비를 마치는 것입니다. 저는
[12:16]
모든 것이 한 번에 자동화되기를 원합니다.
[12:19]
이 모든 것보다 훨씬 빠르게 말입니다. 그래서 제
[12:21]
다음 아이디어는 터미널 alias를 사용하는 것입니다.
[12:24]
모든 작업을 수행할 수 있는 스크립트와 함께
[12:27]
심지어 새 창을 열고
[12:29]
그곳으로 CD하는 것까지 말입니다. 그래서 그
[12:31]
스크립트를 시작하기 위해 Claude가
[12:33]
작성하도록 하는 것은 어떨까요? 맞죠? 그래서
[12:35]
이런 종류의 것, 즉 독립적인
[12:36]
스크립트를 만들 때
[12:38]
제 시스템에 설치할 예정이므로
[12:40]
cursor나 claude code를 사용하는 대신
[12:43]
Claude 자체로 바로 가거나
[12:45]
때로는 Chat GPT를 사용하고
[12:47]
여기에 프롬프트를 입력하고
[12:49]
이 작은 독립적인 스크립트를
[12:51]
여기서 만들어 달라고 합니다. 좋아요, 여기
[12:53]
제가 주는 프롬프트입니다.
[12:55]
저는 ZSH를 사용하고 있습니다. 그래서
[12:58]
ZSHRC 파일용 스크립트를 만들어서
[13:01]
이런 식으로 alias를 실행할 수 있도록 합니다. WT 공백
[13:04]
브랜치 이름이 되기를 원하고 그것이
[13:06]
다음을 수행해야 한다고 설명하고 있습니다. 기본적으로
[13:08]
우리가 해왔던 것처럼 폴더를 생성하고
[13:10]
현재 프로젝트 폴더에 인접한
[13:11]
프로젝트 이름을 적절히 가져오고
[13:14]
그리고 git work tree와
[13:16]
브랜치를 생성합니다. alias 인수를 통해 전달된
[13:19]
이름을 사용하여 새로운
[13:22]
기능 이름 work tree 폴더를 새
[13:25]
창에서 cursor를 사용하여 열고
[13:27]
스크립트의 모든 줄 위에 주석을 추가하여
[13:30]
읽어보고
[13:31]
그것이 만든 것을 이해할 수 있도록 요청하고 있습니다.
[13:36]
좋아요. Claude artifact를 사용하고 있네요.
[13:38]
좋습니다. 이것은 거의
[13:41]
좋아 보입니다. 저는 그냥 보여주고 싶었습니다.
[13:43]
Claude와 작업하는 과정을
[13:45]
이런 작은 스크립트를 만들기 위해
[13:47]
저는 이런 종류의 일을 항상
[13:48]
합니다. 그리고 실제로 이미 제
[13:51]
버전을 만들었습니다. 그래서 사용하지
[13:52]
이걸 사용하지 않을 거에요. 이미 제가
[13:53]
만든 걸 사용할 거거든요. 여러분도
[13:54]
각자 시스템에 맞게 커스터마이징하고
[13:56]
작업하는 프로젝트 유형에 맞게
[13:58]
조정하고 싶을 거에요.
[14:00]
물론입니다. 제 것을 보여드리자면
[14:02]
이게 제 시스템의 Zshrc 파일입니다.
[14:05]
이게 제 WT 별칭과 스크립트입니다.
[14:09]
기본적으로 모든 작업을 수행하죠.
[14:11]
폴더를 생성하고, 부모 폴더 이름을 가져와서
[14:13]
그에 맞게 이름을 붙입니다.
[14:15]
하지만 이 부분이 실제로 중요해요.
[14:17]
여러분 스크립트에서도 이런 식으로
[14:18]
해야 할 겁니다. 하나는
[14:21]
.env 파일을 복사하는 것입니다.
[14:25]
그 파일이 있다면 말이죠.
[14:27]
왜냐하면 그 파일은 기본적으로
[14:30]
워크트리 폴더에 복사되지 않거든요.
[14:31]
그래서 스크립트가 그 부분을 처리하도록
[14:34]
했습니다. 또한 이런 다른 숨겨진
[14:35]
폴더들이 있으면 그것들도
[14:38]
복사되도록 하고 있어요. claude
[14:40]
폴더를 가져오고 싶고, cursor 폴더도
[14:42]
가져와서 claude와 cursor의
[14:44]
규칙과 설정도 복사되도록 합니다.
[14:47]
Ruby on Rails용 instrumental components
[14:49]
라이브러리를 사용해요. Rails를 쓰시는
[14:52]
분들이라면 흥미로울 것 같아요.
[14:53]
그리고 제가 만든 AgentOS라는 것도
[14:55]
사용하기 시작했어요. AgentOS에 대한
[14:58]
영상도 곧 올릴 예정입니다.
[14:59]
그건 대규모 프로젝트를 에이전트에게
[15:02]
위임하는 전체 운영체제예요.
[15:04]
나중에 더 자세히 다룰 예정이지만
[15:06]
그것도 별도 폴더가 있을 거에요.
[15:08]
그래서 이 모든 것들이
[15:09]
워크트리 폴더에 복사되도록
[15:11]
하고 싶어요. 이 블록이 그걸 처리합니다.
[15:14]
나머지는 거의 동일하고
[15:16]
성공 메시지를 보여줍니다.
[15:17]
그럼 직접 시도해보겠습니다.
[15:19]
그리고 이제 우리 음악 상점 프로젝트에
[15:21]
새로운 기능들을 만들어보겠습니다.
[15:23]
이미 기타를 추가했습니다.
[15:26]
이제 드럼, 키보드, 베이스를
[15:28]
이 앱에서 재고 관리할
[15:30]
나머지 세 악기로 추가하고 싶어요.
[15:33]
이것들을 구축하기 위해
[15:35]
새로운 워크트리 스크립트를 사용해서
[15:37]
워크트리를 실행할 거에요.
[15:39]
그다음 각 워크트리에서 Claude Code를
[15:42]
열어서 세 개의 다른
[15:44]
Cloud Code 인스턴스가 모두
[15:45]
이 프로젝트에 추가 기능을
[15:47]
넣도록 할 거에요.
[15:50]
좋아요. 제 스크립트 WT를 사용해서
[15:52]
드럼부터 시작해보겠습니다.
[15:55]
네, 정말 빠르게 되었네요.
[15:59]
놓치셨을 수도 있지만 실제로
[16:02]
두 번째 cursor 창이 열렸어요.
[16:03]
raycast 단축키를 사용해서
[16:05]
그 창을 다른 데스크톱으로 옮기고
[16:08]
다른 raycast 단축키로 크기를 맞추겠습니다.
[16:11]
이제 Mac OS 단축키를 사용해서
[16:14]
이 음악 상점 같은 메인 프로젝트
[16:16]
폴더와 여기 드럼 폴더 사이를
[16:19]
이동할 수 있어요.
[16:21]
그리고 여기가 드럼 폴더입니다.
[16:23]
그럼 이제 폴더를 확인해보겠습니다.
[16:25]
워크트리 아래에 이전 예시들이 있고
[16:27]
이제 드럼이라는 새로운 폴더가
[16:30]
생겼습니다. 마찬가지로
[16:32]
전체 코드베이스가 복사되었습니다.
[16:34]
다시 말하지만 전체 코드베이스가
[16:37]
그 안에 복사되었어요.
[16:39]
좋아 보이네요. 여기서 메인 폴더를 보고 있습니다. 메인 브랜치에 있고요.
[16:41]
그리고 여기는 drums 폴더에 있습니다.
[16:44]
터미널에서 보시면 drums 브랜치에 있다는 걸 알 수 있습니다.
[16:46]
그리고 터미널에서 보시면 drums 브랜치에 있다는 걸 알 수 있습니다.
[16:48]
좋아요. 베이스도 같은 방법으로 해보겠습니다.
[16:51]
좋아요. 베이스도 같은 방법으로 해보겠습니다.
[16:56]
네, 이것을 다른 데스크탑으로 옮기겠습니다.
[16:58]
이제 이렇게 할 수 있습니다. 이것은 데스크탑 1입니다.
[17:02]
이것은 제 메인 폴더입니다. 이것은 데스크탑 2입니다.
[17:05]
drums 폴더와 drums 브랜치가 있습니다.
[17:08]
그리고 이것은 데스크탑 3입니다.
[17:10]
여기는 bases입니다.
[17:12]
그리고 여기는 bases 브랜치입니다.
[17:16]
하나 더 해보겠습니다.
[17:19]
화면을 지우고 WT를 다시 실행하겠습니다.
[17:21]
이번에는 keyboards입니다.
[17:24]
좋아요. 여기가 keyboards 창입니다.
[17:27]
이것을 다른 데스크탑으로 옮기겠습니다.
[17:30]
좋아요. 이제 데스크탑 1로 돌아왔습니다.
[17:32]
여기는 메인 폴더, music shop입니다.
[17:34]
여기는 데스크탑 2, drums입니다.
[17:37]
여기는 데스크탑 3, bases입니다.
[17:41]
그리고 여기는 데스크탑 4, keyboards입니다.
[17:44]
이제 drums로 이동해서 Claude Code를 실행하겠습니다.
[17:46]
Claude만 입력하면 됩니다.
[17:48]
그런데 말입니다.
[17:51]
여기에 이전에 만든 명령어가 복사되어 있습니다.
[17:53]
지금은 사용하지 않을 것입니다.
[17:55]
설정도 복사되었습니다.
[17:57]
이전에 부여한 권한들이
[17:59]
이제 여기에 미리 부여되어 있습니다.
[18:02]
그리고 이 목록은 시간이 지나면서 늘어날 수 있습니다.
[18:05]
Claude MD 파일도 복사되었습니다.
[18:06]
사실 이 부분은 영상 초반에 다루지 않았는데,
[18:10]
새 프로젝트에서는
[18:11]
Claude Code를 사용하기 시작할 때
[18:12]
항상 claude init을 실행하는 것이 좋습니다.
[18:14]
Claude가 실제로
[18:16]
자체적으로 코드베이스를 탐색하고
[18:17]
자체 claude MD 파일을 작성해서
[18:20]
코드베이스에서 모든 것이 어떻게 작동하는지
[18:22]
파악하게 됩니다.
[18:24]
메인 프로젝트에서 그 작업을 했고
[18:27]
워크트리 폴더를 만들 때
[18:29]
drums 프로젝트에 복사되었습니다.
[18:31]
그리고 여기도 마찬가지입니다.
[18:33]
bases에도 Claude를 실행해보겠습니다.
[18:35]
그리고 여기도 마찬가지입니다.
[18:41]
그리고 keyboards에도 Claude를 실행하겠습니다.
[18:43]
이제 Claude Code 인스턴스 3개가
[18:46]
3개의 다른 브랜치에서 실행되고 있습니다.
[18:50]
3개의 다른 코드베이스에서 말입니다.
[18:53]
이것을 정말 명확하게 보여드리기 위해
[18:56]
폴더를 확인해보겠습니다.
[18:58]
이것은 music shop입니다.
[19:01]
메인 프로젝트 폴더입니다.
[19:03]
이것은 worktrees 폴더입니다.
[19:05]
그리고 안에는 bases, drums, keyboards가 있습니다.
[19:09]
코드베이스의 3개 다른 복사본입니다.
[19:12]
여기 drums 워크트리에 있고
[19:14]
Claude Code에게 내 앱에서
[19:16]
drums 리소스를 생성하라는 프롬프트를 주겠습니다.
[19:19]
drums, bases, keyboards를 추가하기 위한
[19:21]
프롬프트를 이미 준비했습니다.
[19:23]
이 영상과는 완전히 관련이 없지만
[19:26]
기본적으로 여기서 하는 일은
[19:27]
각각에 대해 instrumental components
[19:29]
컴포넌트 생성기 라이브러리를
[19:31]
Ruby on Rails용으로 사용하라고 말하는 것입니다.
[19:34]
이것은 Rails 관련 주제입니다.
[19:36]
다른 날에 다룰 별도의 주제입니다.
[19:38]
하지만 저는 실제로
[19:40]
해당 기능을 사용해서 드럼 리소스를 생성하도록 지시하고 있습니다
[19:43]
이렇게 하면 라우트와 컨트롤러
[19:46]
모델과 뷰가 생성되고
[19:48]
마이그레이션이 실행됩니다
[19:50]
또한 드럼을 네비게이션에 추가하도록 요청하고 있습니다
[19:52]
각 브랜치마다 네비게이션에 하나씩 추가되어야 합니다
[19:57]
충돌이 발생할 수 있지만
[19:58]
그건 나중에 처리하면 됩니다
[20:01]
어쨌든 시작해 보겠습니다
[20:02]
자, 이제 실행되고 있습니다
[20:04]
좋습니다. 이제 다른 것도 실행해 보겠습니다
[20:06]
여기는 베이스 브랜치입니다
[20:09]
베이스 폴더로 이동해서
[20:11]
동일한 명령어를 붙여넣고 실행하겠습니다
[20:13]
마지막은 키보드입니다
[20:15]
이것도 실행되고 있습니다
[20:18]
자동 편집 수락이 활성화되어 있는지 확인하겠습니다
[20:23]
드럼 추가 작업이 완료된 것 같습니다
[20:25]
베이스 작업도 완료되었고
[20:28]
키보드도 완료되었습니다
[20:30]
이제 드럼 코드베이스로 돌아가서
[20:32]
별도의 터미널에서
[20:35]
확인해보고 살펴보겠습니다
[20:37]
여기서 팁을 하나 드리자면
[20:39]
서버를 원래 서버와 다른 포트에서 실행하는 것입니다
[20:42]
만약 여기로 돌아가서 음악 상점을 실행한다면
[20:45]
Rails 서버를 실행하는 단축키가 있습니다
[20:49]
이는 포트 3000에서 실행됩니다
[20:52]
보시다시피 음악 상점
[20:54]
메인 프로젝트 폴더에는
[20:57]
기타만 있습니다
[20:59]
하지만 드럼 폴더에서는 다시
[21:04]
동일한 단축키를 사용하는데
[21:07]
Rails 서버를 포트 3002에서 실행합니다
[21:10]
이것이 두 번째 서버가 됩니다
[21:12]
크롬으로 돌아가서
[21:15]
포트 3002로 이동하면
[21:20]
별도의 데이터베이스이므로
[21:21]
새로운 사용자를 생성해야 합니다
[21:26]
오케이, 정말 잘 작동했습니다
[21:29]
드럼 네비게이션 항목이 추가되었습니다
[21:30]
새로운 드럼을 생성할 수 있고
[21:32]
잘 작동하는 것 같습니다
[21:34]
이제 기타와 드럼이 있습니다
[21:36]
훌륭하네요. 이제 베이스로 가보겠습니다
[21:38]
여기서 다른 터미널을 열고
[21:41]
RR3을 실행하겠습니다
[21:42]
이는 제 시스템의 별칭으로
[21:45]
Rails 서버를 포트 3003에서 실행합니다
[21:50]
여기로 돌아가서 localhost 3003으로 이동하면
[21:54]
이것도 별도의 데이터베이스입니다
[21:56]
이 서버에는 기타와 베이스가 있습니다
[22:00]
저것은 기타와 드럼이 있고, 이것은 기타만 있습니다
[22:05]
마지막으로 키보드를 확인해보겠습니다
[22:06]
RR4를 실행하겠습니다
[22:09]
포트 3004에서 서버를 실행합니다
[22:10]
여기에 키보드가 있고
[22:13]
새로운 키보드를 생성할 수 있습니다
[22:16]
잘 작동합니다. 메인 폴더에는
[22:19]
여전히 기타만 있습니다
[22:21]
이 세 가지를 메인 프로젝트에 병합해야 합니다
[22:23]
먼저 드럼 브랜치에서 서버를 중단하고
[22:27]
커밋하겠습니다
[22:29]
잊기 전에 베이스 작업도 커밋하겠습니다
[22:35]
베이스 추가라고 하겠습니다. 이에 대한 터미널 단축키가 있습니다
[22:40]
그리고 키보드도 마찬가지입니다
[22:47]
키보드도 커밋하겠습니다
[22:56]
좋아요. 자, 이제 메인 브랜치로 돌아가 보겠습니다.
[23:00]
보통은 풀 리퀘스트를 하는 것이 좋겠지만,
[23:02]
이번 데모에서는 빠르게 진행하기 위해
[23:03]
바로 drums를 병합해보겠습니다.
[23:06]
네, drums를 병합했고 이제 localhost 3000에서
[23:09]
서버를 실행하고 있습니다.
[23:11]
이게 프로젝트의 메인 폴더입니다.
[23:14]
이제 home, guitar, drums가 있네요.
[23:16]
이제 나머지 두 개인 bases와 keyboards도 병합해보겠습니다.
[23:20]
네, 이런 상황은 어느 정도 예상했습니다.
[23:22]
bases를 추가할 때 병합 충돌이 발생했습니다.
[23:25]
그럼 이 문제를 해결해보겠습니다.
[23:28]
팀원이 기여한 코드와 병합할 때
[23:30]
병합 충돌을 해결하는 것과 같은 방식으로
[23:32]
해결해야 하는 거죠.
[23:34]
자, 이걸 조금 정리해보겠습니다.
[23:36]
Cursor가 bases 부분의 나머지를
[23:37]
자동으로 수정해줬네요.
[23:40]
이제 문제없이 진행할 수 있을 것 같습니다.
[23:42]
확인해보겠습니다. 네, 잘 됐네요.
[23:45]
bases가 추가되었습니다.
[23:47]
이제 guitars, drums, bases가 있습니다.
[23:49]
마지막으로 keyboards만 남았네요.
[23:51]
아마 같은 과정을 거쳐야 할 것 같습니다.
[23:56]
git merge keyboards를 실행해보겠습니다.
[23:57]
네, 모든 설정이 완료되었습니다.
[24:00]
이제 메인 코드베이스에 모든 악기가
[24:04]
설정되었습니다.
[24:05]
이것이 Claude Code로 멀티태스킹하여
[24:08]
여러 에이전트를 병렬로 실행하는 방법입니다.
[24:10]
정말 강력한 기능입니다.
[24:13]
이 채널을 구독하신 후에
[24:16]
전문 개발자들에게 Claude Code가
[24:18]
가져다준 변화에 대해 다룬
[24:20]
다른 영상도 준비했습니다.
[24:21]
우리는 에이전틱 개발 시대로
[24:24]
진입하고 있습니다.
[24:26]
정말 흥미롭고 재미있는 변화입니다.
[24:28]
모든 것이 매우 빠르게 변화하고 있습니다.
[24:32]
그럼 다음 영상에서 뵙겠습니다.