Agent-almanac submit-to-cran
git clone https://github.com/pjt222/agent-almanac
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/ja/skills/submit-to-cran" ~/.claude/skills/pjt222-agent-almanac-submit-to-cran-9aa2dc && rm -rf "$T"
i18n/ja/skills/submit-to-cran/SKILL.mdCRANへの投稿
事前チェックから投稿まで、CRANへの投稿ワークフロー全体を実行する。
使用タイミング
- パッケージが初回CRANリリースの準備完了時
- 既存CRANパッケージの更新版を投稿する時
- CRANレビュー担当者のフィードバックを受けて再投稿する時
入力
- 必須: ローカルの
で0エラー・0警告をパスしたRパッケージR CMD check - 必須: DESCRIPTIONの更新済みバージョン番号
- 必須: 今バージョンの変更点を記載した更新済みNEWS.md
- 任意: 以前のCRANレビュー担当者のコメント(再投稿時)
手順
ステップ1: バージョンとNEWSの確認
DESCRIPTIONに正しいバージョンが記載されていることを確認する:
desc::desc_get_version()
NEWS.mdにこのバージョンのエントリがあることを確認する。エントリにはユーザー向けの変更点をまとめること。
期待結果: バージョンがセマンティックバージョニングに従っている。NEWS.mdにこのバージョンに対応するエントリがある。
失敗時:
usethis::use_version()でバージョンを更新する("major"、"minor"、または"patch"を選択)。ユーザー向けの変更点をまとめたNEWS.mdエントリを追加する。
ステップ2: ローカルR CMD Check
devtools::check()
期待結果: 0エラー、0警告、0ノート(新規投稿の場合は「New submission」という1つのノートは許容)。
失敗時: 進む前にすべてのエラーと警告を修正する。詳細は
<pkg>.Rcheck/00check.logのチェックログを参照する。ノートはcran-comments.mdで説明すること。
ステップ3: スペルチェック
devtools::spell_check()
正当な単語を
inst/WORDLISTに追加する(1行1単語、アルファベット順)。
期待結果: 予期しないスペルミスがない。フラグが立てられた単語はすべて修正済み、または
inst/WORDLISTに追加済み。
失敗時: 本当のスペルミスを修正する。正当な技術用語は
inst/WORDLISTに追加する(1行1単語、アルファベット順)。
ステップ4: URLチェック
urlchecker::url_check()
期待結果: すべてのURLがHTTP 200を返す。壊れたリンクやリダイレクトされたリンクがない。
失敗時: 壊れたURLを置き換える。DOIリンクには生URLの代わりに
\doi{}を使用する。存在しなくなったリソースへのリンクを削除する。
ステップ5: Win-Builderチェック
devtools::check_win_devel() devtools::check_win_release()
メールの結果を待つ(通常15〜30分)。
期待結果: Win-builderのreleaseとdevel両方で0エラー、0警告。結果は15〜30分以内にメールで届く。
失敗時: プラットフォーム固有の問題に対処する。一般的な原因:異なるコンパイラ警告、システム依存関係の欠如、パスセパレータの違い。ローカルで修正してWin-builderに再投稿する。
ステップ6: R-hubチェック
rhub::rhub_check()
複数のプラットフォーム(Ubuntu、Windows、macOS)でチェックする。
期待結果: すべてのプラットフォームで0エラー・0警告でパス。
失敗時: 特定のプラットフォームが失敗した場合、R-hubのビルドログでプラットフォーム固有のエラーを確認する。プラットフォーム依存の動作には
testthat::skip_on_os()や条件付きコードを使用する。
ステップ7: cran-comments.mdの準備
パッケージルートに
cran-comments.mdを作成または更新する:
## R CMD check results 0 errors | 0 warnings | 1 note * This is a new release. ## Test environments * local: Windows 11, R 4.5.0 * win-builder: R-release, R-devel * R-hub: ubuntu-latest (R-release), windows-latest (R-release), macos-latest (R-release) ## Downstream dependencies There are currently no downstream dependencies for this package.
更新版の場合は以下を含める:
- 変更点(簡潔に)
- 以前のレビュー担当者のフィードバックへの回答
- 該当する場合はリバースディペンデンシーチェックの結果
期待結果:
cran-comments.mdがすべてのテスト環境にわたるチェック結果を正確にまとめ、ノートを説明している。
失敗時: プラットフォーム間でチェック結果が異なる場合はすべてのバリエーションを文書化する。CRANレビュー担当者は独自のテストと照合してこれらの主張を確認する。
ステップ8: 最終事前チェック
# 最後のチェック devtools::check() # ビルドされたtarballを確認 devtools::build()
期待結果: 最終的な
devtools::check()がクリーンにパスする。.tar.gzのtarballが親ディレクトリに作成される。
失敗時: 土壇場で問題が発生した場合は修正してステップ2からすべてのチェックを再実行する。既知の失敗がある状態で投稿しないこと。
ステップ9: 投稿
devtools::release()
対話式チェックを実行して投稿する。すべての質問に正直に答えること。
または、tarballをアップロードして https://cran.r-project.org/submit.html から手動で投稿することもできる。
期待結果: CRANからの確認メールが数分以内に届く。確認リンクをクリックして投稿を確定する。
失敗時: 却下理由のメールを確認する。一般的な問題:例の実行時間が長すぎる、
\valueタグの欠如、移植性のないコード。問題を修正して再投稿し、cran-comments.mdに変更点を記載する。
ステップ10: 投稿後の処理
承認後:
# リリースをタグ付け usethis::use_github_release() # 開発バージョンにバンプ usethis::use_dev_version()
期待結果: 承認済みバージョンタグでGitHubリリースが作成される。DESCRIPTIONが開発バージョン(
x.y.z.9000)にバンプされる。
失敗時: GitHubリリースが失敗した場合は
gh release createで手動作成する。CRAN承認が遅延している場合は確認メールを受け取ってからタグ付けする。
バリデーション
-
がローカルマシンで0エラー・0警告を返すR CMD check - Win-builderでパス(releaseとdevel)
- R-hubがテストしたすべてのプラットフォームでパス
-
がチェック結果を正確に説明しているcran-comments.md - すべてのURLが有効
- スペルミスがない
- バージョン番号が正しく、インクリメントされている
- NEWS.mdが最新
- DESCRIPTIONのメタデータが完全で正確
よくある落とし穴
- 例の実行時間が長すぎる: コストのかかる例は
で囲む。CRANは時間制限を設けている\donttest{} - 非標準のファイル・ディレクトリ名: CRANのノートを引き起こすファイルを避ける(
を確認).Rbuildignore - ドキュメントの
が欠如: エクスポートされるすべての関数には\value
タグが必要@return - ビネットのビルド失敗:
なしのクリーンな環境でビネットがビルドされることを確認する.Renviron - DESCRIPTIONのタイトル形式: タイトルケース、末尾にピリオドなし、"A Package for..."は不可
- リバースディペンデンシーチェックを忘れる: 更新版の場合は
を実行するrevdepcheck::revdep_check()
例
# 投稿前の完全なワークフロー devtools::spell_check() urlchecker::url_check() devtools::check() devtools::check_win_devel() rhub::rhub_check() # 結果を待つ... devtools::release()
関連スキル
- バージョンバンプとgitタグ付けrelease-package-version
- CRANの標準を満たすドキュメントの確保write-roxygen-docs
- CRANの期待値を反映したCIチェックsetup-github-actions-ci
- 承認済みパッケージのドキュメントサイトbuild-pkgdown-site