Release Tracker
Track GitHub repository releases and generate prioritized summaries. Supports multiple repos, custom priority keywords, and delivery to Discord (forum posts...
Description
name: release-tracker description: > Track GitHub repository releases and generate prioritized summaries. Supports multiple repos, custom priority keywords, and delivery to Discord (forum posts or channel messages), Telegram, Slack, or plain text. Use when setting up automated release monitoring, checking for new versions of any GitHub repo, or generating changelog summaries. Triggers on track releases, monitor repo, check for updates, new version, release notes, changelog summary, setting up cron jobs for release monitoring, or any request to watch GitHub repos for new releases.
Release Tracker
Monitor one or more GitHub repositories for new releases, generate prioritized summaries, and deliver them to configured channels.
Prerequisites
ghCLI installed and authenticated (gh auth status)- For Discord delivery: Discord channel configured in OpenClaw
Quick Start
Single Repo Setup
Set up tracking for one repo with a cron job:
1. Create a config file at <workspace>/release-tracker.json (see Configuration)
2. Create a cron job (isolated, daily) that runs the check
3. The cron reads config, checks GitHub, compares versions, posts if new
Multi-Repo Setup
Add multiple repos to the repos array in config. Each repo has independent version tracking and priority rules.
Configuration
Store config at <workspace>/release-tracker.json:
{
"repos": [
{
"owner": "openclaw",
"repo": "openclaw",
"displayName": "OpenClaw",
"priorities": ["discord", "voice", "telegram", "cron", "agent"],
"outputChannel": "<your-discord-channel-id>",
"outputFormat": "discord-forum",
"language": "en",
"includePrerelease": false
}
],
"versionStore": "release-tracker-state.json",
"schedule": "0 10 * * *",
"timezone": "UTC"
}
Config Fields
repos[].owner/repos[].repo— GitHub owner/reporepos[].displayName— friendly name for output headerrepos[].priorities— keywords to sort higher in summary (matched against changelog text)repos[].outputChannel— Discord channel/forum ID for deliveryrepos[].outputFormat—discord-forum|discord-channel|telegram|slack|textdiscord-forum: create a new forum post per releasediscord-channel: send a message to a Discord channeltelegram: send a message to a Telegram chat/channel/groupslack: send a message to a Slack channeltext: return plain text (for piping to other tools)
repos[].language—zh|en(summary language)repos[].includePrerelease— track pre-release/RC versionsrepos[].filter— optional,stable|all(default:stable)versionStore— filename for tracking last-seen versions (relative to workspace)schedule— cron expression for check frequencytimezone— timezone for cron schedule
Workflow
Check for New Releases
- Read config from
release-tracker.json - Read version state from
<versionStore> - For each repo:
gh release list --repo <owner>/<repo> --limit 5 --json tagName,publishedAt,isPrerelease - Compare latest tag against stored version
- If new version found, proceed to summarize
Generate Summary
- Fetch release content:
gh release view <tag> --repo <owner>/<repo> --json body - If release body is sparse, also check local CHANGELOG if the package is installed:
cat /opt/homebrew/lib/node_modules/<package>/CHANGELOG.md - Parse and categorize changes into sections:
- Priority items — lines matching any
prioritieskeywords, shown first - Features — new capabilities
- Breaking changes — marked with ⚠️
- Fixes — bug fixes relevant to user (skip internal/CI fixes)
- Security — collapsed at bottom unless critical
- Skip: CI/test-only changes, dependency bumps, internal refactors
- Priority items — lines matching any
Prioritization Rules
Sort entries within each section:
- Lines matching
prioritieskeywords → top - User-facing changes → middle
- Internal/infrastructure → bottom
- Omit: trivial fixes, test-only changes, doc typos
Format Output
Discord Forum (discord-forum)
Title: 📦 v{version}
Body:
## {displayName} v{version}
### ⭐ Key Features
{priority matches + features, formatted as bold headers with descriptions}
### ⚠️ Breaking Changes
{breaking changes with migration notes}
### 🔧 Fixes
{relevant fixes, grouped by area}
### 🛡️ Security
{security fixes, brief}
Discord Channel (discord-channel)
Compact single-message format, max 2000 chars.
Telegram (telegram)
Same structure as Discord Channel but respects Telegram formatting (markdown v2). Max 4096 chars.
Slack (slack)
Same structure, uses Slack mrkdwn formatting. Max 3000 chars.
Text (text)
Plain markdown, no emoji headers.
Deliver
Based on outputFormat:
discord-forum:message(action=thread-create, channelId=<outputChannel>, threadName=<title>, message=<body>)discord-channel:message(action=send, channel=discord, target=<outputChannel>, message=<body>)telegram:message(action=send, channel=telegram, target=<outputChannel>, message=<body>)slack:message(action=send, channel=slack, target=<outputChannel>, message=<body>)text: return as tool result
Update State
After successful delivery, update version store:
{
"openclaw/openclaw": {
"lastVersion": "2026.2.22-2",
"lastCheckedAt": "2026-02-24T10:00:00+09:00",
"lastPublishedAt": "2026-02-22T..."
}
}
Cron Setup
Create the cron job for automated checking:
Name: release-tracker
Schedule: {config.schedule} with tz {config.timezone}
Session: isolated
Payload: agentTurn with message referencing this skill
Delivery: none (skill handles its own delivery)
The cron message should instruct the agent to:
- Read
release-tracker.jsonfor config - Read
release-tracker-state.jsonfor last versions - Check each repo via
gh release list - If new releases found, generate summaries and deliver
- Update state file
Manual Check
User can trigger manually: "check for new releases" or "any updates on openclaw?"
The agent should:
- Load config
- Run the check workflow
- Report findings conversationally (not necessarily in forum format)
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!