🔍

smsak.be/Claude-masterclass/Deel 12

Claude Code gevorderd

Skills en plugins, permissies en hooks, subagenten, en Claude Code in je team en CI.

Deel 12 van 12 § 69–72 · 4 secties Laatst nagekeken op
§ 69 — Claude Code gevorderd

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.

ℹ️
Custom commands zijn skills geworden Had je vroeger .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?

LocatieGeldt voorTypisch gebruik
.claude/skills/ in je projectAlleen dit project — staat mee in gitDeploy-procedure, review-checklist van dit team
~/.claude/skills/Al jouw projectenJe persoonlijke schrijfstijl, je vaste werkwijze
Plugin uit een marketplaceIedereen die de plugin installeertSkills delen over teams heen

Een skill in drie minuten

.claude/skills/offerte/SKILL.mdMarkdown
---
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

SkillWaarvoor
/code-reviewJe diff of een PR nakijken op bugs; --fix herstelt meteen
/deep-researchMeerdere websearches parallel + één rapport met bronvermelding
/batchÉén instructie parallel toepassen over een hele codebase
/datavizOntwerpregels voor grafieken en dashboards
/doctorJe setup doorlichten en problemen herstellen
/loopEen opdracht herhaaldelijk uitvoeren op een interval
/claude-apiActuele Claude-API-referentie laden bij het bouwen van AI-software

Plugins: skills, hooks en agenten in één pakket

In een Claude Code-sessieSlash
/plugin                        # plugins beheren
/plugin marketplace add anthropics/skills
/plugin install code-review@claude-plugins-official
/reload-plugins                # na een wijziging
🛑
Lees altijd eerst wat je installeert Een skill of plugin kan commando’s uitvoeren op jouw machine. Installeer alleen uit bronnen die je vertrouwt en bekijk de SKILL.md en de hooks vóór je hem inschakelt — net zoals je een npm-package zou beoordelen.
§ 70 — Claude Code gevorderd

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

ModusWat er gebeurtWanneer
defaultVraagt bij elke wijzigingNieuw project, onbekende codebase
planAlleen lezen en plannen — niets wordt gewijzigdVerkennen, of vóór een grote wijziging
acceptEditsBestandsbewerkingen mogen, commando’s nietJe vertrouwt de richting, maar niet blind
bypassPermissionsAlles mag, zonder vragenAlleen in een container of wegwerp-omgeving
TerminalBash
# 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 *)"
💡
Laat Claude je allowlist schrijven /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.

Een hook draait voor en na elke tool-actie van Claude Claude wil een bestand bewerken PreToolUse hook — mag dit? Actie bestand wordt bewerkt PostToolUse hook — formatteer kan blokkeren prettier · eslint · tests Een hook is deterministisch: hij draait altijd, of het model er nu aan denkt of niet.
Hooks zijn harde garanties. Wil je dat er ná elke bewerking geformatteerd wordt? Zet het in een PostToolUse-hook in plaats van het in CLAUDE.md te vrágen.
.claude/settings.jsonJSON
{
  "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-permissions op je eigen machine met echte data — alleen in een container
  • Geheimen in .env, nooit in de code, en .env in .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-usd en --max-turns
§ 71 — Claude Code gevorderd

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

✅ Wel uitbesteden
  • 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
❌ Niet uitbesteden
  • Éé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

Terminal / sessieBash
# 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.

🤖 Zoek-en-verifieer
Stap 1 — stuur vier subagenten uit, elk met een eigen invalshoek: correctheid, beveiliging, performance, ontbrekende tests. Stap 2 — laat voor elke bevinding een aparte agent proberen ze te WEERLEGGEN. Bij twijfel geldt de bevinding als weerlegd. Stap 3 — rapporteer alleen wat de weerleggingspoging overleefde, met bestand en regelnummer erbij.

Achtergrondagenten en teams

CommandoWat het doet
claude --bg "…"Start een sessie op de achtergrond en geeft je prompt meteen terug
claude agentsAlle parallelle sessies in één scherm opvolgen
/forkHet huidige gesprek kopiëren naar een achtergrondsessie
/branchEen tak in het gesprek maken om een alternatief te proberen
claude respawn <id>Een achtergrondsessie herstarten met het gesprek intact
⚠️
Parallel werk raakt dezelfde bestanden Laat je meerdere agenten tegelijk code aanpassen, geef ze dan elk een eigen git-worktree of branch. Anders overschrijven ze elkaars werk en is achteraf niet te achterhalen wie wat deed.
💸
Wat het kost Elke subagent is een volwaardige sessie met eigen tokenverbruik. Tien subagenten betekent ruwweg tien keer de kost. Zet daarom goedkope modellen (Haiku 4.5, of Sonnet 5 met --effort low) in voor mechanisch zoekwerk en hou Opus 5 voor het denkwerk.
§ 72 — Claude Code gevorderd

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 PRGitHub Code Review / GitHub Actions
Bugmeldingen uit Slack omzetten in een PRDe Slack-integratie — /install-slack-app
Issues automatisch triërenGitHub Actions of GitLab CI/CD
Elke ochtend een rapportRoutines (/schedule) — draaien in de cloud
Een lange taak starten en later terugkomenclaude --cloud, opvolgen in de Claude-app
Vanaf mijn gsm meesturen/remote-control of Dispatch
Een live webapp debuggenDe Chrome-integratie: claude --chrome
Mijn eigen agent bouwenDe Agent SDK

Claude Code in CI

.github/workflows/review.ymlYAML
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 }}
🔑
Authenticatie in CI In een pipeline heb je geen browser om mee in te loggen. Gebruik daarom een API-key als GitHub-secret, of genereer met 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 appClaude API (messages.create)
Een agent met jóûw tools, zonder de lus te schrijvenClaude API + tool runner
Een codeer-/bestandsagent op je eigen infrastructuurAgent SDK
Een agent die Anthropic draait en hostManaged Agents
📘
Meer weten? De officiële documentatie staat op code.claude.com/docs. Werk je aan software die de Claude-API aanroept, laad dan in je sessie /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.

Van SMSAK

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.