create-r-package
О программе
Этот навык Claude создает полную, готовую к использованию в production структуру R-пакета в соответствии с соглашениями usethis и стилем tidyverse. Он автоматически генерирует необходимые файлы, такие как DESCRIPTION и NAMESPACE, а также настраивает тестирование (testthat), документацию (roxygen2), управление зависимостями (renv), Git и CI на GitHub Actions. Используйте его при создании нового R-пакета с нуля, преобразовании отдельных скриптов в структурированный пакет или создании шаблона для совместной работы.
Быстрая установка
Claude Code
Рекомендуется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/create-r-packageСкопируйте и вставьте эту команду в Claude Code для установки этого навыка
Документация
name: create-r-package description: > Ein neues R-Paket mit vollstaendiger Struktur aufsetzen, einschliesslich DESCRIPTION, NAMESPACE, testthat, roxygen2, renv, Git, GitHub Actions CI und Entwicklungskonfigurationsdateien (.Rprofile, .Renviron.example, CLAUDE.md). Folgt den usethis-Konventionen und dem tidyverse-Stil. Verwenden beim Erstellen eines neuen R-Pakets von Grund auf, beim Umwandeln loser R-Skripte in ein strukturiertes Paket oder beim Aufsetzen eines Paketgeruests fuer kollaborative Entwicklung. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: r-packages complexity: basic language: R tags: r, package, usethis, scaffold, setup locale: de source_locale: en source_commit: 6a868d56 translator: claude-opus-4-6 translation_date: 2026-03-13
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 protected]", 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
-
devtools::check()liefert 0 Fehler, 0 Warnungen - Paketstruktur entspricht dem erwarteten Layout
-
.Rprofilelaedt fehlerfrei -
renv::status()zeigt keine Probleme - Git-Repository initialisiert mit passendem
.gitignore - GitHub Actions Workflow-Datei vorhanden
Haeufige Stolperfallen
- Paketnamenskonflikte: Vor der Namensfestlegung CRAN mit
available::available("packagename")pruefen - Fehlende .Rbuildignore-Eintraege: Entwicklungsdateien (
.Rprofile,.Renviron,renv/) muessen vom gebauten Paket ausgeschlossen werden - Encoding vergessen: Immer
Encoding: UTF-8in DESCRIPTION einfuegen - 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
write-roxygen-docs- Funktionen dokumentierenwrite-testthat-tests- Tests fuer das Paket hinzufuegensetup-github-actions-ci- Detaillierte CI/CD-Konfigurationmanage-renv-dependencies- Paketabhaengigkeiten verwaltenwrite-claude-md- Wirksame KI-Assistenten-Anweisungen erstellen
GitHub репозиторий
Похожие навыки
content-collections
МетаЭтот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.
polymarket
МетаЭтот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.
creating-opencode-plugins
МетаЭтот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.
sglang
МетаSGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.
