Skills

Tworzenie Skills

Skills uczą agenta, jak i kiedy używać narzędzi. Każdy skill to katalog zawierający plik SKILL.md z YAML frontmatter i instrukcjami w Markdown. OpenClaw ładuje Skills z kilku katalogów głównych w zdefiniowanej kolejności pierwszeństwa.

Utwórz swój pierwszy skill

  • Create the skill directory

    Skills znajdują się w folderze skills/ Twojego workspace. Utwórz katalog dla nowego skilla:

    bash
    mkdir -p ~/.openclaw/workspace/skills/hello-world

    Możesz grupować Skills w podfolderach dla lepszej organizacji — skill nadal jest nazywany przez frontmatter w SKILL.md, a nie przez ścieżkę folderu:

    bash
    mkdir -p ~/.openclaw/workspace/skills/personal/hello-world# skill name is still "hello-world", invoked as /hello-world
  • Write SKILL.md

    Utwórz SKILL.md w katalogu. Frontmatter definiuje metadane; treść zawiera instrukcje dla agenta.

    markdown
    ---name: hello-worlddescription: A simple skill that prints a greeting.--- # Hello World When the user asks for a greeting, use the `exec` tool to run: ```bashecho "Hello from your custom skill!"
    Code
     Zasady nazewnictwa:- Używaj małych liter, cyfr i łączników w polu `name`.- Utrzymuj zgodność nazwy katalogu i frontmatter `name`.- `description` jest pokazywane agentowi i w wykrywaniu poleceń slash —  powinno być jednowierszowe i mieć mniej niż 160 znaków.  OPENCLAW_DOCS_MARKER:stepClose:   OPENCLAW_DOCS_MARKER:stepOpen:IHRpdGxlPSJWZXJpZnkgdGhlIHNraWxsIGxvYWRlZCI ```bashopenclaw skills list

    OpenClaw domyślnie obserwuje pliki SKILL.md w katalogach głównych Skills. Jeśli obserwator jest wyłączony albo kontynuujesz istniejącą sesję, rozpocznij nową, aby agent otrzymał odświeżoną listę:

    bash
    # From chat — archive current session and start fresh/new # Or restart the gatewayopenclaw gateway restart
  • Test it

    Wyślij wiadomość, która powinna uruchomić skill:

    bash
    openclaw agent --message "give me a greeting"

    Możesz też otworzyć czat i zapytać agenta bezpośrednio. Użyj /skill hello-world, aby jawnie wywołać go po nazwie.

  • Dokumentacja SKILL.md

    Wymagane pola

    Pole Opis
    name Unikalny slug używający małych liter, cyfr i łączników
    description Jednowierszowy opis pokazywany agentowi i w wynikach wykrywania

    Opcjonalne klucze frontmatter

    Pole Domyślnie Opis
    user-invocable true Udostępnia skill jako polecenie slash użytkownika
    disable-model-invocation false Nie umieszcza skilla w system prompt agenta (nadal działa przez /skill)
    command-dispatch Ustaw na tool, aby skierować polecenie slash bezpośrednio do narzędzia, z pominięciem modelu
    command-tool Nazwa narzędzia do wywołania, gdy ustawiono command-dispatch: tool
    command-arg-mode raw Dla wysyłania do narzędzia przekazuje surowy ciąg argumentów do narzędzia
    homepage URL pokazywany jako „Witryna” w interfejsie Skills na macOS

    Pola bramkujące (requires.bins, requires.env itd.) opisuje sekcja Skills — Bramkowanie.

    Używanie {baseDir}

    Użyj {baseDir} w treści skilla, aby odwoływać się do plików wewnątrz katalogu skilla bez wpisywania ścieżek na stałe:

    markdown
    Run the helper script at `{baseDir}/scripts/run.sh`.

    Dodawanie aktywacji warunkowej

    Ogranicz ładowanie skilla tak, aby ładował się tylko wtedy, gdy jego zależności są dostępne:

    markdown
    ---name: gemini-searchdescription: Search using Gemini CLI.metadata: { "openclaw": { "requires": { "bins": ["gemini"] }, "primaryEnv": "GEMINI_API_KEY" } }---
    Gating options
    Klucz Opis
    requires.bins Wszystkie pliki binarne muszą istnieć w PATH
    requires.anyBins Co najmniej jeden plik binarny musi istnieć w PATH
    requires.env Każda zmienna env musi istnieć w procesie lub konfiguracji
    requires.config Każda ścieżka openclaw.json musi być prawdziwa
    os Filtr platformy: ["darwin"], ["linux"], ["win32"]
    always Ustaw true, aby pominąć wszystkie warunki i zawsze uwzględniać skill

    Pełna dokumentacja: Skills — Bramkowanie.

    Environment and API keys

    Powiąż klucz API z wpisem skilla w openclaw.json:

    json5
    {  skills: {    entries: {      "gemini-search": {        enabled: true,        apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" },      },    },  },}

    Klucz jest wstrzykiwany do procesu hosta tylko na czas danej tury agenta. Nie trafia do sandboxa — zobacz zmienne env w sandboxie.

    Proponowanie przez Warsztat Skills

    W przypadku Skills przygotowanych przez agenta albo gdy chcesz, aby operator sprawdził skill przed uruchomieniem go produkcyjnie, użyj propozycji Warsztatu Skills zamiast pisać SKILL.md bezpośrednio.

    bash
    # Propose a brand-new skillopenclaw skills workshop propose-create \  --name "hello-world" \  --description "A simple skill that prints a greeting." \  --proposal ./PROPOSAL.md # Propose an update to an existing skillopenclaw skills workshop propose-update hello-world \  --proposal ./PROPOSAL.md \  --description "Updated greeting skill"

    Użyj --proposal-dir, gdy propozycja zawiera pliki pomocnicze:

    bash
    openclaw skills workshop propose-create \  --name "hello-world" \  --description "A simple skill that prints a greeting." \  --proposal-dir ./hello-world-proposal/

    Katalog musi zawierać PROPOSAL.md. Pliki pomocnicze mogą znajdować się w assets/, examples/, references/, scripts/ lub templates/.

    Po przeglądzie:

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

    Zobacz Warsztat Skills, aby poznać pełny cykl życia propozycji.

    Publikowanie w ClawHub

  • Ensure your SKILL.md is complete

    Upewnij się, że ustawiono name, description oraz wszystkie pola bramkujące metadata.openclaw. Dodaj URL homepage, jeśli masz stronę projektu.

  • Install the ClawHub skill

    Skill ClawHub dokumentuje aktualny kształt polecenia publikowania i wymagane metadane:

    bash
    openclaw skills install @openclaw/clawhub-publish
  • Publish

    bash
    clawhub publish

    Pełny proces opisuje ClawHub — Publikowanie.

  • Najlepsze praktyki

    Powiązane

    Was this useful?
    On this page

    On this page