Minimal R documentation generator - base R only, no magic.
tinyrox is a lightweight alternative to roxygen2 that generates valid .Rd files and NAMESPACE from #' comments using only base R.
remotes::install_github("cornball-ai/tinyrox")library(tinyrox)
# Generate man/*.Rd and NAMESPACE from R/*.R
document()
# Clean generated files (man/, NAMESPACE)
clean()
# Check for common CRAN policy issues
check_cran()| Tag | Purpose |
|---|---|
@title |
One-line title |
@description |
Short description |
@details |
Longer description |
@param name |
Parameter documentation |
@return |
Return value |
@value |
Alias for @return |
@examples |
Code examples (verbatim) |
@example path |
Include example from file |
@seealso |
Cross-references |
@references |
Citations |
@section Title: |
Custom section |
@author |
Author information |
@family name |
Related functions |
@aliases |
Additional topic aliases |
@keywords |
Rd keywords (e.g., internal) |
@name |
Explicit topic name |
@inheritParams fn |
Copy params from another function |
@noRd |
Skip Rd generation |
| Tag | Effect |
|---|---|
@export |
export() |
@exportS3Method generic class |
S3method() |
@import pkg |
import() |
@importFrom pkg sym1 sym2 |
importFrom() |
@useDynLib pkg |
useDynLib() |
#' Add Two Numbers
#'
#' @param x First number
#' @param y Second number
#' @return The sum
#' @export
#'
#' @examples
#' add(1, 2)
add <- function(x, y) {
x + y
}tinyrox includes automated CRAN compliance checks:
# Check DESCRIPTION for common issues
check_description_cran()
# Warns about: unquoted package names, missing web service links
# Check R code for CRAN policy violations
check_code_cran()
# Warns about: T/F, print()/cat(), .GlobalEnv, installed.packages(), etc.
# Run all checks
check_cran()
# Auto-fix DESCRIPTION quoting issues
fix_description_cran()Issues detected:
- Unquoted package/software names in Title/Description
- Missing web service links for packages like hfhub, gh
T/Finstead ofTRUE/FALSEprint()/cat()instead ofmessage()installed.packages()usage.GlobalEnvmodificationssetwd()withouton.exit()restoration- Hardcoded
set.seed()without parameter
tinyrox follows the tinyverse philosophy:
Dependencies have real costs. Each dependency is an invitation to break your project.
Design principles:
- Minimize dependencies (tinyrox has none)
- Explicit over implicit - no inference magic
- Strict subset of tags - not everything roxygen2 does
- Deterministic output - same input = same output
- Fail fast on unknown tags
What tinyrox does NOT do:
- Markdown parsing
- Automatic dependency inference
@rdnamegrouping magic- pkgdown integration
tinyrox is part of the tinyverse toolchain for R package development:
| Package | Purpose |
|---|---|
| tinyrox | Documentation & NAMESPACE |
| tinypkgr | install, load_all, check, build |
| tinytest | Unit testing |
| fyi | Rd to markdown (LLM context, static sites) |
# Edit R/*.R files with #' comments
# Regenerate docs
tinyrox::document()
# Load for interactive development (no install)
tinypkgr::load_all()
# Install and reload in current session
tinypkgr::reload()
tinytest::test_package("mypkg")
# Full R CMD check
tinypkgr::check()Or from the command line with littler:
r -e 'tinyrox::document(); tinypkgr::install(); tinytest::test_package("mypkg")'GPL-3