Last updated: 2026-02-06
Minimal R documentation generator - base R only, no magic.
What it does
tinyrox is a lightweight alternative to roxygen2 that generates valid .Rd files and NAMESPACE from #' comments using only base R.
Installation
remotes::install_github("cornball-ai/tinyrox")
Usage
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()
Supported Tags
Documentation
| 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 |
Namespace
| Tag | Effect |
|---|---|
@export | export() |
@exportS3Method generic class | S3method() |
@import pkg | import() |
@importFrom pkg sym1 sym2 | importFrom() |
@useDynLib pkg | useDynLib() |
Example
#' 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
}
CRAN Compliance Checking
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
Philosophy
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
Development Workflow
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")'
License
GPL-3
Reference
See Function Reference for complete API documentation.
Functions
tinyrox Reference
Function reference for tinyrox