# GitHub Copilot 앱 대한 리포지토리 구성

에 대한 리포지토리별 지침, 스크립트 및 자동화 동작을 GitHub Copilot app정의합니다.

`.github/github-app.yml` 리포지토리에서 해당 프로젝트에 대해 동작하는 방법을 GitHub Copilot app 정의할 수 있습니다.

앱 UI에서 이러한 프로젝트 설정을 편집할 수도 있습니다. 이미 있는 경우 `.github/github-app.yml` UI 변경 내용이 해당 파일에 다시 기록됩니다. 아직 존재하지 않는 경우 앱의 현재 프로젝트 설정에서 만들 수 있습니다.

## 구성 파일 위치 정보

다음 위치에서 파일을 만듭니다.

```text copy
.github/github-app.yml
```

앱은 이전 버전과의 호환성을 위해 레거시 파일 이름 `.github/copilot-desktop.yml` 도 지원합니다.

UI 기반 사용자 지정 단계는 [GitHub Copilot 앱 사용자 지정](/ko/copilot/how-tos/github-copilot-app/customize-github-copilot-app)을 참조하세요.

## 구성 검토 및 신뢰

앱이 리포지토리에서 구성을 검색하는 경우 구성을 검토하고 수락할 때까지 파일의 리포지토리 지침, 스크립트 또는 기타 설정을 적용하지 않습니다. 이렇게 하면 명령을 실행하거나 다른 참가자가 추가한 설정을 적용할 수 없습니다. 앱 UI를 통해 만들거나 업데이트하는 구성은 자동으로 신뢰할 수 있습니다.

> \[!WARNING]
> 리포지토리 구성을 수락하기 전에 구성된 모든 명령과 실행되는 종속성을 검토합니다. 스크립트와 해당 자식 프로세스는 이 문서의 뒷부분에 GitHub 설명된 자격 증명을 수신하므로 이러한 환경 변수를 기록하거나 유지하도록 구성하지 않습니다.

공백 또는 메모 변경 내용을 포함하여 파일이 앱 외부에서 변경되는 경우 앱이 적용되기 전에 업데이트된 구성을 검토하고 수락해야 합니다. 현재 버전을 수락할 때까지 앱은 이전에 앱에서 구성한 프로젝트 설정을 계속 사용합니다.

## 구성 예

```yaml copy
instructions: |
  Use bun instead of npm.

scripts:
  - name: Setup
    command: bun install
    triggers:
      - session.create
  - name: Run
    command: bun run dev
  - name: Archive cleanup
    command: rm -rf node_modules
    triggers:
      - session.archive

server_ready_pattern: '(?i)Local:\s+(https?://\S+)'
auto_open_in_browser: true

automation:
  auto_issue_session: true
  remote_control: false
```

## 지침 및 스크립트 구성

### `instructions`

리포지토리 관련 지침을 프로젝트의 세션에 대한 시스템 프롬프트에 추가하는 데 사용합니다 `instructions` . 또한 앱에서 전역 지침을 구성하는 경우 전역 지침이 먼저 적용된 다음 프로젝트 지침이 적용됩니다.

### `scripts`

앱에 표시되고 수동으로 또는 특정 트리거에서 실행할 수 있는 명령을 정의하는 데 사용합니다 `scripts` .

각 스크립트 항목은 다음을 지원합니다.

* `name` (`string`): UI에 표시 이름입니다.
* `command` (`string`): 실행할 명령입니다.
* `triggers` (`string[]`선택 사항): 스크립트를 자동으로 실행하는 이벤트입니다.

없는 `triggers` 스크립트는 수동입니다.

### 트리거 값

파일에서 정식 트리거 값을 사용합니다.

* `session.create`
* `session.archive`

또한 앱은 기존 파일을 구문 분석할 때 다음과 같은 레거시 별칭을 허용합니다.

* `workspace.create` (별칭: `session.create`)
* `workspace.archive` (별칭: `session.archive`)

트리거된 스크립트가 실행 `COPILOT_SCRIPT_TRIGGER` 되면 정식 값으로 설정됩니다.

* `session.create`
* `session.archive`

## 서버 검색 및 브라우저 동작 구성

### `server_ready_pattern`

`server_ready_pattern` 는 실행 스크립트가 서버를 시작한 시기를 감지하는 데 사용되는 정규식입니다.

패턴은 Rust `regex` 의 상자에서 지원하는 구문을 사용합니다. 구문 세부 정보는 상자 설명서 [의 구문을](https://docs.rs/regex/1/regex/#syntax) 참조하세요. 패턴이 잘못된 경우 앱은 기본 서버 검색 패턴을 사용합니다.

검색된 URL 또는 포트에 첫 번째 캡처 그룹을 사용합니다. 앱은 캡처 그룹을 `1`읽습니다.

* 캡처가 URL(`http://...` 또는 `https://...`)인 경우 URL이 사용됩니다.
* 캡처가 포트 번호(예 `3000`: )인 경우 앱은 이를 `http://localhost:3000`.로 변환합니다.

### `auto_open_in_browser`

이 `auto_open_in_browser`경우 `true` 앱은 통합 브라우저에서 검색된 실행 URL을 엽니다. 이 필드를 생략하면 유효 기본값은 .입니다 `true`.

## 자동화 동작 구성

다음에서 자동화 옵션을 설정합니다.`automation`

* `automation.auto_issue_session` (`boolean`) 앱이 문제 컨텍스트를 사용하여 세션을 자동으로 시작하는지 여부를 제어합니다. 생략하면 유효 기본값은 .입니다 `true`.
* `automation.remote_control`(`boolean`) 웹 인터페이스GitHub에서 GitHub Mobile 세션에 액세스할 수 있는지 여부를 제어합니다. 생략하면 유효 기본값은 .입니다 `false`.

Copilot 사용자 자리가 조직에서 제공된 경우 원격 제어를 사용할 수 있도록 해당 "클라우드에 로컬 세션 저장" 정책을 "보기 및 제어"로 설정해야 합니다. 엔터프라이즈 관리 `remoteControl` 설정은 있는 경우에도 `automation.remote_control` 원격 제어를 추가로 제한할 수 있습니다 `true`. 자세한 내용은 [GitHub Copilot CLI 세션의 원격 제어에 대한 정보](/ko/copilot/concepts/agents/copilot-cli/about-remote-control) 및 [엔터프라이즈 관리 설정](/ko/copilot/reference/enterprise-administrators/enterprise-managed-settings)을(를) 참조하세요.

## 스크립트에 대한 런타임 환경 변수

스크립트는 앱에서 제공하는 환경 변수를 사용하여 실행됩니다.

| Variable                 | Description                                  |
| ------------------------ | -------------------------------------------- |
| `COPILOT_WORKSPACE_NAME` | 현재 작업 영역 이름입니다.                              |
| `COPILOT_WORKSPACE_PATH` | 작업 영역의 절대 경로입니다.                             |
| `COPILOT_ROOT_PATH`      | 프로젝트 루트 체크 아웃의 절대 경로입니다.                     |
| `COPILOT_DEFAULT_BRANCH` | 기본 분기를 Project.                              |
| `COPILOT_PORT`           | 현재 작업 영역 컨텍스트에 대한 App WebSocket 포트입니다.       |
| `COPILOT_SCRIPT_TRIGGER` | 스크립트를 시작한 트리거(트리거된 스크립트에 대해서만 설정됨).          |
| `GH_TOKEN`               | 선택한 GitHub 계정에 대한 토큰입니다.                     |
| `GH_HOST`                | 선택한 GitHub 계정의 호스트입니다.                       |
| `COPILOT_GH_ACCOUNT_*`   | 선택한 계정을 포함하여 로그인한 모든 계정에 대한 호스트 및 계정별 토큰입니다. |

각 `COPILOT_GH_ACCOUNT_*` 변수에 대해 앱은 호스트 및 로그인을 소문자로 만들고, ASCII 문자와 숫자를 변경하지 않고, 다른 모든 UTF-8 바이트를 밑줄로 둘러싸인 대문자 16진수 값으로 바꿉니다. 변수 이름은 형식 `COPILOT_GH_ACCOUNT_<HOST>_<LOGIN>`을 사용합니다. 예를 들어 on에 대한 `alice` 토큰은 `github.com`이며 on에 대한 `COPILOT_GH_ACCOUNT_github_2E_com_alice``user` 토큰은 .입니다`ghe-example.com`.`COPILOT_GH_ACCOUNT_ghe_2D_example_2E_com_user`

## 레거시 호환성

이전 버전과의 호환성을 위해 앱은 이전 개체 기반 `scripts` 셰이프를 구문 분석할 수 있습니다.

```yaml copy
scripts:
  setup: bun install
  run: bun run dev
  archive: rm -rf node_modules
```

이 레거시 셰이프에서:

* `setup` 는 만들기 트리거를 사용하여 스크립트에 매핑합니다.
* `archive` 는 보관 트리거를 사용하여 스크립트에 매핑합니다.
* `run` 는 수동 스크립트 항목에 매핑되며 단일 명령 문자열 또는 개체 목록 `{ name, command }` 일 수 있습니다.