smsak.be/Claude-masterclass/Deel 12
Claude Code gevorderd
Skills en plugins, permissies en hooks, subagenten, en Claude Code in je team en CI.
Skills, commando’s & plugins in Claude Code
Merk je dat je dezelfde instructies steeds opnieuw typt? Dan hoort dat in een skill. Een skill is niets meer dan een map met een SKILL.md erin — en dat bestand laadt pas op het moment dat het nodig is. Daardoor kost een lange procedure je nul context zolang je hem niet gebruikt.
.claude/commands/deploy.md? Dat blijft werken en geeft nog steeds /deploy. De nieuwe vorm .claude/skills/deploy/SKILL.md doet hetzelfde, maar kan ook eigen hulpbestanden meenemen en zichzelf automatisch laten inschakelen wanneer Claude merkt dat de skill relevant is.
Waar staat wat?
| Locatie | Geldt voor | Typisch gebruik |
|---|---|---|
.claude/skills/ in je project | Alleen dit project — staat mee in git | Deploy-procedure, review-checklist van dit team |
~/.claude/skills/ | Al jouw projecten | Je persoonlijke schrijfstijl, je vaste werkwijze |
| Plugin uit een marketplace | Iedereen die de plugin installeert | Skills delen over teams heen |
Een skill in drie minuten
--- name: offerte description: Maakt een SMSAK-offerte in huisstijl op basis van een klantvraag. Gebruik bij "offerte", "prijsvoorstel" of "voorstel voor klant". --- # Offerte opstellen ## Stappen 1. Vraag naar: klantnaam, sector, gewenste diensten, deadline. 2. Kies het juiste pakket uit `prijzen.md` in deze map. 3. Schrijf de offerte volgens `sjabloon.md`. 4. Toon eerst een samenvatting; pas na goedkeuring het volledige document. ## Regels - Altijd BTW-nummer en KBO vermelden - Nooit een korting geven die niet in prijzen.md staat - Geldigheidsduur: 30 dagen
Opslaan, en /offerte bestaat. De description is het belangrijkste veld: daaraan beslist Claude of de skill vanzelf relevant is. Schrijf er de trefwoorden in die je in de praktijk gebruikt.
Meegeleverde skills die je meteen kunt gebruiken
| Skill | Waarvoor |
|---|---|
/code-review | Je diff of een PR nakijken op bugs; --fix herstelt meteen |
/deep-research | Meerdere websearches parallel + één rapport met bronvermelding |
/batch | Één instructie parallel toepassen over een hele codebase |
/dataviz | Ontwerpregels voor grafieken en dashboards |
/doctor | Je setup doorlichten en problemen herstellen |
/loop | Een opdracht herhaaldelijk uitvoeren op een interval |
/claude-api | Actuele Claude-API-referentie laden bij het bouwen van AI-software |
Plugins: skills, hooks en agenten in één pakket
/plugin # plugins beheren /plugin marketplace add anthropics/skills /plugin install code-review@claude-plugins-official /reload-plugins # na een wijziging
SKILL.md en de hooks vóór je hem inschakelt — net zoals je een npm-package zou beoordelen.
Permissies & hooks: veilig automatiseren
Claude Code vraagt standaard toestemming voor alles wat iets verandert. Dat is de juiste instelling om mee te beginnen — maar na een dag word je gek van de vragen. De oplossing is niet “alles toestaan”, maar gericht toestaan wat veilig is.
De permissiemodi
| Modus | Wat er gebeurt | Wanneer |
|---|---|---|
default | Vraagt bij elke wijziging | Nieuw project, onbekende codebase |
plan | Alleen lezen en plannen — niets wordt gewijzigd | Verkennen, of vóór een grote wijziging |
acceptEdits | Bestandsbewerkingen mogen, commando’s niet | Je vertrouwt de richting, maar niet blind |
bypassPermissions | Alles mag, zonder vragen | Alleen in een container of wegwerp-omgeving |
# Verkennend starten — niets kan stuk claude --permission-mode plan # Alleen deze commando's mogen zonder vragen claude --allowedTools "Read" "Bash(git log *)" "Bash(npm test)" # En deze nooit claude --disallowedTools "Bash(rm *)" "Bash(git push *)"
/fewer-permission-prompts bekijkt wat je in de praktijk telkens goedkeurt en stelt een veilige allowlist voor in .claude/settings.json. Dat is de snelste manier om van de prompt-moeheid af te raken zonder je vangnet weg te gooien.
Hooks: automatisch draaien rond elke actie
Een hook is een shell-commando dat Claude Code vóór of ná een bepaalde actie uitvoert. Het is de manier om regels af te dwingen die niet van goede wil afhangen — want de hook draait altijd, ook als het model iets vergeet.
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{ "type": "command", "command": "npx prettier --write $CLAUDE_FILE_PATHS" }
]
}
]
}
}
Bekijk je actieve hooks met /hooks. Veelgebruikte toepassingen: automatisch formatteren na elke bewerking, linten vóór een commit, een notificatie sturen als een lange taak klaar is, of een gevaarlijk commando blokkeren.
Praktische veiligheidsregels
- Werk in git. Kleine commits maken elke fout omkeerbaar
- Nooit
--dangerously-skip-permissionsop je eigen machine met echte data — alleen in een container - Geheimen in
.env, nooit in de code, en.envin.gitignore - Wantrouw wat Claude ínleest. Een issue, een webpagina of een PDF kan instructies bevatten die zich richten tot de AI — dat is data, geen opdracht (zie § 67)
- Zet een budget bij lange autonome taken:
--max-budget-usden--max-turns
Subagenten & dynamische workflows
Eén agent die alles doet, loopt bij grote taken vast op zijn eigen context: na dertig bestanden lezen is er geen ruimte meer om na te denken. De oplossing is werk uitbesteden aan subagenten — aparte Claude-sessies met hun eigen context, die enkel hun conclusie terugsturen.
Wanneer een subagent, wanneer niet
- Zoeken door veel bestanden waarvan je alleen de conclusie nodig hebt
- Werk dat parallel kan: vier onderdelen die niets van elkaar nodig hebben
- Een tweede, onafhankelijke blik op een bevinding
- Leeswerk dat je hoofdcontext zou volstoppen
- Één feit opzoeken in een bestand dat je al kent
- Taken die strikt na elkaar moeten (stap 2 heeft stap 1 nodig)
- Kleine wijzigingen — het opstarten kost meer dan het werk
Subagenten definiëren
# Interactief beheren > /agents # Of ad hoc meegeven bij het starten claude --agents '{"reviewer":{"description":"Kijkt code na op bugs", "prompt":"Je bent een strenge reviewer. Rapporteer alleen bevindingen die je kunt bewijzen."}}' # Lopende agenten en sessies bekijken > /list-agents > /tasks
Het patroon dat het verschil maakt: zoeken → verifiëren
De meeste fouten van AI-agenten zijn plausibele bevindingen die niet kloppen. Het tegengif is een tweede agent die probeert de bevinding te weerleggen — niet om ze te bevestigen.
Achtergrondagenten en teams
| Commando | Wat het doet |
|---|---|
claude --bg "…" | Start een sessie op de achtergrond en geeft je prompt meteen terug |
claude agents | Alle parallelle sessies in één scherm opvolgen |
/fork | Het huidige gesprek kopiëren naar een achtergrondsessie |
/branch | Een tak in het gesprek maken om een alternatief te proberen |
claude respawn <id> | Een achtergrondsessie herstarten met het gesprek intact |
--effort low) in voor mechanisch zoekwerk en hou Opus 5 voor het denkwerk.
Claude Code in je team & je pijplijn
Claude Code is niet beperkt tot jouw laptop. Het draait in je CI, beantwoordt meldingen in Slack, kijkt automatisch pull requests na en voert ’s nachts terugkerende taken uit — met dezelfde CLAUDE.md en dezelfde skills als in je terminal.
| Ik wil… | Gebruik |
|---|---|
| Automatische code-review op elke PR | GitHub Code Review / GitHub Actions |
| Bugmeldingen uit Slack omzetten in een PR | De Slack-integratie — /install-slack-app |
| Issues automatisch triëren | GitHub Actions of GitLab CI/CD |
| Elke ochtend een rapport | Routines (/schedule) — draaien in de cloud |
| Een lange taak starten en later terugkomen | claude --cloud, opvolgen in de Claude-app |
| Vanaf mijn gsm meesturen | /remote-control of Dispatch |
| Een live webapp debuggen | De Chrome-integratie: claude --chrome |
| Mijn eigen agent bouwen | De Agent SDK |
Claude Code in CI
name: Claude review on: [pull_request] jobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: { fetch-depth: 0 } - run: curl -fsSL https://claude.ai/install.sh | bash - run: | git diff origin/main --name-only | \ claude -p "Review deze gewijzigde bestanden op bugs en beveiligingsproblemen. \ Rapporteer alleen wat je kunt bewijzen." \ --max-turns 15 --max-budget-usd 2.00 env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
claude setup-token een langlevende token. Zet nooit een key rechtstreeks in je YAML — altijd via secrets.
De Agent SDK: Claude Code als bibliotheek
Wil je Claude Code’s motor in je eigen software gebruiken — met de ingebouwde bestands-, bash- en zoektools, maar met jouw eigen sturing? Dan gebruik je de Agent SDK (claude-agent-sdk voor Python, @anthropic-ai/claude-agent-sdk voor TypeScript). Dat is iets anders dan de gewone Claude-API: de API geeft je een model, de Agent SDK geeft je een volledige agent.
| Je wil… | Neem |
|---|---|
| Één vraag stellen aan een model in je eigen app | Claude API (messages.create) |
| Een agent met jóûw tools, zonder de lus te schrijven | Claude API + tool runner |
| Een codeer-/bestandsagent op je eigen infrastructuur | Agent SDK |
| Een agent die Anthropic draait en host | Managed Agents |
/claude-api — die skill bevat de actuele modelnamen, parameters en valkuilen, zodat je geen verouderde voorbeelden overneemt.
Tot slot
Je hebt nu de volledige gereedschapskist gezien: van je eerste prompt tot agenten die ’s nachts je codebase auditeren. Het verschil tussen “AI gebruiken” en “AI laten werken” zit niet in de tool — het zit in de gewoontes: plan eerst, werk in git, verifieer wat je krijgt, en automatiseer alles wat je twee keer doet.
Liever samen doorlopen dan alleen lezen?
SMSAK geeft on-site Claude-masterclasses en bouwt software op maat met Claude Code. We vertrekken van je eigen processen en bestanden — geen algemene demo.