Skills

Skills

Skills는 에이전트에게 도구를 사용하는 방법과 시점을 알려 주는 마크다운 지침 파일입니다. 각 Skills는 YAML 프런트매터와 마크다운 본문이 포함된 SKILL.md 파일을 가진 디렉터리에 있습니다. OpenClaw는 번들된 Skills와 모든 로컬 재정의를 로드하고, 로드 시 환경, 구성, 바이너리 존재 여부에 따라 필터링합니다.

로드 순서

OpenClaw는 다음 소스에서 우선순위가 높은 순서대로 로드합니다. 동일한 Skills 이름이 여러 위치에 있으면 우선순위가 가장 높은 소스가 적용됩니다.

우선순위 소스 경로
1 — 최고 워크스페이스 Skills <workspace>/skills
2 프로젝트 에이전트 Skills <workspace>/.agents/skills
3 개인 에이전트 Skills ~/.agents/skills
4 관리형/로컬 Skills ~/.openclaw/skills
5 번들된 Skills 설치 패키지에 포함
6 — 최저 추가 디렉터리 skills.load.extraDirs + Plugin Skills

Skills 루트는 그룹화된 레이아웃을 지원합니다. 구성된 루트 아래 어디에서든 SKILL.md가 발견되면 OpenClaw가 해당 Skills를 검색합니다(최대 6단계 깊이).

text
<workspace>/skills/research/SKILL.md          ✓ "research"로 발견됨<workspace>/skills/personal/research/SKILL.md ✓ 역시 "research"로 발견됨

폴더 경로는 구성 목적으로만 사용됩니다. Skills의 이름과 슬래시 명령은 프런트매터의 name 필드에서 가져옵니다(name이 없으면 디렉터리 이름 사용). 아래의 에이전트 허용 목록도 이 name을 기준으로 일치시킵니다.

Node 호스팅 Skills

연결된 헤드리스 Node는 활성 OpenClaw Skills 디렉터리(기본값은 ~/.openclaw/skills, 프로필 환경 재정의 적용)에 설치된 Skills를 게시할 수 있습니다. Node가 연결되어 있는 동안 일반 에이전트 Skills 목록에 표시되고 연결이 끊어지면 사라집니다. 이름이 충돌하면 로컬 또는 Gateway Skills가 기존 이름을 유지하고, Node Skills에는 결정론적인 Node 접두사 이름이 지정됩니다. Node 호스팅 v1에서는 디렉터리 이름이 Skills의 프런트매터 name 필드와 일치해야 합니다.

Skills 항목에는 Node 로케이터가 포함됩니다. 파일, 상대 참조, 바이너리는 Node에 있으므로 exec host=node node=<node-id>를 사용하여 로드하고 실행하세요. Skills 파일을 변경한 후에는 Node 호스트를 다시 시작하세요. 페어링 및 비활성화 스위치에 대해서는 Node를 참조하세요.

에이전트별 Skills와 공유 Skills

다중 에이전트 설정에서는 각 에이전트가 자체 워크스페이스를 가집니다. 원하는 공개 범위에 맞는 경로를 사용하세요.

범위 경로 표시 대상
에이전트별 <workspace>/skills 해당 에이전트만
프로젝트 에이전트 <workspace>/.agents/skills 해당 워크스페이스의 에이전트만
개인 에이전트 ~/.agents/skills 이 컴퓨터의 모든 에이전트
공유 관리형 ~/.openclaw/skills 이 컴퓨터의 모든 에이전트
추가 디렉터리 skills.load.extraDirs 이 컴퓨터의 모든 에이전트

에이전트 허용 목록

Skills의 위치(우선순위)와 Skills의 공개 범위(사용할 수 있는 에이전트)는 별도의 제어 항목입니다. 로드된 위치와 관계없이 허용 목록을 사용하여 에이전트에게 표시되는 Skills를 제한할 수 있습니다.

json5
{  agents: {    defaults: {      skills: ["github", "weather"], // 공유 기준선    },    list: [      { id: "writer" }, // github, weather 상속      { id: "docs", skills: ["docs-search"] }, // 기본값을 완전히 대체      { id: "locked-down", skills: [] }, // Skills 없음    ],  },}
허용 목록 규칙
  • 기본적으로 모든 Skills를 제한 없이 유지하려면 agents.defaults.skills를 생략합니다.
  • agents.defaults.skills를 상속하려면 agents.list[].skills를 생략합니다.
  • 해당 에이전트에 Skills를 전혀 공개하지 않으려면 agents.list[].skills: []로 설정합니다.
  • 비어 있지 않은 agents.list[].skills 목록이 최종 집합이며 기본값과 병합되지 않습니다.
  • 유효 허용 목록은 프롬프트 빌드, 슬래시 명령 검색, 샌드박스 동기화, Skills 스냅샷 전체에 적용됩니다.
  • 이는 호스트 셸의 권한 부여 경계가 아닙니다. 동일한 에이전트가 exec를 사용할 수 있다면 샌드박싱, OS 사용자 격리, 실행 거부/허용 목록, 리소스별 자격 증명을 사용하여 해당 셸을 별도로 제한하세요.

Plugin과 Skills

Plugin은 openclaw.plugin.jsonskills 디렉터리(Plugin 루트 기준 상대 경로)를 나열하여 자체 Skills를 제공할 수 있습니다. Plugin Skills는 Plugin이 활성화되면 로드됩니다. 예를 들어 브라우저 Plugin은 다단계 브라우저 제어를 위한 browser-automation Skills를 제공합니다.

Plugin Skills 디렉터리는 skills.load.extraDirs와 동일한 낮은 우선순위 수준에서 병합되므로, 이름이 같은 번들형, 관리형, 에이전트 또는 워크스페이스 Skills가 이를 재정의합니다. 다른 Skills와 마찬가지로 프런트매터의 metadata.openclaw.requires를 통해 Plugin Skills 자체의 적격성을 제한하세요.

전체 Plugin 시스템에 대해서는 Plugin도구를 참조하세요.

Skills 워크숍

Skills 워크숍은 에이전트와 활성 Skills 파일 사이의 제안 대기열입니다. 에이전트가 재사용 가능한 작업을 발견하면 SKILL.md에 직접 작성하지 않고 제안을 작성합니다. 변경 사항이 적용되기 전에 사용자가 검토하고 승인합니다.

bash
openclaw skills workshop listopenclaw skills workshop inspect <proposal-id>openclaw skills workshop apply <proposal-id>

전체 수명 주기, CLI 참조, 구성은 Skills 워크숍을 참조하세요.

ClawHub에서 설치

ClawHub는 공개 Skills 레지스트리입니다. 설치와 업데이트에는 openclaw skills 명령을 사용하고, 게시와 동기화에는 clawhub CLI를 사용하세요.

작업 명령
워크스페이스에 Skills 설치 openclaw skills install @owner/<slug>
Git 저장소에서 설치 openclaw skills install git:owner/repo@ref
로컬 Skills 디렉터리 설치 openclaw skills install ./path/to/skill --as my-tool
모든 로컬 에이전트용으로 설치 openclaw skills install @owner/<slug> --global
모든 워크스페이스 Skills 업데이트 openclaw skills update --all
공유 관리형 Skills 업데이트 openclaw skills update @owner/<slug> --global
모든 공유 관리형 Skills 업데이트 openclaw skills update --all --global
Skills의 신뢰 범위 확인 openclaw skills verify @owner/<slug>
생성된 Skills 카드 출력 openclaw skills verify @owner/<slug> --card
ClawHub CLI를 통해 게시/동기화 clawhub sync --all
설치 세부 정보

openclaw skills install은 기본적으로 활성 워크스페이스의 skills/ 디렉터리에 설치합니다. --global을 추가하면 공유 ~/.openclaw/skills 디렉터리에 설치되어, 에이전트 허용 목록으로 범위를 좁히지 않는 한 모든 로컬 에이전트에 표시됩니다.

Git 및 로컬 설치에서는 소스 루트에 SKILL.md가 있어야 합니다. 슬러그는 유효한 경우 SKILL.md 프런트매터의 name에서 가져오며, 그렇지 않으면 디렉터리 또는 저장소 이름을 사용합니다. 재정의하려면 --as <slug>를 사용하세요. openclaw skills update는 ClawHub 설치만 추적합니다. Git 또는 로컬 소스를 새로 고치려면 다시 설치하세요.

검증 및 보안 검사

openclaw skills verify @owner/<slug>는 ClawHub에 Skills의 clawhub.skill.verify.v1 신뢰 범위를 요청합니다. 설치된 ClawHub Skills는 .clawhub/origin.json에 기록된 버전과 레지스트리를 기준으로 검증됩니다. 기존에 설치되었거나 모호하지 않은 Skills에는 소유자 없는 슬러그도 계속 허용되지만, 소유자가 포함된 참조를 사용하면 게시자 모호성을 피할 수 있습니다.

ClawHub Skills 페이지에는 설치 전에 최신 보안 검사 상태가 표시되며, VirusTotal, ClawScan, 정적 분석에 대한 세부 정보 페이지도 제공됩니다. ClawHub에서 검증을 실패로 표시하면 명령이 0이 아닌 코드로 종료됩니다. 게시자는 ClawHub 대시보드 또는 clawhub skill rescan @owner/<slug>를 통해 오탐을 해결할 수 있습니다.

비공개 아카이브 설치

ClawHub 이외의 전달 방식이 필요한 Gateway 클라이언트는 skills.upload.begin, skills.upload.chunk, skills.upload.commit을 사용하여 ZIP Skills 아카이브를 스테이징한 다음 skills.install({ source: "upload", ... })로 설치할 수 있습니다. 이 경로는 기본적으로 비활성화되어 있으며 openclaw.json에서 skills.install.allowUploadedArchives: true가 필요합니다. 일반적인 ClawHub 설치에는 이 설정이 필요하지 않습니다.

보안

경로 격리

워크스페이스, 프로젝트 에이전트, 추가 디렉터리의 Skills 검색은 확인된 실제 경로가 구성된 루트 내부에 유지되는 Skills 루트만 허용합니다. 단, skills.load.allowSymlinkTargets가 대상 루트를 명시적으로 신뢰하는 경우는 예외입니다. Skills 워크숍은 skills.workshop.allowSymlinkTargetWrites가 활성화된 경우에만 해당 신뢰 대상에 씁니다. 관리형 ~/.openclaw/skills와 개인용 ~/.agents/skills에는 심볼릭 링크로 연결된 Skills 폴더가 포함될 수 있지만, 모든 SKILL.md의 실제 경로는 확인된 Skills 디렉터리 내부에 있어야 합니다.

운영자 설치 정책

Skills 설치를 계속하기 전에 신뢰할 수 있는 로컬 정책 명령을 실행하도록 security.installPolicy를 구성하세요. 정책은 메타데이터와 스테이징된 소스 경로를 받아 ClawHub, 업로드, Git, 로컬, 업데이트, 종속성 설치 프로그램 경로에 적용되며, 명령이 유효한 결정을 반환하지 못하면 설치를 차단합니다.

비밀 정보 주입 범위

skills.entries.*.envskills.entries.*.apiKey는 해당 에이전트 턴 동안에만 비밀 정보를 호스트 프로세스에 주입하며 샌드박스에는 주입하지 않습니다. 프롬프트와 로그에 비밀 정보를 포함하지 마세요.

더 광범위한 위협 모델과 보안 체크리스트는 보안을 참조하세요.

SKILL.md 형식

모든 Skills에는 최소한 프런트매터에 namedescription이 있어야 합니다.

markdown
---name: image-labdescription: 공급자 기반 이미지 워크플로를 통해 이미지를 생성하거나 편집--- 사용자가 이미지 생성을 요청하면 `image_generate` 도구를 사용합니다...

선택적 frontmatter 키

homepagestring

macOS Skills UI에서 "Website"로 표시되는 URL입니다. metadata.openclaw.homepage를 통해서도 지원됩니다.

user-invocablebooleandefault: true

true이면 Skills가 사용자가 호출할 수 있는 슬래시 명령으로 노출됩니다.

disable-model-invocationbooleandefault: false

true이면 OpenClaw은 에이전트의 일반 프롬프트에서 해당 Skills의 지침을 제외합니다. user-invocabletrue이면 Skills를 슬래시 명령으로 계속 사용할 수 있습니다.

command-dispatch"tool"

tool로 설정하면 슬래시 명령이 모델을 우회하여 등록된 도구로 직접 전달됩니다.

command-toolstring

command-dispatch: tool이 설정되었을 때 호출할 도구 이름입니다.

command-arg-mode"raw"default: raw

도구로 전달할 때 핵심 파싱 없이 원시 인수 문자열을 도구로 전달합니다. 도구는 { command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }을 받습니다.

게이팅

OpenClaw은 로드 시점에 metadata.openclaw(frontmatter에 포함된 JSON5 객체, 위의 파싱 참고 사항 참조)를 사용하여 Skills를 필터링합니다. metadata.openclaw 블록이 없는 Skills는 명시적으로 비활성화되지 않는 한 항상 사용할 수 있습니다.

markdown
---name: image-labdescription: Generate or edit images via a provider-backed image workflowmetadata:  {    "openclaw":      {        "requires": { "bins": ["uv"], "env": ["GEMINI_API_KEY"], "config": ["browser.enabled"] },        "primaryEnv": "GEMINI_API_KEY",      },  }---
alwaysboolean

true이면 항상 Skills를 포함하고 다른 모든 게이트를 건너뜁니다.

emojistring

macOS Skills UI에 표시되는 선택적 이모지입니다.

homepagestring

macOS Skills UI에서 "Website"로 표시되는 선택적 URL입니다.

os("darwin" | "linux" | "win32")[]

플랫폼 필터입니다. 설정하면 나열된 OS에서만 Skills를 사용할 수 있습니다.

requires.binsstring[]

각 바이너리가 PATH에 있어야 합니다.

requires.anyBinsstring[]

하나 이상의 바이너리가 PATH에 있어야 합니다.

requires.envstring[]

각 환경 변수가 프로세스에 존재하거나 구성을 통해 제공되어야 합니다.

requires.configstring[]

openclaw.json 경로의 값이 참이어야 합니다.

primaryEnvstring

skills.entries.<name>.apiKey와 연결된 환경 변수 이름입니다.

installobject[]

macOS Skills UI에서 사용하는 선택적 설치 프로그램 사양입니다(brew / node / go / uv / download).

설치 프로그램 사양

설치 프로그램 사양은 macOS Skills UI에 종속성을 설치하는 방법을 알려 줍니다.

markdown
---name: geminidescription: Use Gemini CLI for coding assistance and Google search lookups.metadata:  {    "openclaw":      {        "emoji": "♊️",        "requires": { "bins": ["gemini"] },        "install":          [            {              "id": "brew",              "kind": "brew",              "formula": "gemini-cli",              "bins": ["gemini"],              "label": "Install Gemini CLI (brew)",            },          ],      },  }---
설치 프로그램 선택 규칙
  • 여러 설치 프로그램이 나열되면 Gateway는 선호 옵션 하나를 선택합니다 (사용 가능한 경우 brew, 그렇지 않으면 node).
  • 모든 설치 프로그램이 download이면 OpenClaw은 사용 가능한 모든 아티팩트를 확인할 수 있도록 각 항목을 나열합니다.
  • 사양에 os: ["darwin"|"linux"|"win32"]를 포함하여 플랫폼별로 필터링할 수 있습니다.
  • Node 설치는 openclaw.jsonskills.install.nodeManager를 따릅니다 (기본값: npm, 옵션: npm / pnpm / yarn / bun). 이는 Skills 설치에만 영향을 주며 Gateway 런타임은 계속 Node여야 합니다.
  • Gateway 설치 프로그램 우선순위: Homebrew → uv → 구성된 node 관리자 → go → download.
설치 프로그램별 세부 정보
  • Homebrew: OpenClaw은 Homebrew를 자동으로 설치하거나 brew 수식을 시스템 패키지 명령으로 변환하지 않습니다. brew가 없는 Linux 컨테이너에서는 brew 전용 설치 프로그램이 숨겨집니다. 사용자 지정 이미지를 사용하거나 종속성을 수동으로 설치하세요.
  • Go: OpenClaw에서 Skills를 자동으로 설치하려면 Go 1.21 이상이 필요합니다. go가 없고 Homebrew를 사용할 수 있으면 OpenClaw은 먼저 Homebrew를 통해 Go를 설치합니다. Homebrew가 없는 Linux에서는 갱신된 golang-go 후보가 최소 버전을 충족할 경우 대신 루트 권한으로 apt-get을 사용하거나 암호 없는 sudo를 통해 사용할 수 있습니다. 종속성에 대한 실제 go install은 구성된 GOBIN이 아니라 항상 OpenClaw이 관리하는 전용 bin 디렉터리(새로 설치한 경우 Homebrew의 bin, 그렇지 않으면 ~/.local/bin)를 대상으로 합니다. 사용자의 GOBIN, GOPATH, GOTOOLCHAIN 환경 변수는 읽지만 절대 덮어쓰지 않습니다.
  • 다운로드: url(필수), archive(tar.gz | tar.bz2 | zip), extract(기본값: 아카이브 감지 시 자동), stripComponents, targetDir(기본값: ~/.openclaw/tools/<skillKey>).
샌드박싱 참고 사항

requires.bins는 Skills 로드 시점에 호스트에서 확인됩니다. 에이전트가 샌드박스에서 실행되는 경우 바이너리가 컨테이너 내부에도 있어야 합니다. agents.defaults.sandbox.docker.setupCommand 또는 사용자 지정 이미지를 통해 설치하세요. setupCommand는 컨테이너 생성 후 한 번 실행되며, 네트워크 송신, 쓰기 가능한 루트 파일 시스템, 샌드박스 내 루트 사용자가 필요합니다.

구성 재정의

~/.openclaw/openclaw.jsonskills.entries 아래에서 번들 또는 관리형 Skills를 전환하고 구성합니다.

json5
{  skills: {    entries: {      "image-lab": {        enabled: true,        apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" },        env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" },        config: {          endpoint: "https://example.invalid",          model: "nano-pro",        },      },      peekaboo: { enabled: true },      sag: { enabled: false },    },  },}
enabledboolean

false이면 번들에 포함되었거나 설치된 Skills도 비활성화합니다. 번들 coding-agent Skills는 명시적으로 활성화해야 합니다. skills.entries.coding-agent.enabled: true로 설정하고 claude, codex, opencode 또는 지원되는 다른 CLI 중 하나가 설치되고 인증되었는지 확인하세요.

apiKeystring | { source, provider, id }

metadata.openclaw.primaryEnv를 선언하는 Skills를 위한 편의 필드입니다. 일반 텍스트 문자열 또는 SecretRef 객체를 지원합니다.

env"Record<string,
configobject

Skills별 사용자 지정 구성 필드를 위한 선택적 모음입니다.

allowBundledstring[]

번들 Skills에만 적용되는 선택적 허용 목록입니다. 설정하면 목록에 포함된 번들 Skills만 사용할 수 있습니다. 관리형 Skills와 워크스페이스 Skills에는 영향을 주지 않습니다.

환경 주입

에이전트 실행이 시작되면 OpenClaw은 다음을 수행합니다.

  • Skills 메타데이터 읽기

    OpenClaw은 게이팅 규칙, 허용 목록, 구성 재정의를 적용하여 에이전트에 유효한 Skills 목록을 결정합니다.

  • 환경 변수와 API 키 주입

    skills.entries.<key>.envskills.entries.<key>.apiKey가 실행되는 동안 process.env에 적용됩니다.

  • 시스템 프롬프트 빌드

    사용 가능한 Skills가 간결한 XML 블록으로 컴파일되어 시스템 프롬프트에 주입됩니다.

  • 환경 복원

    실행이 끝나면 원래 환경이 복원됩니다.

  • 번들 claude-cli 백엔드의 경우 OpenClaw은 사용할 수 있는 동일한 Skills 스냅샷을 임시 Claude Code Plugin으로 구체화하고 --plugin-dir을 통해 전달합니다. 다른 CLI 백엔드는 프롬프트 카탈로그만 사용합니다.

    스냅샷과 새로 고침

    OpenClaw은 세션이 시작될 때 사용 가능한 Skills의 스냅샷을 생성하고 세션의 이후 모든 턴에서 해당 목록을 재사용합니다. Skills 또는 구성의 변경 사항은 다음 새 세션부터 적용됩니다.

    세션 도중 Skills가 새로 고쳐지는 경우는 두 가지입니다.

    • Skills 감시자가 SKILL.md 변경을 감지합니다.
    • 사용 가능한 새로운 원격 node가 연결됩니다.

    새로 고친 목록은 다음 에이전트 턴에서 사용됩니다. 유효한 에이전트 허용 목록이 변경되면 OpenClaw은 표시되는 Skills를 일치시키기 위해 스냅샷을 새로 고칩니다.

    Skills 감시자

    기본적으로 OpenClaw은 Skills 폴더를 감시하고 SKILL.md 파일이 변경되면 스냅샷을 갱신합니다. skills.load 아래에서 구성하세요.

    json5
    {  skills: {    load: {      extraDirs: ["~/Projects/agent-scripts/skills"],      allowSymlinkTargets: ["~/Projects/manager/skills"],      watch: true, // default      watchDebounceMs: 250, // default    },  },}

    Skills 루트 심볼릭 링크가 구성된 루트 외부를 가리키는 의도적인 심볼릭 링크 레이아웃에는 allowSymlinkTargets를 사용하세요. 예: <workspace>/skills/manager -> ~/Projects/manager/skills. Skill Workshop이 신뢰할 수 있는 해당 심볼릭 링크 경로를 통해 제안도 적용해야 하는 경우에만 skills.workshop.allowSymlinkTargetWrites를 활성화하세요.

    원격 macOS node(Linux Gateway)

    Gateway가 Linux에서 실행되지만 system.run이 허용된 macOS node가 연결된 경우, 필요한 바이너리가 해당 node에 있으면 OpenClaw은 macOS 전용 Skills를 사용할 수 있는 것으로 처리할 수 있습니다. 에이전트는 host=node를 사용하여 exec 도구를 통해 해당 Skills를 실행해야 합니다.

    오프라인 node는 원격 전용 Skills를 표시되게 하지 않습니다. node가 바이너리 탐색에 응답하지 않으면 OpenClaw은 캐시된 바이너리 일치 정보를 지웁니다.

    토큰 영향

    Skills를 사용할 수 있는 경우 OpenClaw은 간결한 XML 블록을 시스템 프롬프트에 주입합니다. 비용은 결정적이며 Skills별로 선형 증가합니다.

    • 기본 오버헤드(하나 이상의 Skills를 사용할 수 있는 경우에만): 소개 문구와 <available_skills> 래퍼로 구성된 고정 블록입니다.
    • Skills당: 약 97자 + name, description, location 필드 길이.
    • XML 이스케이프는 & < > " '를 엔터티로 확장하여 발생할 때마다 몇 글자를 추가합니다.
    • 약 4자/토큰 기준으로 필드 길이를 제외하면 97자 ≈ Skills당 24토큰입니다.

    렌더링된 블록이 구성된 프롬프트 예산 (skills.limits.maxSkillsPromptChars)을 초과하는 경우, OpenClaw는 먼저 설명이 없는 간결한 형식에 들어갈 수 있는 만큼의 Skills 식별 정보(이름, 위치, 버전)를 보존합니다. 그런 다음 남은 예산을 축약된 설명에 사용합니다. 설명에 사용할 예산이 남아 있지 않으면 설명을 생략합니다. 간결한 형식 지정이나 목록 잘라내기가 필요한 경우 프롬프트에는 openclaw skills check를 안내하는 참고 문구가 포함됩니다.

    프롬프트 오버헤드를 최소화하려면 설명을 짧고 명확하게 작성하세요.

    관련 항목

    Was this useful?
    On this page

    On this page