Source profileQuality 88/100

paperclipai/paperclip/packages/skills-catalog/catalog/optional/content/release-announcement/SKILL.md

release-announcement

Write a release announcement — changelog, blog post, in-app note, or social post — that leads with user impact, names the audience, and includes upgrade/migration steps without filler.

Source repository stars
74,938
Declared platforms
0
Static risk flags
0
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

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 the…

Best for

  • 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.

Not for

  • 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.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/paperclipai/paperclip --skill "packages/skills-catalog/catalog/optional/content/release-announcement"
Safe inspection promptEditorial

Inspect the Agent Skill "release-announcement" from https://github.com/paperclipai/paperclip/blob/77979950381a99271e4690c581a7440b73807b11/packages/skills-catalog/catalog/optional/content/release-announcement/SKILL.md at commit 77979950381a99271e4690c581a7440b73807b11. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    When to use

    A version, feature, or fix is shipping and needs writeup for at least one surface.

    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.
  2. 02

    When not to use

    An internal-only change with no user impact. Update internal docs; do not announce.

    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.- 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.
  3. 03

    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.

    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 PAPERCLIPRUNID is set. If the API returns 403 Cases are disabled, report that limitation and continue with the req…Upsert the parent release case first when it does not already exist:
  4. 04

    Determine the audience and channel first

    Pick the audience for this writeup. One release often needs several writeups; do not blend them.

    Pick the audience for this writeup. One release often needs several writeups; do not blend them.
  5. 05

    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.

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score88/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars74,938SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
paperclipai/paperclip
Skill path
packages/skills-catalog/catalog/optional/content/release-announcement/SKILL.md
Commit
77979950381a99271e4690c581a7440b73807b11
License
MIT
Collected
2026-07-28
Default branch
master
View the original SKILL.md

Release 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

AudienceBest channelTone
Existing power usersChangelog, in-app noteTerse, factual, links
Engineering teams adopting your APIRelease notes, dev blogExamples, migration steps, version pins
Prospective customersLanding page, marketing blogStory arc, problem → solution, social proof
Broad audienceSocial post, email newsletterOne-sentence pitch, link to depth
Internal teamSlack/Discord postWhat 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:

  1. What changed. One sentence in the user's vocabulary.
  2. Who it affects. Which user role / use case.
  3. 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 CSV beats We've added CSV export.
  • Numbers beat adjectives. 60% faster cold start beats much 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.

Alternatives

Compare before choosing