---
title: "Agent Skills"
description: "Define reusable behavior via SKILL.md definitions"
---

Agent Skill let OpenCode discover reusable instruction from your repo 또는 홈 디렉토리.
Skills are loaded on-demand via native `skill` tool-agents see available skills and can loaded full content when needed.

---

## 파일 장소

기술 이름 당 하나의 폴더를 만들고 내부 `SKILL.md`를 넣어.
OpenCode 이 위치를 검색:

- 프로젝트 구성: `.opencode/skills/<name>/SKILL.md`
- 글로벌 구성: `~/.config/opencode/skills/<name>/SKILL.md`
- 프로젝트 클로드 호환 : `.claude/skills/<name>/SKILL.md`
- 글로벌 클로드 호환 : `~/.claude/skills/<name>/SKILL.md`
- 프로젝트 에이전트 호환 : `.agents/skills/<name>/SKILL.md`
- 글로벌 에이전트 호환 : `~/.agents/skills/<name>/SKILL.md`

---

## 발견의 이해

Project-local paths의 경우, OpenCode는 git worktree에 도달 할 때까지 현재 작업 디렉토리에서 걷습니다.
그것은 `.opencode/`에 있는 어떤 어울리는 `skills/*/SKILL.md` 및 어떤 어울리는 `.claude/skills/*/SKILL.md` 또는 `.agents/skills/*/SKILL.md`를 방법 적재합니다.

세계적인 정의는 또한 `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md` 및 `~/.agents/skills/*/SKILL.md`에서 적재됩니다.

---

## 쓰기 frontmatter

각 `SKILL.md`는 YAML frontmatter로 시작해야 합니다.
이 필드는 인식됩니다:

- `name` (필수)
- `description` (필수)
- (선택) `license`
- (선택) `compatibility`
- `metadata` (선택 사항, 문자열에 문자열 맵)

알려진 frontmatter 필드는 무시됩니다.

---

## 유효 이름

`name`는 해야 합니다:

- 1–64자
- 단 하나 hyphen 분리기를 가진 더 낮은 케이스 alphanumeric가 있으십시오
- `-`로 시작 또는 끝 아닙니다
- 연속 `--` 포함하지
- `SKILL.md`를 포함하는 디렉토리 이름을 일치

동등한 regex:

```text
^[a-z0-9]+(-[a-z0-9]+)*$
```

---

## 길이 규칙을 따르십시오

`description`는 1-1024 특성이어야 합니다.
제대로 선택하기 위해 에이전트에 대해 충분히 유지하십시오.

---

## 예제 사용

이처럼 `.opencode/skills/git-release/SKILL.md` 만들기:

```markdown
---
name: git-release
description: Create consistent releases and changelogs
license: MIT
compatibility: opencode
metadata:
  audience: maintainers
  workflow: github
---

## What I do

- Draft release notes from merged PRs
- Propose a version bump
- Provide a copy-pasteable `gh release create` command

## When to use me

Use this when you are preparing a tagged release.
Ask clarifying questions if the target versioning scheme is unclear.
```

---

## 인식 도구 설명

OpenCode는 `skill` 도구 설명에서 사용할 수있는 기술을 나열합니다.
각 항목에는 기술 이름 및 설명이 포함됩니다.

```xml
<available_skills>
  <skill>
    <name>git-release</name>
    <description>Create consistent releases and changelogs</description>
  </skill>
</available_skills>
```

에이전트는 도구를 호출하여 기술을로드 :

```
skill({ name: "git-release" })
```

---

## 권한 구성

기술 에이전트가 `opencode.json`의 패턴 기반 권한을 사용하여 액세스 할 수있는 제어 :

```json
{
  "permission": {
    "skill": {
      "*": "allow",
      "pr-review": "allow",
      "internal-*": "deny",
      "experimental-*": "ask"
    }
  }
}
```

| 권한    | 동작                              |
| ------- | --------------------------------- |
| `allow` | 기술이 즉시 로드됨                |
| `deny`  | 에이전트에서 기술 숨김, 접근 거부 |
| `ask`   | 로드 전에 사용자에게 승인 요청    |

패턴 지원 와일드 카드: `internal-*` 경기 `internal-docs`, `internal-tools`, 등.

---

## 에이전트 당 override

글로벌 디폴트보다 특정 에이전트 다른 권한을 부여합니다.

**사용자 지정 에이전트 ** ( 에이전트 frontmatter):

```yaml
---
permission:
  skill:
    "documents-*": "allow"
---
```

** 내장 에이전트 ** (`opencode.json`에서):

```json
{
  "agent": {
    "plan": {
      "permission": {
        "skill": {
          "internal-*": "allow"
        }
      }
    }
  }
}
```

---

## 기술 도구 비활성화

그들을 사용하지 않는 대리인을위한 완전히 비활성화 된 기술 :

**사용자 지정 에이전트**:

```yaml
---
tools:
  skill: false
---
```

** 내장 에이전트 **:

```json
{
  "agent": {
    "plan": {
      "tools": {
        "skill": false
      }
    }
  }
}
```

비활성화 할 때, `<available_skills>` 섹션은 완전히 부유합니다.

---

## 문제 해결 선적

기술이 나타나지 않는 경우:

1. `SKILL.md`는 모든 모자에서 spelled
2. `name`와 `description`를 포함하는 검사
3. 기술 이름은 모든 위치에서 독특합니다.
4. `deny`를 가진 허가를 검사하십시오 대리인에서 숨겨집니다
