web-development

Vlaggen Toevoegen aan Claude Code Slash-commands: 4 Patronen Die Echt Werken

Geschreven door Techsy Editorial Team
May 3, 2026
15 leestijd
Vlaggen Toevoegen aan Claude Code Slash-commands: 4 Patronen Die Echt Werken

Vlaggen Toevoegen aan Claude Code Slash-commands: 4 Patronen Die Echt Werken

Claude Code parseert --flags voor aangepaste slash-commands niet zoals je zou verwachten — maar vier patronen geven je dezelfde UX, en drie ervan zijn schoner dan CLI-parsing ooit was. Zo voeg je vlaggen op de juiste manier toe aan Claude Code slash-commands, inclusief werkende .md-bestanden die je vandaag nog kunt gebruiken.

Kort antwoord:

  • Claude Code parseert CLI-vlaggen (--json, --verbose) niet voor aangepaste commands — de harness heeft geen vlagparser.
  • Voor CLI-achtige UX schrijf je vlaggen in $ARGUMENTS en laat je het LLM ze als gewone tekst interpreteren.
  • Voor getypeerde argumenten gebruik je positionele $1/$2 of benoemde argumenten gedeclareerd in het arguments:-frontmatterveld.
  • Documenteer verwachte vlaggen in argument-hint: zodat de /-autocomplete ze aan de gebruiker toont.

Hoe Werken Claude Code Slash-command Argumenten Eigenlijk?

De harness van Claude Code vervangt drie soorten tokens voordat je command naar het LLM wordt gestuurd: $ARGUMENTS (de volledige string na de commandonaam), positionele $0/$1/$2 (shell-stijl aanhalingstekensegmenten) en benoemde $variabelenaam gedeclareerd in frontmatter. Er is geen ingebouwde CLI-vlagparser — --dry-run komt in $ARGUMENTS terecht als letterlijke tekst.

Hier zit het venijn. Wanneer je /deploy --staging --dry-run typt, voert Claude Code geen argparse uit op --staging --dry-run. De harness plakt die hele string in waar jouw .md-bestand naar $ARGUMENTS verwijst, en stuurt de gerenderde prompt daarna naar het model. Het LLM ziet --staging --dry-run als gewone Engelse tekst en beslist wat ermee te doen.

Dat is geen bug — het is het ontwerp. De harness is een substitutielaag, geen parser. Ingebouwde commands zoals /clear en /help (zie de officiële CLI-referentie) hebben wel vlaggen, maar aangepaste commands die jij schrijft spelen volgens andere regels.

De harness van Claude Code vervangt tokens en geeft de gerenderde prompt daarna aan het LLM. Er is geen vlagparser.

In ons eigen Claude Code-werk is dit de meest voorkomende bron van verwarring — ontwikkelaars besteden een uur aan het uitzoeken waarom --verbose "niet gedetecteerd wordt" voordat ze beseffen dat het LLM de parser is. Vanaf Claude Code v2.1.126 (mei 2026) staat dit gedrag gedocumenteerd in de officiële slash-commands documentatie en zal het voorlopig niet veranderen. Slash-commands zijn een nevenprimitief van Claude Code hooks — beide breiden de harness uit, maar commands reageren op gebruikersinvoer terwijl hooks reageren op toolgebeurtenissen.

Het kleinste mogelijke aangepaste command dat het substitutiemodel aantoont:

markdown
---
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.

Sla dit op als .claude/commands/echo-args.md, typ /echo-args hello world --foo, en het LLM ziet de letterlijke string hello world --foo als vervanging voor de prompt. Dat is het hele mentale model. Voor een uitgebreidere bespreking van hoe commandobestanden zich verhouden tot het bredere skills-systeem, zie onze Skills-primer.

Bouw Je Eerste Parametrische Slash-command in 5 Minuten

Maak .claude/commands/greet.md met drie regels frontmatter en één promptregel die naar $ARGUMENTS verwijst. Start Claude Code opnieuw, typ /greet World, en zie hoe World in de prompt wordt vervangen voordat het LLM het te zien krijgt. Dat is de volledige ceremonie — vijf stappen, geen buildtools.

Het recept van begin tot eind:

  1. Maak de map aan. Voer vanuit je projectroot mkdir -p .claude/commands uit. De .claude/-map staat naast je code; commands daarin worden automatisch ontdekt wanneer Claude Code een sessie start.
  2. Schrijf het commandobestand. Sla het onderstaande fragment op als .claude/commands/greet.md.
  3. Herlaad je sessie. Sluit Claude Code af en herstart het (of voer /reload uit als jouw versie dat ondersteunt). Commands worden eenmalig bij sessiestart ingelezen.
  4. Roep het aan. Typ /greet World in de chat.
  5. Verifieer de substitutie. Open het transcript en bevestig dat het LLM World zag geïnterpoleerd in de prompttekst, niet het letterlijke token $ARGUMENTS.

Hier is het volledige bestand:

markdown
---
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.

En de terminalinteractie:

bash
> /greet World
Hey World, great to see you! What are you working on today?

Klaar. Je hebt nu een parametrisch slash-command. Het argument-hint-veld zorgt ervoor dat het /-autocompletemenu <name> naast je command toont — kleine UX-aanraking, groot effect.

Als $ARGUMENTS niet wordt vervangen, komt dat 9 van de 10 keer doordat je $args of $ARGS hebt getypt — het token is letterlijk hoofdletters.

Het token is hoofdlettergevoelig en exact. $ARGUMENTS werkt. $arguments, $args, $ARGS, ${ARGUMENTS} falen allemaal stil — ze worden als letterlijke tekst naar het LLM gestuurd en het model ziet gewoon rommel. Controleer de spelling driedubbel voordat je een diepere bug aanneemt.

Welke Frontmattervelden Sturen de Argumentafhandeling?

Vijf frontmattervelden bepalen hoe een slash-command argumenten verwerkt: argument-hint (wat autocomplete toont), allowed-tools (wat het command mag aanroepen), arguments (benoemde-argumentdeclaratie), model (welke Claude-variant het uitvoert) en disable-model-invocation (beperkt het command tot uitsluitend menselijke aanroeping). Samen dekken ze vrijwel elk parametrisch patroon dat je nodig hebt.

Dit is de volledige frontmatter-referentie voor Claude Code v2.1.x aangepaste commands:

VeldDoelVoorbeeldVerplicht?
description:Eénregelige samenvatting in het /-menuRun staging deployAanbevolen
argument-hint:Autocompletehint die na de commandonaam wordt getoond[--dry-run] [--region us]Aanbevolen
allowed-tools:Whitelist van tools die het command mag aanroepenBash(git:*) Read EditOptioneel
arguments:Benoemde-argumentdeclaratie[issue, branch]Optioneel
model:Overschrijf model voor dit commandclaude-opus-4-7Optioneel
disable-model-invocation:Blokkeer agent om dit command aan te roepentrueOptioneel
context: forkVoer uit in geïsoleerde contextforkOptioneel

Twee valkuilen die het waard zijn op je scherm te plakken. Ten eerste is allowed-tools spatie-gescheiden, niet komma-gescheiden. Bash(git:*), Read, Edit schrijven zal stilzwijgend niets whitelisten — de parser behandelt de hele string als één misvormd item. Gebruik Bash(git:*) Read Edit. Dit hebben wij zelf op de harde manier geleerd; voor meer dit soort patronen, zie onze CLAUDE.md-best practices over configuratiebestandconventies.

Ten tweede overschrijft het model:-veld welk model de gebruiker momenteel voor de sessie heeft geselecteerd. Handig wanneer een command rekenkundig goedkoop is en je het op een kleinere variant wilt forceren — zie onze gids over modelkeuze voor het kiezen tussen Opus 4.7 en Sonnet voor verschillende commandtypes.

Het veld disable-model-invocation: true is je vangnet voor destructieve commands. Stel het in op /deploy-prod of /drop-database en andere agents kunnen die commands niet programmatisch aanroepen — alleen een mens die in de chat typt, kan ze activeren.

Wat Zijn de 4 Argumentpatronen Die Je Echt Gebruikt?

Vier patronen dekken grofweg 95% van echte Claude Code slash-commands: (1) booleaanse vlag zoals /deploy --dry-run geparseerd door het LLM vanuit $ARGUMENTS, (2) waardenvlag zoals /test --filter auth geëxtraheerd uit $ARGUMENTS, (3) verplicht positioneel + optionele vlag zoals /fix-issue 123 --priority high waarbij $1 en $ARGUMENTS worden gecombineerd, en (4) strikt positioneel zoals /migrate-component SearchBar React Vue met $0/$1/$2.

Kies welke past bij de vorm van je command. Hier is een werkend .md-bestand voor elk patroon.

Vier argumentpatronen voor Claude Code slash-commands: booleaanse vlag, waardenvlag, positioneel plus vlag en strikt positioneel, elk met voorbeeldsyntaxis

Patroon 1: Booleaanse Vlag (--dry-run)

Wanneer je CLI-vlag-UX wilt en de vlag gewoon aan/uit is, laat je het LLM die binnen $ARGUMENTS detecteren. Geen parselogica, geen positioneel gegoochel — beschrijf gewoon de regel in de prompt.

markdown
---
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`.

Typ /deploy --dry-run en het LLM ziet de vlag, drukt het plan af en stopt. Typ /deploy en het wordt verzonden. De harness deed nul parsing — het LLM deed al het werk, en dat is precies waar het goed in is.

Patroon 2: Waardenvlag (--filter <patroon>)

Zelfde idee, maar nu draagt de vlag een waarde. Het LLM leest --filter auth uit $ARGUMENTS en gebruikt de substring erna.

markdown
---
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 voert alleen de auth-tests uit. /test voert alles uit. Het LLM extraheert het patroon na --filter betrouwbaar omdat Claude goed is in dit soort gestructureerde tekstextractie — veel betrouwbaarder dan mensen verwachten.

Patroon 3: Verplicht Positioneel + Optionele Vlag

Dit is de hybride die we het meest gebruiken in onze eigen commandobibliotheek. $1 draagt het verplichte argument, $ARGUMENTS draagt alles (zodat het LLM nog steeds optionele vlaggen kan herkennen). Het is de schoonste mix wanneer één argument ononderhandelbaar is en de rest vrije context is.

markdown
---
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.

Aanroepen als /fix-issue 1234 --priority high the login form blanks the email field after a failed attempt. $1 wordt omgezet naar 1234. $ARGUMENTS wordt omgezet naar de volledige trailing string, die het LLM probleemloos parseert voor zowel de prioriteitsvlag als de vrije omschrijving.

We gebruiken deze exacte $1 + $ARGUMENTS-mix in ons /fix-issue-command — $1 voor het issuenummer, de rest voor vrije context die het LLM parseert. Het is het patroon geweest met de hoogste ROI over een jaar dagelijks Claude Code-gebruik.

Patroon 4: Strikt Positioneel (Getypeerd)

Wanneer elk argument verplicht is en de volgorde ertoe doet, laat je $ARGUMENTS volledig weg. Gebruik $0/$1/$2 (of benoemde argumenten via het frontmatterveld arguments:) voor ondubbelzinnige getypeerde slots.

markdown
---
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).

Aanroepen als /migrate-component SearchBar React Vue. De benoemde-argumentdeclaratie maakt zowel de autocomplete als de prompttekst zelfgedocumenteerd — iedereen die migrate-component.md leest, ziet in één oogopslag welk slot welk is. Dit patroon schittert voor commands met drie of meer verplichte argumenten. Je kunt deze stijl ook terugzien in communitybiblotheken zoals wshobson/commands op GitHub.

Booleaanse en waardenvlaggen werken omdat het LLM een flexibele parser is. Strikt positioneel werkt omdat er geen LLM-intelligentie nodig is. De twee combineren is het geheim.

Wanneer Gebruik Je $ARGUMENTS vs Positioneel vs Benoemd?

Gebruik $ARGUMENTS wanneer argumenten CLI-vlag-stijl zijn en je flexibele LLM-parsing wilt. Gebruik positionele $1/$2 wanneer argumenten getypeerd, geordend zijn en je nul LLM-ambiguïteit wilt. Gebruik benoemde arguments: wanneer er 3+ argumenten zijn en duidelijkheid in de autocomplete zwaarder weegt dan beknoptheid. De beslissingsmatrix:

GebruiksscenarioBeste keuzeSyntaxisVoordelenNadelenVoorbeeld
CLI-vlag-UX met optionele argumenten$ARGUMENTS$ARGUMENTS in bodyFlexibel, spiegelt Unix-UXLLM-side parsing, geen validatie/deploy --staging --dry-run
Getypeerde, geordende verplichte argumentenPositioneel $0/$1$0 $1 $2 in bodyNul ambiguïteit, snelGevoelig voor argumentvolgorde/migrate Button React Vue
3+ argumenten waarbij duidelijkheid belangrijk isBenoemd via arguments:arguments: [a, b, c] dan $a $b $cZelfgedocumenteerdUitgebreide frontmatter/issue 123 main high
Gemengd verplicht + optioneelHybride ($1 + $ARGUMENTS)$1 dan $ARGUMENTSHet beste van beideTwee mentale modellen in één bestand/fix-issue 123 --priority high

Beslisboom voor het kiezen tussen dollar-ARGUMENTS, positionele en benoemde argumentpatronen in Claude Code slash-commands

De impuls die de meeste ontwikkelaars hebben is $ARGUMENTS als eerste te pakken, omdat het het dichtst bij de bash-wereld staat die ze kennen. Dat is prima voor prototypes, maar getypeerd positioneel is echt beter wanneer het contract stabiel is. Het LLM hoeft $1 niet te parsen — het is al een schone string.

Een vuistregel: als je de signatuur van het command in één Engelse zin kunt beschrijven zonder de woorden "of" en "optioneel" te gebruiken, ga positioneel. Als je die woorden nodig hebt, ga $ARGUMENTS.

Zijn Slash-commands Nu Hetzelfde als Skills?

Anthropic heeft aangepaste commands in het voorjaar van 2026 samengevoegd met het bredere skills-systeem, maar .claude/commands/*.md-bestanden werken nog steeds en gebruiken dezelfde frontmatter. Een skill is een map (.claude/skills/foo/SKILL.md plus ondersteunende bestanden) met extra aanroepbesturing zoals disable-model-invocation. Een command is één enkel .md-bestand. Dezelfde substitutieregels, andere verpakking.

Het praktische verschil:

Aspect.claude/commands/foo.md.claude/skills/foo/
BestandsvormEnkel .md-bestandMap met SKILL.md + ondersteunende bestanden
Geschikt voorSnelle eenmalige commands, projectlokale automatiesHerbruikbare bundels met sjablonen, referenties, subbestanden
AanroepbesturingAlleen frontmatterFrontmatter + per-bestand disable-model-invocation
ArgumentafhandelingIdentiek ($ARGUMENTS, $1, benoemd)Identiek ($ARGUMENTS, $1, benoemd)

Bestandsboomvergelijking: een enkel .claude/commands/foo.md-bestand versus een .claude/skills/foo/-map met SKILL.md en ondersteunende bestanden

Dus nee, .claude/commands/ is niet verouderd. Anthropic heeft de bestandsvorm expliciet behouden toen ze de systemen samenvoegden — te veel projecten hebben commandobibliotheken vastgezet in versiebeheer. Als je ondersteunende bestanden wilt (zoals een CONTRIBUTING.md-referentie die je skill laadt, of een template.json die het kopieert), gebruik dan skills. Zo niet, blijf bij commands.

De samenvoeging maakt deel uit van een bredere beweging naar de open agentskills.io-standaard en is een van de v2.1.x-wijzigingen die het waard zijn te kennen — zie onze overzicht van Claude Code v2.1-functies voor het volledige functielandschap en onze skills-tutorial voor een diepere skills-walkthrough.

Waarom Substitueert Mijn $ARGUMENTS Niet? Veelvoorkomende Bugs Opgelost

Vijf veelvoorkomende redenen waarom $ARGUMENTS niet substitueert: (1) token in kleine letters of afkorting ($args, $ARGS, $arguments — moet letterlijk $ARGUMENTS zijn), (2) meerdere-woorden-argumenten niet geciteerd (/cmd hello world splitst; /cmd "hello world" houdt ze samen), (3) allowed-tools komma-gescheiden in plaats van spatie-gescheiden, (4) commandobestand niet in .claude/commands/ of .claude/skills/, (5) Claude Code-sessie moet herladen worden na het bewerken van het bestand.

$ARGUMENTS Verschijnt Letterlijk in de LLM-prompt

Symptoom: Je prompt toont $ARGUMENTS als platte tekst in de respons van het model, alsof de harness het negeerde. Oorzaak: Verkeerde hoofdlettering of verkeerde spelling. Het token is letterlijk $ARGUMENTS — acht tekens, alles in hoofdletters. Oplossing: Open de .md, grep naar $args, $ARGS, $arguments, ${ARGUMENTS}, vervang door $ARGUMENTS. De $args-tikfout heeft elk lid van ons team minstens één keer getroffen; het is de veelvoorkomendste bug in de "onbekend slash-command"-familie.

Meerdere-Woorden-Argument Splitst Onverwacht

Symptoom: Je voerde /migrate-component Search Bar React Vue in en $1 is Search, $2 is Bar. Oorzaak: Witruimte splitst positionele argumenten. Oplossing: Citeer het meerdere-woorden-argument: /migrate-component "Search Bar" React Vue. Nu is $1 Search Bar. Dit spiegelt shellgedrag, het mentale model dat de harness bewust nabootst.

allowed-tools Wordt Niet Gehonoreerd

Symptoom: Het command wordt uitgevoerd maar Claude weigert tools aan te roepen die je dacht te hebben gewhitelist, of roept tools aan die je niet hebt vermeld. Oorzaak: Komma-gescheiden in plaats van spatie-gescheiden. Oplossing: Verander allowed-tools: Bash, Read, Edit naar allowed-tools: Bash Read Edit. Voor tool-subpatronen, formatteer als Bash(git:*) Bash(npm:*) Read.

Command Verschijnt Niet in /-Autocomplete

Symptoom: Je typt / en je command staat niet in de lijst. Oorzaak: Bestandslocatie, ontbrekende frontmatter of disable-model-invocation onjuist ingesteld. Oplossing: Bevestig dat het bestand op .claude/commands/jouwcmd.md staat (of .claude/skills/jouwcmd/SKILL.md) relatief aan je projectroot. Bevestig dat de frontmatter minimaal een description:-veld heeft. Als je disable-model-invocation: true hebt ingesteld, zal het command niet zichtbaar zijn voor andere agents maar verschijnt het wel in het door mensen getypte /-menu.

Je Hebt het .md-Bestand Bewerkt maar Er Is Niets Veranderd

Symptoom: Je hebt de bug opgelost, het bestand opgeslagen, het command opnieuw uitgevoerd, hetzelfde kapotte gedrag. Oorzaak: Claude Code cachet commandobestanden bij sessiestart. Oplossing: Sluit Claude Code af en herstart het, of voer /reload uit als jouw versie dat ondersteunt.

Claude Code leest .md-bestanden bij sessiestart. Als je een command bewerkt en het "verandert niet", herstart dan je sessie voordat je een diepere bug aanneemt.

Voor randgevallen buiten deze vijf zijn de Claude Code repo-issues de beste plek om te zoeken. De meeste vreemde substitutiebugs die we hebben gezien zijn een variant van een van de bovenstaande.

FAQ: Claude Code Slash-command Argumenten

Hoe geef ik argumenten door aan een Claude Code slash-command?

Typ de argumentstring na de commandonaam: /greet World. Verwijs in het .md-bestand van je command naar de waarde als $ARGUMENTS (de volledige string), $1 (eerste positioneel), of $variabelenaam (als je arguments: [variabelenaam] in frontmatter hebt gedeclareerd). De harness vervangt het token voordat de prompt naar het LLM wordt gestuurd.

Wat is $ARGUMENTS in Claude Code?

$ARGUMENTS is een substitutietoken in aangepaste slash-commandbestanden dat de harness van Claude Code vervangt door de volledige argumentstring die de gebruiker na de commandonaam heeft getypt. Als een gebruiker /deploy --staging --dry-run uitvoert, wordt $ARGUMENTS de letterlijke string --staging --dry-run in de gerenderde prompt voordat het LLM die ooit te zien krijgt.

Kunnen Claude Code slash-commands CLI-stijl vlaggen aan zoals --json?

Niet van nature — de harness heeft geen vlagparser voor aangepaste commands. Je schrijft --json in $ARGUMENTS en je prompt instrueert het LLM het te detecteren en dienovereenkomstig te handelen. Dit werkt omdat Claude een flexibele parser is voor gestructureerde tekst. Ingebouwde commands zoals /clear en /help hebben wel echte vlaggen, maar aangepaste commands die jij schrijft leven volgens alleen-substitutie-regels.

Wat is het verschil tussen $1, $ARGUMENTS en $naam in Claude Code?

$1 is het eerste witruimtegescheiden positionele argument ($2 is het tweede, enzovoort). $ARGUMENTS is de volledige argumentstring letterlijk, inclusief alle positionele delen en eventuele vlaggen. $naam is een benoemd argument gedeclareerd in het frontmatterveld arguments: [naam] — handig wanneer je zelfgedocumenteerde positionele slots wilt zonder numerieke indexering.

Hoe werkt argument-hint in Claude Code?

argument-hint is een frontmatterveld dat bepaalt wat het /-autocompletemenu naast je commandonaam toont. argument-hint: <issue-number> [--priority high] instellen toont precies dat sjabloon nadat de gebruiker / typt. Het is alleen UX — het valideert of parseert geen argumenten. Toch de moeite waard om in te stellen, want het is de goedkoopste documentatie die je ooit zult schrijven.

Hoe maak ik een aangepast slash-command met meerdere argumenten?

Twee schone opties. Voor positioneel: verwijs naar $1, $2, $3 in je prompttekst. Voor benoemd: declareer arguments: [eerste, tweede, derde] in frontmatter en verwijs naar $eerste, $tweede, $derde. Benoemd is leesbaarder bij drie of meer argumenten. Gebruik $ARGUMENTS alleen wanneer je wilt dat het LLM een vrije trailing string na de verplichte positionele slots parseert.

Is .claude/commands/ verouderd ten gunste van .claude/skills/?

Nee. Anthropic heeft de twee systemen in het voorjaar van 2026 samengevoegd maar .claude/commands/*.md expliciet behouden met identieke substitutieregels. Gebruik commands voor enkelvoudige bestandsautomaties en skills voor meerdere-bestandsbundels (SKILL.md plus sjablonen of referenties). Dezelfde frontmatter, hetzelfde $ARGUMENTS-gedrag, andere verpakking. Beide zijn volledig ondersteund vanaf v2.1.126.

Waarom substitueert $ARGUMENTS niet in mijn command?

Drie hoofdoorzaken, op volgorde van frequentie: hoofdletterfout (moet hoofdletters $ARGUMENTS zijn, niet $args of $arguments), verkeerde bestandslocatie (moet in .claude/commands/ of .claude/skills/ staan), of verouderde sessie (Claude Code leest commandobestanden bij sessiestart, dus herstart na bewerken). Als alle drie kloppen, voer dan /echo-args foo uit met het minimale voorbeeld uit H2 #1 om het probleem te isoleren.

Kan ik bepaalde argumenten verplicht stellen?

Niet op harnesniveau — er is geen native verplicht-argument-validatie. Het patroon is om het LLM te instrueren in je prompt: "Als $1 leeg is, stop dan en vertel de gebruiker een issuenummer op te geven." Het model handhaaft het contract. Het is niet onfeilbaar, maar in de praktijk betrouwbaar genoeg voor dagelijks gebruik, zeker in combinatie met een duidelijke argument-hint.

Overschrijft model: in frontmatter CLI-vlaggen?

Ja — frontmatter wint. Als je commandobestand model: claude-haiku-4 declareert, wordt dat command op Haiku uitgevoerd ongeacht welk model de gebruiker voor de sessie heeft geselecteerd. Dit is handig voor goedkope, frequent aangeroepen commands die je van Opus af wilt houden. Zie onze gids over Claude-modellen wisselen voor het kiezen van de juiste variant per commandtype.

Afsluiting

Vier patronen. Kies het patroon dat past bij de vorm van je command:

  • Booleaanse vlag (--dry-run) — schrijf het in $ARGUMENTS, laat het LLM het detecteren.
  • Waardenvlag (--filter <patroon>) — zelfde aanpak, het LLM extraheert de waarde.
  • Verplicht positioneel + optionele vlag$1 voor het verplichte, $ARGUMENTS voor de rest.
  • Strikt positioneel$0/$1/$2 (of benoemd via arguments:) wanneer elk slot verplicht en geordend is.

Nu je commands parametrisch zijn, is de volgende stap ze in agentworkflows koppelen — begin met onze Claude Skills-tutorial voor de meerdere-bestandsverpakkingsupgrade, of bekijk alternatieve AI-codeertools als je harnessen vergelijkt. Hoe dan ook, je .claude/commands/-map is net een stuk nuttiger geworden.

Tags

claude-codeslash-commandsclaude-skillsdeveloper-toolsclaude-code-argumenten

Dit artikel delen

Start je project

Klaar om iets buitengewoons te bouwen?

Laten we je idee werkelijkheid maken. Ons team staat klaar om software te bouwen die het verschil maakt.