콘텐츠로 이동

Agent Skills

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에 도달 할 때까지 현재 작업 디렉토리에서 걷습니다. 그것은 skills/*/SKILL.md에 있는 어떤 어울리는 .opencode/ 및 어떤 어울리는 .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:

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

길이 규칙을 따르십시오

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


예제 사용

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

---
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 도구 설명에서 사용할 수있는 기술을 나열합니다. 각 항목에는 기술 이름 및 설명이 포함됩니다.

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

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

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

권한 구성

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

{
"permission": {
"skill": {
"*": "allow",
"pr-review": "allow",
"internal-*": "deny",
"experimental-*": "ask"
}
}
}
권한동작
allow기술이 즉시 로드됨
deny에이전트에서 기술 숨김, 접근 거부
ask로드 전에 사용자에게 승인 요청

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


에이전트 당 override

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

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

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

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

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

기술 도구 비활성화

그들을 사용하지 않는 에이전트을위한 완전히 비활성화 된 기술 :

사용자 지정 에이전트:

---
tools:
skill: false
---

** 내장 에이전트 **:

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

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


문제 해결 선적

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

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