Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Run the full R package release gate — regenerate docs, run the test suite, run R CMD check --as-cran, and triage every ERROR / WARNING / NOTE against CRAN policy before a release or submission. Use when the user says "check my R package", "R CMD check", "is this package CRAN-ready", "run devtools::check", "prepare for CRAN submission", or points at a directory containing a DESCRIPTION file. Produces a check report + CRAN-submission checklist in `quality_reports/`.
.claude/skills/pedrohcgs-r-package-check/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 68% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 13% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 130% | 0% |
/r-package-check — R Package Release GateRun the document → test → check → triage pipeline that decides whether an R package is releasable, then review the source for the issues R CMD check cannot see.
Input: $ARGUMENTS — the package root (a directory containing DESCRIPTION). If blank, autodetect by searching upward/within the working directory for DESCRIPTION.
.claude/rules/r-package-conventions.md — the CRAN-readiness bar (0 errors, 0 warnings, explained notes) is the gate.man/ and NAMESPACE as generated — regenerate with devtools::document(); never hand-edit them.r-package-reviewer agent on the source before declaring the package releasable.markdown## Pre-Flight Report — R Package Check **Package:** [name + version from DESCRIPTION] **Root:** [path] **Exported functions:** [from NAMESPACE / `@export` count] **Dependencies:** Imports [list] · Suggests [list] · Depends [list] **Toolchain available:** devtools [✓/✗], roxygen2 [✓/✗], testthat [✓/✗], R CMD [✓/✗], covr [✓/✗] **Plan:** document → test → check --as-cran → triage → review
Detect the toolchain with a quick probe; if devtools/R CMD is missing, stop and tell the user what to install.
bashRscript -e 'cat("devtools:", requireNamespace("devtools", quietly=TRUE), "roxygen2:", requireNamespace("roxygen2", quietly=TRUE), "testthat:", requireNamespace("testthat", quietly=TRUE), "covr:", requireNamespace("covr", quietly=TRUE), "\n")'
Regenerate man/ + NAMESPACE and detect drift (generated docs that were not committed):
bashRscript -e 'devtools::document("[pkg]")' git -C "[pkg]" status --short man/ NAMESPACE # any diff = generated docs were stale
If git status shows changes, flag: the committed man//NAMESPACE were out of sync with the roxygen blocks.
bashRscript -e 'devtools::test("[pkg]")'
Report failures and (if covr is available, Phase 4) coverage of exported functions.
--as-cran)Run the full check. This is slow (minutes) — background-launch and stream with the Monitor tool rather than blocking:
bashRscript -e 'devtools::check("[pkg]", args = "--as-cran")' # or: R CMD build [pkg] && R CMD check --as-cran [pkg]_*.tar.gz
Then triage every result into a table:
| Result | Tier | CRAN-policy meaning | Action | |---|---|---|---| | … | ERROR / WARNING / NOTE | … | fix / justify |
cran-comments.md (e.g., "New submission", "Found the following (possibly) invalid URLs … the URL is correct and reachable").bashRscript -e 'covr::package_coverage("[pkg]")'
Report per-function coverage; flag exported functions with 0% coverage.
Delegate to the r-package-reviewer agent:
"Review the package source at [pkg]"Address Critical (CRAN-policy violations) and High (check WARNINGs) findings.
Save a report to quality_reports/[package]_package_check.md and present a verdict:
markdown## Release Gate — [package] [version] - R CMD check --as-cran: E errors, W warnings, N notes - Tests: P passed, F failed - Coverage: X% of exported functions - r-package-reviewer: C critical, H high - **Verdict:** RELEASABLE / FIX-FIRST / POLICY-VIOLATION ### CRAN-submission checklist [ ] 0 errors, 0 warnings; each note justified in cran-comments.md [ ] Version bumped + NEWS.md updated [ ] devtools::check_win_devel() / R-hub on other platforms (note: run separately) [ ] Reverse-dependency check if this is an update (revdepcheck)
--as-cran or it doesn't count. A plain R CMD check misses the policy checks that actually gate submission.devtools::document(), not editing .Rd.devtools::release() are the maintainer's call.R CMD check --as-cran and covr can run for several minutes. Background-launch via Bash with run_in_background: true, capture the bash_id, and use the Monitor tool to stream progress (e.g. the checking … lines or process exit) instead of polling. See data-analysis/SKILL.md for the pattern.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→pass | 7,710 | 4,837 | -37% | 1 | 1 | 0% | 1,351 | 2,270 | +68% | 0 | 0 | — |
case-05 | fail→pass | 10,521 | 5,117 | -51% | 1 | 1 | 0% | 1,901 | 2,187 | +15% | 0 | 0 | — |
case-01 | fail→fail | 5,068 | 3,306 | -35% | 1 | 1 | 0% | 202 | 1,764 | +773% | 0 | 0 | — |
case-02 | fail→fail | 19,564 | 4,502 | -77% | 1 | 1 | 0% | 837 | 2,051 | +145% | 0 | 0 | — |
case-03 | fail→fail | 5,298 | 6,492 | +23% | 1 | 1 | 0% | 186 | 1,750 | +841% | 0 | 0 | — |
case-06 | pass→pass | 8,687 | 7,592 | -13% | 1 | 1 | 0% | 1,690 | 2,676 | +58% | 0 | 0 | — |
case-07 | fail→fail | 14,779 | 8,623 | -42% | 1 | 1 | 0% | 2,677 | 2,938 | +10% | 0 | 0 | — |
case-08 | fail→fail | 14,722 | 2,870 | -81% | 1 | 1 | 0% | 2,615 | 1,548 | -41% | 0 | 0 | — |
case-09 | fail→fail | 9,496 | 4,657 | -51% | 1 | 1 | 0% | 1,681 | 2,105 | +25% | 0 | 0 | — |
case-10 | fail→pass | 8,017 | 2,285 | -71% | 1 | 1 | 0% | 1,546 | 1,754 | +13% | 0 | 0 | — |
case-16 | fail→fail | 5,032 | 5,362 | +7% | 1 | 1 | 0% | 252 | 1,697 | +573% | 0 | 0 | — |
case-11 | fail→pass | 22,460 | 2,571 | -89% | 1 | 1 | 0% | 1,101 | 1,789 | +62% | 0 | 0 | — |
case-12 | pass→pass | 9,167 | 4,071 | -56% | 1 | 1 | 0% | 1,726 | 2,145 | +24% | 0 | 0 | — |
case-13 | fail→pass | 3,838 | 2,481 | -35% | 1 | 1 | 0% | 757 | 1,742 | +130% | 0 | 0 | — |
case-14 | fail→pass | 9,408 | 5,640 | -40% | 1 | 1 | 0% | 1,613 | 2,371 | +47% | 0 | 0 | — |
case-15 | fail→pass | 4,709 | 3,968 | -16% | 1 | 1 | 0% | 881 | 2,081 | +136% | 0 | 0 | — |
case-17 | fail→fail | 5,844 | 8,653 | +48% | 1 | 1 | 0% | 1,021 | 1,898 | +86% | 0 | 0 | — |
case-18 | fail→pass | 12,211 | 8,764 | -28% | 1 | 1 | 0% | 2,095 | 2,681 | +28% | 0 | 0 | — |
case-19 | pass→pass | 9,901 | 2,166 | -78% | 1 | 1 | 0% | 1,750 | 1,714 | -2% | 0 | 0 | — |
case-20 | fail→pass | 10,368 | 3,165 | -69% | 1 | 1 | 0% | 1,846 | 1,871 | +1% | 0 | 0 | — |
case-21 | fail→pass | 10,042 | 5,541 | -45% | 1 | 1 | 0% | 2,015 | 2,277 | +13% | 0 | 0 | — |
case-22 | fail→pass | 7,352 | 4,570 | -38% | 1 | 1 | 0% | 1,131 | 2,190 | +94% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 15 counted toward the lift figure. The other 7 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +50 percentage points is the difference between those two pass rates over the 15 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.