Back to Skills

manage-renv-dependencies

pjt222
Updated Yesterday
3 views
17
2
17
View on GitHub
Otherapiautomation

About

This Claude Skill manages R package dependencies using renv to create reproducible environments. It handles initialization, snapshot/restore workflows, troubleshooting common issues, and CI/CD integration. Use it when setting up new R projects, adding/updating packages, restoring environments on new machines, or integrating renv with CI/CD pipelines.

Quick Install

Claude Code

Recommended
Primary
npx skills add pjt222/agent-almanac -a claude-code
Plugin CommandAlternative
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternative
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/manage-renv-dependencies

Copy and paste this command in Claude Code to install this skill

Documentation


name: manage-renv-dependencies locale: de source_locale: en source_commit: 6f65f316 translator: claude translation_date: "2026-03-17" description: > R-Paketabhaengigkeiten mit renv fuer reproduzierbare Umgebungen verwalten. Behandelt Initialisierung, Snapshot/Restore-Workflow, Fehlersuche bei haeufigen Problemen und CI/CD-Integration. Anwenden bei der Initialisierung der Abhaengigkeitsverwaltung fuer ein neues R-Projekt, beim Hinzufuegen oder Aktualisieren von Paketen, beim Wiederherstellen einer Umgebung auf einem neuen Rechner, bei der Fehlersuche bei Wiederherstellungsfehlern oder bei der Integration von renv mit CI/CD-Pipelines. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: r-packages complexity: intermediate language: R tags: r, renv, dependencies, reproducibility, lockfile

renv-Abhaengigkeiten verwalten

Reproduzierbare R-Paketumgebungen mit renv einrichten und pflegen.

Wann verwenden

  • Initialisierung der Abhaengigkeitsverwaltung fuer ein neues R-Projekt
  • Hinzufuegen oder Aktualisieren von Paketabhaengigkeiten
  • Wiederherstellen einer Projektumgebung auf einem neuen Rechner
  • Fehlersuche bei renv-Wiederherstellungsfehlern
  • Integration von renv mit CI/CD-Pipelines

Eingaben

  • Erforderlich: R-Projektverzeichnis
  • Optional: Vorhandene renv.lock-Datei (fuer Wiederherstellung)
  • Optional: GitHub PAT fuer private Pakete

Vorgehensweise

Schritt 1: renv initialisieren

renv::init()

Dies erstellt:

  • renv/-Verzeichnis (Bibliothek, Einstellungen, Aktivierungsskript)
  • renv.lock (Abhaengigkeits-Snapshot)
  • Aktualisiert .Rprofile um renv beim Laden zu aktivieren

Erwartet: Projektlokale Bibliothek erstellt. renv/-Verzeichnis und renv.lock vorhanden. .Rprofile mit Aktivierungsskript aktualisiert.

Bei Fehler: Wenn es haengt, die Netzwerkverbindung pruefen. Wenn es bei einem bestimmten Paket fehlschlaegt, dieses Paket zuerst manuell mit install.packages() installieren und dann renv::init() erneut ausfuehren.

Schritt 2: Abhaengigkeiten hinzufuegen

Pakete wie gewohnt installieren:

install.packages("dplyr")
renv::install("github-user/private-pkg")

Dann einen Snapshot erstellen um den Zustand festzuhalten:

renv::snapshot()

Erwartet: renv.lock mit neuen Paketen und deren Versionen aktualisiert. renv::status() zeigt keine nicht-synchronisierten Pakete.

Bei Fehler: Wenn renv::snapshot() Validierungsfehler meldet, renv::dependencies() ausfuehren um zu pruefen welche Pakete tatsaechlich verwendet werden, dann renv::snapshot(force = TRUE) um die Validierung zu umgehen.

Schritt 3: Auf einem anderen Rechner wiederherstellen

renv::restore()

Erwartet: Alle Pakete in den exakten Versionen aus renv.lock installiert.

Bei Fehler: Haeufige Probleme: GitHub-Pakete schlagen fehl (GITHUB_PAT in .Renviron setzen), Systemabhaengigkeiten fehlen (unter Linux mit apt-get installieren), Timeouts bei grossen Paketen (options(timeout = 600) vor der Wiederherstellung setzen) oder Binaerpakete nicht verfuegbar (renv kompiliert aus Quellcode; sicherstellen dass Build-Werkzeuge installiert sind).

Schritt 4: Abhaengigkeiten aktualisieren

# Ein bestimmtes Paket aktualisieren
renv::update("dplyr")

# Alle Pakete aktualisieren
renv::update()

# Snapshot nach Aktualisierungen
renv::snapshot()

Erwartet: Zielpakete auf ihre neuesten kompatiblen Versionen aktualisiert. renv.lock spiegelt nach dem Snapshot die neuen Versionen wider.

Bei Fehler: Wenn renv::update() fuer ein bestimmtes Paket fehlschlaegt, es direkt mit renv::install("package@version") installieren und dann einen Snapshot erstellen.

Schritt 5: Status pruefen

renv::status()

Erwartet: "No issues found" oder eine klare Liste nicht-synchronisierter Pakete mit umsetzbaren Hinweisen.

Bei Fehler: Wenn der Status Pakete meldet die verwendet aber nicht erfasst sind, renv::snapshot() ausfuehren. Wenn Pakete erfasst aber nicht installiert sind, renv::restore() ausfuehren.

Schritt 6: .Rprofile fuer bedingte Aktivierung konfigurieren

if (file.exists("renv/activate.R")) {
  source("renv/activate.R")
}

Dies stellt sicher dass das Projekt auch funktioniert wenn renv nicht installiert ist (CI-Umgebungen, Mitarbeiter).

Erwartet: R-Sitzungen aktivieren renv automatisch beim Start im Projektverzeichnis. Sitzungen ohne installiertes renv starten weiterhin fehlerfrei.

Bei Fehler: Wenn .Rprofile Fehler verursacht, sicherstellen dass die file.exists()-Pruefung vorhanden ist. Nie source("renv/activate.R") bedingungslos aufrufen.

Schritt 7: Git-Konfiguration

Diese Dateien versionieren:

renv.lock           # Immer committen
renv/activate.R     # Immer committen
renv/settings.json  # Immer committen
.Rprofile           # Committen (enthaelt renv-Aktivierung)

Diese ignorieren (bereits in renvs .gitignore):

renv/library/       # Maschinenspezifisch
renv/staging/       # Temporaer
renv/cache/         # Maschinenspezifischer Cache

Erwartet: renv.lock, renv/activate.R und renv/settings.json werden von Git versioniert. Maschinenspezifische Verzeichnisse (renv/library/, renv/cache/) werden ignoriert.

Bei Fehler: Wenn renv/library/ versehentlich committet wurde, mit git rm -r --cached renv/library/ entfernen und zu .gitignore hinzufuegen.

Schritt 8: CI/CD-Integration

In GitHub Actions die renv-Cache-Action verwenden:

- uses: r-lib/actions/setup-renv@v2

Dies stellt automatisch aus renv.lock mit Caching wieder her.

Erwartet: CI-Pipeline stellt Pakete aus renv.lock mit aktiviertem Caching wieder her. Nachfolgende Durchlaeufe sind durch gecachte Pakete schneller.

Bei Fehler: Wenn die CI-Wiederherstellung fehlschlaegt, pruefen dass renv.lock committet und aktuell ist. Fuer private GitHub-Pakete sicherstellen dass GITHUB_PAT als Repository-Secret gesetzt ist.

Validierung

  • renv::status() meldet keine Probleme
  • renv.lock ist in die Versionskontrolle committet
  • renv::restore() funktioniert bei einem sauberen Checkout
  • .Rprofile aktiviert renv bedingt
  • CI/CD verwendet renv.lock fuer die Abhaengigkeitsaufloesung

Haeufige Stolperfallen

  • renv::init() im falschen Verzeichnis ausfuehren: Immer zuerst getwd() verifizieren
  • renv und Systembibliothek mischen: Nach renv::init() nur die Projektbibliothek verwenden
  • Snapshot vergessen: Nach der Installation von Paketen immer renv::snapshot() ausfuehren
  • --vanilla-Flag: Rscript --vanilla ueberspringt .Rprofile, sodass renv nicht aktiviert wird
  • Grosse Lock-Dateien in Diffs: Normal -- renv.lock ist als diffbares JSON konzipiert
  • Bioconductor-Pakete: renv::install("bioc::PackageName") verwenden und sicherstellen dass BiocManager konfiguriert ist

Verwandte Skills

  • create-r-package -- beinhaltet renv-Initialisierung
  • setup-github-actions-ci -- CI-Integration mit renv
  • submit-to-cran -- Abhaengigkeitsverwaltung fuer CRAN-Pakete

GitHub Repository

pjt222/agent-almanac
Path: i18n/de/skills/manage-renv-dependencies
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Related Skills

llamaguard

Other

LlamaGuard is Meta's 7-8B parameter model for moderating LLM inputs and outputs across six safety categories like violence and hate speech. It offers 94-95% accuracy and can be deployed using vLLM, Hugging Face, or Amazon SageMaker. Use this skill to easily integrate content filtering and safety guardrails into your AI applications.

View skill

cost-optimization

Other

This Claude Skill helps developers optimize cloud costs through resource rightsizing, tagging strategies, and spending analysis. It provides a framework for reducing cloud expenses and implementing cost governance across AWS, Azure, and GCP. Use it when you need to analyze infrastructure costs, right-size resources, or meet budget constraints.

View skill

quantizing-models-bitsandbytes

Other

This skill quantizes LLMs to 8-bit or 4-bit precision using bitsandbytes, achieving 50-75% memory reduction with minimal accuracy loss. It's ideal for running larger models on limited GPU memory or accelerating inference, supporting formats like INT8, NF4, and FP4. The skill integrates with HuggingFace Transformers and enables QLoRA training and 8-bit optimizers.

View skill

dispatching-parallel-agents

Other

This Claude Skill dispatches multiple agents to investigate and fix 3+ independent problems concurrently. It is designed for scenarios involving unrelated failures that can be resolved without shared state or dependencies. The core capability is parallel problem-solving, assigning one agent per independent problem domain to maximize efficiency.

View skill