@buildinternet/releases-skills 0.13.2 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/analyzing-releases/SKILL.md +2 -2
- package/skills/managing-sources/SKILL.md +1 -1
- package/skills/parsing-changelogs/SKILL.md +3 -3
- package/skills/releases-cli/SKILL.md +76 -0
- package/skills/releases-cli/references/admin.md +184 -0
- package/skills/releases-cli/references/reader.md +97 -0
- package/skills/releases-mcp/SKILL.md +53 -0
package/package.json
CHANGED
|
@@ -19,7 +19,7 @@ Turn changelog data into competitive intelligence by analyzing release patterns
|
|
|
19
19
|
|-----------|-----|------------|
|
|
20
20
|
| Check existing sources | `releases list --query <company> --json` | `list_sources` with query param |
|
|
21
21
|
| Fetch releases | `releases admin source fetch <slug> --max 50` | `fetch_source` with identifier (ID or slug) |
|
|
22
|
-
| Get latest releases | `releases
|
|
22
|
+
| Get latest releases | `releases tail <slug> --json` | `get_latest_releases` with source/org and limit |
|
|
23
23
|
| Search releases | `releases search <query> --json` | `search_releases` with query |
|
|
24
24
|
| Summarize | `releases summary <slug> --json` | (not available as typed tool) |
|
|
25
25
|
| Compare | `releases compare <slugA> <slugB> --json` | (not available as typed tool) |
|
|
@@ -70,5 +70,5 @@ Ask the user where to save the analysis, or use your best judgment based on the
|
|
|
70
70
|
|
|
71
71
|
- Focus on what companies shipped. If a source has noisy data (blog posts mixed in, missing dates), work around it silently. Don't include source quality commentary in the report unless a company had to be substantially excluded.
|
|
72
72
|
- Fill data gaps with web fetches. List sources to get release URLs, then WebFetch to spot-check pages for missing dates, versions, or feature details.
|
|
73
|
-
- For velocity counting, get the latest releases with dates — CLI: `releases
|
|
73
|
+
- For velocity counting, get the latest releases with dates — CLI: `releases tail <slug> --json`, typed tool: `get_latest_releases`.
|
|
74
74
|
- AI-powered summarize and compare are only available via CLI (`releases summary`, `releases compare`). When using typed tools, synthesize manually from raw release data.
|
|
@@ -18,7 +18,7 @@ Operations can be performed via CLI commands or typed MCP/agent tools. Use which
|
|
|
18
18
|
| Edit source | `releases admin source edit <identifier> [--primary] [--priority <p>]` | `edit_source` with identifier (ID or slug), is_primary, fetch_priority params |
|
|
19
19
|
| Remove source | `releases admin source remove <slug> [--ignore --reason <reason>]` | `remove_source` with identifier (ID or slug) param |
|
|
20
20
|
| Fetch releases | `releases admin source fetch <slug> [--dry-run] [--max <n>]` | `fetch_source` with identifier (ID or slug) param |
|
|
21
|
-
| Get latest releases | `releases
|
|
21
|
+
| Get latest releases | `releases tail [slug] --json [--org <org>]` | `get_latest_releases` with source, organization, limit params |
|
|
22
22
|
| Search releases | `releases search <query> --json` | `search_releases` with query, limit params |
|
|
23
23
|
| Evaluate URL | `releases admin discovery evaluate <url> --json` | `evaluate_url` with url param |
|
|
24
24
|
| Add org | `releases admin org add <name> [--domain <d>] [--description <t>] [--category <c>] [--tags <t1,t2>]` | `manage_org` action "add" with name, domain, description, category, tags |
|
|
@@ -32,7 +32,7 @@ Key CLI flags (not available via typed tool — the typed tool always does a ful
|
|
|
32
32
|
|
|
33
33
|
### Checking results
|
|
34
34
|
|
|
35
|
-
After fetching, verify releases were persisted. CLI: `releases
|
|
35
|
+
After fetching, verify releases were persisted. CLI: `releases tail <slug> --json` or `releases admin source fetch-log <slug>`. Typed tool: `get_latest_releases` with source param. Use `get_organization` (or `releases admin org show <slug> --json`) to see the full picture of an org's sources.
|
|
36
36
|
|
|
37
37
|
## Incremental vs Bulk Parsing
|
|
38
38
|
|
|
@@ -74,7 +74,7 @@ Do NOT fetch release URLs in the parent agent — always delegate to a subagent
|
|
|
74
74
|
If pages are richer than feed content (more text, images, videos, or code examples):
|
|
75
75
|
1. Record the assessment and enable crawl mode. CLI: `releases admin source edit <identifier> --metadata '{"feedContentDepth":"summary-only","crawlEnabled":true}'`. Typed tool: `edit_source` with the same metadata. Subsequent fetches will follow links to per-release pages and extract full content in one pass.
|
|
76
76
|
2. Re-fetch the source once to backfill. CLI: `releases admin source fetch <slug> --full`. Typed tool: `fetch_source`.
|
|
77
|
-
3. Verify results. CLI: `releases list <slug> --json` or `releases
|
|
77
|
+
3. Verify results. CLI: `releases list <slug> --json` or `releases tail <slug>`. Typed tool: `get_latest_releases` — check content is richer after the re-fetch.
|
|
78
78
|
|
|
79
79
|
If feed already provides full content with no meaningful additions on the page:
|
|
80
80
|
1. Record `feedContentDepth: "full"` so future sessions skip the sampling step.
|
|
@@ -175,6 +175,6 @@ When you encounter a new rollup source during discovery or fetch, update the pla
|
|
|
175
175
|
When adding a new source, always validate before committing:
|
|
176
176
|
|
|
177
177
|
1. **Fetch** — CLI: `releases admin source fetch <slug> --dry-run` then `releases admin source fetch <slug>`. Typed tool: `fetch_source` with identifier (ID or slug).
|
|
178
|
-
2. **Verify** — CLI: `releases
|
|
178
|
+
2. **Verify** — CLI: `releases tail <slug> --json` or `releases admin source fetch-log <slug>`. Typed tool: `get_latest_releases` with source identifier.
|
|
179
179
|
3. **If poor results** — try a different URL or type. CLI: `releases admin source edit <identifier> --type feed`. Typed tool: `edit_source` with identifier.
|
|
180
180
|
4. **If no usable releases** — remove the source. CLI: `releases admin source remove <slug> --ignore --reason "..."`. Typed tool: `remove_source` with identifier, then `exclude_url`.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: releases-cli
|
|
3
|
+
description: Use the `releases` CLI to search, inspect, and manage the Releases.sh changelog registry from the terminal. Activate when the user mentions "releases CLI", runs a `releases` command, asks how to install the CLI, or wants to add/edit/fetch sources or organizations programmatically.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# releases CLI
|
|
7
|
+
|
|
8
|
+
The `releases` CLI does two things: lets anyone search and browse the public changelog registry at [releases.sh](https://releases.sh), and lets API-key holders manage orgs, products, sources, and releases through `releases admin` subcommands.
|
|
9
|
+
|
|
10
|
+
## Install
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
brew install buildinternet/tap/releases # recommended on macOS / Linux
|
|
14
|
+
npm install -g @buildinternet/releases # or via npm
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Or run one-off without installing:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx @buildinternet/releases search "react"
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The CLI talks to `api.releases.sh` by default — no configuration needed for reader commands.
|
|
24
|
+
|
|
25
|
+
## What this skill covers
|
|
26
|
+
|
|
27
|
+
- **[Reader commands](references/reader.md)** — Search, inspect, and export changelog data. No API key required.
|
|
28
|
+
- **[Admin commands](references/admin.md)** — Add/edit sources, manage orgs and products, fetch releases, run policies. Requires `RELEASED_API_KEY`.
|
|
29
|
+
|
|
30
|
+
## Quick Reference
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Reader (no auth required)
|
|
34
|
+
releases search "breaking change" # hybrid FTS + semantic search
|
|
35
|
+
releases tail next-js # latest releases from one source
|
|
36
|
+
releases tail --org vercel --count 20 # latest from a whole org
|
|
37
|
+
releases list --category ai # browse sources
|
|
38
|
+
releases show vercel # dispatch by id or slug
|
|
39
|
+
releases stats # registry overview
|
|
40
|
+
releases categories # list valid category values
|
|
41
|
+
|
|
42
|
+
# Admin (requires RELEASED_API_KEY)
|
|
43
|
+
releases admin source add "Linear" --url https://linear.app/changelog
|
|
44
|
+
releases admin source fetch <slug> --max 50
|
|
45
|
+
releases admin org add "Acme" --category cloud
|
|
46
|
+
releases admin product add "CLI" --org acme
|
|
47
|
+
releases admin discovery onboard "Stripe" # AI-powered discovery agent
|
|
48
|
+
|
|
49
|
+
# Local stdio MCP bridge (proxies to api.releases.sh)
|
|
50
|
+
releases admin mcp serve
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Every reader command accepts `--json` for machine-readable output. IDs (`org_…`, `src_…`, `prod_…`, `rel_…`) are accepted anywhere a slug is.
|
|
54
|
+
|
|
55
|
+
## Authentication
|
|
56
|
+
|
|
57
|
+
Reader access is unauthenticated and may be rate-limited per IP.
|
|
58
|
+
|
|
59
|
+
**Admin access is closed beta.** `releases admin …` commands require a Bearer token, but the hosted registry does not currently expose a self-serve flow for generating keys — an external user cannot create one on their own. If the user asks how to get an API key, explain this and point them at the project repo to request access. Don't invent a signup URL.
|
|
60
|
+
|
|
61
|
+
If a key is available:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
export RELEASED_API_KEY=your_key
|
|
65
|
+
export RELEASED_API_URL=https://api.releases.sh # optional, this is the default
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
These can also go in a `.env` file — Bun auto-loads it when running from source.
|
|
69
|
+
|
|
70
|
+
## Common Mistakes
|
|
71
|
+
|
|
72
|
+
- `releases admin …` without `RELEASED_API_KEY` set fails fast with a clear error — don't retry the same command. Note that keys are not self-serve yet (see Authentication).
|
|
73
|
+
- Slug renames (`admin source edit <slug> --slug new-slug`) require `--confirm-slug-change` because they break web links.
|
|
74
|
+
- `releases admin source fetch` with no slug or filter is blocked in remote mode. Use `--stale`, `--unfetched`, `--retry-errors`, `--changed`, or a source slug.
|
|
75
|
+
- Default fetch cap is 200 releases per source (GitHub pagination limits). Use `--max <n>` or `--all` to override.
|
|
76
|
+
- `summary` and `compare` are *not* in this CLI. Those commands require AI provider calls and live in the private maintainer tooling. Use the hosted MCP tools `summarize_changes` / `compare_products` at `mcp.releases.sh` instead.
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# Admin Commands
|
|
2
|
+
|
|
3
|
+
> **Closed beta.** All commands on this page require `RELEASED_API_KEY` — a Bearer token on write endpoints of `api.releases.sh`. API keys are **not self-serve** at this time. A normal user cannot create one on their own, and the hosted registry does not expose a public signup flow for admin access. If a user asks how to obtain a key, tell them admin access is currently invite-only and point them at the project repo to request access. Do not fabricate a signup URL or recommend sending a request to a specific email unless one is documented in this repo.
|
|
4
|
+
|
|
5
|
+
If a key is available, set it in the environment:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
export RELEASED_API_KEY=your_key
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Missing or invalid keys fail fast at CLI startup with a clear error; don't retry the same command without fixing the env var.
|
|
12
|
+
|
|
13
|
+
All admin commands accept an entity ID (`org_…`, `src_…`, `prod_…`, `rel_…`) or a slug wherever an identifier is expected. Prefer IDs — slugs can change, IDs cannot.
|
|
14
|
+
|
|
15
|
+
## Sources
|
|
16
|
+
|
|
17
|
+
### Add
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
releases admin source add "Next.js" --url https://github.com/vercel/next.js
|
|
21
|
+
releases admin source add "Linear" --url https://linear.app/changelog
|
|
22
|
+
releases admin source add "My Blog" --url https://example.com/changelog
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
By default, `add` runs automated pre-checks (provider detection, feed discovery, markdown probing). Override with `--type github|scrape|feed`. Use `--skip-eval` to bypass evaluation. Batch mode (`--batch`) skips evaluation by default for speed.
|
|
26
|
+
|
|
27
|
+
Provide a feed URL explicitly when it isn't easily discoverable:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
releases admin source add "Claude Code" --url https://docs.anthropic.com/en/changelog \
|
|
31
|
+
--feed-url https://docs.anthropic.com/en/changelog/rss.xml
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Evaluate without adding:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
releases admin discovery evaluate https://linear.app/changelog
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Edit
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
releases admin source edit src_abc123 --name "New Name" # by ID (preferred)
|
|
44
|
+
releases admin source edit next-js --url https://github.com/vercel/next.js/releases
|
|
45
|
+
releases admin source edit my-blog --org acme # set organization
|
|
46
|
+
releases admin source edit my-blog --no-org # remove organization
|
|
47
|
+
releases admin source edit my-blog --type feed # change adapter type
|
|
48
|
+
releases admin source edit my-blog --no-feed-url # clear stored feed URL
|
|
49
|
+
releases admin source edit my-blog --markdown-url https://example.com/changelog.md
|
|
50
|
+
releases admin source edit my-blog --primary # mark as org's primary changelog
|
|
51
|
+
releases admin source edit my-blog --slug new-slug --confirm-slug-change
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Slug renames require `--confirm-slug-change` because they break existing web links.
|
|
55
|
+
|
|
56
|
+
### Fetch
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
releases admin source fetch next-js # one source
|
|
60
|
+
releases admin source fetch --since 2025-01-01 --max 50
|
|
61
|
+
releases admin source fetch --max 500 # override the 200/source default
|
|
62
|
+
releases admin source fetch --all # no date/count limits
|
|
63
|
+
releases admin source fetch --stale 24 # only stale sources, with backoff
|
|
64
|
+
releases admin source fetch --retry-errors # retry sources whose last fetch failed
|
|
65
|
+
releases admin source fetch --changed # sources with upstream changes detected
|
|
66
|
+
releases admin source fetch --unfetched --concurrency 5
|
|
67
|
+
releases admin source fetch next-js --skip-changelog # skip CHANGELOG.md refresh
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Notes:
|
|
71
|
+
|
|
72
|
+
- Default cap is 200 releases per source (GitHub paginates at ~10K). `--max <n>` or `--all` to override.
|
|
73
|
+
- Remote mode **requires** a filter or slug. Bare `releases admin source fetch` with no args is blocked to prevent accidental bulk work.
|
|
74
|
+
- Remote concurrency defaults to 3, capped at 5. Duplicate source fetches are detected and blocked.
|
|
75
|
+
- Smart fetch backoff: sources returning no changes back off exponentially (1h → 48h); error backoff caps at 72h.
|
|
76
|
+
|
|
77
|
+
### Poll (cheap change detection)
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
releases admin source poll # HEAD-check all feed sources
|
|
81
|
+
releases admin source poll next-js # one source
|
|
82
|
+
releases admin source poll --changed # only show sources flagged with changes
|
|
83
|
+
releases admin source poll --json
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Pure HEAD-based, no AI or parsing. The hosted cron runs this hourly; `--changed` is mostly useful for ad-hoc checks.
|
|
87
|
+
|
|
88
|
+
### Fetch history
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
releases admin source fetch-log # across all sources
|
|
92
|
+
releases admin source fetch-log next-js # one source
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Health checks
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
releases admin source check # all sources
|
|
99
|
+
releases admin source check next-js # one source
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Organizations
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
releases admin org add "Vercel" --category developer-tools --tags typescript,edge
|
|
106
|
+
releases admin org list # summary view
|
|
107
|
+
releases admin org show vercel # full details (accounts, tags, sources, products, aliases)
|
|
108
|
+
releases admin org edit vercel --category developer-tools
|
|
109
|
+
releases admin org link vercel --platform github --handle vercel
|
|
110
|
+
releases admin org tag add vercel react serverless
|
|
111
|
+
releases admin org alias add anthropic claude.ai claude.com
|
|
112
|
+
releases admin org refresh vercel # fetch all sources + regenerate overview
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
`org refresh` flags: `--max <n>` (per-source cap, default 20), `--concurrency <n>`, `--window <days>`, `--dry-run`, `--skip-overview`, `--json`.
|
|
116
|
+
|
|
117
|
+
## Products
|
|
118
|
+
|
|
119
|
+
Products group sources under multi-product orgs (e.g. Vercel → Next.js, Turborepo, v0):
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
releases admin product add "Next.js" --org vercel --url https://nextjs.org
|
|
123
|
+
releases admin product list vercel
|
|
124
|
+
releases admin product edit nextjs --description "React framework for production"
|
|
125
|
+
releases admin product tag add nextjs react
|
|
126
|
+
releases admin product alias add nextjs nextjs.org
|
|
127
|
+
releases admin product remove nextjs # sources become unlinked, not deleted
|
|
128
|
+
releases admin product adopt nextjs --into vercel # convert an org into a product
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Releases
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
releases admin release show rel_abc123
|
|
135
|
+
releases admin release edit rel_abc123 --title "Fixed title" --version "v2.0.1"
|
|
136
|
+
releases admin release delete rel_abc123
|
|
137
|
+
releases admin release suppress rel_abc123 --reason "promotional content"
|
|
138
|
+
releases admin release unsuppress rel_abc123
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Suppressed releases are hidden from all read paths (search, latest, stats, API) but preserved for audit.
|
|
142
|
+
|
|
143
|
+
## Policies
|
|
144
|
+
|
|
145
|
+
Ignored URLs are **org-scoped**; blocked URLs are **global**.
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
releases admin policy ignore add https://example.com/blog --org vercel --reason "Not a changelog"
|
|
149
|
+
releases admin policy ignore list --org vercel
|
|
150
|
+
releases admin policy block add medium.com --domain --reason "Aggregator"
|
|
151
|
+
releases admin policy block list
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Discovery
|
|
155
|
+
|
|
156
|
+
AI-powered onboarding for whole companies:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
releases admin discovery onboard "Vercel"
|
|
160
|
+
releases admin discovery onboard "Stripe" --domain stripe.com --github-org stripe
|
|
161
|
+
releases admin discovery discover vercel.com --verify --add
|
|
162
|
+
releases admin discovery task list # in-flight discovery sessions
|
|
163
|
+
releases admin discovery task cancel <sessionId>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Import
|
|
167
|
+
|
|
168
|
+
Bulk-import orgs and sources from a JSON manifest:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
releases admin source import manifest.json
|
|
172
|
+
releases admin source import manifest.json --dry-run
|
|
173
|
+
releases admin source import manifest.json --skip-existing
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## MCP bridge
|
|
177
|
+
|
|
178
|
+
Run a local stdio MCP bridge that proxies the hosted tools:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
releases admin mcp serve
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Useful for clients that only support stdio transport. For native remote MCP support (Claude Code, Codex), connect directly to `https://mcp.releases.sh/mcp` instead.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Reader Commands
|
|
2
|
+
|
|
3
|
+
Reader commands are unauthenticated — no API key required. They talk to `api.releases.sh` over HTTPS and all support `--json` for machine-readable output.
|
|
4
|
+
|
|
5
|
+
## Search
|
|
6
|
+
|
|
7
|
+
Hybrid lexical + semantic search across releases and CHANGELOG chunks.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
releases search "authentication"
|
|
11
|
+
releases search "vercel" --type releases --limit 5
|
|
12
|
+
releases search "breaking change" --json
|
|
13
|
+
releases search "retry" --org stripe
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Flags:
|
|
17
|
+
|
|
18
|
+
- `--type <releases|sources|all>` — narrow result kind (default: `all`).
|
|
19
|
+
- `--org <slug>` — scope to one organization.
|
|
20
|
+
- `--product <slug>` — scope to one product.
|
|
21
|
+
- `--limit <n>` — default 20.
|
|
22
|
+
- `--mode <lexical|semantic|hybrid>` — default `hybrid`. Use `lexical` for pure FTS ranking.
|
|
23
|
+
- `--json` — machine output; each hit includes a `kind: "release" | "changelog_chunk"` discriminator.
|
|
24
|
+
|
|
25
|
+
Chunk hits carry `sourceSlug`, `chunkOffset`, and `chunkLength` so you can chain into `releases admin source changelog <slug> --offset N` (or the MCP `get_source_changelog` tool) to read surrounding context.
|
|
26
|
+
|
|
27
|
+
## Latest releases
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
releases tail # across all sources
|
|
31
|
+
releases tail next-js # one source (by slug)
|
|
32
|
+
releases tail --org vercel --count 20 # whole org
|
|
33
|
+
releases tail --product nextjs # one product
|
|
34
|
+
releases tail --type feature # filter by release type
|
|
35
|
+
releases tail --json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## List sources
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
releases list # all sources
|
|
42
|
+
releases list next-js # detail for one source (by slug or id)
|
|
43
|
+
releases list --org sentry # filter by organization
|
|
44
|
+
releases list --product nextjs # filter by product
|
|
45
|
+
releases list --query shadcn # name / slug / url substring
|
|
46
|
+
releases list --has-feed # sources with a discovered feed URL
|
|
47
|
+
releases list --category ai # filter by category
|
|
48
|
+
releases list --json # machine-readable output
|
|
49
|
+
releases list --json --compact # lightweight JSON (id, slug, name, type, org, date)
|
|
50
|
+
releases list --json --limit 20 --page 2 # pagination (server-side)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Aliased as `releases admin source list` for discoverability within admin workflows.
|
|
54
|
+
|
|
55
|
+
## Show any entity
|
|
56
|
+
|
|
57
|
+
Top-level `show` dispatches by ID prefix, and falls back to slug lookup:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
releases show rel_XqbzLaOqBFz7VSAIqx2zs # release (rel_)
|
|
61
|
+
releases show src_abc123 # source (src_)
|
|
62
|
+
releases show org_abc123 # organization (org_)
|
|
63
|
+
releases show prod_abc123 # product (prod_)
|
|
64
|
+
releases show vercel # slug fallthrough (org → product → source)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Use this when you have an ID from another tool output (search results, MCP tool responses, etc.) and want to inspect it without caring what kind of entity it is.
|
|
68
|
+
|
|
69
|
+
## Stats
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
releases stats # index overview, source health, recent fetch activity
|
|
73
|
+
releases stats --days 7 # adjust the activity window
|
|
74
|
+
releases stats --json
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Categories
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
releases categories # list the canonical category values
|
|
81
|
+
releases categories --json
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The category list is fixed — adding a new category requires a code change in `@buildinternet/releases-core`.
|
|
85
|
+
|
|
86
|
+
## Changelog slicing (admin CLI, reader endpoint)
|
|
87
|
+
|
|
88
|
+
The stored CHANGELOG.md for a GitHub source can be sliced from the reader API. The CLI wrapper lives under admin for discoverability but the endpoint itself is public:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
releases admin source changelog apollo-client # full file
|
|
92
|
+
releases admin source changelog apollo-client --limit 10000 # first 10k chars, heading-aligned
|
|
93
|
+
releases admin source changelog apollo-client --tokens 5000 # first ~5k cl100k_base tokens
|
|
94
|
+
releases admin source changelog apollo-client --offset 10000 --json
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
`tokens` and `limit` are both heading-aware; `tokens` wins when both are passed. Chain successive calls via the returned `nextOffset` to reconstruct the file exactly. Recommended token brackets: 2000 / 5000 / 10000 / 20000.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: releases-mcp
|
|
3
|
+
description: Use when the user asks about recent releases, changelogs, what's new in a library, breaking changes, version updates, or wants to compare products. Activates for questions like "what changed in Next.js 15?", "latest Tailwind releases", "compare Bun vs Deno releases".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Releases.sh — Changelog Lookup
|
|
7
|
+
|
|
8
|
+
When the user asks about releases, changelogs, or version updates, use the Releases.sh MCP tools to fetch current data instead of relying on training data.
|
|
9
|
+
|
|
10
|
+
## When to Use This Skill
|
|
11
|
+
|
|
12
|
+
Activate when the user:
|
|
13
|
+
|
|
14
|
+
- Asks what's new or changed in a library/product ("What changed in Next.js 15?")
|
|
15
|
+
- Wants recent releases or changelogs ("Show me the latest Tailwind releases")
|
|
16
|
+
- Asks about breaking changes or migration ("Were there breaking changes in Prisma 6?")
|
|
17
|
+
- Wants to compare release activity between products ("Compare Bun vs Deno releases")
|
|
18
|
+
- Mentions version updates, release notes, or changelogs in the context of a specific product
|
|
19
|
+
|
|
20
|
+
## How to Look Up Releases
|
|
21
|
+
|
|
22
|
+
### Step 1: Find the Organization or Product
|
|
23
|
+
|
|
24
|
+
Call `list_organizations` with the library/product name as the `query` parameter. Multi-product orgs (e.g. Vercel → Next.js, Turborepo) are exposed via `list_products` and `get_product` — use those when the user's question is product-specific rather than company-wide.
|
|
25
|
+
|
|
26
|
+
If the query returns no results, try variations:
|
|
27
|
+
- The company name instead of the product name (e.g., "Vercel" instead of "Next.js")
|
|
28
|
+
- The GitHub org name (e.g., "supabase")
|
|
29
|
+
- A domain (e.g., "tailwindcss.com")
|
|
30
|
+
|
|
31
|
+
### Step 2: Choose the Right Tool
|
|
32
|
+
|
|
33
|
+
- **"What's new?" / "Latest releases"** → Use `get_latest_releases` with the organization or product slug
|
|
34
|
+
- **Specific feature or keyword** → Use `search_releases` with a descriptive query and organization filter
|
|
35
|
+
- **Single release by id** → Use `get_release` when you already have a `rel_` id (search results include ids)
|
|
36
|
+
- **Source or product deep-dive** → Use `get_source`, `get_product`, or `get_organization` for metadata, tags, and linkage
|
|
37
|
+
- **Canonical CHANGELOG.md from a GitHub repo** → Use `get_source_changelog` when the user wants the full maintained file, not just the tagged releases (refreshed on every fetch). For large files, pass `tokens` (cl100k_base budget, e.g. 5000 or 10000) to get a heading-aligned slice that fits a known context window; chain via the returned `nextOffset`. Every response reports `totalTokens` so you can plan how many calls you need upfront.
|
|
38
|
+
- **Compare two products** → Use `compare_products` with an array of two product slugs
|
|
39
|
+
- **Summarize recent activity** → Use `summarize_changes` with the product slug
|
|
40
|
+
|
|
41
|
+
### Step 3: Present Results
|
|
42
|
+
|
|
43
|
+
- Lead with the most relevant information for the user's question
|
|
44
|
+
- Include version numbers and dates when available
|
|
45
|
+
- Quote key changes directly from the release notes
|
|
46
|
+
- If results are sparse, mention that the product may not be fully indexed yet
|
|
47
|
+
|
|
48
|
+
## Guidelines
|
|
49
|
+
|
|
50
|
+
- Pass the user's full question context into query parameters for better relevance
|
|
51
|
+
- When the user mentions a time range ("last month", "since v4"), use the `days` parameter on `get_latest_releases` or `summarize_changes`
|
|
52
|
+
- If a product isn't found, say so clearly — don't fabricate release information
|
|
53
|
+
- For comparison questions, both products must be indexed; if one isn't found, explain which is missing
|