GitHub Copilot 에이전트 스킬: AI에게 당신의 Repository Patterns 가르치기

발행: (2025년 12월 21일 오전 03:06 GMT+9)
14 min read
원문: Dev.to

Source: Dev.to

2025년 12월 18일 발표

예시 저장소: SeleniumSelfHealing.Reqnroll

Source:

왜 이것이 중요한가

모든 테스트 자동화 엔지니어는 결국 같은 벽에 부딪히게 됩니다. 몇 주 동안 커스텀 패턴으로 견고한 프레임워크를 구축했지만, AI 어시스턴트가 아키텍처를 무시하고 깨지기 쉬운 구식 코드를 제안하는 상황이 반복됩니다.

GitHub의 Agent Skills(2025년 12월 18일 출시)는 instruction sets를 코드와 함께 배포할 수 있게 해 주어, Copilot이 관련 프롬프트를 감지하면 자동으로 올바른 로직을 적용합니다. 이 기능은 다음 환경에서 작동합니다:

  • Copilot Coding Agent
  • Copilot CLI
  • Visual Studio Code의 Agent 모드

아래는 Copilot에게 우리의 self‑healing Selenium 패턴을 교육한 단계별 워크스루입니다.

에이전트 스킬이란?

“에이전트 스킬을 사용하면 Copilot에게 특정하고 반복 가능한 방식으로 전문 작업을 수행하도록 가르칠 수 있습니다. Copilot이 해당 스킬이 작업과 관련이 있다고 판단하면, 지침을 로드하고 따릅니다.” – GitHub 발표

작동 방식

  1. .github/skills/ 아래에 스킬 폴더를 추가합니다.
  2. SKILLS.md 파일을 만들고 다음을 포함합니다:
    • 짧은 설명.
    • 사용 예시.
    • 필요한 헬퍼 스크립트 또는 데이터 파일.
  3. 변경 사항을 커밋합니다.
  4. Copilot은 일치하는 컨텍스트를 감지하면 자동으로 스킬을 로드합니다—수동으로 활성화할 필요가 없습니다.

문제: 깨지기 쉬운 Selenium 테스트

Typical Selenium code couples tests to fragile selectors:

// Example of a brittle approach
var button = driver.FindElement(By.XPath("//button[@id='submit-2023']"));
button.Click();

요소의 ID가 변경되면 테스트가 충돌합니다.
우리 프레임워크는 하드코딩된 선택자를 시맨틱하고 AI 기반의 요소 복구로 대체합니다. 스킬이 없을 때 Copilot은 여전히 이전 패턴을 제안했습니다.

에이전트 스킬 만들기

디렉터리 구조

.github/
└─ skills/
   └─ selenium-self-healing/
      ├─ SKILLS.md
      ├─ recover-element.js      # 선택적 헬퍼 스크립트
      └─ README.md               # 선택적 문서

SKILLS.md (스킬의 핵심)

# Selenium Self‑Healing Automation Skill

Goal

Copilot이 깨지기 쉬운 XPath/CSS 선택자 대신 우리의 semantic‑selector 도우미를 사용하도록 Selenium 코드를 생성하도록 가르칩니다.

How It Works

  1. FindElementByDescription(string description)를 호출합니다 – AI 기반 복구 엔진을 래핑한 메서드입니다.
  2. 이 메서드는 UI 변경에 강인한 IWebElement를 반환합니다.
  3. 반환된 요소를 일반 Selenium 요소와 동일하게 사용합니다.

예시 사용법

// ❌ 오래된, 깨지기 쉬운 코드
var submitBtn = driver.FindElement(By.XPath("//button[@id='submit-2023']"));
submitBtn.Click();

// ✅ 새로운, 자체 복구 코드
var submitBtn = driver.FindElementByDescription("the submit button on the login page");
submitBtn.Click();

구현 세부 사항

  • 헬퍼는 SeleniumSelfHealing.Extensions 네임스페이스에 존재합니다.
  • 내부적으로 ElementRecoveryService.RecoverAsync(description)를 호출합니다.
  • 복구에 실패하면 원래 선택자(제공된 경우)로 되돌아갑니다.

스킬을 트리거할 시점

  • 프롬프트에 “find the submit button”, “click the login button”, 또는 *“use our self‑healing selector”*와 같은 구문이 포함된 경우.
  • 편집 중인 파일이 Tests/ 폴더 아래에 있는 .cs 테스트 파일인 경우.

FAQ

Q: 네임스페이스를 가져와야 하나요?
A: 예. 파일 상단에 using SeleniumSelfHealing.Extensions; 를 추가하세요.

Q: 설명 언어를 커스터마이즈할 수 있나요?
A: 복구 엔진은 퍼지 매치 알고리즘을 사용합니다; 자연어가 가장 잘 작동합니다.

선택적 헬퍼 스크립트 (recover-element.js)

CLI용 빠른 Node‑JS 데모가 필요하다면, 작은 래퍼를 노출할 수 있습니다:

// recover-element.js
const { recoverElement } = require('./element-recovery-service');

async function main() {
  const description = process.argv[2];
  const element = await recoverElement(description);
  console.log(JSON.stringify(element));
}

main().catch(console.error);

실전에서 스킬 사용하기

  1. 테스트 파일 열기 (예: LoginTests.cs).

  2. 자연어 설명을 입력하기:

    // Find the login button using our self‑healing selector
    var loginBtn = driver.FindElementByDescription("the login button on the sign‑in page");
    loginBtn.Click();
  3. Copilot이 “Find the … using our self‑healing selector” 문구를 감지하면 → Selenium Self‑Healing 스킬을 로드하고 → 올바른 래퍼 메서드와 import를 제안합니다.

Copilot CLI 예시

# Generate a new test method with the skill automatically applied
copilot generate test \
  --description "verify that a user can log in using the semantic selector for the login button"

CLI는 FindElementByDescription을 사용하는 실행 준비가 된 테스트를 출력합니다.

팁 및 모범 사례

왜 도움이 되는가
SKILLS.md를 간결하게 유지 (≤ 500 단어)Copilot이 파일을 빠르게 파싱하고 더 높은 관련성 점수를 제공합니다.
여러 사용 예시 추가더 많은 예시는 모델이 다양한 프롬프트에 매치하는 능력을 향상시킵니다.
스킬 폴더를 버전 관리스킬에 대한 변경 사항이 다른 코드와 마찬가지로 추적됩니다.
명확하고 도메인 특화된 용어 사용*“self‑healing selector”*와 같은 구문은 스킬에 대한 강력한 신호 역할을 합니다.
스킬을 로컬에서 테스트copilot chat을 실행하여 스킬을 트리거해야 하는 프롬프트로 출력 결과를 확인합니다.

결론

GitHub Copilot Agent Skills는 일반적인 AI 어시스턴트를 도메인‑인식 파트너로 전환합니다. Selenium 자체‑복구 로직을 스킬로 패키징함으로써 우리는:

  • 부서지기 쉬운 셀렉터 제안을 없앱니다.
  • UI가 변경될 때 수동 리팩토링을 줄입니다.
  • AI가 우리의 아키텍처 표준에 맞도록 유지합니다.

직접 테스트‑자동화 레포에 적용해 보세요—.github/skills/ 폴더를 추가하고, 명확한 SKILLS.md를 작성하면 Copilot이 자동으로 워크플로에 맞게 적응하는 것을 확인할 수 있습니다. 즐거운 코딩 되세요!

목적

Copilot이 다음을 수행하도록 합니다:

  • 견고한 Selenium UI 테스트 생성.
  • AI‑기반 자체 치유 로케이터 전략 사용.
  • Reqnoll과 함께 BDD 패턴 따르기.

핵심 규칙

Must

  • self‑healing WebDriver 확장 기능 사용
  • 원시 로케이터보다 요소 설명을 우선 사용
  • async 단계 정의 생성
  • 모든 힐링 시도 로그 기록

Must Not

  • XPath 또는 CSS 선택자를 하드코딩
  • Thread.Sleep 사용
  • self‑healing 로직을 우회

골든 예시

Step‑definition 패턴

[When(@"I click the ""(.*)""")]
public async Task WhenIClickElement(string elementDescription)
{
    await _driver.Click(
        By.CssSelector(""),
        elementDescription
    );
}

Gherkin 시나리오

Scenario: Search for Selenium
  Given I navigate to "https://www.wikipedia.org"
  When I enter "Selenium" into the "search box"
  And I click the "search button"
  Then I should see "Selenium"

스킬을 추가한 후, 개발자들이 입력

// Create step definition to click login button

Copilot이 이제 생성

[When(@"I click the ""(.*)""")]
public async Task WhenIClickElement(string elementDescription)
{
    await _driver.Click(By.CssSelector(""), elementDescription);
}

Result: 생성된 코드는 우리 자체 치유 패턴을 따르며, 깨지기 쉬운 로케이터 대신 의미론적 설명을 사용합니다.

핵심 구성 요소

  • 명확한 규칙 – 반드시 해야 할 항목과 하지 말아야 할 항목을 명시합니다. 구체성이 더 나은 결과를 가져옵니다.
  • 작동 예시 – 저장소의 실제 코드를 사용합니다; Copilot은 이론이 아니라 실제 패턴을 학습합니다.
  • 구조에 대한 컨텍스트 – 프로젝트 조직을 설명하여 Copilot이 코드를 올바른 위치에 배치하도록 합니다.
  • 템플릿 – 개발자가 자주 마주하는 시나리오에 대한 스캐폴딩을 제공합니다.

작동 확인하기

  1. Copilot Chat을 열고 다음을 물어보세요: “새 단계 정의를 어떻게 만들까요?”
  2. 응답에서 SKILLS.md에 대한 참조를 찾아보세요.
  3. 제안을 확인하세요 – 제안이 여러분의 패턴(비동기 메서드, element‑description 매개변수, self‑healing 확장)과 일치해야 합니다.
  4. 패턴을 트리거하는 주석이 포함된 테스트 파일을 만들고 Copilot의 제안을 확인하세요.
  • GitHub Copilot Agent Skills는 유료 플랜(Individual, Business, Enterprise) 중 하나가 필요합니다.
  • 이 기능은 다음과 함께 사용할 수 있습니다:
    • Copilot 코딩 에이전트,
    • GitHub Copilot CLI, 그리고
    • VS Code Insiders의 에이전트 모드(안정적인 VS Code 정식 버전 지원은 곧 제공될 예정).
  • 유료 플랜이 없더라도 SKILLS.md는 팀에게 여전히 유용한 문서로 활용됩니다.
  • 새로운 스킬 파일은 인덱싱에 5–10 분 정도 걸릴 수 있습니다; 제안이 바로 나타나지 않으면 IDE를 다시 로드하세요.

왜 이것이 테스트 자동화에 중요한가

테스트 프레임워크가 표준 관행을 넘어 진화하고 있습니다.
Self‑healing locators, AI‑powered recovery, custom assertions—이러한 패턴은 Copilot의 기본 교육에 포함되지 않습니다. 자신만의 스킬을 작성하거나(또는 커뮤니티가 제공한 스킬을 사용하여) Copilot을 일반적인 코드 제안자에서 귀하의 특정 방법론을 이해하고 적용하는 도구로 전환할 수 있습니다. 이점은 단순히 속도에만 있는 것이 아니라, 아키텍처의 품질 기준을 유지하는 코드를 생성하는 데 있습니다.

Getting Started

  1. /.github/skills/your-skill/ 디렉터리를 생성합니다.
  2. 가장 중요한 패턴을 문서화한 SKILLS.md 파일을 추가합니다.
  3. 하나의 골든 예시를 포함합니다(위에 표시된 단계 정의 패턴).
  4. 트리거 댓글이 포함된 새 파일로 스킬을 테스트합니다.
  5. 추가 패턴을 발견하면서 파일을 확장합니다.

Tip: 작게 시작하세요—가장 중요한 패턴에 집중하세요. 나중에 스킬 세트를 확장할 수 있습니다.
현재 스킬은 리포지토리 수준에서만 생성할 수 있으며, 조직 및 엔터프라이즈 수준 지원은 곧 제공될 예정입니다.

추가 리소스

테스트 자동화 프로젝트에서 GitHub Copilot에게 어떤 패턴을 가르치시겠습니까?

Back to Blog

관련 글

더 보기 »