@mcptoolshop/claude-synergy 0.0.0 → 1.0.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/products.yaml ADDED
@@ -0,0 +1,456 @@
1
+ # Claude Synergy — products configuration
2
+ #
3
+ # Single source of truth for product metadata + fetcher dispatch. Loaded by
4
+ # src/products-config.ts; consumed by src/fetch.ts (TARGETS) + src/ingest.ts
5
+ # (PRODUCT_META). If this file is missing, both modules fall back to their
6
+ # hardcoded defaults (with a one-time warn to stderr).
7
+ #
8
+ # Adding a new product: append an entry here. No code change required as long
9
+ # as the fetcher 'type' matches an existing strategy (gh-releases | rss |
10
+ # raw-changelog | html-scrape | catalog | playwright).
11
+ #
12
+ # ─── Schema reference ──────────────────────────────────────────────────────
13
+ #
14
+ # Each entry under `products:` has these fields:
15
+ #
16
+ # REQUIRED:
17
+ # name string Product slug. Used as directory name + DB key.
18
+ # Must match ^[a-z0-9][a-z0-9-]*$ (lowercase
19
+ # alphanumeric + hyphens, no leading hyphen).
20
+ # display_name string Human-readable name shown in CLI output.
21
+ # tier integer Source reliability tier (1-5):
22
+ # 1 = Structured API (GitHub Releases) — highest fidelity
23
+ # 2 = Raw markdown changelog (CHANGELOG.md / HISTORY.md)
24
+ # 3 = HTML / RSS scrape (blogs, feed URLs)
25
+ # 4 = Catalog snapshot (not versioned releases)
26
+ # 5 = Advisory / manual (X accounts, mirrors)
27
+ # source_url string Canonical URL for the data source.
28
+ # fetch_strategy string Fetcher type label. Should match fetch.type when
29
+ # a fetch: block is present.
30
+ #
31
+ # OPTIONAL:
32
+ # notes string Free-text notes (e.g., platform requirements).
33
+ # fetch object Fetcher configuration. Omit if the product's
34
+ # corpus is seeded manually (no automated fetch).
35
+ #
36
+ # fetch: sub-schema (varies by fetch.type):
37
+ #
38
+ # type: gh-releases
39
+ # repo string REQUIRED. "owner/repo" (e.g., "anthropics/anthropic-sdk-python").
40
+ # multi_package boolean Optional. Set true for monorepos with scoped
41
+ # tags like "@scope/pkg@1.0.0" or "sdk-v1.0.0".
42
+ #
43
+ # type: rss
44
+ # url string REQUIRED. RSS 2.0 feed URL.
45
+ # title_filter string Optional. Regex (case-insensitive) to filter
46
+ # entries by title (e.g., "cody|sourcegraph").
47
+ #
48
+ # type: raw-changelog
49
+ # url string REQUIRED. Raw file URL (e.g., GitHub raw URL).
50
+ # parser string REQUIRED. Parser name. Currently: "aider-history".
51
+ #
52
+ # type: html-scrape
53
+ # parser string REQUIRED. Parser name. One of:
54
+ # "github-copilot-blog", "vscode-updates".
55
+ #
56
+ # type: playwright
57
+ # (no additional fields — currently hardcoded to Windsurf's CSR changelog)
58
+ #
59
+ # type: catalog
60
+ # catalog_type string REQUIRED. One of: "official-mcp-registry", "smithery".
61
+ # max_entries integer Optional. Cap on entries to fetch (default: all).
62
+
63
+ products:
64
+
65
+ # ── Tier 2 / Anthropic CHANGELOG.md ───────────────────────────────────────
66
+ - name: claude-code
67
+ display_name: Claude Code
68
+ tier: 2
69
+ source_url: https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md
70
+ fetch_strategy: git-changelog
71
+ # No fetch: block — corpus seeded by initial study-swarm; CHANGELOG.md
72
+ # incremental sync deferred to a future phase.
73
+
74
+ # ── Tier 3 / HTML feeds ──────────────────────────────────────────────────
75
+ - name: claude-api
76
+ display_name: Claude API / Platform
77
+ tier: 3
78
+ source_url: https://platform.claude.com/docs/en/release-notes/overview
79
+ fetch_strategy: webfetch
80
+ # WebFetch-based; corpus seeded by initial swarm.
81
+
82
+ - name: anthropic-apps
83
+ display_name: Anthropic Apps (Design / Cowork / Chat / Mobile)
84
+ tier: 3
85
+ source_url: https://support.claude.com/en/articles/12138966-release-notes
86
+ fetch_strategy: webfetch
87
+
88
+ # ── Tier 1 / GitHub Releases — Anthropic SDKs ────────────────────────────
89
+ - name: claude-agent-sdk-python
90
+ display_name: Claude Agent SDK (Python)
91
+ tier: 1
92
+ source_url: https://github.com/anthropics/claude-agent-sdk-python
93
+ fetch_strategy: gh-releases
94
+ fetch:
95
+ type: gh-releases
96
+ repo: anthropics/claude-agent-sdk-python
97
+
98
+ - name: claude-agent-sdk-typescript
99
+ display_name: Claude Agent SDK (TypeScript)
100
+ tier: 1
101
+ source_url: https://github.com/anthropics/claude-agent-sdk-typescript
102
+ fetch_strategy: gh-releases
103
+ fetch:
104
+ type: gh-releases
105
+ repo: anthropics/claude-agent-sdk-typescript
106
+
107
+ - name: anthropic-cli
108
+ display_name: Anthropic CLI (ant)
109
+ tier: 1
110
+ source_url: https://github.com/anthropics/anthropic-cli
111
+ fetch_strategy: gh-releases
112
+ fetch:
113
+ type: gh-releases
114
+ repo: anthropics/anthropic-cli
115
+
116
+ - name: anthropic-sdk-python
117
+ display_name: Anthropic SDK (Python)
118
+ tier: 1
119
+ source_url: https://github.com/anthropics/anthropic-sdk-python
120
+ fetch_strategy: gh-releases
121
+ fetch:
122
+ type: gh-releases
123
+ repo: anthropics/anthropic-sdk-python
124
+
125
+ - name: anthropic-sdk-typescript
126
+ display_name: Anthropic SDK (TypeScript)
127
+ tier: 1
128
+ source_url: https://github.com/anthropics/anthropic-sdk-typescript
129
+ fetch_strategy: gh-releases
130
+ fetch:
131
+ type: gh-releases
132
+ repo: anthropics/anthropic-sdk-typescript
133
+ multi_package: true
134
+
135
+ - name: anthropic-sdk-go
136
+ display_name: Anthropic SDK (Go)
137
+ tier: 1
138
+ source_url: https://github.com/anthropics/anthropic-sdk-go
139
+ fetch_strategy: gh-releases
140
+ fetch:
141
+ type: gh-releases
142
+ repo: anthropics/anthropic-sdk-go
143
+
144
+ - name: anthropic-sdk-java
145
+ display_name: Anthropic SDK (Java)
146
+ tier: 1
147
+ source_url: https://github.com/anthropics/anthropic-sdk-java
148
+ fetch_strategy: gh-releases
149
+ fetch:
150
+ type: gh-releases
151
+ repo: anthropics/anthropic-sdk-java
152
+
153
+ - name: anthropic-sdk-ruby
154
+ display_name: Anthropic SDK (Ruby)
155
+ tier: 1
156
+ source_url: https://github.com/anthropics/anthropic-sdk-ruby
157
+ fetch_strategy: gh-releases
158
+ fetch:
159
+ type: gh-releases
160
+ repo: anthropics/anthropic-sdk-ruby
161
+
162
+ - name: anthropic-sdk-csharp
163
+ display_name: Anthropic SDK (C#)
164
+ tier: 1
165
+ source_url: https://github.com/anthropics/anthropic-sdk-csharp
166
+ fetch_strategy: gh-releases
167
+ fetch:
168
+ type: gh-releases
169
+ repo: anthropics/anthropic-sdk-csharp
170
+ multi_package: true
171
+
172
+ - name: anthropic-sdk-php
173
+ display_name: Anthropic SDK (PHP)
174
+ tier: 1
175
+ source_url: https://github.com/anthropics/anthropic-sdk-php
176
+ fetch_strategy: gh-releases
177
+ fetch:
178
+ type: gh-releases
179
+ repo: anthropics/anthropic-sdk-php
180
+
181
+ - name: claude-code-action
182
+ display_name: Claude Code Action (GitHub Action)
183
+ tier: 1
184
+ source_url: https://github.com/anthropics/claude-code-action
185
+ fetch_strategy: gh-releases
186
+ fetch:
187
+ type: gh-releases
188
+ repo: anthropics/claude-code-action
189
+
190
+ - name: claude-code-security-review
191
+ display_name: Claude Code Security Review (GitHub Action)
192
+ tier: 1
193
+ source_url: https://github.com/anthropics/claude-code-security-review
194
+ fetch_strategy: gh-releases
195
+ fetch:
196
+ type: gh-releases
197
+ repo: anthropics/claude-code-security-review
198
+
199
+ # ── Tier 4 / Catalog repos (Anthropic) ───────────────────────────────────
200
+ - name: skills
201
+ display_name: Anthropic Skills Catalog
202
+ tier: 4
203
+ source_url: https://github.com/anthropics/skills
204
+ fetch_strategy: git-snapshot
205
+
206
+ - name: plugins-official
207
+ display_name: Claude Plugins (Official)
208
+ tier: 4
209
+ source_url: https://github.com/anthropics/claude-plugins-official
210
+ fetch_strategy: git-snapshot
211
+
212
+ - name: plugins-community
213
+ display_name: Claude Plugins (Community)
214
+ tier: 4
215
+ source_url: https://github.com/anthropics/claude-plugins-community
216
+ fetch_strategy: git-snapshot
217
+
218
+ - name: plugins-knowledge-work
219
+ display_name: Knowledge Work Plugins (Cowork)
220
+ tier: 4
221
+ source_url: https://github.com/anthropics/knowledge-work-plugins
222
+ fetch_strategy: git-snapshot
223
+
224
+ # ── Tier 1 / MCP ecosystem SDKs ──────────────────────────────────────────
225
+ - name: mcp-python-sdk
226
+ display_name: MCP Python SDK
227
+ tier: 1
228
+ source_url: https://github.com/modelcontextprotocol/python-sdk
229
+ fetch_strategy: gh-releases
230
+ fetch:
231
+ type: gh-releases
232
+ repo: modelcontextprotocol/python-sdk
233
+
234
+ - name: mcp-typescript-sdk
235
+ display_name: MCP TypeScript SDK
236
+ tier: 1
237
+ source_url: https://github.com/modelcontextprotocol/typescript-sdk
238
+ fetch_strategy: gh-releases
239
+ fetch:
240
+ type: gh-releases
241
+ repo: modelcontextprotocol/typescript-sdk
242
+ multi_package: true
243
+
244
+ - name: mcp-go-sdk
245
+ display_name: MCP Go SDK
246
+ tier: 1
247
+ source_url: https://github.com/modelcontextprotocol/go-sdk
248
+ fetch_strategy: gh-releases
249
+ fetch:
250
+ type: gh-releases
251
+ repo: modelcontextprotocol/go-sdk
252
+
253
+ - name: mcp-java-sdk
254
+ display_name: MCP Java SDK
255
+ tier: 1
256
+ source_url: https://github.com/modelcontextprotocol/java-sdk
257
+ fetch_strategy: gh-releases
258
+ fetch:
259
+ type: gh-releases
260
+ repo: modelcontextprotocol/java-sdk
261
+
262
+ - name: mcp-csharp-sdk
263
+ display_name: MCP C# SDK
264
+ tier: 1
265
+ source_url: https://github.com/modelcontextprotocol/csharp-sdk
266
+ fetch_strategy: gh-releases
267
+ fetch:
268
+ type: gh-releases
269
+ repo: modelcontextprotocol/csharp-sdk
270
+
271
+ - name: mcp-kotlin-sdk
272
+ display_name: MCP Kotlin SDK
273
+ tier: 1
274
+ source_url: https://github.com/modelcontextprotocol/kotlin-sdk
275
+ fetch_strategy: gh-releases
276
+ fetch:
277
+ type: gh-releases
278
+ repo: modelcontextprotocol/kotlin-sdk
279
+
280
+ - name: mcp-ruby-sdk
281
+ display_name: MCP Ruby SDK
282
+ tier: 1
283
+ source_url: https://github.com/modelcontextprotocol/ruby-sdk
284
+ fetch_strategy: gh-releases
285
+ fetch:
286
+ type: gh-releases
287
+ repo: modelcontextprotocol/ruby-sdk
288
+
289
+ - name: mcp-swift-sdk
290
+ display_name: MCP Swift SDK
291
+ tier: 1
292
+ source_url: https://github.com/modelcontextprotocol/swift-sdk
293
+ fetch_strategy: gh-releases
294
+ fetch:
295
+ type: gh-releases
296
+ repo: modelcontextprotocol/swift-sdk
297
+
298
+ - name: mcp-rust-sdk
299
+ display_name: MCP Rust SDK
300
+ tier: 1
301
+ source_url: https://github.com/modelcontextprotocol/rust-sdk
302
+ fetch_strategy: gh-releases
303
+ fetch:
304
+ type: gh-releases
305
+ repo: modelcontextprotocol/rust-sdk
306
+
307
+ - name: mcp-php-sdk
308
+ display_name: MCP PHP SDK
309
+ tier: 1
310
+ source_url: https://github.com/modelcontextprotocol/php-sdk
311
+ fetch_strategy: gh-releases
312
+ fetch:
313
+ type: gh-releases
314
+ repo: modelcontextprotocol/php-sdk
315
+
316
+ - name: mcp-spec
317
+ display_name: MCP Specification
318
+ tier: 1
319
+ source_url: https://github.com/modelcontextprotocol/modelcontextprotocol
320
+ fetch_strategy: gh-releases
321
+ fetch:
322
+ type: gh-releases
323
+ repo: modelcontextprotocol/modelcontextprotocol
324
+
325
+ - name: mcp-inspector
326
+ display_name: MCP Inspector
327
+ tier: 1
328
+ source_url: https://github.com/modelcontextprotocol/inspector
329
+ fetch_strategy: gh-releases
330
+ fetch:
331
+ type: gh-releases
332
+ repo: modelcontextprotocol/inspector
333
+
334
+ - name: mcp-registry
335
+ display_name: MCP Registry
336
+ tier: 1
337
+ source_url: https://github.com/modelcontextprotocol/registry
338
+ fetch_strategy: gh-releases
339
+ fetch:
340
+ type: gh-releases
341
+ repo: modelcontextprotocol/registry
342
+
343
+ - name: mcp-mcpb
344
+ display_name: MCP Bundle (mcpb)
345
+ tier: 1
346
+ source_url: https://github.com/modelcontextprotocol/mcpb
347
+ fetch_strategy: gh-releases
348
+ fetch:
349
+ type: gh-releases
350
+ repo: modelcontextprotocol/mcpb
351
+
352
+ - name: mcp-conformance
353
+ display_name: MCP Conformance
354
+ tier: 1
355
+ source_url: https://github.com/modelcontextprotocol/conformance
356
+ fetch_strategy: gh-releases
357
+ fetch:
358
+ type: gh-releases
359
+ repo: modelcontextprotocol/conformance
360
+
361
+ # ── Tier 4a / Non-Anthropic AI dev tools ─────────────────────────────────
362
+ - name: continue-dev
363
+ display_name: Continue.dev
364
+ tier: 1
365
+ source_url: https://github.com/continuedev/continue
366
+ fetch_strategy: gh-releases
367
+ fetch:
368
+ type: gh-releases
369
+ repo: continuedev/continue
370
+ multi_package: true
371
+
372
+ - name: continue-cli
373
+ display_name: Continue.dev CLI
374
+ tier: 1
375
+ source_url: https://github.com/continuedev/continue-cli
376
+ fetch_strategy: gh-releases
377
+ fetch:
378
+ type: gh-releases
379
+ repo: continuedev/continue-cli
380
+
381
+ - name: cursor
382
+ display_name: Cursor
383
+ tier: 3
384
+ source_url: https://cursor.com/changelog/rss.xml
385
+ fetch_strategy: rss
386
+ fetch:
387
+ type: rss
388
+ url: https://cursor.com/changelog/rss.xml
389
+
390
+ - name: cody-enterprise
391
+ display_name: Sourcegraph Cody Enterprise
392
+ tier: 3
393
+ source_url: https://sourcegraph.com/changelog/featured.rss
394
+ fetch_strategy: rss
395
+ fetch:
396
+ type: rss
397
+ url: https://sourcegraph.com/changelog/featured.rss
398
+ title_filter: 'cody|sourcegraph'
399
+
400
+ - name: aider
401
+ display_name: Aider
402
+ tier: 2
403
+ source_url: https://raw.githubusercontent.com/Aider-AI/aider/main/HISTORY.md
404
+ fetch_strategy: raw-changelog
405
+ fetch:
406
+ type: raw-changelog
407
+ url: https://raw.githubusercontent.com/Aider-AI/aider/main/HISTORY.md
408
+ parser: aider-history
409
+
410
+ # ── Tier 4b / HTML-scraped (Tier 4b) ─────────────────────────────────────
411
+ - name: github-copilot
412
+ display_name: GitHub Copilot
413
+ tier: 3
414
+ source_url: https://github.blog/changelog/label/copilot/
415
+ fetch_strategy: html-scrape
416
+ fetch:
417
+ type: html-scrape
418
+ parser: github-copilot-blog
419
+
420
+ - name: vscode-copilot-chat
421
+ display_name: VS Code Copilot Chat (editor)
422
+ tier: 3
423
+ source_url: https://code.visualstudio.com/updates/
424
+ fetch_strategy: html-scrape
425
+ fetch:
426
+ type: html-scrape
427
+ parser: vscode-updates
428
+
429
+ - name: windsurf
430
+ display_name: Windsurf (Cognition)
431
+ tier: 3
432
+ source_url: https://windsurf.com/changelog
433
+ fetch_strategy: playwright
434
+ fetch:
435
+ type: playwright
436
+ notes: "Client-rendered Next.js — requires Playwright (pnpm add -D playwright && npx playwright install chromium)"
437
+
438
+ # ── Tier 4 / MCP registry catalogs ───────────────────────────────────────
439
+ - name: mcp-registry-official
440
+ display_name: Official MCP Registry
441
+ tier: 4
442
+ source_url: https://registry.modelcontextprotocol.io
443
+ fetch_strategy: catalog
444
+ fetch:
445
+ type: catalog
446
+ catalog_type: official-mcp-registry
447
+
448
+ - name: mcp-registry-smithery
449
+ display_name: Smithery MCP Registry
450
+ tier: 4
451
+ source_url: https://registry.smithery.ai
452
+ fetch_strategy: catalog
453
+ fetch:
454
+ type: catalog
455
+ catalog_type: smithery
456
+ max_entries: 200
package/schema-vec.sql ADDED
@@ -0,0 +1,43 @@
1
+ -- Tier 2b — semantic layer (sqlite-vec + FTS5 over contextualized chunks)
2
+ -- Run after schema.sql. Tables here are independent of Tier 2a's changes_fts,
3
+ -- so naive FTS still works on the raw bullets while hybrid uses the contextualized layer.
4
+ --
5
+ -- Dimension: 768 (nomic-embed-text native; Voyage 3 truncatable via Matryoshka)
6
+ -- One row per change. Reranking deferred.
7
+
8
+ CREATE TABLE IF NOT EXISTS chunks (
9
+ id INTEGER PRIMARY KEY,
10
+ change_id INTEGER NOT NULL UNIQUE REFERENCES changes(id) ON DELETE CASCADE,
11
+ product TEXT NOT NULL,
12
+ release_version TEXT NOT NULL,
13
+ released_at DATE,
14
+ context_prefix TEXT NOT NULL,
15
+ original_text TEXT NOT NULL,
16
+ contextualized TEXT NOT NULL,
17
+ context_provider TEXT NOT NULL,
18
+ embedding_model TEXT NOT NULL,
19
+ embedded_at DATETIME NOT NULL
20
+ );
21
+
22
+ CREATE INDEX IF NOT EXISTS idx_chunks_product ON chunks(product, released_at);
23
+ CREATE INDEX IF NOT EXISTS idx_chunks_change ON chunks(change_id);
24
+
25
+ -- Vector storage (sqlite-vec extension required)
26
+ CREATE VIRTUAL TABLE IF NOT EXISTS chunks_vec USING vec0(
27
+ embedding FLOAT[768]
28
+ );
29
+
30
+ -- FTS5 over the contextualized text (separate from changes_fts which indexes raw bullets)
31
+ CREATE VIRTUAL TABLE IF NOT EXISTS chunks_fts USING fts5(
32
+ contextualized,
33
+ content='chunks',
34
+ content_rowid='id'
35
+ );
36
+
37
+ CREATE TRIGGER IF NOT EXISTS chunks_fts_insert AFTER INSERT ON chunks BEGIN
38
+ INSERT INTO chunks_fts(rowid, contextualized) VALUES (new.id, new.contextualized);
39
+ END;
40
+
41
+ CREATE TRIGGER IF NOT EXISTS chunks_fts_delete AFTER DELETE ON chunks BEGIN
42
+ INSERT INTO chunks_fts(chunks_fts, rowid, contextualized) VALUES('delete', old.id, old.contextualized);
43
+ END;
package/schema.sql ADDED
@@ -0,0 +1,155 @@
1
+ -- claude-synergy schema — local mirror of every Anthropic product's release notes
2
+ -- Forward-looking design; not yet implemented. See README.md for tier roadmap.
3
+ -- Run with: sqlite3 claude-synergy.db < schema.sql
4
+
5
+ -- ============================================================================
6
+ -- PRODUCTS
7
+ -- ============================================================================
8
+ -- One row per surface (Claude Code, Claude API, Claude Agent SDK Python, etc.)
9
+
10
+ CREATE TABLE products (
11
+ name TEXT PRIMARY KEY, -- "claude-code" | "claude-api" | "claude-agent-sdk-python" | "anthropic-apps" | "skills" | ...
12
+ display_name TEXT NOT NULL, -- "Claude Code", "Claude API", "Claude Agent SDK (Python)"
13
+ source_tier INTEGER NOT NULL, -- 1=GH Releases, 2=GH CHANGELOG.md, 3=HTML, 4=Catalog repo, 5=Third-party
14
+ source_url TEXT NOT NULL,
15
+ fetch_strategy TEXT NOT NULL, -- "gh-releases" | "git-changelog" | "webfetch" | "git-snapshot"
16
+ notes TEXT
17
+ );
18
+
19
+ -- ============================================================================
20
+ -- RELEASES (per product)
21
+ -- ============================================================================
22
+
23
+ CREATE TABLE releases (
24
+ product TEXT NOT NULL REFERENCES products(name) ON DELETE CASCADE,
25
+ version TEXT NOT NULL, -- "2.1.147" | "v0.2.82" | "2026-05-19" (date when no version)
26
+ released_at DATE,
27
+ notes_path TEXT NOT NULL, -- relative path under repo, e.g. "products/claude-code/releases/2.1.147.md"
28
+ fetched_at DATETIME NOT NULL,
29
+ source_url TEXT NOT NULL,
30
+ bundle_size_kb REAL, -- delta vs prior, when available
31
+ notes_hash TEXT, -- sha256 of normalized notes body for change detection
32
+ PRIMARY KEY (product, version)
33
+ );
34
+
35
+ CREATE INDEX idx_releases_date ON releases(released_at);
36
+
37
+ -- ============================================================================
38
+ -- CHANGES (per release)
39
+ -- ============================================================================
40
+
41
+ CREATE TABLE changes (
42
+ id INTEGER PRIMARY KEY,
43
+ product TEXT NOT NULL,
44
+ version TEXT NOT NULL,
45
+ ordinal INTEGER NOT NULL, -- order within release (1-based)
46
+ kind TEXT NOT NULL, -- "added" | "fixed" | "renamed" | "deprecated" | "breaking" | "improved" | "removed" | "internal"
47
+ text TEXT NOT NULL, -- the original bullet, verbatim
48
+ FOREIGN KEY (product, version) REFERENCES releases(product, version) ON DELETE CASCADE,
49
+ UNIQUE (product, version, ordinal)
50
+ );
51
+
52
+ CREATE INDEX idx_changes_pv ON changes(product, version);
53
+ CREATE INDEX idx_changes_kind ON changes(kind);
54
+
55
+ -- ============================================================================
56
+ -- ENTITIES (extracted from change text)
57
+ -- ============================================================================
58
+ -- One row per detected entity per change. Lets us query "when was CLAUDE_CODE_WORKFLOWS introduced?"
59
+
60
+ CREATE TABLE entities (
61
+ id INTEGER PRIMARY KEY,
62
+ change_id INTEGER NOT NULL REFERENCES changes(id) ON DELETE CASCADE,
63
+ entity_type TEXT NOT NULL, -- "env_var" | "slash_command" | "cli_option" | "tool" | "hook_event" | "setting_key" | "config_key" | "model_id" | "beta_header" | "api_endpoint"
64
+ entity_value TEXT NOT NULL -- "CLAUDE_CODE_WORKFLOWS" | "/code-review" | "--config" | "Workflow" | "claude-opus-4-7" | "fast-mode-2026-02-01"
65
+ );
66
+
67
+ CREATE INDEX idx_entities_value ON entities(entity_type, entity_value);
68
+ CREATE INDEX idx_entities_change ON entities(change_id);
69
+
70
+ -- ============================================================================
71
+ -- FTS5 over change text
72
+ -- ============================================================================
73
+
74
+ CREATE VIRTUAL TABLE changes_fts USING fts5(text, content='changes', content_rowid='id');
75
+ CREATE TRIGGER changes_fts_insert AFTER INSERT ON changes BEGIN
76
+ INSERT INTO changes_fts(rowid, text) VALUES (new.id, new.text);
77
+ END;
78
+ CREATE TRIGGER changes_fts_delete AFTER DELETE ON changes BEGIN
79
+ INSERT INTO changes_fts(changes_fts, rowid, text) VALUES('delete', old.id, old.text);
80
+ END;
81
+
82
+ -- ============================================================================
83
+ -- MARKERS — "what have I seen?" tracking, per product
84
+ -- ============================================================================
85
+
86
+ CREATE TABLE markers (
87
+ product TEXT NOT NULL REFERENCES products(name) ON DELETE CASCADE,
88
+ name TEXT NOT NULL, -- "last_seen" | "last_synced"
89
+ version TEXT,
90
+ updated_at DATETIME NOT NULL,
91
+ PRIMARY KEY (product, name)
92
+ );
93
+
94
+ -- ============================================================================
95
+ -- RELEVANCE — manually curated "this affects workflow X"
96
+ -- ============================================================================
97
+
98
+ CREATE TABLE relevance (
99
+ id INTEGER PRIMARY KEY,
100
+ change_id INTEGER NOT NULL REFERENCES changes(id) ON DELETE CASCADE,
101
+ tag TEXT NOT NULL, -- "swarm-control-plane" | "memory-gate-hook" | "windows" | "ratchet-invalidates" | "urgent"
102
+ note TEXT,
103
+ added_at DATETIME NOT NULL
104
+ );
105
+
106
+ CREATE INDEX idx_relevance_change ON relevance(change_id);
107
+ CREATE INDEX idx_relevance_tag ON relevance(tag);
108
+
109
+ -- ============================================================================
110
+ -- SYNERGIES — curated cross-product workflows
111
+ -- ============================================================================
112
+ -- The Synergy layer is what makes this a product instead of a mirror.
113
+ -- Source: synergies/*.md files (markdown is the source of truth; parser populates these tables)
114
+
115
+ CREATE TABLE synergies (
116
+ id INTEGER PRIMARY KEY,
117
+ name TEXT NOT NULL UNIQUE, -- "skill-portability" | "mcp-server-portability" | etc.
118
+ title TEXT NOT NULL,
119
+ trigger TEXT NOT NULL, -- "when this workflow is the right answer"
120
+ status TEXT NOT NULL, -- "confirmed" | "speculative" | "deprecated"
121
+ last_validated DATE NOT NULL,
122
+ notes_path TEXT NOT NULL -- "synergies/01-skill-portability.md"
123
+ );
124
+
125
+ CREATE TABLE synergy_products (
126
+ synergy_id INTEGER NOT NULL REFERENCES synergies(id) ON DELETE CASCADE,
127
+ product TEXT NOT NULL REFERENCES products(name),
128
+ PRIMARY KEY (synergy_id, product)
129
+ );
130
+
131
+ CREATE TABLE synergy_steps (
132
+ synergy_id INTEGER NOT NULL REFERENCES synergies(id) ON DELETE CASCADE,
133
+ ordinal INTEGER NOT NULL,
134
+ text TEXT NOT NULL,
135
+ PRIMARY KEY (synergy_id, ordinal)
136
+ );
137
+
138
+ CREATE TABLE synergy_evidence (
139
+ id INTEGER PRIMARY KEY,
140
+ synergy_id INTEGER NOT NULL REFERENCES synergies(id) ON DELETE CASCADE,
141
+ source_url TEXT NOT NULL,
142
+ quote TEXT,
143
+ source_kind TEXT -- "changelog" | "docs" | "release-notes" | "blog" | "github-readme"
144
+ );
145
+
146
+ -- Link synergies to specific changelog entries that enable them
147
+ -- (e.g. synergy 07 cites Claude Code 2.1.147's /code-review --comment change)
148
+ CREATE TABLE synergy_change_refs (
149
+ synergy_id INTEGER NOT NULL REFERENCES synergies(id) ON DELETE CASCADE,
150
+ change_id INTEGER NOT NULL REFERENCES changes(id) ON DELETE CASCADE,
151
+ PRIMARY KEY (synergy_id, change_id)
152
+ );
153
+
154
+ CREATE INDEX idx_synergy_products ON synergy_products(product);
155
+ CREATE INDEX idx_synergy_change_refs_change ON synergy_change_refs(change_id);
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: skill-portability
3
+ title: Develop skills in Claude Code, deploy via Claude API
4
+ products: [claude-code, claude-api, claude-cowork]
5
+ trigger: User has built a working skill in `~/.claude/skills/<name>/` and wants to use it in a production agentic workload
6
+ status: confirmed
7
+ last_validated: 2026-05-21
8
+ ---
9
+
10
+ # Develop skills in Claude Code, deploy via Claude API
11
+
12
+ **Why it works:** Skills are folders of instructions/scripts/resources with the same format across every Anthropic surface. Building locally in Code is the lowest-friction iteration path; the same folder graduates unchanged to Claude API and Cowork.
13
+
14
+ **Workflow:**
15
+
16
+ 1. Create `~/.claude/skills/<name>/SKILL.md` with `name`, `description`, optional `tools` frontmatter
17
+ 2. Iterate in Code — edit the file, invoke via `Skill` tool or natural context match, repeat
18
+ 3. When stable, organize as a directory with SKILL.md + supporting scripts/resources
19
+ 4. **Graduate to API:** `POST /v1/skills` with the bundle (requires `skills-2025-10-02` beta header). Returns a skill ID
20
+ 5. Reference the skill ID in Messages API requests — Claude loads it on demand
21
+ 6. **(Optional) Publish in Cowork:** submit to [claude-plugins-official](https://github.com/anthropics/claude-plugins-official) or [knowledge-work-plugins](https://github.com/anthropics/knowledge-work-plugins) for team distribution
22
+
23
+ **Evidence:**
24
+
25
+ - [Claude API release notes 2025-10-16](https://platform.claude.com/docs/en/release-notes/overview#october-16-2025): "Skills are organized folders of instructions, scripts, and resources that Claude loads dynamically to perform specialized tasks. Anthropic-managed Skills + Custom Skills via /v1/skills"
26
+ - [anthropics/skills](https://github.com/anthropics/skills) — official catalog (pptx, xlsx, docx, pdf)
27
+ - The local-format-and-API-format identity is the load-bearing fact; if Anthropic ever forks them, this synergy breaks
28
+
29
+ **Caveats:**
30
+
31
+ - Skills require the `code execution` tool enabled in the API request
32
+ - Cost: every API request loading a skill incurs token cost for its instructions — keep them lean
33
+ - Cowork plugin manifests may have additional fields beyond raw Code skills; check the repo before publishing