Skills
Konfigurasi Skills
Sebagian besar konfigurasi Skills berada di bawah skills dalam
~/.openclaw/openclaw.json. Visibilitas khusus agen berada di bawah
agents.defaults.skills dan agents.list[].skills.
{ skills: { allowBundled: ["gemini", "peekaboo"], load: { extraDirs: ["~/Projects/agent-scripts/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], watch: true, watchDebounceMs: 250, }, install: { preferBrew: true, nodeManager: "npm", allowUploadedArchives: false, }, workshop: { autonomous: { enabled: false }, allowSymlinkTargetWrites: false, approvalPolicy: "auto", maxPending: 50, maxSkillBytes: 40000, }, entries: { "image-lab": { enabled: true, apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" }, }, peekaboo: { enabled: true }, sag: { enabled: false }, }, },}Pemuatan (skills.load)
skills.load.extraDirsstring[]Direktori Skills tambahan yang akan dipindai, dengan prioritas terendah (di bawah
Skills bawaan dan Plugin). Path diperluas dengan dukungan ~.
skills.load.allowSymlinkTargetsstring[]Direktori target nyata tepercaya yang dapat menjadi tujuan resolusi folder Skills
bersymlink, bahkan ketika symlink berada di luar root yang dikonfigurasi. Gunakan ini untuk
tata letak repo saudara yang disengaja seperti
<workspace>/skills/manager -> ~/Projects/manager/skills. Pertahankan daftar ini
tetap sempit — jangan arahkan ke root yang luas seperti ~ atau ~/Projects.
skills.load.watchbooleandefault: truePantau folder Skills dan perbarui snapshot Skills ketika file SKILL.md
berubah. Mencakup file bertingkat di bawah root Skills yang dikelompokkan.
skills.load.watchDebounceMsnumberdefault: 250Jendela debounce untuk peristiwa pemantau Skills dalam milidetik.
Instalasi (skills.install)
skills.install.preferBrewbooleandefault: trueUtamakan penginstal Homebrew ketika brew tersedia.
skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"Preferensi pengelola paket Node untuk instalasi Skills. Ini hanya memengaruhi
instalasi Skills - CLI OpenClaw dan runtime Gateway memerlukan Node karena
penyimpanan status kanonis menggunakan node:sqlite. openclaw setup --node-manager dan
openclaw onboard --node-manager menerima npm, pnpm, atau bun; tetapkan
"yarn" secara langsung dalam konfigurasi untuk instalasi Skills berbasis Yarn.
skills.install.allowUploadedArchivesbooleandefault: falseIzinkan klien Gateway operator.admin tepercaya menginstal arsip zip
privat yang ditempatkan melalui skills.upload.*. Instalasi ClawHub biasa tidak
memerlukan pengaturan ini.
Kebijakan Instalasi Operator (security.installPolicy)
Gunakan security.installPolicy ketika operator memerlukan perintah lokal tepercaya untuk
menyetujui atau memblokir instalasi Skills dan Plugin dengan kebijakan khusus host. Kebijakan
dijalankan setelah OpenClaw menempatkan materi sumber dan sebelum instalasi
atau pembaruan dilanjutkan. Kebijakan ini berlaku untuk Skills ClawHub, Skills yang diunggah, Skills
Git/lokal, penginstal dependensi Skills, serta sumber instalasi/pembaruan Plugin.
{ security: { installPolicy: { enabled: true, // Hilangkan targets agar mencakup setiap target yang didukung. targets: ["skill", "plugin"], exec: { source: "exec", command: "/usr/local/bin/openclaw-install-policy", args: ["--json"], timeoutMs: 10000, noOutputTimeoutMs: 10000, maxOutputBytes: 1048576, passEnv: ["OPENCLAW_STATE_DIR", "PATH"], env: { POLICY_MODE: "strict" }, trustedDirs: ["/usr/local/bin"], }, }, },}security.installPolicy.enabledbooleandefault: falseMengaktifkan kebijakan instalasi milik operator. Jika diaktifkan tanpa perintah
exec yang valid, instalasi akan ditolak secara tertutup.
security.installPolicy.targets("skill" | "plugin")[]Filter target opsional. Jika dihilangkan, kebijakan berlaku untuk setiap target yang didukung agar instalasi baru tidak secara tak terduga diizinkan secara terbuka.
security.installPolicy.exec.commandstringPath absolut ke berkas eksekutabel kebijakan tepercaya. OpenClaw menjalankannya tanpa shell dan memvalidasi path sebelum digunakan.
security.installPolicy.exec.argsstring[]Argumen statis yang diteruskan setelah command.
security.installPolicy.exec.timeoutMsnumberdefault: 10000Durasi waktu nyata maksimum untuk satu keputusan kebijakan.
security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMsWaktu maksimum tanpa keluaran stdout atau stderr sebelum kebijakan ditolak secara tertutup.
security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576Jumlah byte gabungan maksimum dari stdout dan stderr yang diterima dari proses kebijakan.
security.installPolicy.exec.env"Record<string,security.installPolicy.exec.passEnvstring[]Nama variabel lingkungan yang disalin dari proses OpenClaw ke dalam proses kebijakan. Hanya variabel yang disebutkan yang diteruskan.
security.installPolicy.exec.trustedDirsstring[]Daftar izin opsional untuk direktori yang dapat memuat berkas eksekutabel kebijakan.
security.installPolicy.exec.allowInsecurePathbooleandefault: falseMengabaikan pemeriksaan kepemilikan dan izin path perintah. Gunakan hanya ketika path dilindungi oleh mekanisme lain.
security.installPolicy.exec.allowSymlinkCommandbooleandefault: falseMengizinkan path perintah yang dikonfigurasi berupa symlink. Target hasil resolusi tetap harus memenuhi pemeriksaan path lainnya. Argumen skrip interpreter harus berupa berkas reguler langsung, bukan symlink.
Kebijakan menerima satu objek JSON melalui stdin dengan protocolVersion: 1,
openclawVersion, targetType, targetName, sourcePath, sourcePathKind,
source terstruktur yang opsional, origin terstruktur, dan request. Kebijakan harus
menulis satu objek JSON ke stdout: { "protocolVersion": 1, "decision": "allow" }
atau { "protocolVersion": 1, "decision": "block", "reason": "..." }. Kode keluar bukan nol,
batas waktu, JSON cacat, kolom yang hilang, atau versi protokol yang tidak didukung
akan ditolak secara tertutup.
OpenClaw tidak menjalankan kebijakan instalasi selama startup Gateway normal.
Instalasi dan pembaruan ditolak secara tertutup ketika kebijakan diaktifkan tetapi tidak tersedia.
openclaw doctor melakukan validasi statis; openclaw doctor --deep
menjalankan probe instalasi sintetis terhadap perintah yang dikonfigurasi.
Pembaruan massal menerapkan kebijakan per target: pembaruan Skills atau Plugin yang diblokir akan menggagalkan target tersebut tanpa menonaktifkan kebijakan atau melewati target berikutnya dalam batch.
Contoh stdin:
{ "protocolVersion": 1, "openclawVersion": "2026.6.1", "targetType": "skill", "targetName": "weather", "sourcePath": "/var/folders/.../openclaw-skill-clawhub/root", "sourcePathKind": "directory", "source": { "kind": "clawhub", "authority": "openclaw", "mutable": false, "network": true }, "origin": { "type": "clawhub", "registry": "https://clawhub.openclaw.ai", "slug": "weather", "version": "1.0.0" }, "request": { "kind": "skill-install", "mode": "install", "requestedSpecifier": "clawhub:weather@1.0.0" }, "skill": { "installId": "clawhub" }}Perintah kebijakan minimal:
#!/usr/bin/env node let input = "";process.stdin.setEncoding("utf8");process.stdin.on("data", (chunk) => { input += chunk;});process.stdin.on("end", () => { const request = JSON.parse(input); if (request.targetType === "plugin" && request.source?.kind === "local-path") { process.stdout.write( JSON.stringify({ protocolVersion: 1, decision: "block", reason: "path Plugin lokal tidak disetujui pada host ini", }), ); return; } process.stdout.write(JSON.stringify({ protocolVersion: 1, decision: "allow" }));});Daftar izin Skills bawaan
skills.allowBundledstring[]Daftar izin opsional hanya untuk Skills bawaan. Jika ditetapkan, hanya Skills bawaan dalam daftar yang memenuhi syarat. Skills terkelola, tingkat agen, dan ruang kerja tidak terpengaruh.
Entri per Skills (skills.entries)
Secara default, kunci di bawah entries cocok dengan name Skills. Jika sebuah Skills mendefinisikan
metadata.openclaw.skillKey, gunakan kunci tersebut sebagai gantinya. Beri tanda kutip pada nama yang mengandung tanda hubung
(JSON5 mengizinkan kunci bertanda kutip).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.enabled" type="boolean">
false menonaktifkan Skills meskipun merupakan bawaan atau telah diinstal. Skills bawaan
coding-agent bersifat pilihan — tetapkan ke true dan pastikan salah satu dari
claude, codex, opencode, atau CLI lain yang didukung telah diinstal dan
diautentikasi.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.apiKey" type='string | { source, provider, id }'>
Kolom praktis untuk Skills yang mendeklarasikan metadata.openclaw.primaryEnv.
Mendukung string teks biasa atau SecretRef: { source: "env", provider: "default", id: "VAR_NAME" }.
"skills.entries.<key�����r�"skills.entries.<key�w₫��ܩDaftar izin agen (agents)
Gunakan konfigurasi agen ketika menginginkan root Skills mesin/ruang kerja yang sama tetapi kumpulan Skills yang terlihat berbeda untuk setiap agen.
{ agents: { defaults: { skills: ["github", "weather"], // baseline bersama }, list: [ { id: "writer" }, // mewarisi github, weather { id: "docs", skills: ["docs-search"] }, // menggantikan default sepenuhnya { id: "locked-down", skills: [] }, // tanpa Skills ], },}agents.defaults.skillsstring[]Daftar izin baseline bersama yang diwarisi oleh agen yang tidak menyertakan
agents.list[].skills. Hilangkan seluruhnya agar Skills tidak dibatasi secara
default.
agents.list[].skillsstring[]Kumpulan Skills akhir yang eksplisit untuk agen tersebut. Daftar eksplisit menggantikan
default yang diwarisi — bukan menggabungkannya. Tetapkan ke [] agar tidak mengekspos Skills apa pun kepada
agen tersebut.
Workshop (skills.workshop)
skills.workshop.autonomous.enabledbooleandefault: falseSaat true, OpenClaw dapat membuat proposal tertunda dari koreksi persisten
dan dapat meninjau pekerjaan substansial yang berhasil diselesaikan setelah sistem menjadi
tidak aktif. Hal ini dapat menambahkan eksekusi model latar belakang setelah giliran yang memenuhi syarat. Pembuatan
skill yang diminta pengguna dan /learn tetap berfungsi saat pengaturan bernilai false.
Lihat Pembelajaran mandiri untuk kelayakan, privasi, biaya, izin khusus proposal, dan pemecahan masalah.
skills.workshop.approvalPolicy"pending" | "auto"default: "auto"auto memungkinkan penerapan, penolakan, atau karantina yang dimulai agen tanpa
permintaan persetujuan tambahan. pending memerlukan persetujuan operator.
skills.workshop.allowSymlinkTargetWritesbooleandefault: falseIzinkan penerapan Skill Workshop menulis melalui symlink skill ruang kerja yang
target sebenarnya sudah dipercaya oleh skills.load.allowSymlinkTargets. Biarkan
ini dinonaktifkan kecuali penerapan proposal yang dihasilkan harus mengubah akar
skill bersama tersebut.
skills.workshop.maxPendingnumberdefault: 50Jumlah maksimum proposal tertunda dan dikarantina yang dipertahankan per ruang kerja (rentang yang diizinkan: 1-200).
skills.workshop.maxSkillBytesnumberdefault: 40000Ukuran maksimum isi proposal dalam byte (rentang yang diizinkan: 1024-200000). Deskripsi proposal dibatasi secara terpisah hingga 160 byte karena muncul dalam keluaran penemuan dan daftar.
Lihat Skill Workshop untuk siklus hidup proposal, perintah CLI, parameter alat agen, dan metode Gateway yang dikendalikan konfigurasi ini.
Akar skill dengan symlink
Secara default, akar skill ruang kerja, agen proyek, direktori tambahan, dan bawaan merupakan
batas penampungan. Folder skill dengan symlink di bawah <workspace>/skills
yang mengarah ke luar akar akan dilewati dengan pesan log.
Untuk mengizinkan tata letak symlink yang disengaja, nyatakan target tepercaya:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}Dengan konfigurasi ini, <workspace>/skills/manager -> ~/Projects/manager/skills
diterima setelah resolusi realpath. extraDirs memindai repositori saudara
secara langsung; allowSymlinkTargets mempertahankan jalur dengan symlink untuk tata letak
yang sudah ada.
Penerapan Skill Workshop tidak menulis melalui symlink tersebut secara default. Untuk mengizinkan penerapan Workshop mengubah skill di bawah target symlink yang sudah dipercaya, aktifkan secara terpisah:
{ skills: { load: { allowSymlinkTargets: ["~/Projects/manager/skills"], }, workshop: { allowSymlinkTargetWrites: true, }, },}Direktori ~/.openclaw/skills terkelola dan ~/.agents/skills pribadi
sudah menerima symlink direktori skill tanpa syarat (penampungan SKILL.md
per skill tetap berlaku) — allowSymlinkTargets hanya diperlukan
untuk akar ruang kerja, direktori tambahan, dan agen proyek (<workspace>/.agents/skills).
Skill dalam sandbox dan variabel lingkungan
Teruskan rahasia ke sandbox Docker dengan:
{ agents: { defaults: { sandbox: { docker: { env: { GEMINI_API_KEY: "your-key-here" }, }, }, }, },}Pengingat urutan pemuatan
workspace/skills (tertinggi)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsskill bawaanskills.load.extraDirs (terendah)Perubahan pada skill dan konfigurasi berlaku pada sesi baru berikutnya saat pemantau diaktifkan, atau pada giliran agen berikutnya saat pemantau mendeteksi perubahan.
Terkait
Pengertian skill, urutan pemuatan, pembatasan, dan format SKILL.md.
Penulisan skill ruang kerja khusus.
Antrean proposal untuk skill yang dirancang agen.
Proposal konservatif yang diaktifkan secara eksplisit dari pekerjaan yang telah diselesaikan.
Katalog perintah garis miring native dan direktif obrolan.