write-roxygen-docs
关于
This skill generates comprehensive roxygen2 documentation for R package components including functions, datasets, and classes. It handles standard tags, cross-references, examples, and NAMESPACE entries while following tidyverse style conventions. Use it when adding documentation for new exports, internal helpers, datasets, or when fixing R CMD check notes related to documentation.
快速安装
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/write-roxygen-docs在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
name: write-roxygen-docs description: > Rパッケージの関数、データセット、クラスのroxygen2ドキュメントを記述する。 標準タグ、相互参照、使用例、NAMESPACEエントリの生成を網羅。 tidyverseドキュメントスタイルに準拠。新規エクスポート関数のドキュメント追加、 内部ヘルパーやデータセットのドキュメント作成、S3/S4/R6クラスとメソッドの ドキュメント作成、またはドキュメント関連のR CMD checkノートの修正時に使用する。 locale: ja source_locale: en source_commit: 6f65f316 translator: claude-opus-4-6 translation_date: 2026-03-16 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, roxygen2, documentation, namespace
Roxygenドキュメントの記述
Rパッケージの関数、データセット、クラスの完全なroxygen2ドキュメントを作成する。
使用タイミング
- 新規エクスポート関数にドキュメントを追加する時
- 内部ヘルパー関数をドキュメント化する時
- パッケージのデータセットをドキュメント化する時
- S3/S4/R6クラスとメソッドをドキュメント化する時
- ドキュメント関連の
R CMD checkノートを修正する時
入力
- 必須: ドキュメント化するR関数、データセット、またはクラス
- 任意: 相互参照のための関連関数(
@family、@seealso) - 任意: 関数をエクスポートすべきかどうか
手順
ステップ1: 関数ドキュメントの記述
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
}
期待結果: タイトル、説明文、各パラメータの@param、@return、@examples、@exportを含む完全なroxygenブロックが作成される。
失敗時: タグについて不明な場合は?roxygen2::rd_rocletを確認する。よくある省略は@returnで、CRANではエクスポートされるすべての関数に必須。
ステップ2: 必須タグリファレンス
| タグ | 目的 | エクスポートに必須? |
|---|---|---|
#' Title | 最初の行、1文 | はい |
#' Description | 空行後の段落 | はい |
@param | パラメータのドキュメント | はい |
@return | 戻り値の説明 | はい(CRAN) |
@examples | 使用例 | 強く推奨 |
@export | NAMESPACEに追加 | はい、パブリックAPIの場合 |
@family | 関連関数のグループ化 | 推奨 |
@seealso | 相互参照 | 任意 |
@keywords internal | 内部としてマーク | エクスポートしないドキュメントに |
期待結果: 関数タイプに必要なすべての必須タグが特定される。エクスポートされる関数は最低限@param、@return、@examples、@exportを持つ。
失敗時: タグについて不明な場合はroxygen2ドキュメントで使用法と構文を確認する。
ステップ3: データセットのドキュメント化
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()で保存されたオブジェクト名と完全に一致することを確認する。
ステップ4: パッケージのドキュメント化
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"文字列を含むことを確認する。
ステップ5: 特殊ケースの処理
名前にドットが含まれる関数(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プロノウンを使用したグローバル変数バインディングの修正:
#' @importFrom rlang .data
my_function <- function(df) {
dplyr::filter(df, .data$column > 5)
}
期待結果: 特殊ケース(S3メソッド、継承パラメータ、.dataプロノウン)が正しくドキュメント化される。@rdnameでS3メソッドをグループ化する。@inheritParamsで重複なくパラメータドキュメントを再利用する。
失敗時: R CMD checkが「グローバル変数の可視バインディングがない」と警告する場合は#' @importFrom rlang .dataを追加するか、最後の手段としてutils::globalVariables()を使用する。
ステップ6: ドキュメントの生成
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- rox ygen設定を含む初期パッケージセットアップwrite-testthat-tests- ドキュメント化した関数のテストwrite-vignette- 関数リファレンスを超えた長文ドキュメントsubmit-to-cran- CRANのドキュメント要件
GitHub 仓库
相关推荐技能
railway-docs
文档Railway Docs Skill可实时获取最新的Railway官方文档,确保回答的准确性。当开发者询问Railway功能特性、工作原理或分享docs.railway.com链接时,应优先使用此技能。它通过专门的LLM优化文档源提供最新信息,避免依赖过时记忆来回答技术问题。
n8n-code-python
文档该Skill为在n8n平台的Python代码节点中编写代码提供专家指导,特别适用于需要使用_input/_json/_node语法、Python标准库或了解n8n中Python限制的场景。它强调JavaScript应作为首选方案,仅当需要特定Python功能或对Python语法更熟悉时才使用Python。Skill提供了快速入门模板和关键注意事项,帮助开发者在n8n中高效编写Python代码。
archon
文档Archon Skill为开发者提供了基于RAG的语义搜索和项目任务管理功能,可通过REST API访问知识库。它支持文档搜索、网站爬取、文件上传和版本控制,适用于技术文档查询和项目管理场景。首次使用时需要配置Archon主机地址,建议在处理外部文档时优先使用该Skill。
n8n-code-javascript
文档这个Skill为n8n工作流中的JavaScript代码节点提供专业指导,涵盖数据处理、HTTP请求和日期操作等核心场景。它详细解释了如何正确使用n8n特有的`$input`/`$json`语法、`$helpers`工具以及DateTime对象,并包含关键的错误排查和模式选择建议。开发者通过该Skill能快速掌握Code节点的正确返回格式、数据访问方法和常见陷阱解决方案。
