.github
.github enthält 55 gesammelte Skills von cedanl, mit Repository-Berufsabdeckung und Skill-Detailseiten auf SkillsMP.
Skills in diesem Repository
Containerize a CEDA app the house way — a uv-based Python image, non-root runtime user, pinned apt packages, and a docker-compose for local dev. Use when adding or editing a Dockerfile / docker-compose.yml in a CEDA repo, or debugging a container build.
Take a CEDA app from code to a running Kubernetes deployment on SURF's SDP — obtain access, create the GitLab repo (Terraform in gitlab-config), request a tenant, copy the GitLab scaffolding from a template repo, and wire up per-env manifests/URLs. Use when standing up a NEW CEDA/SDP service or onboarding a repo to the SURF Developer Platform.
Gebruik deze skill wanneer de gebruiker hulp nodig heeft bij het ontwerpen of verbeteren van software of webapplicaties — van probleemdefiniëring tot interactieontwerp en visuele uitwerking. Activeer bij verzoeken zoals 'ontwerp een nieuwe pagina of flow', 'hoe moet dit werken voor de gebruiker', 'maak dit component of scherm beter', 'ik heb een formulier/dashboard/checkout nodig voor X', 'deze interface voelt niet goed', 'kun je dit herontwerpen', 'help me met de UX hiervan', of 'welke schermen heb ik nodig voor dit proces'. Gebruik ook wanneer de gebruiker code, een screenshot of een beschrijving deelt en vraagt om UX- of UI-verbeteringen — zelfs als ze het woord 'ontwerp' niet gebruiken. Twijfel je? Als het verzoek gaat over hoe een gebruiker iets ervaart, begrijpt of afrondt, gebruik dan deze skill.
Genereer en ontwikkel nieuwe ideeën vanuit een 'Hoe kunnen we...'-vraag (HMW) of probleemstelling binnen het onderwijsdomein (mbo/hbo/wo), via een divergeer-fase (zoveel mogelijk ideeën, geen kritiek) gevolgd door een convergeer-fase (clusteren, prioriteren, concepten uitwerken). Gebruik deze skill altijd wanneer de gebruiker wil brainstormen, ideeën wil genereren of ontwikkelen, een ideation-sessie wil simuleren, of een HMW-vraag (uit de hoe-kunnen-we-skill of zelf aangeleverd) wil laten uitwerken tot concrete richtingen. Trigger ook bij zinnen als "brainstorm hierover", "welke ideeën zijn er voor...", "laten we ideeën ontwikkelen", "denk mee over oplossingen voor", "divergeren en convergeren", "kom met zoveel mogelijk opties", of wanneer iemand een probleem of ontwerpvraag deelt en om concrete richtingen of concepten vraagt in plaats van een enkel antwoord. Levert de volledige ideeënlijst, clusters en uitgewerkte concepten in de chat plus een .md-bestand op.
Genereer centrale inzichten (key insights) voor de docent en de onderwijsondersteuner volgens het WIE/WIL/WANT/MAAR-stramien, op basis van empathy map-input (ziet, hoort, gedrag, pijn, verlangen, motivatie). Gebruik deze skill altijd wanneer de gebruiker centrale inzichten, key insights, insight statements of kerninzichten wil voor docenten, opleiders, onderwijsontwikkelaars, ICTO-ondersteuners of onderwijskundigen in mbo/hbo/wo. Trigger ook bij zinnen als "maak centrale inzichten voor de docent", "key insights ondersteuner", "kerninzichten onderwijsontwikkeling", "vertaal deze docentpersona naar inzichten", "WIE WIL WANT MAAR", of wanneer iemand empathy map-onderdelen over onderwijsontwerp, lesmateriaal, betrokkenheid of onderwijskwaliteit aanlevert en daar spanningen uit wil destilleren. Werkt ook zonder input: dan gebruik je de ingebouwde persona's. Levert 3-5 inzichten in de chat plus een .md-bestand op, en verwijst door naar de hoe-kunnen-we skill.
Genereer centrale inzichten (key insights) voor de leven-lang-lerende en de leven-lang-lerende-begeleider volgens het WIE/WIL/WANT/MAAR-stramien, op basis van empathy map-input (ziet, hoort, gedrag, pijn, verlangen, motivatie). Gebruik deze skill altijd wanneer de gebruiker centrale inzichten, key insights, insight statements of kerninzichten wil voor lerenden, studenten, studentbegeleiders, studieloopbaanbegeleiders of praktijkopleiders in mbo/hbo/wo. Trigger ook bij zinnen als "maak hier centrale inzichten van", "key insights", "kerninzichten", "wat zijn de inzichten uit deze empathy map", "vertaal deze persona naar inzichten", "WIE WIL WANT MAAR", "insight statement", of wanneer iemand empathy map-onderdelen (ziet/hoort/denkt/voelt/doet/pijn/verlangen) aanlevert en daar spanningen uit wil destilleren. Werkt ook zonder input: dan gebruik je de ingebouwde persona's. Levert 3-5 inzichten in de chat plus een .md-bestand op, en verwijst door naar de hoe-kunnen-we skill.
Genereer 'Hoe kunnen we...'-vragen (How Might We) uit bestaande centrale inzichten binnen het onderwijsdomein (mbo/hbo/wo). Zet een centraal inzicht volgens het WIE/WIL/WANT/MAAR-stramien om in een set ontwerpvragen die breed genoeg zijn voor uiteenlopende oplossingen en smal genoeg om een brainstorm te starten, en toetst elke vraag expliciet op te breed/te smal. Gebruik deze skill altijd wanneer de gebruiker een centraal inzicht, insight statement, empathy map-uitkomst of jobs-to-be-done aanlevert en daar ontwerpvragen, ontwerpkansen of brainstormvragen uit wil halen. Trigger ook bij zinnen als "How Might We", "HMW", "hoe kunnen we", "centraal inzicht", "centrale inzichten", "maak hier ontwerpvragen van", "vertaal dit inzicht naar een designvraag", "waar moeten we op brainstormen", "herformuleer dit inzicht als vraag", of wanneer iemand een inzicht in de vorm 'X wil Y want Z maar W' deelt. Levert de HMW-set in de chat plus een .md-bestand op.
Maak een volledige mindmap volgens de Buzan-methode op basis van één enkel woord of kort begrip dat de gebruiker aanlevert, gericht op de onderwijssector (mbo/hbo/wo). Gebruik deze skill altijd wanneer de gebruiker een mindmap, gedachtekaart, brainstormkaart, spindiagram, concept map of associatiekaart vraagt — ook wanneer ze alleen een woord noemen met "mindmap dit", "maak hier een mindmap van", "brainstorm rond X", "wat komt hier allemaal bij kijken", "breng X in kaart" of "geef me overzicht van het thema X". Trigger ook bij het voorbereiden van een les, workshop, presentatie, scriptie, samenvatting, projectplan of vergadering waarbij de gebruiker eerst het onderwerp wil verkennen of structureren. Levert een mindmap in het gekozen formaat (markdown-outline, Mermaid-diagram of visuele SVG) plus een korte toelichting.
Voer een concurrentieanalyse uit voor een CEDA-product, -dienst of -initiatief binnen het onderwijsdatadomein (mbo/hbo/wo). Gebruik deze skill altijd wanneer de gebruiker wil weten hoe een CEDA-aanbod zich verhoudt tot alternatieven, wie de concurrenten zijn, waar een gat in de markt zit, of wat een onderscheidend verkoopargument (USP/niche) kan zijn. Trigger ook bij zinnen als "concurrentieanalyse", "hoe verhoudt dit zich tot X", "wie doet dit nog meer", "waar zit onze niche", "wat maakt ons uniek", "vergelijk ons met de markt", of wanneer de gebruiker concurrenten aanlevert en wil laten vergelijken. Werkt ook voor nieuwe productontwikkeling waarbij een landschapsscan nodig is.
Voer een Future Backcasting-analyse uit voor een CEDA-dataproduct, informatieproduct, dienst of initiatief in het onderwijsdatadomein (mbo/hbo/wo). Backcasting schetst één of meer toekomstscenario's en werkt terug naar het heden om de stappen, blockers, enablers en quick wins te vinden die nodig zijn om een gewenste toekomst te bereiken of een ongewenste te vermijden. Gebruik deze skill altijd wanneer de gebruiker een nieuw dataproduct of informatieproduct verkent, wil weten hoe iets zich richting de toekomst kan ontwikkelen, of vraagt om een backcasting, toekomstverkenning of scenario-analyse. Trigger ook bij zinnen als "nieuw dataproduct", "nieuw informatieproduct", "waar gaat dit heen", "hoe ziet de toekomst van X eruit", "backcasting", "toekomstscenario", "waar moeten we nu op inzetten", of wanneer de gebruiker een idee, dienst of initiatief aandraagt en wil weten welke stappen vandaag nodig zijn om daar te komen. Levert inzichten in de chat plus een .md-bestand op.
Maak een DESTEP-trendanalyse voor CEDA: welke trends, uitdagingen en maatschappelijke opgaven de lerende, onderwijssector en arbeidsmarkt (mbo/hbo/wo) de komende jaren raken. Gebruik deze skill altijd wanneer de gebruiker vraagt om een trendanalyse, DESTEP-analyse, omgevingsanalyse, trendverkenning of toekomstscan voor het onderwijsdatadomein, of vraagt "welke trends spelen er", "wat komt er op ons af", "wat verandert er in de buitenwereld", "welke ontwikkelingen moeten we volgen". Ook triggeren bij zinnen als "demografische/ technologische/economische trends", "maatschappelijke opgaven onderwijs", "hype of structurele verandering", of wanneer de gebruiker trends wil ordenen en de betekenis ervan voor onderwijs en arbeidsmarkt wil duiden. Werkt met websearch én aangeleverde bronnen.
Scaffold een nieuwe CEDA Claude skill via een begeleide workflow. Gebruik wanneer iemand een nieuwe /skill wil aanmaken voor de cedanl organisatie, een bestaand proces wil codificeren als skill, of vraagt hoe je een skill bouwt.
Build or extend a CEDA instroom-style ETL pipeline — a containerized transport step that pulls source data (e.g. SurfDrive), processes it, and lands it in MinIO, wired via docker-compose env and deployed through the GitLab/SDP flow. Use when working on instroom-etl-* / instroom-ml or a similar ingest→store pipeline.
Add SURF SRAM login (OIDC via the SRAM proxy) to a CEDA app — the authlib OAuth2 flow, the OIDC_* config, and the auth-disabled-by-default fallback used in the CEDA Streamlit apps. Use when wiring SRAM authentication, editing OIDC config, or debugging an SRAM login flow.
Build a CEDA Streamlit app the house way — src/ layout with a frontend/ page tree, st.navigation multipage wiring, npuls logo/branding, and uv+Docker packaging. Use when creating a new Streamlit app, adding a page, or structuring the frontend of a CEDA tool.
Integrate SurfDrive into a CEDA data pipeline — download a CSV from a SurfDrive public share (share token + password) and hand it onward (typically to MinIO). Use when wiring SurfDrive ingest, setting SURFDRIVE_* config, or debugging a SurfDrive download step.
Author and debug GitLab CI for the CEDA/SURF config repos (*-config) — the SDP shared components, the branch→cluster rules, Helm package/publish/promote, and kubernetes diff/dry-run/verify stages. Use when editing .gitlab-ci.yml, a .gitlab/*.yaml component, or debugging a GitLab pipeline in a config repo.
Manage SOPS + AGE encrypted Kubernetes secrets for SURF SDP projects (instroom-config style): .sops.yaml creation rules, key management for teams, GitLab CI integration, and the decision tree for when to use Ansible Vault, SOPS+AGE, or a secret server (OpenBao/Infisical). Use this skill whenever the user encrypts or decrypts secrets, edits a *.secret.yaml or secret_orig.yaml file, hits SOPS errors ("no identity matched", "sops metadata not found", "no matching creation rules"), rotates or adds AGE keys, asks where to store a credential, or mentions sops, age, .sops.yaml, ansible-vault vs alternatives — even if they only paste a SOPS error without a question.
Deploy and troubleshoot Helm/Flux workloads on the SURF SDP platform (GitLab CI → OCI chart in Harbor cr.surf.nl → FluxCD HelmRelease). Use this skill whenever the user works on GitLab CI pipelines that package or deploy Helm charts, debugs a failing or stuck HelmRelease, sees Flux reconciliation problems, hits 401/404 errors pulling charts from an OCI registry, encounters chart version mismatches in deploy verification, sets up cross-pipeline triggers, or mentions SDP, Harbor, cr.surf.nl, FluxCD, HelmRepository, or HelmRelease — even if they only paste a pipeline log or kubectl output without an explicit question.
Author and debug GitHub Actions workflows, automated tests, and CI pipelines the CEDA way. Covers the reusable-workflow orchestration pattern, the uv + matrix test setup, security scanning (bandit/semgrep/codeql/sonarcloud), and release/publish. Use when adding or fixing a workflow, test job, or pipeline in a GitHub repo.
Open a new PR or finalize an existing one — assess the diff vs main, draft a real title and body, fill in the repo's PR template instead of leaving it blank, and handle the gh auth quirk. Use when creating a PR or turning a WIP/draft into a review-ready PR.
Decode and fix a failing SonarCloud or CodeQL quality gate on a PR. Pulls the actual issues via API, separates real defects from metric artifacts, fixes the cheap and legitimate ones, and reports remaining items as an explicit judgment call. Use when a Sonar/CodeQL gate is red.
Fetch a PR's review comments, assess each on its merits, and post threaded replies (in Dutch) plus a summary comment citing the fixing commit, then re-request review. Use when a reviewer has left comments on a PR and you want to respond to all of them.
Set up or publish a CEDA Python package to PyPI the house way — src-layout + setuptools + uv, PEP 621 pyproject metadata, and GitHub Actions Trusted Publishing (OIDC) on v* tags with a TestPyPI preview. Use when making a repo pip-installable, adding a release workflow, or cutting a PyPI release.
Land a code change safely — review, fix, commit, push — with guardrails that verify the change actually works first. Use when finishing a piece of work that needs to land on a branch.
Bouw risicoscore-modellen (bipartite ranking) die individuen sorteren van hoog naar laag risico, voor situaties met beperkte capaciteit waarin je de top-N selecteert — bijv. een uitnodigingsregel voor studenten met uitvalrisico, prioriteringslijsten, triage, "wie moeten we als eerste benaderen". Gebruik deze skill altijd bij woorden als uitnodigingsregel, risicoscore, risicoprioritering, top-N, ranking op uitval/churn/risico, learning to rank met binaire labels — óók als de gebruiker het "classificatie" noemt maar het doel een gesorteerde lijst is. De ranking-benadering is methodologisch onderbouwd in Eegdeman et al. (2022) en wordt in de praktijk toegepast in de uitnodigingsregel van cedanl; daar blijkt dat sorteren op risicoscore bij beperkte capaciteit betere selecties oplevert dan classificatie met een vaste beslisgrens.
Bereid een dataset voor op voorspelmodellen (regressie, classificatie of risicoranking). Gebruik deze skill altijd als eerste stap wanneer de gebruiker data wil klaarmaken, opschonen of controleren voor een voorspelling — bijv. "maak mijn CSV klaar voor het model", "check of deze data bruikbaar is", "voorspel X op basis van dit bestand" — en ook wanneer een van de skills voorspellen-continu, voorspellen-classificatie of voorspellen-ranking wordt gebruikt en de data nog niet is voorbereid.
Bouw voorspelmodellen voor continue (numerieke) doelvariabelen zoals cijfers, studiepunten, aantallen of bedragen. Gebruik deze skill altijd wanneer de gebruiker een getal wil voorspellen op basis van data (regressie), ook als het woord "regressie" niet valt — bijv. "voorspel het eindcijfer", "schat het aantal EC", "predict grade/score/amount". NIET gebruiken voor ja/nee-uitkomsten (classificatie) of het rangschikken op risico (ranking).
Bouw voorspelmodellen voor categorische uitkomsten (ja/nee of meerdere klassen) waar per individu een correcte voorspelling telt — bijv. "voorspel of een student uitvalt", "classificeer aanvragen als goedgekeurd/afgekeurd", "predict churn yes/no". Gebruik deze skill bij elke classificatietaak. LET OP — als het doel is een lijst te sorteren op risico en de top-N te selecteren (beperkte capaciteit, uitnodigingslijst, prioritering), gebruik dan de skill voorspellen-ranking in plaats van deze.
Spar mee als gesprekspartner vóór er gebouwd wordt — elk antwoord één aanbeveling, nooit code of bestanden. Gebruik wanneer je wil overleggen, aftasten of samen denken over een aanpak zonder al te bouwen.
Structureer een brainstorm van idee naar getoetst besluit vóór implementatie, met een beslis-samenvatting en aanbevelingen — geen code of bestanden. Wanneer iemand een idee wil uitwerken of een besluit wil voorbereiden voordat er code of een plan komt.
Find hardcoded values in a cedanl repository and move them into config, package metadata, or function parameters following CEDA standards. Use when moving a project from POC to MVP, when values are baked into scripts or the app, or when the user asks to make code configurable, flexible, or "not hardcoded".
Pas de volledige Npuls huisstijl toe op digitale uitingen zoals webapps, dashboards, componenten, landingspagina's, software-interfaces, documenten, posters, social posts of andere visuele assets. Gebruik deze skill altijd wanneer iemand iets wil ontwerpen, bouwen of restylen in Npuls-stijl — ook als ze het woord 'huisstijl' niet noemen. Triggers zijn onder andere: "maak dit Npuls", "ontwerp een Npuls-pagina", "stijl dit als Npuls", "maak een component/dashboard/app/interface", of wanneer iemand code aanlevert die Npuls-uitstraling moet krijgen. Levert werkende HTML/CSS/React code op, of een restyled versie van bestaande code — afhankelijk van de vraag.
Neemt autonoom een geannoteerde demo video op van de lokale app met headless Playwright, genereert neppe maar realistische mock data, schrijft narration script en genereert TTS audio via piper-tts (piper-gpl1), en samenvoegt alles met FFmpeg. Upload naar GitHub CDN voor inline README-weergave. Gebruik wanneer iemand een demo video, annotated walkthrough of narrated demo van de app wil maken.
Pas de volledige Npuls huisstijl toe op digitale uitingen zoals webapps, dashboards, componenten, landingspagina's, software-interfaces, document, poster, social-post of andere digitale visuele asset. Gebruik deze skill altijd wanneer iemand iets wil ontwerpen, bouwen of restylen in Npuls-stijl — ook als ze het woord 'huisstijl' niet noemen. Triggers zijn onder andere: "maak dit Npuls", "ontwerp een Npuls-pagina", "stijl dit als Npuls", "maak een component/dashboard/app/interface", of wanneer iemand code aanlevert die Npuls-uitstraling moet krijgen. Levert werkende HTML/CSS/React code op, design tokens, of een restyled versie van bestaande code — afhankelijk van de vraag.
Use when choosing/recommending a chart or graph type to present data, or generating chart code. Triggers like "welke grafiek/diagram", "hoe visualiseer/presenteer ik deze data", "maak een grafiek/visualisatie voor", "is dit de juiste grafiek", "what chart should I use", "how to visualize this data". NL + EN.
Maak CEDA/Npuls Slidev presentaties met automatische projectsetup, huisstijl en branding. Gebruik wanneer iemand een presentatie wil maken voor CEDA, Npuls of 1CHO. Bouwt voort op de slidev skill.
Maak een screenshot van de draaiende app en embed het correct in een GitHub PR-beschrijving. Gebruik wanneer iemand een voor/na-screenshot wil toevoegen aan een PR, visuele bewijs wil leveren van een UI-wijziging, of vraagt om de app te fotograferen voor een pull request.
Complete API for Google NotebookLM - full programmatic access including features not in the web UI. Create notebooks, add sources, generate all artifact types, download in multiple formats. Activates on explicit /notebooklm or intent like "create a podcast about X"
Bouw of bewerk een Marp presentatie (.md → HTML/PDF) in de Npuls huisstijl, met live preview-server en visuele overflow-controle. Gebruik wanneer iemand "maak een marp", "bouw een deck", "marp presentatie", "preview", "preview venster", "live preview", "open de marp" vraagt, of /build-marp-deck aanroept. Bij een Marp-deck open je standaard de live preview-server (niet losse HTML in de browser). Voor Slidev gebruik je clidev; dit is puur Marp.