전체 목차
챕터 08

GitHub 통합

Claude Code와 GitHub 통합하기

Claude Code에는 공식 GitHub 통합 기능이 있어, 손쉽게 Claude Code를 GitHub Actions 안에서 실행할 수 있습니다. Claude Code와 GitHub를 통합하면 크게 두 가지 워크플로우가 가능해집니다.

  1. 이슈/PR에서 @claude 멘션 지원
  2. 풀 리퀘스트 자동 리뷰

1. 통합 설정하기

설정을 시작하려면 Claude에서 다음 명령을 실행합니다. /install-github-app

VS Code 터미널에서 /install-github-app 명령어 자동완성 결과로 Claude GitHub Actions 설정 설명이 표시되는 화면.

이 명령어를 치면 다음 단계 따라하라는 안내가 나옵니다.

  1. GitHub에 Claude Code 앱 설치
  2. API 키 추가
  3. 워크플로우 파일이 포함된 PR이 자동으로 생성됨

이 PR을 머지하면 .github/workflows 디렉터리에 워크플로우 파일이 추가됩니다.


2. 기본 제공되는 두 가지 GitHub Action

① 멘션 액션 (Mention Action)

이슈나 풀 리퀘스트에서 @claude 로 Claude를 멘션하면 Claude가 다음과 같이 동작합니다.

  • 요청을 분석하고 작업 계획을 작성
  • 코드베이스에 대한 전체 접근 권한을 가지고 계획한 작업 수행
  • 결과를 해당 이슈/PR에 직접 댓글로 응답
Claude Code와 GitHub 통합의 기본 제공 액션을 보여주는 다이어그램으로, 좌측 멘션 액션은 @claude 멘션부터 응답 작성까지 4단계, 우측 풀 리퀘스트 액션은 PR 생성부터 영향 보고서 게시까지 4단계를 순차적으로 표시합니다.

② 풀 리퀘스트 리뷰 액션 (Pull Request Action)

PR을 생성할 때마다 Claude가 자동으로 다음을 수행합니다.

  • 제안된 변경 사항 리뷰
  • 변경의 영향 분석
  • PR에 상세한 리포트 작성

두 액션 모두 커스터마이징 가능하며, 다른 이벤트가 트리거 되더라도 추가 액션이 실행되도록 확장할 수 있습니다.


3. 워크플로우 커스터마이징

머지된 워크플로우 파일을 프로젝트 상황에 맞게 수정하는 방법을 살펴봅시다. 멘션 워크플로우에서 Claude가 Playwright MCP 서버를 사용하도록 해서 브라우저가 앱에 접근하도록 만들어보겠습니다. 먼저 두 개의 액션 설정 파일이 머지된 변경 사항을 로컬로 pull 받습니다. .github/workflows 디렉터리에 두 개의 파일이 보일 것입니다.

① 프로젝트 셋업 단계 추가

Claude가 실행되기 전에 환경을 준비하는 단계를 추가합니다.

- name: Project Setup
  run: |
    npm run setup
    npm run dev:daemon
VS Code 코드 편집기의 claude.yml 파일로, GitHub 워크플로우 설정을 보여주고 있으며 Checkout repository, Project Setup, Run Claude Code 단계가 YAML 형식으로 작성되어 있습니다.

② 커스텀 지시 사항 (Custom Instructions) 추가

Claude에게 프로젝트 상태에 대한 컨텍스트를 직접 전달할 수 있습니다.

VS Code에서 claude.yml 워크플로우 파일을 열어 Run Claude Code 액션의 설정을 보여주는 스크린샷. 34~50줄에 npm run setup, npm run dev:daemon 명령어와 anthropic/claude-code-action 액션의 설정 정보, 그리고 localhost:3000에서 실행되는 서버와 로그 저장 경로 등의 커스텀 지시사항이 표시됨.
custom_instructions: |
  The project is already set up with all dependencies installed.
  The server is already running at localhost:3000. Logs from it
  are being written to logs.txt. If needed, you can query the
  db with the 'sqlite3' cli. If needed, use the mcp__playwright
  set of tools to launch a browser and interact with the app.

이렇게 하면 Claude는 "개발 서버가 이미 실행 중이며, 필요 시 Playwright MCP 서버를 사용해 브라우저에서 앱에 접근할 수 있다"는 사실을 알게 됩니다.

③ MCP 서버 설정

추가 능력을 부여하기 위해 MCP 서버를 구성합니다.

VS Code의 claude.yml 파일 편집 화면, 41~51줄에 anthropic_api_key, custom_instructions, mcp_config 설정 항목과 로컬호스트 3000에서 실행 중인 서버 관련 지시사항 표시
VSCode 코드 편집기에서 claude.yml 파일의 mcp_config 섹션이 열려 있으며, mcp Servers의 playwright 설정에 localhost:3000과 CDN 도메인을 allowed-origins로 지정한 내용이 표시됨.
mcp_config: |
  {
    "mcpServers": {
      "playwright": {
        "command": "npx",
        "args": [
          "@playwright/mcp@latest",
          "--allowed-origins",
          "localhost:3000;cdn.tailwindcss.com;esm.sh"
        ]
      }
    }
  }

4. 도구 권한(Tool Permissions): GitHub Actions의 특이점

⚠️ 로컬 개발과 가장 큰 차이점입니다.

GitHub Actions에서 Claude Code를 실행할 때는 허용할 모든 도구를 명시적으로 나열해야 합니다. 특히 MCP 서버를 사용할 때 중요합니다. allowed_tools: "Bash(npm:*),Bash(sqlite3:*),mcp__playwright__browser_snapshot,mcp__playwright__browser_click,..."

GitHub에서 열린 claude.yml 파일의 코드 스크린샷으로, playwright 설정과 allowed_tools에 bash, sqlite3, mcp playwright 도구들이 나열된 부분이 표시됨.

로컬에서처럼 mcp__playwright 한 줄로 모든 도구를 허용하는 단축 표기는 사용할 수 없습니다. 각 MCP 서버의 각 도구를 개별적으로 나열해야 합니다. 안타깝게도 Playwright MCP 서버는 도구가 많아서, 각각을 모두 적어줘야 합니다. 설정 업데이트를 마치면 변경 사항을 커밋하고 푸시합니다.


5. 실전 테스트: 이슈에서 @claude 멘션해보기

업데이트된 워크플로우를 테스트해보겠습니다. 앱에는 미리보기/코드 패널을 전환하는 두 개의 버튼이 있다고 가정합시다. (실제로는 잘 동작하지만, 테스트를 위해 마치 문제가 있는 것처럼 가정합니다.)

React Component Generator 웹 애플리케이션 스크린샷, 왼쪽에 시작 안내 메시지, 오른쪽에 Preview와 Code 탭이 있는 UI Generator 환영 화면 표시.
  1. 미리보기/코드 패널을 전환하는 두 개의 버튼을 스크린샷으로 찍음
  2. GitHub에서 이슈를 생성하고 스크린샷을 붙여넣음
  3. 이슈 내용에 @claude 멘션과 함께 "두 버튼이 정상 동작하는지 확인해줘"라고 요청
  4. 이슈를 생성하고 대기
GitHub 이슈 생성 페이지 스크린샷, 제목은 "Toggle Buttons", 설명란에 토글 버튼 작동 문제에 대한 텍스트와 이미지 태그 코드, 그리고 @claude 멘션이 포함되어 있습니다.

액션이 시작되고 Claude가 응답하기까지는 약 1~2분 정도 걸립니다.

GitHub의 Toggle Buttons 이슈 페이지 스크린샷. Preview와 Code 탭 토글 버튼이 표시되어 있으며, 우측에 할당자, 라벨, 마일스톤 등의 이슈 메타데이터 패널이 보임.

우리가 워크플로우에 추가한 셋업 단계 덕분에 앱 전체가 셋업되고 실행된 뒤에야 Claude Code가 시작된다는 점을 기억하세요. 이윽고 Claude가 응답을 시작합니다. 보통 작업을 완수하기 위한 체크리스트를 작성한 뒤, 앱을 직접 방문해 버튼을 수동으로 테스트하고 발견한 이슈를 수정하려 합니다.

GitHub의 Toggle Buttons 이슈 페이지 스크린샷, 좌측에 테스트할 항목과 진행 상황 체크리스트, 우측에 코드와 알림 패널 표시.

이 경우 Claude는 버튼이 정상적으로 동작한다는 사실을 발견하고, 그 결과를 정리한 메시지를 남기며 작업을 일찍 종료합니다.

GitHub의 Toggle Buttons 이슈 페이지로, 결론 섹션에서 토글 버튼의 동작이 완벽하고 수정이 필요 없다는 내용의 스크린샷.

6. 베스트 프랙티스

Claude와 GitHub을 통합해 워크플로우 자동화를 시도하는 경우, 다음과 같은 접근법이 권장됩니다.

원칙설명
점진적으로 커스터마이징기본 워크플로우로 시작해 천천히 확장
컨텍스트 명시custom_instructions로 프로젝트별 상황을 명확히 전달
권한 명시MCP 서버 사용 시 각 도구를 개별 나열
간단한 작업으로 테스트복잡한 작업 전, 단순 작업으로 워크플로우 검증
프로젝트 맞춤화셋업 단계와 추가 옵션을 프로젝트 요구에 맞춤

핵심 요약

단계명령 / 내용
통합 시작/install-github-app
멘션 동작이슈/PR에서 @claude 멘션
자동 리뷰PR 생성 시 자동으로 리뷰 작성
셋업 추가Project Setup 단계로 환경 준비
컨텍스트custom_instructions로 프로젝트 상태 전달
MCP 통합mcp_config로 MCP 서버 정의
권한allowed_tools에 각 도구를 개별 나열

Claude와 GitHub을 통합하면 Claude가 단순한 개발 어시스턴트에서 자동화된 팀 멤버로 변모됩니다. 이슈를 처리하고, 코드를 리뷰하며, GitHub 워크플로우 내부에서 직접 인사이트를 제공해주는 동료가 되는 것이죠.

이 글은 모던웹연구소 (www.modernweblabs.com)에서 처음 발행되었습니다. © 모던웹연구소. 무단 전재 및 재배포를 금합니다.

공유