Install
openclaw skills install release-trackerTrack GitHub repository releases and generate prioritized summaries. Supports multiple repos, custom priority keywords, and delivery to Discord (forum posts...
openclaw skills install release-trackerMonitor one or more GitHub repositories for new releases, generate prioritized summaries, and deliver them to configured channels.
gh CLI installed and authenticated (gh auth status)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
Add multiple repos to the repos array in config. Each repo has independent version tracking and priority rules.
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"
}
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 | text
discord-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 schedulerelease-tracker.json<versionStore>gh release list --repo <owner>/<repo> --limit 5 --json tagName,publishedAt,isPrerelease
gh release view <tag> --repo <owner>/<repo> --json body
cat /opt/homebrew/lib/node_modules/<package>/CHANGELOG.md
priorities keywords, shown firstSort entries within each section:
priorities keywords → topdiscord-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)Compact single-message format, max 2000 chars.
telegram)Same structure as Discord Channel but respects Telegram formatting (markdown v2). Max 4096 chars.
slack)Same structure, uses Slack mrkdwn formatting. Max 3000 chars.
text)Plain markdown, no emoji headers.
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 resultAfter successful delivery, update version store:
{
"openclaw/openclaw": {
"lastVersion": "2026.2.22-2",
"lastCheckedAt": "2026-02-24T10:00:00+09:00",
"lastPublishedAt": "2026-02-22T..."
}
}
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:
release-tracker.json for configrelease-tracker-state.json for last versionsgh release listUser can trigger manually: "check for new releases" or "any updates on openclaw?"
The agent should: