Skip to content

AI Workflow & Regels

Instructies voor AI assistenten (Warp Agent) die werken aan het Voedingsgeneeskunde project.

Projectcontext

  • Locatie: /var/www/sites/docs.voedingsgeneeskunde
  • Technologie: Zensical (Material for MkDocs)
  • Taal: Nederlands
  • Doel: Technische documentatie en dagboek voor ontwikkeling van voedingsgeneeskunde.nl
  • Platform: Drupal 10 met Commerce 2.x

Sessie-afsluitingsprocedure

Aan het einde van elke sessie MOET je de volgende stappen uitvoeren IN DEZE VOLGORDE:

1. Sessie-verslag aanmaken

Maak een blogpost in docs/sessies/:

  • Bestandsnaam: YYYYMMDD-korte-beschrijving.md
  • Format: Markdown met YAML frontmatter

Verplichte frontmatter:

---
title: Korte beschrijvende titel
date: YYYY-MM-DD
tags: [Tag1, Tag2, Tag3]
---

Verplichte structuur: - H1: Volledige sessietitel met datum (bijv. "Sessie 2 januari 2025: Hosting Setup") - Sectie "Doel": Wat was het hoofddoel van deze sessie - Inhoud: Gedetailleerde technische beschrijving van wat er is gedaan - Subsecties: Gebruik H2/H3 voor verschillende onderwerpen - Resultaat/Oplossing: Wat is bereikt of opgelost - Tags: Relevante categorisering (zie lijst hieronder)

2. Overzichtspagina's bijwerken

Update de volgende bestanden:

  1. docs/sessies/index.md:
  2. Voeg nieuwe sessie toe in chronologische volgorde (nieuwste bovenaan)
  3. Groepeer per maand en week
  4. Formaat: - [YYYYMMDD-beschrijving](YYYYMMDD-beschrijving.md) - Tags: Tag1, Tag2

  5. docs/index.md:

  6. Update de sectie "Laatste Updates" met korte samenvatting
  7. Voeg datum en 2-4 bullet points toe met hoofdpunten

  8. docs/project-traject.md:

  9. Alleen als de sessie een belangrijke mijlpaal of nieuwe fase vertegenwoordigt
  10. Voeg toe aan de timeline met tags
  11. Groepeer per fase en week

  12. docs/everlasting-todo-lijst.md:

  13. Markeer voltooide taken als DONE
  14. Voeg nieuwe taken toe indien nodig
  15. Houd de lijst actueel

3. Bestaande documentatie bijwerken

Als de sessie een specifiek onderwerp behandelde, update de relevante technische documentatie:

  • docs/documentatie/commerce.md - Voor webshop/commerce wijzigingen
  • docs/documentatie/user-profiles.md - Voor user management
  • docs/documentatie/integraties.md - Voor externe diensten (Mollie, Mailchimp, etc.)
  • docs/documentatie/vgbc.md - Voor VGBC ticket systeem

Voeg nieuwe secties toe of update bestaande met de nieuwe inzichten/wijzigingen.

4. Validatie

Voordat je de build draait:

  • Controleer of alle links werken
  • Controleer of frontmatter correct is
  • Controleer of code blocks syntax highlighting hebben

5. Zensical build uitvoeren

Na het bijwerken van alle documentatie:

zensical build

Als de build faalt: - Lees de error output zorgvuldig - Los het probleem op (meestal YAML syntax of markdown formatting) - Run opnieuw

Markdown Documentatie-eisen

Opmaak

  1. GEEN emojis of icoontjes - Pure tekst en structuur
  2. Duidelijke koppenstructuur: Gebruik H1-H6 logisch en consistent
  3. Code blocks: Altijd met taalaanduiding voor syntax highlighting
  4. Lijsten: Voor opsommingen en stappen
  5. Geen markdown tabellen - Gebruik lijsten of geneste structuren

AI-vriendelijke structuur

  1. YAML frontmatter voor metadata (title, date, tags)
  2. Beschrijvende kopjes - Geen vage titels zoals "Probleem" maar "Race Condition in Mollie Webhook"
  3. Consistente terminologie - Gebruik dezelfde termen voor dezelfde concepten
  4. Expliciete links - Link naar gerelateerde documenten waar relevant
  5. Code voorbeelden - Volledig en werkend, niet fragmentarisch
  6. Technische details - Bestandspaden, functienamen, class names expliciet vermelden

Schrijfstijl

  • Toon: Technisch maar toegankelijk
  • Perspectief: Gebruik "we" voor gezamenlijke acties, beschrijvend voor technische details
  • Tijd: Gebruik verleden tijd voor sessieverslagen, tegenwoordige tijd voor documentatie
  • Structuur: Begin met context, dan probleem, dan oplossing

Doorzoekbaarheid

  • Schrijf specifieke termen en concepten volledig uit
  • Gebruik tags voor categorisering
  • Vermijd afkortingen zonder uitleg bij eerste gebruik
  • Gebruik volledige paden en bestandsnamen (bijv. web/modules/custom/vgbc/src/EventSubscriber/PaymentWebhookHandler.php)

Communicatie en Werkwijze

Destructieve handelingen

ALTIJD EERST OVERLEGGEN voordat je: - Bestanden verwijdert - Bestanden overschrijft (tenzij expliciet gevraagd) - Database-wijzigingen doorvoert (DROP, TRUNCATE, DELETE zonder WHERE) - Config-wijzigingen uitvoert op productie - Git commits maakt of pusht - Composer packages verwijdert - Drupal modules uninstalled

Vraag: "Mag ik [actie] uitvoeren?" en wacht op bevestiging.

Werk tempo

  • Werk niet te snel door - neem tijd voor belangrijke beslissingen
  • Leg uit wat je gaat doen bij complexe of onomkeerbare operaties
  • Vraag bevestiging bij twijfel
  • Geef updates tijdens langdurige operaties

Sessie workflow

  1. Start:
  2. Check docs/everlasting-todo-lijst.md
  3. Lees relevante documentatie in docs/documentatie/
  4. Vraag naar prioriteiten als er meerdere taken zijn

  5. Tijdens werk:

  6. Test wijzigingen waar mogelijk
  7. Documenteer belangrijke bevindingen
  8. Communiceer over blokkades of onverwachte problemen

  9. Einde:

  10. Maak sessie-verslag
  11. Update overzichten en documentatie
  12. Run zensical build
  13. Vraag of gebruiker tevreden is

Git Workflow

Commits

Vraag altijd eerst voordat je commit of push.

Commit message format:

Type: Korte beschrijving (max 50 chars)

Uitgebreide beschrijving van de wijzigingen en waarom ze
nodig waren. Gebruik meerdere paragrafen indien nodig.

- Bullet points voor specifieke wijzigingen
- Verwijs naar gerelateerde issues of tickets

Co-Authored-By: Warp <agent@warp.dev>

Types: - Feat: Nieuwe functionaliteit - Fix: Bug fix - Docs: Documentatie wijzigingen - Refactor: Code refactoring zonder functionaliteitswijziging - Style: Formatting, code style - Test: Tests toevoegen of wijzigen - Chore: Onderhoudstaken, dependencies

Branches

  • Werk in feature branches voor grote wijzigingen
  • Beschrijvende branch names: feature/mollie-webhook-fix, docs/hosting-setup
  • Vraag naar branch strategie bij twijfel

Backup Procedure

Voor destructieve operaties of grote wijzigingen:

  1. Database backup:

    /var/www/sites/docs.voedingsgeneeskunde/docs/scripts/backup-script.sh
    

  2. Config export (voor Drupal site):

    drush config:export
    

  3. Git status check:

    git status
    git diff
    

Vraag gebruiker of backup nodig is bij twijfel.

Testing en Validatie

Na code wijzigingen:

  1. Syntax check: Controleer PHP syntax met php -l bestand.php
  2. Drupal cache clear: drush cr
  3. Test functionaliteit: Test de wijziging handmatig of met drush commands
  4. Check logs: drush watchdog:show voor Drupal errors

Na documentatie wijzigingen:

  1. Zensical build: zensical build
  2. Link check: Controleer of interne links werken
  3. Preview: Check de gegenereerde HTML in site/ directory

Voor deployment:

Volg de checklist in docs/scripts/live-migration-checklist.md

Tag Taxonomie

Gebruik deze consistente tags voor categorisering (combineer waar relevant):

Functioneel: - Commerce - E-commerce/webshop gerelateerd - UX - User experience verbeteringen - VGBC - VGBC ticket systeem - Users - User management en profielen - Integraties - Externe diensten (Mailchimp, Mollie, etc.)

Technisch: - Hosting - Server, MySQL, UNIX-Socket, beveiliging, Git - Migration - Deployment en migraties - Patches - Custom patches en fixes - Setup - Initiƫle configuraties - Scripts - Tools en automatisering

Meta: - Critical - Urgente fixes - Documentatie - Documentatie updates - Refactor - Code verbetering zonder functionaliteitswijziging

Voorbeelden: - [Commerce, Critical, Patches] - Urgente webshop fix met patch - [Hosting, Setup, Scripts] - Server configuratie met automation - [VGBC, UX, Refactor] - Ticket systeem verbetering

Bestandslocaties en Structuur

Documentatie

  • Sessieverslagen: docs/sessies/YYYYMMDD-beschrijving.md
  • Sessies overzicht: docs/sessies/index.md
  • Hoofdpagina: docs/index.md
  • Project timeline: docs/project-traject.md
  • Todo lijst: docs/everlasting-todo-lijst.md
  • Technische docs: docs/documentatie/*.md
  • Scripts: docs/scripts/
  • Project docs: docs/project/

Drupal (hoofdproject)

Indien je aan de Drupal site werkt (niet de docs): - Custom modules: web/modules/custom/ - Custom themes: web/themes/custom/ - Config: config/sync/ - Patches: patches/

Veelvoorkomende Taken

Nieuwe sessie starten

  1. Lees docs/everlasting-todo-lijst.md
  2. Lees relevante docs in docs/documentatie/
  3. Check git status voor uncommitted changes
  4. Vraag naar prioriteiten

Module/Code wijziging

  1. Zoek bestaande code/module
  2. Maak wijziging
  3. Test functionaliteit
  4. drush cr
  5. Documenteer in sessie-verslag
  6. Update technische documentatie indien relevant

Nieuwe feature documenteren

  1. Maak sectie in relevante docs/documentatie/*.md
  2. Beschrijf architectuur, implementatie, usage
  3. Link vanuit sessie-verslag
  4. Update docs/index.md indien belangrijk

Troubleshooting

  1. Check Drupal logs: drush watchdog:show
  2. Check PHP errors: tail -f /var/log/apache2/error.log
  3. Check database: drush sqlc
  4. Documenteer probleem en oplossing uitgebreid in sessie-verslag

Credits Beheer

Voorkom onnodig token verbruik: - Lees alleen relevante bestanden - Gebruik grep/search voor specifieke zoektermen - Vraag om bevestiging bij grote operaties - Gebruik efficiƫnte commands (bijv. head i.p.v. cat voor grote bestanden) - Batch file operations waar mogelijk

Bij twijfel: vraag "Deze operatie kan veel tokens kosten, wil je doorgaan?"

Belangrijke Drupal Concepten

Voor AI assistenten die minder bekend zijn met Drupal: - Entity: Drupal's data objecten (Node, User, Commerce Product, etc.) - Config: YAML bestanden in config/sync/ - Drush: CLI tool voor Drupal (drush cr, drush config:export, etc.) - Module: Uitbreidingen in web/modules/ (contrib vs custom) - Service: Dependency injection via *.services.yml - Event Subscriber: Hook into Drupal events - Commerce Order: Bestelling met Line Items, Payments, etc.

Vraag om uitleg als een concept onduidelijk is.