release-post
Skill9 starsChanged 6 days agoMITView on GitHub
Produce the X announcement for an npm release of rift-ds — a bento release card rendered to a paste-ready PNG, plus post copy in the project's voice. Use when asked for a release post, a release image, or announcement copy for a version.
4 other projects use a version of this.
Adopted by
Most recently taken up by
- BrightGold70/skillstheir own version, first seen Nov 8, 2026
- flung-official/flung-claude-plugintheir own version, first seen Nov 8, 2026
- Kewton/CommandMatetheir own version, first seen Oct 30, 2026
- worldbank/geoPovLearntheir own version, first seen Jun 1, 2026
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- Kewton/CommandMate★ 44same name
- worldbank/geoPovLearn★ 2same name
- BrightGold70/skills★ 1same name
- flung-official/flung-claude-plugin★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository33 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- accessibility-auditSkill
- animation-jump-checkSkill
- api-consistencySkill
- chat-qualitySkill
- checkpointSkill
- component-consistency-auditSkill
- component-doc-pageSkill
- content-auditSkill
- dependency-advisorySkill
- design-qaSkill
- dogfoodSkill
- drift-auditSkill
- first-deploySkill
- landSkill
- link-rotSkill
- new-componentSkill
- new-pageSkill
- new-presetSkill
- new-templateSkill
- new-tokenSkill
- new-validatorSkill
- parkSkill
- pre-deploySkill
- releaseSkill
- responsive-sweepSkill
- security-auditSkill
- seo-auditSkill
- shipSkill
- super-shipSkill
- token-auditSkill
- token-renameSkill
- visual-reviewSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 5 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 15
Use this skill when asked for a release announcement, a release image or card, or post copy for a version — phrases like "image for an X …
- Distinctive: line 36
Read the token files before drawing — never write a colour or type value from memory:
- Distinctive: line 71
No emoji, no exclamation marks, no hashtag stuffing.
- Distinctive: line 81
Never restate release facts from memory — the tag, the commits, and the version's release-log entry are the sources, and they must agree …
- Distinctive: line 82
Never write a hex value or font size the token CSS didn't supply this session.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
release-post
Produce the X announcement for a release: a bento release card as a paste-ready PNG, plus post copy.
When invoked
Use this skill when asked for a release announcement, a release image or card, or post copy for a version — phrases like "image for an X post about the release", "announce the release", "release card".
Two principles govern everything below: facts come from the repo, never from memory (the tag, the commits, the token CSS), and the card is drawn in the system's own visual language — it should look like a screen from the site, not a generic promo graphic.
Instructions
1. Gather the release facts
Work from the tag, not recollection:
git log --oneline $(git describe --tags --abbrev=0 v<version>^)..v<version>
git show v<version> --no-patch --format='%s%n%b'(git describe on the version tag's parent resolves to the previous release's tag, so the range is exactly this release.) The repo's first tag (v1.0.0) has no earlier tag to anchor the range — take it from the full history instead (git log --oneline v1.0.0).
The tag message names the headline features; the commit list fills in the rest. The version's entry in the release log (website/src/data/release-log.json, written at publish time by the release skill) is the summary of record — the card and copy must agree with it. Pick the strongest feature as the hero and a handful of others as supporting tiles; a release with more features than tiles drops features rather than shrinking them.
2. Lift the real design values
Read the token files before drawing — never write a colour or type value from memory:
src/tokens/tokens-primitives.css— the hex values behind the semantic rolessrc/tokens/tokens-dark.css— which primitive each dark-theme role resolves to (the card is dark-theme; it reads best in a feed)src/tokens/tokens-typography.css— the display sizes, weights and letter-spacing
This repo has no earlier cards to match, and the site does not serve the base theme. Resolve every role through the served theme: SERVED_THEME_ID in website/src/lib/theme/brand.ts names it, and the root layout renders it as data-brand on <html>. Its generated stylesheet in src/tokens/presets/ overrides the base theme's tokens (composed by presetOverrides in website/src/lib/theme/presets.ts), so read the base token files and then that sheet, never the base files alone. The sheet has a light block and a dark block, and a tinted preset's neutral primitives differ between them, so read the block for the theme the card is drawn in.
The values to resolve: the page and container greys, the container border, the text ramp, the dark-theme action colour and its ink as the served theme resolves them, and — if a tile shows status colours — the dark-theme status icon hues. Radii follow the system's rules: pill for buttons and chips, the card radius for tiles, the composer radius if a tile draws the composer. design.md owns those; check it when unsure rather than guessing.
3. Draw the card
Author a plain HTML file in the scratchpad (never in the repo tree) at 1200×675 — X's landscape card ratio. The established layout (this repo has no earlier cards of its own to match; the layout below is the record):
- Header row: the package name as an uppercase overline in the action colour; the version large in the light display weight with its tracking; the release date beside it; an
npm ipill and the site's host (fromSITE_URLinscripts/brand.mjs) on the right. - Bento grid below: four columns by two rows. The hero feature takes a 2×2 tile with a title, one sentence, a few pill chips, and a small abstract drawing of the feature (panels, glyphs, a miniature control — drawn with divs and inline stroke SVG, never emoji or screenshots). Each remaining feature gets a 1×1 tile: bold title, a tiny visual or code chip, one caption sentence.
- A faint radial glow or two behind everything, in the ambient colours (
--color-ambient-*as the served theme resolves them) — the site's ambient background in still form. Subtle; the ground stays near-black.
The faces the served theme declares load from Google Fonts via a <link> in the head. All copy on the card follows content-design.md: sentence case, neutral, no emoji, no em dashes, one idea per line. Tile captions are one short sentence each.
4. Render to PNG
Render headlessly with the Playwright already in the repo's dependencies — no browser pane, no manual export. ESM ignores NODE_PATH on every platform, so import Playwright by an absolute file:// URL into its package inside the repo's node_modules (derive the repo root with git rev-parse --show-toplevel). On a Windows checkout only, also strip the leading slash a file:// pathname puts before the drive letter; on macOS or Linux that slash is the path's root and must stay.
The render script: chromium headless, viewport 1200×675 with deviceScaleFactor: 2, goto the card file with waitUntil: 'networkidle', then await page.evaluate(() => document.fonts.ready) plus a short settle before screenshotting the card element — without the fonts wait, the PNG ships in the fallback face. The result is 2400×1350: crisp at twice the post size.
Look at the PNG before handing it over. Read the image and judge it like a design-QA pass: nothing clipped, the hero drawing balanced in its tile (the first render of the first card left it sunk in a corner), captions unwrapped where they should be, glyph colours right. Fix and re-render until it holds up.
5. Write the copy
Post copy is shipped prose in spirit — content-design.md governs it. Additionally:
- Fit the standard character limit (280). Count it. Offer one primary version that fits, and optionally a longer alternate.
- Lead with the package and version, or with the hero feature — either works; hype never does.
- Name real things: components, exports, subpaths. "FilterMenu joins the shared overlay behavior layer" beats "big improvements to overlays" (FilterMenu is fictional — pull the real names and counts from the release's own diff and registries, never from this file).
- No emoji, no exclamation marks, no hashtag stuffing.
The copy and the card must tell the same story: the hero feature on the card is the hero feature in the copy.
6. Deliver
Send the PNG with SendUserFile so it lands as a file the owner can copy straight into the post, and put the copy in the reply as a quoted block. If the owner wants to hand-tweak the card, the design canvas flow (publish the card as an editable artifact) is the follow-up to offer — not the default, since the ask is a paste-ready image.
Guardrails
- Never restate release facts from memory — the tag, the commits, and the version's release-log entry are the sources, and they must agree with what the card claims
- Never write a hex value or font size the token CSS didn't supply this session; the card is a picture of the system, so a drifted colour is a wrong picture
- Working files live in the scratchpad, never the repo tree; nothing this skill produces is committed
- The card carries no screenshots and no third-party marks — abstract drawings only
- Posting is the owner's move: this skill ends at a PNG and copy, never at anything published
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

