@buildinternet/releases-skills 0.20.0 → 0.20.2

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buildinternet/releases-skills",
3
- "version": "0.20.0",
3
+ "version": "0.20.2",
4
4
  "description": "Agent skills bundled with the Releases CLI. Markdown playbooks for changelog ingest, discovery, and analysis.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -17,10 +17,10 @@ Turn changelog data into competitive intelligence by analyzing release patterns
17
17
 
18
18
  | Operation | CLI | Typed tool |
19
19
  |-----------|-----|------------|
20
- | Check existing sources | `releases list --query <company> --json` | `list_sources` with query param |
20
+ | Check existing sources | `releases list --query <company> --json` | `list_catalog` with query param; `list_sources` is a deprecated alias |
21
21
  | Fetch releases | `releases admin source fetch <slug> --max 50` | `manage_source` action "fetch" with identifier (ID or slug) |
22
22
  | Get latest releases | `releases tail <slug> --json` | `get_latest_releases` with source/org and limit |
23
- | Search releases | `releases search <query> --json` | `search_releases` with query |
23
+ | Search releases | `releases search <query> --json` | `search` with `type: ["releases"]`; `search_releases` is a deprecated alias |
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) |
26
26
 
@@ -44,13 +44,13 @@ Get structured release data with dates for each source. Use a limit (e.g., 50) t
44
44
 
45
45
  ### 5. Search and cross-reference
46
46
 
47
- Search across all indexed releases to find specific features, breaking changes, or patterns. `search_releases` is hybrid (lexical + semantic) by default — natural-language queries like "auth refresh tokens" or "cold start improvements" work without exact keyword matches. Pass `mode: "lexical"` if you need strict keyword behavior.
47
+ Search across all indexed releases to find specific features, breaking changes, or patterns. The unified `search` tool (with `type: ["releases"]`) is hybrid (lexical + semantic) by default — natural-language queries like "auth refresh tokens" or "cold start improvements" work without exact keyword matches. Pass `mode: "lexical"` if you need strict keyword behavior.
48
48
 
49
49
  **Result shape:** every hit carries a `kind` discriminator:
50
50
  - `kind: "release"` — a normal release row, use as-is.
51
51
  - `kind: "changelog_chunk"` — a passage from a stored CHANGELOG.md file. The hit includes `sourceSlug`, `chunkOffset`, and `chunkLength`. Chain into `get_source_changelog({ slug: sourceSlug, offset: chunkOffset, limit: chunkLength * 3 })` to read the surrounding section before quoting it. Chunk hits often surface older or more granular notes than what's in the indexed release rows, so they're useful for "when did X first ship" questions.
52
52
 
53
- For org/product/source discovery (e.g. "find observability vendors with edge offerings"), use `search_registry` instead of `list_sources --query` — it's vector-backed and matches on description and category, not just slug substring.
53
+ For org/product/source discovery (e.g. "find observability vendors with edge offerings"), use `search` with `type: ["orgs", "catalog"]` instead of `list_catalog --query` — it's vector-backed and matches on description and category, not just slug substring.
54
54
 
55
55
  ### 6. Synthesize
56
56
 
@@ -13,13 +13,13 @@ Operations can be performed via CLI commands or typed MCP/agent tools. Use which
13
13
 
14
14
  | Operation | CLI | Typed tool |
15
15
  |-----------|-----|------------|
16
- | List sources | `releases list [slug] --json [--org <org>] [--query <text>] [--has-feed] [--category <c>] [--compact] [--limit <n>] [--page <n>]` | `list_sources` with query, organization, category, has_feed params |
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 add <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
  | Edit source | `releases admin source edit <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") |
19
19
  | Remove source | `releases admin source remove <slug> [--ignore --reason <reason>]` | `manage_source` action "remove" with identifier |
20
20
  | Fetch releases | `releases admin source fetch <slug> [--dry-run] [--max <n>]` | `manage_source` action "fetch" with identifier |
21
21
  | Get latest releases | `releases tail [slug] --json [--org <org>]` | `get_latest_releases` with source, organization, limit params |
22
- | Search releases | `releases search <query> --json` | `search_releases` with query, limit params |
22
+ | Search releases | `releases search <query> --json` | `search` with `type: ["releases"]`; `search_releases` is a deprecated alias |
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 |
25
25
  | Edit org | `releases admin org edit <slug> [--category <c>]` | `manage_org` action "edit" with identifier, category |
@@ -67,7 +67,7 @@ When in doubt: would a developer reading this name on its own (with the org alre
67
67
 
68
68
  ### Organization descriptions
69
69
 
70
- When creating an org, include a brief one-sentence product description. This grounds AI summaries for lesser-known products, and it's also the primary signal for the entity vector index — `search_registry` and the registry side of hybrid search match on description + category, not just name. A good description noticeably improves recall.
70
+ When creating an org, include a brief one-sentence product description. This grounds AI summaries for lesser-known products, and it's also the primary signal for the entity vector index — the unified `search` tool (and the registry side of hybrid search) matches on description + category, not just name. A good description noticeably improves recall.
71
71
 
72
72
  ### Embedding side effects
73
73
 
@@ -4,25 +4,23 @@ Reader commands are unauthenticated — no API key required. They talk to `api.r
4
4
 
5
5
  ## Search
6
6
 
7
- Hybrid lexical + semantic search across releases and CHANGELOG chunks.
7
+ Unified search across organizations, the catalog (products + standalone sources), and releases.
8
8
 
9
9
  ```bash
10
10
  releases search "authentication"
11
11
  releases search "vercel" --type releases --limit 5
12
+ releases search "react" --type catalog
12
13
  releases search "breaking change" --json
13
- releases search "retry" --org stripe
14
14
  ```
15
15
 
16
16
  Flags:
17
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.
18
+ - `--type <orgs|catalog|releases>` — narrow to one section (default: all three). `products` is accepted as a deprecated alias for `catalog`.
19
+ - `--limit <n>` — max results per section (default: 10).
20
+ - `--mode <lexical|semantic|hybrid>` — pick the release-retrieval strategy. Server default is hybrid; pass `lexical` for pure FTS ranking.
21
+ - `--json`machine output. Release hits include a `kind: "release" | "changelog_chunk"` discriminator. Catalog hits include `kind: "product" | "source"` so you can route a click to either a product page or a standalone source.
24
22
 
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.
23
+ Catalog hits also include the response field `catalog`. Older API deploys will still send the deprecated `products` alias instead the CLI reads either, but new code should consume `catalog`.
26
24
 
27
25
  ## Latest releases
28
26
 
@@ -19,9 +19,11 @@ Activate when the user:
19
19
 
20
20
  ## How to Look Up Releases
21
21
 
22
- ### Step 1: Find the Organization or Product
22
+ ### Step 1: Find the Organization or Catalog Entry
23
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.
24
+ Call `list_organizations` with the library/product name as the `query` parameter. For product-specific questions, browse the catalog (products + standalone sources) with `list_catalog` and fetch detail with `get_catalog_entry` — these replaced the older `list_products` / `get_product` / `list_sources` / `get_source` tools, which still exist as deprecated aliases.
25
+
26
+ The unified `search` tool is also available — it returns `orgs`, `catalog`, and `releases` sections in one call. Catalog hits carry a `kind: "product" | "source"` discriminator, so you can route a click to either a product page or a standalone source. (Older API responses send the same array under a deprecated `products` alias; new clients should consume `catalog`.)
25
27
 
26
28
  If the query returns no results, try variations:
27
29
  - The company name instead of the product name (e.g., "Vercel" instead of "Next.js")
@@ -31,9 +33,11 @@ If the query returns no results, try variations:
31
33
  ### Step 2: Choose the Right Tool
32
34
 
33
35
  - **"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
36
+ - **Specific feature or keyword across orgs + catalog + releases** → Use `search` (unified) with a descriptive query; narrow via `type: ["releases"]` etc.
37
+ - **Releases-only search** → Use `search_releases` (kept for back-compat) when you only want release rows
35
38
  - **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
39
+ - **Catalog deep-dive (product or standalone source)** → Use `get_catalog_entry` for metadata, tags, and linkage
40
+ - **Organization detail** → Use `get_organization`
37
41
  - **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
42
  - **Compare two products** → Use `compare_products` with an array of two product slugs
39
43
  - **Summarize recent activity** → Use `summarize_changes` with the product slug