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.
- package/.claude/rules/code-quality.md +12 -0
- package/.claude/rules/git.md +5 -0
- package/.claude/rules/versioning.md +7 -0
- package/.claude-plugin/plugin.json +2 -15
- package/.mcp.json +11 -0
- package/CHANGELOG.md +7 -0
- package/CLAUDE.md +5 -13
- package/CONTRIBUTING.md +307 -0
- package/README.md +58 -1167
- package/commands/crawl.md +2 -1
- package/commands/test-plugin.md +197 -72
- package/docs/claude-code-best-practices.md +458 -0
- package/docs/cli.md +170 -0
- package/docs/commands.md +392 -0
- package/docs/crawler-architecture.md +89 -0
- package/docs/mcp-integration.md +130 -0
- package/docs/token-efficiency.md +91 -0
- package/eslint.config.js +1 -1
- package/hooks/check-dependencies.sh +18 -1
- package/hooks/hooks.json +2 -2
- package/hooks/posttooluse-bk-reminder.py +30 -2
- package/package.json +1 -1
- package/scripts/test-mcp-dev.js +260 -0
- package/src/mcp/plugin-mcp-config.test.ts +26 -19
- package/tests/integration/cli-consistency.test.ts +3 -2
- package/docs/plans/2024-12-17-ai-search-quality-implementation.md +0 -752
- package/docs/plans/2024-12-17-ai-search-quality-testing-design.md +0 -201
- package/docs/plans/2025-12-16-bluera-knowledge-cli.md +0 -2951
- package/docs/plans/2025-12-16-phase2-features.md +0 -1518
- package/docs/plans/2025-12-17-hil-implementation.md +0 -926
- package/docs/plans/2025-12-17-hil-quality-testing.md +0 -224
- package/docs/plans/2025-12-17-search-quality-phase1-implementation.md +0 -1416
- package/docs/plans/2025-12-17-search-quality-testing-v2-design.md +0 -212
- package/docs/plans/2025-12-28-ai-agent-optimization.md +0 -1630
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
# Claude Code & Claude Code Plugins — Best Practices (2026-01)
|
|
2
|
+
|
|
3
|
+
> This is a field guide for **Claude Code customization** (CLAUDE.md, rules, skills, subagents, hooks, MCP, output styles, settings) and **plugin / marketplace development** (plugin.json, commands, skills, hooks, MCP/LSP bundling, distribution, testing, troubleshooting).
|
|
4
|
+
> It synthesizes official docs plus recurring real-world gotchas from GitHub issues + community threads.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 0) Quick decision guide (what to build)
|
|
9
|
+
|
|
10
|
+
### Choose the lightest-weight lever that solves the problem
|
|
11
|
+
|
|
12
|
+
| You want to… | Use… | Why |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| Set project-wide standards, workflows, "how we do things here" | `CLAUDE.md` + `.claude/rules/*.md` | Always-on, versioned, easy to review; rules can be path-scoped. |
|
|
15
|
+
| Make **explicit, user-invoked** workflows (`/review`, `/ship`, `/debug`) | **Slash commands** (`.claude/commands/*.md`) | Deterministic, discoverable, supports args and pre-run context gathering. |
|
|
16
|
+
| Teach Claude a reusable "how to do X" playbook it can apply automatically | **Skills** (`.claude/skills/*/SKILL.md`) | Autonomously applied based on task intent; great for standards + recipes. |
|
|
17
|
+
| Isolate noisy operations (tests, grepping, docs spelunking), or run parallel research | **Subagents** (`.claude/agents/*.md`) | Separate context + tool restrictions; keeps main thread clean. |
|
|
18
|
+
| Guarantee something always happens (formatting, linting, compliance logging) | **Hooks** (`settings.json` or plugin `hooks.json`) | Deterministic "always-run" automation vs hoping the model remembers. |
|
|
19
|
+
| Connect Claude to external systems/tools (GitHub, Jira, DB, Sentry) | **MCP servers** (`.mcp.json` or plugin) | Adds tools/resources/prompts via MCP; policy controls + permissions. |
|
|
20
|
+
| Package and share the above across repos/teams | **Plugins** (+ marketplaces) | Portable bundles: commands, skills, agents, hooks, MCP/LSP configs. |
|
|
21
|
+
| Make Claude "be a different kind of agent" (teaching mode, super-terse mode, etc.) | **Output styles** | Alters system prompt behavior (and triggers reminders). Use sparingly. |
|
|
22
|
+
|
|
23
|
+
### When to move from "repo config" to "plugin"
|
|
24
|
+
Use a plugin when:
|
|
25
|
+
- You need **cross-repo reuse** (org-wide workflows, platform tooling).
|
|
26
|
+
- You want **versioning + distribution** via marketplaces.
|
|
27
|
+
- You're bundling "a product": docs, scripts, validation, and predictable interfaces.
|
|
28
|
+
|
|
29
|
+
Stay with standalone `.claude/` when:
|
|
30
|
+
- It's **project-specific** and tightly coupled to repo architecture.
|
|
31
|
+
- You want the lowest friction for contributors (no extra installs).
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 1) Recommended baseline layout for a repo
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
your-repo/
|
|
39
|
+
├─ CLAUDE.md # high-level "how we work" + common commands
|
|
40
|
+
├─ CLAUDE.local.md # per-user overrides (gitignored by default)
|
|
41
|
+
└─ .claude/
|
|
42
|
+
├─ settings.json # shared team config (permissions/hooks/plugins)
|
|
43
|
+
├─ settings.local.json # local overrides (not committed)
|
|
44
|
+
├─ rules/ # modular, reviewable instructions
|
|
45
|
+
│ ├─ general.md
|
|
46
|
+
│ ├─ testing.md
|
|
47
|
+
│ ├─ security.md
|
|
48
|
+
│ └─ frontend/
|
|
49
|
+
│ └─ react.md
|
|
50
|
+
├─ commands/ # repo slash commands
|
|
51
|
+
├─ skills/ # repo skills
|
|
52
|
+
└─ agents/ # repo subagents
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Why this works:
|
|
56
|
+
- Memory loads hierarchically (enterprise → project → rules → user → local).
|
|
57
|
+
- Rules can be **path-scoped** via frontmatter `paths:` so you avoid "giant CLAUDE.md".
|
|
58
|
+
- `settings.local.json` is ideal for experimentation without polluting the team baseline.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 2) CLAUDE.md & rules: treat it like an "agent manifest"
|
|
63
|
+
|
|
64
|
+
### CLAUDE.md best practices
|
|
65
|
+
- **Prefer checklists + short bullets over prose.** Keep it scannable and review-friendly.
|
|
66
|
+
- Include **canonical commands** (build/test/lint, local env setup, common scripts). This avoids repeated tool search.
|
|
67
|
+
- Put "project invariants" here: architecture boundaries, naming conventions, PR policy, test expectations.
|
|
68
|
+
- Keep it stable. Put volatile data (tokens, local URLs, personal notes) in `CLAUDE.local.md`.
|
|
69
|
+
|
|
70
|
+
### `.claude/rules/*.md` best practices
|
|
71
|
+
- **One topic per file** (testing, security, API conventions). Official guidance explicitly recommends this style.
|
|
72
|
+
- Use `paths:` frontmatter only when rules truly are file-type specific.
|
|
73
|
+
- Prefer shallow hierarchies; subdirectories for grouping are fine and recursively discovered.
|
|
74
|
+
|
|
75
|
+
**Path-scoped rule example**
|
|
76
|
+
```md
|
|
77
|
+
---
|
|
78
|
+
paths:
|
|
79
|
+
- "src/api/**/*.ts"
|
|
80
|
+
---
|
|
81
|
+
# API rules
|
|
82
|
+
- Validate inputs (zod)
|
|
83
|
+
- Standard error format
|
|
84
|
+
- OpenAPI doc blocks required
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Imports: structure without bloat
|
|
88
|
+
If you have a large "standards pack," use `@path/to/file.md` imports inside `CLAUDE.md` (max depth is limited). Use imports to factor shared guidance into multiple files without giant prompts.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 3) Settings & scopes: keep policy separate from preference
|
|
93
|
+
|
|
94
|
+
Claude Code settings are hierarchical (managed > CLI flags > local > project > user). Use that intentionally:
|
|
95
|
+
- **Managed scope:** enforce security/compliance org-wide (permissions, marketplace allowlists, hook restrictions).
|
|
96
|
+
- **Project scope:** team-shared permissions, hooks, MCP config, required plugins.
|
|
97
|
+
- **Local scope:** per-machine/per-user overrides for a repo.
|
|
98
|
+
- **User scope:** personal defaults everywhere.
|
|
99
|
+
|
|
100
|
+
### Settings hygiene checklist
|
|
101
|
+
- Put **permissions** and **hooks** in project scope so teammates have consistent guardrails.
|
|
102
|
+
- Keep personal allowlists (e.g., favorite harmless `Bash(...)` commands) in user scope.
|
|
103
|
+
- **Secrets Management:** Never hardcode API keys or secrets in `settings.json` or `plugin.json`. Use environment variables on the host system, which Claude (and MCP servers) can inherit.
|
|
104
|
+
- For monorepos, consider a custom `fileSuggestion` command to speed `@` completion.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 4) Output styles: powerful, but don't use them as a crutch
|
|
109
|
+
|
|
110
|
+
Output styles directly change the system prompt; they're great when you want Claude Code to behave like a different agent (teaching mode, ultra-terse mode). They also trigger reminders to adhere to the style.
|
|
111
|
+
|
|
112
|
+
Best practices:
|
|
113
|
+
- If you're mostly doing software engineering: keep `keep-coding-instructions: true` in custom styles so you don't lose "run tests / verify" guardrails.
|
|
114
|
+
- If the goal is consistent formatting, consider: **CLAUDE.md**, **rules**, or a **UserPromptSubmit hook** that reminds Claude. Use output styles only when you truly want to disable/replace core prompt sections.
|
|
115
|
+
|
|
116
|
+
**Minimal custom output style**
|
|
117
|
+
```md
|
|
118
|
+
---
|
|
119
|
+
name: Ultra-Terse
|
|
120
|
+
description: Minimal text, only actionable output
|
|
121
|
+
keep-coding-instructions: true
|
|
122
|
+
---
|
|
123
|
+
# Instructions
|
|
124
|
+
- Be concise.
|
|
125
|
+
- Prefer code/commands over explanation.
|
|
126
|
+
- Ask only the minimum clarifying questions.
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 5) Slash commands: deterministic "stored prompts"
|
|
132
|
+
|
|
133
|
+
Slash commands are ideal for workflows you *choose* to run. They also support:
|
|
134
|
+
- args (`$ARGUMENTS`, `$1`, `$2`, …)
|
|
135
|
+
- frontmatter (`allowed-tools`, `argument-hint`, `context: fork`)
|
|
136
|
+
- optional bash pre-exec using `!` + backticks
|
|
137
|
+
|
|
138
|
+
### Slash command best practices
|
|
139
|
+
- Treat each command like an API:
|
|
140
|
+
- Define inputs (`argument-hint`)
|
|
141
|
+
- Define outputs ("what success looks like")
|
|
142
|
+
- Declare tool constraints (`allowed-tools`)
|
|
143
|
+
- Use `context: fork` for noisy/expensive commands so they don't pollute your main thread.
|
|
144
|
+
- Be extremely careful with `!` pre-exec:
|
|
145
|
+
- Keep it to read-only / low-risk commands (status, diff, logs).
|
|
146
|
+
- Avoid constructing shell from untrusted args without strict quoting.
|
|
147
|
+
|
|
148
|
+
**Example: safe-ish "commit" command**
|
|
149
|
+
```md
|
|
150
|
+
---
|
|
151
|
+
description: Create a single high-quality commit from current changes
|
|
152
|
+
allowed-tools: Bash(git status:*), Bash(git diff:*), Bash(git commit:*)
|
|
153
|
+
---
|
|
154
|
+
## Context
|
|
155
|
+
- Status: !`git status`
|
|
156
|
+
- Diff: !`git diff`
|
|
157
|
+
|
|
158
|
+
## Task
|
|
159
|
+
Propose a commit message and run the commit.
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## 6) Skills: autonomous playbooks (make them small & surgical)
|
|
165
|
+
|
|
166
|
+
Skills are injected guidance that Claude may apply automatically when your request matches the skill's purpose.
|
|
167
|
+
|
|
168
|
+
### Skill authoring best practices
|
|
169
|
+
- **Progressive disclosure**: keep `SKILL.md` lean; push depth into `references/*.md`.
|
|
170
|
+
*Community experience shows that huge SKILL.md files cause context bloat; a PR explicitly optimized this by moving detail into references and shrinking SKILL.md size.*
|
|
171
|
+
- Use frontmatter carefully:
|
|
172
|
+
- `description:` is your router—write it like a trigger spec.
|
|
173
|
+
- Use `disable-model-invocation: true` for skills you only want loaded manually (safety / cost control).
|
|
174
|
+
- Include *operational* guidance:
|
|
175
|
+
- exact commands to run
|
|
176
|
+
- where files live
|
|
177
|
+
- how to validate success
|
|
178
|
+
- Keep examples realistic and minimal; avoid giant code dumps.
|
|
179
|
+
|
|
180
|
+
### "Gotcha": accidental bash execution from docs
|
|
181
|
+
A real plugin-dev PR removed patterns like `!` + backticks from skill documentation because Claude Code can treat them as executable pre-run snippets—even inside markdown blocks.
|
|
182
|
+
**Best practice:** in skills (and docs), avoid `!` + backticks unless you intentionally want a command executed by a slash command context.
|
|
183
|
+
|
|
184
|
+
### Skills vs. commands vs. subagents vs. MCP (short version)
|
|
185
|
+
- **Skill:** "how to do X" guidance (autonomous).
|
|
186
|
+
- **Command:** "do X now" (explicit).
|
|
187
|
+
- **Subagent:** isolate X in separate context / tool restrictions.
|
|
188
|
+
- **MCP:** provides tools; a Skill teaches the tool usage patterns.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## 7) Subagents: isolate context, tools, and cost
|
|
193
|
+
|
|
194
|
+
Subagents shine for:
|
|
195
|
+
- high-output operations (tests, log scrapes, big greps)
|
|
196
|
+
- parallel research
|
|
197
|
+
- specialized expertise (security review, DB query validation)
|
|
198
|
+
|
|
199
|
+
### Subagent best practices
|
|
200
|
+
- Keep `description` precise: it drives automatic delegation.
|
|
201
|
+
- Use tool restrictions (`tools`, `disallowedTools`) to enforce intent.
|
|
202
|
+
- **Context Cost Awareness:** Subagents spawn a *new* context window. While they keep the main thread clean, if a subagent needs to read 100 files, you pay for those tokens again. Use them for tasks that need *isolation*, not just to hide text.
|
|
203
|
+
- Be aware of background-mode constraints:
|
|
204
|
+
- background subagents inherit permissions and auto-deny missing ones
|
|
205
|
+
- **MCP tools are not available in background subagents** (plan around this)
|
|
206
|
+
- If you attach `skills:` in a subagent file, remember: the full skill content is injected at startup → keep those skills small.
|
|
207
|
+
|
|
208
|
+
**Example: test-runner subagent**
|
|
209
|
+
```md
|
|
210
|
+
---
|
|
211
|
+
name: test-runner
|
|
212
|
+
description: Run tests and summarize failures only
|
|
213
|
+
tools: Bash, Read, Grep, Glob
|
|
214
|
+
model: sonnet
|
|
215
|
+
---
|
|
216
|
+
Run the test suite, capture only failing test output, and summarize the root causes.
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## 8) Hooks: deterministic automation (guardrails, not "magic")
|
|
222
|
+
|
|
223
|
+
Hooks are the most reliable way to ensure repeatable behavior:
|
|
224
|
+
- run formatters after file edits
|
|
225
|
+
- block unsafe commands
|
|
226
|
+
- log/annotate actions for compliance
|
|
227
|
+
- send notifications when Claude is waiting
|
|
228
|
+
|
|
229
|
+
### Hook best practices (high-signal)
|
|
230
|
+
- Make hooks **fast** and **idempotent**. Hooks run often; latency adds up.
|
|
231
|
+
- Prefer **PostToolUse** for formatting/linting (runs after edits).
|
|
232
|
+
- Prefer **PreToolUse** for policy enforcement (block risky Bash/MCP calls).
|
|
233
|
+
- Keep hook logic in scripts with real tests; keep config thin.
|
|
234
|
+
|
|
235
|
+
### Stop hooks: avoid infinite loops
|
|
236
|
+
Claude Code exposes `stop_hook_active` in Stop hook input to indicate a stop hook has already forced continuation. Use it to prevent "retry forever" loops.
|
|
237
|
+
Practical rule: **Stop hook should continue at most once**, then require user intervention.
|
|
238
|
+
|
|
239
|
+
### Security stance
|
|
240
|
+
- Hooks can enforce policy even when the model is "confused."
|
|
241
|
+
- In managed environments, admins can set `allowManagedHooksOnly: true` to block user/project/plugin hooks.
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## 9) Plugins: build "a small product"
|
|
246
|
+
|
|
247
|
+
### Core structure
|
|
248
|
+
A plugin is a directory with a manifest at `.claude-plugin/plugin.json` and optional feature directories at the plugin root.
|
|
249
|
+
|
|
250
|
+
Key best practices:
|
|
251
|
+
- Keep `.claude-plugin/` **manifest-only**. Do **not** nest `commands/`, `skills/`, etc. inside it.
|
|
252
|
+
- Namespacing: plugin commands are generally invoked as `/plugin-name:command` (prefix optional unless collisions).
|
|
253
|
+
- Use semantic versioning in `plugin.json` and keep a `CHANGELOG.md`.
|
|
254
|
+
|
|
255
|
+
### Plugin caching: design for relocatability
|
|
256
|
+
Installed plugins are copied into a cache for integrity/security. Implications:
|
|
257
|
+
- **Never reference files outside the plugin root** via `../..` — they won't exist in cache.
|
|
258
|
+
- Always reference internal scripts/resources using `${CLAUDE_PLUGIN_ROOT}`.
|
|
259
|
+
- If you need shared code across plugins:
|
|
260
|
+
- use symlinks inside the plugin directory (copied during install), or
|
|
261
|
+
- restructure marketplace `source` to include the shared parent directory and declare component paths in the marketplace entry.
|
|
262
|
+
|
|
263
|
+
### Debugging & validation
|
|
264
|
+
- **Enable Verbose Logging:** Use `claude --debug` (CLI) or set `"verbose": true` in your user `settings.json` to see plugin loading, hook registration, and MCP init details.
|
|
265
|
+
- Validate manifests early: `claude plugin validate` (or `/plugin validate`).
|
|
266
|
+
- If skills don't show up: clear cache (`rm -rf ~/.claude/plugins/cache`), restart, reinstall.
|
|
267
|
+
|
|
268
|
+
### Cross-platform scripts
|
|
269
|
+
If you ship hooks/scripts:
|
|
270
|
+
- Use `#!/usr/bin/env bash` when possible.
|
|
271
|
+
- Avoid bashisms if Windows users (Git Bash) are in scope.
|
|
272
|
+
- Prefer portable tools (python, node) when already required, and document prerequisites.
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## 10) Plugin marketplaces: distribution, upgrades, and trust
|
|
277
|
+
|
|
278
|
+
A marketplace is a repo (or URL) containing `.claude-plugin/marketplace.json`.
|
|
279
|
+
|
|
280
|
+
### Marketplace best practices
|
|
281
|
+
- Prefer Git-hosted marketplaces over URL-hosted:
|
|
282
|
+
- Relative `source: "./plugins/my-plugin"` works reliably only for git-based installs.
|
|
283
|
+
- Use `strict` intentionally:
|
|
284
|
+
- `strict: true` → plugin must have its own `plugin.json`
|
|
285
|
+
- `strict: false` → marketplace entry can fully define components (useful for "monorepo" layouts)
|
|
286
|
+
- Provide:
|
|
287
|
+
- ownership metadata (name/email)
|
|
288
|
+
- plugin categories/keywords
|
|
289
|
+
- license + repo homepage
|
|
290
|
+
- clear install instructions + compatibility notes
|
|
291
|
+
|
|
292
|
+
### Updating marketplaces & the "stale cache" gotcha
|
|
293
|
+
A recent Claude Code issue reports self-hosted marketplace caches not being fetched before install/update, causing outdated installs unless you manually update the marketplace checkout. Until this is fixed everywhere:
|
|
294
|
+
- Run `/plugin marketplace update <marketplace>` before installing/updating plugins from self-hosted sources.
|
|
295
|
+
- If you suspect a stale cache, manually `git pull` inside `~/.claude/plugins/marketplaces/<marketplace-name>/`.
|
|
296
|
+
|
|
297
|
+
### Team rollouts (recommended pattern)
|
|
298
|
+
In `.claude/settings.json`:
|
|
299
|
+
- add `extraKnownMarketplaces` so teammates are prompted to install on trust
|
|
300
|
+
- add `enabledPlugins` to suggest default installs
|
|
301
|
+
|
|
302
|
+
In managed settings:
|
|
303
|
+
- restrict marketplace sources with `strictKnownMarketplaces` (allowlist).
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## 11) MCP: integrations with sharp edges (treat as untrusted)
|
|
308
|
+
|
|
309
|
+
### Transport & configuration choices
|
|
310
|
+
- Remote HTTP is recommended; SSE is deprecated where possible.
|
|
311
|
+
- Stdio servers are ideal for local tooling or custom scripts.
|
|
312
|
+
|
|
313
|
+
### MCP security best practices
|
|
314
|
+
- Assume third-party MCP servers are untrusted unless vetted. Official docs explicitly warn about correctness/security and prompt injection risks.
|
|
315
|
+
- Minimize tool surface:
|
|
316
|
+
- prefer "read-only" tools unless you need mutation
|
|
317
|
+
- restrict via permissions and/or managed allowlists/denylists
|
|
318
|
+
- **No Secrets in Config:** Pass API keys and secrets via ENV variables. Do not commit them to `.mcp.json`.
|
|
319
|
+
- Combine MCP + Skills:
|
|
320
|
+
- MCP provides tools
|
|
321
|
+
- Skills teach "how to use our tools safely" (queries, limits, retry policy, etc.)
|
|
322
|
+
|
|
323
|
+
### MCP in plugins
|
|
324
|
+
- Bundle MCP via `.mcp.json` (or inline in plugin.json) and reference local scripts/config with `${CLAUDE_PLUGIN_ROOT}`.
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## 12) LSP in plugins: cheap correctness wins
|
|
329
|
+
|
|
330
|
+
LSP servers give Claude immediate diagnostics and better navigation.
|
|
331
|
+
Best practices:
|
|
332
|
+
- Ensure binaries exist in PATH (install instructions in README).
|
|
333
|
+
- Set `startupTimeout` sensibly for slower servers.
|
|
334
|
+
- Use `extensionToLanguage` mappings carefully in polyglot repos.
|
|
335
|
+
- Keep LSP config in `.lsp.json` unless you truly need inline `plugin.json`.
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
## 13) Performance & context management
|
|
340
|
+
|
|
341
|
+
High-leverage habits:
|
|
342
|
+
- Keep always-loaded content small:
|
|
343
|
+
- CLAUDE.md concise
|
|
344
|
+
- rules modular
|
|
345
|
+
- SKILL.md lean
|
|
346
|
+
- Use subagents to isolate "output floods".
|
|
347
|
+
- Use hooks for formatting/linting instead of "please remember to run prettier."
|
|
348
|
+
- If a workflow grows complex, promote it:
|
|
349
|
+
- from ad-hoc prompt → command
|
|
350
|
+
- from command → plugin
|
|
351
|
+
- from plugin → marketplace with versioning and CI
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## 14) Known pain points & pragmatic workarounds
|
|
356
|
+
|
|
357
|
+
### Marketplace cache / updates
|
|
358
|
+
Symptom: plugin updates don't appear even after bumping version.
|
|
359
|
+
Workarounds:
|
|
360
|
+
- `/plugin marketplace update …`
|
|
361
|
+
- manual `git pull` in the cached marketplace directory
|
|
362
|
+
|
|
363
|
+
### Windows plugin management UX
|
|
364
|
+
There are reports of plugin uninstall/removal problems in the UI on Windows.
|
|
365
|
+
Workaround:
|
|
366
|
+
- Use CLI commands (`claude plugin uninstall … --scope …`) where the UI gets stuck.
|
|
367
|
+
|
|
368
|
+
### Claude Code on the web: plugin install hangs
|
|
369
|
+
A freshly opened issue reports that installing plugins in web-based Claude Code environments can hang the agent.
|
|
370
|
+
Workaround patterns:
|
|
371
|
+
- Skip plugin installs in cloud hooks (detect env) and pre-bake dependencies where possible.
|
|
372
|
+
- If you need plugins, prefer local Claude Code execution until the web install path is stable.
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
376
|
+
## 15) Templates (copy/paste)
|
|
377
|
+
|
|
378
|
+
### Minimal plugin skeleton
|
|
379
|
+
```
|
|
380
|
+
my-plugin/
|
|
381
|
+
├─ .claude-plugin/
|
|
382
|
+
│ └─ plugin.json
|
|
383
|
+
├─ commands/
|
|
384
|
+
│ └─ hello.md
|
|
385
|
+
├─ skills/
|
|
386
|
+
│ └─ my-skill/
|
|
387
|
+
│ ├─ SKILL.md
|
|
388
|
+
│ └─ references/
|
|
389
|
+
│ └─ deep-dive.md
|
|
390
|
+
├─ hooks/
|
|
391
|
+
│ └─ hooks.json
|
|
392
|
+
└─ scripts/
|
|
393
|
+
└─ format.sh
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### Minimal marketplace skeleton
|
|
397
|
+
```
|
|
398
|
+
my-marketplace/
|
|
399
|
+
├─ .claude-plugin/
|
|
400
|
+
│ └─ marketplace.json
|
|
401
|
+
└─ plugins/
|
|
402
|
+
└─ my-plugin/
|
|
403
|
+
└─ ...plugin contents...
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
### "Progressive disclosure" skill skeleton
|
|
407
|
+
```md
|
|
408
|
+
---
|
|
409
|
+
name: my-skill
|
|
410
|
+
description: Use when the user asks to <X>; avoid when <Y>
|
|
411
|
+
disable-model-invocation: false
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
# Purpose
|
|
415
|
+
Teach Claude how to <X> safely and consistently.
|
|
416
|
+
|
|
417
|
+
# Quick recipe
|
|
418
|
+
1) Do A
|
|
419
|
+
2) Validate B
|
|
420
|
+
3) Only then do C
|
|
421
|
+
|
|
422
|
+
# References
|
|
423
|
+
- See references/deep-dive.md for edge cases and detailed workflows.
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
## References (source material)
|
|
429
|
+
|
|
430
|
+
Official docs (Claude Code):
|
|
431
|
+
- https://code.claude.com/docs/
|
|
432
|
+
- Plugins: https://code.claude.com/docs/en/plugins
|
|
433
|
+
- Plugins reference: https://code.claude.com/docs/en/plugins-reference
|
|
434
|
+
- Discover plugins: https://code.claude.com/docs/en/discover-plugins
|
|
435
|
+
- Plugin marketplaces: https://code.claude.com/docs/en/plugin-marketplaces
|
|
436
|
+
- Skills: https://code.claude.com/docs/en/skills
|
|
437
|
+
- Subagents: https://code.claude.com/docs/en/sub-agents
|
|
438
|
+
- Hooks: https://code.claude.com/docs/en/hooks and https://code.claude.com/docs/en/hooks-guide
|
|
439
|
+
- Memory: https://code.claude.com/docs/en/memory
|
|
440
|
+
- Settings: https://code.claude.com/docs/en/settings
|
|
441
|
+
- MCP: https://code.claude.com/docs/en/mcp
|
|
442
|
+
- Output styles: https://code.claude.com/docs/en/output-styles
|
|
443
|
+
- Security: https://code.claude.com/docs/en/security
|
|
444
|
+
|
|
445
|
+
GitHub issues (examples of common failure modes / UX gaps):
|
|
446
|
+
- Plugin marketplace cache: https://github.com/anthropics/claude-code/issues/16866
|
|
447
|
+
- Web env plugin install hang: https://github.com/anthropics/claude-code/issues/18088
|
|
448
|
+
- Windows plugin mgmt UX: https://github.com/anthropics/claude-code/issues/9426
|
|
449
|
+
|
|
450
|
+
Community signals (toolkits + discussion):
|
|
451
|
+
- plugin-dev toolkit (community expansion): https://github.com/sjnims/plugin-dev
|
|
452
|
+
- PR note on slimming skill docs / removing accidental bash triggers: https://github.com/anthropics/claude-code/pull/13204
|
|
453
|
+
- Output styles discussion: https://github.com/anthropics/claude-code/issues/10721
|
|
454
|
+
- Reddit thread re output style changes: https://www.reddit.com/r/ClaudeCode/comments/1okvlib/important_2030_please_keep_the_outputstyle/
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
*Last reviewed: 2026-01-15. Claude Code evolves quickly; validate against current release notes when making policy or platform commitments.*
|
package/docs/cli.md
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# CLI Reference
|
|
2
|
+
|
|
3
|
+
Complete reference for the Bluera Knowledge CLI tool (npm package).
|
|
4
|
+
|
|
5
|
+
> **Note:** When using CLI without Claude Code installed, web crawling uses simple BFS mode. Install Claude Code to unlock `--crawl` (AI-guided URL selection) and `--extract` (AI content extraction) instructions.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Global install (CLI available everywhere)
|
|
11
|
+
npm install -g bluera-knowledge
|
|
12
|
+
|
|
13
|
+
# Or project install
|
|
14
|
+
npm install --save-dev bluera-knowledge
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Store Management
|
|
20
|
+
|
|
21
|
+
### Create a Store
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Add a Git repository
|
|
25
|
+
bluera-knowledge store create react --type repo --source https://github.com/facebook/react
|
|
26
|
+
|
|
27
|
+
# Add a Git repository with specific branch
|
|
28
|
+
bluera-knowledge store create react-canary --type repo --source https://github.com/facebook/react --branch canary
|
|
29
|
+
|
|
30
|
+
# Add a local folder
|
|
31
|
+
bluera-knowledge store create my-docs --type file --source ./docs
|
|
32
|
+
|
|
33
|
+
# Add a web crawl
|
|
34
|
+
bluera-knowledge store create fastapi-docs --type web --source https://fastapi.tiangolo.com
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Create Options:**
|
|
38
|
+
|
|
39
|
+
| Option | Description |
|
|
40
|
+
|--------|-------------|
|
|
41
|
+
| `-t, --type <type>` | Store type: `file`, `repo`, or `web` (required) |
|
|
42
|
+
| `-s, --source <path>` | Local path or URL (required) |
|
|
43
|
+
| `-b, --branch <branch>` | Git branch to clone (repo stores only) |
|
|
44
|
+
| `-d, --description <desc>` | Optional store description |
|
|
45
|
+
| `--tags <tags>` | Comma-separated tags for filtering |
|
|
46
|
+
|
|
47
|
+
### List Stores
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
bluera-knowledge store list
|
|
51
|
+
bluera-knowledge store list --type repo # Filter by type
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Store Info
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
bluera-knowledge store info react
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Delete a Store
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Interactive deletion (prompts for confirmation in TTY mode)
|
|
64
|
+
bluera-knowledge store delete old-store
|
|
65
|
+
|
|
66
|
+
# Force delete without confirmation
|
|
67
|
+
bluera-knowledge store delete old-store --force
|
|
68
|
+
bluera-knowledge store delete old-store -y
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Delete Options:**
|
|
72
|
+
|
|
73
|
+
| Option | Description |
|
|
74
|
+
|--------|-------------|
|
|
75
|
+
| `-f, --force` | Delete without confirmation prompt |
|
|
76
|
+
| `-y, --yes` | Alias for `--force` |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Indexing
|
|
81
|
+
|
|
82
|
+
### Index a Store
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Re-index a store (only changed files)
|
|
86
|
+
bluera-knowledge index react
|
|
87
|
+
|
|
88
|
+
# Force re-index all files (ignores cache)
|
|
89
|
+
bluera-knowledge index react --force
|
|
90
|
+
|
|
91
|
+
# Watch for changes and auto-reindex
|
|
92
|
+
bluera-knowledge index watch react
|
|
93
|
+
bluera-knowledge index watch react --debounce 2000 # Custom debounce (default: 1000ms)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Index Options:**
|
|
97
|
+
|
|
98
|
+
| Option | Description |
|
|
99
|
+
|--------|-------------|
|
|
100
|
+
| `-f, --force` | Re-index all files (ignore incremental cache) |
|
|
101
|
+
|
|
102
|
+
**Watch Options:**
|
|
103
|
+
|
|
104
|
+
| Option | Description |
|
|
105
|
+
|--------|-------------|
|
|
106
|
+
| `--debounce <ms>` | Debounce delay for file changes (default: 1000ms) |
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Searching
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Search across all stores
|
|
114
|
+
bluera-knowledge search "how does useEffect work"
|
|
115
|
+
|
|
116
|
+
# Search specific stores
|
|
117
|
+
bluera-knowledge search "routing" --stores react,vue
|
|
118
|
+
|
|
119
|
+
# Get more results with full content
|
|
120
|
+
bluera-knowledge search "middleware" --limit 20 --include-content
|
|
121
|
+
|
|
122
|
+
# Filter irrelevant results (returns empty if nothing is truly relevant)
|
|
123
|
+
bluera-knowledge search "kubernetes deployment" --min-relevance 0.4
|
|
124
|
+
|
|
125
|
+
# Get JSON output with confidence and raw scores
|
|
126
|
+
bluera-knowledge search "express middleware" --format json
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Search Options:**
|
|
130
|
+
|
|
131
|
+
| Option | Description |
|
|
132
|
+
|--------|-------------|
|
|
133
|
+
| `-s, --stores <stores>` | Comma-separated store names/IDs |
|
|
134
|
+
| `-m, --mode <mode>` | `hybrid` (default), `vector`, or `fts` |
|
|
135
|
+
| `-n, --limit <count>` | Max results (default: 10) |
|
|
136
|
+
| `-t, --threshold <score>` | Min normalized score (0-1) |
|
|
137
|
+
| `--min-relevance <score>` | Min raw cosine similarity (0-1) |
|
|
138
|
+
| `--include-content` | Show full content in results |
|
|
139
|
+
| `--detail <level>` | `minimal`, `contextual`, or `full` |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Global Options
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
--config <path> # Custom config file
|
|
147
|
+
--data-dir <path> # Custom data directory
|
|
148
|
+
--project-root <path> # Project root for store definitions (required for sync)
|
|
149
|
+
--format <format> # Output format: json | table | plain
|
|
150
|
+
--quiet # Suppress non-essential output
|
|
151
|
+
--verbose # Enable verbose logging
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## When to Use CLI vs Plugin
|
|
157
|
+
|
|
158
|
+
**Use CLI when:**
|
|
159
|
+
- Using an editor other than Claude Code (VSCode, Cursor, etc.)
|
|
160
|
+
- Integrating into CI/CD pipelines
|
|
161
|
+
- Scripting or automation
|
|
162
|
+
- Pre-indexing dependencies for teams
|
|
163
|
+
|
|
164
|
+
**Use Plugin when:**
|
|
165
|
+
- Working within Claude Code
|
|
166
|
+
- Want slash commands (`/bluera-knowledge:search`)
|
|
167
|
+
- Need Claude to automatically query your knowledge base
|
|
168
|
+
- Want Skills to guide optimal usage
|
|
169
|
+
|
|
170
|
+
Both interfaces use the same underlying services, so you can switch between them seamlessly.
|