From cbed027a282f61904cb6bc127fdcdcac9e0e464c Mon Sep 17 00:00:00 2001 From: Tomeriko96 Date: Wed, 18 Mar 2026 07:35:15 +0100 Subject: [PATCH 1/8] feat: add Claude Code CLI and org skills to devcontainer - Install Node.js LTS for npx support - Install Claude Code CLI via official install script - Add Claude env vars (FOUNDRY, model defaults) - Add anthropic.claude-code VS Code extension - Fetch cedanl/.github skills on postCreate via npx skills Co-Authored-By: Claude Sonnet 4.6 --- .devcontainer/Dockerfile | 17 +++++++++++++++++ .devcontainer/devcontainer.json | 5 +++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 5be965e..20b0305 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -10,6 +10,7 @@ RUN apt-get update && \ libssl-dev \ libxml2-dev \ curl \ + ca-certificates \ vim \ git \ build-essential \ @@ -20,5 +21,21 @@ RUN apt-get update && \ libgit2-dev \ && rm -rf /var/lib/apt/lists/* +# Install Node.js LTS (needed for npx/skills) +RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \ + apt-get install -y --no-install-recommends nodejs && \ + rm -rf /var/lib/apt/lists/* + USER rstudio WORKDIR /workspace + +# Install Claude Code CLI +RUN curl -fsSL https://claude.ai/install.sh | bash + +ENV PATH="/home/rstudio/.local/bin:${PATH}" + +# Claude / Anthropic environment +ENV CLAUDE_CODE_USE_FOUNDRY=1 \ + ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-6 \ + ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-6 \ + ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-6 diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 19008ba..4c4a072 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -6,7 +6,8 @@ "remoteUser": "rstudio", "settings": {}, "extensions": [ - "REditorSupport.r" + "REditorSupport.r", + "anthropic.claude-code" ], - "postCreateCommand": "Rscript -e 'install.packages(c(\"devtools\", \"usethis\", \"pak\", \"renv\"), repos=\"https://cran.rstudio.com/\")'" + "postCreateCommand": "Rscript -e 'install.packages(c(\"devtools\", \"usethis\", \"pak\", \"renv\"), repos=\"https://cran.rstudio.com/\")' && npx skills add cedanl/.github --skill '*' -a claude-code -a opencode -y --copy -g" } From f86463504d98f5a356dce6f7aaf028eaba2ebb26 Mon Sep 17 00:00:00 2001 From: Tomeriko96 Date: Wed, 18 Mar 2026 07:39:55 +0100 Subject: [PATCH 2/8] docs: add Dutch devcontainer usage guide (DCONTAINER.md) Covers VS Code, Positron, DevPod and devcontainer CLI. Co-Authored-By: Claude Sonnet 4.6 --- DCONTAINER.md | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 DCONTAINER.md diff --git a/DCONTAINER.md b/DCONTAINER.md new file mode 100644 index 0000000..1e77737 --- /dev/null +++ b/DCONTAINER.md @@ -0,0 +1,122 @@ +# Devcontainer Gebruikshandleiding + +Een devcontainer biedt een kant-en-klare R-ontwikkelomgeving in Docker. Je hoeft niets lokaal te installeren — R, het tidyverse, Claude Code en de CEDA org-skills zijn allemaal vooraf geconfigureerd in de container. + +## Vereisten + +> **Docker is verplicht.** De container draait op Docker; zonder Docker werkt geen van onderstaande methoden. + +- **Windows / macOS**: installeer [Docker Desktop](https://www.docker.com/products/docker-desktop/) +- **Linux**: installeer [Docker Engine](https://docs.docker.com/engine/install/) + +Zorg dat Docker draait voordat je een van de onderstaande stappen uitvoert. + +--- + +## VS Code + +### Eenmalige installatie + +1. Installeer [Visual Studio Code](https://code.visualstudio.com/) +2. Installeer de extensie **Dev Containers** (`ms-vscode-remote.remote-containers`) + +### Gebruik + +```bash +git clone https://github.com/cedanl/r-devcontainer +code r-devcontainer +``` + +VS Code toont een melding rechtsonder: **"Reopen in Container"** — klik daarop. + +Lukt dat niet? Druk op `F1` en zoek naar **Dev Containers: Reopen in Container**. + +De eerste keer wordt de Docker-image gebouwd; dit duurt enkele minuten. Daarna start de container snel op. + +--- + +## Positron + +[Positron](https://positron.posit.co/) is een IDE van Posit (de makers van RStudio) met ingebouwde devcontainer-ondersteuning en uitstekende R-integratie. + +```bash +git clone https://github.com/cedanl/r-devcontainer +``` + +Open de map in Positron. Positron detecteert automatisch de `.devcontainer/devcontainer.json` en vraagt of je de map in een container wilt heropenen. Klik **"Reopen in Container"**. + +--- + +## DevPod + +[DevPod](https://devpod.sh/) laat je devcontainers lokaal of in de cloud draaien, los van een specifieke IDE. + +### Eenmalige installatie + +Download DevPod via [devpod.sh](https://devpod.sh/) en stel een **provider** in. Kies **Docker** voor lokaal gebruik. + +### Gebruik via de UI + +1. Open DevPod en klik op **"Create Workspace"** +2. Voer de repository-URL in: `https://github.com/cedanl/r-devcontainer` +3. Kies je IDE (VS Code, browser, etc.) +4. Klik **"Create Workspace"** + +### Gebruik via de CLI + +```bash +devpod up github.com/cedanl/r-devcontainer +``` + +--- + +## Devcontainer CLI + +De officiële `@devcontainers/cli` bouwt en beheert containers direct vanuit de terminal, zonder IDE. + +### Eenmalige installatie + +```bash +npm install -g @devcontainers/cli +``` + +### Gebruik + +```bash +git clone https://github.com/cedanl/r-devcontainer +cd r-devcontainer + +# Bouw en start de container +devcontainer up --workspace-folder . + +# Open een shell in de container +devcontainer exec --workspace-folder . bash +``` + +--- + +## Wat zit er in de container? + +Na het opstarten zijn de volgende tools beschikbaar: + +| Tool | Beschrijving | +|------|-------------| +| `R` + tidyverse | R met vooraf geïnstalleerde tidyverse-pakketten | +| `devtools`, `pak`, `renv` | R-pakketbeheer en projectbeheer | +| `claude` | Claude Code CLI (AI-assistent in de terminal) | +| `gh` | GitHub CLI | +| CEDA org-skills | Automatisch geladen vanuit `cedanl/.github` via `npx skills` | + +Na het inloggen met `gh auth login` kun je ook `gh dash` gebruiken voor een GitHub-dashboard in de terminal. + +--- + +## Problemen oplossen + +| Probleem | Oplossing | +|----------|-----------| +| "Cannot connect to Docker daemon" | Zorg dat Docker Desktop of Docker Engine draait | +| Container bouwt niet | Controleer je internetverbinding; images worden bij de eerste build gedownload | +| `claude` niet gevonden | Herstart de terminal in de container (`exec bash`) | +| Skills niet geladen | Voer `npx skills add cedanl/.github --skill '*' -a claude-code -y --copy -g` handmatig uit | +| R-pakket installeert niet | Sommige pakketten vereisen extra systeembibliotheken; voeg ze toe aan de `Dockerfile` | From 9d404d0526a492b26858a297a279fd5a7b919ff6 Mon Sep 17 00:00:00 2001 From: Tomeriko96 Date: Wed, 18 Mar 2026 10:37:25 +0100 Subject: [PATCH 3/8] feat: align devcontainer config with python-uv-devcontainer - Use proper customizations.vscode schema for extensions/settings - Set bash as default terminal profile - Wrap postCreateCommand in bash -c, add --yes to npx - Source .devcontainer/.env into .bashrc as secrets fallback - Pass ANTHROPIC_FOUNDRY_API_KEY and ANTHROPIC_FOUNDRY_RESOURCE via remoteEnv - Add .env.example template and .gitignore for secrets Co-Authored-By: Claude Sonnet 4.6 --- .devcontainer/.env.example | 4 ++++ .devcontainer/devcontainer.json | 22 ++++++++++++++++------ .gitignore | 1 + 3 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 .devcontainer/.env.example create mode 100644 .gitignore diff --git a/.devcontainer/.env.example b/.devcontainer/.env.example new file mode 100644 index 0000000..e1cdb94 --- /dev/null +++ b/.devcontainer/.env.example @@ -0,0 +1,4 @@ +# Copy this file to .env and fill in your values. +# Used as fallback when env vars are not set on the host machine. +ANTHROPIC_FOUNDRY_API_KEY= +ANTHROPIC_FOUNDRY_RESOURCE= diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 4c4a072..da6982f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -4,10 +4,20 @@ "dockerfile": "Dockerfile" }, "remoteUser": "rstudio", - "settings": {}, - "extensions": [ - "REditorSupport.r", - "anthropic.claude-code" - ], - "postCreateCommand": "Rscript -e 'install.packages(c(\"devtools\", \"usethis\", \"pak\", \"renv\"), repos=\"https://cran.rstudio.com/\")' && npx skills add cedanl/.github --skill '*' -a claude-code -a opencode -y --copy -g" + "customizations": { + "vscode": { + "settings": { + "terminal.integrated.defaultProfile.linux": "bash" + }, + "extensions": [ + "REditorSupport.r", + "anthropic.claude-code" + ] + } + }, + "postCreateCommand": "bash -c 'Rscript -e \"install.packages(c(\\\"devtools\\\", \\\"usethis\\\", \\\"pak\\\", \\\"renv\\\"), repos=\\\"https://cran.rstudio.com/\\\")\" && npx --yes skills add cedanl/.github --skill \"*\" -a claude-code -a opencode -y --copy -g && echo \"[ -f /workspaces/r-devcontainer/.devcontainer/.env ] && set -a && source /workspaces/r-devcontainer/.devcontainer/.env && set +a\" >> ~/.bashrc'", + "remoteEnv": { + "ANTHROPIC_FOUNDRY_API_KEY": "${localEnv:ANTHROPIC_FOUNDRY_API_KEY}", + "ANTHROPIC_FOUNDRY_RESOURCE": "${localEnv:ANTHROPIC_FOUNDRY_RESOURCE}" + } } diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d41a0c9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.devcontainer/.env From ab37131c93d1f35624f71fb790a3e23754a6717f Mon Sep 17 00:00:00 2001 From: Tomeriko96 Date: Wed, 18 Mar 2026 10:39:42 +0100 Subject: [PATCH 4/8] refactor: extract postCreateCommand to post-create.sh Co-Authored-By: Claude Sonnet 4.6 --- .devcontainer/devcontainer.json | 2 +- .devcontainer/post-create.sh | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 .devcontainer/post-create.sh diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index da6982f..1b235ed 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -15,7 +15,7 @@ ] } }, - "postCreateCommand": "bash -c 'Rscript -e \"install.packages(c(\\\"devtools\\\", \\\"usethis\\\", \\\"pak\\\", \\\"renv\\\"), repos=\\\"https://cran.rstudio.com/\\\")\" && npx --yes skills add cedanl/.github --skill \"*\" -a claude-code -a opencode -y --copy -g && echo \"[ -f /workspaces/r-devcontainer/.devcontainer/.env ] && set -a && source /workspaces/r-devcontainer/.devcontainer/.env && set +a\" >> ~/.bashrc'", + "postCreateCommand": "bash .devcontainer/post-create.sh", "remoteEnv": { "ANTHROPIC_FOUNDRY_API_KEY": "${localEnv:ANTHROPIC_FOUNDRY_API_KEY}", "ANTHROPIC_FOUNDRY_RESOURCE": "${localEnv:ANTHROPIC_FOUNDRY_RESOURCE}" diff --git a/.devcontainer/post-create.sh b/.devcontainer/post-create.sh new file mode 100644 index 0000000..c51048c --- /dev/null +++ b/.devcontainer/post-create.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -euo pipefail + +echo "Starting post-create setup..." + +# Install core R packages +Rscript -e 'install.packages(c("devtools", "usethis", "pak", "renv"), repos="https://cran.rstudio.com/")' + +# Install org-wide Claude/OpenCode skills from cedanl/.github +npx --yes skills add cedanl/.github --skill '*' -a claude-code -a opencode -y --copy -g + +# Source .env file on shell startup (fallback for secrets not set on host) +ENV_FILE="/workspaces/r-devcontainer/.devcontainer/.env" +echo "[ -f \"$ENV_FILE\" ] && set -a && source \"$ENV_FILE\" && set +a" >> ~/.bashrc + +echo "Post-create complete." From abded81324da996601df03704838efc98cf55fd7 Mon Sep 17 00:00:00 2001 From: Tomeriko96 Date: Wed, 18 Mar 2026 10:58:30 +0100 Subject: [PATCH 5/8] fix: use runArgs --env to reliably forward host env vars to container Co-Authored-By: Claude Sonnet 4.6 --- .devcontainer/devcontainer.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1b235ed..7e586d4 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -16,8 +16,8 @@ } }, "postCreateCommand": "bash .devcontainer/post-create.sh", - "remoteEnv": { - "ANTHROPIC_FOUNDRY_API_KEY": "${localEnv:ANTHROPIC_FOUNDRY_API_KEY}", - "ANTHROPIC_FOUNDRY_RESOURCE": "${localEnv:ANTHROPIC_FOUNDRY_RESOURCE}" - } + "runArgs": [ + "--env", "ANTHROPIC_FOUNDRY_API_KEY", + "--env", "ANTHROPIC_FOUNDRY_RESOURCE" + ] } From 3970e3a3a7f3c0e3d4d3491cbbf34c690688c55d Mon Sep 17 00:00:00 2001 From: Tomeriko96 Date: Wed, 18 Mar 2026 11:08:39 +0100 Subject: [PATCH 6/8] fix: use --env-file for reliable host secret injection Co-Authored-By: Claude Sonnet 4.6 --- .devcontainer/devcontainer.json | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 7e586d4..913f147 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -15,9 +15,7 @@ ] } }, - "postCreateCommand": "bash .devcontainer/post-create.sh", - "runArgs": [ - "--env", "ANTHROPIC_FOUNDRY_API_KEY", - "--env", "ANTHROPIC_FOUNDRY_RESOURCE" - ] + "initializeCommand": "touch .devcontainer/.env", + "runArgs": ["--env-file", ".devcontainer/.env"], + "postCreateCommand": "bash .devcontainer/post-create.sh" } From 01a0b9192478112c82955903d20335134cf7d6b9 Mon Sep 17 00:00:00 2001 From: Tomeriko96 Date: Wed, 18 Mar 2026 12:35:13 +0100 Subject: [PATCH 7/8] docs: add Claude Code setup steps to DCONTAINER.md Co-Authored-By: Claude Sonnet 4.6 --- DCONTAINER.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/DCONTAINER.md b/DCONTAINER.md index 1e77737..5103264 100644 --- a/DCONTAINER.md +++ b/DCONTAINER.md @@ -95,6 +95,42 @@ devcontainer exec --workspace-folder . bash --- +## Claude Code instellen + +Claude Code is vooraf geïnstalleerd in de container, maar heeft twee omgevingsvariabelen nodig om verbinding te maken met de CEDA Foundry API. + +### Stap 1 — Maak het secrets-bestand aan + +```bash +cp .devcontainer/.env.example .devcontainer/.env +``` + +### Stap 2 — Vul je credentials in + +Open `.devcontainer/.env` en vul de twee waarden in: + +``` +ANTHROPIC_FOUNDRY_API_KEY= +ANTHROPIC_FOUNDRY_RESOURCE= +``` + +> Dit bestand staat in `.gitignore` en wordt nooit gecommit. + +### Stap 3 — Bouw de container (opnieuw) + +Druk op `F1` → **Dev Containers: Rebuild Container**. + +Docker laadt het `.env`-bestand direct in bij het starten van de container. Na het herbouwen werkt `claude` meteen. + +### Controleren + +```bash +claude --version +echo $ANTHROPIC_FOUNDRY_API_KEY # moet je key tonen +``` + +--- + ## Wat zit er in de container? Na het opstarten zijn de volgende tools beschikbaar: From 7f303327580e104c1e32298ea288ec0df2a1c430 Mon Sep 17 00:00:00 2001 From: Tomeriko96 Date: Wed, 18 Mar 2026 12:37:36 +0100 Subject: [PATCH 8/8] docs: merge DCONTAINER.md into README Co-Authored-By: Claude Sonnet 4.6 --- DCONTAINER.md | 158 -------------------------------------------------- README.md | 84 +++++++++++++++++++++++---- 2 files changed, 72 insertions(+), 170 deletions(-) delete mode 100644 DCONTAINER.md diff --git a/DCONTAINER.md b/DCONTAINER.md deleted file mode 100644 index 5103264..0000000 --- a/DCONTAINER.md +++ /dev/null @@ -1,158 +0,0 @@ -# Devcontainer Gebruikshandleiding - -Een devcontainer biedt een kant-en-klare R-ontwikkelomgeving in Docker. Je hoeft niets lokaal te installeren — R, het tidyverse, Claude Code en de CEDA org-skills zijn allemaal vooraf geconfigureerd in de container. - -## Vereisten - -> **Docker is verplicht.** De container draait op Docker; zonder Docker werkt geen van onderstaande methoden. - -- **Windows / macOS**: installeer [Docker Desktop](https://www.docker.com/products/docker-desktop/) -- **Linux**: installeer [Docker Engine](https://docs.docker.com/engine/install/) - -Zorg dat Docker draait voordat je een van de onderstaande stappen uitvoert. - ---- - -## VS Code - -### Eenmalige installatie - -1. Installeer [Visual Studio Code](https://code.visualstudio.com/) -2. Installeer de extensie **Dev Containers** (`ms-vscode-remote.remote-containers`) - -### Gebruik - -```bash -git clone https://github.com/cedanl/r-devcontainer -code r-devcontainer -``` - -VS Code toont een melding rechtsonder: **"Reopen in Container"** — klik daarop. - -Lukt dat niet? Druk op `F1` en zoek naar **Dev Containers: Reopen in Container**. - -De eerste keer wordt de Docker-image gebouwd; dit duurt enkele minuten. Daarna start de container snel op. - ---- - -## Positron - -[Positron](https://positron.posit.co/) is een IDE van Posit (de makers van RStudio) met ingebouwde devcontainer-ondersteuning en uitstekende R-integratie. - -```bash -git clone https://github.com/cedanl/r-devcontainer -``` - -Open de map in Positron. Positron detecteert automatisch de `.devcontainer/devcontainer.json` en vraagt of je de map in een container wilt heropenen. Klik **"Reopen in Container"**. - ---- - -## DevPod - -[DevPod](https://devpod.sh/) laat je devcontainers lokaal of in de cloud draaien, los van een specifieke IDE. - -### Eenmalige installatie - -Download DevPod via [devpod.sh](https://devpod.sh/) en stel een **provider** in. Kies **Docker** voor lokaal gebruik. - -### Gebruik via de UI - -1. Open DevPod en klik op **"Create Workspace"** -2. Voer de repository-URL in: `https://github.com/cedanl/r-devcontainer` -3. Kies je IDE (VS Code, browser, etc.) -4. Klik **"Create Workspace"** - -### Gebruik via de CLI - -```bash -devpod up github.com/cedanl/r-devcontainer -``` - ---- - -## Devcontainer CLI - -De officiële `@devcontainers/cli` bouwt en beheert containers direct vanuit de terminal, zonder IDE. - -### Eenmalige installatie - -```bash -npm install -g @devcontainers/cli -``` - -### Gebruik - -```bash -git clone https://github.com/cedanl/r-devcontainer -cd r-devcontainer - -# Bouw en start de container -devcontainer up --workspace-folder . - -# Open een shell in de container -devcontainer exec --workspace-folder . bash -``` - ---- - -## Claude Code instellen - -Claude Code is vooraf geïnstalleerd in de container, maar heeft twee omgevingsvariabelen nodig om verbinding te maken met de CEDA Foundry API. - -### Stap 1 — Maak het secrets-bestand aan - -```bash -cp .devcontainer/.env.example .devcontainer/.env -``` - -### Stap 2 — Vul je credentials in - -Open `.devcontainer/.env` en vul de twee waarden in: - -``` -ANTHROPIC_FOUNDRY_API_KEY= -ANTHROPIC_FOUNDRY_RESOURCE= -``` - -> Dit bestand staat in `.gitignore` en wordt nooit gecommit. - -### Stap 3 — Bouw de container (opnieuw) - -Druk op `F1` → **Dev Containers: Rebuild Container**. - -Docker laadt het `.env`-bestand direct in bij het starten van de container. Na het herbouwen werkt `claude` meteen. - -### Controleren - -```bash -claude --version -echo $ANTHROPIC_FOUNDRY_API_KEY # moet je key tonen -``` - ---- - -## Wat zit er in de container? - -Na het opstarten zijn de volgende tools beschikbaar: - -| Tool | Beschrijving | -|------|-------------| -| `R` + tidyverse | R met vooraf geïnstalleerde tidyverse-pakketten | -| `devtools`, `pak`, `renv` | R-pakketbeheer en projectbeheer | -| `claude` | Claude Code CLI (AI-assistent in de terminal) | -| `gh` | GitHub CLI | -| CEDA org-skills | Automatisch geladen vanuit `cedanl/.github` via `npx skills` | - -Na het inloggen met `gh auth login` kun je ook `gh dash` gebruiken voor een GitHub-dashboard in de terminal. - ---- - -## Problemen oplossen - -| Probleem | Oplossing | -|----------|-----------| -| "Cannot connect to Docker daemon" | Zorg dat Docker Desktop of Docker Engine draait | -| Container bouwt niet | Controleer je internetverbinding; images worden bij de eerste build gedownload | -| `claude` niet gevonden | Herstart de terminal in de container (`exec bash`) | -| Skills niet geladen | Voer `npx skills add cedanl/.github --skill '*' -a claude-code -y --copy -g` handmatig uit | -| R-pakket installeert niet | Sommige pakketten vereisen extra systeembibliotheken; voeg ze toe aan de `Dockerfile` | diff --git a/README.md b/README.md index 99222ed..ca11569 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,82 @@ # R devcontainer -Deze repository biedt een minimale development container voor R-projecten, geïnspireerd door de python-uv-devcontainer. +Een kant-en-klare ontwikkelomgeving voor R-projecten op basis van [rocker/tidyverse](https://rocker-project.org/). Inclusief Claude Code CLI en CEDA org-skills. -## Gebruik +## Vereisten + +**Docker is verplicht** — zonder Docker werkt geen van onderstaande methoden. + +- **Windows / macOS**: installeer [Docker Desktop](https://www.docker.com/products/docker-desktop/) +- **Linux**: installeer [Docker Engine](https://docs.docker.com/engine/install/) -1. Clone deze repo naar GitHub (bijv. als template voor je organisatie). -2. Open de map in VS Code. -3. Kies: `Reopen in Container` (Dev Containers / Codespaces). -4. Dependencies worden automatisch geïnstalleerd via het R-script in `postCreateCommand`. -5. Run de app: +## Opstarten +### VS Code + +1. Installeer de extensie **Dev Containers** (`ms-vscode-remote.remote-containers`) +2. Clone de repo en open de map: ```bash - Rscript src/main.R + git clone https://github.com/cedanl/r-devcontainer + code r-devcontainer ``` +3. Klik op **"Reopen in Container"** rechtsonder, of `F1` → **Dev Containers: Reopen in Container** -## Vereisten +### Positron + +Clone de repo en open de map in Positron. Positron detecteert de `.devcontainer/devcontainer.json` automatisch en vraagt of je wilt heropenen in een container. + +### DevPod + +```bash +devpod up github.com/cedanl/r-devcontainer +``` + +Of via de [DevPod UI](https://devpod.sh/): **Create Workspace** → voer de repository-URL in. + +### Devcontainer CLI + +```bash +npm install -g @devcontainers/cli +git clone https://github.com/cedanl/r-devcontainer +devcontainer up --workspace-folder r-devcontainer +``` + +## Claude Code instellen + +Claude Code is vooraf geïnstalleerd, maar heeft twee credentials nodig voor de CEDA Foundry API. + +**Stap 1** — Maak het secrets-bestand aan: +```bash +cp .devcontainer/.env.example .devcontainer/.env +``` + +**Stap 2** — Vul je credentials in in `.devcontainer/.env`: +``` +ANTHROPIC_FOUNDRY_API_KEY= +ANTHROPIC_FOUNDRY_RESOURCE= +``` + +> Dit bestand staat in `.gitignore` en wordt nooit gecommit. + +**Stap 3** — `F1` → **Dev Containers: Rebuild Container** + +Na het herbouwen werkt `claude` meteen. + +## Wat zit er in de container? + +| Tool | Beschrijving | +|------|-------------| +| `R` + tidyverse | R met vooraf geïnstalleerde tidyverse-pakketten | +| `devtools`, `pak`, `renv` | R-pakketbeheer en projectbeheer | +| `claude` | Claude Code CLI | +| `gh` | GitHub CLI | +| CEDA org-skills | Geladen vanuit `cedanl/.github` via `npx skills` | -- Docker moet geïnstalleerd en actief zijn op je machine (of je gebruikt GitHub Codespaces met container support). -- Een editor die met devcontainers overweg kan, zoals VS Code + de Dev Containers-extensie of GitHub Codespaces. +## Problemen oplossen -**Zonder Docker (of een equivalente container runtime) kan deze setup niet werken**, omdat de volledige ontwikkelomgeving in de container draait. +| Probleem | Oplossing | +|----------|-----------| +| "Cannot connect to Docker daemon" | Zorg dat Docker draait | +| Container bouwt niet | Controleer je internetverbinding | +| `claude` geeft API-fout | Controleer `.devcontainer/.env` en rebuild | +| Skills niet geladen | `npx skills add cedanl/.github --skill '*' -a claude-code -y --copy -g` |