Skip to content

Commit f047228

Browse files
dvhtomootes
andauthored
630 artikel over blogpost skills (#634)
* fixes 630 * Test test-deploy [deploy-test] * test test-deployment [deploy-test] * [deploy-test] * fix suggestions * Clarify linting * Apply suggestions from code review Co-authored-by: Tom Ootes <tom@ootes.io> * publish [deploy-test] --------- Co-authored-by: Tom Ootes <tom@ootes.io>
1 parent 075d962 commit f047228

File tree

4 files changed

+228
-3
lines changed

4 files changed

+228
-3
lines changed

blog/2026/03/25-skills.md

Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
---
2+
authors: [anne-schuth, dimitri-van-hees]
3+
tags:
4+
- ai
5+
- llm
6+
- adr
7+
- open-source
8+
- forum-standaardisatie
9+
- developer.overheid.nl
10+
image: ./img/matrix.png
11+
description: |
12+
"I know kung fu." In The Matrix downloadt Neo een vechtkunst in zijn hoofd en is
13+
klaar om te gaan. In het echt werkt het anders. Als developer moet je allerlei
14+
standaarden en protocollen kennen, en dat kost uren lezen en uitzoeken. Maar je
15+
AI-assistant kan die kennis wel gewoon ingeladen krijgen. Op
16+
developer.overheid.nl experimenteren we met skills die overheidsstandaarden
17+
inladen in je AI-assistant.
18+
---
19+
20+
# Wat als je standaarden kon downloaden in je AI-assistant?
21+
22+
![Plaatje van een matrix](./img/matrix.png)
23+
24+
"I know kung fu." In The Matrix downloadt Neo een vechtkunst in zijn hoofd en is
25+
klaar om te gaan. In het echt werkt het anders. Als developer moet je allerlei
26+
standaarden en protocollen kennen, en dat kost uren lezen en uitzoeken. Maar je
27+
AI-assistant kan die kennis wel gewoon ingeladen krijgen. Op
28+
developer.overheid.nl experimenteren we met skills die overheidsstandaarden
29+
inladen in je AI-assistant.
30+
31+
<!-- truncate -->
32+
33+
De Nederlandse overheid heeft tientallen standaarden voor softwareontwikkeling.
34+
API Design Rules, Digikoppeling, OAuth NL-profielen, DMARC, DNSSEC, en zo door.
35+
Ze zijn publiek beschikbaar en goed gedocumenteerd. Toch kent bijna niemand ze
36+
allemaal. Er zijn er gewoon te veel, en de afstand tussen een standaarddocument
37+
en je dagelijkse werk is groot. Skills maken die afstand kleiner.
38+
39+
:::warning[Verantwoord experimenteren]
40+
41+
We noemen dit bewust een experiment. Alle skills dragen een CONCEPT-label. De
42+
beschrijvingen zijn informatieve samenvattingen; de
43+
[officiële bronnen](https://www.forumstandaardisatie.nl/open-standaarden) zijn
44+
leidend.
45+
46+
We hebben het experiment getoetst aan de
47+
[Overheidsbrede handreiking voor de verantwoorde inzet van generatieve AI](https://open.overheid.nl/documenten/9c273b71-cebb-4e11-b06f-fa20f7b4b90e/file).
48+
In het
49+
[verantwoordingsdocument](https://github.com/developer-overheid-nl/skills-marketplace/blob/main/docs/verantwoording.md)
50+
staat hoe we omgaan met risico's. Om vendor lock-in te voorkomen testen we
51+
skills met meerdere AI-assistants, waarvan minimaal een open source.
52+
53+
:::
54+
55+
## Wat zijn skills?
56+
57+
Een skill is een Markdown-bestand met instructies en referentiemateriaal voor
58+
een AI-assistant. Denk aan de checklist die een piloot doorloopt voor vertrek.
59+
De piloot kan vliegen, maar de checklist zorgt dat er niets wordt overgeslagen.
60+
61+
Er zit geen code in en je hoeft niets te finetunen. Het is gewoon een
62+
Markdown-bestand met gestructureerde kennis.
63+
64+
Skills activeren op basis van context. Als je een REST API bouwt, laadt je
65+
assistant de API Design Rules. Configureer je een mailserver, dan komen de
66+
DMARC- en DKIM-richtlijnen erbij. Je hoeft als developer niet eens te weten dat
67+
een bepaalde standaard bestaat.
68+
69+
Meerdere skills vormen samen een plugin, en plugins zijn vindbaar via een
70+
marketplace. Het "Agent Skills" formaat is een [open standaard](https://agentskills.io/home)
71+
die inmiddels door meer dan dertig tools wordt ondersteund, waaronder Claude
72+
Code, Opencode, Cursor, GitHub Copilot en Gemini CLI.
73+
74+
```mermaid
75+
flowchart TD
76+
A[Overheid marketplace] --> B[Logius standaarden]
77+
A --> C[developer.overheid.nl tools]
78+
B --> D[API Design Rules]
79+
B --> E[Logboek Dataverwerking]
80+
C --> F[Publiceer blogpost]
81+
C --> G[Generate publiccode.yml]
82+
```
83+
84+
_Voorbeeldhiërarchie. Meerdere skills vormen samen een plugin. Plugins kunnen
85+
gevonden worden via marketplaces._
86+
87+
## In actie: de API Design Rules
88+
89+
Je bouwt een REST API voor een overheidsorganisatie en vraagt je AI-assistant om
90+
een opzet. Zonder skill krijg je een generieke API die niet voldoet aan de
91+
[API Design Rules](https://gitdocumentatie.logius.nl/publicatie/api/adr/2.1.0/)
92+
van Logius. Endpoints in camelCase in plaats van kebab-case, foutmeldingen als
93+
vrije tekst in plaats van `problem+json`, geen versienummer in het pad.
94+
95+
Met de [`/ls-api`](https://github.com/developer-overheid-nl/skills-standaarden/blob/main/skills/ls-api/SKILL.md) skill zit dat er anders uit:
96+
97+
**Prompt:**
98+
99+
```md
100+
Maak een OAS die voldoet aan de ADR en verifieer of deze valid is. Het betreft
101+
een CRUD API waarmee men bieren, bierstijlen en brouwerijen kan ophalen. Een
102+
brouwerij heeft een naam, en adres. Een bier heeft een alcoholpercentage,
103+
gekoppelde bierstijl en gekoppelde brouwerij.
104+
```
105+
106+
**Zonder skill:**
107+
108+
```bash
109+
● Write(openapi.yaml)
110+
● Bash(npx @stoplight/spectral-cli lint /openapi.yaml \
111+
--ruleset https://static.developer.overheid.nl/adr/ruleset.yaml 2>&1)
112+
⎿ 16 errors, 1 warning found!
113+
⎿  (timeout 30s)
114+
115+
● De spec is niet ADR-compliant — 16 errors, 1 warning.
116+
```
117+
118+
**Met skill:**
119+
120+
```bash
121+
● Skill(standaarden:ls-api)
122+
⎿  Successfully loaded skill · 7 tools allowed · claude-sonnet-4-6
123+
● Write(openapi.yaml)
124+
● Bash(npx @stoplight/spectral-cli lint /openapi.yaml \
125+
--ruleset https://static.developer.overheid.nl/adr/ruleset.yaml 2>&1)
126+
⎿  No results with a severity of 'error' found!
127+
⎿  (timeout 30s)
128+
129+
● De spec is ADR-compliant — 0 errors, 0 warnings.
130+
```
131+
132+
:::info
133+
134+
Merk op dat de AI-assistant zelf valideert of de gegenereerde code voldoet aan
135+
de ADR door de linter te draaien. Ook deze validatie staat beschreven in de
136+
skill. In het voorbeeld zonder skill heeft de AI-assistant hier geen weet van,
137+
maar om de resultaten te tonen hebben we dit hierbij expliciet aangegeven.
138+
139+
:::
140+
141+
Dit soort details bepalen of je API voldoet aan de standaard op de
142+
['pas toe of leg uit'-lijst](https://www.forumstandaardisatie.nl/open-standaarden/rest-api-design-rules).
143+
De skill bevat verder naamconventies (kebab-case paden, camelCase parameters),
144+
de verplichte OpenAPI-specificatie op `/openapi.json`, security headers, en een
145+
implementatiechecklist van veertien punten. Of, zoals de AI-assistant zelf
146+
aangeeft op de vraag wat het verschil is tussen het uitvoeren van de prompt mét
147+
en zonder skill:
148+
149+
```bash
150+
De skill zorgt ervoor dat ik de ADR-specifieke regels (zoals de verplichte
151+
API-Version header en de problem+json foutstructuur) direct goed toepas,
152+
in plaats van terug te vallen op gangbare REST-conventies die net niet aan
153+
de Nederlandse standaard voldoen.
154+
155+
Wat ik zonder skill fout deed:
156+
157+
┌────────────────────┬──────────────────────────┬──────────────────────────────────┐
158+
│ADR-regel │Fout zonder skill │Wat de skill wist │
159+
├────────────────────┼──────────────────────────┼──────────────────────────────────┤
160+
│API-Version header │Vergeten op alle responses│Verplichte header op elke response│
161+
├────────────────────┼──────────────────────────┼──────────────────────────────────┤
162+
│Versie in server URL│/api/v1/... in paden │Linter checkt server URL │
163+
├────────────────────┼──────────────────────────┼──────────────────────────────────┤
164+
│Problem details │Eigen Error schema │RFC 9457 │
165+
├────────────────────┼──────────────────────────┼──────────────────────────────────┤
166+
│Query parameters │brewery_id (snake_case) │camelCase: brouwerijId │
167+
└────────────────────┴──────────────────────────┴──────────────────────────────────┘
168+
169+
```
170+
171+
De API Design Rules skill is een van tien skills in de
172+
[standaarden-plugin](https://github.com/developer-overheid-nl/skills-standaarden),
173+
die samen 77 GitHub-repositories en negen domeinen afdekt. Er zijn ook plugins
174+
voor
175+
[internetstandaarden](https://github.com/developer-overheid-nl/skills-internet)
176+
(internet.nl),
177+
[geo-standaarden](https://github.com/developer-overheid-nl/skills-geo)
178+
(Geonovum) en
179+
[NeRDS-richtlijnen](https://github.com/developer-overheid-nl/developer-overheid-nl-agent-skills).
180+
181+
## Waarom standaarden zich hier goed voor lenen
182+
183+
Overheidsstandaarden beschrijven regels en vereisten. Dat soort gestructureerde
184+
kennis past goed in een skill. Ze zijn publiek en open, en veelal met licenties
185+
die dit toestaan. En ze veranderen niet elke week, waardoor skills actueel
186+
blijven. En als ze wel veranderen, dan weten we dat direct omdat we de bronnen
187+
monitoren.
188+
189+
Daarnaast lossen skills een praktisch probleem op. De meeste developers kennen
190+
een handjevol standaarden, terwijl er tientallen relevant zijn voor hun werk.
191+
Met skills zit die kennis in het gereedschap zelf.
192+
193+
## Meedoen
194+
195+
De
196+
[skills marketplace](https://github.com/developer-overheid-nl/skills-marketplace)
197+
is openbaar en bruikbaar. Installeren kan in Claude Code of Cursor, zie de
198+
instructies in de repository.
199+
200+
Feedback is welkom via GitHub issues, zeker als een skill een standaard verkeerd
201+
samenvat. We passen skills aan op basis van feedback.
202+
203+
Je kunt ook zelf skills schrijven. Je hoeft geen developer te zijn; als je de
204+
kennis hebt over een standaard of richtlijn, kun je die structureren in een
205+
Markdown-bestand. De
206+
[handleiding](https://github.com/developer-overheid-nl/skills-marketplace/blob/main/docs/plugin-maken.md)
207+
beschrijft hoe.
208+
209+
## Wat we hopen
210+
211+
We hebben nu zes plugins en tientallen skills, en dat groeit. We willen dat
212+
standaarden beschikbaar zijn in je terminal en editor, terwijl je code schrijft.
213+
214+
De repositories zijn open. Probeer het uit en laat weten wat je ervan vindt!

blog/2026/03/img/matrix.png

532 KB
Loading

blog/authors.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ floris-deutekom:
1818
github: Fdeutekom
1919
email: f.deutekom@geonovum.nl
2020

21-
Jan Klopper:
21+
jan-klopper:
2222
name: Jan Klopper
2323
title: Implementatie ondersteuner - developer.overheid.nl
2424
image_url: https://developer.overheid.nl/img/team/jan-klopper.png
@@ -27,7 +27,7 @@ Jan Klopper:
2727
linkedin: janklopper
2828
github: underdarknl
2929
email: j.klopper@geonovum.nl
30-
30+
3131
dimitri-van-hees:
3232
name: Dimitri van Hees
3333
title: Product Owner - developer.overheid.nl
@@ -200,4 +200,15 @@ jan-vlug:
200200
henry-fidder:
201201
name: Henry Fidder
202202
title: Product Manager - Justitiële Informatiedienst
203-
page: true
203+
page: true
204+
205+
anne-schuth:
206+
name: Anne Schuth
207+
title: Staff Engineer - Bureau Architectuur BZK
208+
page: true
209+
image_url: /img/authors/anne-schuth.png
210+
socials:
211+
linkedin: https://www.linkedin.com/in/anneschuth/
212+
github: anneschuth
213+
bluesky: anneschuth.nl
214+
email: anne.schuth@rijksoverheid.nl

static/img/authors/anne-schuth.png

203 KB
Loading

0 commit comments

Comments
 (0)