Claude-skill-registry context-worktree
새 작업 요청 시 기존 작업과의 맥락 유사성을 판단하고, 비유사한 경우 자동으로 git worktree를 생성하여 새 브랜치에서 작업합니다. 작업 시작, 새 기능 구현, 다른 이슈 작업 시 자동 활성화됩니다.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/context-worktree" ~/.claude/skills/majiayu000-claude-skill-registry-context-worktree && rm -rf "$T"
manifest:
skills/data/context-worktree/SKILL.mdsource content
Context Worktree 스킬
Overview
새로운 작업 요청이 기존 작업과 맥락상 유사한지 판단하고, 비유사한 경우 git worktree를 통해 독립된 브랜치에서 작업하도록 자동 분리하는 스킬입니다.
핵심 기능:
- 맥락 유사성 판단: 파일 경로, 커밋 히스토리, LLM 의미 분석을 통한 종합 판단
- 자동 worktree 생성: 비유사 판단 시 자동으로 새 worktree 및 브랜치 생성
- 작업 컨텍스트 분리: 독립적인 작업을 별도 공간에서 진행하여 충돌 방지
- Git repo 검증: Git 저장소가 아닌 경우 자동 스킵
중요: Git 저장소가 아닌 디렉토리에서는 이 스킬이 적용되지 않습니다.
When to Use
이 스킬은 다음 상황에서 자동으로 활성화됩니다:
명시적 요청:
- "새로운 기능 만들어줘"
- "다른 이슈 작업해줘"
- "이 버그 수정해줘" (현재 작업과 무관한 버그)
- "worktree로 분리해줘"
자동 활성화:
- 사용자가 구현 요청을 할 때
- 기존 작업 브랜치에서 새로운 작업 시작 시
- 긴급 핫픽스가 필요할 때
스킵 조건:
- 현재 디렉토리가 Git 저장소가 아닌 경우
- 이미 해당 작업을 위한 worktree가 존재하는 경우
Prerequisites
도구 요구사항
# Git 버전 확인 (worktree는 Git 2.5+ 필요) git --version
스크립트 설치
# 스크립트 경로를 PATH에 추가하거나 직접 실행 chmod +x /path/to/agent-skills/development/context-worktree/scripts/context-worktree.sh # 또는 alias 설정 alias cw='/path/to/agent-skills/development/context-worktree/scripts/context-worktree.sh'
환경 조건
# Git 저장소인지 확인 git rev-parse --is-inside-work-tree
Workflow
전체 흐름도 (스크립트 사용)
┌─────────────────────────────────────────────────────────────┐ │ 1. 컨텍스트 수집 (1회 스크립트 호출) │ │ └─ context-worktree.sh collect │ │ → 구조화된 컨텍스트 정보 반환 │ ├─────────────────────────────────────────────────────────────┤ │ 2. LLM 유사성 판단 │ │ └─ 수집된 정보 + 새 요청 비교 │ ├─────────────────────────────────────────────────────────────┤ │ 3. 분기 결정 │ │ ├─ 유사 → 현재 브랜치에서 작업 계속 │ │ └─ 비유사 → Step 4로 │ ├─────────────────────────────────────────────────────────────┤ │ 4. Worktree 생성 (1회 스크립트 호출) │ │ └─ context-worktree.sh create -b <branch> -d <desc> │ └─────────────────────────────────────────────────────────────┘ 토큰 절약: 6+ 도구 호출 → 1~2회 호출
Step 1: 컨텍스트 수집 (스크립트)
# 한 번의 호출로 모든 컨텍스트 수집 context-worktree.sh collect
출력 예시:
## Context Summary | 항목 | 값 | |------|-----| | Repository | my-app | | Current Branch | feature/user-auth | | Default Branch | main | | Has Uncommitted | false | | Active Worktrees | 1 | ### Recent Commits (last 5) feat(auth): JWT 토큰 생성 로직 추가 feat(auth): 로그인 API 엔드포인트 구현 ### Changed Directories `src/auth,src/middleware` ### Recent Scopes `auth`
수집 정보:
| 항목 | 용도 |
|---|---|
| 브랜치명 | 현재 작업 맥락 파악 (feature/, fix/, hotfix/ 등) |
| 최근 커밋 | scope, type 분석 |
| Changed Directories | 작업 영역 파악 |
| Recent Scopes | Conventional commit scope 패턴 |
| Has Uncommitted | 진행 중 작업 확인 |
Step 2: LLM 맥락 유사성 판단
2.1 파일 경로 패턴 분석
유사 판단 기준: - 같은 최상위 디렉토리 (src/auth/* ↔ src/auth/*) - 같은 모듈/기능 영역 - 관련 테스트 파일 (src/auth/* ↔ tests/auth/*) 비유사 판단 기준: - 완전히 다른 디렉토리 (src/auth/* ↔ src/payment/*) - 인프라 vs 애플리케이션 (infra/* ↔ src/*) - 프론트엔드 vs 백엔드 (frontend/* ↔ backend/*)
2.2 커밋 히스토리 scope/type 분석
유사 판단: - 같은 scope: feat(auth) ↔ fix(auth) - 관련 type: feat(auth) ↔ test(auth) 비유사 판단: - 다른 scope: feat(auth) ↔ feat(payment) - hotfix vs feature: hotfix/* ↔ feature/*
2.3 LLM 의미적 유사성 판단
다음 요소를 종합하여 LLM이 판단:
## 현재 작업 컨텍스트 - 브랜치: feature/user-authentication - 최근 커밋: - feat(auth): JWT 토큰 생성 로직 추가 - feat(auth): 로그인 API 엔드포인트 구현 - 변경 파일: src/auth/*, src/middleware/auth.ts ## 새 요청 "결제 시스템에 카드 결제 기능을 추가해줘" ## 판단 비유사 - 결제 시스템은 인증 시스템과 독립적인 기능 영역
2.4 종합 유사성 점수
유사성 점수 = (파일 경로 점수 × 0.3) + (커밋 히스토리 점수 × 0.3) + (LLM 판단 점수 × 0.4) - 0.7 이상: 유사 → 현재 브랜치 유지 - 0.7 미만: 비유사 → 새 worktree 생성
Step 3: Worktree 생성 (스크립트)
비유사로 판단된 경우 스크립트로 worktree 생성:
# 새 worktree 생성 context-worktree.sh create -b feat/payment-card -d "카드 결제 기능 구현" # 핫픽스 (main 기반) context-worktree.sh create -b hotfix/login-bug -d "로그인 버그 수정" -base main
출력 예시:
## Worktree Created | 항목 | 값 | |------|-----| | Branch | feat/payment-card | | Path | /home/user/projects/my-app-worktrees/feat-payment-card | | Base | main | ### Next Steps cd /home/user/projects/my-app-worktrees/feat-payment-card **Description**: 카드 결제 기능 구현
브랜치명 생성 규칙
패턴: <type>/<short-description> 예시: - feat/payment-card-integration - fix/login-timeout-issue - hotfix/security-patch - refactor/database-connection
Worktree 경로 규칙
기본 경로: ../<repo-name>-worktrees/<branch-name> 예시: - 현재: /home/user/projects/my-app - worktree: /home/user/projects/my-app-worktrees/feat-payment-card
Step 4: 작업 환경 안내
worktree 생성 후 사용자에게 안내:
## 새 Worktree 생성됨 새 작업은 기존 작업과 맥락이 다르므로 별도 worktree를 생성했습니다. | 항목 | 값 | |------|-----| | 브랜치 | feat/payment-card-integration | | 경로 | /home/user/projects/my-app-worktrees/feat-payment-card-integration | | 기반 브랜치 | main | ### 다음 단계 해당 worktree에서 작업을 계속하려면: \`\`\`bash cd /home/user/projects/my-app-worktrees/feat-payment-card-integration \`\`\` 또는 현재 세션에서 작업하려면 경로를 변경합니다.
Examples
예시 1: 유사한 작업 (분리 불필요)
현재 상태: - 브랜치: feature/user-authentication - 최근 커밋: feat(auth): JWT 토큰 생성 로직 - 변경 파일: src/auth/jwt.ts, src/auth/login.ts 사용자: 로그아웃 기능도 추가해줘 Claude: 맥락 유사성을 판단합니다... ## 유사성 분석 결과 | 기준 | 점수 | 이유 | |------|------|------| | 파일 경로 | 1.0 | 같은 src/auth/ 영역 | | 커밋 히스토리 | 1.0 | 동일 scope (auth) | | LLM 판단 | 0.9 | 인증 기능의 일부 | | **종합** | **0.96** | | → 유사: 현재 브랜치(feature/user-authentication)에서 작업 계속 [로그아웃 기능 구현 시작...]
예시 2: 비유사한 작업 (worktree 생성)
현재 상태: - 브랜치: feature/user-authentication - 최근 커밋: feat(auth): JWT 토큰 생성 로직 - 변경 파일: src/auth/jwt.ts 사용자: 결제 시스템에 카드 결제 기능 추가해줘 Claude: 맥락 유사성을 판단합니다... ## 유사성 분석 결과 | 기준 | 점수 | 이유 | |------|------|------| | 파일 경로 | 0.1 | src/payment/ ≠ src/auth/ | | 커밋 히스토리 | 0.1 | 다른 scope (payment ≠ auth) | | LLM 판단 | 0.2 | 독립적인 기능 영역 | | **종합** | **0.14** | | → 비유사: 새 worktree 생성 ## 새 Worktree 생성됨 | 항목 | 값 | |------|-----| | 브랜치 | feat/payment-card-integration | | 경로 | ../my-app-worktrees/feat-payment-card-integration | | 기반 브랜치 | main | worktree로 이동하여 작업을 시작합니다... [결제 기능 구현 시작...]
예시 3: 긴급 핫픽스
현재 상태: - 브랜치: feature/dashboard-redesign - 변경 파일: src/components/Dashboard.tsx (uncommitted) 사용자: 프로덕션에서 로그인이 안 되는 긴급 버그가 있어. 빨리 수정해줘! Claude: 긴급 핫픽스 요청을 감지했습니다. 맥락 유사성을 판단합니다... ## 유사성 분석 결과 | 기준 | 점수 | 이유 | |------|------|------| | 파일 경로 | 0.0 | Dashboard ≠ Auth | | 커밋 히스토리 | 0.0 | 다른 scope | | LLM 판단 | 0.1 | 긴급 핫픽스는 별도 처리 필요 | | **종합** | **0.04** | | → 비유사: 새 worktree 생성 (hotfix) ## 새 Worktree 생성됨 | 항목 | 값 | |------|-----| | 브랜치 | hotfix/login-critical-bug | | 경로 | ../my-app-worktrees/hotfix-login-critical-bug | | 기반 브랜치 | main | **주의**: 현재 브랜치에 uncommitted 변경사항이 있습니다. 핫픽스 완료 후 원래 브랜치로 돌아가서 작업을 계속하세요. [핫픽스 작업 시작...]
예시 4: Git 저장소가 아닌 경우
사용자: 새로운 API 엔드포인트 만들어줘 Claude: Git 저장소 확인 중... ⚠️ 현재 디렉토리는 Git 저장소가 아닙니다. context-worktree 스킬을 스킵하고 일반 작업을 진행합니다. [API 엔드포인트 구현 시작...]
Configuration
Worktree 경로 커스터마이징
기본 경로 패턴을 변경하려면:
# 환경 변수로 설정 export WORKTREE_BASE_PATH="/custom/path/worktrees"
유사성 임계값 조정
# ~/.agents/config/context-worktree.yaml (선택적) similarity: threshold: 0.7 # 0.0 ~ 1.0, 높을수록 엄격 weights: file_path: 0.3 commit_history: 0.3 llm_judgment: 0.4
브랜치 네이밍 규칙
branch_naming: prefix_map: feature: "feat" bugfix: "fix" hotfix: "hotfix" refactor: "refactor" separator: "/" word_separator: "-"
Best Practices
DO:
- 새로운 독립적 작업 시작 전 맥락 확인
- uncommitted 변경사항이 있으면 먼저 stash 또는 commit
- worktree 작업 완료 후 정리 (
)git worktree remove - 브랜치명에 작업 내용을 명확히 표현
- 긴급 핫픽스는 항상 main/master 기반으로 생성
DON'T:
- 같은 브랜치를 여러 worktree에서 체크아웃
- worktree 내부에서 다시 worktree 생성
- 완료된 worktree를 정리하지 않고 방치
- uncommitted 변경사항을 무시하고 다른 작업 시작
- 기반 브랜치를 잘못 선택하여 충돌 유발
Troubleshooting
Worktree 생성 실패
# 이미 해당 브랜치가 다른 worktree에서 체크아웃된 경우 git worktree list # 해결: 기존 worktree 제거 또는 다른 브랜치명 사용 git worktree remove /path/to/existing/worktree
Worktree 정리
# 사용하지 않는 worktree 확인 git worktree list # worktree 제거 git worktree remove /path/to/worktree # 또는 강제 제거 git worktree remove --force /path/to/worktree # 정리 (삭제된 worktree 참조 제거) git worktree prune
브랜치 충돌
# 같은 이름의 브랜치가 이미 존재하는 경우 # 해결: 다른 브랜치명 사용 또는 기존 브랜치 삭제 git branch -d existing-branch # 머지된 경우 git branch -D existing-branch # 강제 삭제
uncommitted 변경사항 처리
# 변경사항 임시 저장 git stash push -m "WIP: 현재 작업" # 다른 작업 완료 후 복원 git stash pop
Integration
이 스킬은 다음 스킬과 연동됩니다:
| 스킬 | 연동 방식 |
|---|---|
| git-commit-pr | worktree에서 작업 완료 후 커밋/PR 생성 시 |
| context-manager | 새 worktree에서 컨텍스트 재로드 |
Script Commands
스크립트 명령어 요약
# 컨텍스트 수집 (구조화된 출력) context-worktree.sh collect # worktree 생성 context-worktree.sh create -b <branch> [-d <description>] [-base <branch>] # worktree 목록 context-worktree.sh list # 정리 (stale 참조 제거) context-worktree.sh clean # 도움말 context-worktree.sh help
Git Worktree 네이티브 명령어 참고
# worktree 목록 확인 git worktree list # worktree 추가 (새 브랜치) git worktree add -b <branch> <path> <base-branch> # worktree 추가 (기존 브랜치) git worktree add <path> <existing-branch> # worktree 제거 git worktree remove <path> # worktree 이동 git worktree move <old-path> <new-path> # 정리 (prune) git worktree prune
Resources
| 파일 | 설명 |
|---|---|
| 메인 자동화 스크립트 (컨텍스트 수집, worktree 생성) |