diff --git a/.claude/skills/mr/SKILL.md b/.claude/skills/mr/SKILL.md index 7b3b317..9ac5448 100644 --- a/.claude/skills/mr/SKILL.md +++ b/.claude/skills/mr/SKILL.md @@ -174,8 +174,52 @@ curl -X POST "https://{host}/api/v1/repos/{owner}/{repo}/pulls" \ }' ``` -### 7. 결과 출력 +### 7. PR 승인 + 머지 (선택) +**사용자 확인** (AskUserQuestion): +- **질문**: "MR을 어떻게 처리하시겠습니까?" +- 옵션 1: 리뷰 대기 (추천) — MR만 생성, 리뷰어 지정 후 수동 머지 +- 옵션 2: 승인 + 머지 — claude-bot으로 즉시 승인하고 머지 + +**승인 + 머지 선택 시**: + +```bash +# CLAUDE_BOT_TOKEN 확인 +if [ -z "$CLAUDE_BOT_TOKEN" ]; then + echo "CLAUDE_BOT_TOKEN이 설정되지 않아 자동 승인이 불가합니다. MR만 생성합니다." + # MR URL 출력 후 종료 +fi + +# 1. claude-bot이 PR 리뷰 승인 +curl -X POST "https://{host}/api/v1/repos/{owner}/{repo}/pulls/{pr_number}/reviews" \ + -H "Authorization: token ${CLAUDE_BOT_TOKEN}" \ + -H "Content-Type: application/json" \ + -d '{"event": "APPROVED", "body": "MR 승인 (via /mr skill)"}' + +# 2. 머지 실행 +curl -X POST "https://{host}/api/v1/repos/{owner}/{repo}/pulls/{pr_number}/merge" \ + -H "Authorization: token ${GITEA_TOKEN}" \ + -H "Content-Type: application/json" \ + -d '{"Do": "merge", "merge_message_field": "MR 제목", "delete_branch_after_merge": true}' +``` + +⚠️ `delete_branch_after_merge: true` — feature 브랜치는 머지 후 삭제한다 (develop/main과 달리). + +### 8. 결과 출력 + +**승인 + 머지한 경우**: +``` +✅ MR 머지 완료 + 브랜치: feature/my-branch → develop + MR: https://gitea.gc-si.dev/gc/my-project/pulls/42 + 커밋: 3건, 파일: 5개 변경 + 릴리즈 노트: docs/RELEASE-NOTES.md [Unreleased] 갱신됨 + PR 승인: claude-bot ✅ + 머지: 완료 ✅ + 브랜치 삭제: feature/my-branch ✅ +``` + +**리뷰 대기 선택 시**: ``` ✅ MR 생성 완료 브랜치: feature/my-branch → develop @@ -190,6 +234,7 @@ curl -X POST "https://{host}/api/v1/repos/{owner}/{repo}/pulls" \ - `GITEA_TOKEN`: Gitea API 접근 토큰 - 없으면: "Gitea 토큰이 필요합니다. Settings → Applications에서 생성하세요" 안내 +- `CLAUDE_BOT_TOKEN`: claude-bot PR 승인용 토큰 (선택, 없으면 자동 승인 건너뜀) ## 기존 /create-mr과의 차이 diff --git a/src/content/ClaudeCodeSkills.tsx b/src/content/ClaudeCodeSkills.tsx index fc1b0e0..5ecb01b 100644 --- a/src/content/ClaudeCodeSkills.tsx +++ b/src/content/ClaudeCodeSkills.tsx @@ -4,7 +4,7 @@ import { StepGuide } from '../components/common/StepGuide'; const SKILLS = [ { name: '/push', desc: '변경 확인 → 커밋 메시지 자동 제안 → 푸시', perm: 'push' }, - { name: '/mr', desc: '커밋 + 푸시 + MR 생성 + 릴리즈 노트 갱신', perm: 'push' }, + { name: '/mr', desc: '커밋 + 푸시 + MR 생성 + 릴리즈 노트 갱신 + 봇 승인/머지 선택', perm: 'push' }, { name: '/release', desc: '릴리즈 노트 정리 + develop→main MR + 봇 승인/머지', perm: 'admin' }, { name: '/version', desc: 'VERSION-HISTORY.md (SemVer) 생성', perm: 'admin' }, { name: '/create-mr', desc: 'MR만 생성 (세부 옵션 지원)', perm: 'push' }, @@ -91,11 +91,13 @@ export default function ClaudeCodeSkills() { code={`/mr # 1. 커밋되지 않은 변경이 있으면 커밋+푸시 # 2. 릴리즈 노트(RELEASE-NOTES.md) 자동 갱신 -# 3. 사용자 첨삭 확인 후 Gitea MR 생성`} +# 3. 사용자 첨삭 확인 후 Gitea MR 생성 +# 4. 리뷰 대기 or 봇 승인+머지 선택`} />

/mr은{' '} /push + MR + 릴리즈 노트를 한 번에 처리합니다. + MR 생성 후 리뷰 대기 또는 claude-bot 자동 승인+머지를 선택할 수 있습니다.

),