bluera-knowledge 0.13.0 → 0.13.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.
Files changed (34) hide show
  1. package/.claude/rules/code-quality.md +12 -0
  2. package/.claude/rules/git.md +5 -0
  3. package/.claude/rules/versioning.md +7 -0
  4. package/.claude-plugin/plugin.json +2 -15
  5. package/.mcp.json +11 -0
  6. package/CHANGELOG.md +7 -0
  7. package/CLAUDE.md +5 -13
  8. package/CONTRIBUTING.md +307 -0
  9. package/README.md +58 -1167
  10. package/commands/crawl.md +2 -1
  11. package/commands/test-plugin.md +197 -72
  12. package/docs/claude-code-best-practices.md +458 -0
  13. package/docs/cli.md +170 -0
  14. package/docs/commands.md +392 -0
  15. package/docs/crawler-architecture.md +89 -0
  16. package/docs/mcp-integration.md +130 -0
  17. package/docs/token-efficiency.md +91 -0
  18. package/eslint.config.js +1 -1
  19. package/hooks/check-dependencies.sh +18 -1
  20. package/hooks/hooks.json +2 -2
  21. package/hooks/posttooluse-bk-reminder.py +30 -2
  22. package/package.json +1 -1
  23. package/scripts/test-mcp-dev.js +260 -0
  24. package/src/mcp/plugin-mcp-config.test.ts +26 -19
  25. package/tests/integration/cli-consistency.test.ts +3 -2
  26. package/docs/plans/2024-12-17-ai-search-quality-implementation.md +0 -752
  27. package/docs/plans/2024-12-17-ai-search-quality-testing-design.md +0 -201
  28. package/docs/plans/2025-12-16-bluera-knowledge-cli.md +0 -2951
  29. package/docs/plans/2025-12-16-phase2-features.md +0 -1518
  30. package/docs/plans/2025-12-17-hil-implementation.md +0 -926
  31. package/docs/plans/2025-12-17-hil-quality-testing.md +0 -224
  32. package/docs/plans/2025-12-17-search-quality-phase1-implementation.md +0 -1416
  33. package/docs/plans/2025-12-17-search-quality-testing-v2-design.md +0 -212
  34. package/docs/plans/2025-12-28-ai-agent-optimization.md +0 -1630
@@ -0,0 +1,392 @@
1
+ # Commands Reference
2
+
3
+ Complete reference for all Bluera Knowledge slash commands.
4
+
5
+ ## Quick Reference
6
+
7
+ | Command | Purpose | Arguments |
8
+ |---------|---------|-----------|
9
+ | `/bluera-knowledge:suggest` | Analyze project dependencies | None |
10
+ | `/bluera-knowledge:add-repo` | Clone and index Git repository | `<url> [--name=<name>] [--branch=<branch>]` |
11
+ | `/bluera-knowledge:add-folder` | Index local folder | `<path> --name=<name>` |
12
+ | `/bluera-knowledge:search` | Search knowledge stores | `"<query>" [--stores=<names>] [--limit=<N>]` |
13
+ | `/bluera-knowledge:stores` | List all stores | None |
14
+ | `/bluera-knowledge:index` | Re-index a store | `<store-name-or-id>` |
15
+ | `/bluera-knowledge:remove-store` | Delete a store and all data | `<store-name-or-id>` |
16
+ | `/bluera-knowledge:crawl` | Crawl web pages | `<url> <store-name> [--crawl "<instruction>"]` |
17
+ | `/bluera-knowledge:sync` | Sync stores from definitions config | `[--dry-run] [--prune]` |
18
+
19
+ ---
20
+
21
+ ## `/bluera-knowledge:suggest`
22
+
23
+ **Analyze your project to suggest libraries worth indexing as knowledge stores**
24
+
25
+ ```bash
26
+ /bluera-knowledge:suggest
27
+ ```
28
+
29
+ Scans source files, counts import statements, and suggests the top 5 most-used dependencies with their repository URLs.
30
+
31
+ **Supported languages:**
32
+
33
+ | Language | Manifest File | Registry |
34
+ |----------|---------------|----------|
35
+ | JavaScript/TypeScript | `package.json` | NPM |
36
+ | Python | `requirements.txt`, `pyproject.toml` | PyPI |
37
+ | Rust | `Cargo.toml` | crates.io |
38
+ | Go | `go.mod` | Go modules |
39
+
40
+ <details>
41
+ <summary><b>Expected Output</b></summary>
42
+
43
+ ```
44
+ ## Dependency Analysis
45
+
46
+ Scanned 342 source files and found 24 dependencies.
47
+
48
+ ### Top Dependencies by Usage
49
+
50
+ 1. **react** (156 imports across 87 files)
51
+ Repository: https://github.com/facebook/react
52
+
53
+ Add with:
54
+ /bluera-knowledge:add-repo https://github.com/facebook/react --name=react
55
+
56
+ 2. **vitest** (40 imports across 40 files)
57
+ Repository: https://github.com/vitest-dev/vitest
58
+
59
+ Add with:
60
+ /bluera-knowledge:add-repo https://github.com/vitest-dev/vitest --name=vitest
61
+
62
+ 3. **lodash** (28 imports across 15 files)
63
+ Repository: https://github.com/lodash/lodash
64
+
65
+ Add with:
66
+ /bluera-knowledge:add-repo https://github.com/lodash/lodash --name=lodash
67
+
68
+ ---
69
+
70
+ Already indexed: typescript, express
71
+ ```
72
+ </details>
73
+
74
+ ---
75
+
76
+ ## `/bluera-knowledge:add-repo`
77
+
78
+ **Clone and index a Git repository**
79
+
80
+ ```bash
81
+ /bluera-knowledge:add-repo <url> [--name=<name>] [--branch=<branch>]
82
+ ```
83
+
84
+ **Examples:**
85
+ ```bash
86
+ /bluera-knowledge:add-repo https://github.com/lodash/lodash
87
+ /bluera-knowledge:add-repo https://github.com/facebook/react --branch=main --name=react
88
+ ```
89
+
90
+ <details>
91
+ <summary><b>Expected Output</b></summary>
92
+
93
+ ```
94
+ ✓ Cloning https://github.com/facebook/react...
95
+ ✓ Created store: react (a1b2c3d4...)
96
+ Location: ~/.local/share/bluera-knowledge/stores/a1b2c3d4.../
97
+
98
+ ✓ Indexing...
99
+ ✓ Indexed 1,247 files
100
+
101
+ Store is ready for searching!
102
+ ```
103
+ </details>
104
+
105
+ ---
106
+
107
+ ## `/bluera-knowledge:add-folder`
108
+
109
+ **Index a local folder**
110
+
111
+ ```bash
112
+ /bluera-knowledge:add-folder <path> --name=<name>
113
+ ```
114
+
115
+ **Use cases:**
116
+ - Project documentation
117
+ - Coding standards
118
+ - Design documents
119
+ - API specifications
120
+ - Reference materials
121
+ - Any other content
122
+
123
+ **Examples:**
124
+ ```bash
125
+ /bluera-knowledge:add-folder ./docs --name=project-docs
126
+ /bluera-knowledge:add-folder ./architecture --name=design-docs
127
+ ```
128
+
129
+ <details>
130
+ <summary><b>Expected Output</b></summary>
131
+
132
+ ```
133
+ ✓ Adding folder: ~/my-project/docs...
134
+ ✓ Created store: project-docs (e5f6g7h8...)
135
+ Location: ~/.local/share/bluera-knowledge/stores/e5f6g7h8.../
136
+
137
+ ✓ Indexing...
138
+ ✓ Indexed 342 files
139
+
140
+ Store is ready for searching!
141
+ ```
142
+ </details>
143
+
144
+ ---
145
+
146
+ ## `/bluera-knowledge:search`
147
+
148
+ **Search across indexed knowledge stores**
149
+
150
+ ```bash
151
+ /bluera-knowledge:search "<query>" [--stores=<names>] [--limit=<number>] [--min-relevance=<0-1>]
152
+ ```
153
+
154
+ **Options:**
155
+ - `--stores=<names>` - Comma-separated store names to search (default: all stores)
156
+ - `--limit=<number>` - Maximum results to return (default: 10)
157
+ - `--min-relevance=<0-1>` - Minimum raw cosine similarity; returns empty if no results meet threshold
158
+ - `--threshold=<0-1>` - Minimum normalized score to include results
159
+ - `--mode=<mode>` - Search mode: `hybrid` (default), `vector`, or `fts`
160
+ - `--detail=<level>` - Context detail: `minimal` (default), `contextual`, or `full`
161
+
162
+ **Examples:**
163
+ ```bash
164
+ # Search all stores
165
+ /bluera-knowledge:search "how to invalidate queries"
166
+
167
+ # Search specific store
168
+ /bluera-knowledge:search "useState implementation" --stores=react
169
+
170
+ # Search multiple stores (comma-separated)
171
+ /bluera-knowledge:search "deep clone" --stores=react,lodash
172
+
173
+ # Limit results
174
+ /bluera-knowledge:search "testing patterns" --limit=5
175
+
176
+ # Filter irrelevant results (returns empty if nothing is truly relevant)
177
+ /bluera-knowledge:search "kubernetes deployment" --min-relevance=0.4
178
+ ```
179
+
180
+ <details>
181
+ <summary><b>Expected Output</b></summary>
182
+
183
+ ```
184
+ ## Search Results: "button component" (hybrid search)
185
+
186
+ **1. [Score: 0.95] [Vector+FTS]**
187
+ Store: react
188
+ File: src/components/Button.tsx
189
+ Purpose: → Reusable button component with variants
190
+ Top Terms: (in this chunk): button, variant, size, color, onClick
191
+ Imports: (in this chunk): React, clsx
192
+
193
+ **2. [Score: 0.87] [Vector]**
194
+ Store: react
195
+ File: src/hooks/useButton.ts
196
+ Purpose: → Custom hook for button state management
197
+ Top Terms: (in this chunk): hook, state, pressed, disabled
198
+ Imports: (in this chunk): useState, useCallback
199
+
200
+ **3. [Score: 0.81] [Vector+FTS]**
201
+ Store: react
202
+ File: src/components/IconButton.tsx
203
+ Purpose: → Button component with icon support
204
+ Top Terms: (in this chunk): icon, button, aria-label, accessible
205
+
206
+ ---
207
+ **Found 3 results in 45ms**
208
+
209
+ **Next Steps:**
210
+ - Read file: `Read src/components/Button.tsx`
211
+ - Get full code: `mcp__bluera-knowledge__get_full_context("result-id")`
212
+ - Refine search: Use keywords above
213
+ ```
214
+ </details>
215
+
216
+ ---
217
+
218
+ ## `/bluera-knowledge:stores`
219
+
220
+ **List all indexed knowledge stores**
221
+
222
+ ```bash
223
+ /bluera-knowledge:stores
224
+ ```
225
+
226
+ Shows store name, type, ID, and source location in a clean table format.
227
+
228
+ <details>
229
+ <summary><b>Expected Output</b></summary>
230
+
231
+ ```
232
+ | Name | Type | ID | Source |
233
+ |------|------|----|--------------------|
234
+ | react | repo | 459747c7 | https://github.com/facebook/react |
235
+ | crawl4ai | repo | b5a72a94 | https://github.com/unclecode/crawl4ai.git |
236
+ | project-docs | file | 70f6309b | ~/repos/my-project/docs |
237
+ | claude-docs | web | 9cc62018 | https://code.claude.com/docs |
238
+
239
+ **Total**: 4 stores
240
+ ```
241
+ </details>
242
+
243
+ ---
244
+
245
+ ## `/bluera-knowledge:index`
246
+
247
+ **Re-index an existing store to update the search index**
248
+
249
+ ```bash
250
+ /bluera-knowledge:index <store-name-or-id>
251
+ ```
252
+
253
+ **When to re-index:**
254
+ - The source repository has been updated (for repo stores)
255
+ - Files have been added or modified (for file stores)
256
+ - Search results seem out of date
257
+
258
+ **Example:**
259
+ ```bash
260
+ /bluera-knowledge:index react
261
+ ```
262
+
263
+ <details>
264
+ <summary><b>Expected Output</b></summary>
265
+
266
+ ```
267
+ ✓ Indexing store: react...
268
+ ✓ Indexed 1,247 documents in 3,421ms
269
+
270
+ Store search index is up to date!
271
+ ```
272
+ </details>
273
+
274
+ ---
275
+
276
+ ## `/bluera-knowledge:remove-store`
277
+
278
+ **Delete a knowledge store and all associated data**
279
+
280
+ ```bash
281
+ /bluera-knowledge:remove-store <store-name-or-id>
282
+ ```
283
+
284
+ **What gets deleted:**
285
+ - Store registry entry
286
+ - LanceDB search index (vector embeddings)
287
+ - Cloned repository files (for repo stores created from URLs)
288
+
289
+ **Example:**
290
+ ```bash
291
+ /bluera-knowledge:remove-store react
292
+ ```
293
+
294
+ <details>
295
+ <summary><b>Expected Output</b></summary>
296
+
297
+ ```
298
+ Store "react" deleted successfully.
299
+
300
+ Removed:
301
+ - Store registry entry
302
+ - LanceDB search index
303
+ - Cloned repository files
304
+ ```
305
+ </details>
306
+
307
+ ---
308
+
309
+ ## `/bluera-knowledge:crawl`
310
+
311
+ **Crawl web pages with natural language control**
312
+
313
+ ```bash
314
+ /bluera-knowledge:crawl <url> <store-name> [options]
315
+ ```
316
+
317
+ **Options:**
318
+ - `--crawl "<instruction>"` - Natural language instruction for which pages to crawl
319
+ - `--extract "<instruction>"` - Natural language instruction for what content to extract
320
+ - `--simple` - Use simple BFS mode instead of intelligent crawling
321
+ - `--max-pages <n>` - Maximum pages to crawl (default: 50)
322
+ - `--fast` - Use fast axios-only mode (may fail on JavaScript-heavy sites)
323
+
324
+ **Requirements:**
325
+ - Python 3 with `crawl4ai` package installed
326
+ - Web store is auto-created if it doesn't exist
327
+
328
+ **Examples:**
329
+ ```bash
330
+ # Basic crawl
331
+ /bluera-knowledge:crawl https://docs.example.com/guide my-docs
332
+
333
+ # Intelligent crawl with custom strategy
334
+ /bluera-knowledge:crawl https://react.dev react-docs --crawl "all API reference pages"
335
+
336
+ # Extract specific content from pages
337
+ /bluera-knowledge:crawl https://example.com/pricing pricing --extract "pricing tiers and features"
338
+
339
+ # Combine crawl strategy + extraction
340
+ /bluera-knowledge:crawl https://docs.python.org python-docs \
341
+ --crawl "standard library modules" \
342
+ --extract "function signatures and examples"
343
+
344
+ # JavaScript-rendered sites work by default (uses headless browser)
345
+ /bluera-knowledge:crawl https://nextjs.org/docs nextjs-docs --max-pages 30
346
+
347
+ # Fast mode for static HTML sites (axios-only, faster but may miss JS content)
348
+ /bluera-knowledge:crawl https://example.com/static static-docs --fast --max-pages 100
349
+
350
+ # Simple BFS mode (no AI guidance)
351
+ /bluera-knowledge:crawl https://example.com/docs docs --simple --max-pages 100
352
+ ```
353
+
354
+ The crawler converts pages to markdown and indexes them for semantic search.
355
+
356
+ ---
357
+
358
+ ## `/bluera-knowledge:sync`
359
+
360
+ **Sync stores from definitions config (bootstrap on fresh clone)**
361
+
362
+ ```bash
363
+ /bluera-knowledge:sync [options]
364
+ ```
365
+
366
+ **Options:**
367
+ - `--dry-run` - Show what would happen without making changes
368
+ - `--prune` - Remove stores not in definitions
369
+ - `--reindex` - Re-index existing stores after sync
370
+
371
+ **Use cases:**
372
+ - **Fresh clone**: Recreate all stores defined by the team
373
+ - **Check status**: See which stores exist vs. defined
374
+ - **Clean up**: Remove orphan stores not in config
375
+
376
+ **Examples:**
377
+ ```bash
378
+ # Preview what would be synced
379
+ /bluera-knowledge:sync --dry-run
380
+
381
+ # Sync all stores from definitions
382
+ /bluera-knowledge:sync
383
+
384
+ # Sync and remove orphan stores
385
+ /bluera-knowledge:sync --prune
386
+ ```
387
+
388
+ **How it works:**
389
+ 1. Reads store definitions from `.bluera/bluera-knowledge/stores.config.json`
390
+ 2. Creates any stores that don't exist locally
391
+ 3. Reports orphan stores (local stores not in definitions)
392
+ 4. Optionally prunes orphans with `--prune`
@@ -0,0 +1,89 @@
1
+ # Crawler Architecture
2
+
3
+ The crawler defaults to **headless mode** (Playwright) for maximum compatibility with modern JavaScript-rendered sites. Use `--fast` for static HTML sites when speed is critical.
4
+
5
+ ## Default Mode (Headless - JavaScript-Rendered Sites)
6
+
7
+ By default, the crawler uses Playwright via crawl4ai to render JavaScript content:
8
+
9
+ ```mermaid
10
+ sequenceDiagram
11
+ participant User
12
+ participant CLI
13
+ participant IntelligentCrawler
14
+ participant Axios
15
+ participant Claude
16
+
17
+ User->>CLI: crawl URL --crawl "instruction"
18
+ CLI->>IntelligentCrawler: crawl(url, {useHeadless: true})
19
+ IntelligentCrawler->>PythonBridge: fetchHeadless(url)
20
+ PythonBridge->>crawl4ai: AsyncWebCrawler.arun(url)
21
+ crawl4ai->>Playwright: Launch browser & render JS
22
+ Playwright-->>crawl4ai: Rendered HTML
23
+ crawl4ai-->>PythonBridge: {html, markdown, links}
24
+ PythonBridge-->>IntelligentCrawler: Rendered HTML
25
+ IntelligentCrawler->>Claude: determineCrawlUrls(html, instruction)
26
+ Note over Claude: Natural language instruction<br/>STILL FULLY ACTIVE
27
+ Claude-->>IntelligentCrawler: [urls to crawl]
28
+ loop For each URL
29
+ IntelligentCrawler->>PythonBridge: fetchHeadless(url)
30
+ PythonBridge->>crawl4ai: Render JS
31
+ crawl4ai-->>PythonBridge: HTML
32
+ PythonBridge-->>IntelligentCrawler: HTML
33
+ IntelligentCrawler->>IntelligentCrawler: Convert to markdown & index
34
+ end
35
+ ```
36
+
37
+ ## Fast Mode (Static Sites - `--fast`)
38
+
39
+ For static HTML sites, use `--fast` for faster crawling with axios:
40
+
41
+ ```mermaid
42
+ sequenceDiagram
43
+ participant User
44
+ participant CLI
45
+ participant IntelligentCrawler
46
+ participant Axios
47
+ participant Claude
48
+
49
+ User->>CLI: crawl URL --crawl "instruction" --fast
50
+ CLI->>IntelligentCrawler: crawl(url, {useHeadless: false})
51
+ IntelligentCrawler->>Axios: fetchHtml(url)
52
+ Axios-->>IntelligentCrawler: Static HTML
53
+ IntelligentCrawler->>Claude: determineCrawlUrls(html, instruction)
54
+ Claude-->>IntelligentCrawler: [urls to crawl]
55
+ loop For each URL
56
+ IntelligentCrawler->>Axios: fetchHtml(url)
57
+ Axios-->>IntelligentCrawler: HTML
58
+ IntelligentCrawler->>IntelligentCrawler: Convert to markdown & index
59
+ end
60
+ ```
61
+
62
+ ---
63
+
64
+ ## Key Points
65
+
66
+ | Feature | Description |
67
+ |---------|-------------|
68
+ | **Default to headless** | Maximum compatibility with modern JavaScript-rendered sites (React, Vue, Next.js) |
69
+ | **Fast mode available** | Use `--fast` for static HTML sites when speed is critical |
70
+ | **Intelligent crawling preserved** | Claude Code CLI analyzes pages and selects URLs in both modes |
71
+ | **Automatic fallback** | If headless fetch fails, automatically falls back to axios |
72
+
73
+ ---
74
+
75
+ ## Intelligent Mode vs Simple Mode
76
+
77
+ The crawler operates in two modes depending on Claude Code CLI availability:
78
+
79
+ | Mode | Requires Claude CLI | Behavior |
80
+ |------|---------------------|----------|
81
+ | **Intelligent** | Yes | Claude analyzes pages and selects URLs based on natural language instructions |
82
+ | **Simple (BFS)** | No | Breadth-first crawl up to max depth (2 levels) |
83
+
84
+ **Automatic detection:**
85
+ - When Claude Code CLI is available: Full intelligent mode with `--crawl` and `--extract` instructions
86
+ - When Claude Code CLI is unavailable: Automatically uses simple BFS mode
87
+ - Clear messaging: "Claude CLI not found, using simple crawl mode"
88
+
89
+ > **Note:** Install Claude Code to unlock `--crawl` (AI-guided URL selection) and `--extract` (AI content extraction). Without it, web crawling still works but uses simple BFS mode.
@@ -0,0 +1,130 @@
1
+ # MCP Integration
2
+
3
+ The plugin includes a Model Context Protocol server that exposes search tools for AI agents.
4
+
5
+ > **Important:** Commands vs MCP Tools: You interact with the plugin using `/bluera-knowledge:` slash commands. Behind the scenes, these commands instruct Claude Code to use MCP tools (`mcp__bluera-knowledge__*`) which handle the actual operations. Commands provide the user interface, while MCP tools are the backend that AI agents use to access your knowledge stores.
6
+
7
+ ## Configuration
8
+
9
+ The MCP server is configured in `.mcp.json` at the plugin root:
10
+
11
+ ```json
12
+ {
13
+ "bluera-knowledge": {
14
+ "command": "node",
15
+ "args": ["${CLAUDE_PLUGIN_ROOT}/dist/mcp/server.js"],
16
+ "env": {
17
+ "PROJECT_ROOT": "${PWD}",
18
+ "DATA_DIR": ".bluera/bluera-knowledge/data",
19
+ "CONFIG_PATH": ".bluera/bluera-knowledge/config.json"
20
+ }
21
+ }
22
+ }
23
+ ```
24
+
25
+ > **Note:** We use a separate `.mcp.json` file rather than inline `mcpServers` in `plugin.json` due to [Claude Code Bug #16143](https://github.com/anthropics/claude-code/issues/16143). This is the recommended pattern for Claude Code plugins.
26
+
27
+ ---
28
+
29
+ ## Context Efficiency Strategy
30
+
31
+ ### Why Only 3 MCP Tools?
32
+
33
+ Every MCP tool exposed requires its full schema to be sent to Claude with each tool invocation. More tools = more tokens consumed before Claude can even respond.
34
+
35
+ **Design decision:** Consolidate from 10+ tools down to 3:
36
+
37
+ | Approach | Tool Count | Context Cost | Trade-off |
38
+ |----------|------------|--------------|-----------|
39
+ | Individual tools | 10+ | ~800+ tokens | Simple calls, high overhead |
40
+ | **Consolidated (current)** | 3 | ~300 tokens | Minimal overhead, slightly longer commands |
41
+
42
+ ### How It Works
43
+
44
+ 1. **Native tools for common workflow** - `search` and `get_full_context` are the operations Claude uses most often, so they get dedicated tools with full schemas
45
+
46
+ 2. **Meta-tool for management** - The `execute` tool consolidates 8 store/job management commands into a single tool. Commands are discovered on-demand via `execute("commands")` or `execute("help", {command: "store:create"})`
47
+
48
+ 3. **Lazy documentation** - Command help isn't pre-sent with tool listings; it's discoverable when needed
49
+
50
+ **Result:** ~60% reduction in context overhead for MCP tool listings, without sacrificing functionality.
51
+
52
+ > **Tip:** This pattern—consolidating infrequent operations into a meta-tool while keeping high-frequency operations native—is a general strategy for MCP context efficiency.
53
+
54
+ ---
55
+
56
+ ## Available MCP Tools
57
+
58
+ ### `search`
59
+
60
+ Semantic vector search across all indexed stores or a specific subset. Returns structured code units with relevance ranking.
61
+
62
+ **Parameters:**
63
+
64
+ | Parameter | Type | Description |
65
+ |-----------|------|-------------|
66
+ | `query` | string | Search query (natural language, patterns, or type signatures) |
67
+ | `intent` | string | Search intent: find-pattern, find-implementation, find-usage, find-definition, find-documentation |
68
+ | `mode` | string | Search mode: hybrid (default), vector, or fts |
69
+ | `detail` | string | Context level: minimal, contextual, or full |
70
+ | `limit` | number | Maximum results (default: 10) |
71
+ | `stores` | array | Array of specific store IDs to search (optional, searches all stores if not specified) |
72
+ | `threshold` | number | Minimum normalized score (0-1) for filtering results |
73
+ | `minRelevance` | number | Minimum raw cosine similarity (0-1) for filtering results |
74
+
75
+ ### `get_full_context`
76
+
77
+ Retrieve complete code and context for a specific search result by ID.
78
+
79
+ **Parameters:**
80
+
81
+ | Parameter | Type | Description |
82
+ |-----------|------|-------------|
83
+ | `resultId` | string | The result ID from a previous search |
84
+
85
+ ### `execute`
86
+
87
+ Meta-tool for store and job management. Consolidates 8 operations into one tool with subcommands.
88
+
89
+ **Parameters:**
90
+
91
+ | Parameter | Type | Description |
92
+ |-----------|------|-------------|
93
+ | `command` | string | Command to execute (see below) |
94
+ | `args` | object | Command-specific arguments (optional) |
95
+
96
+ **Available commands:**
97
+
98
+ | Command | Args | Description |
99
+ |---------|------|-------------|
100
+ | `stores` | `type?` | List all knowledge stores |
101
+ | `store:info` | `store` | Get detailed store information including file path |
102
+ | `store:create` | `name`, `type`, `source`, `branch?`, `description?` | Create a new store |
103
+ | `store:index` | `store` | Re-index an existing store |
104
+ | `store:delete` | `store` | Delete a store and all data |
105
+ | `stores:sync` | `dryRun?`, `prune?`, `reindex?` | Sync stores from definitions config |
106
+ | `jobs` | `activeOnly?`, `status?` | List background jobs |
107
+ | `job:status` | `jobId` | Check specific job status |
108
+ | `job:cancel` | `jobId` | Cancel a running job |
109
+ | `help` | `command?` | Show help for commands |
110
+ | `commands` | - | List all available commands |
111
+
112
+ ---
113
+
114
+ ## Known Issues
115
+
116
+ ### MCP Configuration Pattern
117
+
118
+ This plugin uses a separate `.mcp.json` file for MCP server configuration (rather than inline in `plugin.json`). This is the recommended pattern for Claude Code plugins due to [Bug #16143](https://github.com/anthropics/claude-code/issues/16143) where inline `mcpServers` may be ignored during plugin manifest parsing.
119
+
120
+ If you're developing a Claude Code plugin with MCP integration, we recommend:
121
+ 1. Create a `.mcp.json` file at your plugin root
122
+ 2. Do NOT use inline `mcpServers` in `plugin.json`
123
+
124
+ ### Related Claude Code Bugs
125
+
126
+ | Issue | Status | Description |
127
+ |-------|--------|-------------|
128
+ | [#16143](https://github.com/anthropics/claude-code/issues/16143) | Open | Inline `mcpServers` in plugin.json ignored |
129
+ | [#13543](https://github.com/anthropics/claude-code/issues/13543) | Fixed v2.0.65 | .mcp.json files not copied to plugin cache |
130
+ | [#18336](https://github.com/anthropics/claude-code/issues/18336) | Open | MCP plugin shows enabled but no resources available |
@@ -0,0 +1,91 @@
1
+ # Token Efficiency
2
+
3
+ Beyond speed and accuracy, Bluera Knowledge can **significantly reduce token consumption** for code-related queries—typically saving 60-75% compared to web search approaches.
4
+
5
+ ## How It Works
6
+
7
+ **Without Bluera Knowledge:**
8
+ - Web searches return 5-10 results (~500-2,000 tokens each)
9
+ - Total per search: **3,000-10,000 tokens**
10
+ - Often need multiple searches to find the right answer
11
+ - Lower signal-to-noise ratio (blog posts mixed with actual docs)
12
+
13
+ **With Bluera Knowledge:**
14
+ - Semantic search returns top 10 relevant code chunks (~200-400 tokens each)
15
+ - Structured metadata (file paths, imports, purpose)
16
+ - Total per search: **1,500-3,000 tokens**
17
+ - Higher relevance due to vector search (fewer follow-up queries needed)
18
+
19
+ ---
20
+
21
+ ## Real-World Examples
22
+
23
+ ### Example 1: Library Implementation Question
24
+
25
+ **Question:** "How does Express handle middleware errors?"
26
+
27
+ | Approach | Token Cost | Result |
28
+ |----------|-----------|--------|
29
+ | **Web Search** | ~8,000 tokens (3 searches: general query → refined query → source code) | Blog posts + Stack Overflow + eventual guess |
30
+ | **Bluera Knowledge** | ~2,000 tokens (1 semantic search) | Actual Express source code, authoritative |
31
+ | **Savings** | **75% fewer tokens** | Higher accuracy |
32
+
33
+ ### Example 2: Dependency Exploration
34
+
35
+ **Question:** "How does LanceDB's vector search work?"
36
+
37
+ | Approach | Token Cost | Result |
38
+ |----------|-----------|--------|
39
+ | **Web Search** | ~9,500 tokens (General docs → API docs → fetch specific page) | Documentation, might miss implementation details |
40
+ | **Bluera Knowledge** | ~1,500 tokens (Search returns source + tests + examples) | Source code from Python + Rust implementation |
41
+ | **Savings** | **84% fewer tokens** | Complete picture |
42
+
43
+ ### Example 3: Version-Specific Behavior
44
+
45
+ **Question:** "What changed in React 18's useEffect cleanup?"
46
+
47
+ | Approach | Token Cost | Result |
48
+ |----------|-----------|--------|
49
+ | **Training Data** | 0 tokens (but might be outdated) | Uncertain if accurate for React 18 |
50
+ | **Web Search** | ~5,000 tokens (Search changelog → blog posts → docs) | Mix of React 17 and 18 info |
51
+ | **Bluera Knowledge** | ~2,000 tokens (Search indexed React 18 source) | Exact React 18 implementation |
52
+ | **Savings** | **60% fewer tokens** | Version-accurate |
53
+
54
+ ---
55
+
56
+ ## When BK Uses More Tokens
57
+
58
+ Bluera Knowledge isn't always the most token-efficient choice:
59
+
60
+ | Scenario | Best Approach | Why |
61
+ |----------|---------------|-----|
62
+ | **Simple concept questions** ("What is a JavaScript closure?") | Training data | Claude already knows this (0 tokens) |
63
+ | **Current events** ("Latest Next.js 15 release notes") | Web search | BK only has what you've indexed |
64
+ | **General advice** ("How to structure a React app?") | Training data | Opinion-based, not code-specific |
65
+
66
+ ---
67
+
68
+ ## Summary: Token Savings by Query Type
69
+
70
+ | Query Type | Typical Token Savings | When to Use BK |
71
+ |------------|----------------------|----------------|
72
+ | **Library internals** | 60-75% | Always |
73
+ | **Version-specific behavior** | 50-70% | Always |
74
+ | **"How does X work internally?"** | 70-85% | Always |
75
+ | **API usage examples** | 40-60% | Recommended |
76
+ | **General concepts** | -100% (uses more) | Skip BK |
77
+ | **Current events** | -100% (uses more) | Skip BK |
78
+
79
+ ---
80
+
81
+ ## Best Practice
82
+
83
+ **Default to BK for library questions.** It's cheap, fast, and authoritative:
84
+
85
+ | Question Type | Action | Why |
86
+ |--------------|--------|-----|
87
+ | Library internals, APIs, errors, versions, config | **Query BK first** | Source code is definitive, 60-85% token savings |
88
+ | General programming concepts | Skip BK | Training data is sufficient |
89
+ | Breaking news, release notes | Web search | BK only has indexed content |
90
+
91
+ The plugin's Skills teach Claude Code these patterns automatically. When in doubt about a dependency, query BK—it's faster and more accurate than guessing or web searching.