@mcptoolshop/claude-synergy 0.0.0 → 1.0.1

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/README.md CHANGED
@@ -1,9 +1,342 @@
1
- # @mcptoolshop/claude-synergy
1
+ <p align="center">
2
+ <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
2
4
 
3
- Placeholder release. The real package is being finalized.
5
+ <p align="center"><img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/claude-synergy/readme.png" alt="Claude Synergy" width="400"></p>
4
6
 
5
- Source + roadmap: <https://github.com/mcp-tool-shop-org/claude-synergy>
7
+ <p align="center">
8
+ <a href="https://github.com/mcp-tool-shop-org/claude-synergy/actions/workflows/test.yml"><img src="https://github.com/mcp-tool-shop-org/claude-synergy/actions/workflows/test.yml/badge.svg" alt="tests"></a>
9
+ <a href="https://www.npmjs.com/package/@mcptoolshop/claude-synergy"><img src="https://img.shields.io/npm/v/@mcptoolshop/claude-synergy" alt="npm"></a>
10
+ <a href="#license"><img src="https://img.shields.io/badge/license-MIT-blue" alt="license"></a>
11
+ <a href="https://mcp-tool-shop-org.github.io/claude-synergy/"><img src="https://img.shields.io/badge/landing%20page-live-brightgreen" alt="landing page"></a>
12
+ </p>
6
13
 
7
14
  A local, queryable mirror of every Anthropic + adjacent AI dev tool changelog — plus a curated **Synergy** layer describing cross-product workflows — so the LLM agent inside the harness knows what the harness can do.
8
15
 
9
- The first real release will publish via npm Trusted Publishing (OIDC) from GitHub Actions, with provenance.
16
+ ```bash
17
+ $ hk query redact
18
+ 2026-05-11 anthropic-cli@1.7.1 [changed] redact api-key headers in debug logs
19
+ 2026-05-11 anthropic-sdk-java@2.31.0 [changed] redact api-key headers in debug logs
20
+ 2026-05-11 anthropic-sdk-go@1.42.0 [changed] redact api-key headers in debug logs
21
+ 2026-05-07 anthropic-sdk-typescript@0.95.1 [changed] redact api-key headers in debug logs
22
+
23
+ 4 results
24
+ ```
25
+
26
+
27
+ **A single FTS query surfaces a coordinated cross-SDK security fix that no individual changelog flagged as a CVE.** That's the killer demo: patterns emerge when every changelog is side-by-side.
28
+
29
+ Repo: [github.com/mcp-tool-shop-org/claude-synergy](https://github.com/mcp-tool-shop-org/claude-synergy)
30
+
31
+ ---
32
+
33
+ ## The problem
34
+
35
+ Claude Code CLI ships ~daily. Claude API ships almost as often. SDKs ship per-CLI-release. Claude Design, Cowork, Chat, and Mobile feed through the unified Help Center. The MCP ecosystem ships ~200-300 new servers per week. Plus there are 7 major AI dev tool surfaces (Cursor, Aider, Continue, Copilot, Cody, Windsurf) all shipping their own changelogs at their own cadences.
36
+
37
+ The LLM agent inside any one of these has a frozen training cutoff. The gap widens every day. Features ship that the agent doesn't know exist. Bugs get fixed that the agent still works around. Env vars and flags get added that the agent never suggests. Cross-product workflows that compose multiple surfaces remain undiscovered.
38
+
39
+ **This repo closes the gap.** The Synergy section makes it a product instead of a mirror.
40
+
41
+ ---
42
+
43
+ ## What's here
44
+
45
+ ```
46
+ claude-synergy/
47
+ ├── products/ # 44 product directories (1,186 release files)
48
+ │ ├── claude-code/ # Anthropic CLI — 117 releases
49
+ │ ├── claude-agent-sdk-{python,typescript}/ # Agent SDKs
50
+ │ ├── anthropic-sdk-{python,typescript,go,java,csharp,ruby,php}/ # 7 language SDKs
51
+ │ ├── claude-api/ # Platform release notes
52
+ │ ├── anthropic-apps/ # Design / Cowork / Chat / Mobile (Help Center feed)
53
+ │ ├── claude-code-action/ # GitHub Action
54
+ │ ├── anthropic-cli/ # `ant` CLI
55
+ │ ├── mcp-{python,typescript,go,java,csharp,kotlin,ruby,swift,rust,php}-sdk/
56
+ │ ├── mcp-{spec,inspector,registry,mcpb,conformance}/
57
+ │ ├── cursor/ # RSS feed
58
+ │ ├── aider/ # raw HISTORY.md
59
+ │ ├── continue-{dev,cli}/ # GH releases
60
+ │ ├── cody-enterprise/ # filtered Sourcegraph RSS
61
+ │ ├── github-copilot/ # HTML scrape (github.blog)
62
+ │ ├── vscode-copilot-chat/ # HTML scrape (code.visualstudio.com)
63
+ │ ├── windsurf/ # Playwright fetcher (CSR-only changelog)
64
+ │ ├── skills/ # Anthropic Skills catalog
65
+ │ └── plugins-{official,community,knowledge-work}/ # Plugin marketplaces
66
+ ├── synergies/ # 12 curated cross-product workflows
67
+ ├── src/ # TypeScript implementation
68
+ ├── test/ # 382 tests (unit, integration, regression, smoke)
69
+ ├── data/claude-synergy.db # SQLite database (created by `hk init`)
70
+ ├── schema.sql # Tier 2a tables (products, releases, changes, entities, FTS5, …)
71
+ ├── schema-vec.sql # Tier 2b tables (chunks, chunks_vec, chunks_fts)
72
+ ├── SOURCES.md # 5-tier source landscape with fetch strategies
73
+ └── URGENT_FINDINGS.md # 23 actionable items surfaced from the corpus
74
+ ```
75
+
76
+ **Live numbers (as of v1.0.0):** 44 products / 1,186 release files / 6,042 changes / 1,225 entities / 12 synergies / 382 tests.
77
+
78
+ ---
79
+
80
+ ## Status — all tiers shipped
81
+
82
+ | Tier | Status | What's there |
83
+ |------|--------|--------------|
84
+ | **1 — bootstrap (markdown corpus)** | ✅ shipped | Study-swarm seeded 706 release files Jan→May 2026; extended to 1,186 by Tier 4d |
85
+ | **2a — SQLite + FTS5 + CLI** | ✅ shipped | `hk` CLI; 15 subcommands; sub-300ms ingest |
86
+ | **2b — sqlite-vec + Contextual Retrieval** | ✅ shipped | Provider-pluggable (none/structured/ollama/claude-haiku context × ollama/voyage embed × none/ollama-judge/voyage/cohere rerank) |
87
+ | **3 — sync + MCP server** | ✅ shipped | `hk fetch / sync / seed-markers`; `claude-synergy-mcp` exposes 8 tools over stdio |
88
+ | **4a — extend beyond Anthropic** | ✅ shipped | +15 MCP SDKs, Cursor (RSS), Aider (HISTORY.md), Continue.dev, Cody Enterprise (RSS filtered) |
89
+ | **4b — HTML-scrape fetcher** | ✅ shipped | GitHub Copilot + VS Code Chat (Windsurf needs Playwright — v0.7) |
90
+ | **4c — turndown HTML→markdown ingest** | ✅ shipped | HTML bodies (Copilot/VS Code/Cursor) now produce per-bullet rows for FTS5 + entity extraction |
91
+ | **4d — Playwright + MCP registry + YAML config** | ✅ shipped | Windsurf via Playwright; Smithery + official MCP Registry as Tier-4 catalogs; products consolidated into `products.yaml` |
92
+
93
+ Roadmap for v0.8+: tracked in [URGENT_FINDINGS.md](URGENT_FINDINGS.md) and issues.
94
+
95
+ ---
96
+
97
+ ## Security & data model
98
+
99
+ This tool runs locally. **Data touched:** a derived SQLite database and markdown release files — all re-creatable. **Network:** outbound HTTPS only when you run `hk fetch`/`hk sync` (GitHub API, RSS feeds, changelog pages, MCP registries) or `hk embed` with a remote provider (Voyage, Cohere). **Secrets:** reads `GITHUB_TOKEN`, `VOYAGE_API_KEY`, `COHERE_API_KEY`, `ANTHROPIC_API_KEY` from env vars — never logged, never stored to disk. **No telemetry.** See [SECURITY.md](SECURITY.md) for reporting policy.
100
+
101
+ ---
102
+
103
+ ## Install
104
+
105
+ ```bash
106
+ git clone https://github.com/mcp-tool-shop-org/claude-synergy
107
+ cd claude-synergy
108
+ pnpm install
109
+ pnpm build # produces dist/cli.js + dist/mcp-server.js
110
+ npm link # makes `hk` and `claude-synergy-mcp` available globally
111
+ ```
112
+
113
+ For dev without building, use `npx tsx src/cli.ts ...` directly. **pnpm 10 quirk:** `pnpm dev` swallows CLI flags after `--`; use `npx tsx` for development.
114
+
115
+ ---
116
+
117
+ ## CLI surface — 15 commands
118
+
119
+ ```
120
+ # DB lifecycle
121
+ hk init # create DB with schema
122
+ hk ingest # parse products/*/releases/*.md → DB (idempotent)
123
+ hk embed # generate chunks + embeddings (sqlite-vec)
124
+ hk fetch [--product X] # incremental pull from sources
125
+ hk sync # combined fetch → ingest → embed (cron-friendly)
126
+ hk seed-markers # one-time setup after initial corpus
127
+
128
+ # Search
129
+ hk query "managed agents" # FTS5 keyword search
130
+ hk hybrid "credential exfiltration" # FTS5 + vec hybrid via RRF (+ optional --rerank)
131
+
132
+ # Entity lookups
133
+ hk env-var CLAUDE_CODE_WORKFLOWS # when introduced + history
134
+ hk command code-review # slash command + rename history
135
+ hk model claude-opus-4-7 # model launch + mentions across products
136
+ hk cve CVE-2025-66414 # CVE references in corpus
137
+
138
+ # Browsing
139
+ hk latest [--product X] [--limit N] # recent releases
140
+ hk products # list all 44 with counts
141
+ hk top env_var # most-mentioned by entity type
142
+ # (env_var, slash_command, cli_option,
143
+ # model_id, beta_header, cve, ghsa,
144
+ # hook_event, setting_key)
145
+ ```
146
+
147
+ ---
148
+
149
+ ## Example workflows
150
+
151
+ **Find when a Claude Code env var was introduced:**
152
+ ```
153
+ $ hk env-var CLAUDE_CODE_WORKFLOWS
154
+ env var CLAUDE_CODE_WORKFLOWS — 1 mention:
155
+
156
+ 2026-05-21 claude-code@2.1.147 [added]
157
+ Added the `Workflow` tool for deterministic multi-agent orchestration.
158
+ It is off by default — set `CLAUDE_CODE_WORKFLOWS=1` to enable
159
+ ```
160
+
161
+ **Track a cross-SDK breaking change:**
162
+ ```
163
+ $ hk query TodoWrite --limit 5
164
+ 2026-05-15 claude-agent-sdk-python@0.2.82 [breaking] Headless and SDK sessions now use Task tools...
165
+ 2026-05-14 claude-agent-sdk-typescript@0.3.142 [breaking] Headless and SDK sessions now use Task tools...
166
+ 2026-05-08 claude-agent-sdk-typescript@0.2.136 [deprecated] Deprecated TodoWrite tool...
167
+ ```
168
+
169
+ **Plan a model migration:**
170
+ ```
171
+ $ hk model claude-opus-4-20250514
172
+ model id claude-opus-4-20250514 — 2 mentions:
173
+
174
+ 2026-04-14 anthropic-sdk-python@0.94.0 [deprecated]
175
+ Deprecation of the Claude Sonnet 4 model and the Claude Opus 4 model,
176
+ with retirement on the Claude API scheduled for June 15, 2026...
177
+ ```
178
+
179
+ **Semantic search across the whole corpus:**
180
+ ```
181
+ $ hk hybrid "credential exfiltration" --limit 3
182
+ 2026-03-25 claude-code@2.1.83 [added] vec#5 rrf=0.0154
183
+ Added `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB=1` to strip Anthropic and
184
+ cloud provider credentials from subprocess environments...
185
+ ```
186
+
187
+ The query never says "env_scrub" — vec surfaces it by semantic similarity. Pure FTS5 misses it entirely.
188
+
189
+ ---
190
+
191
+ ## MCP server — give your agents access to this corpus
192
+
193
+ `claude-synergy-mcp` exposes 8 tools over stdio. Wire into Claude Code (or any MCP host) via `~/.claude/.mcp.json` or your project's `.mcp.json`:
194
+
195
+ ```json
196
+ {
197
+ "mcpServers": {
198
+ "claude-synergy": {
199
+ "command": "claude-synergy-mcp",
200
+ "env": {
201
+ "CLAUDE_SYNERGY_DB": "/path/to/claude-synergy/data/claude-synergy.db"
202
+ }
203
+ }
204
+ }
205
+ }
206
+ ```
207
+
208
+ For GitHub Copilot's `.vscode/mcp.json`, use the `servers` wrapper instead of `mcpServers` (see [synergy 12](synergies/12-mcp-config-format-gotcha.md)).
209
+
210
+ Tools exposed:
211
+
212
+ | Tool | Purpose |
213
+ |---|---|
214
+ | `search` | Hybrid FTS5 + vec; optional rerank. Default mode for natural-language queries. |
215
+ | `lookup_entity` | Exact entity history: env vars, slash commands, model IDs, CVEs, etc. |
216
+ | `latest_releases` | Recent releases across products (or one) |
217
+ | `get_release` | Full content of one release |
218
+ | `list_products` | Enumeration with counts + latest version |
219
+ | `top_entities` | Most-mentioned entities by type |
220
+ | `list_synergies` | Curated cross-product workflows |
221
+ | `read_synergy` | Full text of one synergy file |
222
+
223
+ ---
224
+
225
+ ## Sources — 5 tiers, 6 fetcher strategies
226
+
227
+ Full landscape in [SOURCES.md](SOURCES.md).
228
+
229
+ - **Tier 1 (GitHub Releases)** — `gh api repos/<owner>/<repo>/releases` for 22 products including Anthropic SDKs (7 languages), Agent SDKs (2), ant CLI, claude-code-action, claude-code-security-review, and 15 MCP ecosystem SDKs
230
+ - **Tier 2 (raw markdown)** — `anthropics/claude-code/CHANGELOG.md` + `Aider-AI/aider/HISTORY.md`
231
+ - **Tier 3 (HTML / RSS)** — `platform.claude.com/docs/release-notes`, `support.claude.com/articles/12138966`, `cursor.com/changelog/rss.xml`, `sourcegraph.com/changelog/featured.rss` (filtered), `github.blog/changelog/label/copilot/`, `code.visualstudio.com/updates/v1_NNN`
232
+ - **Tier 4 (catalog)** — `anthropics/skills`, `claude-plugins-{official,community}`, `knowledge-work-plugins`
233
+ - **Tier 5 (advisory)** — `@ClaudeCodeLog` X account; marckrenn changelog mirror
234
+
235
+ Fetch strategies: `gh-releases | rss | raw-changelog | html-scrape | catalog | playwright`. New product = one entry in `products.yaml`.
236
+
237
+ ---
238
+
239
+ ## Synergies — what gets unlocked
240
+
241
+ 12 curated cross-product workflows. Each describes a composition pattern, the trigger that makes it the right answer, and the changelog evidence that enables it. Examples:
242
+
243
+ - **08 — Universal SKILL.md format** (Code + Cursor + Codex): one skill author, three agents read it
244
+ - **09 — MCP across seven surfaces** (Code + Cursor + Continue + Copilot + Windsurf + Cody + API): one binary, every agent
245
+ - **10 — Anthropic BYOK across surfaces**: one API key powers Claude in 7 editors with unified billing
246
+ - **11 — Claude Code orchestrates Aider**: cost-shift heavy edits to a cheap model while Claude plans
247
+ - **12 — MCP config format gotcha**: Copilot uses `servers`; everyone else uses `mcpServers`
248
+
249
+ Full index in [synergies/INDEX.md](synergies/INDEX.md).
250
+
251
+ ---
252
+
253
+ ## Testing
254
+
255
+ Vitest suite covers unit / integration / regression / smoke tiers. **[test-spec-3.md](test-spec-3.md) is the current authority** as of v0.7.0; [test-spec.md](test-spec.md) (v1) and [test-spec-2.md](test-spec-2.md) (v2) remain in the repo as historical record of the design lineage.
256
+
257
+ ```bash
258
+ pnpm test # unit + integration + regression (~16s, 382 tests)
259
+ pnpm test:watch # interactive
260
+ pnpm test:coverage # generate coverage/index.html (thresholds: 78/75/85/78)
261
+ pnpm test:smoke # opt-in full-corpus smoke (RUN_SMOKE=1)
262
+ ```
263
+
264
+ Layout:
265
+
266
+ | Dir | What it covers |
267
+ |-----|----------------|
268
+ | `test/unit/` | per-module — extract, ingest, query, db, embed, hybrid, fetch + every provider + fetch-rss/changelog/html + fetch-mcp-registry + fetch-playwright + products-config |
269
+ | `test/integration/` | end-to-end — pipeline, sync, MCP server (stdio JSON-RPC), CLI |
270
+ | `test/regression/` | §8.1–§8.18 — each protects against a real bug fixed during development |
271
+ | `test/smoke/` | opt-in full-corpus against real `products/` (1,143 files) |
272
+ | `test/fixtures/` | 3 fake products + mock HTTP responses (RSS / GH / Voyage / Cohere / Ollama / Anthropic / Smithery / Official MCP Registry) |
273
+ | `test/helpers/` | `temp-db.ts`, `fetch-mock.ts`, `mcp-client.ts`, `seed-corpus.ts`, `golden-vectors.ts`, `playwright-mock.ts`, `yaml-fixtures.ts` |
274
+
275
+ **No network in tests by default** — provider HTTP is mocked via `vi.spyOn(global, 'fetch')`. Real SQLite in temp files (not `:memory:`) because sqlite-vec extension load semantics differ across versions and on-disk is the canonical path. Playwright is loaded via dynamic import and mocked via `vi.doMock('playwright', ...)` so tests pass without a real browser install.
276
+
277
+ CI: `.github/workflows/test.yml` runs `pnpm test:coverage` on push and PR.
278
+
279
+ ---
280
+
281
+ ## Troubleshooting
282
+
283
+ **"Database locked" or WAL errors**
284
+
285
+ Another `hk` process (or a stale MCP server) is holding the SQLite database open. Close other `hk` processes, then retry. If the issue persists, check for a `-wal` or `-shm` file alongside `data/claude-synergy.db` — these are normal WAL-mode files and will be cleaned up when the last connection closes. Do not delete them while another process has the DB open.
286
+
287
+ **"sqlite-vec extension not found" / sqlite-vec load failed**
288
+
289
+ The `sqlite-vec` native extension failed to load. Common causes:
290
+
291
+ 1. **Node version too old** — `claude-synergy` requires Node 22+. Check with `node -v`.
292
+ 2. **Native module needs rebuild** — run `npm rebuild better-sqlite3` (or `pnpm rebuild better-sqlite3`).
293
+ 3. **Platform mismatch** — on Windows/ARM, `better-sqlite3` needs a C++ build toolchain. Install the [windows-build-tools](https://github.com/nicedoc/windows-build-tools) or Visual Studio Build Tools with "Desktop development with C++".
294
+
295
+ Note: `sqlite-vec` is optional. FTS5 keyword search (`hk query`) works without it. Only `hk embed` and `hk hybrid` require the vector extension.
296
+
297
+ **"Sync failed for product X" / fetch errors**
298
+
299
+ `hk fetch` and `hk sync` call external APIs. Common causes:
300
+
301
+ - **GitHub rate limit** — the `gh-releases` strategy shells out to `gh api`, which uses your `GITHUB_TOKEN`. Unauthenticated requests hit 60 req/hr; authenticate with `gh auth login` or set `GITHUB_TOKEN` in your environment.
302
+ - **Network / proxy** — RSS and HTML fetchers use `fetch()`. Check connectivity and any corporate proxy settings (`HTTPS_PROXY`).
303
+ - **Unknown product** — `hk fetch --product foo` only works for products listed in `products.yaml`. Run `hk products` to see all available names.
304
+
305
+ Sync is idempotent — safe to re-run after a partial failure. Already-fetched releases are skipped.
306
+
307
+ **"Embedding provider not responding"**
308
+
309
+ `hk embed` calls an external embedding service:
310
+
311
+ - **Ollama (default)** — ensure Ollama is running (`ollama serve`) and the embedding model is pulled (`ollama pull nomic-embed-text`).
312
+ - **Voyage** — set `VOYAGE_API_KEY` in your environment. Check your API key at [dash.voyageai.com](https://dash.voyageai.com).
313
+
314
+ **Schema version mismatch / corrupted database**
315
+
316
+ If the DB was created with an older schema version and migration fails, or if data looks wrong after a crash:
317
+
318
+ ```bash
319
+ rm data/claude-synergy.db data/claude-synergy.db-wal data/claude-synergy.db-shm
320
+ hk init
321
+ hk ingest
322
+ hk embed --context structured --embedding ollama # optional, for vector search
323
+ ```
324
+
325
+ This is safe — the DB is a derived cache. All source data lives in `products/*/releases/*.md` files.
326
+
327
+ ---
328
+
329
+ ## Related files
330
+
331
+ - [CONTRIBUTING.md](CONTRIBUTING.md) — how to add products, run tests, submit PRs
332
+ - [URGENT_FINDINGS.md](URGENT_FINDINGS.md) — 23 actionable items (security CVEs, model retirements, breaking changes, config gotchas)
333
+ - [SOURCES.md](SOURCES.md) — 5-tier source landscape with fetch strategies
334
+ - [synergies/INDEX.md](synergies/INDEX.md) — 12 curated cross-product workflows
335
+ - [schema.sql](schema.sql) + [schema-vec.sql](schema-vec.sql) — SQLite + sqlite-vec schemas
336
+ - [test-spec-3.md](test-spec-3.md) (current) + [test-spec-2.md](test-spec-2.md), [test-spec.md](test-spec.md) (historical) — test suite specs
337
+
338
+ ---
339
+
340
+ ## License
341
+
342
+ MIT. Built by <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>.