release-tracker
跟踪 GitHub 存储库版本并生成优先级摘要。 支持多个存储库、自定义优先级关键字以及交付至 Discord(论坛帖子或频道消息)、Telegram、Slack 或纯文本。 在设置自动发布监控、检查新版本时使用 任何 GitHub 存储库,或生成变更日志摘要。触发器步入正轨 发布、监控存储库、检查更新、新版本、发行说明、 变更日志摘要、设置 cron 作业以进行发布监控或任何 请求观看 GitHub 存储库以获取新版本。
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install totalclaw:totalclaw~jo9900-release-trackercURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Atotalclaw~jo9900-release-tracker/file -o jo9900-release-tracker.md# Release Tracker
Monitor one or more GitHub repositories for new releases, generate prioritized summaries, and deliver them to configured channels.
## Prerequisites
- `gh` CLI 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`:
```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/repo
- `repos[].displayName` — friendly name for output header
- `repos[].priorities` — keywords to sort higher in summary (matched against changelog text)
- `repos[].outputChannel` — Discord channel/forum ID for delivery
- `repos[].outputFormat` — `discord-forum` | `discord-channel` | `telegram` | `slack` | `text`
- `discord-forum`: create a new forum post per release
- `discord-channel`: send a message to a Discord channel
- `telegram`: send a message to a Telegram chat/channel/group
- `slack`: send a message to a Slack channel
- `text`: return plain text (for piping to other tools)
- `repos[].language` — `zh` | `en` (summary language)
- `repos[].includePrerelease` — track pre-release/RC versions
- `repos[].filter` — optional, `stable` | `all` (default: `stable`)
- `versionStore` — filename for tracking last-seen versions (relative to workspace)
- `schedule` — cron expression for check frequency
- `timezone` — timezone for cron schedule
## Workflow
### Check for New Releases
1. Read config from `release-tracker.json`
2. Read version state from `<versionStore>`
3. For each repo:
```bash
gh release list --repo <owner>/<repo> --limit 5 --json tagName,publishedAt,isPrerelease
```
4. Compare latest tag against stored version
5. If new version found, proceed to summarize
### Generate Summary
1. Fetch release content:
```bash
gh release view <tag> --repo <owner>/<repo> --json body
```
2. If release body is sparse, also check local CHANGELOG if the package is installed:
```bash
cat /opt/homebrew/lib/node_modules/<package>/CHANGELOG.md
```
3. Parse and categorize changes into sections:
- **Priority items** — lines matching any `priorities` keywords, 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
### Prioritization Rules
Sort entries within each section:
1. Lines matching `priorities` keywords → top
2. User-facing changes → middle
3. Internal/infrastructure → bottom
4. 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:
```json
{
"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:
1. Read `release-tracker.json` for config
2. Read `release-tracker-state.json` for last versions
3. Check each repo via `gh release list`
4. If new releases found, generate summaries and deliver
5. Update state file
## Manual Check
User can trigger manually: "check for new releases" or "any updates on openclaw?"
The agent should:
1. Load config
2. Run the check workflow
3. Report findings conversationally (not necessarily in forum format)
---
## 中文说明
# Release Tracker
监控一个或多个 GitHub 存储库的新版本,生成优先级排序的摘要,并将其投递到已配置的渠道。
## 前置条件
- 已安装并完成认证的 `gh` CLI(`gh auth status`)
- 用于 Discord 投递:在 OpenClaw 中配置好 Discord 频道
## 快速开始
### 单存储库设置
通过 cron 作业为一个存储库设置跟踪:
```
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
```
### 多存储库设置
在配置文件的 `repos` 数组中添加多个存储库。每个存储库都有独立的版本跟踪和优先级规则。
## 配置
将配置存储在 `<workspace>/release-tracker.json`:
```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 所有者/存储库
- `repos[].displayName` — 用于输出标题的友好名称
- `repos[].priorities` — 在摘要中排序靠前的关键字(与变更日志文本匹配)
- `repos[].outputChannel` — 用于投递的 Discord 频道/论坛 ID
- `repos[].outputFormat` — `discord-forum` | `discord-channel` | `telegram` | `slack` | `text`
- `discord-forum`:为每个版本创建一个新的论坛帖子
- `discord-channel`:向 Discord 频道发送消息
- `telegram`:向 Telegram 聊天/频道/群组发送消息
- `slack`:向 Slack 频道发送消息
- `text`:返回纯文本(用于管道传递给其他工具)
- `repos[].language` — `zh` | `en`(摘要语言)
- `repos[].includePrerelease` — 跟踪预发布/RC 版本
- `repos[].filter` — 可选,`stable` | `all`(默认:`stable`)
- `versionStore` — 用于跟踪最近所见版本的文件名(相对于工作区)
- `schedule` — 检查频率的 cron 表达式
- `timezone` — cron 计划的时区
## 工作流
### 检查新版本
1. 从 `release-tracker.json` 读取配置
2. 从 `<versionStore>` 读取版本状态
3. 对每个存储库:
```bash
gh release list --repo <owner>/<repo> --limit 5 --json tagName,publishedAt,isPrerelease
```
4. 将最新标签与存储的版本进行比较
5. 如发现新版本,继续生成摘要
### 生成摘要
1. 获取发布内容:
```bash
gh release view <tag> --repo <owner>/<repo> --json body
```
2. 如果发布正文内容稀疏,并且已安装该软件包,则同时检查本地 CHANGELOG:
```bash
cat /opt/homebrew/lib/node_modules/<package>/CHANGELOG.md
```
3. 解析变更并归类到各个部分:
- **优先项** — 匹配任意 `priorities` 关键字的行,最先显示
- **功能** — 新增能力
- **破