@buildinternet/releases-skills 0.53.0 → 0.54.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
CHANGED
|
@@ -16,6 +16,7 @@ Operations can be performed via CLI commands or typed MCP/agent tools. Use which
|
|
|
16
16
|
| List sources | `releases list [slug] --json [--org <org>] [--query <text>] [--has-feed] [--category <c>] [--compact] [--limit <n>] [--page <n>]` | `list_catalog` (filter `kind: "source"` to exclude products); `list_sources` is a deprecated alias |
|
|
17
17
|
| Add source | `releases admin source create <name> --url <url> [--type <type>] [--org <org>] [--feed-url <url>] [--primary]` | `manage_source` action "add" with name, url, type, organization, feed_url, **is_primary** (type auto-detected if omitted; only pass is_primary=true when the source is the org's primary changelog — see "Primary Sources") |
|
|
18
18
|
| Add App Store source | `releases admin source create-appstore <url-or-id> [--platform ios\|macos] [--org <slug>] [--product <slug>] [--storefront <code>]` | _(no typed tool yet — CLI only)_ |
|
|
19
|
+
| Add video source | `releases admin source create-video <channel-or-playlist-url> --org <slug> [--product <slug>]` | _(no typed tool yet — CLI only)_ |
|
|
19
20
|
| Edit source | `releases admin source update <identifier> [--primary] [--priority <p>]` | `manage_source` action "edit" with identifier, is_primary, fetch_priority, name, url, type (use only when changing an already-added source; prefer setting flags on "add") |
|
|
20
21
|
| Remove source | `releases admin source delete <slug> [--ignore --reason <reason>]` | `manage_source` action "remove" with identifier |
|
|
21
22
|
| Fetch releases | `releases admin source fetch <slug> [--dry-run] [--max <n>]` | `manage_source` action "fetch" with identifier |
|
|
@@ -48,7 +49,7 @@ Use `--json` (CLI) for structured output. Typed tools always return JSON.
|
|
|
48
49
|
|
|
49
50
|
## Adding Sources
|
|
50
51
|
|
|
51
|
-
Required: **name** and **url**. Optional: **type** (github, scrape, feed, agent — auto-detected from URL if omitted), **organization** (org ID or slug to associate with), **feed_url** (direct feed URL if known). App Store apps (`appstore` type) are **not** created this way — use `create-appstore` (below); `source create` rejects `--type appstore` and pasted `apps.apple.com` URLs with a pointer to it.
|
|
52
|
+
Required: **name** and **url**. Optional: **type** (github, scrape, feed, agent — auto-detected from URL if omitted), **organization** (org ID or slug to associate with), **feed_url** (direct feed URL if known). App Store apps (`appstore` type) are **not** created this way — use `create-appstore` (below); `source create` rejects `--type appstore` and pasted `apps.apple.com` URLs with a pointer to it. YouTube channels/playlists (`video` type) are likewise **not** created this way — use `create-video` (below); `source create` rejects `--type video` and pasted `youtube.com`/`youtu.be` URLs.
|
|
52
53
|
|
|
53
54
|
On slug collision the API auto-suffixes (`changelog` → `changelog-2`, `-3`, …) and the created row in the response tells you the resolved slug — no rename-and-retry needed.
|
|
54
55
|
|
|
@@ -71,6 +72,19 @@ releases admin source create-appstore <url-or-id> [--platform ios|macos] [--org
|
|
|
71
72
|
- **Keep writes serial.** The endpoint resolves the listing on the fly; concurrent creates for a brand-new org/product race on the org/product slug uniqueness constraint. Add one app at a time.
|
|
72
73
|
- The command is idempotent on the app's track ID — re-running reports the existing source instead of creating a duplicate.
|
|
73
74
|
|
|
75
|
+
### Video sources
|
|
76
|
+
|
|
77
|
+
YouTube channels and playlists need a dedicated command because the create flow resolves the channel/playlist to its Atom feed, mints a `video` source, and backfills current videos as releases (description-only, summarizer-cleaned, marketing-filtered):
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
releases admin source create-video <channel-or-playlist-url> --org <slug> [--product <slug>]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
- `<channel-or-playlist-url>` is a YouTube channel (`youtube.com/@handle`, `/channel/<id>`) or playlist (`/playlist?list=<id>`) URL.
|
|
84
|
+
- **`--org` is required and must already exist** — unlike `create-appstore`, no org is derived from the channel. Pass a slug or a typed `org_…` id. `--product <slug>` optionally attaches the source to an existing product.
|
|
85
|
+
- The command is idempotent on the resolved feed URL — re-running reports the existing source.
|
|
86
|
+
- **Never use generic `source create` for a YouTube URL.** It builds a `feed` source whose parser drops `media:group/media:description`, leaving a source with titles and dates but **empty release bodies** — a silent failure that needs deleting and re-creating to fix. `create` rejects YouTube URLs with a pointer to `create-video`.
|
|
87
|
+
|
|
74
88
|
### Naming sources and products
|
|
75
89
|
|
|
76
90
|
**Don't prefix names with the org name.** The org is already shown as context on every page — repeating it in each child source produces noise like "Datadog › Datadog dd-trace-py". Pick the bare, recognizable name instead.
|
|
@@ -40,7 +40,7 @@ releases admin source create "Linear" --url https://linear.app/changelog --dry-r
|
|
|
40
40
|
|
|
41
41
|
`--dry-run` still runs the URL dedup and exclusion checks (so you'll see "already exists" or "blocked URL" outcomes), but skips the write — including the auto-create-org side effect when `--org <name>` doesn't resolve.
|
|
42
42
|
|
|
43
|
-
By default, `create` runs automated pre-checks (provider detection, feed discovery, markdown probing). Override with `--type github|scrape|feed|agent`. Batch mode (`--batch`) skips evaluation by default for speed. App Store apps use the dedicated `source create-appstore` verb (below) — `create` rejects `--type appstore` and pasted `apps.apple.com` URLs with a pointer to it.
|
|
43
|
+
By default, `create` runs automated pre-checks (provider detection, feed discovery, markdown probing). Override with `--type github|scrape|feed|agent`. Batch mode (`--batch`) skips evaluation by default for speed. App Store apps use the dedicated `source create-appstore` verb (below) — `create` rejects `--type appstore` and pasted `apps.apple.com` URLs with a pointer to it. YouTube channels/playlists use `source create-video` (below) — `create` likewise rejects `--type video` and pasted `youtube.com`/`youtu.be` URLs.
|
|
44
44
|
|
|
45
45
|
Provide a feed URL explicitly when it isn't easily discoverable:
|
|
46
46
|
|
|
@@ -60,6 +60,12 @@ releases admin source create "Acme" --url https://acme.dev/changelog \
|
|
|
60
60
|
|
|
61
61
|
Do this rather than a follow-up `source update --metadata-set`: `create` triggers the onboard workflow's auto-fetch, which reads the source's metadata **before** any post-create edit lands. Setting a feed filter on create keeps that first ingest filtered; setting it afterward races the auto-fetch and ingests the whole unfiltered feed.
|
|
62
62
|
|
|
63
|
+
Mark the org's primary changelog in one step with `--primary` (sets `isPrimary` on create — no follow-up `source update --primary` needed). Only pass it when the source is the org's main, company-wide changelog:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
releases admin source create "Vitest" --url https://github.com/vitest-dev/vitest --org vitest --primary
|
|
67
|
+
```
|
|
68
|
+
|
|
63
69
|
Evaluate without adding:
|
|
64
70
|
|
|
65
71
|
```bash
|
|
@@ -87,6 +93,20 @@ releases admin source create-appstore https://apps.apple.com/us/app/shopify/id71
|
|
|
87
93
|
|
|
88
94
|
Add one app at a time — the listing is resolved on the fly, and concurrent creates for a brand-new org/product race on slug uniqueness.
|
|
89
95
|
|
|
96
|
+
### Create Video
|
|
97
|
+
|
|
98
|
+
YouTube channels and playlists have a dedicated verb because the create flow resolves the channel/playlist to its Atom feed, mints a `video` source, and backfills current videos as releases (description-only, summarizer-cleaned, marketing-filtered):
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
releases admin source create-video https://www.youtube.com/@AnthropicAI --org anthropic
|
|
102
|
+
releases admin source create-video https://www.youtube.com/playlist?list=PLf2m23nhTg1P --org anthropic --product claude
|
|
103
|
+
releases admin source create-video https://www.youtube.com/@AnthropicAI --org anthropic --dry-run
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
`--org` is **required** and must already exist — unlike `create-appstore`, no org is derived from the channel. Pass a slug or a typed `org_…` id. `--product <slug>` (optional) attaches the source to an existing product. The verb is idempotent on the resolved feed URL — re-running reports the existing source.
|
|
107
|
+
|
|
108
|
+
Do not point generic `source create` at a YouTube URL. It builds a `feed` source whose parser drops `media:group/media:description`, producing a source with titles and dates but **empty release bodies** — a silent failure. `create` rejects `--type video` and pasted `youtube.com`/`youtu.be` URLs with a pointer to this verb.
|
|
109
|
+
|
|
90
110
|
### Update
|
|
91
111
|
|
|
92
112
|
```bash
|