返回技能列表

write-roxygen-docs

pjt222
更新于 6 days ago
19 次查看
17
2
17
在 GitHub 上查看
worddata

关于

This skill generates roxygen2 documentation for R package components including functions, datasets, and classes. It follows tidyverse style conventions and handles standard tags, cross-references, examples, and NAMESPACE entries. Use it when documenting new exports, internal helpers, S3/S4/R6 methods, or fixing R CMD check documentation issues.

快速安装

Claude Code

推荐
主要方式
npx skills add pjt222/agent-almanac -a claude-code
插件命令备选方式
/plugin add https://github.com/pjt222/agent-almanac
Git 克隆备选方式
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/write-roxygen-docs

在 Claude Code 中复制并粘贴此命令以安装该技能

技能文档

撰寫 Roxygen 文檔

為 R 套件之函式、資料集與類別建立完整之 roxygen2 文檔。

適用時機

  • 為新匯出函式加文檔
  • 為內部輔助函式加文檔
  • 為套件資料集加文檔
  • 為 S3/S4/R6 類別與方法加文檔
  • 修復文檔相關之 R CMD check

輸入

  • 必要:欲文檔化之 R 函式、資料集或類別
  • 選擇性:交叉引用之相關函式(@family@seealso
  • 選擇性:函式是否應匯出

步驟

步驟一:撰寫函式文檔

將 roxygen 註解直接置於函式上方:

#' Compute the weighted mean of a numeric vector
#'
#' Calculates the arithmetic mean of `x` weighted by `w`. Missing values
#' in either `x` or `w` are handled according to the `na.rm` parameter.
#'
#' @param x A numeric vector of values.
#' @param w A numeric vector of weights, same length as `x`.
#' @param na.rm Logical. Should missing values be removed? Default `FALSE`.
#'
#' @return A single numeric value representing the weighted mean.
#'
#' @examples
#' weighted_mean(1:5, rep(1, 5))
#' weighted_mean(c(1, 2, NA, 4), c(1, 1, 1, 1), na.rm = TRUE)
#'
#' @export
#' @family summary functions
#' @seealso [stats::weighted.mean()] for the base R equivalent
weighted_mean <- function(x, w, na.rm = FALSE) {
  # implementation
}

預期: 完整之 roxygen 區塊,含標題、描述、各參數之 @param@return@examples@export

失敗時: 若不確某標籤,查 ?roxygen2::rd_roclet。常見遺漏為 @return,CRAN 要求所有匯出函式皆需。

步驟二:必要標籤參考

標籤用途匯出時必要?
#' Title首行,一句
#' Description空白行後之段落
@param參數文檔
@return返回值描述是(CRAN)
@examples用法範例強烈建議
@export加至 NAMESPACE是,對公共 API
@family將相關函式分組建議
@seealso交叉引用選擇性
@keywords internal標為內部對非匯出文檔

預期: 函式類型所需之所有標籤皆已辨識。匯出函式至少有 @param@return@examples@export

失敗時: 若不熟某標籤,參 roxygen2 文檔 之用法與語法。

步驟三:文檔化資料集

建立 R/data.R

#' Example dataset of city temperatures
#'
#' A dataset containing daily temperature readings for major cities.
#'
#' @format A data frame with 365 rows and 4 variables:
#' \describe{
#'   \item{date}{Date of observation}
#'   \item{city}{City name}
#'   \item{temp_c}{Temperature in Celsius}
#'   \item{humidity}{Relative humidity percentage}
#' }
#' @source \url{https://example.com/data}
"city_temperatures"

預期: R/data.R 含各資料集之 roxygen 區塊,以 @format 描述結構,以 @source 提供資料來源。

失敗時:R CMD check 警告未文檔化之資料集,確保引號中之字串(如 "city_temperatures")精確匹配以 usethis::use_data() 儲存之物件名。

步驟四:文檔化套件

建立 R/packagename-package.R

#' @keywords internal
"_PACKAGE"

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

預期: R/packagename-package.R 存在,含 @keywords internal"_PACKAGE" 標記。執行 devtools::document() 生成 man/packagename-package.Rd

失敗時:R CMD check 報缺套件文檔頁,驗證文件名為 R/<packagename>-package.R 且含 "_PACKAGE" 字串。

步驟五:處理特殊情況

含點之函式名(S3 方法):

#' @export
#' @rdname process
process.myclass <- function(x, ...) {
  # S3 method
}

@inheritParams 重用文檔

#' @inheritParams weighted_mean
#' @param trim Fraction of observations to trim.
trimmed_mean <- function(x, w, na.rm = FALSE, trim = 0.1) {
  # implementation
}

.data 代詞之 no visible binding 修復

#' @importFrom rlang .data
my_function <- function(df) {
  dplyr::filter(df, .data$column > 5)
}

預期: 特殊情況(S3 方法、繼承參數、.data 代詞)得正確文檔化。@rdname 將 S3 方法分組。@inheritParams 重用參數文檔而不重複。

失敗時:R CMD check 警告「no visible binding for global variable」,加 #' @importFrom rlang .data 或最後手段用 utils::globalVariables()

步驟六:生成文檔

devtools::document()

預期: man/ 目錄已更新,各文檔化物件有 .Rd 文件。NAMESPACE 已重新生成,含正確之匯出與匯入。

失敗時: 檢查 roxygen 語法錯誤。常見問題:\describe{} 中未閉之括號、行上缺 #' 前綴或無效標籤名。修復後再跑 devtools::document()

驗證

  • 每匯出函式皆有 @param@return@examples
  • devtools::document() 運行無錯誤
  • devtools::check() 無文檔警告
  • @family 標籤正確將相關函式分組
  • 範例運行無錯誤(以 devtools::run_examples() 測試)

常見陷阱

  • @return:CRAN 要求所有匯出函式皆文檔化其返回值
  • 需網路/認證之範例:以 \dontrun{} 包裹,並加註說明原因
  • 慢範例:對可運行但對 CRAN 太慢者用 \donttest{}
  • roxygen 中之 markdown:於 DESCRIPTION 中以 Roxygen: list(markdown = TRUE) 啟用
  • 忘跑 devtools::document():man 頁為生成,非手寫

相關技能

  • create-r-package — 含 roxygen 配置之初始套件設置
  • write-testthat-tests — 測試所文檔化之函式
  • write-vignette — 函式參考之外之長篇文檔
  • submit-to-cran — CRAN 之文檔要求

GitHub 仓库

pjt222/agent-almanac
路径: i18n/wenyan-lite/skills/write-roxygen-docs
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

相关推荐技能

content-collections

Content Collections 是一个 TypeScript 优先的构建工具,可将本地 Markdown/MDX 文件转换为类型安全的数据集合。它专为构建博客、文档站和内容密集型 Vite+React 应用而设计,提供基于 Zod 的自动模式验证。该工具涵盖从 Vite 插件配置、MDX 编译到生产环境部署的完整工作流。

查看技能

polymarket

这个Claude Skill为开发者提供完整的Polymarket预测市场开发支持,涵盖API调用、交易执行和市场数据分析。关键特性包括实时WebSocket数据流,可监控实时交易、订单和市场动态。开发者可用它构建预测市场应用、实施交易策略并集成实时市场预测功能。

查看技能

creating-opencode-plugins

该Skill帮助开发者创建OpenCode插件,用于接入命令、文件、LSP等25+种事件。它提供了插件结构、事件API规范和JavaScript/TypeScript实现模式,适合需要拦截操作、扩展功能或自定义事件处理的场景。开发者可通过它快速构建响应式模块来增强OpenCode AI助手的能力。

查看技能

sglang

SGLang是一个专为LLM设计的高性能推理框架,特别适用于需要结构化输出的场景。它通过RadixAttention前缀缓存技术,在处理JSON、正则表达式、工具调用等具有重复前缀的复杂工作流时,能实现极速生成。如果你正在构建智能体或多轮对话系统,并追求远超vLLM的推理性能,SGLang是理想选择。

查看技能