This skill should be used when the user asks to "publish my R package", "R publication pipeline", "get this R package published", "CRAN and JOSS pipeline", "publish to CRAN and JOSS", or mentions an end-to-end R package publication workflow. It orchestrates the full CRAN → JOSS → (optionally JSS) publication pipeline for R packages, coordinating audits, paper drafting, and review cycles.
From pub-pipelinenpx claudepluginhub queelius/claude-anvil --plugin pub-pipelineThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
Orchestrate the full publication pipeline for R packages: CRAN submission → JOSS paper → optionally JSS methods paper. This skill coordinates the other skills (/cran-audit, /joss-audit, /joss-draft) into a coherent workflow.
The recommended publication order for R packages:
install.packages()Each stage builds on the previous. CRAN gives the package legitimacy. JOSS gives it a citable DOI. JSS gives the methodology academic weight.
Start by understanding where the package stands:
Load user config (Read tool): Read .claude/pub-pipeline.local.md if it exists. Extract author metadata, r.domain, r.audience, r.competitors, related_work, and publication targets from the YAML frontmatter. If related_work contains companion papers or preprints, note them — they affect the JOSS paper (cite companion papers, reference preprint DOIs) and the overall publication strategy.
1. Read DESCRIPTION for package metadata (Read tool)
2. Check git log for development history (Bash tool)
3. Look for existing paper.md, CITATION.cff (Glob tool)
4. Check if already on CRAN — search https://cran.r-project.org/package={name} (WebFetch tool)
5. Check if already on JOSS — search joss.theoj.org (WebSearch tool)
Dependency chain (Bash tool):
Parse Imports, Depends, and LinkingTo from DESCRIPTION. For each non-base/non-recommended package, verify it exists on CRAN:
Rscript -e 'ap <- available.packages(); cat("PKG_NAME" %in% rownames(ap))'
If any dependency is not on CRAN, this is a hard blocker — the package cannot pass R CMD check --as-cran. Present the submission order (publish dependencies first) and offer to switch to the dependency package. Also check r.dependency_chain in the user config for structured dependency status.
CI status (Bash/Glob tools):
Check for .github/workflows/ directory (Glob tool). If present, check recent CI status:
gh run list --limit 3 --json conclusion,name,headBranch
Flag if CI is failing — passing CI is important for CRAN confidence and JOSS reviewer trust.
Classify the package into one of:
| State | Next Step |
|---|---|
| Dependencies not on CRAN | Start with dependency package |
| Not on CRAN, no paper.md | Start with CRAN audit |
| On CRAN, no paper.md | Start with JOSS audit |
| On CRAN, has paper.md | Review paper, prepare JOSS submission |
| On CRAN, published in JOSS | Consider JSS (if substantive methodology) |
Note: If the package is bioinformatics-focused (genomics, proteomics, etc.), consider Bioconductor instead of CRAN. Bioconductor has its own submission process and is the standard distribution channel for bioinformatics R packages.
Present the assessment to the user and confirm the plan before proceeding.
Invoke /cran-audit (the cran-audit skill) to evaluate CRAN readiness.
If the package is not CRAN-ready:
If the package is already on CRAN, skip to Phase 3.
Key CRAN submission steps (when ready):
usethis::use_version("minor") — bump versiondevtools::check(args = "--as-cran") — final checkdevtools::check_win_devel() — Windows (win-builder)rhub::check_for_cran() — Multiple platforms via R-hubdevtools::submit_cran() — submitusethis::use_github_release(), then usethis::use_dev_version()If CRAN rejects the submission:
devtools::check(args = "--as-cran") to verifydevtools::submit_cran() — CRAN allows resubmissioncran-comments.md, note what was fixed since the previous submissionInvoke /joss-audit (the joss-audit skill) to evaluate JOSS readiness.
Key prerequisites that are often missing:
CONTRIBUTING.md or section in READMEIf paper.md doesn't exist, proceed to Phase 4.
Invoke /joss-draft (the joss-draft skill) to draft paper.md and paper.bib.
After drafting:
papermill:reviewer agent for critical reviewWalk the user through JOSS submission:
Pre-submission checklist:
paper.md and paper.bib committed to repository/joss-audit)Submit:
During review (2-6 weeks):
/joss-audit after changesPost-acceptance:
v1.0.0)Evaluate whether a JSS (Journal of Statistical Software) paper is warranted:
JSS is appropriate when:
JSS is NOT appropriate when:
If JSS is appropriate, note that:
rticles::jss_article RMarkdown formatpapermill:writer agent can help draft a full JSS paper (long-form academic writing)| Criterion | Minimum for CRAN | Minimum for JOSS |
|---|---|---|
| License | OSI-approved | OSI-approved |
| Tests | Pass R CMD check | Automated test suite |
| Docs | Man pages for exports | README + examples + API docs |
| History | Any | 6+ months public |
| Users | Not required | Evidence of use encouraged |
| Paper | Not required | 750-1750 word paper.md |
| Stage | Duration |
|---|---|
| CRAN prep + audit | 1-3 days |
| CRAN review | 1-7 days (usually 1-2) |
| JOSS prep + paper | 1-2 days |
| JOSS review | 2-8 weeks |
| JSS prep + paper | 2-4 weeks |
| JSS review | 6-18 months |
${CLAUDE_PLUGIN_ROOT}/docs/cran-reference.md — CRAN Repository Policy, submission workflow, common rejections${CLAUDE_PLUGIN_ROOT}/docs/joss-reference.md — JOSS requirements, reviewer checklist, paper format${CLAUDE_PLUGIN_ROOT}/docs/joss-exemplars.md — Real JOSS R package papers with analysis