====== Mody pro Claude Code ======
//Vytvořeno: **28.10.2026** | Aktualizováno: **~~LASTMOD~~**//
[[https://code.claude.com/docs/en/plugins/mods/overview|Mody pro Claude Code]] jsou pluginy s kódem, který reaguje na události uvnitř Claude Code. Umožňují přidat vlastní prvky do rozhraní, upravit chování nástrojů nebo zavést nové příkazy. Tento článek rozvíjí téma z [[https://www.vibecoding.cz/articles/claude-code/mody-pro-claude-code-anthropic-vas-pustil-pod-kapotu/|článku na Vibe Coding]] a doplňuje ho o aktuální dokumentaci Anthropicu.
===== Co mod umí =====
Mod může například:
* Zobrazit panel vedle konverzace nebo pruh nad polem pro zprávu.
* Doplnit informaci do existujícího rozhraní, například počítadlo volání nástrojů vedle indikátoru práce.
* Přidat vlastní příkaz, který vykoná kód modu.
* Sledovat, upravit nebo odmítnout volání nástroje či jinou událost.
Mod není nový AI model ani režim plánování. Je to rozšíření aplikace Claude Code. Přehled dalších článků je v sekci [[ai:platformy:claude-code:start|Claude Code]].
===== Mod, plugin, skill, hook a MCP =====
Tyto mechanismy se částečně překrývají, ale řeší různé úlohy. [[https://code.claude.com/docs/en/plugins/mods/overview#compare-mods-settings-hooks-skills-and-mcp-servers|Oficiální srovnání]] doporučuje použít jednodušší mechanismus, pokud stačí.
^ Mechanismus ^ Co to je ^ Kdy ho použít ^
| **Plugin** | Balíček rozšíření. Může obsahovat mod, skills, agenty, běžné hooky i MCP servery. | Chci rozšíření instalovat nebo sdílet jako celek. |
| **Mod** | Plugin s JavaScriptovým nebo TypeScriptovým kódem reagujícím na události uvnitř Claude Code. | Chci vlastní panel nebo zasahovat do chování aplikace. |
| **Skill** | Instrukce, které Claude načte pro určitou práci, typicky ze souboru ''SKILL.md''. | Chci Claudeovi předat opakovatelný postup. |
| **Settings hook** | Příkaz, HTTP požadavek nebo prompt nastavený pro určitou událost. | Chci například zaznamenat nebo zablokovat volání nástroje bez tvorby modu. |
| **MCP server** | Externí služba nebo proces, který Claudeovi poskytuje nástroje. | Chci agenta napojit na další systém. |
Slovo //hook// se používá pro obě varianty: běžný settings hook i funkci zaregistrovanou modem. V článku je rozlišujeme. Mod například může vykreslit panel; skill může obsahovat návod, jak takový mod vytvořit, ale sám panel nevykresluje.
===== Jak mod funguje =====
Mod je plugin s modulem, ve kterém funkce ''register'' zaregistruje obsluhu událostí. Událostí může být například volání nástroje ''tool.call'', vykreslení části rozhraní ''ui.render'' nebo spuštění příkazu ''command.run''.
Obsluha dostává tři argumenty:
* ''$'' – API modu pro přístup k funkcím Claude Code, například k rozhraní nebo souborům.
* ''e'' – data události, například údaje o volání nástroje.
* ''next'' – funkce pro předání události dalším modům a následně Claude Code.
Obsluha může událost jen sledovat a předat ji přes ''next(e)'', předat upravenou kopii nebo místo dalšího zpracování vrátit vlastní odpověď, pokud to daný typ události podporuje. Podrobnosti a podporované návratové hodnoty uvádí [[https://code.claude.com/docs/en/plugins/mods/reference|reference modů]].
Jednoduchý mod má obvykle tři soubory:
pocitadlo-nastroju/
├── .claude-plugin/
│ └── plugin.json
└── hooks/
├── hooks.json
└── register.js
''plugin.json'' je manifest pluginu, ''hooks.json'' ukazuje na modul a ''register.js'' obsahuje jeho kód. Mod používající ''$.state'' potřebuje také deklaraci typů stavu; její podobu popisuje reference.
===== Kde mody fungují =====
Podle oficiální dokumentace fungují mody v terminálu, v záložce Code desktopové aplikace a v rozšíření pro VS Code. **Spuštění kódu a vykreslení rozhraní jsou dvě různé věci:**
* **Terminál a desktop:** mody mohou vykreslovat rozhraní, konkrétní prvky se však mohou mezi prostředími lišit.
* **VS Code:** vykreslování v chatovém panelu podporuje rozšíření od verze 2.1.299. Relace, které nestahují příznaky funkcí, potřebují alespoň 2.1.304. Ne všechny prvky jsou dostupné ve všech prostředích.
* **''claude -p'' a Agent SDK:** hooky načteného modu mohou běžet, ale grafický výstup se nezobrazuje.
* **Cloudové relace:** hooky mohou běžet, pokud se do relace příslušný plugin dostane; rozhraní modu se tam nevykresluje.
* **Desktopová relace ve WSL:** podle dokumentace zde pluginy nejsou dostupné, a proto neběží ani mody.
Původní článek na Vibe Coding uvádí, že se ve VS Code grafika modů nezobrazuje. Aktuální dokumentace už podporu uvádí; rozhoduje verze rozšíření a konkrétní prvek. Podrobná tabulka je v [[https://code.claude.com/docs/en/plugins/mods/overview#where-mods-run|přehledu podporovaných prostředí]].
V terminálu dokumentace požaduje Claude Code alespoň ve verzi 2.1.287. Verzi zjistíš příkazem:
claude --version
===== Vytvoření modu pomocí Claudea =====
Claude Code má vestavěný skill ''plugin-authoring'', který obsahuje postup pro vytváření modů a odkazuje na typové definice konkrétní verze. Podle [[https://code.claude.com/docs/en/plugins/mods/create#ask-claude-for-a-mod|návodu Anthropicu]] může Claude skill načíst při zadání modu; lze ho také vyvolat přímo v interaktivní relaci:
/plugin-authoring
Potom stačí popsat požadované chování, například:
Vytvoř mod, který vedle indikátoru práce zobrazuje počet volání nástrojů. Ověř ho a vysvětli, jak ho vypnout.
Postup:
- Claude připraví soubory v adresáři relace pod ''~/.claude/dev-mods//''. Podle režimu oprávnění může být potřeba schválit jednotlivé soubory.
- Při prvním vytvořeném souboru se Claude Code může zeptat, zda mody pro tuto relaci zapnout. Po schválení je načte na konci tahu a následné úpravy znovu načte. Pokud zvolíš odklad, zatím se nespustí.
- V Claude Code otevři ''/plugin'' a na kartě **Installed** zkontroluj načtený plugin. Na stejném místě ho lze vypnout.
- Vyzkoušej skutečné chování modu. Případnou chybu nebo nechtěné chování popiš Claudeovi.
Automatické načítání vyžaduje důvěryhodný pracovní adresář a relaci, ve které lze odpovědět na schvalovací dialog. Organizační pravidla nebo nastavení mohou načítání zakázat.
**Pozor na životnost:** mod vytvořený pro relaci není automaticky trvalá instalace. Adresář relace může Claude Code později smazat podle nastavení ''cleanupPeriodDays''. Pokud si chceš mod ponechat nebo použít jinde, zkopíruj jeho adresář na vlastní trvalé místo a načti ho například přes ''%%--%%plugin-dir''. Pro sdílení nebo instalaci napříč relacemi jej lze zabalit jako plugin a zveřejnit ve vlastním marketplace.
===== Praktický příklad: počítadlo volání nástrojů =====
Následující mod vychází z [[https://code.claude.com/docs/en/plugins/mods/create#write-a-mod-yourself|oficiálního příkladu]]. Počítá volání nástrojů, zobrazuje počet vedle indikátoru práce a zpřístupňuje ho příkazem ''/pocet''. Po opětovném načtení modu se počítadlo vrátí na nulu.
Příklad byl staticky validován a jeho počítání otestováno pomocí testovací sady Claude Code 2.1.312. Vykreslení v živé interaktivní relaci tímto testem ověřeno nebylo.
==== 1. Připrav adresáře ====
mkdir -p pocitadlo-nastroju/.claude-plugin pocitadlo-nastroju/hooks
==== 2. Vytvoř manifest ====
Soubor ''pocitadlo-nastroju/.claude-plugin/plugin.json'':
{
"name": "pocitadlo-nastroju",
"version": "0.1.0",
"description": "Počítadlo volání nástrojů"
}
==== 3. Zaregistruj modul ====
Soubor ''pocitadlo-nastroju/hooks/hooks.json'':
{
"modules": ["./register.js"]
}
Cesta k modulu je relativní vůči souboru ''hooks.json''.
==== 4. Napiš obsluhu událostí ====
Soubor ''pocitadlo-nastroju/hooks/register.js'':
let calls = 0
export function register(on) {
on('session.start', async ($, e, next) => {
await $.command.register({ name: 'pocet', description: 'Počet volání nástrojů' })
return next(e)
})
on('tool.call', async ($, e, next) => {
calls += 1
$.ui.invalidate('ui.render')
return next(e)
})
on('command.run', { command: 'pocet' }, async () => ({ text: 'Volání nástrojů: ' + calls }))
on('ui.render', { component: 'Spinner' }, async ($, e, next) => {
return next({ ...e, props: { ...e.props, suffix: ' · nástroje: ' + calls } })
})
}
''session.start'' zaregistruje příkaz. ''tool.call'' zvýší počítadlo a požádá o překreslení. ''command.run'' vrátí počet na vyžádání. ''ui.render'' doplní počet k indikátoru práce.
==== 5. Zkontroluj a spusť mod ====
Validace zkontroluje manifest a staticky analyzuje modul, aniž by jeho kód spustila:
claude plugin validate ./pocitadlo-nastroju
Ve výstupu sleduj zejména ''hooks:'' a ''calls:''. Validace může vypsat doporučení pro zveřejnění v katalogu pluginů; samotná úspěšná validace nedokazuje, že je mod bezpečný nebo že funguje ve všech situacích.
Pro načtení do jedné relace spusť:
claude --plugin-dir ./pocitadlo-nastroju
Požádej Claudea o úkol s několika voláními nástrojů, například o výpis souborů a přečtení README. Během práce sleduj indikátor a poté zadej ''/pocet''. Při úpravě souborů se modul ve vývojové relaci může znovu načíst; tím se proměnná ''calls'' vynuluje.
==== 6. Otestuj počítání ====
Podle [[https://code.claude.com/docs/en/plugins/mods/test|návodu k testování]] lze události nasimulovat bez volání skutečných nástrojů. Vytvoř soubor ''pocitadlo-nastroju/tests/pocitadlo.test.ts''; adresář ''tests'' je potřeba nejprve vytvořit.
import { expect, test } from 'claude-code/testing'
test('počítá dvě volání', async ($, on) => {
on('tool.call', () => ({ result: 'ok' }))
await $.tool.call({ tool: 'Bash', command: 'ls' })
await $.tool.call({ tool: 'Read', file_path: 'README.md' })
const answer = await $.command.run({ command: 'pocet', args: '' })
expect(answer.text).toBe('Volání nástrojů: 2')
})
Test spusť z nadřazeného adresáře:
claude plugin test ./pocitadlo-nastroju
Test ověřuje počítání a odpověď příkazu, nikoli registraci příkazu v živé relaci nebo vzhled indikátoru. V testu se příkazy ''ls'' a ''Read'' skutečně nespouštějí; odpovídá za ně testovací náhrada.
===== Instalace a vypnutí =====
Mod je plugin. Existující mod z důvěryhodného marketplace lze nainstalovat příkazem v Claude Code, například:
/plugin install token-chart@your-org
''token-chart'' a ''your-org'' jsou názvy z dokumentačního příkladu, nikoli příslib dostupného pluginu. Marketplace musí být předem dostupný. Pluginy se spravují přes ''/plugin''; po instalaci ze shellu lze v otevřené relaci použít ''/reload-plugins''. Další možnosti popisuje [[https://code.claude.com/docs/en/plugins/mods/overview#install-or-update-a-mod|návod k instalaci]] a [[https://github.com/anthropics/claude-code-playground/tree/main/claude-code/mods|oficiální ukázkové mody]].
Konkrétní nainstalovaný mod vypneš přes kartu **Installed** v ''/plugin''. Pro jednorázové spuštění bez nainstalovaných modů existuje ''%%--%%safe-mode'', který ale vypne i další uživatelské úpravy. Nastavení ''disableAllHooks'' má také širší dopad, včetně běžných hooků a vlastní status line. Vestavěné mody mají odlišná pravidla vypnutí.
===== Bezpečnost a omezení =====
**Mod je spustitelný kód, nikoli jen instrukce pro model.** [[https://code.claude.com/docs/en/plugins/mods/overview#decide-whether-to-trust-a-mod|Bezpečnostní část dokumentace]] upozorňuje, že mod běží s oprávněními uživatele a není izolovaný sandboxem pro Bash nástroje Claudea. Může přistupovat k souborům a tajným údajům, spouštět procesy, komunikovat po síti nebo měnit průběh relace. Instaluj proto pouze důvěryhodné mody a před spuštěním zkontroluj jejich zdrojový kód i výstup validace.
Mod může zasahovat do rozhodování o volání nástrojů. Konkrétní možnosti měnit schvalování závisejí na typu účtu a spravovaných pravidlech; nespoléhej na to, že každý mod respektuje všechna lokální schvalovací pravidla. Výchozí vestavěná ochrana má v organizacích vlastní pravidla a konfiguraci.
Pokud hook selže nebo překročí svůj časový limit, Claude Code jej může přeskočit a pokračovat. Pro běžný hook reference uvádí limit 10 sekund jeho vlastního běhu, s výjimkami pro některé události. Bezpečnostní pravidlo postavené na modu proto vyžaduje ošetření chyb a testy včetně situace, kdy hook selže; samo o sobě nenahrazuje systémová oprávnění ani jiné nezávislé ochrany.
===== Problémy a diagnostika =====
Podrobný postup popisuje [[https://code.claude.com/docs/en/plugins/mods/troubleshoot|dokumentace řešení problémů]]. Základní kontrola:
- Ověř verzi Claude Code a v ''/plugin'' zkontroluj, zda je mod načtený. Vestavěné mody se nezapočítávají do řádku ''mods active''.
- Spusť ''claude plugin validate'' nad adresářem modu a zkontroluj manifest, modul, události a volání. Chybějící řádek ''hooks:'' může znamenat chybějící nebo chybně zapsané ''modules'' v ''hooks.json''.
- Pokud se mod načte, ale rozhraní chybí, ověř podporu daného prvku v používaném prostředí. U panelu v terminálu může hrát roli také šířka okna.
- Pokud hook selže, hledej hlášku ''hook skipped'' a její důvod. Ve vývojové relaci může být vidět přímo v konverzaci; v jiných relacích hledej v debug logu.
- Zkontroluj, zda mod neblokuje bezpečný režim, nastavení hooků nebo organizační politika.
Pro spuštění s vlastním debug logem:
claude --debug-file ./mod-debug.log --plugin-dir ./pocitadlo-nastroju
===== Zdroje =====
* [[https://www.vibecoding.cz/articles/claude-code/mody-pro-claude-code-anthropic-vas-pustil-pod-kapotu/|Vibe Coding – Mody pro Claude Code]]
* [[https://code.claude.com/docs/en/plugins/mods/overview|Anthropic – Přehled modů a podporovaná prostředí]]
* [[https://code.claude.com/docs/en/plugins/mods/create|Anthropic – Vytvoření modu a skill plugin-authoring]]
* [[https://code.claude.com/docs/en/plugins/mods/reference|Anthropic – Reference událostí, API a limitů]]
* [[https://code.claude.com/docs/en/plugins/mods/test|Anthropic – Testování modů]]
* [[https://code.claude.com/docs/en/plugins/mods/troubleshoot|Anthropic – Řešení problémů s mody]]
* [[https://github.com/anthropics/claude-code-playground/tree/main/claude-code/mods|Anthropic – Ukázkové mody]]