Doctor-script pattern voor install-verificatie
Definitie
Een doctor-script is een read-only bash-script dat na install een serie health-checks draait en per check rapporteert met getagde uitvoer ([PASS], [WARN], [FAIL], [INFO]). Het verschilt van een test-suite: een doctor checkt installatie-state op de gebruiker-machine, geen unit-correctheid van code. Naam ontleend aan brew doctor en npm doctor.
Context
Tijdens het publiceren van LLmWiki-KennisBank v0.2.0 bleek setup.sh zelf onvoldoende garantie dat de install gelukt was. Symlinks, kopieer-acties en optionele dependencies (Ollama, een eerdere CC-sessie voor MEMORY.md) konden silently mislukken. Een doctor-script vangt dit op zonder dat de gebruiker handmatig elk pad hoeft te checken.
Kernpunten
Vier severity-niveaus
[PASS]: check geslaagd[WARN]: niet-blokkerend probleem dat aandacht nodig heeft[FAIL]: kritisch probleem dat install onbruikbaar maakt[INFO]: optionele dependency afwezig of cosmetisch detail
Exit-code is 0 als geen [FAIL], anders 1. [WARN] en [INFO] blokkeren de exit-code niet, zodat CI of een wrapper-script doctor kan draaien zonder false-failures op optionele zaken.
set -u zonder set -e
set -u (undefined-variable detection) blijft zinvol. set -e (exit-on-error) is contraproductief: als check 3 faalt wil je dat check 4-12 alsnog draait. De report-functies tellen zelf hun count.
Helper-functies vermijden duplicatie
check_dir() { [ -d "$2" ] && report_pass "$1" "$2" || report_fail "$1" "missing"; }
check_file() { [ -f "$2" ] && report_pass "$1" "$2" || report_fail "$1" "missing"; }
check_executable() { [ -x "$2" ] && report_pass "$1" "$2" || report_warn ... ; }Per check één regel. Helper-functies houden de scan-volgorde leesbaar.
Color via tput, gracefully degraded
if [ -t 1 ] && command -v tput >/dev/null 2>&1 && [ "$(tput colors 2>/dev/null || echo 0)" -ge 8 ]; then
C_GREEN="$(tput setaf 2)"; ...
else
C_GREEN=""; ...
fiWerkt in TTY met kleur, in pipes/CI zonder kleur, op terminals zonder colorsupport zonder kleur. Geen externe dependency.
INFO-niveau voor optionele zaken
Cosmetische of optionele issues moeten geen [WARN] zijn. Voorbeeld: een Python script dat niet chmod +x is maar wel via python3 path aangeroepen wordt - de executable-bit is irrelevant. Eerdere installaties hebben die bit mogelijk niet gezet; downgraden naar [INFO] voorkomt false-positive alarms.
Minimale set checks voor een markdown-vault
- Vault-root bestaat
- Alle verwachte subdirectories bestaan
- Templates aanwezig op verwachte plek
- Scripts aanwezig (executable-check apart)
- Config-bestand bestaat en heeft geen
[YOUR NAME]placeholders meer - Slash-commando’s geinstalleerd in
~/.claude/commands/ - Optionele skills geinstalleerd
- Trigger-snippets aanwezig in globale CLAUDE.md
- Memory-directory bestaat (INFO als afwezig: vereist eerdere sessie)
- Externe tools beschikbaar (Python 3.10+, Ollama: INFO als afwezig)
Footer en exit
Summary
[PASS] N
[WARN] M
[FAIL] K
[INFO] L
Exit 0 als K=0, anders 1. Geeft CI een duidelijk signaal.
Verbanden
- Zie ook: wiki-karpathy-llm-wiki (LLmWiki-KennisBank gebruikt dit script)
- Zie ook: wiki-pre-publicatie-checklist-github (publicatie-blok over verificatie)
Bronnen
van den Breemen, J. (2026). LLmWiki-KennisBank v0.2.0: scripts/doctor.sh [GitHub]. https://github.com/Jvdbreemen/LLmWiki-KennisBank/blob/v0.2.0/scripts/doctor.sh
Homebrew. (n.d.). brew doctor. https://docs.brew.sh/Common-Issues