클로드 코드 멀티태스킹 쉽게 하기

채널 아이콘
Brian Casel 구독자 5,910명

요약

이 영상은 Git work trees를 활용해 클로드 코드(Claude Code) 에이전트들을 독립된 브랜치와 코드베이스에서 병렬로 실행하는 워크플로우를 제안한다. Zsh alias 스크립트를 통해 작업 트리 생성, 환경 파일 및 설정 복사를 자동화하고, 각각의 에이전트를 별도 창에 띄워 Rails 앱의 기능을 동시에 개발하는 과정을 시연한다. 마지막에는 변경사항을 메인 브랜치로 병합하고 충돌을 해결해 빠르게 제품을 완성하는 방법까지 살펴본다.

주요 키워드

Git worktrees Claude Code Parallel sessions Zsh alias Slash command Agentic development AgentOS Instrumental Components .env file

하이라이트

  • 🔑 동일 브랜치 충돌 문제: 클로드 코드에 큰 작업을 맡기면 기다리는 동안 같은 git 브랜치를 사용해 진행이 막힌다.
  • 🚀 Git work trees 도입: 전체 코드베이스를 복사한 별도 디렉터리에서 각 브랜치를 독립적으로 작업해 충돌을 방지한다.
  • ⚡️ 폴더 구조 베스트 프랙티스: 프로젝트 폴더 옆에 work-trees 폴더를 두고 내부에 작업 트리를 생성해 nested repository 혼동을 줄인다.
  • 📌 슬래시 커맨드 시도: Cloud Code의 커스텀 슬래시 커맨드로 자동화를 시도했으나 보안 권한 제한으로 cd 작업이 불가능해진다.
  • 🌟 Zsh alias 스크립트: WT alias 하나로 폴더 생성, 브랜치·워커 트리 추가, .env 및 숨김 설정 복사, 새 창 열기까지 한 번에 처리한다.
  • 🤖 병렬 에이전트 실행: drums, bases, keyboards 브랜치별로 work tree를 띄워 세 가지 Claude Code 인스턴스를 동시에 가동한다.
  • 🛠️ Rails 서버 분리 실행: 각 코드베이스를 다른 포트(3002~3004)에서 구동해 개별 데이터베이스로 독립 테스트한다.
  • ✅ 브랜치 병합 및 충돌 해결: 작업 완료 후 메인 브랜치로 순차 병합하며 충돌을 해결해 최종 기능을 통합한다.
  • ✨ 에이전틱 개발 예고: 앞으로 agentic development와 AgentOS 운영체제에 관한 다음 영상을 예고하며 논의를 확장한다.

용어 설명

Git work trees

하나의 Git 저장소를 여러 디렉터리에 복사해 각기 다른 브랜치에서 독립적으로 작업할 수 있도록 하는 기능

Claude Code

Anthropic의 AI 기반 자율 코딩 에이전트로, 코드 생성·수정·리뷰를 자동화하여 개발 생산성을 높인다

Zsh alias

Z shell 환경에서 자주 쓰는 명령어를 별칭(alias)으로 등록해 단축 실행할 수 있는 기능

Slash command

Cloud Code 내에서 `/`로 시작하는 커스텀 명령어로 특정 작업을 자동화하는 방법

Agentic development

여러 AI 에이전트를 운용해 프로젝트를 분업화·병렬 처리하는 개발 패러다임

AgentOS

여러 에이전트 관리·조율을 위한 운영체제형 라이브러리로, 대규모 프로젝트 위임을 지원한다

Instrumental Components

Ruby on Rails용 컴포넌트 생성 라이브러리로, 리소스·뷰·라우터 등 반복 코드를 자동 생성한다

.env 파일

환경 변수 설정을 저장하는 파일로, 개발·테스트·배포 환경을 구분해 민감 정보를 관리한다

[00:00:00] 클로드 코드 워크플로우 소개

클로드 코드의 강력함을 소개하고, 하나의 브랜치에서 에이전트를 실행하면 대기 시간이 길어져 생산성이 떨어지는 문제를 제시한다. 이어 Git work trees를 활용한 병렬 워크플로우를 예고한다.

Claude Code는 AI와 함께 개발하는 전문가들에게 가장 유능한 도구이지만, 매일 사용하는 워크플로우에서 여전히 거슬리는 부분이 있습니다. Claude Code가 큰 작업을 수행하는 동안 기다려야 하는 시간이 많다는 점입니다.
Claude가 작업하는 동안 개발자는 별로 할 수 있는 게 없습니다. Claude Code가 현재 작업하고 있는 같은 git 브랜치에서 작업하기 때문에, 동시에 다른 작업을 하거나 여러 에이전트를 실행하면 충돌이 발생할 수 있습니다.
이 영상에서는 Git work trees를 사용한 올바른 방법을 보여드리겠습니다. 필요할 때마다 빠르고 쉽게 여러 Claude Code 에이전트를 병렬로 실행할 수 있는 워크플로우를 설정하여 흐름을 유지하고 제품을 빠르게 출시할 수 있습니다.
이전 영상에서 Claude Code가 자율적인 코딩 에이전트로서 얼마나 뛰어난지 보여드렸고, 멀티태스킹이 자연스러운 다음 단계임을 설명했습니다. 또한 Builder Briefing이라는 무료 주간 뉴스레터를 통해 AI 개발 관련 정보를 제공하고 있습니다.
여러 Claude Code 인스턴스를 별도의 터미널 탭에서 실행하는 것은 불가능합니다. 같은 코드베이스에서 작업하는 한 모든 터미널 탭은 같은 Git 브랜치에서 작업하게 되어 충돌이 발생할 수 있습니다.
Anthropic에서는 이 문제를 Git work trees를 사용한 병렬 Claude Code 세션으로 해결하라고 제안합니다. Git work trees는 단순히 다른 브랜치를 만드는 것보다 더 효과적인 해결책입니다.
[00:02:32] Git work trees 개념

Git work trees가 프로젝트 전체를 별도 디렉터리에 복사해 각기 다른 브랜치에서 작업할 수 있게 해주는 기능임을 설명한다. 작업 후에는 메인 브랜치로 병합해 코드 변경을 통합한다.

Git work tree는 단일 브랜치에서 작업하는 대신 전체 코드베이스를 시스템의 다른 디렉토리로 복사합니다. 이를 통해 에이전트나 개발자가 복사된 코드베이스에서 별도의 브랜치로 작업할 수 있으며, 작업 완료 후 평소처럼 메인 브랜치로 병합할 수 있습니다.
실제 예제로 Rails 앱인 Music Shop을 사용해 git work tree의 작동 방식을 보여줍니다. 이 앱은 악기 재고를 추적하는 간단한 CRUD 앱으로, 현재 기타만 추가되어 있으며 향후 다른 악기들을 추가할 예정입니다.
Git work tree를 만들기 전에 시스템에 복사된 코드베이스를 저장할 폴더를 만들어야 합니다. 프로젝트 폴더와 인접한 'music shop work trees' 폴더를 생성하여 관련된 work tree들을 쉽게 관리할 수 있도록 합니다.
[00:04:45] 기본 워크 트리 생성 실습

프로젝트 폴더 옆에 work-trees 디렉터리를 만들고 `git worktree add` 명령으로 feature 브랜치를 복사해 생성하는 과정을 단계별로 보여준다.

실제로 git work tree를 생성하는 과정을 보여줍니다. 'git work tree add' 명령어를 사용하여 'feature name'이라는 새 브랜치를 만들고, 복사된 코드베이스를 music shop work trees 디렉토리 안의 feature name 폴더에 저장합니다.
Git 워크트리를 사용하여 메인 프로젝트 외부에 별도의 작업 공간을 만드는 방법을 설명합니다. 전체 코드베이스가 복사되어 각 기능마다 독립적인 워크트리를 생성할 수 있습니다.
git worktree list 명령어로 현재 워크트리 목록을 확인하고, 워크트리 폴더를 메인 프로젝트 외부에 만드는 이유를 설명합니다.
클로드가 워크트리를 메인 프로젝트 내부에 만들지 않는 것을 권장하는 이유를 설명합니다. git 추적, 중첩 저장소 문제, 도구 스캔 등의 문제가 발생할 수 있습니다.
[00:07:06] 세션 분리 및 폴더 구조 best practice

워크 트리 목록 조회, 메인 프로젝트 내에 nested repo를 만들지 않는 이유, 폴더 구조 정리 방법을 안내하고 별도 터미널 및 데스크톱에서 분리 실행하는 방법을 시연한다.

프로젝트 조직화를 위한 개인적인 방법을 설명합니다. 각 프로젝트마다 메인 폴더와 워크트리 폴더를 분리하여 관리하는 것이 효율적입니다.
feature name 브랜치에서 클로드를 실행할 수 있지만, 커서에서 작업 내용을 검토할 때 발생할 수 있는 문제점을 언급합니다.
기존 방식의 한계를 설명하며, 메인 폴더의 파일들 때문에 두 번째 커서 창을 열어야 한다고 언급합니다. 단일 모니터 환경에서 두 번째 데스크탑을 활용해 메인 브랜치와 feature 브랜치 사이를 전환하는 방법을 소개합니다.
매번 수동으로 git work tree를 생성하는 것은 번거롭기 때문에 자동화의 필요성을 제기합니다. 클라우드 코드 자체를 사용해 work tree 생성과 설정을 자동화하는 아이디어를 소개합니다.
[00:09:00] 슬래시 커맨드 자동화 시도

Cloud Code 내 custom slash command(`create worktree.md`)를 작성해 워크 트리 생성 과정을 자동화하려다, 보안 권한 제한으로 외부 디렉터리 이동이 불가능해진 사례를 공유한다.

클라우드 코드용 커스텀 슬래시 명령을 만드는 구체적인 방법을 설명합니다. claude 폴더 안에 commands 폴더를 만들고, create worktree.md 파일을 생성하는 과정을 안내합니다.
git work tree 생성 명령의 세부 단계를 설명합니다. 현재 프로젝트 폴더명을 가져오고, 인접한 폴더를 만들어 work trees로 명명하며, 브랜치 이름을 인수로 전달하는 방법을 다룹니다.
실제로 create workree 명령을 실행하는 과정을 보여줍니다. 'example feature'라는 브랜치명을 인수로 전달하고, 자동편집을 활성화하여 명령이 성공적으로 실행되는 것을 확인합니다.
프로젝트에서 git worktree 생성 과정을 시연하며, 폴더명을 제대로 가져오고 인접한 폴더와 git worktree를 성공적으로 생성한 것을 확인합니다.
작업이 상당히 진행되었지만 Claude가 보안 권한 때문에 메인 프로젝트 폴더 외부로 cd할 수 없다는 문제점을 발견하고 설명합니다.
[00:12:00] Zsh alias 스크립트 완전 자동화

터미널 alias와 Zsh 스크립트를 이용해 워크 트리 생성, 브랜치 추가, .env·숨김 설정 복사, Cursor로 새 창 열기까지 한 번에 처리하는 방식을 개발한다.

현재 방법의 한계를 인정하면서도, 새 창 열기와 자동 CD 등 모든 과정을 한 번에 자동화하는 더 나은 솔루션이 필요하다고 판단합니다.
터미널 alias와 스크립트를 활용한 완전 자동화 방안을 제안하며, 독립적인 스크립트 작성을 위해 Claude나 ChatGPT를 직접 사용하는 워크플로우를 소개합니다.
ZSH 환경에서 'WT 브랜치명' 형태의 alias를 만들기 위한 구체적인 프롬프트를 제시하며, 프로젝트 폴더 생성부터 git worktree 생성, cursor로 새 창 열기까지의 전체 과정을 자동화하는 스크립트 요구사항을 설명합니다.
Claude artifact를 통해 생성된 스크립트가 만족스럽다고 평가하며, 이런 방식으로 작은 스크립트를 만드는 과정을 자주 활용한다고 설명합니다.
기존 스크립트 대신 자신이 만든 커스터마이징된 워크트리 스크립트를 사용하겠다고 설명합니다. 각자 시스템과 프로젝트에 맞게 조정해야 한다고 조언합니다.
자신의 Zshrc 파일에 있는 WT 별칭과 스크립트를 소개합니다. 기본적으로 폴더 생성과 이름 지정 등의 작업을 수행한다고 설명합니다.
스크립트에서 중요한 부분들을 강조합니다. .env 파일이 워크트리 폴더에 기본적으로 복사되지 않기 때문에 스크립트가 이를 처리하도록 했다고 설명합니다.
claude 폴더와 cursor 폴더 같은 숨겨진 폴더들도 복사되도록 설정했다고 설명합니다. 이를 통해 규칙과 설정들이 함께 복사됩니다.
Ruby on Rails용 instrumental components 라이브러리와 AgentOS라는 새로운 시스템을 소개합니다. AgentOS는 대규모 프로젝트를 에이전트에게 위임하는 운영체제라고 설명합니다.
[00:14:50] 병렬 에이전트 실행 데모

`WT drums`, `WT bases`, `WT keyboards` 명령으로 세 가지 work tree를 빠르게 생성하고 각 디렉터리에서 Claude Code 세션을 동시에 실행한다.

스크립트의 나머지 부분은 거의 동일하며 성공 메시지를 보여준다고 설명합니다. 이제 실제로 시도해보자고 제안합니다.
음악 상점 프로젝트에 새로운 기능들을 추가할 계획을 설명합니다. 이미 기타를 추가했고, 이제 드럼, 키보드, 베이스를 추가하려고 합니다.
새로운 워크트리 스크립트를 사용해서 워크트리를 실행하고, 각 워크트리에서 Claude Code를 열어 세 개의 다른 인스턴스로 작업하겠다고 설명합니다.
WT 스크립트를 사용해서 드럼부터 시작합니다. 매우 빠르게 실행되어 두 번째 cursor 창이 열렸다고 설명합니다.
raycast 단축키를 사용해서 창을 다른 데스크톱으로 옮기고 크기를 조정합니다. Mac OS 단축키로 메인 프로젝트 폴더와 드럼 폴더 사이를 이동할 수 있다고 설명합니다.
워크트리 폴더 구조를 확인하며 새로운 드럼 폴더가 생성되었고, 전체 코드베이스가 복사되었다고 확인합니다.
메인 폴더와 drums 폴더에서 각각 해당하는 브랜치에 있음을 확인하고, 베이스도 같은 방식으로 작업하기로 결정합니다.
여러 데스크탑에 작업 환경을 구성하여 메인 폴더(데스크탑 1), drums(데스크탑 2), bases(데스크탑 3), keyboards(데스크탑 4)로 각각 분리하여 배치합니다.
drums 워크트리에서 Claude Code를 실행하고, 이전에 설정한 권한과 Claude MD 파일이 자동으로 복사되어 있음을 확인합니다. 새 프로젝트에서는 claude init 명령을 실행하는 것이 좋다고 설명합니다.
bases와 keyboards에도 Claude를 실행하여 총 3개의 Claude Code 인스턴스가 서로 다른 브랜치와 코드베이스에서 동시에 실행되고 있음을 보여줍니다.
drums 워크트리에서 Claude Code에게 앱의 drums 리소스를 생성하라는 프롬프트를 준비하고, Ruby on Rails용 instrumental components 라이브러리를 사용하도록 지시하는 내용을 설명합니다.
드럼 리소스 생성을 위해 Claude에게 지시하며, 라우트, 컨트롤러, 모델, 뷰 생성과 마이그레이션 실행, 그리고 네비게이션에 드럼 추가를 요청합니다.
[00:20:05] Rails 서버 분리 테스트

각 워크 트리에서 Rails 서버를 다른 포트(3002~3004)로 구동해 독립 데이터베이스로 기능(드럼·베이스·키보드) 추가 결과를 확인한다.

베이스와 키보드 브랜치에서도 동일한 작업을 실행하여 세 개의 병렬 작업을 시작합니다.
드럼, 베이스, 키보드 추가 작업이 모두 완료되었음을 확인합니다.
각 브랜치의 서버를 다른 포트에서 실행하는 팁을 설명합니다. 메인 프로젝트는 포트 3000, 드럼은 3002에서 실행합니다.
포트 3002의 드럼 서버에서 별도 데이터베이스를 사용하여 기타와 드럼 기능을 확인합니다.
포트 3003에서 베이스 서버를 실행하여 기타와 베이스 기능을 확인합니다.
포트 3004에서 키보드 서버를 실행하여 키보드 기능을 확인합니다.
세 개의 병렬 작업이 완료되었으므로 각 브랜치의 서버를 중단하고 작업을 커밋하여 메인 프로젝트에 병합 준비를 합니다.
[00:22:35] 병합 및 충돌 해결

드럼·베이스·키보드 브랜치의 변경사항을 메인 브랜치로 순차적으로 merge하고, 발생한 충돌을 검토 및 해결해 최종 기능을 통합한다.

메인 브랜치로 돌아가 데모를 위해 풀 리퀘스트 과정을 생략하고 바로 drums 브랜치를 병합하여 localhost 3000에서 서버를 실행합니다.
home, guitar, drums가 추가된 상태에서 bases와 keyboards 브랜치를 병합하는 과정에서 예상대로 병합 충돌이 발생하여 이를 해결하는 과정을 설명합니다.
Cursor가 자동으로 bases 부분의 코드를 수정해주어 병합 충돌을 해결하고, 마지막으로 keyboards 브랜치까지 성공적으로 병합하여 모든 악기가 메인 코드베이스에 통합됩니다.
Claude Code를 활용한 멀티태스킹과 병렬 에이전트 실행 방법을 시연하며, 전문 개발자들이 에이전틱 개발 시대로 진입하고 있는 현재의 빠른 변화에 대해 언급하고 다음 영상 시청을 권유합니다.
[00:24:10] 결론 및 에이전틱 개발 전망

Git work trees 기반 병렬 워크플로우의 이점을 정리하고, 앞으로 agentic development와 AgentOS 관련 다음 영상에서 더 심층적으로 다룰 것을 예고한다.

타임라인 정보가 없습니다.

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