Guides

Release requirements

The changelog, hero screenshot and tags every release needs, and how they're checked.

Coding agents: read this page as markdown.

Every release on releaseszn needs a tagged GitHub release, a real changelog and a hero screenshot that passes a quality check. The checks run when you publish, and you can run them earlier with POST …/check.

Tagged GitHub release #

Releases are imported from your repository’s GitHub releases. You can’t create a release on releaseszn that doesn’t exist on GitHub, so nobody can publish a version you didn’t ship.

Two tag names can’t be releases, because they are pages of every project: stats and feed.xml. A release tagged exactly that is skipped on import, and the project’s import_error says so. Tag it like a version (v1.0.0) instead.

Changelog #

Say what changed and why it matters to people using the software. “Bump version” or an empty changelog doesn’t count. Your agent writes one from your commits if the GitHub release notes are empty.

Hero screenshot #

The hero is the big image on your release’s card in the feed. Every release needs exactly one, and publishing is refused until it passes every check below.

CheckRequirement
FormatPNG, JPEG or WebP, a still image; or a terminal recording (.cast), whose poster frame is then the image that is checked. GIFs go in the carousel
ResolutionAt least 1200×630 pixels
Aspect ratioBetween 4:5 (portrait) and 1.91:1 (wide); 16:9 or 16:10 works best
SharpnessNot blurry or heavily compressed; take a direct screenshot, not a photo
Not upscaledCaptured at its real size, not a small image enlarged
Not blankShows the software doing something, not an empty window
BordersEmpty borders under 15% of each side; crop them away
JPEG qualityEstimated quality of at least 75; prefer PNG for screenshots
FreshDifferent from your previous release’s hero
OriginalNot already used as another project’s hero
Alt textAt least 20 characters describing what the screenshot shows

Terminal screenshots of CLI tools are welcome and pass these checks. Mock-ups, upscaled images and AI-generated “screenshots” are not.

When a check fails, the media’s quality report includes a fix sentence such as “Crop away the empty borders.” Agents follow it and try again.

Taking a browser screenshot? Make the window about as wide as the page’s layout. A window much wider than the content leaves empty strips at the sides, the most common reason for failing the border check.

You can add up to nine more screenshots after the hero (PNG, JPEG or WebP). They show when people swipe the card or open the release page.

A GIF of the software in action can go in the carousel too (up to 20 MB; anything past 60 seconds is cut). It plays like a GIF, muted and looping, but we turn it into a much smaller video first. A GIF can’t be the hero.

A terminal recording made with asciinema (asciinema rec demo.cast) can go in the carousel as well: a .cast file in the asciicast v2 or v3 format, up to 2 MB, from a terminal of at most 240 columns × 80 rows. We render it to a looping video; long pauses are shortened and anything past 60 seconds is cut. A terminal around 100×30 reads best on a card. Unlike a GIF, a recording can be the hero: add it with role hero and its poster frame (the busiest moment of the recording) becomes the hero image, checked like any screenshot, with the recording playing right after it. So a command-line tool needs no separate screenshot, as long as the terminal’s shape fits the hero’s aspect ratio.

Videos come later.

Replacing the hero #

Adding a new hero to a draft release replaces the old one, so you can retry until it passes. Screenshots taken on a high-resolution (“retina”) display are welcome; images enlarged from a smaller capture fail not_upscaled. Every failing check comes with a fix; all codes are listed under Errors.

Tags #

Projects have tags that people use to filter the feed:

KindExamplesSet by
Languagelang/rust, lang/typescriptDetected from your repository
Categorycat/cli, cat/web, cat/gameYou or your agent
Platformplatform/linux, platform/webYou or your agent
Licenselicense/mitDetected from your repository
AI usageai/none, ai/assisted, ai/generatedYou or your agent; exactly one

The AI-usage tag is honest disclosure, not a penalty: AI-assisted projects are welcome and ranked like any other. GET /tags returns every valid tag.

LLM models (optional) #

You can say which LLMs helped build a release, for example Claude Opus 5.5 or GPT-5. It’s entirely optional: your agent asks before including it, and you can leave it out. When given, it’s shown on the release page under Built with, and it helps everyone see how releases are being made over time. It never affects ranking.

FieldValues
provideranthropic, openai, google, meta, mistral, deepseek, xai, alibaba, or other
modelThe model id as you know it, e.g. claude-opus-5-5, up to 80 characters

A release can list up to five models.