worktrees-hives 스킬
worktrees-hives 하이브리드 오케스트레이터를 위한 설치 가능한 에이전트 스킬입니다.
사용 시기
다음과 같은 경우 이 스킬을 사용합니다:
- GitHub 또는 Linear 이슈에서 작업 발견
- 코드 변경을 위한 작업자 하위 에이전트 생성
- CI를 통한 풀 리퀘스트 모니터링
- 결과를 운영자에게 보고
안전 가드레일
이 규칙은 절대 변경할 수 없습니다. 어떤 에이전트, 오케스트레이터, 또는 플랫폼 재정의도 이를 완화할 수 없습니다.
거부 목록 (절대 실행 금지)
| 명령 / 작업 | 이유 |
|---|---|
gh pr merge | 에이전트는 PR을 병합하지 않습니다. 사람이 병합해야 합니다. |
gh pr merge --auto | 동일한 금지; 자동 병합도 병합입니다. |
git push --force (일반) | 파괴적 작업; 기록 손실. --force-with-lease만 사용하세요. |
git push -f (일반) | 동일한 파괴적 푸시의 약식입니다. |
GraphQL mergePullRequest | API를 통한 병합도 병합입니다. |
REST PUT /repos/.../merge | REST를 통한 병합도 병합입니다. |
| 모든 병합 커밋 생성 | 작업 트리에서 PR 브랜치를 결합하는 git merge. |
force-with-lease 허용 목록
git push --force-with-lease는 다음 경우에만 허용됩니다:
- 에이전트가 자신의 기능 브랜치를 업데이트된 베이스로 리베이스하는 경우.
- 에이전트가 오래된 원격 참조로 인해 실패한 force-push를 수정하는 경우.
- 운영자가 명시적으로 force-push를 지시한 경우.
--force-with-lease를 사용하기 전에 에이전트는 반드시:
- 현재 브랜치가 할당된 작업 트리 브랜치인지 확인(
main,master또는 다른 에이전트의 브랜치가 아닌지). - 원격 참조가 에이전트가 예상한 것과 일치하는지 확인(다른 사람의 예상치 못한 푸시가 없는지).
수정 횟수 제한 의미
규칙: 각 PR은 베이비시트 사이클당 최대 3개의 코드 수정 커밋을 받습니다.
- 포함되는 것: 소스 코드, 테스트, 설정, 또는 동작에 영향을 미치는 문서를 변경하는 커밋.
- 포함되지 않는 것: 리베이스로 인한 병합 커밋, CI 트리거 커밋(예: 잠금 파일 업데이트), PR에 대한 답글.
- 제한에 도달했을 때: 에이전트는 커밋을 중단하고 남은 문제를 PR 댓글로 보고해야 합니다. 에이전트는 리뷰 댓글에 답변하고 CI를 계속 모니터링하지만, 새로운 코드 변경 사항은 푸시하지 않습니다.
- 잔여 문제 보고: 제한에 도달하면 에이전트는 남은 CI 실패, 해결되지 않은 리뷰 스레드, 사람 또는 다음 사이클을 위한 권장 다음 단계를 나열하는 댓글을 게시합니다.
- 초기화: 운영자가 새로운 베이비시트 사이클을 시작할 때 제한이 초기화됩니다(명시적 재시작, 자동 아님).
브랜치/워크트리 사전 편집 확인 목록
코드 변경을 하기 전에 에이전트는 반드시 다음을 확인합니다:
- 워크트리 격리:
pwd가 할당된 워크트리 경로 내에 있습니다({worktree_root}/{owner}/{repo}/{job_id}). - 브랜치 정확성:
git branch --show-current가 할당된 기능 브랜치와 일치합니다. - 깨끗한 상태:
git status에 다른 작업의 커밋되지 않은 변경 사항이 없습니다. - 원격 정렬:
git fetch && git status가 브랜치가 예상된 원격을 추적하고 있음을 확인합니다. - 경계를 넘는 편집 금지: 워크트리 외부의 파일이 수정되지 않습니다(
../경로 없음, 워크트리 루트 외부의 절대 경로 없음).
검사 중 하나라도 실패하면 에이전트는 반드시 중단하고 불일치를 보고해야 합니다.
최종 상태 지침
베이비시트 사이클이 종료되면(성공 또는 제한 도달) 에이전트는 다음을 보고합니다:
- PR 상태: 열림 / 리뷰 준비 완료 / 차단됨
- 수정 횟수: 이 사이클에서 푸시된 코드 수정 커밋 수(예: "2/3")
- 잔여 문제: 해결되지 않은 CI 실패, 리뷰 댓글 또는 차단 항목 목록
- 에이전트 귀속: 모든 PR 댓글 및 커밋 메시지에는 에이전트 식별 정보가 포함됩니다.
에이전트는 PR을 병합했다고 주장해서는 안 됩니다. PR이 병합된 것으로 보이면 에이전트는 "PR이 사람에 의해 병합되었습니다"라고 보고하고 중단합니다.
플랫폼 중립 작업자 프롬프트 템플릿
하위 에이전트를 생성할 때 프롬프트에 다음 안전 지침을 포함합니다:
안전 규칙 (절대 변경 불가):
- 절대 PR을 병합하거나 병합 API/CLI를 호출하지 마세요
- 절대 `git push --force` 또는 `git push -f`를 사용하지 마세요
- `git push --force-with-lease`는 자신의 브랜치를 리베이스하는 경우에만 허용됩니다
- 할당된 작업 트리 외부의 파일을 절대 편집하지 마세요
- 베이비시트 사이클당 3개 이상의 코드 수정 커밋을 절대 커밋하지 마세요
- 편집 전에 작업 트리 경로, 브랜치 이름, 깨끗한 상태를 확인하세요
- 푸시 후에는 SHA 및 에이전트 귀속 정보와 함께 응답하세요
- 제한에 도달하면 잔여 문제를 보고하고, 더 이상 코드를 푸시하지 마세요
시행 계층
이러한 가드레일은 여러 계층에서 시행됩니다:
- 에이전트 스킬 (이 파일): 이식 가능한 문서 및 프롬프트 템플릿. 보안 경계는 아닙니다. 플랫폼에 의해 제한되지 않으면 에이전트가 우회할 수 있습니다.
- Python 오케스트레이터: 서브프로세스 브리지를 통한 정책 시행. 수정 커밋을 계산하고, 경로를 검증하며, 거부 목록에 있는 명령이 Rust에 도달하기 전에 차단합니다.
- Rust 코어 (
wh-core): 강력한 시행. 프로세스 경계에서 안전하지 않은 git/GitHub 작업을 거부합니다. 권위 있는 안전 계층입니다.
심층 방어: 세 계층 모두 동일한 규칙을 시행합니다. 한 계층의 실패는 다른 계층에서 포착됩니다.