kwb.pkgbuild ships a
curated set of GitHub
Actions workflows that we use across all KWB-R packages. The
workflows live as templates in
inst/templates/ci_github-actions/ (default workflows) and
inst/templates/ci_github-actions-claude/ (optional Claude
Code integration), and are installed into a package’s
.github/workflows/ directory by
use_ghactions() / use_pkg().
This vignette explains what the workflows do, how to add or update them, and how to enable the optional Claude Code integration.
kwb.pkgbuild::use_ghactions() (also called from
kwb.pkgbuild::use_pkg()) copies four workflows into
.github/workflows/:
| File | Purpose |
|---|---|
R-CMD-check.yaml |
Cross-platform R CMD check matrix (macOS,
Ubuntu, Windows × release, devel,
oldrel-1). |
pkgdown.yaml |
Builds the pkgdown site and deploys it to
the gh-pages branch on push to
main/master/dev. |
test-coverage.yaml |
Runs covr::package_coverage() and uploads
the report to codecov.io. |
pr-commands.yaml |
Reacts to /document and
/style comments on pull requests by running
roxygen2 / styler for you. |
All four use the official r-lib/actions
v2 building blocks, which means dependency installation and caching are
handled by r-lib/actions/setup-r-dependencies@v2.
To install or refresh the default workflows in a package, run:
If you want Claude Code to
review your pull requests and answer @claude mentions in
issues / PR comments, set claude = TRUE when bootstrapping
a new package:
kwb.pkgbuild::use_pkg(
author = author,
pkg = description,
version = "0.0.0.9000",
stage = "experimental",
claude = TRUE
)Or add the workflows to an existing package after the fact:
This installs two additional workflow files:
| File | Trigger |
|---|---|
claude.yaml |
issue_comment,
pull_request_review_comment,
pull_request_review, issues — reacts to
@claude mentions. |
claude-code-review.yaml |
pull_request (opened,
synchronize) — automatic PR review. |
Both workflows authenticate via a GitHub Actions secret named
CLAUDE_CODE_OAUTH_TOKEN. To create it:
CLAUDE_CODE_OAUTH_TOKEN
and paste your Claude Code OAuth token as Value.Without this secret the Claude jobs will fail at the
anthropics/claude-code-action@v1 step.
claude.yaml runs whenever someone mentions
@claude in an issue body / title, an issue comment, a PR
review or a PR review comment. Claude then opens a session with read
access to issues / pull requests, plans, and posts a reply.
claude-code-review.yaml runs on every newly opened or
updated pull request. It reviews the diff with focus on:
roxygen2 documentation completeness,If your repository contains a CLAUDE.md file, Claude
will use it as project-specific guidance.
The workflows in inst/templates/ci_github-actions/ are
the source of truth for KWB-R packages. When upstream actions are
updated (e.g. a new version of r-lib/actions) we bump the
templates here in kwb.pkgbuild and re-run
kwb.pkgbuild::use_ghactions() in each package to refresh
the local workflows.
To check whether a package is using an outdated version, simply diff
its .github/workflows/ against the templates in the latest
installed kwb.pkgbuild:
The pkgdown workflow doesn’t deploy. Make sure
the gh-pages branch exists and that Settings →
Pages → Source points to it. The first time a package is set
up, run kwb.pkgbuild::use_autopkgdown() to create the
orphan branch.
R CMD check fails on
oldrel-1. Either pin a
Depends: R (>= ...) in DESCRIPTION to the
lowest R version you actually want to support, or remove
oldrel-1 from the matrix in
R-CMD-check.yaml.
Claude jobs are skipped. The if:
clause requires @claude to appear in the comment / review /
issue body. The Claude review workflow only runs on
pull_request, not on issue_comment
events.
Codecov upload fails on forks. Configure the
CODECOV_TOKEN repository secret. The workflow has
fail_ci_if_error set conditionally so PRs from forks won’t
break the build.