AI temmen

AI die jouw afspraken onthoudt, zodat één zinnetje volstaat

Tim Dams (timdams.com)

Leerkrachten vragen me dagelijks…

  • “Geen moeilijke uitleg. Echt praktisch gericht.”
  • “Zodat de doelen er goed in verwerkt zitten, op het juiste niveau.”
  • “Hoe we er goede, gevarieerde examens mee kunnen opstellen.”
  • “De cursus opbouwen vertrekkende vanuit de doelstellingen en beheersingsniveaus.”
  • “Vanuit één basisopdracht variaties maken voor verschillende graden, richtingen, niveaus.”
  • “Dynamisch aanpasbare inhoudstafel, herschikken waarbij de nummering mee aanpast, ppt en evaluatiemateriaal uit de cursus.”
  • “Verder werken voor eenzelfde klas en een zelfde vak, zodat ik niet alle info elke keer opnieuw moet geven.”
Een wachtrij collega's met tekstballonnen voor een loket waar de robot klaarzit onder een bordje volgende!

Het landschap

Vandaag werken we in Claude

Links een groot rood blok Claude, alles live. Een pijl naar twee grijze blokken: ChatGPT en Copilot, waar het meestal ook lukt.

Vertrek vanuit het doel

Eerst het leerplandoel en zijn beheersingsniveau. Tekst, oefeningen, varianten en toets volgen daaruit.

Ons proefkonijn voor vandaag: biologie, 2e graad, hoofdstuk De cel. Elke prompt gaat erover (en neen, ik ben geen leraar biologie).

De basisconcepten

Project

Eén project per vak en klas, met alles erin: wat over je vak gaat (context), je cursus zelf (content), je afspraken (instructies) en elk gesprek. Elk nieuw gesprek in dat project leest ze opnieuw mee. Gedaan met telkens opnieuw uitleggen welke klas je hebt.

In Copilot: een notebook. Apps, dan Notebooks.

Contextmap

De AI weet enkel wat jij haar te lezen geeft. Te weinig, en ze verzint. Te veel, en ze verdrinkt. Zoek de balans tussen net genoeg en niet te veel.

De map voor De cel

context/, wat over mijn vak gaat:

  • Leerplandoelen: de doelen van dit hoofdstuk, met hun beheersingsniveau. Hier vertrekt alles.
  • Beginsituatie: wat mijn leerlingen van de 2e graad al kennen, en wat nog niet.
  • Stijlvoorbeeld: twee stukken die ik zelf schreef en goed vind.

content/, mijn cursus zelf:

  • Hoofdstuk De cel: mijn Word-document zoals het nu is.

Bij elk document hoort één zin over waarvoor het dient. Die zin komt in je instructies.

De startmap: k00.fr/8mpuyora
wachtwoord 821654

Project

“Voor welk vak en welke klas werk je hier? Wat kennen mijn leerlingen al, en welke afspraken volg je? Zeg bij elk antwoord uit welk document je het haalt.”

Stel deze vraag in een nieuw gesprek in je project. Je hebt niets opnieuw uitgelegd, en toch weet ze het dankzij je map.

In Copilot: een nieuw gesprek in je notebook.

Contextmap

“Wat kennen mijn leerlingen al als ze aan het hoofdstuk De cel beginnen, en uit welk document haal je dat?”

Leest ze je map echt, of doet ze maar alsof? Laat haar het document noemen.

Contextmap

“Maak een opzet voor het hoofdstuk De cel, vertrekkend vanuit mijn Leerplandoelen: per doel een kopje, met het beheersingsniveau erbij, en in één zin wat erin komt. Schrijf nog geen tekst.”

Eerst het skelet, vanuit je doelen. Het vlees komt later.

Resultaat

Het robotje springt op een podium onder een bord met DEMO, het rode touw loopt links het beeld uit.

Live in Claude.

Instructies

Je afspraken, op een halve pagina. Ze gelden voor elk gesprek in je project: één keer opschrijven, en de AI leest ze telkens mee.

In Copilot: klik rechtsboven in je notebook op de drie puntjes, dan Instructies.

Instructies voor De cel

# Instructies: Biologie, 2e graad, hoofdstuk De cel

- Schrijf voor leerlingen van 15 jaar, korte zinnen, geen vakjargon zonder uitleg.
- Elk stuk tekst hoort bij een leerplandoel uit Leerplandoelen.
  Zet het doel en het beheersingsniveau erboven.
- Na elke paragraaf: twee oefeningen, een makkelijke en een moeilijkere.
- Laat onder elke vraag ruimte voor het antwoord (vier lege lijnen).
- Verzin geen bronnen. Weet je iets niet zeker, zeg het.
- Stijlvoorbeeld toont hoe ik schrijf. Volg die toon.

Zes regels. Meer moet dat niet zijn om te beginnen.

Instructies voor De cel

Mijn documenten:

- Leerplandoelen: de doelen van dit hoofdstuk, met hun
  beheersingsniveau. Hier vertrekt alles.
- Beginsituatie: wat mijn leerlingen al kennen, en wat nog niet.
- Stijlvoorbeeld: twee stukken die ik zelf schreef en goed vind.
- Hoofdstuk De cel: mijn cursus zoals ze nu is.

Bij elk document in je map één zin over waarvoor het dient. Dan weet de AI niet enkel wat ze leest, maar ook wat ze ermee moet.

Zo ver kan het groeien

CLAUDE.md van Zie Scherp Scherper, zoals het vandaag in de repo staat. Enkel om door te scrollen (en even van te schrikken).

# CLAUDE.md

> Tim verbetert. Houd dit kort en feitelijk; geen pluimen, geen TODO-lijsten.

## Wat is dit project?

**Zie Scherp Scherper** — een C#-cursus/handboek van Tim Dams (AP Hogeschool), gepubliceerd op [ziescherp.be](https://www.ziescherp.be) en gebruikt door meerdere hogescholen en middelbare scholen.

Het project bouwt **drie afzonderlijke Quarto-outputs** die samen op één GitHub Pages-site terechtkomen:

| Output | Bron | Type | Doel |
|--------|------|------|------|
| Hoofdboek | root + [content/](content/) | Quarto **book** (HTML + Typst/PDF) | Het eigenlijke handboek (18 hoofdstukken + appendix) |
| Oefeningen | [oefeningen/](oefeningen/) | Quarto website | Practica per hoofdstuk + vaardigheidsproeven |
| Slides | [slides/](slides/) | Quarto website (revealjs) | Lesslides via slides/overzicht.qmd |

Oud of band experimenteel materiaal (bv. `odysseyfiles`, `slidesOld`) staat in [_archive/](_archive/). Dat wordt niet gepubliceerd en mag genegeerd worden.

## Repo-layout

```
ziescherpste/
├── _quarto.yml              # hoofdboek-config (book, output-dir: build/)
├── _brand.yml               # kleuren van de getekende figuren (AP-rood); niet het sitepalet
├── _extensions/             # Quarto extensions (lightbox voor klikbare afbeeldingen)
├── index.qmd                # voorwoord
├── custom.scss              # HTML-thema overrides
├── references.bib / .qmd    # bibliografie
├── content/                 # alle hoofdstukken van het boek
│   ├── 0_intro/ ... 21_bestanden/
│   ├── B_appendix/          # appendix + "boetes" (coding guidelines)
│   └── BookOnlyOOP/         # conclusie
├── oefeningen/              # eigen Quarto-website (sub-_quarto.yml)
│   ├── 1_intro/ ... 18_bestandsverwerken/
│   └── EindeTests/          # vaardigheidsproeven per module + AllInOne-projecten
├── slides/                  # eigen Quarto-website (revealjs)
├── _archive/                # oud/experimenteel materiaal (niet gepubliceerd)
├── _evaluatie/              # examens en toetsvragen (Moodle-XML), los van het boek
├── build/                   # output (gitignored, behalve gecommitte PDF)
├── future/                  # werkmap voor toekomstige ideeën (niet gepubliceerd)
└── .github/workflows/publish.yml
```

**Let op:** de hoofdstuknummering in [content/](content/) en [oefeningen/](oefeningen/) loopt **niet synchroon**. Bv. content `8_klassen/` ↔ oefeningen `9_klassen/`, content `9_meminoop/` ↔ oefeningen `10_meminoop/`. Dit is historisch gegroeid — verander niets aan mappen zonder de paden in beide `_quarto.yml`-bestanden mee aan te passen.

## Build- en publish-flow

Lokaal:
```bash
quarto render .              # hoofdboek → build/
quarto render slides/        # → build/slides/
quarto render oefeningen/    # → build/oefeningen/
```

CI: [.github/workflows/publish.yml](.github/workflows/publish.yml) draait **niet bij een push**, maar
elke nacht om 23:23 UTC, en enkel als `main` veranderd is sinds de laatste geslaagde build. GitHub
start geplande runs vaak uren later dan gevraagd; vandaar dat scheve tijdstip. Meteen
publiceren: "Run workflow" in het tabblad Actions, of `gh workflow run publish.yml`. Een run doet:
1. Render alle drie de Quarto-projecten naar `build/`.
2. Voor slides: cache PDF's per slide; converteer enkel gewijzigde `.qmd`-slides via **decktape** naar PDF.
3. Upload `build/` als GitHub Pages-artifact en deploy.

Deploy-target: GitHub Pages van [github.com/timdams/ziescherpscherper](https://github.com/timdams/ziescherpscherper).

## Vormgeving

Sinds 20 september 2026 draait de hele site (boek, oefeningen en slides) op één palet: **amberoranje
als kernkleur**, afgeleid van de bril op de cover, op een **koel grijze** basis. Rood is geen accent
meer, enkel nog status. De bron staat in [custom.scss](custom.scss); [oefeningen/oefeningen.scss](oefeningen/oefeningen.scss)
en [slides/slides.scss](slides/slides.scss) herhalen dezelfde waarden als eigen variabelen (die
bestanden laden na custom.scss en zien de variabelen daar niet).

| Rol | Waarde |
|-----|--------|
| Accent | `#e2790a` (vlakken, lijnen, actief item) |
| Accent, tekst op licht | `#b35e05` (links, labels, inline code) |
| Accent, tekst op donker | `#f5b64d` |
| Logo (bril) | `#f29400`, ongewijzigd |
| Status "belangrijk", fout | `#d92d20` / `#b42318` |
| Inkt, tekst, grijs, vaag | `#14161a`, `#2f333a`, `#656b75`, `#8b919c` |
| Lijn, pagina, koel vlak | `#dfe2e7`, `#f7f8fa`, `#eef0f3` |
| Codevenster | `#24292e` (github-dark), console `#0d1117` |

- Lettertypes: **Space Grotesk** voor koppen en display, **IBM Plex Sans** voor de tekst,
  **IBM Plex Mono** voor code, labels, badges en het kruimelpad. Ze komen van Google Fonts via
  `include-in-header` in de drie `_quarto.yml`'s en via `@import` in `slides/slides.scss`.
  De pdf (typst) gebruikt nog Inter en JetBrains Mono uit [fonts/](fonts/).
- **Drie soorten blok, drie uiterlijken.** Code (```` ```java ````) staat in een donker venster
  (`highlight-style: github-dark`), ook op de slides; een `filename=` wordt een tabje erboven.
  Programma-uitvoer hoort in `::: {.console}` en wordt een zwart terminalvenster met een mono-label.
  Een kaal ```` ```text ````-blok is geen van beide: dat is tekst (bestandsinhoud, een zinsjabloon,
  een schema) en krijgt een rustig wit blad (`pre.text`). **Zet uitvoer dus altijd in `::: {.console}`**,
  met een lege regel ervoor, anders plakt de div aan de alinea erboven en belandt ze als tekst op
  de pagina.
- **Callouts** zijn een witte kaart met een dun streepje links en een mono-label `// BELANGRIJK`.
  Rood voor `-important`, oranje voor `-warning` en `-caution`, blauwgrijs voor `-tip` en `-note`.
- De navbar en de "Werk in opbouw"-balk blijven **licht**: een zware donkere balk schrikt af bij
  "geen voorkennis nodig". Het brilletje staat als logo links bovenaan; `oefeningen/assets/bril.svg`
  en `slides/assets/bril.svg` zijn kopieën, want een subproject neemt geen bestand buiten zijn map mee.
- De pixelmascottes (Steven en co) blijven overal staan zoals ze staan.
- **`_brand.yml` hoort niet bij dit palet.** Die kleuren (ap-red enz.) zijn van de getekende
  figuren; zie de skill [`afbeelding`](.claude/skills/afbeelding/SKILL.md). Wie de site hertint,
  raakt `_brand.yml` niet aan.

## Labo-slides

Naast de lesslides heeft elk labo een eigen deck waarmee Tim het inleidt: `slides/hNN_labo.qmd`,
bv. [slides/h01_labo.qmd](slides/h01_labo.qmd). Heeft een hoofdstuk meerdere weken oefeningen
(H6, H7, H8, H9), dan krijgt elke week een deck: `hNN_labo1.qmd`, `hNN_labo2.qmd`, ... Ze staan
in de kolom "Labo" van [slides/overzicht.qmd](slides/overzicht.qmd).

- Na de titelslide komen altijd drie vaste slides: **het hoofdstuk (of de week) in een
  notendop** (de highlights uit de theorie, met een kort codevoorbeeld), **een kort overzicht
  van de oefeningen** (gegroepeerd, met wat niet *Essential* is en een link naar de oefeningenpagina)
  en **Nieuw in HN** (`{.center}`, `.kaarten .rij .groot`, de *Let op* als `.kaart .let-op` bovenaan):
  dezelfde regels als het oranje blok bovenaan de oefeningenpagina, kort. Verandert het ene, pas het andere mee aan.
- De eerste twee hebben een vaste vorm, zie [slides/h01_labo.qmd](slides/h01_labo.qmd). De notendop
  is twee kolommen: links vijf `::: {.kaart}` in een `.kaarten .rij`, rechts de code in een
  `::: {.column width="53%" .codesmal}`, met daaronder de uitvoer in `::: {.console .fragment}`.
  Het overzicht is een raster `::: {.kaarten}` met één kaart per groep oefeningen, de titels als
  `[Naam]{.chip}`, gestippeld (`.optioneel`) wat niet *Essential* is en oranje (`.lts`) de
  *Final Essentials*; de laatste kaart is `.grijs` met de link naar de oefeningenpagina.
- **Niets valt buiten de slide.** In een kolom past maar een lijn of 62 tekens (vandaar `.codesmal`),
  en zeven kaarten passen enkel met `{.smaller}` achter de titel. Nakijken doe je door het deck te
  renderen en te meten, niet op het oog.
- **Nooit een oplossing op een slide**, ook geen stuk ervan: de slides staan publiek en de
  oplossingen zitten achter een sleutel. Een codevoorbeeld komt uit de les en lijkt niet op
  een oefening van dat labo.
- De rest van de inhoud geeft Tim telkens zelf. Verzin daar niets bij. De eerste basis voor
  H1 t.e.m. H8 kwam uit Tims oude labo-pptx's (OneDrive, `_ProgrammingPrinciples/2526/Lab`).
- Zolang Tim een deck niet goedgekeurd heeft, staat er `(in opbouw)` achter de subtitle en
  `.bezig` op de knop in het overzicht (`{.knop .bezig}`, een gestippelde knop met een klokje).
  Haal beide weg als hij zegt dat een deck af is. Een pdf is `{.pdf}` en wordt een icoon.
- Links naar het boek of de oefeningen gaan naar `https://timdams.github.io/ziescherpscherper/...`.
  Diepe links naar ziescherp.be belanden op de voorpagina (zie item 11 in [future/watnu.md](future/watnu.md)).
- Zelfde frontmatter als de lesdeck van dat hoofdstuk, maar zonder `author`: ook collega's
  geven die labo's. Niet in een submap zetten: de pdf-stap
  in de CI kijkt enkel naar `build/slides/*.html`.

## Verhalen van de verteller in de lesslides

Een kader met de verteller (`content/assets/verteller.png`) uit het boek wordt op de lesslides een
haak (`::: {.haak}` met één groot getal) plus een beeld; de boektekst zelf gaat in `::: {.notes}`.

- Elke slide van zo'n verhaal krijgt `{.verhaal}` achter de titel: dan staat de verteller voor
  de titel en weet de zaal dat er trivia komt. De stijl zit in [slides/slides.scss](slides/slides.scss).
- **Nooit twee verhalen direct na elkaar.** Staan ze in het boek vlak na elkaar, zet dan de
  leerstof die ertussen hoort op een eigen slide, of schuif er een op naar een andere overgang.
- **Nooit midden in een onderwerp.** Een verhaal komt enkel op een overgang, als er een volgend
  onderwerp binnen het hoofdstuk begint. Staat het kader in het boek midden in de uitleg, dan
  schuift het op de slides op naar het einde van dat onderwerp.

## Pdf van het handboek

De pdf van het hoofdboek (Typst, met eigen cover, fonts en lua-filters) heeft een eigen skill:
[`handboekpdf`](.claude/skills/handboekpdf/SKILL.md). Gebruik die zodra er aan de pdf, de cover of
de pdf-vormgeving gewerkt wordt.

**Alle afspraken, oplossingen en technische weetjes over de pdf staan in
[.claude/pdf-afspraken.md](.claude/pdf-afspraken.md).** Lees dat voor je iets aan de pdf of aan
de figuren verandert. De kern:

- Avatars nooit schermvullend, klein en inline aan het begin van hun gesprek.
- Een afbeelding neemt niet meer plaats dan haar inhoud vraagt.
- Geen hoofdstuk dat eindigt met een of twee zinnen op een lege pagina, geen blanco pagina's.
- De website merkt niets van pdf-oplossingen: die zitten in de `*-typst.lua`-filters, de partial
  of `_quarto.yml`, in de bron hoogstens `{pdf-width=..}`.
- Nakijken: `quarto render . --to typst` (ca. 45 s) en daarna
  `python scripts/pdf-controle/pdfcontrole.py analyse build/Zie-Scherp-Scherper.pdf`.

## Oplossingen achter een sleutel

De oplossingen bij de oefeningen staan online niet zomaar open. Ze worden **na** het renderen
uit de HTML geknipt en versleuteld door [scripts/oplossingen-lock.mjs](scripts/oplossingen-lock.mjs),
dat in de CI draait met de repo-secret `OPLOSSING_SLEUTEL`. Bezoekers met de sleutellink
(`...?sleutel=<code>`) krijgen ze terug via [oefeningen/oplossingen.html](oefeningen/oplossingen.html);
de browser onthoudt de sleutel, dus dat is eenmalig.

- **De bronbestanden veranderen niet.** Blijf oplossingen gewoon schrijven als
  `::::{.callout-caution collapse="true" title="Oplossing"}`, dat is waar het script op zoekt.
- **Lokaal renderen blijft leesbaar**: het script draait enkel in de CI, of manueel met
  `node scripts/oplossingen-lock.mjs build/oefeningen --code <code>`.
- **Geen twee koppen van hetzelfde niveau in één oplossingscallout.** Quarto splitst de body
  dan in zustersecties en de helft valt buiten het slot. Een pagina die integraal een
  uitwerking is, krijgt in plaats daarvan `<meta name="zss-opl-pagina">` in haar frontmatter
  (via `include-in-header`).
- Het script kuist ook `search.json` en de inhoudsopgave op, en waarschuwt als er nog
  oplossingstekst op een pagina blijft staan. Testen doe je met
  [scripts/oplossingen-test.mjs](scripts/oplossingen-test.mjs).

## Coach-prompt bij de oefeningen

Naast elke oefeningstitel staat een knopje **Coach**. Dat geeft de student een prompt om in
ChatGPT, Copilot Chat of Claude te plakken: een A.I. die hem door de oefening loodst zonder
code of oplossing te geven, en die enkel leerstof gebruikt die op dat punt al gezien is.

- Het sjabloon met de coachregels staat in [oefeningen/_coach/_prompt.md](oefeningen/_coach/_prompt.md).
  Pas je daar iets aan, dan verandert het bij alle oefeningen.
- Datzelfde sjabloon bevat een samenvatting van het boeteblad
  ([content/B_appendix/boete.md](content/B_appendix/boete.md)): de coach beoordeelt de code van
  de student daar even streng op als een lector. Verandert er iets aan de boetes of aan de
  aftrek, pas het daar mee aan.
- Per hoofdstukmap één databestand, bv. [oefeningen/_coach/8_arrays.md](oefeningen/_coach/8_arrays.md):
  de leerstofgrens (wat de student al kent en wat nog niet) plus per oefening de bedoelde
  aanpak en de valkuilen. De titels daarin moeten overeenkomen met de titels op de pagina;
  de aanduiding `(*Essential*)` mag weg. Ontbreekt een oefening, dan krijgt ze geen knop en
  waarschuwt het script.
- De opgave zelf staat níét in dat bestand. [scripts/coach-prompt.mjs](scripts/coach-prompt.mjs)
  haalt ze na het renderen uit de HTML, knipt de oplossings-callouts eruit en zet de knop
  plus de gegevens in de pagina. De vormgeving zit in [oefeningen/oefeningen.scss](oefeningen/oefeningen.scss),
  de knop zelf werkt via de include [oefeningen/coach.html](oefeningen/coach.html).
- **De oplossing zit bewust niet in de prompt.** De student leest de tekst die hij plakt, dus
  alles wat erin staat is meteen weggegeven. Daarom draait het script in de CI ná
  [scripts/oplossingen-lock.mjs](scripts/oplossingen-lock.mjs): dan kan er geen oplossing meer in belanden.
- Enkel hoofdstukmappen met een databestand krijgen knoppen. Vandaag zijn dat de mappen van H1 tot en met H18. Ook `9_klassen/intermezzoh9.md` niet: daar staan de oefeningen als `###`, en het script zoekt naar `#`.
- **Vaardigheidsproeven** (de lijsten "Voorbeeld vaardigheidsproeven" in `oefeningen/_quarto.yml`,
  vandaag `EindeTests/Mod1` tot en met `Mod4`) krijgen geen knop per oefening, maar bovenaan één blok met
  een disclaimer en twee knoppen voor de hele proef: **Coach** (hetzelfde sjabloon) en **Quoteer**
  ([oefeningen/_coach/_quoteer.md](oefeningen/_coach/_quoteer.md)): een strenge verbetering met
  puntenverdeling en boetes, waarbij een fout nooit dubbel aangerekend wordt. De gegevens staan per
  proef in [oefeningen/_coach/proeven/](oefeningen/_coach/proeven/_LEESMIJ.md), de disclaimer in
  `_bovenaan.md`. De quoteerprompt is achteraf gemaakt en werd bij de originele proeven niet
  gebruikt: dat moet in de disclaimer blijven staan. Verandert het boeteblad, pas dan ook
  `_quoteer.md` aan. De gecombineerde oefeningen in EindeTests hebben geen knoppen.

Lokaal uitproberen: `quarto render oefeningen/` en daarna
`node scripts/coach-prompt.mjs build/oefeningen`. Het script is idempotent.

## Opmaak van de oefeningenpagina's

Op de hoofdstukpagina's (de mappen `1_intro` tot en met `18_bestandsverwerken`) staat elke
oefening ingeklapt in een lijst, met een vinkje "gedaan" en een knoppenrij Coach / Les /
Oplossing onder de opgave. Dat gebeurt in de browser door [oefeningen/opmaak.html](oefeningen/opmaak.html),
dus lokaal renderen ziet er hetzelfde uit als online. De vormgeving zit in
[oefeningen/oefeningen.scss](oefeningen/oefeningen.scss).

- De bron blijft zoals ze was: `#` per oefening, en de callouts `Oplossing` en
  `Les(sen) uit deze oefening`. Die twee worden op hun plaats knoppen met een paneel eronder.
- `(*Essential*)`, `(*Final Essentials*)`, `(PRO)` en `(GPT)` achter een titel worden labels.
  Andere haakjes, zoals `(Methoden)`, blijven in de titel.
- Een pagina met minder dan twee `#`-koppen blijft zoals ze is (bv. `9_klassen/intermezzoh9.md`).
  Een callout die niet gesloten wordt, slikt de rest van de pagina in en geeft hetzelfde effect.
- Bovenaan een hoofdstukpagina staat één oranje blok `::: {.vooraf titel="Nieuw in H4"}` (bij
  meerdere weken `"Nieuw in H6, week 1"`); de `titel` wordt het label. Daarin **enkel wat in dat
  hoofdstuk nieuw is**, hoogstens een punt of vier. Wat overal geldt (`>` in de uitvoer, komma's en
  euro, oplossing pas achteraf, de coach) staat één keer in [oefeningen/overzicht.qmd](oefeningen/overzicht.qmd)
  en wordt niet herhaald: een blok dat elke keer hetzelfde zegt, leest niemand nog. Een regel die
  punten kost, begint met `[Let op]{.let-op}` en komt bovenaan. Voorbeeld: [oefeningen/4_data/A_Practica.md](oefeningen/4_data/A_Practica.md).
- Callouts zijn op alle oefeningenpagina's rustig: geen gekleurde kopbalk, enkel een streepje
  links en een mono-label. Oranje (het accent) is voor `callout-caution`, dus de oplossing die je
  openklapt; rood voor `callout-warning` en `-important`, een echte waarschuwing. Zie "Vormgeving".
- De oefening die openstaat, krijgt een oranje balk links (inset-schaduw, geen border, anders
  verschuift de inhoud) en een grijze kopbalk. Zonder dat verschil staan alle kaartjes even wit.
- Het bolletje "gedaan" rechts draagt altijd een flauw vinkje, want een leeg rondje leest niet als
  een knop. Aangevinkt wordt het groen (`#2f9e44`): de enige plek in de hele site waar groen iets
  betekent.

## Pagina voor leerkrachten

De navbar van boek, oefeningen en slides linkt via "Voor leerkrachten" naar
[oefeningen/leerkrachten.qmd](oefeningen/leerkrachten.qmd) (sleutel voor de oplossingen,
toegang tot de repo, fristi). **De fristi-knop staat bewust enkel daar**: studenten mogen hem
niet op elke pagina zien. De pagina zit in de oefeningen-site omdat een Quarto book enkel zijn
chapters rendert.

Contact loopt via tim.dams [at] ap.be, maar schrijf dat adres **nooit leesbaar** in de bron (spam-bots).
Gebruik `<a class="zss-mail" data-naam="tim.dams" data-domein="ap.be">tim.dams \[at\] ap.be</a>`
plus het scriptje onderaan [index.qmd](index.qmd); de GitHub-repo is privé, dus geen links naar issues.

## Evaluatie (kennistoetsen en examens)

[_evaluatie/](_evaluatie/) staat **los van het boek**. Het is geen onderdeel van boek, oefeningen
of slides, wordt niet gerenderd of gepubliceerd, en niets in `content/`, `oefeningen/` of `slides/`
verwijst ernaar. Het boek is enkel de bron van kennis: wat in een vraag zit, moet in het boek staan,
en een vraag over hoofdstuk N gebruikt niets uit later hoofdstukken. Omgekeerd verandert er aan het
boek niets door wat hier gebeurt.

**Werk je aan een examen, toets of examenvragen, gebruik dan de skill
[`examen`](.claude/skills/examen/SKILL.md).** Die vraagt eerst wat voor toets het wordt en of er
nieuwe vragen nodig zijn. De uitleg voor Tim staat in [_evaluatie/HOWTO.md](_evaluatie/HOWTO.md).
De kern, ook zonder skill:

- **Schrijf nooit zelf XML.** Vragen staan als YAML in een pool per hoofdstuk
  (`_evaluatie/<reeks>/H1.yml` ...); `_evaluatie/tools/maak_moodlexml.py` maakt de XML.
- **Multiple choice: de juiste vorm.** Eén juist antwoord: `single=true`, 100 / 0. Twee of meer
  juiste: `single=false`, de juiste samen +100%, de foute samen -100%. Het script weigert al de rest.
  Een multiple-choicevraag (mc en ma) heeft altijd **5 mogelijke antwoorden**.
- **Pittige vragen** staan per hoofdstuk in een onderwerp `H<n>_pittig`: enkel leerstof van dat
  hoofdstuk en de vorige, maar meer inzicht. Een toets bevat er **hoogstens 20%** van.
  De oude export `vragen-25-26 ... EXAMENPOOL H1-H8-*.xml` breekt die regel geregeld: enkel inspiratie.
- **`leerstof.md` van de reeks is bindend**, ook als het boek meer bevat (kennistoets 1 = H1 t.e.m. H5,
  [_evaluatie/kennistoets-H1-H5/leerstof.md](_evaluatie/kennistoets-H1-H5/leerstof.md)). ASCII-waarden
  kent de student niet uit het hoofd.
- **Een toets is een set vaste varianten**, getrokken door `_evaluatie/tools/maak_toets.py`, met per
  variant minstens 50% vragen die in geen eerdere toets zaten. `--definitief` schrijft het logboek en
  gebeurt enkel op Tims uitdrukkelijk teken.
- **De `titel` van een vraag verandert nooit**: onderwerp + titel is haar sleutel in het logboek.
- **Evaluatie en boek nooit in één commit.** Alles blijft op `main`, maar een commit bevat ofwel
  enkel `_evaluatie/` (plus wat daar strikt bij hoort, zoals `.claude/skills/examen/` of de
  evaluatiesectie hier), ofwel enkel boekwerk. Evaluatiecommits beginnen met `evaluatie: `.
  Kijk vóór elke commit met `git status` wat er klaarstaat; staan er beide soorten wijzigingen,
  maak dan twee commits. Commit Tim zelf iets gemengd, of vraagt hij "commit alles" terwijl beide
  openstaan, zeg het en stel de splitsing voor. `git log -- _evaluatie` toont zo de volledige
  geschiedenis van de examens apart. Git bewaakt dit ook zelf met de hooks in `.githooks/`
  (`pre-commit` weigert een gemengde commit, `commit-msg` controleert het label). Ze werken pas
  na één keer `git config core.hooksPath .githooks` per computer; op een nieuwe pc of clone zet je
  dat eerst. Neutraal, dus bij allebei toegelaten: `CLAUDE.md`, `.gitignore`, `.gitattributes`,
  `.githooks/`, `.claude/settings.json`. Weigert een hook, los het dan op met een splitsing, niet met `--no-verify`.

## Gotcha

**`build/` is volledig gitignored.** Er zit niets van in de repo, ook de pdf van het handboek niet: `git ls-files build/` geeft niets terug. Let wel op iets anders: een `quarto render` op één hoofdstukbestand van het boek maakt `build/` eerst helemaal leeg en bouwt daarna het volledige boek opnieuw. Wil je snel iets nakijken, render dan het subproject (bv. `quarto render oefeningen/`) of werk in [boekPrintTest/](boekPrintTest/).

**Geen heredocs of meerregelige strings via de shell.** Deze machine draait Windows met
PowerShell; heredoc-quoting (`<<'EOF'`, `@'...'@`) loopt telkens mis op aanhalingstekens,
backticks en `$`. Een bestand of een blok tekst van meer dan één regel schrijf je met het
Write- of Edit-tool, niet via `cat > bestand`, `echo` of `Set-Content`. De shell gebruik je
voor commando's (git, quarto, node), niet om tekst te plaatsen.

## Schrijfstijl & content-conventies

- Taal: **Nederlands** (informeel, je-vorm, vlaams/belgisch).
- **Geen em-dashes (—).** Tim wil ze nergens: niet in de cursustekst, niet in chat. Gebruik in de plaats een gewoon koppel-/liggend streepje (`-`), een dubbele punt, haakjes of gewoon een nieuwe zin.
- Bestanden zijn `.md` of `.qmd`; in Quarto gedragen die zich nagenoeg gelijk.
- Callouts via Quarto-syntax (`:::{.callout-important}` etc.).
- **Nog geen nullables (`string?`, `int?`, ...) gebruiken** in de cursustekst. Nullable reference types worden bewust pas later geïntroduceerd; schrijf in de vroege hoofdstukken gewone types (bv. `string result = Console.ReadLine();`).
- **Terminologie: gebruik "instantievariabelen", niet "velden"** (`fields`). Dit is de term die doorheen het hele boek consistent gehanteerd wordt.
- Hoofdstukken eindigen meestal op een `kennisclips.md` met video-embeds.
- Coding guidelines voor studenten staan onder [content/B_appendix/boetes/](content/B_appendix/boetes/) ("boetes" = puntenaftrek).

### Reviewpersona: de eerstejaars

Nieuwe of herschreven inhoud (handboek, oefeningen, slides) toets je altijd kort af bij een
reviewpersona: **een eerstejaars bachelorstudent IT zonder programmeerervaring**, die enkel kent
wat tot op dat punt in de cursus gezien is. Lees de tekst door zijn ogen: welk woord kent hij nog
niet, waar haakt hij af, welke stap wordt overgeslagen, wat moet hij raden? Pas aan wat hem
blokkeert en meld in je slotoverzicht kort wat de persona opmerkte. Bij werk via een agent hoort
die check in de opdracht.

### Anti-AI-stijl (belangrijk, Tim leest hierop na)

De tekst moet klinken als Tim die het uitlegt, niet als een chatbot die een vergelijking netjes inpakt. Vermijd daarom expliciet:

- **Geen samenvattende "wijze" slotzin** onder een callout of vergelijking. Stop na het laatste codevoorbeeld of na de feitelijke uitleg. Een callout hoeft geen moraal.
- **Geen tel-formules** zoals "Drie talen, hetzelfde idee, telkens een andere naam" of "Dezelfde gedachte in drie talen". De lezer ziet de codeblokken zelf staan; tellen voegt niets toe.
- **Geen symmetrische antithese** als afsluiter, type "Python kiest gemak, C# kiest zekerheid" / "Het keyword verschilt, de gedachte niet" / "X checkt streng, Y pas tijdens de uitvoer". Die spiegelzinnen klinken als een quote-card. Schrijf concreet wat er gebeurt, of laat het weg.
- **Geen grootse rhetoriek** ("de ontwikkelaar van morgen", "moderne talen convergeren"). Houd het nuchter en praktisch.
- **Vetgedrukte taalnamen** (`**Python**`) hooguit één keer per callout, bij de eerste vermelding; daarna gewoon plat.
- Test voor een slotzin: voegt hij een *feit* toe? Zo nee, schrappen. Een vergelijking mag gerust droog en onafgewerkt eindigen.

## Niet aanraken zonder reden

- `_quarto.yml` (root + per subproject) — paden zijn handmatig onderhouden, een mapnaam veranderen breekt de hele sidebar.
- `.quarto/idx/**.json` — caches; staan in `git status` modified maar zijn build-artefacten.
- `site_libs/` — door Quarto gegenereerd.

## Afbeeldingen moderniseren (Excalidraw-stijl)

Lopend project: de bestaande schematische afbeeldingen omzetten naar een hand-drawn,
speelse stijl in de huisstijlkleuren. We doen dit **hoofdstuk per hoofdstuk**.

**De volledige werkwijze, de API en de checklist staan in de skill
[`afbeelding`](.claude/skills/afbeelding/SKILL.md).** Gebruik die skill telkens er een
figuur getekend of hertekend moet worden. De harde regels, ook als de skill niet geladen is:

1. Per hoofdstuk **eerst aan Tim vragen** welke afbeelding(en) we aanpakken. Niet zelf kiezen.
2. De nieuwe afbeelding **niet** in het boek verwerken. Tim bekijkt eerst alles zelf.
3. Per afbeelding blijven **drie** bestanden bewaard: de PNG naast het origineel (suffix
   `NEW` als ze een bestaande figuur vervangt, `Alternatief` voor een vrijere variant), en
   de SVG plus het generatorscript in de submap `imagegen/`.
4. **Geen titel** boven de afbeelding, **tekst overlapt nooit** met lijnen of pijlen, en
   **verzin niets** dat niet in het origineel staat.
5. De stijl zelf (rough.js, font Caveat, de kleuren uit [_brand.yml](_brand.yml)) ligt vast
   en wijzigt niet zonder Tim.

Referentie-implementatie: [content/assets/5_arrays/imagegen/](content/assets/5_arrays/imagegen/).
De nieuwste gedeelde stijl-helpers staan in `content/assets/6_klassen/imagegen/excal.js`.

## Kennisclips en reels (Remotion)

Nieuwe kennisclips (liggend) en korte Instagram-reels (staand) maken we met Remotion in
[_kennisclips/](_kennisclips/README.md); Quarto negeert die map. **De werkwijze, de huisstijl en de
valkuilen staan in de skill [`videoclip`](.claude/skills/videoclip/SKILL.md).** Welke kennisclips
nog ontbreken of verouderd zijn, staat in [future/kennisclips-rapport.md](future/kennisclips-rapport.md).

Op de site krijgt elk hoofdstuk een kennisclippagina, `slides/kennisclips_hNN.qmd`, gelinkt in de
kolom "Kennisclips" van [slides/overzicht.qmd](slides/overzicht.qmd). Het zijn gewone html-pagina's,
geen decks: de pdf-stap in de CI slaat `kennisclips_*` over. Bewust niet in een submap: daar wijst
de `logo-href` van de navbar naar een onbestaande pagina.

### Nieuwe kennisclips verwerken

Tim maakt de clips per hoofdstuk, in `_kennisclips/zie-scherp-scherper/clips/<map>/` (één map per
clip, de video in `out/<clip>.mp4`; `serieplan.json` beschrijft de reeks). Hij uploadt elke mp4 zelf
naar YouTube. De koppeling clip ↔ YouTube staat in `clips/<map>/youtube.json`, dat in git zit
(`out/` niet). Alles loopt via [scripts/kennisclips-youtube.mjs](scripts/kennisclips-youtube.mjs):

1. **"Hoofdstuk X is gerenderd":** draai `node scripts/kennisclips-youtube.mjs klaarzetten <map>`.
   Dat zet per mp4 de titel, een voorstel voor de YouTube-beschrijving en een leeg veld `youtube`
   in `youtube.json`. Meld Tim welke clips erin staan. Hij uploadt (de `.srt` naast de mp4 kan
   mee als ondertitels) en plakt de links. Opnieuw draaien laat ingevulde links staan.
2. **"Geüpload":** draai `node scripts/kennisclips-youtube.mjs pagina <map>`. Dat zet de clips als
   `###`-kop plus `{{< video >}}` op `slides/kennisclips_hNN.qmd` en haalt in
   [slides/overzicht.qmd](slides/overzicht.qmd) de `.bezig` weg bij de clips van dat hoofdstuk. Meld clips zonder link. Daarna, in dezelfde beurt:
   De pagina is een **galerij**: een raster van miniaturen (`<div class="clipgalerij">` in een
   `{=html}`-blok) waarvan een klik de clip in een dialoogvenster opent. Heeft een clip een eigen
   miniatuur (`miniatuur.bestand` in `clip.json`), dan kopieert het script die naar
   `slides/assets/kennisclips/hNN/` en gebruikt het die; anders die van YouTube. Het script schrijft dat zelf
   en zet `include-after-body: clipgalerij.html` in de frontmatter. Schrijf dus geen `{{< video >}}`
   per clip. De stijl zit in [custom.scss](custom.scss) (`.clipgalerij`, `.clipvenster`), het venster en
   het scriptje in [slides/clipgalerij.html](slides/clipgalerij.html). Voorbeeld: `slides/kennisclips_h04.qmd`.
3. **In het boek** vervang je in `content/<map>/kennisclips.md` (sectie "Zie scherpst") de inhoud
   van de tegel *Kennisclips* door één link naar die pagina:
   `https://timdams.github.io/ziescherpscherper/slides/kennisclips_hNN.html`. Doe hetzelfde met de
   sectie van dat hoofdstuk in [content/allvideos1.md](content/allvideos1.md) of
   [content/allvideos2.md](content/allvideos2.md). Let op de scheve nummering: H1 is `0_intro`,
   H18 is `21_bestanden`.
   Zet daarnaast in de hoofdstuktekst bij elke clip één verwijzing, aan het einde van het stuk
   leerstof dat ze uitlegt (vlak voor de volgende kop, nooit midden in een uitleg):
   `[<i class="bi bi-play-btn"></i> Kennisclip: [Titel](https://youtu.be/...)]{.zss-clip}`.
   Dat mag zonder te vragen; de stijl staat in [custom.scss](custom.scss). Voorbeeld: `content/3_data/`.
4. **In de lesdeck** van dat hoofdstuk (`slides/hNN_<naam>.qmd`, de slide "Meer weten" achteraan)
   vervang je de kaarten met Panopto-links door één kaart `:::: {.kaarten .k1}` met een link naar
   `kennisclips_hNN.qmd` en in één regel het aantal clips en de onderwerpen. Een kaart per clip
   past niet op de slide. Voorbeeld: [slides/h04_data.qmd](slides/h04_data.qmd).
5. **De oude clips** (de Panopto-links uit die tegel, uit allvideos en uit de lesdeck) gaan naar
   [_archive/Kenniscliparchief.md](_archive/Kenniscliparchief.md), onder een kop per hoofdstuk.
   Die map wordt niet gepubliceerd. Gooi geen oude link weg.

## "Wat nu?"

Vraagt Tim **"wat nu?"** (of iets van die strekking: "waar waren we gebleven", "wat is het
volgende"), lees dan [future/watnu.md](future/watnu.md) en stel het eerstvolgende openstaande
item voor.

- De lijst staat op volgorde van ouderdom: **hoe ouder het gat, hoe belangrijker**. Stel het
  bovenste openstaande item voor, niet het makkelijkste.
- Geef er in twee, drie zinnen bij wat dat item concreet inhoudt, hoeveel werk het is en
  waarom het bovenaan staat. Noem ook meteen het volgende item, zodat Tim kan kiezen.
- Ga eerst na of het item echt nog open staat. De sneltests staan bovenaan het bestand;
  een run kan intussen zijn afgewerkt zonder dat de lijst is bijgewerkt.
- **Is een item af, schrap het uit de lijst** en zet één regel in het logboek onderaan
  (datum plus wat er gebeurd is). Deelresultaat betekent: het item aanpassen, niet schrappen.
- Nieuwe gaten die opduiken voeg je toe op de plek die bij hun ouderdom past.

## Toekomst ideeen

* Ziescherpst teksten (linq) itegrereren
* "Zoek de chatgpt fout": cursus meer AI futureproof maken (i.E. minder "code schrijven", "meer code lezen/begrijpen")

Jouw stem

Twee teksten die je zelf schreef en goed vindt, tonen de AI hoe jij klinkt. Laat haar de regels eruit halen. Herken je jezelf?

Jouw stem

“De teksten in mijn document Stijlvoorbeeld heb ik zelf geschreven en ik weet dat ze goed zijn. Wat zijn de regels die deze teksten volgen? Geef ze als een lijst waar ik het mee oneens kan zijn, en maak elke regel zo dat ik ze kan nakijken.”

Je eigen stem, zwart op wit, als regels. Wat je niet herkent, schrap je. Wat klopt, plak je onder je instructies, als blok Mijn stem.

Instructies

“Lees mijn instructies. Welke regel kan je niet toepassen, of begrijp je niet?”

Laat de AI eerst eens je afspraken nalezen. Wat ze hier niet begrijpt, gaat ze straks raden.

Instructies

“Schrijf de paragraaf over de celkern, volgens mijn instructies. Zeg daarna welke regels uit mijn instructies je toegepast hebt.”

Laat haar zelf opsommen welke regels ze volgde. Dan kijk jij na of het klopt.

Resultaat

Het robotje springt op een podium onder een bord met DEMO, het rode touw loopt links het beeld uit.

Live in Claude.

Het gesprek

Plan

Laat de AI eerst een plan maken: de opbouw, wat in elk stuk komt, welk leerdoel erbij hoort. Jij streept door en vult aan. Pas dan mag ze beginnen schrijven.

Tipje: plannen doe je met een duurder, slimmer model. Het uitwerken mag daarna met een goedkoper.

Keep it simple

Begin klein: “maak de paragraaf over de celkern”. Vraag je meteen de hele cursus, dan krijg je een stapel tekst die je nooit allemaal naleest (lees: een lawine waar jij onder ligt). Bouw stilletjesaan op.

Promptsjabloon

“Ik wil [een opzet / vijf oefeningen / een toets] voor [hoofdstuk of onderwerp].

  • Doel: leerplandoel [nummer] uit mijn Leerplandoelen, op beheersingsniveau [niveau].
  • Voor wie: [graad, richting], en wat ze al kennen volgens mijn Beginsituatie.
  • Vorm: [lengte, opbouw, ruimte voor antwoorden].
  • Niet: [wat je niet wil zien].

Geef eerst een plan in een genummerde lijst, en wacht tot ik het goedkeur.”

Het sjabloon voor in je achterzak. Vul de haakjes in, en klaar.

Ondervragen

“Blijf me ondervragen tot je duidelijk weet wat ik wil. Geef gerust advies, maar schrijf nog niets. Vraag me telkens of ik akkoord ben met je advies.”

Weet je zelf nog niet goed wat je wil? Draai de rollen om, en laat de AI de vragen stellen.

Resultaat

Het robotje springt op een podium onder een bord met DEMO, het rode touw loopt links het beeld uit.

Live in Claude: het sjabloon ingevuld voor De cel.

Aan de slag

Varianten

Eén basisopdracht, hetzelfde leerplandoel, en een variant per leerling die het nodig heeft.

Varianten

“Hier is mijn basisopdracht over de vergroting van de microscoop (LPD 6, toepassen). Maak er drie varianten van: een voor een leerling die meer ondersteuning nodig heeft, een voor een leerling die meer uitdaging aankan, en een taalarme versie met korte zinnen en een woordenlijst. Elke variant toetst hetzelfde leerplandoel. Zet bij elke variant wat je veranderde.”

Differentiatie in niveau en taal, en het doel schuift niet mee.

Varianten

“Maak van dezelfde basisopdracht een versie die een leerling zelfstandig kan maken, met tussenstappen en een controlevraag na elke stap. Zeg welke stap je weglaat voor een sterke leerling.”

Differentiatie in zelfstandigheid: de steigers staan er al, en voor een sterke leerling haal je er een paar weg.

Resultaat

Het robotje springt op een podium onder een bord met DEMO, het rode touw loopt links het beeld uit.

Live in Claude.

Toetsen

Eerst de toetsmatrijs, dan de vragen, en bij elke vraag het doel dat ze toetst.

Toetsen

“Maak een toetsmatrijs voor het hoofdstuk De cel: per leerplandoel uit mijn Leerplandoelen het beheersingsniveau, het aantal vragen en de punten. Schrijf nog geen vragen.”

Waarom de matrijs eerst? Zo zie je meteen of er een doel uit de boot valt.

Toetsen

“Schrijf nu de vragen volgens die matrijs, gevarieerd: meerkeuze, open vragen, een schema van de cel om aan te vullen. Zet bij elke vraag welk leerdoel ze toetst, en maak een verbetersleutel met de puntenverdeling.”

En de verbetersleutel krijg je er gratis bij.

Toetsen

“Maak van vraag [nummer] een meerkeuzevraag met vier antwoorden. Elk fout antwoord is een fout die een leerling uit mijn Beginsituatie echt zou maken. Zeg bij elk fout antwoord welke fout het is. Maak alle vier de antwoorden even lang en even gedetailleerd, zodat de vorm niet verraadt welk antwoord juist is.”

Afleiders die geen onzin zijn: elke foute optie is een fout die je leerlingen echt maken.

Resultaat

Het robotje springt op een podium onder een bord met DEMO, het rode touw loopt links het beeld uit.

Live in Claude.

AI als Word-assistent

Word temmen

“Maak een Word-sjabloon (.docx) voor mijn cursus biologie: Kop 1 tot Kop 3 met gekoppelde nummering, een automatische inhoudstafel vooraan, een stijl Opdracht met een kader en vier lege lijnen voor het antwoord, en een rustige bladspiegel met één lettertype en ruime marges. Zet er een voorbeeldpagina in die elke stijl één keer gebruikt.”

Eén keer goed maken, en daarna elk hoofdstuk erin gieten.

Word temmen

“Hier is mijn hoofdstuk De cel. De opmaak is met de hand gedaan. Zet elke titel om naar de juiste kopstijl en verander niets aan de tekst. Geef me het Word-bestand terug, en zeg welke stukken je niet zeker kon plaatsen.”

Jaren handmatige opmaak (lees: vet, groot, en nummers met de hand getypt) omgezet naar kopstijlen. Daarna nummeren en herschikken vanzelf.

Word temmen

“In mijn Word-document begint de nummering na hoofdstuk 2 opnieuw bij 1. Leg me stap voor stap uit hoe ik dat oplos.”

Uitleg op maat, voor de vraag die je nooit aan je ICT-collega durfde te stellen.

Word temmen

“Schrijf de reactievergelijking van de fotosynthese als Word-vergelijking, met de subscripts juist.”

Een echte Word-vergelijking. Gedaan met de 2 van CO2 met de hand te verkleinen.

Van cursus naar slides

“Maak van mijn hoofdstuk De cel een PowerPoint voor in de les: één dia per leerplandoel, en na elk deel een dia met twee controlevragen. Gebruik enkel wat in het hoofdstuk staat.”

Slides en controlevragen uit dezelfde bron als je cursus. Pas je het hoofdstuk aan, dan maak je ze gewoon opnieuw.

Resultaat

Het robotje springt op een podium onder een bord met DEMO, het rode touw loopt links het beeld uit.

Live in Claude: het sjabloon, de opgekuiste cursus en de PowerPoint openen in Word.

Beelden maken

In het gesprek tekent Claude matig, haar designer wél. Hoe mooi het ook oogt: kijk elk label na.

In Copilot: Copilot maakt zelf beelden. Ook daar: kijk elk label na.

Cheatsheet

“Maak in Designer een onepager als een cheatsheet voor deze workshop. Visueel boeiend, inhoudelijk nuttig. Ondervraag me voor je begint.”

Ondervragen werkt ook buiten je cursus: zo begon de cheatsheet van vandaag.

Resultaat

Het robotje springt op een podium onder een bord met DEMO, het rode touw loopt links het beeld uit.

Live in Claude: de designer tekent de cel.

Word temmen

In Copilot: dit deel sla je over, tot aan Nakijken.

Claude in Word, PowerPoint en Excel

Claude komt naar je document, in een zijpaneel. Geen gekopieer en geplak meer, en je kopstijlen blijven staan.

Resultaat

Het robotje springt op een podium onder een bord met DEMO, het rode touw loopt links het beeld uit.

Live in de extensies voor Word en PowerPoint.

Nakijken

Meerdere rollen

Zet je AI een andere bril op: de collega die je vak overneemt, de leerling die alles wil overslaan, de inspectie. Elke persona ziet andere dingen.

Persona

“Lees mijn hoofdstuk De cel als een collega die dit vak overneemt. Geef een genummerde lijst van hoogstens tien opmerkingen. Bij elke opmerking: de zin waar het over gaat, letterlijk, wat er wringt, en welke regel uit mijn afspraken of welk leerplandoel erbij hoort. Herschrijf nog niets.”

De collega die je vak overneemt, leest mee. Zonder dat er koffiekoeken aan te pas komen.

Persona

“Lees mijn hoofdstuk De cel als een leerling van 15 die het één keer leest, de avond voor de toets. Waar haak je af, en welke stukken sla je over? Welke drie dingen onthoud je? Welk leerplandoel mis je daardoor op de toets? Citeer bij elke opmerking de zin waar het over gaat. Herschrijf nog niets.”

De avond voor de toets, met één oog op de gsm. Wat blijft er hangen?

Persona

“Lees mijn hoofdstuk De cel na, achtereenvolgens als elk van deze persona’s:

  • [een leerling die het de avond voor de toets leest]
  • [een leerling met een taalachterstand]
  • [de onderwijsinspectie]
  • [een collega die dit vak overneemt]

Blijf per persona in je rol, en geef hoogstens vijf opmerkingen, elk met de letterlijke zin waar ze over gaat.

Leg daarna alle opmerkingen naast elkaar. Waar zeggen de persona’s hetzelfde? Waar spreken ze elkaar tegen? Stel per tegenstrijdigheid één aanpassing voor die hen verzoent, of zeg welke persona voorrang krijgt en waarom, met een verwijzing naar mijn afspraken of mijn Leerplandoelen.

Sluit af met een genummerde lijst aanbevelingen: per aanbeveling wat ik aanpas en welke opmerkingen ze oplost. Zet bovenaan wat het meest oplevert voor het minste werk. Herschrijf nog niets.”

Het hele A-team tegelijk: waar ze het eens zijn, waar niet, en wat je eerst aanpakt.

Resultaat

Het robotje springt op een podium onder een bord met DEMO, het rode touw loopt links het beeld uit.

Live in Claude: het A-team leest De cel na.

Nalezen

Een collega: “AI is een backloggenerator.” Jouw nieuwe job wordt nalezen, nalezen, nalezen.

Nalezen

“Welk leerplandoel toetst elke vraag van deze toets? Citeer het doel uit mijn Leerplandoelen.”

Staat dat doel echt in je leerplan, of heeft ze het verzonnen?

Nalezen

“Welke begrippen gebruik ik in dit hoofdstuk die volgens mijn Beginsituatie nog niet gekend zijn?”

Welke woorden gebruik je al voor je ze uitlegt? Je leerlingen merken het meteen.

Nalezen

“Waar staat de regel die je bij opmerking [nummer] noemt, in mijn afspraken?”

Steunt een opmerking op een echte afspraak, of op lucht?

Het landschap

Alles nog eens rustig nalezen

Alles van vandaag staat in de handleiding Jij houdt het touw vast: de zes stappen, wat verder gaat, De cel als voorbeeld, en de startmap om te downloaden. Voor als je thuis denkt: hoe ging dat ook alweer?

timdams.github.io/websiteCursusAISchrijven

Bedankt!

Voor wie verder wil

Verbeterlijst

Twee keer hetzelfde verbeterd? Dan wordt het een regel in je instructies.

In Copilot: de regel komt in een Copilot Page improve, die als document in je notebook zit.

Verbeterlijst

“Verbeter ik je in een gesprek twee keer op hetzelfde punt, zeg me dat dan in de chat. Geef de regel die ik in mijn instructies moet zetten, zo geschreven dat ik ze kan nakijken.”

Zet dit onderaan je instructies, en de AI stelt zelf de regel voor. Jij beslist of ze erin komt.

In Copilot: Copilot schrijft niet in je notebook. Plak de regel zelf in je Page improve, en zet in je instructies: “Lees telkens de regels van de improve-page na en hanteer ze in al onze chats.”

Skill

Een taak die in elk project terugkeert, wordt een skill: een vast recept, één keer geschreven, voor al je projecten.

In Copilot: skills sla je over.

Skill

“Maak van wat we net gedaan hebben een skill, met de skill-creator. Neem de stappen in volgorde, wat er onderweg misliep, en de stap die ik nooit mag overslaan. Leg me uit hoe ik de skill moet installeren en nadien gebruiken.”

Lukte het eindelijk? Laat dat gesprek dan niet verloren gaan, en maak er een vaste werkwijze van.

Excalidraw

const kolommen = [
  {
    kop: ['een bron die',
          'niet bestaat'],
    voor: ['(Janssens & De Vos,',
           '2019, p. 84)'],
    ...

De tekening van de valkuilen komt uit een script. Elk label staat er letterlijk in. Tikfout in een label? Eén woord aanpassen, en opnieuw tekenen.

Excalidraw

“Teken met de skill excalidraw-figuur een plantencel en een dierlijke cel naast elkaar, voor mijn hoofdstuk De cel. Neem de labels letterlijk over uit mijn Hoofdstuk De cel: celwand, vacuole, bladgroenkorrels, mitochondriën. Bewaar het script, zodat ik een label later zelf kan aanpassen.”

Labels die kloppen, en een schema dat meeverandert met je hoofdstuk.

In Copilot: dit lukt niet, Copilot draait geen script op je computer.

Remotion

Een filmpje uit code? Inderdaad. Remotion maakt video met code, en Claude schrijft die code.

Deze reel maakte Claude met mijn skill excalidraw-videoclip, in dezelfde handgetekende stijl.

Remotion

“Maak met de skill excalidraw-videoclip een kennisclip over osmose, voor mijn hoofdstuk De cel. Schrijf eerst het script: per scène wat er te zien is en wat er gezegd wordt. Hou je aan de uitleg over osmose in mijn Stijlvoorbeeld. Begin pas te animeren als ik het script goedkeur.”

Eerst het script nalezen: een scène schrappen kost dan nog niets.

In Copilot: dit lukt niet, Copilot draait geen code op je computer.