manage-renv-dependencies
À propos
Cette compétence gère les dépendances des packages R en utilisant renv pour créer des environnements reproductibles. Elle couvre l'initialisation, les workflows de capture/restauration, le dépannage et l'intégration CI/CD. Utilisez-la lors de la configuration de nouveaux projets R, de l'ajout/mise à jour de packages, de la restauration d'environnements ou de la résolution de problèmes de restauration.
Installation rapide
Claude Code
Recommandénpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/manage-renv-dependenciesCopiez et collez cette commande dans Claude Code pour installer cette compétence
Documentation
Manage renv Dependencies
Set up and maintain reproducible R package environments using renv.
When to Use
- Initializing dependency management for a new R project
- Adding or updating package dependencies
- Restoring a project environment on a new machine
- Troubleshooting renv restore failures
- Integrating renv with CI/CD pipelines
Inputs
- Required: R project directory
- Optional: Existing
renv.lockfile (for restore) - Optional: GitHub PAT for private packages
Procedure
Step 1: Initialize renv
renv::init()
This creates:
renv/directory (library, settings, activation script)renv.lock(dependency snapshot)- Updates
.Rprofileto activate renv on load
Got: Project-local library created. renv/ directory and renv.lock present. .Rprofile updated with activation script.
If fail: If it hangs, check network connectivity. If it fails on a specific package, install that package manually first with install.packages() and then rerun renv::init().
Step 2: Add Dependencies
Install packages as usual:
install.packages("dplyr")
renv::install("github-user/private-pkg")
Then snapshot to record the state:
renv::snapshot()
Got: renv.lock updated with new packages and their versions. renv::status() shows no out-of-sync packages.
If fail: If renv::snapshot() reports validation errors, run renv::dependencies() to check which packages are actually used, then renv::snapshot(force = TRUE) to bypass validation.
Step 3: Restore on Another Machine
renv::restore()
Got: All packages installed at the exact versions in renv.lock.
If fail: Common issues: GitHub packages fail (set GITHUB_PAT in .Renviron), system dependencies missing (install with apt-get on Linux), timeouts on large packages (set options(timeout = 600) before restore), or binaries not available (renv compiles from source; ensure build tools are installed).
Step 4: Update Dependencies
# Update a specific package
renv::update("dplyr")
# Update all packages
renv::update()
# Snapshot after updates
renv::snapshot()
Got: Target packages are updated to their latest compatible versions. renv.lock reflects the new versions after snapshot.
If fail: If renv::update() fails for a specific package, try installing it directly with renv::install("package@version") and then snapshot.
Step 5: Check Status
renv::status()
Got: "No issues found" or a clear list of out-of-sync packages with actionable guidance.
If fail: If status reports packages used but not recorded, run renv::snapshot(). If packages are recorded but not installed, run renv::restore().
Step 6: Configure .Rprofile for Conditional Activation
if (file.exists("renv/activate.R")) {
source("renv/activate.R")
}
This ensures the project works even if renv isn't installed (CI environments, collaborators).
Got: R sessions activate renv automatically when starting in the project directory. Sessions without renv installed still start without errors.
If fail: If .Rprofile causes errors, ensure the file.exists() guard is present. Never call source("renv/activate.R") unconditionally.
Step 7: Git Configuration
Track these files:
renv.lock # Always commit
renv/activate.R # Always commit
renv/settings.json # Always commit
.Rprofile # Commit (contains renv activation)
Ignore these (already in renv's .gitignore):
renv/library/ # Machine-specific
renv/staging/ # Temporary
renv/cache/ # Machine-specific cache
Got: renv.lock, renv/activate.R, and renv/settings.json are tracked by Git. Machine-specific directories (renv/library/, renv/cache/) are ignored.
If fail: If renv/library/ accidentally gets committed, remove it with git rm -r --cached renv/library/ and add it to .gitignore.
Step 8: CI/CD Integration
In GitHub Actions, use the renv cache action:
- uses: r-lib/actions/setup-renv@v2
This automatically restores from renv.lock with caching.
Got: CI pipeline restores packages from renv.lock with caching enabled. Subsequent runs are faster due to cached packages.
If fail: If CI restore fails, check that renv.lock is committed and up to date. For private GitHub packages, ensure GITHUB_PAT is set as a repository secret.
Validation
-
renv::status()reports no issues -
renv.lockis committed to version control -
renv::restore()works on a clean checkout -
.Rprofileconditionally activates renv - CI/CD uses
renv.lockfor dependency resolution
Pitfalls
- Running
renv::init()in wrong directory: Always verifygetwd()first - Mixing renv and system library: After
renv::init(), only use the project library - Forgetting to snapshot: After installing packages, always run
renv::snapshot() --vanillaflag:Rscript --vanillaskips.Rprofile, so renv won't activate- Large lock files in diffs: Normal —
renv.lockis designed to be diffable JSON - Bioconductor packages: Use
renv::install("bioc::PackageName")and ensure BiocManager is configured
Related Skills
create-r-package- includes renv initializationsetup-github-actions-ci- CI integration with renvsubmit-to-cran- dependency management for CRAN packages
Dépôt GitHub
Compétences associées
llamaguard
AutreLlamaGuard est le modèle de Meta, doté de 7 à 8 milliards de paramètres, conçu pour modérer les entrées et sorties des LLM selon six catégories de sécurité comme la violence et les discours haineux. Il offre une précision de 94 à 95 % et peut être déployé avec vLLM, Hugging Face ou Amazon SageMaker. Utilisez cette compétence pour intégrer facilement le filtrage de contenu et des garde-fous de sécurité dans vos applications d'IA.
cost-optimization
AutreCette compétence de Claude aide les développeurs à optimiser les coûts du cloud grâce au redimensionnement des ressources, aux stratégies d'étiquetage et à l'analyse des dépenses. Elle fournit un cadre pour réduire les dépenses cloud et mettre en œuvre une gouvernance des coûts sur AWS, Azure et GCP. Utilisez-la lorsque vous devez analyser les coûts d'infrastructure, redimensionner les ressources ou respecter des contraintes budgétaires.
quantizing-models-bitsandbytes
AutreCette compétence quantifie les LLMs en précision 8 bits ou 4 bits à l'aide de bitsandbytes, permettant une réduction de 50 à 75 % de la mémoire utilisée avec une perte de précision minime. Elle est idéale pour exécuter des modèles plus volumineux sur une mémoire GPU limitée ou pour accélérer l'inférence, prenant en charge des formats comme INT8, NF4 et FP4. La compétence s'intègre à HuggingFace Transformers et permet l'entraînement QLoRA ainsi que l'utilisation d'optimiseurs en 8 bits.
dispatching-parallel-agents
AutreCette compétence Claude déploie plusieurs agents pour enquêter et résoudre simultanément 3 problèmes indépendants ou plus. Elle est conçue pour des scénarios impliquant des défaillances non liées qui peuvent être résolues sans état partagé ni dépendances. La capacité fondamentale est la résolution de problèmes en parallèle, en assignant un agent par domaine problématique indépendant afin de maximiser l'efficacité.
