# Leash, Not Autopilot: GitHub Copilot 지시문으로 예측 가능한 AI 동작 만들기 🪢

*SEO 키워드: GitHub Copilot, AI 프롬프트, 프로그래밍 자동화*

---

# # 📌 서론 – “AI가 스스로 날아다니면 위험하다”

프로그래밍을 할 때 AI 도우미가 “자동 파일 생성 → 자동 코드 완성 → 자동 리팩터링”까지 전부 맡아준다면 정말 편리할까요?

실제 현업에서는 **예상치 못한 코드**가 삽입되거나, **프로젝트 규칙**을 무시한 결과가 종종 발생합니다. 이는 **AI가 ‘자율 비행(autopilot)’ 상태**에 머물러, 개발자가 설정한 경계(boundary)를 인식하지 못하기 때문이죠.

따라서 **GitHub Copilot**을 효과적으로 활용하려면 **‘Leash(목줄)’**를 걸어, 명확한 지시문(instructions)과 검증 루프(validation loop)를 구축해야 합니다. 이번 글에서는 **초보자도 이해하기 쉬운** 단계별 방법을 통해 **예측 가능한 AI 동작**을 구현하는 비법을 전수합니다.

---

# # 1️⃣ 레포지토리 규칙(Repo Rules) 정의하기

## # 1‑1. 왜 레포 규칙이 필요한가?

- **팀 표준화**: 코드 스타일, 파일 구조, 라이선스 등 팀이 합의한 규칙을 AI가 자동으로 따르게 함.

- **오류 방지**: 잘못된 파일 위치나 불필요한 의존성을 삽입하는 것을 미연에 차단.

## # 1‑2. 실전 적용 방법

| 규칙 종류 | 구체적 예시 | Copilot 지시문 예시 |

|----------|------------|-------------------|

| 파일 네이밍 | `*.test.ts` → 테스트 파일 | `// @copilot: 테스트 파일은 *.test.ts 로 저장` |

| 코드 스타일 | Prettier 2.8 사용 | `// @copilot: Prettier 설정을 따를 것` |

| 보안 | 비밀번호는 .env에 | `// @copilot: 비밀번호는 절대 코드에 하드코딩하지 말 것` |

**Tip**: `README.md` 혹은 `.github/COPILOT_INSTRUCTIONS.md`에 규칙을 정리하고, **Copilot**이 자동으로 읽을 수 있게 주석 형태로 삽입하면 좋습니다.

---

# # 2️⃣ 우선순위 스택(Priority Stack) 설계

## # 2‑1. “무엇을 먼저 해야 할까?”

Copilot은 **여러 지시문**이 동시에 존재하면 혼란스러워합니다. 따라서 **우선순위 스택**을 만들어 “가장 중요한 규칙 → 보조 규칙 → 선택적 규칙” 순으로 나열합니다.

## # 2‑2. 스택 예시

1. **보안 규칙** – 절대 코드에 민감 정보 삽입 금지

2. **코드 스타일** – Prettier, ESLint 적용

3. **프로젝트 구조** – src/, lib/, tests/ 폴더 구분

4. **코멘트 정책** – JSDoc 필수

**구현 팁**

```
markdown

// @copilot-priority: 1

// @copilot: 보안 규칙을 최우선 적용

// @copilot-priority: 2

// @copilot: 코드 스타일은 Prettier를 따름

```

Copilot은 `@copilot-priority` 라벨을 읽어 가장 높은 번호부터 적용합니다.

---

# # 3️⃣ 검증 루프(Validation Loop) 구축

## # 3‑1. 검증이 왜 중요한가?

AI가 만든 코드는 **정적 분석**이나 **테스트**를 통과해야 실제 프로젝트에 안전하게 녹일 수 있습니다. 검증 루프는 **AI 출력 → 자동 테스트 → 피드백 → 재생성**의 순환을 의미합니다.

## # 3‑2. 자동 검증 파이프라인 예시

```
yaml

name: Copilot Validation

on:

  push:

    paths:

      - '**/*.js'

jobs:

  lint-test:

    runs-on: ubuntu-latest

    steps:

      - uses: actions/checkout@v3

      - name: Install deps

        run: npm ci

      - name: Lint

        run: npm run lint   # ESLint 실행

      - name: Test

        run: npm test       # Jest 테스트

```

위와 같은 **GitHub Actions** 워크플로우를 설정하면, Copilot이 생성한 코드는 **push** 단계마다 자동으로 검증됩니다. 실패하면 PR에 코멘트로 피드백이 전달돼, 개발자는 즉시 수정할 수 있습니다.

---

# # 4️⃣ “AI 프롬프트”를 활용한 구체적 지시문 작성

## # 4‑1. 프롬프트 기본 원칙

1. **명확성** – “함수 이름을 `getUserInfo` 로 만들라”처럼 구체적으로.

2. **제한조건** – “30줄 이하”, “async/await 사용”.

3. **예시 제공** – “아래와 같은 형태의 반환값을 기대한다”.

## # 4‑2. 초보자를 위한 샘플 프롬프트

```
javascript

// @copilot:

// 1. fetch API를 이용해 사용자 데이터를 가져오는 async 함수 작성

// 2. 함수명은 getUserInfo

// 3. 반환값은 { id: number, name: string } 형태

// 4. 에러 발생 시 console.error 로 로그 남기기

async function getUserInfo(userId) {

  // Copilot이 자동 완성

}

```

위와 같이 **목표, 이름, 반환 형태, 에러 처리**까지 한 번에 명시하면, Copilot이 **예측 가능한 코드**를 빠르게 생성합니다.

---

# # 5️⃣ 실전 적용 사례 – “Leash”를 통한 프로젝트 성공 스토리

| 프로젝트 | 적용한 전략 | 결과 |

|----------|------------|------|

| 사내 대시보드 | 레포 규칙 + 우선순위 스택 | 코드 리뷰 시간 30% 감소 |

| 오픈소스 라이브러리 | 검증 루프 + GitHub Actions | CI 실패율 0% 달성, PR 품질 향상 |

| 모바일 앱 백엔드 | 상세 AI 프롬프트 | 신규 기능 2배 빠른 속도로 배포 |

**핵심 포인트**는 **“AI에게 명확한 경계와 검증 절차를 제공”**하는 것이며, 이를 통해 **예측 가능한 자동화**를 실현할 수 있습니다.

---

# # 📣 결론 – 지금 바로 “Leash”를 걸어보세요!

GitHub Copilot은 강력하지만, **제어되지 않으면 위험**합니다.

1️⃣ 레포 규칙으로 **팀 표준**을 고정하고,

2️⃣ 우선순위 스택으로 **중요도**를 명확히 하며,

3️⃣ 검증 루프와 CI 파이프라인으로 **품질을 보증**하고,

4️⃣ 구체적인 AI 프롬프트로 **예측 가능한 출력**을 얻어보세요.

**👉 오늘 바로** 프로젝트 루트에 `COPILOT_INSTRUCTIONS.md` 파일을 만들고, 위에서 소개한 4가지 요소를 적용해 보세요.

AI가 당신의 개발 파트너가 되도록, **목줄을 직접 잡아주는** 것이 성공의 첫걸음입니다.

> **행동 유도**: 댓글에 여러분이 만든 Copilot 지시문 예시를 공유하거나, 궁금한 점을 질문해 주세요! 함께 더 안전하고 효율적인 AI 코딩 환경을 만들어갑시다.
