Skill, subagent, hook of slash command? Kies de juiste
7m leestijd

Skill, subagent, hook of slash command? Kies de juiste

Claude Code geeft je nu zeven manieren om het te sturen, en de meeste mensen grijpen naar de verkeerde. Dezelfde taak op vier manieren gebouwd, en een beslisboom die echt werkt.

bewijsClaude Code 2.1.17220 juni 2026
getest op
Claude Code 2.1.172
gecontroleerd
20 juni 2026

Kies je tussen een slash command, een skill, een subagent en een hook: een slash command is een herbruikbare prompt die je zelf aanroept, een skill is een procedure met echte domeinlogica of hulpbestanden erachter, een subagent is werk waarvan de tussenstappen je thread alleen maar vervuilen, en een hook is wat elke keer moet gebeuren, afgedwongen door code in plaats van door goede wil. CLAUDE.md is voor feiten en conventies, de context die altijd meelaadt, en daar horen garanties niet thuis. Alles draait om twee assen: of het gegarandeerd moet zijn, en of het een eigen context nodig heeft.

Claude Code geeft je nu zeven manieren om zijn gedrag te veranderen. CLAUDE.md, rules, skills, subagents, hooks, output styles, en de systeemprompt aanvullen. Anthropic zette ze allemaal op een rij in een post genaamd Steering Claude Code, en dat is een echt bruikbaar overzicht.

De meeste van die zeven kwamen binnen een paar maanden. De releasenotes uit Londen laten zien in welke volgorde ze verschenen, als je de chronologie achter dat overzicht zoekt.

Die post bevestigt ook stilletjes een probleem dat ik in vrijwel elke .claude-map van een team zie: mensen hebben alle zeven lagen en grijpen bijna elke keer naar de verkeerde. Een harde grens die als een beleefde regel in CLAUDE.md staat. Een eenmalige prompt-template gepromoveerd tot volwaardige skill. Een zoektaak die de hoofd-thread verstopt en een subagent had moeten zijn.

De features zijn niet het lastige. Het kiezen ertussen wel. Daarom bouw ik hieronder dezelfde taak op vier manieren, met de regel die daaruit volgt.

Eén taak, vier mechanismen ​

De taak: als ik klaar ben, moet de code geformatteerd zijn en de testsuite slagen voordat iets "af" mag heten.

Let op hoe verschillend de vier implementaties zijn, want dat verschil is de les.

Als slash command. Je schrijft een prompt-template in .claude/commands/wrap-up.md die zegt "formatteer de gewijzigde bestanden, draai de tests, en vat samen wat faalde". Je typt /wrap-up wanneer je het wil. Het is een opgeslagen prompt, meer niet. Het model leest hem en doet het waarschijnlijk. Waarschijnlijk.

Als skill. Je bouwt een release-check-skill met een SKILL.md plus een helper-script dat de package-indeling van je monorepo kent, weet welke testgroepen bij welke gewijzigde paden horen, en hoe je de coverage-output leest. Claude laadt de skill op naam als het werk erbij past, draait de procedure in de hoofd-thread waar je kunt meekijken en bijsturen, en trekt de helper-bestanden er pas bij als het nodig is. Dit verdient zijn plek wanneer de procedure echte logica heeft, niet alleen instructies.

Als subagent. Je definieert een test-analyst-subagent. Als de suite faalt, geef je hem de hele berg foutmeldingen en hij ploegt zich door de logs in zijn eigen context, en geeft drie regels samenvatting terug in plaats van 4.000 regels stacktraces in je sessie te dumpen. Het is isolatie: de rommel blijft in een andere kamer en alleen de conclusie komt terug.

Als hook. Je voegt een Stop-hook toe in settings.json die de formatter en het testcommando draait. Niet wanneer het model er zin in heeft. Elke keer dat de beurt probeert te eindigen. Falen de tests, dan zegt de hook dat, en mag het werk zichzelf niet "af" noemen.

Hetzelfde doel. Vier totaal verschillende tools. Merk op dat de slash command en de hook oppervlakkig op elkaar lijken (allebei "draai de checks") en juist tegenpolen zijn op het enige punt dat telt: de een vraagt, de ander dwingt af.

De regel die eruit volgt ​

Haal het detail weg en de keuze gaat over twee assen: moet het gegarandeerd zijn, en heeft het zijn eigen context nodig.

MechanismeGrijp ernaar wanneerHet herkenningspunt
Slash commandJe een herbruikbare prompt wil die je met de hand start"Ik typ steeds dezelfde alinea naar Claude"
SkillEr echte domeinlogica of helper-bestanden achter de procedure zitten"Dit heeft een script en wat projectkennis nodig, niet alleen woorden"
SubagentHet werk geïsoleerd is en de tussenoutput de thread zou verstoppen"Het gaat me alleen om het antwoord, niet om de 90 stappen ernaartoe"
HookHet elke keer moet gebeuren, afgedwongen door code, niet door goede wil"Elke keer als X, altijd Y"

Met die laatste rij gaan mensen het vaakst de mist in. Schrijf je ooit "altijd" of "nooit" in een CLAUDE.md, dan heb je een hook gevonden. Een prompt-instructie is een suggestie die het model meestal wel opvolgt, maar niet gegarandeerd, en dat is precies het argument dat ik aanvoerde in de hooks-gids: als iets gegarandeerd moet zijn, kan het niet in een prompt staan. CLAUDE.md is voor feiten en conventies, de altijd geladen context die ik behandelde in het CLAUDE.md-stuk. Garanties horen er niet thuis.

Mensen struikelen ook over de grens tussen skill en subagent. Allebei bundelen ze een procedure. Het verschil is zichtbaarheid. Een skill draait in je hoofd-thread omdat je hem wil zien en bijsturen. Een subagent draait ergens anders omdat je dat juist niet wil, je wil alleen de samenvatting. Is de tussenoutput signaal, gebruik een skill. Is het ruis, gebruik een subagent. Hoe je een goede Claude Code-subagent schrijft is een post op zich.

Wat er in juni veranderde, en waarom dat hier uitmaakt ​

Twee updates deze maand maakten twee van deze tools scherper, en ze sluiten netjes aan op de regel hierboven.

Hooks kregen hersens. Sinds de changelog van half juni kunnen Stop- en SubagentStop-hooks hookSpecificOutput.additionalContext teruggeven om Claude informatie mee te geven en de beurt door te laten lopen, in plaats van alleen hard te kunnen blokkeren met een fout. Dus de wrap-up-hook hierboven kan nu meer dan "tests faalden, ik stop". Hij kan de fout teruggeven als context en het model nog een poging laten doen. De hook is geen bakstenen muur meer, maar een scheidsrechter die ook kan praten.

Subagents kregen diepte. Sinds versie 2.1.172 kan een subagent zijn eigen subagents opstarten, tot vijf niveaus diep, waarbij foreground-ketens nu dezelfde limiet respecteren als background-ketens. Dat maakt het geval "geïsoleerd parallel werk" een stuk sterker. Je test-analyst kan uitwaaieren naar één sub-subagent per falende module en de resultaten samenvoegen, zonder dat ook maar één stacktrace je hoofdvenster raakt.

Beide veranderingen trekken dezelfde kant op. Hooks werden een betere afdwinger. Subagents werden een betere isolator. Geen van beide werd beter in het werk van de ander, en juist daarom klopt de beslisboom nog steeds. Meer diepte verandert niet waar een tool voor dient.

Waar het in de praktijk misgaat ​

Zo gaat het echt. Iemand ontdekt skills, raakt enthousiast, en maakt overal een skill van, inclusief de harde grenzen die hooks hadden moeten zijn en de wegwerp-prompts die slash commands hadden moeten zijn. Een half jaar later is hun .claude-map een museum van half overlappende mechanismen dat niemand meer kan overzien, en de ene regel die echt elke keer moest gelden is een beleefd geformuleerde zin in CLAUDE.md die het model één run op de twintig negeert.

De kracht zat nooit in het hebben van zeven lagen. Hij zit in het kiezen van het mechanisme dat bij de klus past, dezelfde discipline waar ik op terugkom in het beste uit Claude Code halen. Meer lagen betekent alleen meer manieren om verkeerd te kiezen.

Dus voordat je de volgende slimme skill bouwt, stel je de twee vragen. Moet dit gegarandeerd zijn? Dan is het een hook. Heeft dit zijn eigen context nodig? Dan is het een subagent. Is het gewoon een prompt die je steeds opnieuw typt? Dan is het een slash command, en het was nooit een skill.

Meestal heb je niet de meest geavanceerde tool nodig. Je hebt degene nodig die bij het werk past.

(11 van 41)
1Mijn Claude Code-setup: status line, plugins en terminal2Superpowers: hoe je Claude Code leert eerst te denken3Claude Code-hooks: deterministische controle over AI-workflows4Het CLAUDE.md-bestand: geef je AI permanent geheugen5Stop met vriendelijk vragen aan je agent6Wat er nieuw is in Claude Code: notities van het Londen-event7Het beste cijfer in Opus 4.8 is geen benchmark8Verouderd geheugen is erger dan geen geheugen9De agent is gewoon een loop10Bouw een MCP-server, en vraag je dan af of die moet bestaan11Skill, subagent, hook of slash command? Kies de juiste12Inloggen op MCP-servers vanuit je shell13Claude veilig toegang geven tot je SQL-database14De dag dat 'default' ineens 'Manual' heette15Claude Code-skills: zo schrijf je er een die werkt16Een goede Claude Code-subagent schrijven17Claude Code permissions instellen: de gids die ik miste18Claude Code sandboxen: toestemming is geen muur19Prompt injection voorkomen: verdediging voor wie agents bouwt20Het beste Claude-model voor code: welk model voor welke taak21Legacy code refactoren met AI: begin met characterization tests22Je MCP-server beveiligen: authenticatie, scopes en rate limits23Opus 5 is er, en je effort-instellingen kloppen niet meer24Incident response voor AI-agents: wat je doet als je coding agent de fout in gaat25Claude Code /doctor: wat het command controleert en repareert26Context beheren in Claude Code: wanneer /clear en wanneer /compact27Git worktrees uitgelegd: parallel werken met AI-agents zonder botsingen28Claude Code plan mode: beslissen voordat de agent schrijft29Debuggen met een coding agent: geef hem het zoekwerk, de hypothese houd je zelf30Claude Code checkpoints en /rewind: wijzigingen van je agent terugdraaien31Claude Code cross-session messaging: sessies die elkaar berichten sturen32Audit logging voor AI-agents: wat Claude Code vastlegt en wanneer je iemand wakker belt33Claude Code-config delen met je team: wat de repo wel en niet afdwingt34Je Claude Code-sessie heeft geen klok35Claude Code in een grote codebase: de agent afbakenen tot wat ertoe doet36Een Claude Code-sessie terughalen die de resume-picker niet laat zien37Waar Claude Code zijn tijd aan kwijt is: een maand eigen sessies gemeten38Claude Code bijsturen tijdens het werk: Esc, de wachtrij en /btw39Claude Code auto mode: waarom je allow-regel voor Agent niets doet40Claude Code Superpowers: wat subagent-driven development aan tokens kost41Claude read-only toegang geven tot je database: rol, flag en Azure zonder wachtwoord