AgentSkills v OpenClaw: Jak naučit AI ovládat váš počítač
Máte nainstalovaný OpenClaw a úspěšně jste spustili první úkol. Agent vytvořil soubor, možná prohledal pár složek. Ale tušíte, že to je jen špička ledovce — někde jste četli o "skills", které umožňují agentovi pracovat s API, automatizovat prohlížeč nebo analyzovat data. Jak ale tyto schopnosti využít? A co když potřebujete něco, co žádný existující skill nepokrývá?
AgentSkills jsou stavební bloky, které dělají z OpenClaw skutečně užitečný nástroj. Představte si je jako nástroje v kufříku řemeslníka — kladivo, šroubovák, pilka. Každý skill má specifický účel a agent sám rozhoduje, který použít pro daný úkol. Rozdíl oproti tradičním nástrojům je v tom, že skills jsou programovatelné a můžete si vytvářet vlastní. Tím se OpenClaw mění z obecného asistenta na specializovaného pomocníka přesně pro vaše potřeby.
V tomto článku projdeme anatomii AgentSkills — jak fungují pod kapotou a proč je pochopení jejich struktury klíčové pro efektivní použití. Představíme 10 nejužitečnějších vestavěných skills s praktickými příklady. Krok za krokem vytvoříme vlastní skill pro konkrétní business případ. A na závěr probereme best practices pro bezpečnost a debugging, protože špatně napsaný skill může napáchat víc škody než užitku.
Článek předpokládá, že máte základní zkušenost s OpenClaw — pokud ne, doporučujeme nejprve přečíst náš úvodní článek o OpenClaw. Znalost příkazové řádky je nutná, základy Pythonu jsou výhodou pro sekci o tvorbě vlastních skills.
Obsah
- Co jsou AgentSkills a jak fungují
- Anatomie skillu: struktura a životní cyklus
- 10 nejužitečnějších vestavěných skills
- Tvorba vlastního skillu krok za krokem
- Praktické příklady automatizace
- Best practices pro bezpečné skills
- Debugging a testování
- Pokročilé techniky
Co jsou AgentSkills a jak fungují
AgentSkill je modulární komponenta, která rozšiřuje schopnosti OpenClaw agenta o konkrétní funkcionalitu. Když agentovi zadáte úkol, jeho LLM mozek analyzuje požadavek a rozhodne, které skills potřebuje k dosažení cíle. Skill pak provede konkrétní akci — spustí příkaz, zavolá API, zpracuje soubor — a vrátí výsledek zpět agentovi pro další rozhodování.
Klíčový koncept je tool calling (volání nástrojů). Moderní jazykové modely jako GPT-4 nebo Claude umí nejen generovat text, ale také strukturovaně volat externí funkce. OpenClaw využívá tuto schopnost — každý skill je registrován jako nástroj, který LLM může zavolat s konkrétními parametry. Model vidí seznam dostupných skills, jejich popisy a očekávané vstupy. Na základě kontextu úkolu rozhodne, který skill použít a s jakými argumenty.
Úkol: "Stáhni obsah webu aikod.cz a ulož ho do souboru"
LLM analýza:
├── Potřebuji stáhnout webovou stránku → http_request skill
├── Potřebuji uložit obsah do souboru → file_write skill
└── Pořadí: nejdřív stáhnout, pak uložit
Vykonání:
1. http_request(url="https://aikod.cz") → vrátí HTML
2. file_write(path="aikod.html", content=HTML) → vrátí "success"
Odpověď: "Stáhl jsem obsah aikod.cz a uložil do souboru aikod.html"
Skills jsou organizovány do kategorií podle typu funkcionality. Vestavěná knihovna OpenClaw obsahuje přes 100 skills rozdělených do logických skupin:
| Kategorie | Příklady skills | Typické použití |
|---|---|---|
| Shell | shell_exec, process_list, process_kill |
Spouštění příkazů, správa procesů |
| File | file_read, file_write, file_search, file_delete |
Práce se soubory a složkami |
| HTTP | http_get, http_post, http_download |
API volání, stahování souborů |
| Web | browser_open, browser_screenshot, web_scrape |
Automatizace prohlížeče |
| Code | code_analyze, code_format, git_commit |
Vývojářské nástroje |
| Data | json_parse, csv_read, data_transform |
Zpracování dat |
Tabulka ukazuje přehled hlavních kategorií. V praxi většina úkolů kombinuje skills z více kategorií — například analýza konkurenčního webu vyžaduje http_get pro stažení stránky, web_scrape pro extrakci dat a file_write pro uložení výsledků.
💡 Tip: Můžete zobrazit seznam všech dostupných skills příkazem
openclaw skills list. Pro detail konkrétního skillu použijteopenclaw skills info <název>.
Důležité je pochopit, že skills nejsou inteligentní — jsou to jednoduché funkce, které provedou přesně to, co jim řeknete. Inteligence je v LLM, který rozhoduje, kdy a jak skills použít. Proto kvalita promptu a kontextu přímo ovlivňuje, jak efektivně agent skills využije.
Anatomie skillu: struktura a životní cyklus
Každý AgentSkill má definovanou strukturu, která umožňuje LLM pochopit, co skill dělá a jak ho správně zavolat. Pochopení této struktury je klíčové jak pro efektivní použití vestavěných skills, tak pro tvorbu vlastních.
Základní komponenty skillu:
{
name: "file_read", // Unikátní identifikátor
description: "Přečte obsah souboru a vrátí ho jako text",
category: "file", // Kategorie pro organizaci
parameters: { // Definice vstupních parametrů
type: "object",
properties: {
path: {
type: "string",
description: "Absolutní nebo relativní cesta k souboru"
},
encoding: {
type: "string",
default: "utf-8",
description: "Kódování souboru"
}
},
required: ["path"] // Povinné parametry
},
returns: { // Definice výstupu
type: "string",
description: "Obsah souboru jako text"
},
examples: [ // Příklady použití pro LLM
{
input: { path: "/etc/hosts" },
output: "127.0.0.1 localhost\n..."
}
],
permissions: ["file:read"], // Vyžadovaná oprávnění
riskLevel: "low" // Úroveň rizika
}
Životní cyklus volání skillu probíhá v několika fázích:
- Rozhodnutí — LLM na základě úkolu rozhodne, že potřebuje konkrétní skill
- Validace — OpenClaw zkontroluje, že skill existuje a parametry jsou validní
- Autorizace — Ověření, že uživatel povolil požadovaná oprávnění
- Vykonání — Skill provede svou funkci
- Zpracování výstupu — Výsledek je formátován a předán zpět LLM
- Pokračování — LLM rozhodne, zda je úkol hotový nebo potřebuje další kroky
Příklad z praxe: Vývojář v Ostravě debugoval problém, kdy agent nemohl číst konfigurační soubory. Příčina byla v životním cyklu — skill
file_readvyžadoval oprávněnífile:read, ale uživatel při instalaci povolil pouzefile:write. Pochopení permission modelu ušetřilo hodiny frustrace.
Permission model je klíčový pro bezpečnost. Každý skill deklaruje, jaká oprávnění potřebuje. OpenClaw při prvním spuštění požádá uživatele o schválení jednotlivých kategorií oprávnění. Můžete granulárně kontrolovat, co agent smí:
# Zobrazení aktuálních oprávnění
openclaw permissions list
# Přidání oprávnění
openclaw permissions grant file:read file:write
# Odebrání oprávnění
openclaw permissions revoke shell:exec
Risk level (low, medium, high, critical) pomáhá identifikovat potenciálně nebezpečné skills. Skill s riskLevel: "critical" (například shell_exec_sudo) vyžaduje explicitní potvrzení před každým spuštěním.
10 nejužitečnějších vestavěných skills
Z více než 100 vestavěných skills jsme vybrali 10, které pokrývají většinu běžných případů použití. Každý skill uvádíme s praktickým příkladem.
1. shell_exec — Spouštění příkazů
Nejuniverzálnější skill. Spustí libovolný příkaz v shellu a vrátí výstup.
# Příklad použití
openclaw "Kolik místa zabírá složka ~/Downloads?"
# Agent interně volá:
shell_exec(command="du -sh ~/Downloads")
# Výstup: "4.2G /home/user/Downloads"
2. file_search — Vyhledávání souborů
Prohledává souborový systém podle názvu, přípony nebo obsahu.
openclaw "Najdi všechny Python soubory v projektu, které obsahují 'TODO'"
# Agent kombinuje:
file_search(pattern="*.py", contains="TODO", path="./")
3. http_get — HTTP požadavky
Stahuje obsah z URL. Podporuje hlavičky, autentizaci a timeout.
openclaw "Zkontroluj, jestli je API na api.example.com dostupné"
# Agent volá:
http_get(url="https://api.example.com/health", timeout=5)
4. json_parse — Zpracování JSON
Parsuje JSON a umožňuje extrakci specifických hodnot pomocí JSONPath.
openclaw "Z odpovědi API vytáhni všechny emaily uživatelů"
# Agent kombinuje http_get + json_parse:
json_parse(data=response, path="$.users[*].email")
5. web_scrape — Web scraping
Extrahuje strukturovaná data z webových stránek pomocí CSS selektorů.
openclaw "Stáhni všechny nadpisy článků z aikod.cz/svet-ai"
# Agent volá:
web_scrape(url="https://aikod.cz/svet-ai", selector="h2.article-title")
6. git_status / git_commit — Git operace
Kompletní sada skills pro práci s Git repozitáři.
openclaw "Commitni všechny změny s popisem 'Fix: oprava validace formuláře'"
# Agent postupně volá:
git_status()
git_add(files=".")
git_commit(message="Fix: oprava validace formuláře")
7. process_monitor — Monitoring procesů
Sleduje běžící procesy, jejich spotřebu CPU/RAM.
openclaw "Který proces zabírá nejvíc paměti?"
# Agent volá:
process_monitor(sort_by="memory", limit=5)
8. cron_schedule — Plánování úloh
Vytváří a spravuje cron joby pro periodické úkoly.
openclaw "Každý den v 8:00 mi pošli email se shrnutím logů"
# Agent vytvoří cron job:
cron_schedule(schedule="0 8 * * *", command="openclaw 'Analyzuj logy a pošli report'")
9. data_transform — Transformace dat
Konvertuje data mezi formáty (CSV↔JSON↔XML) a provádí základní transformace.
openclaw "Převeď tento CSV na JSON a seskup záznamy podle města"
# Agent volá:
data_transform(input="data.csv", format="json", group_by="city")
10. notification_send — Notifikace
Odesílá notifikace přes různé kanály (email, Slack, desktop).
openclaw "Až skončí build, pošli mi Slack zprávu"
# Agent nastaví callback:
notification_send(channel="slack", message="Build dokončen", webhook=SLACK_URL)
📌 Důležité: Kompletní dokumentaci všech skills najdete na docs.openclaw.ai/skills. Každý skill má detailní popis parametrů, příklady a known issues.
Kombinace těchto základních skills pokryje většinu automatizačních potřeb. Ale co když potřebujete něco specifického pro váš workflow? V další sekci si ukážeme, jak vytvořit vlastní skill.
Tvorba vlastního skillu krok za krokem
Představme si konkrétní situaci: pracujete v e-shopu a denně kontrolujete stav objednávek v interním systému. Chcete, aby OpenClaw uměl automaticky zjistit stav objednávky podle čísla. Žádný vestavěný skill tohle neumí — je čas vytvořit vlastní.
Krok 1: Definice požadavků
Nejdřív si ujasněte, co skill musí umět:
- Vstup: číslo objednávky (string)
- Výstup: stav objednávky (string) + detaily (objekt)
- API endpoint:
https://api.eshop.cz/orders/{id} - Autentizace: API key v headeru
Krok 2: Vytvoření souboru skillu
Skills se ukládají do ~/.openclaw/skills/. Vytvořte nový soubor:
// ~/.openclaw/skills/eshop_order_status.js
module.exports = {
name: "eshop_order_status",
description: "Zjistí stav objednávky v e-shopu podle čísla objednávky",
category: "custom",
parameters: {
type: "object",
properties: {
order_id: {
type: "string",
description: "Číslo objednávky (např. ORD-2026-12345)"
}
},
required: ["order_id"]
},
returns: {
type: "object",
properties: {
status: { type: "string" },
created_at: { type: "string" },
items_count: { type: "number" },
total_price: { type: "number" }
}
},
permissions: ["http:external"],
riskLevel: "low",
// Hlavní funkce skillu
async execute(params, context) {
const { order_id } = params;
const apiKey = context.env.ESHOP_API_KEY;
if (!apiKey) {
throw new Error("Chybí ESHOP_API_KEY v environment variables");
}
const response = await fetch(`https://api.eshop.cz/orders/${order_id}`, {
headers: {
"Authorization": `Bearer ${apiKey}`,
"Content-Type": "application/json"
}
});
if (!response.ok) {
if (response.status === 404) {
return { error: `Objednávka ${order_id} nenalezena` };
}
throw new Error(`API error: ${response.status}`);
}
const data = await response.json();
return {
status: data.status,
created_at: data.created_at,
items_count: data.items.length,
total_price: data.total_price
};
}
};
Krok 3: Registrace a testování
# Nastavení API klíče
openclaw config set env.ESHOP_API_KEY "váš-api-klíč"
# Reload skills
openclaw skills reload
# Test skillu
openclaw "Jaký je stav objednávky ORD-2026-12345?"
Krok 4: Vylepšení a error handling
Příklad z praxe: První verze skillu pro logistickou firmu padala, když API vracelo neočekávaný formát data. Po přidání validace a fallback hodnot skill funguje spolehlivě i při částečných odpovědích z API.
// Robustnější verze s validací
async execute(params, context) {
const { order_id } = params;
// Validace formátu čísla objednávky
if (!/^ORD-\d{4}-\d+$/.test(order_id)) {
return {
error: "Neplatný formát čísla objednávky. Očekávám ORD-YYYY-XXXXX"
};
}
try {
const response = await fetch(/*...*/);
const data = await response.json();
// Bezpečná extrakce s fallback hodnotami
return {
status: data.status || "unknown",
created_at: data.created_at || null,
items_count: Array.isArray(data.items) ? data.items.length : 0,
total_price: typeof data.total_price === "number" ? data.total_price : null
};
} catch (err) {
context.log.error(`Chyba při volání API: ${err.message}`);
return { error: `Nepodařilo se zjistit stav: ${err.message}` };
}
}
Vytvoření vlastního skillu vyžaduje základní znalost JavaScriptu, ale výsledek stojí za to — máte nástroj přesně na míru vašim potřebám, který můžete sdílet s kolegy nebo komunitou.
Praktické příklady automatizace
Teorie je důležitá, ale pojďme se podívat na reálné scénáře, kde kombinace skills vytváří skutečnou hodnotu.
Automatizace faktur
Účetní oddělení dostává faktury emailem v různých formátech. Cíl: automaticky extrahovat klíčové údaje a uložit do tabulky.
openclaw "Projdi všechny PDF v ~/invoices, extrahuj částku, datum a dodavatele,
a vytvoř CSV souhrnný report"
Agent použije kombinaci:
file_search— najde všechny PDF souborypdf_extract— extrahuje text z PDFdata_transform— strukturuje data do CSVfile_write— uloží výsledný report
Příklad z praxe: Účetní firma v Plzni tímto způsobem zpracovává 200+ faktur měsíčně. Čas na zpracování klesl z 8 hodin na 30 minut + kontrola výstupů.
Monitoring konkurence
Marketingové oddělení chce sledovat ceny konkurenčních produktů.
openclaw "Každý den v 6:00 zkontroluj ceny produktů na competitor.cz/kategorie/xyz,
porovnej s našimi cenami v prices.csv a pošli report na [email protected]"
Skills v akci:
cron_schedule— nastaví denní spouštěníweb_scrape— stáhne ceny z konkurenčního webucsv_read— načte vlastní cenydata_transform— vytvoří porovnávací reportemail_send— odešle report
Správa serverů
DevOps tým potřebuje rychle zjistit stav produkčních serverů.
openclaw "Zkontroluj disk space na všech serverech v ~/.ssh/config,
pokud je někde méně než 20% volného místa, vytvoř ticket v Jira"
Agent orchestruje:
file_read— načte SSH configssh_exec— spustídf -hna každém serverudata_transform— parsuje výstupyjira_create_ticket— vytvoří ticket (custom skill)
Pro vývoj AI agentů na míru doporučujeme začít analýzou, které úkoly jsou opakované a časově náročné. Často překvapí, kolik práce lze automatizovat jednoduchými kombinacemi skills. Pro jednoduché případy zákaznické podpory zvažte naše AI chatboty.
Best practices pro bezpečné skills
Vlastní skills mohou být bezpečnostní riziko, pokud nejsou správně napsané. Tady jsou klíčová pravidla, která dodržujeme při vývoji skills pro naše klienty.
1. Nikdy nepředávejte uživatelský vstup přímo do shell příkazů
// ŠPATNĚ — zranitelné vůči command injection
shell_exec({ command: `cat ${userInput}` })
// SPRÁVNĚ — použijte parametrizované volání
file_read({ path: userInput })
2. Validujte všechny vstupy
// Validace před zpracováním
if (!order_id || typeof order_id !== 'string') {
throw new Error('Invalid order_id');
}
// Whitelist povolených hodnot
const allowedStatuses = ['pending', 'shipped', 'delivered'];
if (!allowedStatuses.includes(status)) {
throw new Error('Invalid status');
}
3. Minimalizujte oprávnění
Skill by měl vyžadovat jen ta oprávnění, která skutečně potřebuje. Skill pro čtení souborů nepotřebuje shell:exec.
4. Logujte citlivé operace
context.log.info(`Accessing order ${order_id} for user ${context.user}`);
5. Používejte timeout pro externí volání
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 5000);
try {
const response = await fetch(url, { signal: controller.signal });
} finally {
clearTimeout(timeout);
}
⚠️ Pozor: V únoru 2026 bylo objeveno, že některé third-party skills z neoficiálních repozitářů obsahovaly backdoor pro exfiltraci dat. Používejte pouze skills z ověřených zdrojů nebo si je sami zkontrolujte.
Checklist bezpečnosti vlastního skillu:
- Žádné hardcoded credentials (použijte environment variables)
- Validace všech vstupních parametrů
- Timeout pro všechna síťová volání
- Error handling bez leakování citlivých informací
- Minimální vyžadovaná oprávnění
- Logování pro audit trail
Debugging a testování
Když skill nefunguje podle očekávání, systematický přístup k debuggingu ušetří hodiny frustrace.
Verbose mode zobrazí detailní informace o každém kroku:
openclaw --verbose "Jaký je stav objednávky ORD-2026-12345?"
Výstup ukáže:
- Které skills agent zvažoval
- Jaké parametry předal
- Surový výstup ze skillu
- Jak LLM interpretoval výsledek
Izolované testování skillu bez LLM vrstvy:
openclaw skills test eshop_order_status --params '{"order_id": "ORD-2026-12345"}'
Tento příkaz spustí skill přímo a zobrazí výstup, bez zapojení agenta. Ideální pro ověření, že skill sám o sobě funguje správně.
Logování do souboru:
openclaw config set log.file ~/.openclaw/debug.log
openclaw config set log.level debug
Příklad z praxe: Skill pro integraci s CRM systémem vracel prázdné výsledky. Debug log odhalil, že API vracelo data v jiném časovém pásmu, než skill očekával. Oprava zabrala 5 minut, hledání problému bez logů by trvalo hodiny.
Unit testy pro vlastní skills:
// tests/eshop_order_status.test.js
const skill = require('../skills/eshop_order_status');
describe('eshop_order_status', () => {
it('should validate order_id format', async () => {
const result = await skill.execute({ order_id: 'invalid' }, mockContext);
expect(result.error).toContain('Neplatný formát');
});
it('should handle API errors gracefully', async () => {
// Mock failed API response
fetchMock.mockRejectOnce(new Error('Network error'));
const result = await skill.execute({ order_id: 'ORD-2026-12345' }, mockContext);
expect(result.error).toBeDefined();
});
});
Pokročilé techniky
Pro ty, kdo chtějí vytěžit z AgentSkills maximum, zde jsou pokročilé techniky.
Řetězení skills — jeden skill může volat jiné skills:
async execute(params, context) {
// Zavolej jiný skill
const fileContent = await context.callSkill('file_read', {
path: params.config_path
});
// Zpracuj výsledek
const config = JSON.parse(fileContent);
// Zavolej další skill s konfigurací
return await context.callSkill('http_post', {
url: config.webhook_url,
body: params.data
});
}
Streaming pro dlouhé operace:
async *execute(params, context) {
const files = await getFiles(params.path);
for (const file of files) {
yield { progress: `Zpracovávám ${file}...` };
const result = await processFile(file);
yield { file, result };
}
yield { complete: true, processed: files.length };
}
Caching pro opakované dotazy:
async execute(params, context) {
const cacheKey = `order_${params.order_id}`;
// Zkus cache (platnost 5 minut)
const cached = await context.cache.get(cacheKey);
if (cached) return cached;
// Fetch z API
const result = await fetchFromApi(params.order_id);
// Ulož do cache
await context.cache.set(cacheKey, result, { ttl: 300 });
return result;
}
Tyto techniky umožňují vytvářet sofistikované workflows, které by jinak vyžadovaly samostatné aplikace.
Pro firemní nasazení s centrální správou a enterprise bezpečností doporučujeme prostudovat článek OpenClaw pro firmy. Pokud teprve začínáte s OpenClaw, vraťte se k úvodnímu článku.
FAQ
Kolik vlastních skills mohu mít?
Technicky neomezeně. Prakticky doporučujeme držet počet skills rozumný — LLM musí pochopit, který skill použít, a příliš mnoho možností může vést ke špatným rozhodnutím. Pokud máte více než 20-30 custom skills, zvažte jejich seskupení do kategorií nebo vytvoření "meta-skills", které orchestrují menší skills.
Mohu sdílet vlastní skills s komunitou?
Ano, OpenClaw má oficiální repozitář komunitních skills na GitHub. Pro publikování musíte projít code review zaměřené na bezpečnost. Populární skills z komunity zahrnují integrace s Notion, Airtable, různými CRM systémy a českými službami jako Fakturoid nebo Pohoda.
Jak aktualizovat skill bez přerušení běžícího agenta?
OpenClaw podporuje hot-reload skills. Příkaz openclaw skills reload načte změny bez restartu agenta. Pro produkční prostředí doporučujeme verzování skills a postupný rollout — nejdřív otestovat na development instanci.
Co když skill potřebuje přístup k databázi?
Můžete vytvořit skill, který se připojuje k databázi pomocí příslušného driveru (pg pro PostgreSQL, mysql2 pro MySQL atd.). Důrazně doporučujeme používat read-only credentials a parametrizované dotazy pro prevenci SQL injection. Pro citlivá data zvažte, zda není lepší vystavit REST API a volat ho přes HTTP skill.
Jak měřit výkon skills?
OpenClaw automaticky měří dobu běhu každého skillu. Statistiky zobrazíte příkazem openclaw stats skills. Pro detailnější analýzu můžete přidat vlastní metriky do skillu pomocí context.metrics.record('operation_name', duration).
Shrnutí
AgentSkills jsou srdcem OpenClaw — transformují obecného AI asistenta na specializovaný nástroj pro vaše konkrétní potřeby. Vestavěná knihovna pokrývá většinu běžných případů, ale skutečná síla přichází s vlastními skills, které přesně odpovídají vašim workflow.
Klíčové body k zapamatování: skills jsou jednoduché funkce, inteligence je v LLM; bezpečnost je kritická — validujte vstupy a minimalizujte oprávnění; debugging vyžaduje systematický přístup s verbose logováním. S těmito znalostmi jste připraveni automatizovat úkoly, které by jinak zabraly hodiny manuální práce.
Potřebujete pomoc s vývojem vlastních AgentSkills nebo integrací OpenClaw do firemních procesů? Máme zkušenosti s nasazením AI agentů v českých firmách od e-commerce po logistiku. Napište na [email protected] nebo využijte kontaktní formulář — rádi probereme vaše potřeby.
