Cursus
Elke terugkerende Claude Code-taak heeft dezelfde prijs. Denk aan een nachtelijke PR-review, een wekelijkse dependency-audit of een check van de documentatie vóór een release. Voor elk daarvan moet je achter de terminal zitten met een actieve sessie om het te zien lopen. Klap je laptop dicht, dan wacht het werk op je.
Routines halen die kosten weg.
Een routine draait Claude Code in de cloud op door Anthropic beheerde infrastructuur, zodat het blijft werken wanneer je laptop dicht is. Je schrijft de taak één keer, wijst ’m op je repositories, en hij wordt gestart op basis van een schema of event, zonder dat er een sessie open hoeft te staan.
Deze tutorial leidt je stap voor stap door het bouwen van je eerste routine. Je maakt een geplande routine, bekijkt hoe hij draait en breidt hem daarna uit met meer scope en mogelijkheden.
Wil je dieper gaan, dan behandelt onze praktijkgerichte cursus Claude Code in Action alles van contextbeheer en planmodus tot custom commands, MCP-servers, hooks en de SDK.
Wat zijn Claude Code-routines?
Een routine is een opgeslagen Claude Code-configuratie: een prompt, één of meer repositories en een set connectors. Je verpakt het één keer, en het draait automatisch op door Anthropic beheerde cloudinfrastructuur.
De drie onderdelen hebben elk een eigen taak:
- Prompt. Het belangrijkst, omdat de routine zonder jouw goedkeuring per stap draait. De prompt moet de hele taak en de definitie van klaar bevatten.
- Repositories. Claude kloont deze aan het begin van elke run en doet het werk daarin.
- Connectors. De claude.ai-integraties op jouw account, zoals Slack of Linear, waaruit de routine kan lezen en waarnaar hij kan schrijven tijdens een run. Een routine die support triaget, kan bijvoorbeeld een Slack-kanaal lezen en issues aanmaken in Linear.
Connectors voor routines voeg je toe op het claude.ai-platform, en hetzelfde geldt voor MCP-servers. Je lokale configs worden niet overgenomen.

Een routine kan op drie manieren worden gestart: op schema, via een API-call of via een GitHub-event. Eén enkele routine kan alle drie combineren.
Routines versus /loop
Er is een verschil tussen /loop en /schedule omdat ze verschillende problemen oplossen.
Een /loop-taak leeft in je huidige sessie. Hij vuurt alleen af terwijl Claude Code op je machine draait en idle is, en het sluiten van de terminal stopt hem. Dat maakt het geschikt om te poll-en op een build die je nu aan het volgen bent.
Voor meer informatie over /loop en andere belangrijke commands raad ik onze tutorial Claude Code Terminal aan.
Een routine draait in de cloud en blijft onafhankelijk van elke sessie bestaann:
|
|
Cloud-routine |
|
|
Draait op |
Anthropic-cloud |
Jouw machine |
|
Machine vereist |
Nee |
Ja |
|
Sessie vereist |
Nee |
Ja |
|
Minimuminterval |
1 uur |
1 minuut |
Er is ook een derde, lokale optie. Geplande desktop-taken draaien op je eigen computer, voor werk dat je lokale bestanden en tools nodig heeft. Ze draaien alleen terwijl de machine actief is, maar vereisen niet dat de Claude-app openstaat.
De routine die we gaan bouwen
Het mentale model staat. Nu heb je iets nodig waarop een routine kan werken. Voor deze tutorial hebben we het pr-review-demo-repo gebouwd: een klein Python-project met één open pull request.
Het bevat een cartlib-package dat een winkelwagen afhandelt: het slaat prijzen op als gehele centbedragen, past leden- en volumekortingen toe en telt staatsbelasting erbij voor het eindbedrag. Het package op de main-branch is correct.
Het open pull request voegt een gratis-verzendcoupon toe en bevat een echte bug die we expres hebben ingebouwd. Het is een fout met verschillende eenheden over bestanden heen, onzichtbaar in één enkel bestand en alleen zichtbaar als je de waarde over twee bestanden heen volgt. Zo heeft de routine iets echts te doen voor de rest van de tutorial.
Fork het repo om mee te doen met je eigen kopie. Het is wegwerpbaar en de patronen zijn overdraagbaar naar elke repository waar je een routine op richt.
Vereisten om mee te doen
Je hebt een claude.ai-account nodig met een Pro-, Max-, Team- of Enterprise-abonnement en Claude Code op het web ingeschakeld. Routines vind je op claude.ai/code/routines.
Het /schedule-commando authenticeert met je claude.ai-inlog voor je abonnement, niet met een Anthropic API-sleutel of Bedrock-, Vertex- of Foundry-auth. Er is ook een recente CLI nodig, dus voer claude update uit als de jouwe oud is.
Er zijn ook twee aparte GitHub-vereisten. Ten eerste verleent /web-setup kloontoegang, die de geplande routine nodig heeft. Ten tweede zorgt de apart geïnstalleerde Claude GitHub App voor de GitHub-trigger die later aan bod komt.
Claude Code-routines bouwen met /schedule
Met een repo om op te richten, bouw je de routine vanuit de CLI. Voer /schedule uit in elke sessie. Je kunt direct een beschrijving meegeven:
/schedule daily PR review at 9 am
Claude loopt daarna de velden langs die het webformulier ook verzamelt: naam, prompt, repository, environment, connectors en schema. Het bevestigt het schema in jouw lokale tijdzone en zet het voor je om, zodat 9 uur ’s ochtends de juiste cron-expressie wordt zonder dat jij die hoeft te schrijven.

Als je account nog geen GitHub-verbinding heeft, vraagt Claude je om /web-setup uit te voeren. Doe dat en voer daarna /schedule opnieuw uit om verder te gaan waar je gebleven was.
Een prompt schrijven die zonder jou draait
De prompt bepaalt of deze routine slaagt of faalt.
Een normale sessie is een gesprek, dus je kunt Claude gaandeweg corrigeren. Een routine heeft niemand om te corrigeren. Hij start koud, loopt tot het einde en kan geen verduidelijkende vraag stellen. De prompt moet de taak benoemen, de repository en hoe een voltooide run eruitziet.
Vergelijk deze twee. De eerste laat te veel onbenoemd:
Review the open PR.
Die noemt geen repo of reviewcriteria, heeft geen plek om commentaar achter te laten en geen definitie van klaar. Een koude run kan die gaten niet vullen. De tweede prompt beantwoordt alles:
Review the open pull request in pr-review-demo. The cartlib package works entirely in integer cents. Read the checkout flow and the values it pulls from config.py, and check that every amount stays in cents end to end. If any value is mixed in using the wrong unit, leave an inline comment on that line explaining the error and its effect on the customer's total. Then, post a summary comment stating whether the PR is safe to merge.
Die prompt noemt de repo en stelt de invariant die de code moet houden: alles in centen. Hij wijst op de twee relevante bestanden en definieert klaar als een inline comment plus een merge-oordeel. Daarmee heeft de run een doel dat hij zelfstandig kan halen. Plak hem erin wanneer /schedule vraagt wat de agent moet doen.
Al je connectors zijn standaard inbegrepen, dus een nieuwe routine kan meteen alles bereiken waarmee je account is verbonden. Dat is nu prima; later beperken we het.
Wanneer je klaar bent, slaat Claude de routine op en bevestigt dat hij actief is, met de repository, het schema, het model en de volgende draaitijd.

De routine verschijnt ook in de lijst op claude.ai/code/routines. Open de detailpagina om alles bij elkaar te zien. Inclusief status, repository, schema, connectors, de volledige prompt en een Nu uitvoeren-knop.

Klik op Nu uitvoeren om hem direct te draaien in plaats van te wachten tot 9.00 uur.
De run lezen
De run start vanuit een verse clone van je repository, opgehaald vanaf de default-branch. Alles wat je gecommit hebt, staat erin. Alles wat je alleen lokaal hebt ingesteld niet, dus de routine ziet het repo zoals je teamgenoten dat zouden doen.
Zodra hij klaar is, toont de runlijst een groene status. Dat groen betekent dat de sessie draaide en zonder infrastructuurfout is beëindigd. Het betekent echter niet dat de taak in je prompt geslaagd is. Drie soorten fouten schuilen achter een groen vinkje en blijken alleen uit het transcript:
- Een netwerkverzoek dat de omgeving blokkeerde.
- Een connector-tool die de routine verwachtte maar niet kon bereiken.
- Een taakfout, waarbij de run netjes eindigde maar het verkeerde deed.

Open de run dus om te verifiëren. Klik op een run om hem als volledige sessie te lezen, waar je kunt zien wat Claude deed, de diff kunt bekijken, een pull request kunt openen of het gesprek kunt voortzetten.
In het demorepo toont het transcript de vondst. Claude leest checkout.py en ontdekt dat de coupon 5 is toegewezen in plaats van 500. Hij legt uit dat hierdoor $5 als 5 cent wordt toegepast, waardoor de klant per bestelling $4,95 te veel betaalt, en geeft de one-liner fix. Daarna plaatst hij de review op de PR via de GitHub-connector.

Claude Code-routines beheren via de CLI
Zodra een routine bestaat, beheer je hem met hetzelfde commando. Voer /schedule list uit om ze allemaal te zien, /schedule update om er één te wijzigen en /schedule run om er meteen één te starten.
De schema-presets zijn elk uur, dagelijks, doordeweeks en wekelijks. Voor een custom interval, zoals elke 2 uur of de eerste van de maand, kies je eerst de dichtstbijzijnde preset. Voer daarna /schedule update uit om direct een cron-expressie te zetten. Het minimuminterval is 1 uur, alles sneller wordt afgewezen.
Routines tellen ook mee voor de dagelijkse run-toelage van je account, en tijdens de research preview hebben GitHub-events uurlijkse limieten. Events boven de limiet worden gedropt, niet in de wachtrij gezet. De actuele aantallen variëren per abbo en staan op claude.ai/code/routines.
De CLI maakt alleen geplande routines. Om een GitHub- of API-trigger toe te voegen, bewerk je de routine in de webapp.
Claude Code-routines starten vanaf GitHub en HTTP
Het schema start je routine op tijd. Twee andere triggers laten GitHub of je eigen systemen dezelfde routine starten. Een PR-reviewroutine kan ’s nachts draaien, reageren op elke nieuwe PR en starten vanuit een deployscript, allemaal tegelijk.
Beide voeg je toe door de routine te bewerken op claude.ai/code/routines.
Reageren op pull requests met een GitHub-trigger
De GitHub-trigger vereist dat de Claude GitHub App geïnstalleerd is op de repository waarop je je wilt abonneren. Als de App ontbreekt, vraagt de trigger-setup je om hem te installeren. Let op dat /web-setup van eerder alleen kloontoegang verleent. Het installeert de App niet en levert geen webhooks, dus dat dekt deze stap niet.
Zodra de App is geïnstalleerd, voeg je de trigger toe en kies je een event. De events vallen in twee categorieën, pull requests en releases, en je kiest een specifieke actie daarin. De UI toont de meest voorkomende als presets, zoals PR geopend, PR gemerged en Release gepubliceerd, plus een Custom-optie voor de rest.
Vernauw het daarna met filters. Voor pull requests kun je filteren op auteur, titel, body, base-branch, head-branch, labels, is-draft en is-merged. Alle voorwaarden moeten matchen voordat de routine start.
De operator matches regex test het hele veld, niet een substring. Om elke titel te matchen die hotfix bevat, schrijf je .*hotfix.*. Een losse hotfix matcht alleen een titel die exact zo luidt, en niets anders.

De GitHub-trigger ingesteld om te starten bij een nieuwe pull request, gefilterd op de main-branch en een specifieke auteur.
Voor het demorepo stel je het event in op het openen van een pull request en laat je de filters leeg. Nu start elke nieuwe PR de review die je eerder schreef, zonder iemand achter de terminal. Hij volgt de eenheid van de coupon over de bestanden, laat een inline comment achter op de bug en plaatst een merge-oordeel.
Elk overeenkomend event start een eigen sessie, dus twee PR’s op rij leveren twee onafhankelijke runs op.
Een routine triggeren via HTTP
De API-trigger laat je eigen tools een routine starten. Kies de API onder de triggerselector en klik op Token genereren. Het token wordt één keer getoond en is later niet meer op te halen, dus sla het meteen op in de secret store van je alertingtool.
Stuur daarna een POST naar het fire-endpoint van de routine met het token en een text-body:
curl -X POST https://api.anthropic.com/v1/claude_code/routines/$ROUTINE_ID/fire \
-H "Authorization: Bearer $ROUTINE_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: experimental-cc-routine-2026-04-01" \
-H "Content-Type: application/json" \
-d '{"text": "Sentry alert SEN-4521 fired in prod. Stack trace attached."}'
De text-waarde wordt doorgegeven als een letterlijke string en niet geparsed, dus schrijf gewone tekst in plaats van JSON. Gestructureerde input komt als ruwe tekst binnen en de routine leest die letterlijk.
De anthropic-beta-header is vereist, en de API is experimenteel, dus check de API-referentie voordat je dit in CI integreert. Van daaruit kan een monitoringtool dit endpoint aanroepen bij een alert en de routine zelf een concept-PR met een fix laten openen.
Beperken wat Claude Code-routines kunnen bereiken
Een routine draait zelfstandig, dus voordat je er één op een echte repo richt, beperk je wat hij kan bereiken. De documentatie vat dit samen als vier knoppen:
- Wie de routine is, via je GitHub-identiteit en connectors.
- Naar welke branches hij mag pushen.
- Welke connectors hij mag gebruiken.
- Welke hosts de omgeving via het netwerk mag bereiken.
Beperk elk tot wat de routine daadwerkelijk nodig heeft.
Routine-identiteit
Identiteit komt eerst omdat dit is wat een teamgenoot ziet op een gedeelde repo. Alles wat een routine doet via je GitHub-identiteit of je connectors verschijnt als jij.
Commits en pull requests dragen je GitHub-gebruiker, en Slack-berichten en Linear-tickets gebruiken je gekoppelde accounts. Teamgenoten zien jouw naam op die commits en PR’s, dus geef branches en titels zo’n naam dat duidelijk is dat een routine ze heeft gemaakt.
Branches waar de routine naartoe kan pushen
Branches komen daarna. Een run is een volledige cloudsessie zonder toestemmingsprompts, dus hij stopt nooit om te vragen voordat hij een bestand wijzigt of een pull request opent.
De vangrail is de branch waarnaar hij mag schrijven. Standaard pusht Claude alleen naar branches met het prefix claude/, waardoor hij wegblijft van beschermde of langlopende branches zoals main.
Een repo-instelling, Onbeperkt pushen naar branches toestaan, haalt die beperking weg. Zet dit bewust aan, alleen voor een repo die het nodig heeft.
Connectors die de routine mag gebruiken
Connectors zijn het risicovolst van de vier. Al je claude.ai-connectors zijn standaard inbegrepen, en Claude kan elke tool van een inbegrepen connector gebruiken, inclusief schrijven, zonder te vragen tijdens een run.
Trim de lijst dus tot wat de routine nodig heeft. Een PR-reviewroutine heeft GitHub nodig en verder weinig. Een losse e-mail- of kalenderconnector is toegang waar de routine niets mee hoeft, en een prompt-injectie verstopt in een PR kan die toegang tegen je gebruiken.

Netwerktoegang
Netwerktoegang is de laatste knop. De Default-omgeving gebruikt trusted network access, dat een ingebouwde allowlist bereikt van package-registries, cloudprovider-API’s, containerregistries en gangbare ontwikkeldomeinen, en de rest blokkeert.
Een geblokkeerd verzoek faalt met een 403 en een x-deny-reason: host_not_allowed. Verruim dit alleen wanneer de routine jouw eigen services moet bereiken. Anders is de fout stil: hij verschijnt in het transcript en niet als een duidelijke error.
Ideeën voor Claude Code-routines om hierna te bouwen
Je kunt een routine bouwen, starten en afbakenen. Deze voorbeelden uit de officiële documentatie koppelen telkens een klus aan de trigger die erbij past:
- Maatwerk code review. GitHub-trigger bij het openen van een PR. Past de reviewchecklist van je team toe, laat inline comments achter voor security, performance en stijl en voegt een samenvatting toe. Dit is de demo, gegeneraliseerd naar je echte standaarden.
- Backlogonderhoud. Schema-trigger, elke doordeweekse avond. Leest issues die sinds de laatste run zijn geopend, past labels toe, wijst eigenaren toe op basis van het referenced codegebied en plaatst een samenvatting in Slack.
- Deploy-verificatie. API-trigger vanuit je CD-pijplijn na elke productie-deploy. Voert smoke-checks uit op de nieuwe build, scant errorlogs op regressies en post een go of no-go in het releasekanaal.
- Docs-drift. Schema-trigger, wekelijks. Scant gemergde PR’s sinds de laatste run, markeert docs die naar gewijzigde API’s verwijzen en opent update-PR’s tegen de docs-repository.
Routines passen bij werk dat onbemand, herhaalbaar en gekoppeld aan een duidelijk resultaat is. Als je de succescriteria in de prompt kunt schrijven, zoals je deed voor de PR-review, is de taak een kandidaat. Werk dat realtime menselijk oordeel vereist, niet.
Conclusie
Routines veranderen hoe je tijd besteedt aan terugkerend werk. In plaats van elke taak aan de terminal te draaien, schrijf je hem één keer en beoordeel je wat al heeft gedraaid. De PR-review die je hebt gebouwd, start terwijl je laptop dicht is, en jij leest het oordeel wanneer het jou uitkomt.
Om verder te gaan met Claude Code, sluiten de volgende tutorials goed aan bij deze:
- Best practices voor Claude Code om meer uit elke sessie te halen.
- Een CLAUDE.md-bestand schrijven om je routines en sessies gedeelde context te geven.
- Spec-driven development voor taken die het waard zijn om te specificeren voordat je ze automatiseert.
- Auto-modus en kanalen om Claude Code met minder toezicht te draaien.
Claude Code-routines: veelgestelde vragen
Wat is een Claude Code-routine?
Een routine is een opgeslagen Claude Code-configuratie: een prompt, één of meer repositories en een set connectors. Je verpakt het één keer en het draait automatisch op door Anthropic beheerde cloudinfrastructuur, getriggerd op schema, door een API-call of door een GitHub-event.
/loop en een routine: wat is het verschil?
Een /loop-taak is sessie-gebonden. Hij draait alleen terwijl Claude Code open en idle is op jouw machine, en het sluiten van de terminal stopt hem. Een routine draait in de cloud en blijft onafhankelijk van elke sessie bestaan, dus hij werkt door terwijl je laptop dicht is. Het minimuminterval is 1 uur voor een routine en 1 minuut voor /loop.
Hoe maak ik een routine aan?
Voer het commando /schedule uit in elke Claude Code-sessie, bijvoorbeeld: /schedule daily PR review at 9 am. Claude loopt dezelfde velden langs als het webformulier (naam, prompt, repository, environment, connectors en schema) en slaat de routine daarna op in je account, waar hij verschijnt op claude.ai/code/routines.
Kan een routine draaien terwijl mijn laptop dicht is?
Ja. Routines draaien op door Anthropic beheerde cloudinfrastructuur in plaats van op jouw machine, dus een geplande of getriggerde run voltooit ook wanneer je laptop dicht is. Je kunt een run live volgen op het web of het transcript achteraf bekijken.
Hoe bepaal ik wat een routine mag bereiken?
Beperk de routine via vier knoppen: de identiteit waarmee hij optreedt, de branches waarnaar hij mag pushen, de connectors die hij mag gebruiken en de netwerkhosts die hij mag bereiken. Standaard pusht Claude alleen naar claude/-geprefixt branches en zijn al je connectors inbegrepen, dus snoei de connectorlijst en verruim netwerktoegang alleen wanneer de routine dat echt nodig heeft.
Ik ben een contentmaker op het gebied van data science met meer dan 2 jaar ervaring en een van de grootste achterbannen op Medium. Ik schrijf graag diepgaande artikelen over AI en ML met een vleugje sarcasme, want je moet íets doen om ze wat minder droog te maken. Ik heb meer dan 130 artikelen en een DataCamp-cursus gemaakt, met nog een in de maak. Mijn content is door meer dan 5 miljoen ogen bekeken, van wie 20k mij is gaan volgen op zowel Medium als LinkedIn.

