Install
$ agentstack add skill-posit-dev-skills-release-post ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Package Release Post
Create professional R/Python package release blog posts following Tidyverse or Shiny blog conventions.
Quick Start
- Identify the blog platform: Tidyverse (tidyverse.org) or Shiny (shiny.posit.co)
- Verify NEWS.md or changelog exists for the package
- Gather package info: name, version, repository (e.g., "tidyverse/dplyr")
- Follow the workflow below
- Use
scripts/get_contributors.Rto generate acknowledgments - Reference the appropriate formatting guide for final polish
Platform Selection
This skill supports two blog platforms with different formatting requirements:
- Tidyverse blog (tidyverse.org)
- Uses hugodown
- R packages primarily
- More rigid structure and conventions
- See
references/tidyverse-formatting.md
- Shiny blog (shiny.posit.co)
- Uses Quarto
- R and Python packages
- More flexible, feature-focused structure
- See
references/shiny-formatting.md
First, determine which platform the post is for, then follow the general workflow and apply platform-specific formatting.
General Workflow
These steps apply to both platforms. Content guidelines are based on Tidyverse best practices but adapt them as needed for Shiny posts.
Step 1: Gather Information
Collect required information:
- Platform: Tidyverse or Shiny blog?
- Package name and version: e.g., "dplyr 1.2.0" or "shiny 1.9.0"
- Repository: GitHub repo in "owner/repo" format
- Package language: R or Python
- NEWS content: Read the package's NEWS.md, CHANGELOG, or NEWS
- Package description: One-sentence core purpose
- Previous release tag: For contributor fetching (optional)
- Featured image: For frontmatter (optional but recommended)
Step 2: Structure the Post
Create the post outline following this order:
- Frontmatter: Platform-specific YAML (see formatting references)
- Title and Opening:
- Title: Package name and version
- Opening: Announcement with one-sentence package description
- Installation: Code block with installation command
- Overview: Brief summary with link to full release notes
- Main Content (choose appropriate sections):
- Migration guide (if breaking changes) - Always first when present
- Lifecycle changes (deprecations, soft-deprecations, defunct)
- Feature sections (one per major feature, descriptive headings)
- Minor improvements (bulleted list)
- Acknowledgements (when appropriate):
- Use
scripts/get_contributors.R - Format: "A big thank you to all the folks who helped make this release happen:"
- Comma-separated GitHub links
Step 3: Apply Content Guidelines
Follow the best practices in references/content-guidelines.md:
- Opening style: "We're [random adjective expressing excitement] to announce the release of..."
- Section organization: Migration → Lifecycle → Features → Improvements → Acknowledgements
- Tone: Conversational, professional, enthusiastic but authentic
- Technical precision: Use exact function names in backticks
- Focus on benefits: Explain "why" not just "what"
- Code examples: Realistic, well-commented, properly formatted
Step 4: Transform NEWS Content
Convert NEWS.md bullets to blog-friendly content:
- Research features thoroughly: Don't just copy NEWS bullets—read function docs, check PRs, understand the context
- Expand context: Why changes matter, not just what changed
- Add complete code examples: Show realistic usage with full workflows, not just function signatures
- Explain concepts first: For unfamiliar features, explain what they are and how they work before showing code
- Group thematically: Combine related NEWS items into coherent sections
- Use conversational tone: Transform terse bullets into prose
- Link documentation: Add relevant links to docs and resources
- Highlight breaking changes: Make migration paths clear
- Multi-language parity (Shiny only): For R+Python packages on the Shiny blog, ensure all examples show both languages in tabsets
Step 5: Apply Platform-Specific Formatting
For Tidyverse posts, read references/tidyverse-formatting.md and apply:
- hugodown frontmatter with
slug,photo.url,photo.author - Specific slug format:
packagename-x-y-z(hyphens replace dots) - R code blocks with
rlanguage identifier - Acknowledgements always included as final section
For Shiny posts, read references/shiny-formatting.md and apply:
- Quarto frontmatter with YAML anchors for social media
- Flexible title formatting
- Use tabsets for Python/R or Express/Core variations
- Platform-specific code block attributes
- Acknowledgements optional, varies by post type
- May use lead paragraphs, callouts, embedded media
Step 6: Generate Acknowledgements
Run the contributor script:
Rscript scripts/get_contributors.R "owner/repo"
Or with a specific starting tag for the previous version (or tag used for last release post):
Rscript scripts/get_contributors.R "owner/repo" "v1.0.0"
Copy the markdown output into the Acknowledgements section.
Step 7: Review and Polish
Platform-agnostic checklist:
- [ ] Frontmatter complete with all required fields
- [ ] Opening clearly states package purpose
- [ ] Installation code block present (both languages if applicable)
- [ ] Sections organized logically
- [ ] Code examples use proper syntax highlighting
- [ ] Function names in backticks with parentheses: `
function()` - [ ] Package names are not backticked or otherwise styled
- [ ] Tone is conversational but not marketing-speak
- [ ] No superlatives ("powerful", "rich", "seamless", etc.)
- [ ] Features explained with context, not just listed
- [ ] Concepts explained before showing code
- [ ] All examples show R and Python variants (if applicable)
- [ ] Links to full release notes included
Platform-specific checklist:
Tidyverse:
- [ ] Slug format:
package-x-y-z(hyphens, not dots) - [ ] Photo URL and author included
- [ ] Acknowledgements section is final section
- [ ] All contributors listed alphabetically
Shiny:
- [ ] YAML anchors used for description (
&desc,*desc) - [ ] Social media cards configured (
open-graph,twitter-card) - [ ] Appropriate filters specified if using tabsets/shinylive
- [ ] Tabsets used for showing paired variants (Python/R, Express/Core)
- [ ] Multi-language tabsets used consistently (for R+Python packages only)
Reference Documentation
Load these as needed for detailed guidance:
Content Guidelines
references/content-guidelines.md - General best practices for all release posts:
- Post structure and organization
- Opening style and tone
- Section hierarchy and organization
- Code examples and formatting
- Before/after patterns
- Acknowledgments conventions
Platform-Specific Formatting
references/tidyverse-formatting.md - Tidyverse blog requirements:
- hugodown frontmatter structure
- Slug and title conventions
- Photo attribution
- Code block formatting
- Lifecycle section structure
- Acknowledgements format
references/shiny-formatting.md - Shiny blog requirements:
- Quarto frontmatter with YAML anchors
- Social media card configuration
- Lead paragraphs and callouts
- Tabsets for variants
- Line highlighting and annotations
- Video embedding
- Flexible acknowledgements
Resources
scripts/get_contributors.R: Fetch formatted contributor list usingusethis::use_tidy_thanks()references/content-guidelines.md: General content best practices (platform-agnostic)references/tidyverse-formatting.md: Tidyverse-specific formatting requirementsreferences/shiny-formatting.md: Shiny-specific formatting requirements
Platform-Specific Quick Reference
Tidyverse Post Template
````markdown --- output: hugodown::hugo_document slug: package-x-y-z title: package x.y.z date: YYYY-MM-DD author: Your Name description: > Brief description photo: url: https://unsplash.com/photos/id author: Photographer Name categories: [package] tags: [package] ---
package x.y.z
We're pleased to announce the release of package x.y.z...
install.packages("package")
...
Acknowledgements
A big thank you to all the folks who helped make this release happen:
[Contributors from get_contributors.R]
````
Shiny Post Template
````markdown --- title: Package Name x.y.z description: &desc | Brief description of the release. author: "Your Name" date: "YYYY-MM-DD"
image: feature.png
open-graph: image: feature.png description: desc twitter-card: image: feature.png description: desc ---
package x.y.z
We're excited to announce package x.y.z...
[Installation for Python or R]
...
````
Tips
- Breaking changes first: Put migration guides before features
- Highlight the wins: Lead with the most exciting features
- Show don't tell: Use code examples liberally
- Link generously: Help readers find more information
- Keep it conversational: Write like you're explaining to a colleague
- Be authentic: Enthusiasm should feel genuine, not marketing-speak
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: posit-dev
- Source: posit-dev/skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.