Publish the current R Weekly draft as a new weekly post. Use when an editor invokes /release or asks to "release", "publish", or "create the weekly post" from draft.md. Validates the draft before creating the file in _posts/.
Scanned 9/20/2026
Install to Claude Code
npx -y skills add rweekly/rweekly.org --skill release --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Release?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/rweekly-release)More formats (shields.io, HTML) on the badges page.
---
name: release
description: Publish the current R Weekly draft as a new weekly post. Use when an editor invokes /release or asks to "release", "publish", or "create the weekly post" from draft.md. Validates the draft before creating the file in _posts/.
disable-model-invocation: true
allowed-tools: Read, Write, Bash
---
# R Weekly Release
Publish `draft.md` as a new weekly issue in `_posts/`. Run pre-flight checks first — stop if any fail.
## Pre-flight Checks
Read `draft.md` and verify all three conditions. Report every failure found before stopping.
### Check 1: Non-empty Highlight section
The `### Highlight` section must contain at least one content line (a line starting with `+`, `*`, or `-`). If it is empty, report: "FAIL: ### Highlight section is empty. Editors must add content before releasing."
### Check 2: No empty sections
Every `### SECTION` block must have at least one non-blank line of content before the next `###` or end of file. A line is "content" if it is not blank and does not start with `###`.
List every empty section found. Report: "FAIL: The following sections are empty: [list]. Remove them or add content before releasing."
> Note: sections with only boilerplate HTML (like the CRANberries link in New Packages or the podcast link in Videos and Podcasts) count as non-empty — they have content lines.
### Check 3: At least 3 images
Count lines containing either a Markdown image `` or an HTML `<img` tag in the draft body (not the front matter). If fewer than 3, report: "FAIL: Only N image(s) found. At least 3 are required."
If **any check fails**, stop and show all failures. Do not create the post file.
### Check 4: Duplicate links (advisory — editor decides)
Run the duplicate checker:
```bash
Rscript -e 'source("scripts/find_duplicates.R"); get_dups()'
```
This compares draft.md links against the last ~20 published posts. **Do not hard-fail on duplicates** — present the results to the editor for a judgment call. Some duplicates are intentional and fine to keep:
- Recurring events, conferences, and meetup listings
- Standing resources (workshops, community links)
- Anything the editor explicitly wants to repeat
Report any duplicates found as a warning:
```
⚠ Possible duplicates found (review before releasing):
- [Title](URL) — also in 2026-W23
- [Title](URL) — also in 2026-W21
These may be intentional. Remove or keep as appropriate.
```
If no duplicates are found, say so and continue. Either way, **wait for the editor to confirm before proceeding to release.**
---
## Creating the Release
If all checks pass and the editor has confirmed, proceed:
### Step 1: Compute date and week
Run in Bash:
```bash
echo "DATE=$(date +%Y-%m-%d)" && echo "YEARWEEK=$(date +%G-W%V)"
```
This gives you e.g. `DATE=2026-03-09` and `YEARWEEK=2026-W11`.
### Step 2: Summarize the Highlight section
Read the items listed under `### Highlight`. Write a short, natural-language summary of the highlights — typically 2–3 comma-separated phrases drawn from the article titles. Use title case. Capture the actual topic, not just the tool name.
Look at recent post titles for the style:
- `R Version Update, Refactoring, Your Tests Lie to You`
- `Building a computer, Toolbars, Memory model`
- `15 Years of rOpenSci, Durations of wars, and R-squared`
- `S at 50, targets vs dbt`
Keep each phrase short (1–4 words). Avoid padding words like "and", "the", "a" unless they're part of the title. Do not use all-lowercase bare words.
### Step 3: Build the filename
```
_posts/DATE-YEARWEEK.md
```
Example: `_posts/2026-03-09-2026-W11.md`
### Step 4: Compose the post
The post consists of:
1. A new front matter block (do NOT copy the draft's front matter):
```
---
title: R Weekly YEARWEEK WORD1 WORD2 WORD3
description: Weekly News in the R Community
image: https://rweekly.org/public/facebook.png
---
```
2. The body of `draft.md` — everything after the closing `---` of its front matter, exactly as-is.
### Step 5: Write the file
Use the Write tool to create `_posts/DATE-YEARWEEK.md` with the composed content.
### Step 6: Reset the draft
Read `for-editor-only-draft.txt` and overwrite `draft.md` with its contents, but update the title with the next week number. For example, if you just released `2026-W15`, change the title from `R Weekly 2026-W00` to `R Weekly 2026-W16` before writing.
### Step 7: Confirm
Tell the editor:
- The filename created
- The title used
- A one-line summary of what the Highlight section contains
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!