Skills
Конфігурація Skills
Більшість налаштувань Skills міститься в розділі skills у
~/.openclaw/openclaw.json. Видимість для окремих агентів налаштовується в
agents.defaults.skills і 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: "pending", 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 }, }, },}Завантаження (skills.load)
skills.load.extraDirsstring[]Додаткові каталоги Skills для сканування з найнижчим пріоритетом (після
вбудованих Skills і Skills плагінів). Шляхи розгортаються з підтримкою ~.
skills.load.allowSymlinkTargetsstring[]Довірені реальні цільові каталоги, у які можуть вести символічні посилання
папок Skills, навіть якщо символічне посилання розташоване поза налаштованим
кореневим каталогом. Використовуйте це для навмисних схем із сусідніми
репозиторіями, як-от
<workspace>/skills/manager -> ~/Projects/manager/skills. Тримайте цей
список вузьким — не вказуйте широкі кореневі каталоги на кшталт ~ або
~/Projects.
skills.load.watchbooleandefault: trueВідстежує папки Skills і оновлює знімок Skills у разі зміни файлів
SKILL.md. Охоплює вкладені файли в згрупованих кореневих каталогах Skills.
skills.load.watchDebounceMsnumberdefault: 250Інтервал усунення брязкоту для подій спостерігача Skills у мілісекундах.
Встановлення (skills.install)
skills.install.preferBrewbooleandefault: trueНадає перевагу інсталяторам Homebrew, коли доступний brew.
skills.install.nodeManager"npm" | "pnpm" | "yarn" | "bun"default: "npm"Бажаний менеджер пакетів Node для встановлення Skills. Це впливає лише на
встановлення Skills — середовище виконання Gateway має й надалі
використовувати Node (Bun не рекомендовано для WhatsApp/Telegram).
openclaw setup --node-manager і openclaw onboard --node-manager
приймають npm, pnpm або bun; для встановлення Skills за допомогою
Yarn безпосередньо вкажіть "yarn" у конфігурації.
skills.install.allowUploadedArchivesbooleandefault: falseДозволяє довіреним клієнтам Gateway із роллю operator.admin
встановлювати приватні ZIP-архіви, підготовлені через skills.upload.*.
Звичайні встановлення з ClawHub не потребують цього налаштування.
Політика встановлення оператора (security.installPolicy)
Використовуйте security.installPolicy, коли операторам потрібна довірена
локальна команда для схвалення або блокування встановлення Skills і плагінів
відповідно до політики конкретного хоста. Політика виконується після того, як
OpenClaw підготував вихідні матеріали, і до продовження встановлення чи
оновлення. Вона застосовується до Skills із ClawHub, завантажених Skills,
Skills із Git або локальних джерел, інсталяторів залежностей Skills, а також
джерел встановлення й оновлення плагінів.
{ security: { installPolicy: { enabled: true, // Omit targets to cover every supported target. 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: falseВмикає політику встановлення, якою керує оператор. Якщо її ввімкнено без
дійсної команди exec, встановлення блокуються.
security.installPolicy.targets("skill" | "plugin")[]Необов’язковий фільтр цілей. Якщо його не вказано, політика застосовується до кожної підтримуваної цілі, щоб нові встановлення несподівано не дозволялися без перевірки.
security.installPolicy.exec.commandstringАбсолютний шлях до довіреного виконуваного файла політики. OpenClaw запускає його без оболонки й перевіряє шлях перед використанням.
security.installPolicy.exec.argsstring[]Статичні аргументи, що передаються після command.
security.installPolicy.exec.timeoutMsnumberdefault: 10000Максимальна тривалість виконання за реальним часом для одного рішення політики.
security.installPolicy.exec.noOutputTimeoutMsnumberdefault: timeoutMsМаксимальний час без виведення в stdout або stderr, після якого політика блокує операцію.
security.installPolicy.exec.maxOutputBytesnumberdefault: 1048576Максимальна сумарна кількість байтів stdout і stderr, що приймається від процесу політики.
security.installPolicy.exec.env"Record<string,security.installPolicy.exec.passEnvstring[]Імена змінних середовища, що копіюються з процесу OpenClaw до процесу політики. Передаються лише явно зазначені змінні.
security.installPolicy.exec.trustedDirsstring[]Необов’язковий список дозволених каталогів, у яких може міститися виконуваний файл політики.
security.installPolicy.exec.allowInsecurePathbooleandefault: falseОминає перевірки власника та дозволів шляху до команди. Використовуйте лише тоді, коли шлях захищено іншим механізмом.
security.installPolicy.exec.allowSymlinkCommandbooleandefault: falseДозволяє налаштованому шляху до команди бути символічним посиланням. Розв’язана ціль усе одно має задовольняти інші перевірки шляху. Аргументи сценаріїв інтерпретатора мають бути безпосередніми звичайними файлами, а не символічними посиланнями.
Політика отримує зі stdin один об’єкт JSON із protocolVersion: 1,
openclawVersion, targetType, targetName, sourcePath, sourcePathKind,
необов’язковим структурованим source, структурованим origin і request.
Вона має записати в stdout один об’єкт JSON:
{ "protocolVersion": 1, "decision": "allow" } або
{ "protocolVersion": 1, "decision": "block", "reason": "..." }. Ненульовий
код завершення, перевищення часу очікування, некоректний JSON, відсутні поля
або непідтримувані версії протоколу призводять до блокування операції.
OpenClaw не виконує політику встановлення під час звичайного запуску Gateway.
Встановлення та оновлення блокуються, якщо політику ввімкнено, але вона
недоступна. openclaw doctor виконує статичну перевірку;
openclaw doctor --deep виконує синтетичну перевірку встановлення за допомогою
налаштованої команди.
Для масових оновлень політика застосовується окремо до кожної цілі: заблоковане оновлення Skill або плагіна завершується помилкою для цієї цілі, не вимикаючи політику й не пропускаючи наступні цілі в пакеті.
Приклад 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" }}Мінімальна команда політики:
#!/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: "local plugin paths are not approved on this host", }), ); return; } process.stdout.write(JSON.stringify({ protocolVersion: 1, decision: "allow" }));});Список дозволених вбудованих Skills
skills.allowBundledstring[]Необов’язковий список дозволених лише для вбудованих Skills. Якщо його задано, придатними є лише вбудовані Skills зі списку. Це не впливає на керовані Skills, Skills рівня агента та Skills робочого простору.
Записи окремих Skills (skills.entries)
Ключі в entries типово відповідають name Skill. Якщо Skill визначає
metadata.openclaw.skillKey, натомість використовуйте цей ключ. Беріть назви
з дефісами в лапки (JSON5 дозволяє ключі в лапках).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.enabled" type="boolean">
false вимикає Skill, навіть якщо він вбудований або встановлений.
Вбудований Skill coding-agent потребує явного ввімкнення — установіть
значення true і переконайтеся, що claude, codex, opencode або інший
підтримуваний CLI встановлено й автентифіковано.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNraWxscy5lbnRyaWVzLjxrZXk
.apiKey" type='string | { source, provider, id }'>
Допоміжне поле для Skills, які оголошують metadata.openclaw.primaryEnv.
Підтримує рядок відкритого тексту або SecretRef:
{ source: "env", provider: "default", id: "VAR_NAME" }.
"skills.entries.<key�����r�"skills.entries.<key�w₫��ܩСписки дозволених Skills для агентів (agents)
Використовуйте конфігурацію агента, коли потрібні ті самі кореневі каталоги Skills машини чи робочого простору, але різний набір видимих Skills для кожного агента.
{ agents: { defaults: { skills: ["github", "weather"], // shared baseline }, list: [ { id: "writer" }, // inherits github, weather { id: "docs", skills: ["docs-search"] }, // replaces defaults entirely { id: "locked-down", skills: [] }, // no skills ], },}agents.defaults.skillsstring[]Спільний базовий список дозволених, який успадковують агенти без
agents.list[].skills. Не вказуйте його взагалі, щоб типово не обмежувати
Skills.
agents.list[].skillsstring[]Явний остаточний набір Skills для цього агента. Явні списки замінюють
успадковані типові значення — вони не об’єднуються. Укажіть [], щоб не
надавати цьому агенту жодних Skills.
Майстерня (skills.workshop)
skills.workshop.autonomous.enabledbooleandefault: falseЯкщо true, агенти можуть створювати пропозиції зі статусом очікування на
основі сталих сигналів із розмови після успішних ходів. Ініційоване
користувачем створення Skills завжди відбувається через Skill Workshop
незалежно від цього налаштування.
skills.workshop.approvalPolicy"pending" | "auto"default: "pending"pending вимагає схвалення оператора, перш ніж агент зможе ініціювати
застосування, відхилення або переміщення до карантину. auto дозволяє ці
дії без схвалення.
skills.workshop.allowSymlinkTargetWritesbooleandefault: falseДозволяє Skill Workshop під час застосування записувати через символічні
посилання на Skills у робочому просторі, фактична ціль яких уже є довіреною
згідно з skills.load.allowSymlinkTargets. Не вмикайте це, якщо застосування
згенерованих пропозицій не має змінювати цей спільний кореневий каталог
Skills.
skills.workshop.maxPendingnumberdefault: 50Максимальна кількість пропозицій зі статусом очікування та пропозицій у карантині, що зберігаються для кожного робочого простору (дозволений діапазон: 1–200).
skills.workshop.maxSkillBytesnumberdefault: 40000Максимальний розмір тіла пропозиції в байтах (дозволений діапазон: 1024–200000). Описи пропозицій окремо жорстко обмежено 160 байтами, оскільки вони відображаються в результатах виявлення та списках.
Див. Skill Workshop, щоб дізнатися про життєвий цикл пропозицій, команди CLI, параметри інструментів агента та методи Gateway, якими керує ця конфігурація.
Кореневі каталоги Skills із символічними посиланнями
За замовчуванням кореневі каталоги Skills робочого простору, агента проєкту,
додаткових каталогів і вбудованих Skills є межами вкладеності. Каталог Skills
із символічним посиланням у <workspace>/skills, що вказує за межі кореневого
каталогу, пропускається з повідомленням у журналі.
Щоб дозволити навмисну структуру із символічними посиланнями, оголосіть довірену ціль:
{ skills: { load: { extraDirs: ["~/Projects/manager/skills"], allowSymlinkTargets: ["~/Projects/manager/skills"], }, },}З цією конфігурацією <workspace>/skills/manager -> ~/Projects/manager/skills
приймається після визначення фактичного шляху. extraDirs безпосередньо сканує
сусідній репозиторій; allowSymlinkTargets зберігає шлях із символічним
посиланням для наявних структур.
За замовчуванням застосування через Skill Workshop не виконує запис через ці символічні посилання. Щоб дозволити Workshop під час застосування змінювати Skills у вже довірених цілях символічних посилань, увімкніть це окремо:
{ skills: { load: { allowSymlinkTargets: ["~/Projects/manager/skills"], }, workshop: { allowSymlinkTargetWrites: true, }, },}Керований каталог ~/.openclaw/skills і особистий каталог ~/.agents/skills
уже безумовно приймають символічні посилання на каталоги Skills (обмеження
вкладеності SKILL.md для кожного Skill усе одно застосовується) —
allowSymlinkTargets потрібен лише для кореневих каталогів робочого простору,
додаткових каталогів і агента проєкту (<workspace>/.agents/skills).
Skills у пісочниці та змінні середовища
Передавайте секрети до пісочниці Docker так:
{ agents: { defaults: { sandbox: { docker: { env: { GEMINI_API_KEY: "your-key-here" }, }, }, }, },}Нагадування про порядок завантаження
workspace/skills (найвищий пріоритет)workspace/.agents/skills~/.agents/skills~/.openclaw/skillsвбудовані Skillsskills.load.extraDirs (найнижчий пріоритет)Зміни у Skills і конфігурації набувають чинності в наступному новому сеансі, якщо спостерігач увімкнений, або під час наступного ходу агента, коли спостерігач виявить зміну.
Пов’язані матеріали
Що таке Skills, порядок завантаження, умови доступності та формат SKILL.md.
Створення власних Skills робочого простору.
Черга пропозицій для Skills, підготовлених агентом.
Каталог нативних команд із косою рискою та директиви чату.