Jujutsu 워크플로우
에이전트 코딩 시 .jj/ 저장소가 존재한다면 원시 git보다 jj(Jujutsu)를 우선 사용하십시오 — jj는 더 뛰어난 로컬 변경 계층입니다. Git은 표준 원격/PR/CI/감사 인터페이스로 유지됩니다: 변경은 jj로, 확인은 읽기 전용 Git으로 수행합니다.
1. 먼저 감지 및 차단
${CLAUDE_SKILL_DIR}/scripts/detect_jj_state.sh를 실행하거나 수동으로 확인하십시오:
.jj/존재 → jj 저장소:jj사용, 변경하는 원시git은 절대 사용 금지..jj/및.git/→ 동일 위치:jj로 변경, Git으로 읽기, Git 인덱스/스테이징 절대 건드리지 않음..git/만 존재 → 일반 Git 저장소: 요청 없이jj를 도입하지 않음.
참조/git-interop.md를 참조하십시오.
2. 에이전트 안전 규칙(절대 준수)
- 출력 명령에는 항상
--no-pager사용;jj config set --user ui.paginate never설정. - 항상
-m사용. 절대 편집기/TUI 폼을 실행하지 않음 —jj describe|commit|squash(인자 없음),jj split(대화형),jj squash -i,jj resolve,jj diffedit등은 에이전트를 멈추게 합니다. jj는jj명령 실행 시에만 작업 복사본을 스냅샷하며, 모든 파일 쓰기 시점이 아닙니다.
참조/agent-safety.md를 참조하십시오.
3. 편집 루프
jj --no-pager status
# 파일 편집 (다음 jj 명령에서 스냅샷됨)
jj --no-pager diff
jj describe -m "<프로젝트 관례적 메시지>"
jj new -m "<다음 단위>" # 논리 단위당 하나의 변경 — 커밋 비대화 방지
혼합 변경을 비대화형으로 분할하려면: jj split <경로> -m "<메시지>". 참조/command-map.md를 참조하십시오.
4. 복구(되돌리기 가능)
jj --no-pager op log → jj undo (마지막 작업) 또는 jj op restore <ID>. 충돌은 일급 시민: jj status가 플래그 표시; 마커를 편집하여 해결한 후 확인. 참조/recovery-playbook.md를 참조하십시오.
5. Git을 통한 핸드오프
jj git fetch
jj rebase -d <기본-브랜치>
jj bookmark create <브랜치> -r @-
jj git push --bookmark <브랜치> # 새 북마크는 직접 푸시
보호된/기본 브랜치에 푸시하지 않음; 허용되지 않으면 공개 기록을 다시 쓰지 않음. gh/glab으로 PR 열기. 참조/pr-handoff.md를 참조하십시오.
6. 병렬 에이전트
동시 에이전트당 하나의 jj workspace — 작업 복사본을 절대 공유하지 않음. 참조/parallel-agents.md를 참조하십시오.
7. "완료" 전 확인
${CLAUDE_SKILL_DIR}/scripts/verify_handoff.sh를 실행하거나, jj --no-pager status, jj --no-pager log --limit 10, jj --no-pager diff --stat, git status --short --branch를 보고하십시오. 정확한 명령어와 출력을 보고; 없으면 "완료/테스트 완료/준비 완료"라고 절대 말하지 않음; 강제 푸시, 복구, 충돌을 공개하십시오.
에이전트에게 jj가 git보다 나은 이유 (그리고 사용하지 말아야 할 경우): 참조/why-jj-for-agents.md를 참조하십시오.