release-tracker

TotalClaw 作者 totalclaw

跟踪 GitHub 存储库版本并生成优先级摘要。 支持多个存储库、自定义优先级关键字以及交付至 Discord(论坛帖子或频道消息)、Telegram、Slack 或纯文本。 在设置自动发布监控、检查新版本时使用 任何 GitHub 存储库,或生成变更日志摘要。触发器步入正轨 发布、监控存储库、检查更新、新版本、发行说明、 变更日志摘要、设置 cron 作业以进行发布监控或任何 请求观看 GitHub 存储库以获取新版本。

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install totalclaw:totalclaw~jo9900-release-tracker
cURL直接下载,无需登录
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` 关键字的行,最先显示
   - **功能** — 新增能力
   - **破