Skip to main content

Copilot SDK에서 사용자 지정 기술 사용

기술을 통해 Copilot의 기능을 재사용 가능한 프롬프트 모듈로 확장합니다.

누가 이 기능을 사용할 수 있나요?

GitHub Copilot SDK 는 모든 Copilot 계획에서 사용할 수 있습니다.

참고

          코필로트 SDK가 현재 기술 미리 보기에 있습니다. 기능 및 가용성은 변경될 수 있습니다.

스킬은 Copilot의 기능을 확장하는 재사용 가능한 프롬프트 모듈입니다. 디렉터리에서 기술을 로드하여 특정 도메인 또는 워크플로에 대한 특수한 기능을 제공합니다 Copilot .

기술은 SKILL.md 파일을 포함하는 명명된 디렉터리이며, Copilot에 지침을 제공하는 Markdown 문서입니다. 로드되면 기술의 콘텐츠가 세션 컨텍스트에 삽입됩니다.

기술을 통해 다음을 수행할 수 있습니다.

  • 재사용 가능한 모듈로 도메인 전문 지식 패키지
  • 프로젝트 간에 특수한 동작 공유
  • 복잡한 에이전트 구성 정리
  • 세션당 기능 사용/사용 안 함

기술 불러오기

세션을 만들 때 기술을 포함하는 디렉터리를 지정합니다.

import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();
const session = await client.createSession({
    model: "gpt-4.1",
    skillDirectories: [
        "./skills/code-review",
        "./skills/documentation",
    ],
    onPermissionRequest: async () => ({ kind: "approved" }),
});

// Copilot now has access to skills in those directories
await session.sendAndWait({ prompt: "Review this code for security issues" });

Python, Go 및 .NET의 예제는 리포지토리를github/copilot-sdk 참조하세요.

기능 비활성화

다른 사람을 활성 상태로 유지하면서 특정 기술을 사용하지 않도록 설정합니다.

const session = await client.createSession({
    skillDirectories: ["./skills"],
    disabledSkills: ["experimental-feature", "deprecated-tool"],
});

Python, Go 및 .NET의 예제는 리포지토리를github/copilot-sdk 참조하세요.

기술 디렉터리 구조

각 기술은 파일을 포함하는 명명된 하위 디렉터리입니다.SKILL.md

skills/
├── code-review/
│   └── SKILL.md
└── documentation/
    └── SKILL.md

skillDirectories 옵션은 부모 디렉터리(예: ./skills)를 가리킵니다. CLI는 즉시 하위 디렉터리의 모든 SKILL.md 파일을 검색합니다.

SKILL.md 형식

          `SKILL.md` 파일은 선택적 YAML 프런트매터가 있는 markdown 문서입니다.
---
name: code-review
description: Specialized code review capabilities
---

# Code Review Guidelines

When reviewing code, always check for:

1. **Security vulnerabilities**—SQL injection, XSS, etc.
2. **Performance issues**—N+1 queries, memory leaks
3. **Code style**—Consistent formatting, naming conventions
4. **Test coverage**—Are critical paths tested?

Provide specific line-number references and suggested fixes.

프런트매터 필드: * ** name **- 스킬의 식별자입니다(disabledSkills를 사용하여 선택적으로 비활성화할 수 있음). 생략하면 디렉터리 이름이 사용됩니다. * ** description **- 기술이 수행하는 일에 대한 간단한 설명입니다.

markdown 본문에는 기술이 로드될 때 세션 컨텍스트에 삽입되는 지침이 포함되어 있습니다.

구성 옵션

SessionConfig 기술 필드

호출 createSession()할 때 세션 구성 개체에 다음 기술 관련 필드를 전달합니다.

언어분야유형설명
Node.JSskillDirectoriesstring[]기술을 로드하기 위한 디렉터리
Node.JSdisabledSkillsstring[]사용하지 않도록 설정하는 기술
파이썬skill_directorieslist[str]기술을 로드하기 위한 디렉터리
파이썬disabled_skillslist[str]사용하지 않도록 설정하는 기술
이동SkillDirectories[]string기술을 로드하기 위한 디렉터리
이동DisabledSkills[]string사용하지 않도록 설정하는 기술
.NETSkillDirectoriesList<string>기술을 로드하기 위한 디렉터리
.NETDisabledSkillsList<string>사용하지 않도록 설정하는 기술

모범 사례

  •         **도메인별로 구성** - 관련 기술을 함께 그룹화(예: `skills/security/``skills/testing/`
    
  •         **프런트매터 사용** - 명확성을 위해 YAML 프런트매터 포함 `name` 및 `description` 포함
    
  •         **문서 종속성** - 기술에 필요한 도구 또는 MCP 서버에 유의하세요.
    
  •         **격리된 기술 테스트** - 기술을 결합하기 전에 기술 작동 확인
    
  •         **상대 경로 사용** - 환경에서 기술을 이식 가능한 상태로 유지
    

다른 기능과 결합

사용자 지정 에이전트를 사용하는 기술

기술은 사용자 지정 에이전트와 함께 작동합니다.

const session = await client.createSession({
    skillDirectories: ["./skills/security"],
    customAgents: [{
        name: "security-auditor",
        description: "Security-focused code reviewer",
        prompt: "Focus on OWASP Top 10 vulnerabilities",
    }],
    onPermissionRequest: async () => ({ kind: "approved" }),
});

MCP 서버를 사용하여 기술

기술은 MCP 서버 기능을 보완할 수 있습니다.

const session = await client.createSession({
    skillDirectories: ["./skills/database"],
    mcpServers: {
        postgres: {
            type: "local",
            command: "npx",
            args: ["-y", "@modelcontextprotocol/server-postgres"],
            tools: ["*"],
        },
    },
    onPermissionRequest: async () => ({ kind: "approved" }),
});

Troubleshooting

기술이 로드되지 않음

  1.        **경로 확인** - 기술 디렉터리 경로가 올바르고 파일이 있는 하위 디렉터리가 포함되어 있는지 확인합니다 `SKILL.md` .
    
  2.        **사용 권한 확인** - SDK가 디렉터리를 읽을 수 있는지 확인합니다.
    
  3.        **SKILL.md 형식 확인** - markdown이 올바른 형식이고 YAML 프런트매터가 유효한 구문을 사용하는지 확인합니다.
    
  4.        **디버그 로깅 사용** - 스킬 로드 로그를 보려면 `logLevel: "debug"`을 설정합니다.
    

기술 충돌

여러 기술이 충돌하는 지침을 제공하는 경우: * disabledSkills를 사용하여 충돌하는 기술을 제외하십시오.

  • 겹치지 않도록 기술 디렉터리 다시 구성