Skills

Skills

Skills adalah file instruksi markdown yang mengajarkan kepada agen cara dan waktu menggunakan alat. Setiap skill berada dalam direktori yang berisi file SKILL.md dengan frontmatter YAML dan isi markdown. OpenClaw memuat skill bawaan beserta penggantian lokal, lalu memfilternya saat pemuatan berdasarkan lingkungan, konfigurasi, dan keberadaan biner.

Urutan pemuatan

OpenClaw memuat dari sumber berikut, dengan prioritas tertinggi terlebih dahulu. Jika nama skill yang sama muncul di beberapa tempat, sumber dengan prioritas tertinggi yang digunakan.

Prioritas Sumber Jalur
1 — tertinggi Skill ruang kerja <workspace>/skills
2 Skill agen proyek <workspace>/.agents/skills
3 Skill agen pribadi ~/.agents/skills
4 Skill terkelola / lokal ~/.openclaw/skills
5 Skill bawaan disertakan bersama instalasi
6 — terendah Direktori tambahan skills.load.extraDirs + skill plugin

Akar skill mendukung tata letak berkelompok. OpenClaw menemukan skill setiap kali SKILL.md muncul di mana pun di bawah akar yang dikonfigurasi (hingga kedalaman 6 tingkat):

text
<workspace>/skills/research/SKILL.md          ✓ ditemukan sebagai "research"<workspace>/skills/personal/research/SKILL.md ✓ juga ditemukan sebagai "research"

Jalur folder hanya untuk pengorganisasian. Nama skill dan perintah garis miring berasal dari kolom frontmatter name (atau nama direktori jika name tidak ada). Daftar izin agen (di bawah) juga mencocokkan berdasarkan name ini.

Skill yang dihoskan Node

Node tanpa antarmuka yang terhubung dapat menerbitkan skill yang terinstal di direktori skill OpenClaw aktifnya (~/.openclaw/skills secara default; penggantian lingkungan profil berlaku). Skill tersebut muncul dalam daftar skill agen biasa selama Node terhubung dan menghilang ketika koneksi terputus. Skill lokal atau Gateway mempertahankan namanya jika terjadi benturan; skill Node menerima nama deterministik dengan prefiks Node. Skill yang dihoskan Node v1 mengharuskan nama direktori cocok dengan kolom frontmatter name milik skill.

Entri skill menyertakan pencari lokasi Node. File, referensi relatif, dan binernya berada di Node, jadi muat dan jalankan dengan exec host=node node=<node-id>. Mulai ulang hos Node setelah mengubah file skill-nya. Lihat Node untuk pemasangan dan mekanisme penonaktifan.

Skill per agen dan bersama

Dalam penyiapan multiagen, setiap agen memiliki ruang kerjanya sendiri. Gunakan jalur yang sesuai dengan visibilitas yang Anda inginkan:

Cakupan Jalur Terlihat oleh
Per agen <workspace>/skills Hanya agen tersebut
Agen proyek <workspace>/.agents/skills Hanya agen ruang kerja tersebut
Agen pribadi ~/.agents/skills Semua agen pada mesin ini
Terkelola bersama ~/.openclaw/skills Semua agen pada mesin ini
Direktori tambahan skills.load.extraDirs Semua agen pada mesin ini

Daftar izin agen

Lokasi skill (prioritas) dan visibilitas skill (agen mana yang dapat menggunakannya) merupakan kontrol terpisah. Gunakan daftar izin untuk membatasi skill yang dilihat agen, terlepas dari asal pemuatannya.

json5
{  agents: {    defaults: {      skills: ["github", "weather"], // dasar bersama    },    list: [      { id: "writer" }, // mewarisi github, weather      { id: "docs", skills: ["docs-search"] }, // mengganti nilai bawaan sepenuhnya      { id: "locked-down", skills: [] }, // tanpa skill    ],  },}
Aturan daftar izin
  • Hilangkan agents.defaults.skills agar semua skill tidak dibatasi secara default.
  • Hilangkan agents.list[].skills untuk mewarisi agents.defaults.skills.
  • Atur agents.list[].skills: [] agar tidak mengekspos skill apa pun kepada agen tersebut.
  • Daftar agents.list[].skills yang tidak kosong merupakan kumpulan akhir — daftar ini tidak digabungkan dengan nilai bawaan.
  • Daftar izin efektif berlaku pada pembuatan prompt, penemuan perintah garis miring, sinkronisasi sandbox, dan rekam jepret skill.
  • Ini bukan batas otorisasi shell hos. Jika agen yang sama dapat menggunakan exec, batasi shell tersebut secara terpisah dengan sandbox, isolasi pengguna OS, daftar tolak/izin eksekusi, dan kredensial per sumber daya.

Plugin dan skill

Plugin dapat menyertakan skill sendiri dengan mencantumkan direktori skills dalam openclaw.plugin.json (jalur relatif terhadap akar plugin). Skill plugin dimuat ketika plugin diaktifkan — misalnya, plugin peramban menyertakan skill browser-automation untuk kontrol peramban bertahap.

Direktori skill plugin digabungkan pada tingkat prioritas rendah yang sama dengan skills.load.extraDirs, sehingga skill bawaan, terkelola, agen, atau ruang kerja dengan nama yang sama akan menggantikannya. Batasi kelayakan skill plugin itu sendiri melalui metadata.openclaw.requires dalam frontmatter-nya, sama seperti skill lainnya.

Lihat Plugin dan Alat untuk sistem plugin lengkap.

Lokakarya Skill

Lokakarya Skill adalah antrean usulan antara agen dan file skill aktif Anda. Ketika agen menemukan pekerjaan yang dapat digunakan kembali, agen menyusun usulan alih-alih menulis langsung ke SKILL.md. Anda meninjau dan menyetujuinya sebelum ada perubahan.

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

Lihat Lokakarya Skill untuk siklus hidup lengkap, referensi CLI, dan konfigurasi.

Menginstal dari ClawHub

ClawHub adalah registri skill publik. Gunakan perintah openclaw skills untuk menginstal dan memperbarui, atau CLI clawhub untuk menerbitkan dan menyinkronkan.

Tindakan Perintah
Instal skill ke ruang kerja openclaw skills install @owner/<slug>
Instal dari repositori Git openclaw skills install git:owner/repo@ref
Instal direktori skill lokal openclaw skills install ./path/to/skill --as my-tool
Instal untuk semua agen lokal openclaw skills install @owner/<slug> --global
Perbarui semua skill ruang kerja openclaw skills update --all
Perbarui skill terkelola bersama openclaw skills update @owner/<slug> --global
Perbarui semua skill terkelola bersama openclaw skills update --all --global
Verifikasi lingkup kepercayaan skill openclaw skills verify @owner/<slug>
Cetak Kartu Skill yang dihasilkan openclaw skills verify @owner/<slug> --card
Terbitkan / sinkronkan melalui CLI ClawHub clawhub sync --all
Detail instalasi

openclaw skills install menginstal ke direktori skills/ ruang kerja aktif secara default. Tambahkan --global untuk menginstal ke direktori bersama ~/.openclaw/skills, yang terlihat oleh semua agen lokal kecuali dibatasi oleh daftar izin agen.

Instalasi Git dan lokal mengharapkan SKILL.md di akar sumber. Slug berasal dari frontmatter name di SKILL.md jika valid, lalu menggunakan nama direktori atau repositori sebagai alternatif. Gunakan --as <slug> untuk menggantinya. openclaw skills update hanya melacak instalasi ClawHub — instal ulang sumber Git atau lokal untuk memperbaruinya.

Verifikasi dan pemindaian keamanan

openclaw skills verify @owner/<slug> meminta lingkup kepercayaan clawhub.skill.verify.v1 milik skill kepada ClawHub. Skill ClawHub yang terinstal diverifikasi berdasarkan versi dan registri yang tercatat dalam .clawhub/origin.json. Slug tanpa pemilik tetap diterima untuk skill terinstal yang sudah ada atau tidak ambigu, tetapi referensi dengan pemilik mencegah ambiguitas penerbit.

Halaman skill ClawHub menampilkan status pemindaian keamanan terbaru sebelum instalasi, dengan halaman detail untuk VirusTotal, ClawScan, dan analisis statis. Perintah keluar dengan kode bukan nol ketika ClawHub menandai verifikasi sebagai gagal. Penerbit dapat memulihkan hasil positif palsu melalui dasbor ClawHub atau clawhub skill rescan @owner/<slug>.

Instalasi arsip privat

Klien Gateway yang memerlukan pengiriman non-ClawHub dapat menyiapkan arsip skill zip dengan skills.upload.begin, skills.upload.chunk, dan skills.upload.commit, lalu menginstalnya dengan skills.install({ source: "upload", ... }). Jalur ini dinonaktifkan secara default dan memerlukan skills.install.allowUploadedArchives: true dalam openclaw.json. Instalasi ClawHub biasa tidak pernah memerlukan pengaturan tersebut.

Keamanan

Pembatasan jalur

Penemuan skill ruang kerja, agen proyek, dan direktori tambahan hanya menerima akar skill yang realpath terselesaikannya tetap berada di dalam akar yang dikonfigurasi, kecuali skills.load.allowSymlinkTargets secara eksplisit memercayai akar target. Lokakarya Skill menulis melalui target tepercaya tersebut hanya ketika skills.workshop.allowSymlinkTargetWrites diaktifkan. Direktori terkelola ~/.openclaw/skills dan pribadi ~/.agents/skills dapat berisi folder skill yang ditautkan secara simbolis, tetapi realpath setiap SKILL.md tetap harus berada di dalam direktori skill terselesaikannya.

Kebijakan instalasi operator

Konfigurasikan security.installPolicy untuk menjalankan perintah kebijakan lokal tepercaya sebelum instalasi skill dilanjutkan. Kebijakan menerima metadata dan jalur sumber yang telah disiapkan, berlaku untuk jalur ClawHub, unggahan, Git, lokal, pembaruan, dan penginstal dependensi, serta gagal secara tertutup ketika perintah tidak dapat mengembalikan keputusan yang valid.

Cakupan injeksi rahasia

skills.entries.*.env dan skills.entries.*.apiKey menyuntikkan rahasia ke dalam proses hos hanya untuk giliran agen tersebut — bukan ke dalam sandbox. Jangan sertakan rahasia dalam prompt dan log.

Untuk model ancaman dan daftar periksa keamanan yang lebih luas, lihat Keamanan.

Format SKILL.md

Setiap skill setidaknya memerlukan name dan description dalam frontmatter:

markdown
---name: image-labdescription: Menghasilkan atau mengedit gambar melalui alur kerja gambar yang didukung penyedia--- Ketika pengguna meminta untuk menghasilkan gambar, gunakan alat `image_generate`...

Kunci frontmatter opsional

homepagestring

URL yang ditampilkan sebagai "Website" di antarmuka Skills macOS. Juga didukung melalui metadata.openclaw.homepage.

user-invocablebooleandefault: true

Jika true, skill diekspos sebagai perintah garis miring yang dapat dipanggil pengguna.

disable-model-invocationbooleandefault: false

Jika true, OpenClaw tidak menyertakan instruksi skill dalam prompt normal agen. Skill tetap tersedia sebagai perintah garis miring jika user-invocable juga bernilai true.

command-dispatch"tool"

Jika ditetapkan ke tool, perintah garis miring melewati model dan diteruskan langsung ke alat yang terdaftar.

command-toolstring

Nama alat yang akan dipanggil ketika command-dispatch: tool ditetapkan.

command-arg-mode"raw"default: raw

Untuk penerusan ke alat, meneruskan string argumen mentah ke alat tanpa penguraian inti. Alat menerima { command: "<raw args>", commandName: "<slash command>", skillName: "<skill name>" }.

Pembatasan

OpenClaw memfilter skill pada waktu pemuatan menggunakan metadata.openclaw (objek JSON5 yang disematkan dalam frontmatter, lihat catatan penguraian di atas). Skill tanpa blok metadata.openclaw selalu memenuhi syarat kecuali dinonaktifkan secara eksplisit.

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

Jika true, selalu sertakan skill dan lewati semua pembatas lainnya.

emojistring

Emoji opsional yang ditampilkan di antarmuka Skills macOS.

homepagestring

URL opsional yang ditampilkan sebagai "Website" di antarmuka Skills macOS.

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

Filter platform. Jika ditetapkan, skill hanya memenuhi syarat pada OS yang tercantum.

requires.binsstring[]

Setiap berkas biner harus tersedia di PATH.

requires.anyBinsstring[]

Setidaknya satu berkas biner harus tersedia di PATH.

requires.envstring[]

Setiap variabel lingkungan harus tersedia dalam proses atau disediakan melalui konfigurasi.

requires.configstring[]

Setiap jalur openclaw.json harus bernilai benar.

primaryEnvstring

Nama variabel lingkungan yang terkait dengan skills.entries.<name>.apiKey.

installobject[]

Spesifikasi penginstal opsional yang digunakan oleh antarmuka Skills macOS (brew / node / go / uv / download).

Spesifikasi penginstal

Spesifikasi penginstal memberi tahu antarmuka Skills macOS cara menginstal dependensi:

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)",            },          ],      },  }---
Aturan pemilihan penginstal
  • Jika beberapa penginstal dicantumkan, Gateway memilih satu opsi yang diutamakan (brew jika tersedia, jika tidak node).
  • Jika semua penginstal adalah download, OpenClaw mencantumkan setiap entri agar Anda dapat melihat semua artefak yang tersedia.
  • Spesifikasi dapat menyertakan os: ["darwin"|"linux"|"win32"] untuk memfilter berdasarkan platform.
  • Instalasi Node mengikuti skills.install.nodeManager di openclaw.json (bawaan: npm; opsi: npm / pnpm / yarn / bun). Ini hanya memengaruhi instalasi skill; runtime Gateway harus tetap menggunakan Node.
  • Urutan preferensi penginstal Gateway: Homebrew → uv → pengelola node yang dikonfigurasi → go → unduhan.
Detail per penginstal
  • Homebrew: OpenClaw tidak menginstal Homebrew secara otomatis atau menerjemahkan formula brew menjadi perintah paket sistem. Dalam kontainer Linux tanpa brew, penginstal yang hanya mendukung brew disembunyikan; gunakan image khusus atau instal dependensinya secara manual.
  • Go: OpenClaw memerlukan Go 1.21 atau yang lebih baru untuk instalasi skill otomatis. Jika go tidak tersedia dan Homebrew tersedia, OpenClaw menginstal Go melalui Homebrew terlebih dahulu; pada Linux tanpa Homebrew, OpenClaw dapat menggunakan apt-get sebagai root atau melalui sudo tanpa kata sandi jika kandidat golang-go yang telah diperbarui memenuhi versi minimum. Perintah go install sebenarnya untuk dependensi selalu menargetkan direktori bin khusus yang dikelola OpenClaw (bin milik Homebrew pada instalasi baru, jika tidak ~/.local/bin), bukan GOBIN yang Anda konfigurasikan — variabel lingkungan GOBIN, GOPATH, dan GOTOOLCHAIN milik Anda dibaca tetapi tidak pernah ditimpa.
  • Unduhan: url (wajib), archive (tar.gz | tar.bz2 | zip), extract (bawaan: otomatis ketika arsip terdeteksi), stripComponents, targetDir (bawaan: ~/.openclaw/tools/<skillKey>).
Catatan sandbox

requires.bins diperiksa pada host saat skill dimuat. Jika agen berjalan dalam sandbox, berkas biner juga harus tersedia di dalam kontainer. Instal melalui agents.defaults.sandbox.docker.setupCommand atau image khusus. setupCommand dijalankan sekali setelah kontainer dibuat dan memerlukan akses jaringan keluar, sistem berkas root yang dapat ditulisi, serta pengguna root di sandbox.

Penimpaan konfigurasi

Aktifkan/nonaktifkan dan konfigurasikan skill bawaan atau terkelola di bawah skills.entries dalam ~/.openclaw/openclaw.json:

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 menonaktifkan skill meskipun skill tersebut dibundel atau terinstal. Skill bawaan coding-agent bersifat ikut-serta — tetapkan skills.entries.coding-agent.enabled: true dan pastikan salah satu dari claude, codex, opencode, atau CLI lain yang didukung telah terinstal dan terautentikasi.

apiKeystring | { source, provider, id }

Kolom praktis untuk skill yang mendeklarasikan metadata.openclaw.primaryEnv. Mendukung string teks biasa atau objek SecretRef.

envRecord<string, string��-��Z�&�zYb� .��ɩ�v+.�ؤ���ۤzK��
configobject

Kumpulan opsional untuk kolom konfigurasi khusus per skill.

allowBundledstring[]

Daftar izin opsional yang hanya berlaku untuk skill bawaan. Jika ditetapkan, hanya skill bawaan dalam daftar yang memenuhi syarat. Skill terkelola dan ruang kerja tidak terpengaruh.

Penyuntikan lingkungan

Saat eksekusi agen dimulai, OpenClaw:

  • Membaca metadata skill

    OpenClaw menentukan daftar skill efektif untuk agen dengan menerapkan aturan pembatasan, daftar izin, dan penimpaan konfigurasi.

  • Menyuntikkan variabel lingkungan dan kunci API

    skills.entries.<key>.env dan skills.entries.<key>.apiKey diterapkan ke process.env selama eksekusi berlangsung.

  • Menyusun prompt sistem

    Skill yang memenuhi syarat dikompilasi menjadi blok XML ringkas dan disuntikkan ke prompt sistem.

  • Memulihkan lingkungan

    Setelah eksekusi berakhir, lingkungan asli dipulihkan.

  • Untuk backend bawaan claude-cli, OpenClaw juga mewujudkan snapshot skill yang memenuhi syarat yang sama sebagai plugin Claude Code sementara dan meneruskannya melalui --plugin-dir. Backend CLI lainnya hanya menggunakan katalog prompt.

    Snapshot dan penyegaran

    OpenClaw mengambil snapshot skill yang memenuhi syarat ketika sesi dimulai dan menggunakan kembali daftar tersebut untuk semua giliran berikutnya dalam sesi. Perubahan pada skill atau konfigurasi berlaku pada sesi baru berikutnya.

    Skills disegarkan di tengah sesi dalam dua kasus:

    • Pemantau skill mendeteksi perubahan SKILL.md.
    • Node jarak jauh baru yang memenuhi syarat terhubung.

    Daftar yang telah disegarkan digunakan pada giliran agen berikutnya. Jika daftar izin agen efektif berubah, OpenClaw menyegarkan snapshot agar skill yang terlihat tetap selaras.

    Pemantau Skills

    Secara bawaan, OpenClaw memantau folder skill dan memperbarui snapshot ketika berkas SKILL.md berubah. Konfigurasikan di bawah skills.load:

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

    Gunakan allowSymlinkTargets untuk tata letak symlink yang disengaja ketika symlink root skill mengarah ke luar root yang dikonfigurasi, misalnya <workspace>/skills/manager -> ~/Projects/manager/skills. Aktifkan skills.workshop.allowSymlinkTargetWrites hanya jika Skill Workshop juga harus menerapkan usulan melalui jalur symlink tepercaya tersebut.

    Node macOS jarak jauh (Gateway Linux)

    Jika Gateway berjalan di Linux tetapi Node macOS terhubung dengan system.run yang diizinkan, OpenClaw dapat menganggap skill khusus macOS memenuhi syarat ketika berkas biner yang diperlukan tersedia pada Node tersebut. Agen harus menjalankan skill tersebut melalui alat exec dengan host=node.

    Node luring tidak membuat skill khusus jarak jauh terlihat. Jika Node berhenti merespons pemeriksaan berkas biner, OpenClaw menghapus kecocokan berkas biner yang tersimpan dalam cache.

    Dampak token

    Ketika skill memenuhi syarat, OpenClaw menyuntikkan blok XML ringkas ke dalam prompt sistem. Biayanya deterministik dan meningkat secara linear untuk setiap skill:

    • Overhead dasar (hanya jika 1+ skill memenuhi syarat): blok tetap berisi prosa pengantar serta pembungkus <available_skills>.
    • Per skill: ~97 karakter + panjang kolom name, description, dan location Anda.
    • Pengalihan XML mengubah & < > " ' menjadi entitas, sehingga menambahkan beberapa karakter untuk setiap kemunculan.
    • Dengan ~4 karakter/token, 97 karakter ≈ 24 token per skill sebelum panjang kolom diperhitungkan.

    Jika blok yang dirender akan melampaui anggaran prompt yang dikonfigurasi (skills.limits.maxSkillsPromptChars), OpenClaw terlebih dahulu mempertahankan sebanyak mungkin identitas skill (nama, lokasi, dan versi) yang dapat dimuat oleh format ringkas tanpa deskripsi. Setelah itu, OpenClaw menggunakan sisa anggaran untuk deskripsi yang dipersingkat. Jika tidak ada anggaran deskripsi yang tersisa, deskripsi dihilangkan. Prompt menyertakan catatan yang mengarahkan ke openclaw skills check setiap kali pemformatan ringkas atau pemotongan daftar diperlukan.

    Buat deskripsi tetap singkat dan informatif untuk meminimalkan beban tambahan prompt.

    Terkait

    Was this useful?
    On this page

    On this page