
Jak přidat flagy do slash příkazů Claude Code: 4 vzory, které opravdu fungují
Claude Code ve skutečnosti nezpracovává --flagy tak, jak byste u vlastních slash příkazů očekávali, ale čtyři vzory vám poskytnou stejný uživatelský zážitek a tři z nich jsou čistší, než kdy bylo parsování CLI. Zde je návod, jak správně přidat flagy do slash příkazů Claude Code, včetně funkčních .md souborů, které si můžete hned zkopírovat.
Rychlá odpověď:
- Claude Code nezpracovává CLI flagy (
--json,--verbose) pro vlastní příkazy, jejich použití nemá žádný parser flagů. - Pro UX ve stylu CLI vepište flagy do
$ARGUMENTSa nechte LLM, aby je interpretovalo jako přirozený jazyk. - Pro typované argumenty použijte poziční
$1/$2nebo pojmenované argumenty deklarované v poliarguments:v frontmatteru. - Očekávané flagy zdokumentujte v
argument-hint:, aby je uživatelům zobrazovalo našeptávání po/.
Jak vlastně fungují argumenty slash příkazů v Claude Code?
Claude Code před odesláním vašeho příkazu do LLM nahradí tři typy tokenů: $ARGUMENTS (celý řetězec za názvem příkazu), poziční $0/$1/$2 (segmenty v uvozovkách ve stylu shellu) a pojmenované $variableName deklarované ve frontmatteru. Neexistuje žádný vestavěný parser CLI přepínačů — --dry-run skončí v $ARGUMENTS jako doslovný text.
A teď to, co všechny mate. Když zadáte /deploy --staging --dry-run, Claude Code nespustí argparse nad --staging --dry-run. Místo toho vloží celý tento řetězec na každé místo, kde váš .md soubor odkazuje na $ARGUMENTS, a poté odešle vykreslený prompt do modelu. LLM vidí --staging --dry-run jako prostý text a rozhodne, co s tím.
To není bug, je to záměr. Jde o substituční vrstvu, ne o parser. Vestavěné příkazy jako /clear a /help (viz oficiální reference CLI) přepínače mají, ale vlastní příkazy, které si vytvoříte, se řídí jinými pravidly.
Claude Code nahradí tokeny a poté předá vykreslený prompt LLM. Žádný parser přepínačů neexistuje.
V naší vlastní práci s Claude Code je nejčastějším zdrojem zmatení právě toto — vývojáři stráví hodinu snahou přijít na to, proč --verbose „není detekováno", než si uvědomí, že parserem je samotný LLM. Od verze Claude Code v2.1.126 (květen 2026) je toto chování zdokumentováno v oficiální dokumentaci slash příkazů a jen tak se nezmění. Slash příkazy jsou příbuzným primitivem k hookům Claude Code — oba rozšiřují systém, ale příkazy se spouštějí při vstupu uživatele, zatímco hooky se spouštějí při událostech nástrojů.
Zde je nejjednodušší možný vlastní příkaz, který dokazuje substituční model:
---
description: Echo whatever the user types after the command
argument-hint: [anything]
---
The user passed these arguments: $ARGUMENTS
Repeat them back verbatim, then describe what the user probably meant.Uložte to jako .claude/commands/echo-args.md, zadejte /echo-args hello world --foo a LLM uvidí doslovný řetězec hello world --foo nahrazený v promptu. To je celý ten mentální model. Pro podrobnější průvodce tím, jak soubory příkazů souvisejí se širším systémem dovedností, se podívejte na náš Úvod do Skills.
Vytvořte svůj první parametrický slash příkaz za 5 minut
Vytvořte .claude/commands/greet.md se třemi řádky frontmatteru a jedním řádkem promptu, který odkazuje na $ARGUMENTS. Restartujte Claude Code, zadejte /greet World a sledujte, jak se World dosadí do promptu ještě předtím, než ho uvidí LLM. To je celý obřad – pět kroků, žádné build nástroje.
Zde je kompletní postup:
- Vytvořte adresář. Z kořenového adresáře projektu spusťte
mkdir -p .claude/commands. Složka.claude/se nachází vedle vašeho kódu; příkazy uvnitř jsou automaticky objeveny, když Claude Code zahájí relaci. - Napište soubor příkazu. Uložte níže uvedený úryvek jako
.claude/commands/greet.md. - Znovu načtěte relaci. Ukončete a znovu spusťte Claude Code (nebo spusťte
/reload, pokud to vaše verze podporuje). Příkazy se načítají jednou při zahájení relace. - Vyvolejte ho. Zadejte
/greet Worlddo chatu. - Ověřte dosazení. Otevřete přepis a potvrďte, že LLM vidělo
Worldinterpolované do těla promptu, nikoli doslovný token$ARGUMENTS.
Zde je kompletní soubor:
---
description: Greet someone enthusiastically
argument-hint: <name>
---
You are a friendly assistant. Greet the person named "$ARGUMENTS" with one short, warm sentence. Then ask them what they're working on today.A interakce v terminálu:
> /greet World
Hey World, great to see you! What are you working on today?A je to. Nyní máte parametrický slash příkaz. Pole argument-hint je to, co způsobí, že menu automatického dokončování / zobrazí <name> vedle vašeho příkazu – malý UX detail, velký přínos.
Pokud se
$ARGUMENTSnedosazuje, v 9 případech z 10 je to proto, že jste zadali$argsnebo$ARGS– token je doslovně velkými písmeny.
Token je citlivý na velikost písmen a musí být přesný. $ARGUMENTS funguje. $arguments, $args, $ARGS, ${ARGUMENTS} všechny selžou tiše – odešlou se LLM jako doslovný text a model vidí jen nesmysl. Třikrát zkontrolujte pravopis, než budete předpokládat hlubší chybu.
Která pole frontmatteru řídí zpracování argumentů?
Pět polí frontmatteru určuje, jak slash příkaz zpracovává argumenty: argument-hint (co zobrazuje našeptávač), allowed-tools (co může příkaz volat), arguments (deklarace pojmenovaných argumentů), model (která varianta Claude jej spouští) a disable-model-invocation (uzamkne příkaz pouze pro vyvolání uživatelem). Dohromady pokrývají prakticky každý parametrický vzor, který budete potřebovat.
Zde je kompletní reference frontmatteru pro vlastní příkazy Claude Code v2.1.x:
| Pole | Účel | Příklad | Povinné? |
|---|---|---|---|
description: | Jednořádkový souhrn v / menu | Run staging deploy | Doporučeno |
argument-hint: | Našeptávač zobrazený za názvem příkazu | [--dry-run] [--region us] | Doporučeno |
allowed-tools: | Whitelist nástrojů, které příkaz může volat | Bash(git:*) Read Edit | Volitelné |
arguments: | Deklarace pojmenovaných argumentů | [issue, branch] | Volitelné |
model: | Přepsání modelu pro tento příkaz | claude-opus-4-7 | Volitelné |
disable-model-invocation: | Zablokuje agentovi volání tohoto příkazu | true | Volitelné |
context: fork | Spuštění v izolovaném kontextu | fork | Volitelné |
Dva zádrhely, které stojí za to přilepit si k monitoru. Za prvé, allowed-tools se oddělují mezerami, nikoli čárkami. Když napíšete Bash(git:*), Read, Edit, whitelist se tiše nenastaví pro nic, parser považuje celý řetězec za jednu chybně zformátovanou položku. Použijte Bash(git:*) Read Edit. Tuhle lekci jsme se naučili těžkým způsobem; další podobné vzory najdete v našem článku o osvědčených postupech pro CLAUDE.md o konvencích konfiguračních souborů.
Za druhé, pole model: přepíše jakýkoli model, který má uživatel pro danou relaci právě vybraný. Hodí se, když je příkaz výpočetně nenáročný a chcete ho vynutit na menší variantě, viz náš průvodce výběrem modelu, jak volit mezi Opus 4.7 a Sonnetem pro různé typy příkazů.
Pole disable-model-invocation: true je vaše záchranná síť pro destruktivní příkazy. Nastavte ho u /deploy-prod nebo /drop-database a ostatní agenti nebudou moci tyto příkazy volat programově, spustit je může jen člověk píšící do chatu.
Jaké jsou 4 vzory argumentů, které skutečně využijete?
Čtyři vzory pokrývají zhruba 95 % reálných slash příkazů Claude Code: (1) pravdivostní příznak jako /deploy --dry-run parsovaný LLM z $ARGUMENTS, (2) příznak s hodnotou jako /test --filter auth extrahovaný z $ARGUMENTS, (3) povinný poziční + volitelný příznak jako /fix-issue 123 --priority high kombinující $1 a $ARGUMENTS a (4) přísně typovaný poziční jako /migrate-component SearchBar React Vue používající $0/$1/$2.
Vyberte si ten, který odpovídá tvaru vašeho příkazu. Zde je funkční .md soubor pro každý z nich.

Vzor 1: Booleovský přepínač (--dry-run)
Když chcete UX jako u CLI přepínače a přepínač je jen zapnutý/vypnutý, nechte LLM, aby ho detekovalo uvnitř $ARGUMENTS. Žádná logika parsování, žádné žonglování s pozicemi, stačí popsat pravidlo v promptu.
---
description: Deploy to staging or production
argument-hint: [--dry-run]
allowed-tools: Bash(git:*) Bash(npm:*) Read
---
Deploy the current branch to staging.
Arguments passed: $ARGUMENTS
If "$ARGUMENTS" contains "--dry-run", DO NOT actually deploy. Instead, print the deployment plan: which files would change, which env vars would be set, and which commands would run. Stop after printing the plan.
Otherwise, proceed with the real deployment using `git push staging main` and `npm run deploy:staging`.Zadejte /deploy --dry-run a LLM uvidí přepínač, vypíše plán a zastaví se. Zadejte /deploy a nasadí to. Uživatel nemusel nic parsovat, LLM odvedlo veškerou práci, což je přesně to, v čem je dobré.
Vzor 2: Příznak s hodnotou (--filter <pattern>)
Stejná myšlenka, jen tentokrát příznak nese hodnotu. LLM si z $ARGUMENTS přečte --filter auth a použije podřetězec za ním.
---
description: Run the test suite, optionally filtered
argument-hint: [--filter <pattern>]
allowed-tools: Bash(npm:*) Read
---
Run the project's test suite.
Arguments: $ARGUMENTS
If "$ARGUMENTS" contains "--filter <pattern>", run only tests matching <pattern>. Use `npm test -- --grep <pattern>` for the actual command.
If no `--filter` is present, run the full suite with `npm test`.
Report pass/fail counts at the end./test --filter auth spustí pouze testy auth. /test spustí vše. LLM spolehlivě extrahuje vzor za --filter, protože Claude je v tomto typu extrakce ze strukturovaného textu opravdu dobrý – mnohem spolehlivější, než by lidé čekali.
Pattern 3: Povinný poziční argument + volitelný příznak
Tento hybrid používáme v naší vlastní knihovně příkazů nejčastěji. $1 nese povinný argument a $ARGUMENTS nese vše (takže LLM stále dokáže zachytit volitelné příznaky). Jde o nejčistší kombinaci v situaci, kdy je jeden argument nezbytný a zbytek tvoří volný kontext.
---
description: Fix a GitHub issue
argument-hint: <issue-number> [--priority high|medium|low] [context...]
allowed-tools: Bash(gh:*) Bash(git:*) Read Edit
---
Fix GitHub issue #$1.
Full arguments: $ARGUMENTS
Steps:
1. Run `gh issue view $1` to load the issue body.
2. Read the codebase to locate the relevant file(s).
3. If "$ARGUMENTS" contains "--priority high", create a hotfix branch off main. Otherwise branch off develop.
4. Apply the fix, run tests, and open a PR linked to the issue.
Anything else in $ARGUMENTS after the issue number is freeform context — fold it into your understanding of the bug.Vyvolání vypadá takto: /fix-issue 1234 --priority high the login form blanks the email field after a failed attempt. $1 se vyhodnotí jako 1234. $ARGUMENTS se vyhodnotí jako celý zbývající řetězec, který LLM bez problémů zpracuje a vytáhne z něj příznak priority i volný popis.
Přesně tuto kombinaci $1 + $ARGUMENTS používáme v našem příkazu /fix-issue — $1 pro číslo issue a zbytek jako volný kontext, který LLM zpracuje. Za rok každodenního používání Claude Code to byl vzor s nejvyšší návratností.
Vzor 4: Přísně poziční (typovaný)
Když je každý argument povinný a záleží na pořadí, zcela vypusťte $ARGUMENTS. Pro jednoznačné typované sloty použijte $0/$1/$2 (nebo pojmenované argumenty prostřednictvím pole arguments: ve frontmatteru).
---
description: Migrate a component between frameworks
argument-hint: <component> <from-framework> <to-framework>
arguments: [component, fromFramework, toFramework]
allowed-tools: Read Edit Write
---
Migrate the component named "$component" from $fromFramework to $toFramework.
1. Read the existing component file (search for `$component.{jsx,tsx,vue,svelte}`).
2. Translate the component idioms from $fromFramework to $toFramework: lifecycle methods, state handling, prop syntax, event binding.
3. Write the new file in the matching extension for $toFramework.
4. Print a diff summary at the end.
If $fromFramework or $toFramework is unsupported, abort and tell the user which frameworks ARE supported (React, Vue, Svelte, Solid).Volá se jako /migrate-component SearchBar React Vue. Díky deklaraci pojmenovaných argumentů jsou automatické doplňování i tělo promptu samovysvětlující – kdokoli si přečte migrate-component.md, na první pohled pozná, který slot je který. Tento vzor zazáří u příkazů se třemi a více povinnými argumenty. S tímto stylem se můžete setkat i napříč komunitními knihovnami, jako je wshobson/commands na GitHubu.
Booleovské příznaky i příznaky s hodnotou fungují, protože LLM je flexibilní parser. Přísně poziční přístup funguje, protože nevyžaduje žádnou inteligenci LLM. Tajemství spočívá v kombinaci obojího.
Kdy použít $ARGUMENTS vs poziční vs pojmenované argumenty?
Použijte $ARGUMENTS, když jsou argumenty ve stylu CLI flagů a chcete flexibilní parsování ze strany LLM. Použijte poziční $1/$2, když jsou argumenty typované, seřazené a chcete nulovou nejednoznačnost pro LLM. Použijte pojmenované arguments:, když existují 3 a více argumentů a srozumitelnost v automatickém doplňování je důležitější než stručnost. Zde je rozhodovací matice:
| Případ použití | Nejlepší volba | Syntaxe | Výhody | Nevýhody | Příklad |
|---|---|---|---|---|---|
| UX s CLI flagy a volitelnými argumenty | $ARGUMENTS | $ARGUMENTS v těle | Flexibilní, zrcadlí UX Unixu | Parsování na straně LLM, žádná validace | /deploy --staging --dry-run |
| Typované, seřazené povinné argumenty | Poziční $0/$1 | $0 $1 $2 v těle | Nulová nejednoznačnost, rychlé | Křehké vůči pořadí argumentů | /migrate Button React Vue |
| 3 a více argumentů, kde záleží na srozumitelnosti | Pojmenované přes arguments: | arguments: [a, b, c], poté $a $b $c | Samodokumentující | Rozvláčný frontmatter | /issue 123 main high |
| Kombinace povinných a volitelných | Hybrid ($1 + $ARGUMENTS) | $1 poté $ARGUMENTS | To nejlepší z obou | Dva mentální modely v jednom souboru | /fix-issue 123 --priority high |

Instinkt, který má většina vývojářů, je sáhnout nejprve po $ARGUMENTS, protože se nejvíce blíží bash světu, který znají. To je v pořádku pro prototypy, ale typované poziční argumenty jsou skutečně lepší, když je kontrakt stabilní. LLM nemusí parsovat $1, je to už čistý řetězec.
Zhruba pravidlo: pokud dokážete popsat signaturu příkazu jednou anglickou větou, aniž byste použili slova „nebo" a „volitelně", použijte poziční argumenty. Pokud tato slova potřebujete, použijte $ARGUMENTS.
Jsou nyní slash příkazy totéž co skills?
Anthropic na jaře 2026 sloučil vlastní příkazy do širšího systému skills, ale soubory .claude/commands/*.md stále fungují a používají stejný frontmatter. Skill je adresář (.claude/skills/foo/SKILL.md plus podpůrné soubory) s dodatečným řízením vyvolání, jako je disable-model-invocation. Příkaz je jeden soubor .md. Stejná pravidla substituce, jiné balení.
Zde je praktický rozdíl:
| Aspekt | .claude/commands/foo.md | .claude/skills/foo/ |
|---|---|---|
| Forma souboru | Jeden soubor .md | Adresář se souborem SKILL.md + podpůrné soubory |
| Vhodné pro | Rychlé jednorázové příkazy, projektové lokální automatizace | Znovupoužitelné balíčky se šablonami, referencemi, dílčími soubory |
| Řízení vyvolání | Pouze frontmatter | Frontmatter + disable-model-invocation pro jednotlivé soubory |
| Zpracování argumentů | Identické ($ARGUMENTS, $1, pojmenované) | Identické ($ARGUMENTS, $1, pojmenované) |

Takže ne, .claude/commands/ není zastaralé. Anthropic při slučování systémů záměrně zachoval fungování souborové formy, příliš mnoho projektů má knihovny příkazů zafixované ve správě verzí. Pokud chcete podpůrné soubory (jako referenci CONTRIBUTING.md, kterou váš skill načítá, nebo template.json, který kopíruje), sáhněte po skills. Jinak zůstaňte u příkazů.
Sloučení je součástí širšího úsilí o otevřený standard agentskills.io a je jednou z několika změn ve verzi v2.1.x, které stojí za to znát — podívejte se na náš přehled funkcí Claude Code v2.1 pro kompletní obraz funkcí a na náš tutoriál ke skills pro podrobnější průvodce skills.
Proč se moje $ARGUMENTS nenahrazuje? Nejčastější chyby a jejich řešení
Pět častých důvodů, proč se $ARGUMENTS nenahradí: (1) token malými písmeny nebo ve zkrácené podobě ($args, $ARGS, $arguments, musí být doslovně $ARGUMENTS), (2) víceslovné argumenty nejsou v uvozovkách (/cmd hello world se rozdělí; /cmd "hello world" zůstane pohromadě), (3) allowed-tools oddělené čárkou místo mezerou, (4) soubor příkazu není v .claude/commands/ ani v .claude/skills/, (5) po úpravě souboru je nutné relaci Claude Code znovu načíst.
$ARGUMENTS se doslova zobrazuje v promptu LLM
Příznak: Prompt zobrazuje $ARGUMENTS jako prostý text v odpovědi modelu, jako by byl token ignorován. Příčina: Nesprávná velikost písmen nebo překlep. Token je doslovně $ARGUMENTS, osm znaků, vše velkými písmeny. Oprava: Otevřete soubor .md, vyhledejte pomocí grep $args, $ARGS, $arguments, ${ARGUMENTS} a nahraďte za $ARGUMENTS. Překlep $args potkal alespoň jednou každého vývojáře v našem týmu; jde o nefrekventovanější chybu v kategorii „neznámý slash příkaz".
Víceslovný argument se neočekávaně rozděluje
Příznak: Spustili jste /migrate-component Search Bar React Vue a $1 je Search, $2 je Bar. Příčina: Bílé znaky rozdělují poziční argumenty. Oprava: Uzavřete víceslovný argument do uvozovek: /migrate-component \"Search Bar\" React Vue. Nyní je $1 Search Bar. To odpovídá chování shellu, což je mentální model, který toto použití záměrně napodobuje.
allowed-tools se nedodržuje
Příznak: Příkaz se spustí, ale Claude odmítá volat nástroje, které jste mysleli, že jste povolili, nebo volá nástroje, které jste neuvedli. Příčina: Odděleno čárkami místo mezerami. Oprava: Změňte allowed-tools: Bash, Read, Edit na allowed-tools: Bash Read Edit. Pro vzory dílčích nástrojů použijte formát Bash(git:*) Bash(npm:*) Read.
Příkaz se nezobrazuje v automatickém doplňování /
Příznak: Napíšete / a váš příkaz není v seznamu. Příčina: Umístění souboru, chybějící frontmatter nebo nesprávně nastavený disable-model-invocation. Řešení: Ověřte, že se soubor nachází na cestě .claude/commands/yourcmd.md (nebo .claude/skills/yourcmd/SKILL.md) relativně od kořenového adresáře projektu. Ujistěte se, že frontmatter obsahuje alespoň pole description:. Pokud nastavíte disable-model-invocation: true, příkaz se nebude nabízet ostatním agentům, ale nadále se zobrazí v nabídce / pro ruční zadání člověkem.
Upravili jste soubor .md, ale nic se nezměnilo
Příznak: Opravili jste chybu, uložili soubor, znovu spustili příkaz – a chování je pořád rozbité. Příčina: Claude Code ukládá soubory příkazů do mezipaměti při spuštění relace. Řešení: Ukončete a znovu spusťte Claude Code, případně zadejte /reload, pokud to vaše verze podporuje.
Claude Code načítá soubory
.mdpři spuštění relace. Pokud příkaz upravíte a „nic se nezmění", restartujte relaci, než začnete hledat závažnější chybu.
Pro okrajové případy nad rámec těchto pěti je nejlepším místem k hledání issues na repozitáři Claude Code. Většina podivných chyb při nahrazování, se kterými jsme se setkali, je nějakou variantou jednoho z výše uvedených problémů.
FAQ: Argumenty slash příkazů Claude Code
Jak předat argumenty slash příkazu Claude Code?
Argumentový řetězec zadejte za název příkazu: /greet World. V .md souboru vašeho příkazu odkazujte na hodnotu jako $ARGUMENTS (celý řetězec), $1 (první poziční argument) nebo $variableName (pokud jste v frontmatteru deklarovali arguments: [variableName]). Tokeny se nahradí před odesláním promptu do LLM.
Co je $ARGUMENTS v Claude Code?
$ARGUMENTS je substituční token v souborech vlastních lomítkových příkazů, který Claude Code nahradí celým řetězcem argumentů zadaných uživatelem za názvem příkazu. Pokud uživatel spustí /deploy --staging --dry-run, pak se $ARGUMENTS ve vykresleném promptu stane doslovným řetězcem --staging --dry-run, ještě než jej LLM vůbec uvidí.
Umí slash příkazy Claude Code přijímat přepínače ve stylu CLI, například --json?
Nativně ne — nástroj nemá parser přepínačů pro vlastní příkazy. Prostě zapíšete --json do $ARGUMENTS a v promptu instrukcemi řeknete LLM, aby tento přepínač rozpoznalo a podle toho se zachovalo. Funguje to proto, že Claude je flexibilní parser strukturovaného textu. Vestavěné příkazy jako /clear a /help skutečné přepínače mají, ale vlastní příkazy, které si vytvoříte, se řídí pravidly založenými výhradně na substituci.
Jaký je rozdíl mezi $1, $ARGUMENTS a $name v Claude Code?
$1 je první poziční argument oddělený mezerou ($2 je druhý a tak dále). $ARGUMENTS je celý řetězec argumentů doslovně, včetně všech pozičních částí a případných přepínačů. $name je pojmenovaný argument deklarovaný v poli arguments: [name] v frontmatteru, který se hodí, když chcete samopopisné poziční sloty bez číselného indexování.
Jak funguje argument-hint v Claude Code?
argument-hint je pole v frontmatteru, které určuje, co se zobrazí v automatickém doplňování po zadání / vedle názvu příkazu. Nastavení argument-hint: <issue-number> [--priority high] zobrazí přesně tuto šablonu poté, co uživatel zadá /. Jde čistě o UX záležitost – argumenty se nevalidují ani neparsovají. I tak se vyplatí ho nastavit, protože je to nejlevnější dokumentace, jakou kdy napíšete.
Jak vytvořím vlastní slash command s více argumenty?
Dvě čisté možnosti. Pro poziční: odkazujte na $1, $2, $3 v těle promptu. Pro pojmenované: deklarujte arguments: [first, second, third] ve frontmatteru a odkazujte na $first, $second, $third. Pojmenované jsou čitelnější při třech a více argumentech. $ARGUMENTS použijte pouze tehdy, chcete-li, aby LLM parsovalo volný textový řetězec za povinnými pozičními sloty.
Jsou .claude/commands/ deprecated ve prospěch .claude/skills/?
Ne. Anthropic oba systémy na jaře 2026 sloučil, ale .claude/commands/*.md explicitně ponechal funkční s identickými pravidly substituce. Pro automatizace v jednom souboru používejte commands, pro vícesouborové balíčky (SKILL.md plus šablony nebo reference) skills. Stejný frontmatter, stejné chování $ARGUMENTS, jiné balení. Od verze v2.1.126 jsou obě varianty plnohodnotné.
Proč se $ARGUMENTS v mém příkazu nenahrazuje?
Tři nejčastější příčiny seřazené podle frekvence: chyba ve velikosti písmen (musí být velkými $ARGUMENTS, ne $args ani $arguments), špatné umístění souboru (musí být v .claude/commands/ nebo .claude/skills/), nebo zastaralá relace (Claude Code načítá soubory příkazů při spuštění relace, takže po úpravě restartujte). Pokud jsou všechny tři body v pořádku, spusťte /echo-args foo s minimálním příkladem z H2 #1 a problém izolujte.
Mohu vyžadovat určité argumenty?
Na úrovni použití ne, neexistuje nativní validace povinných argumentů. Vzorec spočívá v tom, že LLM instruujete ve svém promptu: „Pokud je $1 prázdný, zastav se a řekni uživateli, aby zadal číslo issue.“ Model tento kontrakt vynucuje. Není to neprůstřelné, ale v praxi je to dostatečně spolehlivé pro každodenní použití, zejména v kombinaci s jasným argument-hint.
Přepíše model: ve frontmatteru příznaky CLI?
Ano, frontmatter má přednost. Pokud soubor příkazu deklaruje model: claude-haiku-4, poběží tento příkaz na Haiku bez ohledu na to, který model uživatel pro relaci vybral. To se hodí pro levné, často volané příkazy, které chcete držet mimo Opus. Podívejte se na našeho průvodce přepínáním modelů Claude, kde najdete, jak vybrat správnou variantu pro každý typ příkazu.
Závěr
Čtyři vzory. Vyberte ten, který odpovídá tvaru vašeho příkazu:
- Booleovský přepínač (
--dry-run), zapíšete ho do$ARGUMENTSa necháte LLM, aby ho detekovalo. - Hodnotový přepínač (
--filter <pattern>), stejný přístup, LLM hodnotu extrahuje samo. - Povinný poziční argument + volitelný přepínač,
$1pro ten nezbytný,$ARGUMENTSpro zbytek. - Striktně poziční,
$0/$1/$2(nebo pojmenované přesarguments:), když je každý slot povinný a záleží na pořadí.
Teď, když jsou vaše příkazy parametrické, je dalším krokem zapojit je do pracovních postupů agentů. Začněte naším tutoriálem ke Claude Skills pro přechod na vícesouborové balíčky, nebo si prohlédněte alternativní nástroje pro AI kódování, pokud porovnáváte různá prostředí. Tak či tak, vaše složka .claude/commands/ právě získala mnohem větší užitek.