Generate product changelog entries, X/Twitter posts, and Slack announcements for Leather wallet releases. Use when creating release communications including changelog entries for app.leather.io/changelog, announcement tweets (single or threads), and community Slack posts. Inputs may include verbal feature descriptions, Linear projects, or GitHub PRs.
Generate consistent, on-brand release communications for Leather wallet across changelog entries, X posts, and Slack announcements.
references/voice-and-formats.md for voice guidelines and templates| Format | Purpose | Length | |--------|---------|--------| | Changelog | Permanent product record at app.leather.io/changelog | 50-150 words | | X single | Quick announcement for smaller features | 280 chars max | | X thread | Major releases needing context | 3-5 tweets | | Slack | Community announcement | 100-200 words |
See references/voice-and-formats.md for detailed guidelines and examples.
Use scripts/sanity-changelog.js to upload changelog entries to Sanity CMS as drafts.
export SANITY_PROJECT_ID="your-project-id"
export SANITY_DATASET="production" # optional, defaults to "production"
export SANITY_API_TOKEN="your-write-token"
# Test upload without creating (dry run)
node scripts/sanity-changelog.js --title "Feature title" --body changelog.md --dry-run
# Create draft in Sanity
node scripts/sanity-changelog.js --title "Feature title" --body changelog.md
# With custom slug and publication date
node scripts/sanity-changelog.js \
--title "Feature title" \
--body changelog.md \
--slug "custom-slug" \
--published-at "2025-01-15T10:00:00Z"
The script converts markdown to Sanity Portable Text:
## Headings and ### Headings → h2 blocks**bold**, *italic*, `code` inline formatting| Option | Description |
|--------|-------------|
| --title, -t | Changelog entry title (required) |
| --body, -b | Path to markdown file (required) |
| --slug, -s | URL slug (auto-generated if not provided) |
| --published-at | ISO datetime (default: now) |
| --hero-image | Sanity asset ID for hero image |
| --dry-run | Test without creating document |
Generate or edit images via Gemini 3 Pro Image (Nano Banana Pro).
Batch-generate images via OpenAI Images API. Random prompt sampler + `index.html` gallery.
Generate spectrograms and feature-panel visualizations from audio with the songsee CLI.
Extract frames or short clips from videos using ffmpeg.
Search GIF providers with CLI/TUI, download results, and extract stills/sheets.
Category:media-generate