> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Skills

> 재사용 가능한 SKILL.md를 로드하여 도메인 고유의 지시를 SessionConfig에서 관리하는 방법을 설명합니다.

## Skills

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

## 개요

* 도메인 지식을 스킬로 재사용할 수 있음
* 프로젝트 간에 동일한 동작을 공유할 수 있음
* 세션 단위로 활성/비활성 전환 가능

Laravel 버전에서는 `SessionConfig`의 `skillDirectories`와 `disabledSkills`를 사용해 설정합니다.

## 기본 사용법

`skillDirectories`에 부모 디렉터리를 지정하면 그 아래의 각 서브디렉터리에 있는 `SKILL.md`가 로드됩니다.

```php theme={null}
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'),
    ],
));
```

배열 형식으로도 지정할 수 있습니다.

```php theme={null}
Copilot::run(
    prompt: 'README의 개선안을 내줘',
    config: [
        'skillDirectories' => [base_path('skills')],
    ],
);
```

## 스킬 비활성화

`disabledSkills`를 사용하면 로드된 스킬의 일부만 비활성화할 수 있습니다.

```php theme={null}
$config = new SessionConfig(
    skillDirectories: [base_path('skills')],
    disabledSkills: ['experimental-feature', 'deprecated-tool'],
);
```

## 디렉터리 구성

```text theme={null}
skills/
├── code-review/
│   └── SKILL.md
└── documentation/
    └── SKILL.md
```

`skillDirectories`에는 `skills/`와 같은 부모 디렉터리를 지정합니다.

## SKILL.md 형식

`SKILL.md`는 Markdown이며, YAML frontmatter를 임의로 붙일 수 있습니다.

```markdown theme={null}
---
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`에 스킬 이름을 지정하면 대상 에이전트 기동 시에 해당 스킬 내용이 사전에 로드됩니다.

```php theme={null}
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에서도 조작할 수 있습니다.

```php theme={null}
// 서버 레벨에서 스킬 검출
$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에 `name`과 `description`을 붙임
* 충돌하는 지시가 있는 경우 `disabledSkills`로 명시적으로 제외
* 우선 단독으로 동작 확인한 후 여러 스킬을 조합

## 참고

* [SessionConfig](/ko/packages/laravel-copilot-sdk/session-config)
* [Custom Agents](/ko/packages/laravel-copilot-sdk/custom-agents)
* [RPC](/ko/packages/laravel-copilot-sdk/rpc)


## Related topics

- [laravel/agent-skills — Laravel 공식 AI 에이전트 스킬 모음](/ko/blog/agent-skills-introduction.md)
- [Boost의 커스텀 에이전트 만들기](/ko/advanced/boost-custom-agent.md)
- [Laravel과 AI 개발](/ko/ai.md)
- [스트리밍 이벤트](/ko/packages/laravel-copilot-sdk/streaming-events.md)
- [Laravel Boost](/ko/boost.md)
