
Release Announcement
FreeCraft precise release communications quickly.
Free · Opens the source repo
What Release Announcement does
The Release Announcement skill is designed to streamline the process of writing communications for software releases. It helps users create tailored announcements for various channels, ensuring that the message is clear and concise, while focusing on user impact. By guiding users through the creation of changelogs, blog posts, in-app notifications, and social media posts, this skill allows developers and product managers to effectively communicate changes to their audience without unnecessary filler.
This skill emphasizes the importance of leading with what has changed, identifying who it affects, and outlining what actions users need to take. It provides a structured approach to writing, which is especially useful when multiple announcements are required for different audiences. The skill also includes templates for each communication type, making it easier to adapt the message to the appropriate format and tone.
Ideal for software developers, product managers, and technical writers, the Release Announcement skill ensures that all necessary information is included without overwhelming the reader. It is particularly beneficial when a new version, feature, or fix is being released, or when a previously private feature is going public. By using this skill, teams can enhance their communication strategies and keep their users informed effectively.
When to use it
Use this skill when you have a new version, feature, or fix that needs to be communicated to users across different channels.
When not to use it
Avoid using this skill for internal-only changes or when the release is still in active development and not ready for public announcement.
What you can build with it
Announcing a New Feature
When launching a new feature, use this skill to create a blog post that explains the feature's benefits and how users can start using it.
Communicating a Breaking Change
If a breaking change is introduced, utilize this skill to draft a changelog entry that clearly outlines the change and includes migration steps.
Preparing a Social Media Post
For a quick update on a release, generate a concise social media post that highlights the key changes and links to more detailed release notes.
How to install Release Announcement
View source1. Install with the skills CLI
npx skills add paperclipai/paperclip/release-announcement --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by paperclipaiRelease Announcement
Write the channel-appropriate announcement for a release without churn. Different surfaces need different shapes: a changelog entry is not a blog post is not a social card. The bar is: a reader of the chosen surface can decide in under 30 seconds whether this release affects them, and if so what to do.
When to use
- A version, feature, or fix is shipping and needs writeup for at least one surface.
- A previously private feature is going GA.
- A breaking change needs broadcast before users hit it.
When not to use
- An internal-only change with no user impact. Update internal docs; do not announce.
- The release is incomplete (still in active development). Wait until it ships, even if marketing wants the post.
Paperclip Cases output
When this skill runs inside Paperclip and experimental.enableCases is enabled,
emit durable release-content cases before handing off the copy. Cases preserve
the inspectable output; the issue coordinates the work.
Use skills/paperclip/references/cases.md for the API contract. Include
X-Paperclip-Run-Id on writes when PAPERCLIP_RUN_ID is set. If the API returns
403 Cases are disabled, report that limitation and continue with the requested
copy artifact.
Upsert the parent release case first when it does not already exist:
{
"caseType": "release",
"key": "paperclip-release:vYYYY.MDD.P",
"title": "Paperclip vYYYY.MDD.P release",
"status": "in_progress",
"fields": {
"schema_version": 1,
"version": "vYYYY.MDD.P",
"release_date": "YYYY-MM-DD",
"release_patch": 0,
"stable": true,
"channels": ["blog_post", "tweet_storm"],
"artifacts": {
"changelog_path": "releases/vYYYY.MDD.P.md",
"publish_url": null
}
}
}
For a dev blog, upsert a child case with parentCaseId set to the release case:
{
"caseType": "blog_post",
"key": "paperclip-release:vYYYY.MDD.P:blog-post",
"title": "Paperclip vYYYY.MDD.P launch post",
"status": "in_review",
"parentCaseId": "<release-case-id>",
"fields": {
"schema_version": 1,
"version": "vYYYY.MDD.P",
"slug": "paperclip-vYYYY-MDD-P",
"word_count_target": 650,
"target_audience": ["operators", "developers"],
"requires_screenshot": false,
"links": {
"release_notes": "releases/vYYYY.MDD.P.md",
"publish_url": null
},
"sections": ["hook", "whats_new", "upgrade", "whats_next"]
}
}
For social output, upsert a sibling child case:
{
"caseType": "tweet_storm",
"key": "paperclip-release:vYYYY.MDD.P:tweet-storm",
"title": "Paperclip vYYYY.MDD.P tweet storm",
"status": "in_review",
"parentCaseId": "<release-case-id>",
"fields": {
"schema_version": 1,
"version": "vYYYY.MDD.P",
"post_count": 1,
"channel": "x",
"target_audience": ["operators", "contributors"],
"links": {
"release_notes": "releases/vYYYY.MDD.P.md",
"publish_url": null
},
"review": {
"needs_human_copy_paste": true,
"approved_by": null
}
}
}
Write the produced copy to PUT /api/cases/:caseId/documents/body with
format: "markdown" and a changeSummary. Fetch the latest document revision
and pass baseRevisionId when updating an existing body document.
Determine the audience and channel first
| Audience | Best channel | Tone |
|---|---|---|
| Existing power users | Changelog, in-app note | Terse, factual, links |
| Engineering teams adopting your API | Release notes, dev blog | Examples, migration steps, version pins |
| Prospective customers | Landing page, marketing blog | Story arc, problem → solution, social proof |
| Broad audience | Social post, email newsletter | One-sentence pitch, link to depth |
| Internal team | Slack/Discord post | What changed, who to ping if it breaks |
Pick the audience for this writeup. One release often needs several writeups; do not blend them.
Universal structure
Whatever the channel, lead with:
- What changed. One sentence in the user's vocabulary.
- Who it affects. Which user role / use case.
- What to do. Migrate now / opt-in / no action needed.
Everything else is depth that supports those three.
Channel templates
Changelog entry (terse)
## v1.42.0 — 2026-05-26
### Added
- <feature> — <one-line user benefit>. ([#1234](link))
### Changed
- <change> — <one-line impact>. ([#1235](link))
### Fixed
- <bug> — <one-line user-visible symptom>. ([#1236](link))
### Deprecated
- <thing>. Replaced by <thing>. Removal planned for v<x>.
### Breaking
- <change>. **Migration:** <one-line> or <link to guide>.
Release notes (for adopters)
Same as changelog, plus:
- Migration guide section with before/after code.
- Compatibility table (versions, runtimes, OS).
- Known issues and workarounds.
- Acknowledgements (contributors, reporters of fixed bugs).
Dev blog post (300–800 words)
- Hook (1 paragraph): the problem the release solves, in a real-world scenario.
- What's new (3–5 bullets with sub-paragraphs): features, with one code or screenshot example each.
- Upgrade (1 paragraph): how to upgrade, what to check.
- What's next: one sentence about the next direction. Avoid promises.
In-app note
- 1 sentence.
- 1 link.
- Dismiss after seen.
Social post
- 1 sentence pitch.
- 1 link.
- 1 image or short clip.
- No threadbait. If it needs a thread, write a blog post instead.
Writing rules
- Lead with the user, not the team.
You can now export to CSVbeatsWe've added CSV export. - Numbers beat adjectives.
60% faster cold startbeatsmuch faster. Cite the methodology. - Show, don't just tell. One code snippet, one screenshot — more is noise.
- Date the post. Undated release content rots fastest.
- Link the migration path explicitly. Do not bury it.
- Mark breaking changes with
**Breaking:**prefix. Repeat in the email/social channel.
Avoid
- "We are excited to announce" filler.
- Lists of changes that mix user-visible and internal items.
- Marketing claims without a way to verify.
- Promised dates for unshipped work.
- Pre-announcing something the team has not yet committed to ship.
Post-publish checklist
- Changelog is in source control alongside the release.
- Blog post date matches actual ship date.
- All links work (release tag, PRs, docs sections).
- Breaking changes are also in the upgrade guide, not only the post.
- Internal team is notified before the public post goes live, not after.
Frequently asked questions about Release Announcement
Similar skills
LinkedIn Post Formatter
Create engaging LinkedIn posts with Unicode styling.
Brand Voice Enforcement
Ensure all content aligns with your brand's voice.
Answer Engine Optimization
Optimize your content for AI citation.
Copywriting
Craft clear, compelling marketing copy that drives action.
Ad Creative
Generate and iterate ad copy for performance marketing.
X/Twitter运营导师
Optimize your Twitter strategy with expert guidance.
