Agent-almanac create-r-package
install
source · Clone the upstream repo
git clone https://github.com/pjt222/agent-almanac
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/de/skills/create-r-package" ~/.claude/skills/pjt222-agent-almanac-create-r-package-ba74e1 && rm -rf "$T"
manifest:
i18n/de/skills/create-r-package/SKILL.mdsource content
R-Paket erstellen
Ein vollstaendig konfiguriertes R-Paket mit modernen Werkzeugen und Best Practices aufsetzen.
Wann verwenden
- Beim Erstellen eines neuen R-Pakets von Grund auf
- Beim Umwandeln loser R-Skripte in ein Paket
- Beim Aufsetzen eines Paketgeruests fuer kollaborative Entwicklung
Eingaben
- Erforderlich: Paketname (Kleinbuchstaben, keine Sonderzeichen ausser
). - Erforderlich: Einzeilige Beschreibung des Paketzwecks
- Optional: Lizenztyp (Standard: MIT)
- Optional: Autorinformationen (Name, E-Mail, ORCID)
- Optional: Ob renv initialisiert werden soll (Standard: ja)
Vorgehensweise
Schritt 1: Paketgeruest erstellen
usethis::create_package("packagename") setwd("packagename")
Erwartet: Verzeichnis erstellt mit
DESCRIPTION, NAMESPACE, R/ und man/ Unterverzeichnissen.
Bei Fehler: Sicherstellen, dass usethis installiert ist (
install.packages("usethis")). Pruefen, dass das Verzeichnis nicht bereits existiert.
Schritt 2: DESCRIPTION konfigurieren
DESCRIPTION mit korrekten Metadaten bearbeiten:
Package: packagename Title: What the Package Does (Title Case) Version: 0.1.0 Authors@R: person("First", "Last", , "email@example.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0000-0000-0000")) Description: One paragraph describing what the package does. Must be more than one sentence. Avoid starting with "This package". License: MIT + file LICENSE Encoding: UTF-8 Roxygen: list(markdown = TRUE) RoxygenNote: 7.3.2 URL: https://github.com/username/packagename BugReports: https://github.com/username/packagename/issues
Erwartet: Gueltige DESCRIPTION, die
R CMD check ohne Metadaten-Warnungen besteht.
Bei Fehler: Falls
R CMD check DESCRIPTION-Felder bemaengelt, sicherstellen, dass Title in Title Case ist, Description mehr als einen Satz enthaelt und Authors@R gueltige person()-Syntax verwendet.
Schritt 3: Infrastruktur einrichten
usethis::use_mit_license() usethis::use_readme_md() usethis::use_news_md() usethis::use_testthat(edition = 3) usethis::use_git() usethis::use_github_action("check-standard")
Erwartet: LICENSE, README.md, NEWS.md,
tests/-Verzeichnis, .git/ initialisiert und .github/workflows/ erstellt.
Bei Fehler: Falls eine
usethis::use_*()-Funktion fehlschlaegt, die fehlende Abhaengigkeit installieren und erneut ausfuehren. Falls .git/ bereits existiert, ueberspringt use_git() die Initialisierung.
Schritt 4: Entwicklungskonfiguration erstellen
.Rprofile erstellen:
if (file.exists("renv/activate.R")) { source("renv/activate.R") } if (requireNamespace("mcptools", quietly = TRUE)) { mcptools::mcp_session() }
.Renviron.example erstellen:
RSTUDIO_PANDOC="C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools" # GITHUB_PAT=your_github_token_here
.Rbuildignore-Eintraege erstellen:
^\.Rprofile$ ^\.Renviron$ ^\.Renviron\.example$ ^renv$ ^renv\.lock$ ^CLAUDE\.md$ ^\.github$ ^.*\.Rproj$
Erwartet:
.Rprofile, .Renviron.example und .Rbuildignore sind erstellt. Entwicklungsdateien sind vom gebauten Paket ausgeschlossen.
Bei Fehler: Falls
.Rprofile beim Start Fehler verursacht, Syntaxprobleme pruefen. Sicherstellen, dass requireNamespace()-Schutzabfragen Fehler bei fehlenden optionalen Paketen verhindern.
Schritt 5: renv initialisieren
renv::init()
Erwartet:
renv/-Verzeichnis und renv.lock erstellt. Projektlokale Bibliothek ist aktiv.
Bei Fehler: renv mit
install.packages("renv") installieren. Falls renv bei der Initialisierung haengt, Netzwerkverbindung pruefen oder options(timeout = 600) setzen.
Schritt 6: Paketdokumentationsdatei erstellen
R/packagename-package.R erstellen:
#' @keywords internal "_PACKAGE" ## usethis namespace: start ## usethis namespace: end NULL
Erwartet:
R/packagename-package.R existiert mit dem "_PACKAGE"-Sentinel. Ausfuehren von devtools::document() generiert die paketweite Hilfe.
Bei Fehler: Sicherstellen, dass der Dateiname dem Muster
R/<packagename>-package.R entspricht. Der "_PACKAGE"-String muss ein eigenstaendiger Ausdruck sein, nicht innerhalb einer Funktion.
Schritt 7: CLAUDE.md erstellen
CLAUDE.md im Projektstammverzeichnis mit projektspezifischen Anweisungen fuer KI-Assistenten erstellen.
Erwartet:
CLAUDE.md existiert im Projektstammverzeichnis mit projektspezifischen Bearbeitungskonventionen, Build-Befehlen und Architekturhinweisen.
Bei Fehler: Falls unsicher, was enthalten sein soll, mit dem Paketnamen, einer einzeiligen Beschreibung, gaengigen Entwicklungsbefehlen (
devtools::check(), devtools::test()) und nicht offensichtlichen Konventionen beginnen.
Validierung
-
liefert 0 Fehler, 0 Warnungendevtools::check() - Paketstruktur entspricht dem erwarteten Layout
-
laedt fehlerfrei.Rprofile -
zeigt keine Problemerenv::status() - Git-Repository initialisiert mit passendem
.gitignore - GitHub Actions Workflow-Datei vorhanden
Haeufige Stolperfallen
- Paketnamenskonflikte: Vor der Namensfestlegung CRAN mit
pruefenavailable::available("packagename") - Fehlende .Rbuildignore-Eintraege: Entwicklungsdateien (
,.Rprofile
,.Renviron
) muessen vom gebauten Paket ausgeschlossen werdenrenv/ - Encoding vergessen: Immer
in DESCRIPTION einfuegenEncoding: UTF-8 - RoxygenNote-Abweichung: Die Version in DESCRIPTION muss mit der installierten roxygen2-Version uebereinstimmen
Beispiele
# Minimale Erstellung usethis::create_package("myanalysis") # Vollstaendiges Setup in einer Sitzung usethis::create_package("myanalysis") usethis::use_mit_license() usethis::use_testthat(edition = 3) usethis::use_readme_md() usethis::use_git() usethis::use_github_action("check-standard") renv::init()
Verwandte Skills
- Funktionen dokumentierenwrite-roxygen-docs
- Tests fuer das Paket hinzufuegenwrite-testthat-tests
- Detaillierte CI/CD-Konfigurationsetup-github-actions-ci
- Paketabhaengigkeiten verwaltenmanage-renv-dependencies
- Wirksame KI-Assistenten-Anweisungen erstellenwrite-claude-md