open-source/create-release-checklist/SKILL.md
Create a release checklist and GitHub issue for an R package. Use when the user asks to "create a release checklist" or "start a release" for an R package.
npx skillsauth add posit-dev/skills create-release-checklistInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate a release checklist for an R package and create the corresponding GitHub issue.
This skill guides you through creating a R package release checklist issue on GitHub by:
DESCRIPTION file at the
root.usethis R package must be available.And to enable automatic issue creation:
gh CLI must be installed and authenticated.First, check that the prerequisites are available (in this order for efficiency):
DESCRIPTION. If
not, inform the user that this must be run from an R package root directory
and stop.Rscript -e 'utils::packageVersion("usethis")' to check if the usethis
package is installed. If not, instruct the user to install it with
install.packages("usethis"), then stop.gh repo view --json url. If that fails, diagnose the error:
gh is not installed, try running git remote -v to find a GitHub URL.usethis::use_github(). Offer to run this
command for the user; if they decline, continue without a GitHub URL.gh is installed but not authenticated and the repo has a GitHub
remote, suggest that the user run gh auth login.If any check fails, inform the user of the specific issue with clear instructions on how to fix it, then stop the workflow. Do not proceed to the next step until all prerequisites are met.
Next, you need to determine the current package's name and version. Read the
DESCRIPTION file and extract the Version: and Package: fields from it.
Then, check if a NEWS.md file exists. If it does, read the first section
(typically the most recent unreleased changes) to understand what kind of
changes have been made. Use this to suggest an appropriate release type:
Display the current version to the user and ask them what type of release this should be using the AskUserQuestion tool. Make the suggested release type the first option with "(Recommended)" appended to the label:
Question: "What type of release is this?" Header: "Release type" Options (with recommended option first):
Calculate the new version by manipulating the current version according to the user's answer. For example:
1.2.3 + Major release → 2.0.01.2.3 + Minor release → 1.3.01.2.3 + Patch release → 1.2.40.2.1.9000 + Patch release → 0.2.20.2.1.9003 + Minor release → 0.3.0Note: If the current version ends in .9xxx (R-style development versions),
strip that suffix before calculating the new version.
Display: "Preparing release checklist for ${PACKAGE_NAME} ${CURRENT_VERSION} → ${NEW_VERSION}".
Generate an initial checklist using the scripts/generate_checklist.R script
included with this skill:
# If the GitHub URL is known:
Rscript "${SKILL_DIR}/scripts/generate_checklist.R" "${NEW_VERSION}" "${GITHUB_URL}"
# Otherwise:
Rscript "${SKILL_DIR}/scripts/generate_checklist.R" "${NEW_VERSION}"
(Where ${SKILL_DIR} represents the directory where this skill is installed.)
Ignore any "Setting active project..." lines in the output.
Read the generated checklist (which is Markdown) and display it to the user.
Use the AskUserQuestion tool to ask:
Question: "Would you like to customize the checklist before creating the issue?" Header: "Customize?" Options:
If the user wants to customize the checklist, enter an iterative refinement loop:
- [ ] for tasks).The checklist should be maintained as a Markdown string throughout this process so it can be easily passed to the GitHub issue creation command.
The final checklist should be formatted as Markdown with proper sections and checkboxes.
If gh is available and authenticated, use it to create the GitHub issue
yourself, passing the checklist content directly via stdin:
gh issue create \
--title "Release ${PACKAGE_NAME} ${NEW_VERSION}" \
--body-file - <<'EOF'
[checklist content here]
EOF
Then show the user:
If gh is not available, display the checklist to the user with
instructions to manually create a GitHub issue:
If the GitHub issue creation fails (when using gh), check for common issues:
gh auth status shows the user is logged in.
Suggest running gh auth login if needed.gh repo view to verify they have the correct permissions.If the issue creation fails, preserve the checklist content and offer to:
tools
Build modern Shiny dashboards and applications using bslib (Bootstrap 5). Use when creating new Shiny apps, modernizing legacy apps (fluidPage, fluidRow/column, tabsetPanel, wellPanel, shinythemes), or working with bslib page layouts, grid systems, cards, value boxes, navigation, sidebars, filling layouts, theming, accordions, tooltips, popovers, toasts, or bslib inputs. Assumes familiarity with basic Shiny.
development
Review test code for quality, design, and completeness after implementing a feature or fixing a bug. Use when the user asks to "review my tests", "check my test quality", "are these tests good enough", "review testing", or after completing a feature implementation that includes tests. Also use when tests feel brittle, flaky, or superficial. Cross-references production code to find coverage gaps.
tools
Guide for drafting issue closure and decline responses as an open-source package maintainer. Use when helping compose a reply that says "no" to a feature request, closes an issue as won't-fix, redirects a user to a different package, explains why a design choice is intentional, or otherwise declines or closes a community contribution. Also use when the maintainer needs to explain a deprecation, point out a user misunderstanding, or communicate an effort/scope tradeoff to a contributor.
tools
R package development with devtools, testthat, and roxygen2. Use when the user is working on an R package, running tests, writing documentation, or building package infrastructure.