OpenClaw 커스텀 스킬 제작 방법

Ashley Innocent

Ashley Innocent

26 February 2026

OpenClaw 커스텀 스킬 제작 방법

Apidog 엔터프라이즈

온프레미스 배포

SSO & RBAC

SOC 2 준수

Apidog Enterprise 살펴보기

요약

OpenClaw의 강점은 스킬을 통한 확장성에 있습니다. ClawHub에서 700개 이상의 커뮤니티 제작 스킬을 사용할 수 있으며, SKILL.md 파일이나 TypeScript를 사용하여 사용자 지정 스킬을 만들 수 있으므로 OpenClaw 어시스턴트를 거의 모든 작업을 위한 전문 도구로 변환할 수 있습니다. 이 가이드는 기존 스킬 설치부터 직접 스킬을 구축하고 게시하는 것까지 모든 것을 다룹니다.

소개

OpenClaw는 이미 기본적으로 강력한 기능을 제공하지만, 스킬을 통해 진정한 잠재력이 발휘됩니다. 전문적인 코딩 지원, DevOps 자동화, 연구 도구 또는 산업별 기능이 필요하든 관계없이, 이를 위한 스킬이 있을 가능성이 높으며, 그렇지 않다면 직접 만들 수 있습니다.

💡
외부 API와 상호 작용하는 사용자 지정 스킬을 구축할 때, 해당 통합을 테스트하는 데 적합한 도구를 사용하는 것이 중요합니다. Apidog는 스킬이 의존하는 API 엔드포인트를 테스트하고 디버그하여 안정적인 통합을 보장하는 데 도움이 됩니다.
버튼

ClawHub에서 700개 이상의 커뮤니티 제작 스킬과 사용자 지정 스킬을 만들 수 있는 기능을 통해 OpenClaw는 필요한 모든 AI 비서가 될 수 있습니다.

이 종합 가이드에서는 다음 내용을 다룰 것입니다:

OpenClaw 스킬 이해하기

스킬이란 무엇인가요?

스킬은 OpenClaw에 특정 기능을 추가하는 모듈형 확장입니다. 특정 유형의 이메일을 보내는 것부터 특정 API와 상호 작용하는 것까지, AI 비서에게 새로운 기능을 제공하는 플러그인이라고 생각할 수 있습니다.

스킬 유형

1. 자연어 스킬 (SKILL.md)
가장 간단한 형태이며, YAML 프론트매터가 포함된 Markdown으로 작성됩니다. 이는 특정 조건이 충족될 때 OpenClaw가 따르는 운영 런북을 정의합니다.

2. TypeScript 스킬
API에 접근하고, 복잡한 로직을 실행하며, 외부 서비스와 깊이 통합할 수 있는 TypeScript로 구축된 완전한 기능을 갖춘 스킬입니다.

3. CLI 기반 스킬
명령줄 도구를 래핑하는 스킬로, OpenClaw가 시스템에서 사용 가능한 모든 도구를 사용할 수 있도록 합니다.

스킬 작동 방식

스킬은 필요할 때 동적으로 로드(Just-in-time 로딩)되어 메모리 사용량을 관리할 수 있습니다. 사용자 요청이 스킬의 트리거와 일치하면 OpenClaw는 스킬에 정의된 작업을 실행합니다.

스킬 카테고리

ClawHub는 다양한 카테고리의 스킬을 호스팅합니다:

ClawHub 공식 웹사이트

ClawHub에서 스킬 설치하기

스킬 찾기

clawhub.ai에서 ClawHub 마켓플레이스를 탐색하거나 OpenClaw를 통해 직접 검색하세요:

# Search for skills
openclaw skills search "github"

# List popular skills
openclaw skills popular

# Browse a category
openclaw skills browse devops

스킬 설치하기

원하는 스킬을 찾으면 설치는 간단합니다:

# Install a specific skill
openclaw skills install github-actions

# Install with a specific version
openclaw skills install github-actions@1.2.0

# Install from a specific publisher
openclaw skills install @username/skill-name

권장 스킬 모두 설치하기

# Install popular starter skills
openclaw skills install-recommended

설치 확인하기

# List all installed skills
openclaw skills list

# Check skill details
openclaw skills info github-actions

설치된 스킬 관리하기

스킬 활성화 및 비활성화

# Disable a skill (keeps it installed but unused)
openclaw skills disable github-actions

# Enable a disabled skill
openclaw skills enable github-actions

스킬 업데이트

# Update a specific skill
openclaw skills update github-actions

# Update all skills
openclaw skills update-all

스킬 제거

# Uninstall a skill
openclaw skills uninstall github-actions

스킬 구성

많은 스킬이 사용자 지정 구성을 지원합니다:

# Configure a skill
openclaw skills config github-actions --set token=your-github-token

또는 스킬의 구성 파일을 직접 편집하세요:

# ~/.openclaw/skills/github-actions/config.yaml
token: your-github-token
default-branch: main
auto-merge: false

사용자 지정 스킬 구축하기

사용자 지정 스킬을 구축해야 할 때

다음과 같은 경우에 사용자 지정 스킬을 구축하세요:

스킬 구조

기본 스킬은 다음으로 구성됩니다:

my-custom-skill/
├── SKILL.md          # Skill definition (for natural language skills)
├── config.yaml       # Configuration schema
└── icon.svg          # Skill icon (optional)

TypeScript 스킬의 경우:

my-typescript-skill/
├── src/
│   └── index.ts      # Main skill code
├── package.json
├── tsconfig.json
├── config.schema.json
└── skill.yaml        # Skill manifest

SKILL.md 스킬 생성하기

기본 SKILL.md 구조

최소한의 SKILL.md 파일은 다음과 같습니다:

---
name: weather-alert
description: Get weather alerts for your location
triggers:
  - "weather"
  - "weather alert"
  - "forecast"
requires:
  - location
actions:
  - name: get_weather
    api: https://api.weather.com/v3
    params:
      location: "{location}"
---

# 날씨 알림 스킬

이 스킬은 사용자의 위치에 대한 날씨 알림 및 예보를 제공합니다.

## 구성

스킬 설정에서 위치를 설정하세요:
- city: 도시 이름
- units: 미터법 또는 야드파운드법

전체 예시: 이메일 요약 스킬

---
name: daily-email-summary
description: Receive a daily summary of your important emails
triggers:
  - "email summary"
  - "daily emails"
  - "summarize my emails"
requires:
  - email_access
  - api_key
actions:
  - name: fetch_emails
    method: gmail.users.messages.list
    params:
      q: "is:unread"
      maxResults: 10
  - name: summarize
    model: gpt-4
    prompt: "Summarize these emails in bullet points"
---

# 일일 이메일 요약 스킬

자동화된 일일 요약으로 받은 편지함을 관리하세요.

## 기능

- Gmail에서 읽지 않은 이메일 가져오기
- AI를 사용하여 핵심 요점 요약
- 선호하는 채널로 요약 전송

## 설정

1. OpenClaw 설정에서 Gmail API 접근 구성
2. 선호하는 요약 시간 설정
3. 배달 채널 선택 (Telegram, Discord 등)

## 사용 예시

사용자: 내 이메일 요약 보내줘
OpenClaw: 다음은 읽지 않은 이메일 8개의 요약입니다:


### 고급 트리거

더 정교한 트리거를 사용하세요:

```markdown
---
name: smart-reminder
triggers:
  # Exact phrases
  - "remind me to {action}"
  # Patterns
  - "remind me in {duration}"
  # Contextual
  context:
    - channel: work
      patterns: ["meeting", "deadline", "project"]
---

# 스마트 알림 스킬

지능형 구문 분석을 통해 모든 알림 요청을 처리합니다.

TypeScript 스킬 구축하기

더 복잡한 통합을 위해 TypeScript 스킬은 완벽한 제어를 제공합니다.

개발 환경 설정

# Create a new skill project
openclaw skills create my-awesome-skill

# Navigate to the skill directory
cd my-awesome-skill

# Install dependencies
npm install

# Start development server
npm run dev

TypeScript 스킬 구조

// src/index.ts
import { Skill, SkillContext, SkillResult } from '@openclaw/skill-sdk';

export default class MyAwesomeSkill implements Skill {
  name = 'my-awesome-skill';
  description = 'A skill that does something awesome';

  // 스킬이 로드될 때 호출됩니다
  async onLoad(context: SkillContext): Promise<void> {
    console.log('Skill loaded!');
  }

  // 스킬이 트리거와 일치할 때 호출됩니다
  async execute(context: SkillContext): Promise<SkillResult> {
    const { userMessage, config } = context;

    // 여기에 스킬 로직을 작성하세요
    const result = await this.doSomethingAwesome(userMessage.content);

    return {
      message: result,
      actions: []
    };
  }

  private async doSomethingAwesome(input: string): Promise<string> {
    // 스킬 로직을 구현하세요
    return `You said: ${input}`;
  }
}

스킬 매니페스트 (skill.yaml)

name: my-awesome-skill
version: 1.0.0
description: A skill that does something awesome
author:
  name: Your Name
  email: you@example.com

triggers:
  - pattern: "do something awesome"
    type: exact

config:
  apiKey:
    type: string
    required: true
    description: API key for the service

permissions:
  - network
  - filesystem

runtime: nodejs18

구성 스키마 (config.schema.json)

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string",
      "description": "API key for the service"
    },
    "enabled": {
      "type": "boolean",
      "default": true
    }
  },
  "required": ["apiKey"]
}

구축 및 테스트

# Build the skill
npm run build

# Run tests
npm test

# Package for distribution
npm run package

예시: GitHub 통합 스킬

API 통합을 보여주는 더 완전한 예시입니다:

import { Skill, SkillContext, SkillResult } from '@openclaw/skill-sdk';
import axios from 'axios';

export default class GitHubSkill implements Skill {
  name = 'github';
  description = 'Interact with GitHub repositories';

  async execute(context: SkillContext): Promise<SkillResult> {
    const { userMessage, config } = context;
    const message = userMessage.content.toLowerCase();

    if (message.includes('list repos')) {
      return this.listRepositories(config);
    } else if (message.includes('create issue')) {
      return this.createIssue(context);
    }

    return {
      message: 'I can help with listing repos, creating issues, and more.',
      actions: []
    };
  }

  private async listRepositories(config: any): Promise<SkillResult> {
    const response = await axios.get('https://api.github.com/user/repos', {
      headers: {
        Authorization: `token ${config.githubToken}`
      }
    });

    const repos = response.data.slice(0, 5).map((r: any) => r.name).join('\n');

    return {
      message: `Your recent repositories:\n${repos}`,
      actions: []
    };
  }

  private async createIssue(context: SkillContext): Promise<SkillResult> {
    // Extract issue details from user message
    return {
      message: 'I need more details to create an issue. Please specify the repository, title, and description.',
      actions: [
        {
          type: 'request_input',
          fields: ['repo', 'title', 'description']
        }
      ]
    };
  }
}

ClawHub에 스킬 게시하기

게시를 위한 스킬 준비

  1. 철저히 테스트: 스킬이 다양한 시나리오에서 작동하는지 확인하세요.
  2. 문서 추가: 예시가 포함된 명확한 SKILL.md를 작성하세요.
  3. 적절한 권한 설정: 필요한 접근 권한만 요청하세요.
  4. 아이콘 추가: 간단한 SVG 아이콘을 만드세요.
  5. 버전 관리: 시맨틱 버전 관리(1.0.0, 1.1.0 등)를 사용하세요.

게시 프로세스

# Login to ClawHub
openclaw skills login

# Check your skill is ready
openclaw skills validate

# Publish your skill
openclaw skills publish

게시 요구 사항

버전 관리

# Bump version
openclaw skills version patch  # 1.0.0 -> 1.0.1
openclaw skills version minor  # 1.0.0 -> 1.1.0
openclaw skills version major  # 1.0.0 -> 2.0.0

# Publish new version
openclaw skills publish

보안 모범 사례

타사 스킬 설치

중요 보안 고지: 2026년 초 ClawHavoc 사건은 ClawHub에서 악성 스킬이 발견되었음을 드러냈습니다. 항상 다음 예방 조치를 따르십시오:

  1. 게시자 확인: 신뢰할 수 있고 검증된 게시자의 스킬만 설치하세요.
  2. 권한 검토: 스킬이 어떤 권한을 요청하는지 확인하세요.
  3. 코드 감사: TypeScript 스킬의 경우 소스 코드를 검토하세요.
  4. 격리된 시작: 스킬을 별도의 환경에서 먼저 테스트하세요.
# Check skill permissions before installing
openclaw skills inspect github-actions

보안 스킬 구축

자신의 스킬을 구축할 때:

# 항상 최소한의 필요한 권한을 지정하세요
permissions:
  - network  # 필요한 경우에만
  - filesystem  # 필요한 경우에만

# 절대 비밀을 하드코딩하지 마세요
# 나쁜 예:
const apiKey = "sk-1234567890";

# 좋은 예:
const apiKey = process.env.API_KEY;

권장 보안 구성

# ~/.openclaw/security.yaml
skill_security:
  require_virustotal: true
  require_verified_publisher: false  # 프로덕션 환경에서는 true로 설정하세요
  audit_permissions: true
  sandbox_mode: true

고급 스킬 개발

스킬 종속성

스킬은 다른 스킬에 의존할 수 있습니다:

# skill.yaml
dependencies:
  - name: github
    version: ">=1.0.0"
  - name: slack
    version: ">=2.0.0"

이벤트 기반 스킬

OpenClaw 이벤트에 반응하세요:

export default class EventSkill implements Skill {
  async onMessage(context: SkillContext): Promise<SkillResult> {
    // 모든 메시지에 대해 호출됩니다
  }

  async onTimer(context: SkillContext): Promise<SkillResult> {
    // 스케줄에 따라 호출됩니다
  }

  async onStartup(context: SkillContext): Promise<void> {
    // OpenClaw가 시작될 때 호출됩니다
  }

  async onShutdown(context: SkillContext): Promise<void> {
    // OpenClaw가 중지될 때 호출됩니다
  }
}

스킬과 함께 MCP 사용하기

스킬을 MCP 서버와 결합하세요:

# skill.yaml
mcpServers:
  - name: filesystem
    command: npx @modelcontextprotocol/server-filesystem ./data
  - name: github
    command: npx @modelcontextprotocol/server-github

문제 해결

스킬이 로드되지 않음

# Check skill status
openclaw skills status my-skill

# View skill logs
openclaw logs --skill my-skill

일반적인 원인:

트리거가 일치하지 않음

# Test trigger matching
openclaw skills test-trigger "your trigger phrase"

성능 문제

# Check skill resource usage
openclaw skills monitor

# Disable resource-heavy skills temporarily
openclaw skills disable heavy-skill

결론

OpenClaw의 스킬 시스템은 단순한 AI 비서에서 강력하고 확장 가능한 플랫폼으로 변화시킵니다. ClawHub에서 커뮤니티 제작 스킬을 설치하든, 자신만의 사용자 지정 솔루션을 구축하든, 가능성은 거의 무한합니다.

새로운 스킬이 추가될수록 OpenClaw 생태계는 더욱 강력해집니다. 지금 바로 구축을 시작하세요!

💡
전문가 수준의 AI 애플리케이션을 구축할 준비가 되셨나요? Apidog를 무료로 다운로드하여 개발자를 위해 설계된 시각적 인터페이스로 AI 서비스 통합을 테스트하고 관리하세요.
버튼
Apidog 디자인 사양 일러스트레이션

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요