Zurück zu Fähigkeiten

create-r-package

pjt222
Aktualisiert Yesterday
1 Ansichten
17
2
17
Auf GitHub ansehen
Metaaitesting

Über

Diese Fähigkeit erstellt ein vollständiges R-Paket-Gerüst nach modernen Best Practices. Sie richtet wesentliche Komponenten ein wie DESCRIPTION, Testen mit testthat, Dokumentation mit roxygen2, Abhängigkeitsverwaltung mit renv und CI/CD mit GitHub Actions. Nutzen Sie sie beim Start eines neuen Pakets, bei der Umwandlung von Skripten in ein Paket oder beim Erstellen eines Projektgerüsts für kollaborative Arbeit.

Schnellinstallation

Claude Code

Empfohlen
Primär
npx skills add pjt222/agent-almanac -a claude-code
Plugin-BefehlAlternativ
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternativ
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/create-r-package

Kopieren Sie diesen Befehl und fügen Sie ihn in Claude Code ein, um diese Fähigkeit zu installieren

Dokumentation

Create R Package

Scaffold full R pkg w/ modern tools + best practices.

Use When

  • New R pkg from scratch
  • Loose R scripts → pkg
  • Pkg skeleton for collab dev

In

  • Required: Pkg name (lowercase, no special except .)
  • Required: 1-line desc
  • Optional: License (def: MIT)
  • Optional: Author (name, email, ORCID)
  • Optional: Init renv (def: yes)

Do

Step 1: Skeleton

usethis::create_package("packagename")
setwd("packagename")

Got: Dir w/ DESCRIPTION, NAMESPACE, R/, man/.

If err: Install usethis (install.packages("usethis")). Dir must not exist.

Step 2: DESCRIPTION

Edit w/ accurate metadata:

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

Got: Valid DESCRIPTION, R CMD check no metadata warns.

If err: Warns → Title Case, Description >1 sentence, Authors@R valid person().

Step 3: Infra

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")

Got: LICENSE, README.md, NEWS.md, tests/, .git/, .github/workflows/.

If err: use_*() fail → install missing dep + rerun. .git/ exists → use_git() skips.

Step 4: Dev Config

.Rprofile:

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

if (requireNamespace("mcptools", quietly = TRUE)) {
  mcptools::mcp_session()
}

.Renviron.example:

RSTUDIO_PANDOC="C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools"
# GITHUB_PAT=your_github_token_here

.Rbuildignore:

^\.Rprofile$
^\.Renviron$
^\.Renviron\.example$
^renv$
^renv\.lock$
^CLAUDE\.md$
^\.github$
^.*\.Rproj$

Got: .Rprofile, .Renviron.example, .Rbuildignore created. Dev files excluded from build.

If err: .Rprofile startup err → check syntax. requireNamespace() guards → prevent fail on missing pkgs.

Step 5: Init renv

renv::init()

Got: renv/ + renv.lock. Local lib active.

If err: Install renv (install.packages("renv")). Hang → check network / options(timeout = 600).

Step 6: Pkg Doc File

R/packagename-package.R:

#' @keywords internal
"_PACKAGE"

## usethis namespace: start
## usethis namespace: end
NULL

Got: File w/ "_PACKAGE" sentinel. devtools::document() → pkg-level help.

If err: Filename = R/<packagename>-package.R. "_PACKAGE" standalone, not in fn.

Step 7: CLAUDE.md

Create CLAUDE.md in root w/ proj-specific instructions for AI.

Got: CLAUDE.md in root w/ conventions + build cmds + arch notes.

If err: Unsure → pkg name, 1-line desc, dev cmds (devtools::check(), devtools::test()), non-obvious conventions.

Check

  • devtools::check() → 0 err, 0 warn
  • Struct matches layout
  • .Rprofile loads no err
  • renv::status() OK
  • Git init + .gitignore
  • GH Actions workflow present

Traps

  • Name conflicts: Check CRAN available::available("packagename") pre-commit
  • Missing .Rbuildignore: Dev files (.Rprofile, .Renviron, renv/) must be excluded
  • Forgot Encoding: Always Encoding: UTF-8 in DESCRIPTION
  • RoxygenNote mismatch: Ver in DESCRIPTION = installed roxygen2

Examples

# Minimal creation
usethis::create_package("myanalysis")

# Full setup in one session
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()

  • write-roxygen-docs — doc fns
  • write-testthat-tests — add tests
  • setup-github-actions-ci — CI/CD config
  • manage-renv-dependencies — deps mgmt
  • write-claude-md — AI instr

GitHub Repository

pjt222/agent-almanac
Pfad: i18n/caveman-ultra/skills/create-r-package
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Verwandte Skills

content-collections

Meta

Diese Skill bietet eine produktionsgetestete Einrichtung für Content Collections – ein TypeScript-first-Tool, das Markdown/MDX-Dateien in typsichere Datensammlungen mit Zod-Validierung umwandelt. Verwenden Sie ihn beim Erstellen von Blogs, Dokumentationsseiten oder inhaltsstarken Vite + React-Anwendungen, um Typsicherheit und automatische Inhaltsvalidierung zu gewährleisten. Er behandelt alles von der Vite-Plugin-Konfiguration und MDX-Kompilierung bis hin zur Deployment-Optimierung und Schema-Validierung.

Skill ansehen

polymarket

Meta

Diese Fähigkeit ermöglicht es Entwicklern, Anwendungen mit der Polymarket-Prognosemärkte-Plattform zu erstellen, einschließlich API-Integration für Handel und Marktdaten. Sie bietet außerdem Echtzeit-Datenstreaming über WebSocket, um Live-Trades und Marktaktivitäten zu überwachen. Nutzen Sie sie zur Implementierung von Handelsstrategien oder zur Erstellung von Tools, die Live-Marktaktualisierungen verarbeiten.

Skill ansehen

creating-opencode-plugins

Meta

Diese Fähigkeit unterstützt Entwickler dabei, OpenCode-Plugins zu erstellen, die in über 25 Ereignistypen wie Befehle, Dateien und LSP-Operationen eingreifen. Sie bietet die Plugin-Struktur, Event-API-Spezifikationen und Implementierungsmuster für JavaScript/TypeScript-Module. Nutzen Sie sie, wenn Sie den Lebenszyklus des OpenCode KI-Assistenten mit benutzerdefinierter ereignisgesteuerter Logik abfangen, überwachen oder erweitern müssen.

Skill ansehen

sglang

Meta

SGLang ist ein hochperformantes LLM-Serving-Framework, das sich auf schnelle, strukturierte Generierung für JSON, Regex und agentenbasierte Workflows unter Verwendung seines RadixAttention-Prefix-Cachings spezialisiert. Es bietet deutlich schnellere Inferenz, insbesondere für Aufgaben mit wiederholten Präfixen, was es ideal für komplexe, strukturierte Ausgaben und Mehrfachdialoge macht. Wählen Sie SGLang gegenüber Alternativen wie vLLM, wenn Sie constrained decoding benötigen oder Anwendungen mit umfangreicher Präfix-Weitergabe entwickeln.

Skill ansehen