Voeg eindgebruiker-documentatie toe aan een feature
Aan het einde van deze gids heeft een feature in apps/frontend/src/app/features/ of apps/api/src/modules/ een userdocs/index.md die binnen 2 minuten na merge naar main als artikel in de Freescout Knowledge Base verschijnt onder mailbox 1.
Voorwaarden:
- De feature is user-facing (een gebruiker, beheerder of admin ziet het gedrag).
- Je werkt in een Claude Code sessie binnen
tapster-backend. - De
freescout-sync.ymlworkflow staat actief opmain(na fase 3 merge).
Voor het verschil tussen eindgebruiker-documentatie en interne documentatie, zie docs/CONTRIBUTING-DOCS.md. Voor de volledige conventie (frontmatter-velden, stijlregels), zie apps/frontend/AGENTS.md.
Stappen
1. Roep de slash-command aan
Vanuit Claude Code, met het pad naar de feature-folder:
/generate-userdocs apps/frontend/src/app/features/<scope>/<feature>
Voor een backend-module:
/generate-userdocs apps/api/src/modules/<module>
De slash-command leest routes, page-templates, components en i18n; past de Tapster stijlregels toe (Nederlands, geen em-dashes, korte zinnen, tweede persoon); en schrijft userdocs/index.md met geldige frontmatter.
2. Review de gegenereerde tekst
Open het bestand dat de agent heeft geschreven. Controleer:
- Elke UI-label klopt met wat in de templates staat (de agent mag niets verzinnen, maar het is jouw werk om dat te bevestigen).
- De
audienceklopt:gebruiker,beheerderofadmin(matched met de feature-folder — zie tabel hieronder). categoryheeft het patroonGebruiker > ...,Beheerder > ...ofAdmin > ...overeenkomstig de audience.
| Feature-folder | audience |
category-prefix |
|---|---|---|
apps/frontend/src/app/features/user/... |
gebruiker |
Gebruiker > ... |
apps/frontend/src/app/features/backoffice/... |
beheerder |
Beheerder > ... |
apps/frontend/src/app/features/admin/... |
admin |
Admin > ... |
apps/frontend/src/app/features/global/... |
afhankelijk van wie het ziet | matchend met audience |
apps/api/src/modules/... |
afhankelijk van wie het raakt | matchend met audience |
statusstaat opdraftzolang je nog niet zeker bent. Oppublishedzodra de tekst geschikt is voor live KB.
Pas tekstuele dingen aan waar nodig. Behoud freescout_article_id, freescout_category_id, slug en content_hash zoals de agent ze heeft achtergelaten (leeg bij nieuwe userdoc, gevuld bij update).
3. Valideer lokaal
npm run userdocs:validate
Verwacht: ✓ N userdoc(s) valide. Bij een Zod-fout: lees de melding, fix de frontmatter, run opnieuw.
4. Commit en push
git checkout -b feat/userdocs-<feature-naam>
git add apps/frontend/src/app/features/<scope>/<feature>/userdocs/
git commit -m "docs(userdocs): voeg gids voor <feature-naam>"
git push -u origin feat/userdocs-<feature-naam>
De PR wordt automatisch geopend. CI-check userdocs-check valideert je frontmatter; als productie-code is gewijzigd zonder bijbehorende userdocs-mutatie, plaatst de bot een waarschuwingscomment.
5. Merge naar main
Na review en groene checks: mergen. Daarna:
freescout-sync.ymltriggert binnen seconden.- Sync rendert je markdown naar HTML, regelt category-pad (recursief, idempotent), POSTet het artikel naar Freescout KB onder mailbox 1.
- Bot commit op
main:chore(userdocs): sync to freescout KB [skip ci]met de bijgewerkte frontmatter (freescout_article_id,freescout_category_id,content_hash). - Bij een volgende merge zonder content-wijziging skipt de sync via content-hash.
Verifieer in Freescout admin onder Knowledge Base dat het artikel verschijnt.
Wanneer hoort er een userdoc bij een PR?
| PR-inhoud | userdoc nodig? |
|---|---|
| Nieuwe user-facing feature | Ja |
| Wijziging in bestaand UI-gedrag dat een gebruiker/beheerder/admin ziet | Ja, update bestaande |
| Pure refactor zonder UI-impact | Nee |
| Pure styling-tweak (kleuren, padding) | Nee |
| Bug-fix die voorheen gedocumenteerd gedrag herstelt | Optioneel, alleen als de oude userdoc daadwerkelijk fout was |
Nieuwe admin-only feature in apps/api/src/modules/ |
Ja als een beheerder direct met het proces interacteert |
| Pure infrastructuur (queues, scim-sync) | Nee |
Twijfel je? Lees de bestaande apps/frontend/src/app/features/user/zoeken/userdocs/index.md als referentie.
Een userdoc weghalen of intrekken
Wil je een artikel intrekken (bijvoorbeeld omdat de feature is verwijderd)? Zet status: draft in de frontmatter en mergeer. De volgende sync detecteert de status-flip en doet DELETE op het artikel in Freescout. Het bronbestand blijft in de repo staan voor traceability.
Bij meer dan 5 verwijderingen in één sync-run faalt de workflow voor de zekerheid. Override met workflow_dispatch en confirm_deletes: true als je inderdaad een grote opruimactie doet.
Een korte voorbeeld-prompt voor je AI-agent
“Lees
apps/frontend/AGENTS.mdsectie ‘Eindgebruiker-documentatie (userdocs)’ en de slash-command in.claude/commands/generate-userdocs.md. Genereer vervolgens een userdoc voorapps/frontend/src/app/features/<scope>/<feature>volgens die conventie. Rapporteer welke UI-acties je hebt afgeleid en welke delen menselijke review nodig hebben.”
De agent volgt dan automatisch de juiste folder-conventie, stijl en frontmatter.
Verwante documentatie
- Eindgebruiker-documentatie (userdocs) — achtergrond, levenscyclus, ontwerpkeuzes
- Documentatie-pipeline (CI-workflows) — hoe
userdocs-checkenfreescout-syncwerken apps/frontend/AGENTS.md#eindgebruiker-documentatie-userdocs— volledige conventie en frontmatter-veldenapps/api/AGENTS.md— backend-variantdocs/CONTRIBUTING-DOCS.md— verschil tussen eindgebruiker-documentatie en internedocs/-documentatietools/freescout-sync/README.md— sync-CLI met--dry-run,--full-scanen safety-rails.claude/commands/generate-userdocs.md— bron van de slash-command zelf