메인 콘텐츠로 건너뛰기

Skills

Skills는 재사용 가능한 프롬프트 모듈입니다. SKILL.md를 로드하여 특정 도메인용 지시를 세션에 추가할 수 있습니다.

개요

  • 도메인 지식을 스킬로 재사용할 수 있음
  • 프로젝트 간에 동일한 동작을 공유할 수 있음
  • 세션 단위로 활성/비활성 전환 가능
Laravel 버전에서는 SessionConfigskillDirectoriesdisabledSkills를 사용해 설정합니다.

기본 사용법

skillDirectories에 부모 디렉터리를 지정하면 그 아래의 각 서브디렉터리에 있는 SKILL.md가 로드됩니다.
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\SessionConfig;

Copilot::start(function (CopilotSession $session) {
    $response = $session->sendAndWait(prompt: '이 차분을 보안 관점에서 리뷰해줘');

    dump($response->content());
}, config: new SessionConfig(
    skillDirectories: [
        base_path('skills'),
    ],
));
배열 형식으로도 지정할 수 있습니다.
Copilot::run(
    prompt: 'README의 개선안을 내줘',
    config: [
        'skillDirectories' => [base_path('skills')],
    ],
);

스킬 비활성화

disabledSkills를 사용하면 로드된 스킬의 일부만 비활성화할 수 있습니다.
$config = new SessionConfig(
    skillDirectories: [base_path('skills')],
    disabledSkills: ['experimental-feature', 'deprecated-tool'],
);

디렉터리 구성

skills/
├── code-review/
│   └── SKILL.md
└── documentation/
    └── SKILL.md
skillDirectories에는 skills/와 같은 부모 디렉터리를 지정합니다.

SKILL.md 형식

SKILL.md는 Markdown이며, YAML frontmatter를 임의로 붙일 수 있습니다.
---
name: code-review
description: Specialized code review capabilities
---

# Code Review Guidelines

When reviewing code, always check for:

1. Security vulnerabilities
2. Performance issues
3. Code style
4. Test coverage
frontmatter의 주요 항목:
  • name: 스킬 식별자(disabledSkills에서 지정하는 이름)
  • description: 스킬의 짧은 설명
name을 생략한 경우 디렉터리 이름이 사용됩니다.

Custom Agents와 조합

customAgents[].skills에 스킬 이름을 지정하면 대상 에이전트 기동 시에 해당 스킬 내용이 사전에 로드됩니다.
use Revolution\Copilot\Types\SessionConfig;

$config = new SessionConfig(
    skillDirectories: [base_path('skills/security')],
    customAgents: [
        [
            'name' => 'security-auditor',
            'description' => 'Security-focused code reviewer',
            'prompt' => 'Focus on OWASP Top 10 vulnerabilities',
            'skills' => ['security-scan', 'dependency-check'],
        ],
    ],
);
skills를 생략한 경우, 에이전트에 스킬 내용은 주입되지 않습니다.

RPC로 확인, 조작

스킬 검출이나 활성/비활성 전환은 RPC에서도 조작할 수 있습니다.
// 서버 레벨에서 스킬 검출
$result = Copilot::client()->rpc()->skills()->discover();

// 세션 내 스킬 목록
$session->rpc()->skills()->list();

// 세션 내에서 개별로 활성/비활성 전환
$session->rpc()->skills()->enable(['name' => 'security-scan']);
$session->rpc()->skills()->disable(['name' => 'security-scan']);

베스트 프랙티스

  • 스킬은 도메인별로 분할(skills/security, skills/testing 등)
  • frontmatter에 namedescription을 붙임
  • 충돌하는 지시가 있는 경우 disabledSkills로 명시적으로 제외
  • 우선 단독으로 동작 확인한 후 여러 스킬을 조합

참고

마지막 수정일 2026년 7월 13일