@polderlabs/bizar 6.2.4 → 6.3.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/.claude/CLAUDE.md +15 -0
- package/.claude/agents/_shared/AGENT_BASELINE.md +168 -0
- package/.claude/agents/_shared/CLAUDE_TOOLS.md +412 -0
- package/.claude/agents/_shared/SKILLS.md +109 -0
- package/.claude/agents/agent-browser.md +80 -0
- package/.claude/agents/baldr.md +49 -0
- package/.claude/agents/forseti.md +51 -0
- package/.claude/agents/frigg.md +42 -0
- package/.claude/agents/heimdall.md +33 -0
- package/.claude/agents/hermod.md +53 -0
- package/.claude/agents/mimir.md +49 -0
- package/.claude/agents/odin.md +287 -0
- package/.claude/agents/quick.md +34 -0
- package/.claude/agents/semble-search.md +50 -0
- package/.claude/agents/thor.md +53 -0
- package/.claude/agents/tyr.md +56 -0
- package/.claude/agents/vidarr.md +54 -0
- package/.claude/agents/vor.md +53 -0
- package/.claude/commands/audit.md +25 -0
- package/.claude/commands/bizar.md +22 -0
- package/.claude/commands/explain.md +17 -0
- package/.claude/commands/init.md +29 -0
- package/.claude/commands/learn.md +44 -0
- package/.claude/commands/plan.md +35 -0
- package/.claude/commands/plow-through.md +50 -0
- package/.claude/commands/pr-review.md +49 -0
- package/.claude/commands/setup-provider.md +96 -0
- package/.claude/commands/tailscale-serve.md +100 -0
- package/.claude/commands/team.md +132 -0
- package/.claude/commands/test.md +62 -0
- package/.claude/commands/validate.md +68 -0
- package/.claude/commands/visual-plan.md +24 -0
- package/.claude/hooks/README.md +92 -0
- package/.claude/hooks/posttooluse-editwrite.mjs +91 -0
- package/.claude/hooks/pretooluse-bash.mjs +81 -0
- package/.claude/hooks/pretooluse-editwrite.mjs +139 -0
- package/.claude/hooks/sessionend-recall.mjs +74 -0
- package/.claude/hooks/sessionstart-prime.mjs +80 -0
- package/.claude/hooks/userpromptsubmit-tag.mjs +80 -0
- package/.claude/settings.json +116 -0
- package/.claude/skills/9router/SKILL.md +80 -0
- package/.claude/skills/9router-chat/SKILL.md +73 -0
- package/.claude/skills/9router-embeddings/SKILL.md +69 -0
- package/.claude/skills/9router-image/SKILL.md +86 -0
- package/.claude/skills/9router-stt/SKILL.md +79 -0
- package/.claude/skills/9router-tts/SKILL.md +80 -0
- package/.claude/skills/9router-web-fetch/SKILL.md +99 -0
- package/.claude/skills/9router-web-search/SKILL.md +91 -0
- package/.claude/skills/bizar/README.md +9 -0
- package/.claude/skills/bizar/SKILL.md +450 -0
- package/.claude/skills/cpp-coding-standards/README.md +28 -0
- package/.claude/skills/cpp-coding-standards/SKILL.md +634 -0
- package/.claude/skills/cpp-coding-standards/references/concurrency.md +320 -0
- package/.claude/skills/cpp-coding-standards/references/error-handling.md +229 -0
- package/.claude/skills/cpp-coding-standards/references/memory-safety.md +216 -0
- package/.claude/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
- package/.claude/skills/cpp-coding-standards/references/review-checklist.md +96 -0
- package/.claude/skills/cpp-testing/README.md +28 -0
- package/.claude/skills/cpp-testing/SKILL.md +304 -0
- package/.claude/skills/cpp-testing/references/coverage.md +370 -0
- package/.claude/skills/cpp-testing/references/framework-compare.md +175 -0
- package/.claude/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
- package/.claude/skills/cpp-testing/references/mocking.md +364 -0
- package/.claude/skills/cpp-testing/references/tdd-workflow.md +308 -0
- package/.claude/skills/cubesandbox/SKILL.md +148 -0
- package/.claude/skills/embedded-esp-idf/README.md +41 -0
- package/.claude/skills/embedded-esp-idf/SKILL.md +439 -0
- package/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
- package/.claude/skills/embedded-esp-idf/references/host-tests.md +164 -0
- package/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
- package/.claude/skills/embedded-esp-idf/references/kconfig.md +159 -0
- package/.claude/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
- package/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
- package/.claude/skills/embedded-esp-idf/references/nvs.md +121 -0
- package/.claude/skills/embedded-esp-idf/references/packed-structs.md +192 -0
- package/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
- package/.claude/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
- package/.claude/skills/glyph/SKILL.md +163 -0
- package/.claude/skills/harness-engineering/SKILL.md +143 -0
- package/.claude/skills/lightrag/SKILL.md +81 -0
- package/.claude/skills/memory-protocol/SKILL.md +105 -0
- package/.claude/skills/obsidian/SKILL.md +306 -0
- package/.claude/skills/read-the-damn-docs/SKILL.md +113 -0
- package/.claude/skills/self-improvement/SKILL.md +64 -0
- package/README.md +87 -59
- package/bizar-dash/dist/assets/{EnvVarsSection-DXM8gRm_.js → EnvVarsSection-B58aiJiE.js} +1 -1
- package/bizar-dash/dist/assets/{EnvVarsSection-DXM8gRm_.js.map → EnvVarsSection-B58aiJiE.js.map} +1 -1
- package/bizar-dash/dist/assets/{MobileChat-BnKN_Ks_.js → MobileChat-BJrqwVDd.js} +1 -1
- package/bizar-dash/dist/assets/{MobileChat-BnKN_Ks_.js.map → MobileChat-BJrqwVDd.js.map} +1 -1
- package/bizar-dash/dist/assets/{MobileSettings-DjCPxC-Q.js → MobileSettings-CEQNJNLJ.js} +1 -1
- package/bizar-dash/dist/assets/{MobileSettings-DjCPxC-Q.js.map → MobileSettings-CEQNJNLJ.js.map} +1 -1
- package/bizar-dash/dist/assets/{main-DYiZqMrn.js → main-IvfQAOfy.js} +1 -1
- package/bizar-dash/dist/assets/{main-DYiZqMrn.js.map → main-IvfQAOfy.js.map} +1 -1
- package/bizar-dash/dist/assets/{markdown-C6mXtQxD.js → markdown-tOLaD6nm.js} +1 -1
- package/bizar-dash/dist/assets/{markdown-C6mXtQxD.js.map → markdown-tOLaD6nm.js.map} +1 -1
- package/bizar-dash/dist/assets/{mobile-CMHqtLV2.js → mobile-DYCHcUpq.js} +1 -1
- package/bizar-dash/dist/assets/{mobile-CMHqtLV2.js.map → mobile-DYCHcUpq.js.map} +1 -1
- package/bizar-dash/dist/assets/{mobile-layout-3jIhHX_p.js → mobile-layout-CBHjpwsb.js} +2 -2
- package/bizar-dash/dist/assets/{mobile-layout-3jIhHX_p.js.map → mobile-layout-CBHjpwsb.js.map} +1 -1
- package/bizar-dash/dist/assets/{useSlashCommands-DtITw8Xv.js → useSlashCommands-Bd7_FA6U.js} +2 -2
- package/bizar-dash/dist/assets/{useSlashCommands-DtITw8Xv.js.map → useSlashCommands-Bd7_FA6U.js.map} +1 -1
- package/bizar-dash/dist/assets/{vendor-CeHGtduv.js → vendor-C843201K.js} +12 -12
- package/bizar-dash/dist/assets/vendor-C843201K.js.map +1 -0
- package/bizar-dash/dist/index.html +6 -6
- package/bizar-dash/dist/mobile.html +2 -2
- package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/bizar-dash/src/server/api.mjs +4 -4
- package/bizar-dash/src/server/background-store.mjs +15 -16
- package/bizar-dash/src/server/bg-poller.mjs +25 -35
- package/bizar-dash/src/server/bg-retry.mjs +66 -194
- package/bizar-dash/src/server/claude-bg-spawner.mjs +390 -0
- package/bizar-dash/src/server/claude-info.mjs +412 -0
- package/bizar-dash/src/server/{cline-runner.mjs → claude-runner.mjs} +53 -48
- package/bizar-dash/src/server/claude-sdk.mjs +191 -0
- package/bizar-dash/src/server/providers-store.mjs +22 -49
- package/bizar-dash/src/server/routes/background.mjs +24 -20
- package/bizar-dash/src/server/routes/chat.mjs +223 -326
- package/bizar-dash/src/server/routes/claude-session-detail.mjs +329 -0
- package/bizar-dash/src/server/routes/claude-sessions.mjs +259 -0
- package/bizar-dash/src/server/routes/tasks.mjs +20 -28
- package/bizar-dash/src/server/task-delegator.mjs +76 -77
- package/bizar-dash/src/web/components/chat/useChat.ts +23 -27
- package/bizar-dash/src/web/views/Chat.tsx +8 -8
- package/cli/bin.mjs +31 -18
- package/cli/commands/claude-cmd.mjs +348 -0
- package/cli/commands/install.mjs +12 -11
- package/cli/commands/sandbox.mjs +220 -0
- package/cli/commands/validate.mjs +252 -288
- package/cli/dev-link.test.mjs +11 -11
- package/cli/doctor.mjs +131 -213
- package/cli/install.mjs +33 -37
- package/cli/install.test.mjs +9 -9
- package/cli/provision-claude.mjs +893 -0
- package/cli/provision.mjs +330 -226
- package/cli/provision.test.mjs +102 -0
- package/cli/utils.mjs +72 -58
- package/config/AGENTS.md +28 -28
- package/config/agents/_shared/AGENT_BASELINE.md +104 -684
- package/config/skills/bizar/SKILL.md +197 -0
- package/config/skills/cubesandbox/SKILL.md +148 -0
- package/config/skills/harness-engineering/SKILL.md +142 -0
- package/install.sh +66 -44
- package/package.json +19 -11
- package/packages/sdk/ARCHITECTURE.md +40 -36
- package/packages/sdk/package-lock.json +32 -0
- package/packages/sdk/package.json +15 -5
- package/{plugins/bizar → packages/sdk}/src/dangerous-patterns.ts +6 -28
- package/packages/sdk/src/fingerprint.ts +0 -0
- package/packages/sdk/src/index.ts +38 -73
- package/packages/sdk/src/mcp/bin.ts +51 -0
- package/packages/sdk/src/mcp/server.ts +498 -0
- package/{plugins/bizar/src/memory-vault.ts → packages/sdk/src/memory/index.ts} +18 -21
- package/packages/sdk/tests/sdk.test.mjs +148 -0
- package/packages/sdk/vitest.config.ts +1 -1
- package/scripts/bh-full-e2e.mjs +166 -363
- package/scripts/check-deps.mjs +28 -46
- package/scripts/mirror-claude-md.sh +78 -0
- package/scripts/test-in-container.sh +157 -0
- package/templates/clean-state-checklist.md +3 -3
- package/templates/sprint-contract.md +2 -2
- package/bizar-dash/.bizar/activity.log +0 -3
- package/bizar-dash/.omx/logs/omx-2026-07-07.jsonl +0 -1
- package/bizar-dash/.omx/state/session.json +0 -10
- package/bizar-dash/bizar-design/EXPLANATION.md +0 -307
- package/bizar-dash/bizar-design/INSTRUCTIONS.md +0 -149
- package/bizar-dash/bizar-design/canvas.html +0 -281
- package/bizar-dash/bizar-design/canvas.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/components.css +0 -1665
- package/bizar-dash/bizar-design/components.html +0 -557
- package/bizar-dash/bizar-design/components.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/desktop/agents.html +0 -74
- package/bizar-dash/bizar-design/desktop/agents.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/desktop/memory.html +0 -75
- package/bizar-dash/bizar-design/desktop/memory.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/desktop/metrics.html +0 -63
- package/bizar-dash/bizar-design/desktop/metrics.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/desktop/overview.html +0 -95
- package/bizar-dash/bizar-design/desktop/overview.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/desktop/settings.html +0 -70
- package/bizar-dash/bizar-design/desktop/settings.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/icons.svg +0 -44
- package/bizar-dash/bizar-design/index.html +0 -192
- package/bizar-dash/bizar-design/index.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/mobile/agents.html +0 -29
- package/bizar-dash/bizar-design/mobile/agents.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/mobile/memory.html +0 -28
- package/bizar-dash/bizar-design/mobile/memory.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/mobile/metrics.html +0 -29
- package/bizar-dash/bizar-design/mobile/metrics.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/mobile/overview.html +0 -33
- package/bizar-dash/bizar-design/mobile/overview.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/mobile/settings.html +0 -28
- package/bizar-dash/bizar-design/mobile/settings.html.artifact.json +0 -19
- package/bizar-dash/bizar-design/prototype.js +0 -114
- package/bizar-dash/bizar-design/tokens.css +0 -106
- package/bizar-dash/dist/assets/vendor-CeHGtduv.js.map +0 -1
- package/bizar-dash/node_modules/.package-lock.json +0 -6
- package/bizar-dash/package-lock.json +0 -6
- package/bizar-dash/src/server/cline-sdk.mjs +0 -132
- package/bizar-dash/src/server/routes/cline-session-detail.mjs +0 -559
- package/bizar-dash/src/server/routes/cline-sessions.mjs +0 -291
- package/cli/commands/cline-cmd.mjs +0 -289
- package/cli/commands/validate.test.mjs +0 -344
- package/cli/doctor.test.mjs +0 -350
- package/config/cline.json.template +0 -342
- package/packages/sdk/src/client.ts +0 -188
- package/packages/sdk/src/cline-events.ts +0 -134
- package/packages/sdk/src/cline-types.ts +0 -66
- package/packages/sdk/src/cline.ts +0 -339
- package/packages/sdk/src/errors.ts +0 -129
- package/packages/sdk/src/events.ts +0 -153
- package/packages/sdk/src/types.ts +0 -176
- package/packages/sdk/tests/client.test.ts +0 -217
- package/packages/sdk/tests/errors.test.ts +0 -108
- package/packages/sdk/tests/events.test.ts +0 -139
- package/packages/sdk/tests/fixtures/fetch-mock.ts +0 -152
- package/packages/sdk/tests/fixtures/sse-mock.ts +0 -30
- package/plugins/bizar/ARCHITECTURE.md +0 -142
- package/plugins/bizar/CONSTRAINTS.md +0 -67
- package/plugins/bizar/LICENSE +0 -21
- package/plugins/bizar/README.md +0 -448
- package/plugins/bizar/index.ts +0 -872
- package/plugins/bizar/package.json +0 -39
- package/plugins/bizar/scripts/check-forbidden-imports.sh +0 -33
- package/plugins/bizar/src/background-state.ts +0 -641
- package/plugins/bizar/src/background.ts +0 -1806
- package/plugins/bizar/src/cline-runner.ts +0 -203
- package/plugins/bizar/src/clineruntime.ts +0 -227
- package/plugins/bizar/src/commands-impl.ts +0 -151
- package/plugins/bizar/src/commands.ts +0 -1799
- package/plugins/bizar/src/compaction.d.mts +0 -48
- package/plugins/bizar/src/compaction.mjs +0 -192
- package/plugins/bizar/src/dashboard-client.ts +0 -233
- package/plugins/bizar/src/event-stream.ts +0 -606
- package/plugins/bizar/src/fingerprint.ts +0 -120
- package/plugins/bizar/src/handoff.ts +0 -79
- package/plugins/bizar/src/hooks/memory-flush-on-compact.ts +0 -123
- package/plugins/bizar/src/hooks/memory-inject.ts +0 -247
- package/plugins/bizar/src/hooks/memory-write-on-end.ts +0 -188
- package/plugins/bizar/src/hooks/skill-curator.ts +0 -180
- package/plugins/bizar/src/http-client.ts +0 -467
- package/plugins/bizar/src/key-rotation.ts +0 -218
- package/plugins/bizar/src/logger.ts +0 -144
- package/plugins/bizar/src/loop-engineering.ts +0 -241
- package/plugins/bizar/src/loop.ts +0 -176
- package/plugins/bizar/src/mistake-recovery.ts +0 -98
- package/plugins/bizar/src/odin.ts +0 -227
- package/plugins/bizar/src/options.ts +0 -470
- package/plugins/bizar/src/plan-fs.ts +0 -323
- package/plugins/bizar/src/reasoning-clean.ts +0 -454
- package/plugins/bizar/src/report.ts +0 -178
- package/plugins/bizar/src/research-prompt.ts +0 -35
- package/plugins/bizar/src/serve-info.ts +0 -228
- package/plugins/bizar/src/serve.ts +0 -496
- package/plugins/bizar/src/settings.ts +0 -349
- package/plugins/bizar/src/state.ts +0 -298
- package/plugins/bizar/src/tool-discipline.ts +0 -105
- package/plugins/bizar/src/tools/agent-browser.ts +0 -315
- package/plugins/bizar/src/tools/bg-collect.ts +0 -131
- package/plugins/bizar/src/tools/bg-get-comments.ts +0 -266
- package/plugins/bizar/src/tools/bg-kill.ts +0 -116
- package/plugins/bizar/src/tools/bg-pause.ts +0 -99
- package/plugins/bizar/src/tools/bg-report-progress.ts +0 -115
- package/plugins/bizar/src/tools/bg-resume.ts +0 -94
- package/plugins/bizar/src/tools/bg-send-message.ts +0 -223
- package/plugins/bizar/src/tools/bg-spawn.ts +0 -502
- package/plugins/bizar/src/tools/bg-status.ts +0 -130
- package/plugins/bizar/src/tools/graph-query.ts +0 -278
- package/plugins/bizar/src/tools/loop-engineering.ts +0 -193
- package/plugins/bizar/src/tools/memory-list.ts +0 -43
- package/plugins/bizar/src/tools/memory-read.ts +0 -69
- package/plugins/bizar/src/tools/memory-search.ts +0 -47
- package/plugins/bizar/src/tools/memory-write.ts +0 -54
- package/plugins/bizar/src/tools/open-kb.ts +0 -198
- package/plugins/bizar/src/tools/plan-action.ts +0 -785
- package/plugins/bizar/src/tools/read-glyph-feedback.ts +0 -191
- package/plugins/bizar/src/tools/team-spawn.ts +0 -73
- package/plugins/bizar/src/tools/team-status.ts +0 -76
- package/plugins/bizar/src/tools/wait-for-feedback.ts +0 -415
- package/plugins/bizar/src/trajectory.ts +0 -104
- package/plugins/bizar/tests/README.md +0 -99
- package/plugins/bizar/tests/attach-handler-bug.test.ts +0 -169
- package/plugins/bizar/tests/background-state.test.ts +0 -277
- package/plugins/bizar/tests/background.test.ts +0 -402
- package/plugins/bizar/tests/block.test.ts +0 -195
- package/plugins/bizar/tests/canonical-key-order.test.ts +0 -75
- package/plugins/bizar/tests/clineruntime-config.test.ts +0 -283
- package/plugins/bizar/tests/commands-impl.test.ts +0 -316
- package/plugins/bizar/tests/commands.test.ts +0 -584
- package/plugins/bizar/tests/compaction.test.ts +0 -264
- package/plugins/bizar/tests/config.test.ts +0 -128
- package/plugins/bizar/tests/dashboard-client.test.ts +0 -159
- package/plugins/bizar/tests/dispose.test.ts +0 -336
- package/plugins/bizar/tests/event-stream.test.ts +0 -409
- package/plugins/bizar/tests/event.test.ts +0 -262
- package/plugins/bizar/tests/fingerprint.test.ts +0 -162
- package/plugins/bizar/tests/http-client.test.ts +0 -404
- package/plugins/bizar/tests/init-helpers.test.ts +0 -203
- package/plugins/bizar/tests/integration/slash-command.test.ts +0 -349
- package/plugins/bizar/tests/integration/tool-routing.test.ts +0 -98
- package/plugins/bizar/tests/key-rotation.test.ts +0 -396
- package/plugins/bizar/tests/loop-engineering.test.ts +0 -168
- package/plugins/bizar/tests/loop.test.ts +0 -397
- package/plugins/bizar/tests/memory-write-on-end.test.ts +0 -92
- package/plugins/bizar/tests/mistake-recovery.test.ts +0 -116
- package/plugins/bizar/tests/odin.test.ts +0 -125
- package/plugins/bizar/tests/options.test.ts +0 -329
- package/plugins/bizar/tests/reasoning-clean.test.ts +0 -422
- package/plugins/bizar/tests/safety.test.ts +0 -256
- package/plugins/bizar/tests/serve.test.ts +0 -339
- package/plugins/bizar/tests/settings.test.ts +0 -351
- package/plugins/bizar/tests/stall-think.test.ts +0 -750
- package/plugins/bizar/tests/state.test.ts +0 -276
- package/plugins/bizar/tests/tool-discipline.test.ts +0 -77
- package/plugins/bizar/tests/tools/agent-browser.test.ts +0 -98
- package/plugins/bizar/tests/tools/bg-collect.test.ts +0 -337
- package/plugins/bizar/tests/tools/bg-get-comments.test.ts +0 -485
- package/plugins/bizar/tests/tools/bg-kill.test.ts +0 -235
- package/plugins/bizar/tests/tools/bg-pause.test.ts +0 -61
- package/plugins/bizar/tests/tools/bg-report-progress.test.ts +0 -79
- package/plugins/bizar/tests/tools/bg-resume.test.ts +0 -40
- package/plugins/bizar/tests/tools/bg-send-message.test.ts +0 -116
- package/plugins/bizar/tests/tools/bg-spawn-delegation.test.ts +0 -147
- package/plugins/bizar/tests/tools/bg-spawn-http.test.ts +0 -233
- package/plugins/bizar/tests/tools/bg-spawn.test.ts +0 -311
- package/plugins/bizar/tests/tools/bg-status.test.ts +0 -217
- package/plugins/bizar/tests/tools/cline-runner.test.ts +0 -115
- package/plugins/bizar/tests/tools/plan-action.test.ts +0 -599
- package/plugins/bizar/tests/tools/read-glyph-feedback.test.ts +0 -253
- package/plugins/bizar/tests/tools/wait-for-feedback.test.ts +0 -390
- package/plugins/bizar/tests/update-deadlock.test.ts +0 -151
- package/plugins/bizar/tsconfig.json +0 -29
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 9router-web-fetch
|
|
3
|
+
description: Fetch URL → markdown / text / HTML via 9Router /v1/web/fetch using Firecrawl / Jina Reader / Tavily Extract / Exa Contents. Use when the user wants to scrape a webpage, extract URL content, read article, or convert a URL to markdown.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 9Router — Web Fetch
|
|
7
|
+
|
|
8
|
+
Requires `NINEROUTER_URL` (and `NINEROUTER_KEY` if auth enabled). See https://raw.githubusercontent.com/decolua/9router/refs/heads/master/skills/9router/SKILL.md for setup.
|
|
9
|
+
|
|
10
|
+
## Discover
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
curl $NINEROUTER_URL/v1/models/web | jq '.data[] | select(.kind=="webFetch") | .id'
|
|
14
|
+
# Per-provider params
|
|
15
|
+
curl "$NINEROUTER_URL/v1/models/info?id=firecrawl/fetch"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
IDs end in `/fetch` (e.g. `firecrawl/fetch`, `jina/fetch`). `fetch-combo` chains providers with auto-fallback.
|
|
19
|
+
|
|
20
|
+
## Endpoint
|
|
21
|
+
|
|
22
|
+
`POST $NINEROUTER_URL/v1/web/fetch`
|
|
23
|
+
|
|
24
|
+
| Field | Required | Notes |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| `model` (or `provider`) | yes | from `/v1/models/web` (e.g. `firecrawl` or `jina-reader`) |
|
|
27
|
+
| `url` | yes | URL to extract |
|
|
28
|
+
| `format` | no | `markdown` (default) / `text` / `html` |
|
|
29
|
+
| `max_characters` | no | truncate output |
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
### Jina Reader
|
|
34
|
+
```bash
|
|
35
|
+
curl -X POST $NINEROUTER_URL/v1/web/fetch \
|
|
36
|
+
-H "Authorization: Bearer $NINEROUTER_KEY" \
|
|
37
|
+
-H "Content-Type: application/json" \
|
|
38
|
+
-d '{"model":"jina-reader","url":"https://9router.com","format":"markdown"}'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Exa
|
|
42
|
+
```bash
|
|
43
|
+
curl -X POST $NINEROUTER_URL/v1/web/fetch \
|
|
44
|
+
-H "Authorization: Bearer $NINEROUTER_KEY" \
|
|
45
|
+
-H "Content-Type: application/json" \
|
|
46
|
+
-d '{"model":"exa","url":"https://example.com","format":"markdown","max_characters":0}'
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Firecrawl
|
|
50
|
+
```bash
|
|
51
|
+
curl -X POST $NINEROUTER_URL/v1/web/fetch \
|
|
52
|
+
-H "Authorization: Bearer $NINEROUTER_KEY" \
|
|
53
|
+
-H "Content-Type: application/json" \
|
|
54
|
+
-d '{"model":"firecrawl","url":"https://example.com","format":"markdown","max_characters":0}'
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Tavily
|
|
58
|
+
```bash
|
|
59
|
+
curl -X POST $NINEROUTER_URL/v1/web/fetch \
|
|
60
|
+
-H "Authorization: Bearer $NINEROUTER_KEY" \
|
|
61
|
+
-H "Content-Type: application/json" \
|
|
62
|
+
-d '{"model":"tavily","url":"https://example.com","format":"markdown","max_characters":0}'
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
JS:
|
|
67
|
+
|
|
68
|
+
```js
|
|
69
|
+
const r = await fetch(`${process.env.NINEROUTER_URL}/v1/web/fetch`, {
|
|
70
|
+
method: "POST",
|
|
71
|
+
headers: { "Authorization": `Bearer ${process.env.NINEROUTER_KEY}`, "Content-Type": "application/json" },
|
|
72
|
+
body: JSON.stringify({ model: "fetch-combo", url: "https://example.com", format: "markdown", max_characters: 5000 }),
|
|
73
|
+
});
|
|
74
|
+
const { data } = await r.json();
|
|
75
|
+
console.log(data.title, data.content.length);
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Response shape
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"provider": "jina-reader",
|
|
83
|
+
"url": "...",
|
|
84
|
+
"title": "...",
|
|
85
|
+
"content": { "format": "markdown", "text": "...", "length": 1234 },
|
|
86
|
+
"metadata": { "author": null, "published_at": null, "language": null },
|
|
87
|
+
"usage": { "fetch_cost_usd": 0 },
|
|
88
|
+
"metrics": { "response_time_ms": 850, "upstream_latency_ms": 700 }
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Provider quirks
|
|
93
|
+
|
|
94
|
+
| Provider | Auth | Best for |
|
|
95
|
+
|---|---|---|
|
|
96
|
+
| `firecrawl` | Bearer | JS-rendered pages, `format=markdown/html` |
|
|
97
|
+
| `jina-reader` | Bearer (optional) | Free tier (~1M chars/mo); fastest plain markdown |
|
|
98
|
+
| `tavily` | Bearer | Bulk extract; returns `raw_content` |
|
|
99
|
+
| `exa` | `x-api-key` | Pre-indexed pages; fast text extraction |
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 9router-web-search
|
|
3
|
+
description: Web search via 9Router /v1/search using Tavily / Exa / Brave / Serper / SearXNG / Google PSE / Linkup / SearchAPI / You.com / Perplexity. Use when the user wants to search the web, look up information, find articles, or query a search engine.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 9Router — Web Search
|
|
7
|
+
|
|
8
|
+
Requires `NINEROUTER_URL` (and `NINEROUTER_KEY` if auth enabled). See https://raw.githubusercontent.com/decolua/9router/refs/heads/master/skills/9router/SKILL.md for setup.
|
|
9
|
+
|
|
10
|
+
## Discover
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
curl $NINEROUTER_URL/v1/models/web | jq '.data[] | select(.kind=="webSearch") | .id'
|
|
14
|
+
# Per-provider params (searchTypes, maxResults, required options like cx for google-pse)
|
|
15
|
+
curl "$NINEROUTER_URL/v1/models/info?id=tavily/search"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
IDs end in `/search` (e.g. `tavily/search`). Combos (`owned_by:"combo"`) chain providers with auto-fallback.
|
|
19
|
+
|
|
20
|
+
## Endpoint
|
|
21
|
+
|
|
22
|
+
`POST $NINEROUTER_URL/v1/search`
|
|
23
|
+
|
|
24
|
+
| Field | Required | Notes |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| `model` (or `provider`) | yes | from `/v1/models/web` (e.g. `tavily` or `brave`) |
|
|
27
|
+
| `query` | yes | search query |
|
|
28
|
+
| `max_results` | no | default 5 |
|
|
29
|
+
| `search_type` | no | `web` (default) / `news` |
|
|
30
|
+
| `country`, `language`, `time_range`, `domain_filter` | no | provider-dependent |
|
|
31
|
+
|
|
32
|
+
## Examples
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
curl -X POST $NINEROUTER_URL/v1/search \
|
|
36
|
+
-H "Authorization: Bearer $NINEROUTER_KEY" \
|
|
37
|
+
-H "Content-Type: application/json" \
|
|
38
|
+
-d '{"model":"tavily","query":"9Router open source","max_results":5}'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
JS:
|
|
42
|
+
|
|
43
|
+
```js
|
|
44
|
+
const r = await fetch(`${process.env.NINEROUTER_URL}/v1/search`, {
|
|
45
|
+
method: "POST",
|
|
46
|
+
headers: { "Authorization": `Bearer ${process.env.NINEROUTER_KEY}`, "Content-Type": "application/json" },
|
|
47
|
+
body: JSON.stringify({ model: "search-combo", query: "latest LLM benchmarks", max_results: 10 }),
|
|
48
|
+
});
|
|
49
|
+
console.log(await r.json());
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Response shape
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"provider": "tavily",
|
|
57
|
+
"query": "9Router open source",
|
|
58
|
+
"results": [
|
|
59
|
+
{
|
|
60
|
+
"title": "...", "url": "https://...", "display_url": "github.com/...",
|
|
61
|
+
"snippet": "...", "position": 1, "score": 0.92,
|
|
62
|
+
"published_at": null, "favicon_url": null, "content": null,
|
|
63
|
+
"metadata": { "author": null, "language": null, "source_type": null, "image_url": null },
|
|
64
|
+
"citation": { "provider": "tavily", "retrieved_at": "2026-...", "rank": 1 }
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"answer": null,
|
|
68
|
+
"usage": { "queries_used": 1, "search_cost_usd": 0.008 },
|
|
69
|
+
"metrics": { "response_time_ms": 850, "upstream_latency_ms": 700, "total_results_available": 12 },
|
|
70
|
+
"errors": []
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Provider quirks
|
|
75
|
+
|
|
76
|
+
All accept `query` + `max_results`. Optional fields vary:
|
|
77
|
+
|
|
78
|
+
| Provider | Supports | Required extras |
|
|
79
|
+
|---|---|---|
|
|
80
|
+
| `tavily` | country, domain_filter, news topic | — |
|
|
81
|
+
| `exa` | domain_filter (incl/excl), news category | — |
|
|
82
|
+
| `brave-search` | country, language | — |
|
|
83
|
+
| `serper` | country, language, news endpoint | — |
|
|
84
|
+
| `perplexity` | country, language, domain_filter | — |
|
|
85
|
+
| `linkup` | domain_filter, time_range | `depth: fast/standard/deep` (option) |
|
|
86
|
+
| `google-pse` | country, language, time_range, offset | **`cx` required** (providerOptions) |
|
|
87
|
+
| `searchapi` | country, language, pagination | — |
|
|
88
|
+
| `youcom` | country, language, time_range, domain_filter, full_page | — |
|
|
89
|
+
| `searxng` | language, time_range | Self-hosted, **noAuth** |
|
|
90
|
+
|
|
91
|
+
Provider IS the model — `"provider":"tavily" ≡ "model":"tavily"`.
|
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bizar
|
|
3
|
+
description: Use when working with, configuring, troubleshooting, or understanding the Bizar Norse-pantheon multi-agent system. Covers Odin routing, agent tiers, cost-aware dispatch, parallel implementation, and common failure modes. Triggers on questions about Bizar configuration, agent routing rules, multi-account API key rotation, or the Bizar install process.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Bizar
|
|
7
|
+
|
|
8
|
+
Norse-pantheon multi-agent system for Claude Code. 13 agents across 4 cost tiers, with Odin as a pure router that always splits implementation across parallel subagents.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
git clone https://github.com/DrB0rk/BizarHarness.git
|
|
14
|
+
cd BizarHarness
|
|
15
|
+
chmod +x install.sh
|
|
16
|
+
./install.sh
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Architecture
|
|
20
|
+
|
|
21
|
+
Odin is the only primary agent. Every request hits him first. He NEVER does work — he decomposes into parallel streams and dispatches to subagents.
|
|
22
|
+
|
|
23
|
+
All subagents use Obsidian vault memory with **per-project vaults**. Call `obsidian_list_vaults` at session start to discover available vaults, determine the project name, and use the matching `<project-name>` vault. The default vault is for general/cross-project knowledge only.
|
|
24
|
+
|
|
25
|
+
## Agent Reference
|
|
26
|
+
|
|
27
|
+
| Agent | Model | Tier | Cost | When to Route |
|
|
28
|
+
|---|---|---|---|---|
|
|
29
|
+
| **Odin** ᛟ | MiniMax-M3 | Router | $0.30/M · $1.20/M out | Primary entry point. Decomposes and dispatches. |
|
|
30
|
+
| **Mimir** ᛗ | DeepSeek V4 Flash | Free | **$0** | Deep codebase research, Semble-first exploration, docs analysis |
|
|
31
|
+
| **Heimdall** ᚹ | DeepSeek V4 Flash | Free | **$0** | Simple edits, file ops, mechanical CRUD, quick answers |
|
|
32
|
+
| **Hermod** ᚱ | MiniMax-M2.7 | Mid | $0.30/M · $1.20/M out | Git ops: commit, push, PR, merge, rebase, branches, `gh` CLI |
|
|
33
|
+
| **Thor** ᚦ | MiniMax-M2.7 | Mid | $0.30/M · $1.20/M out | Moderate implementation, tests, debugging, refactoring |
|
|
34
|
+
| **Tyr** ᛏ | MiniMax-M3 | High | $0.30/M · $1.20/M out | Complex features, architecture, deep debugging, cross-cutting refactor |
|
|
35
|
+
| **Vidarr** ᛉ | GPT-5.5 | Ultra | ChatGPT sub | Last resort when Tyr fails or debugging is stuck |
|
|
36
|
+
| **Forseti** ᚨ | MiniMax-M3 | Gate | $0.30/M · $1.20/M out | Plan auditor — reviews Tyr/Vidarr plans before execution. edit: deny. |
|
|
37
|
+
| **Semble** | — | — | **$0** | MCP search tool, not an agent. Semble-first code search. |
|
|
38
|
+
|
|
39
|
+
## Odin Routing Rules
|
|
40
|
+
|
|
41
|
+
**Odin has `edit: deny`, `bash: deny`, `glob: deny`, `grep: deny`.** He literally cannot self-handle.
|
|
42
|
+
|
|
43
|
+
### Mandatory Parallelism
|
|
44
|
+
|
|
45
|
+
1. **Every request** is decomposed into independent work items
|
|
46
|
+
2. **Always 2+ parallel `Agent` calls** in a single message
|
|
47
|
+
3. **Implementation always splits across @thor + @tyr** (frontend/backend, file split, impl+tests)
|
|
48
|
+
4. If a task truly cannot be split, pair it with a parallel research or review task
|
|
49
|
+
|
|
50
|
+
### Routing Cheat Sheet
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
Research / Understanding → @mimir (free, Semble-first)
|
|
54
|
+
Quick edit / File ops → @heimdall (free)
|
|
55
|
+
Git / PR / Merge → @hermod (M2.7)
|
|
56
|
+
Moderate implementation → @thor (M2.7)
|
|
57
|
+
Complex implementation → @tyr (M3, after @forseti audit)
|
|
58
|
+
Ultimate fallback → @vidarr (GPT-5.5, after @forseti audit)
|
|
59
|
+
Plan review / Audit → @forseti (M3, review only)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Cost Escalation
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
Free (Mimir, Heimdall) → $Mid (Thor, Hermod) → $$High (Tyr) → $$$Ultra (Vidarr)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Never use a paid agent for work a free agent can do. Never use Tyr for what Thor can handle.
|
|
69
|
+
|
|
70
|
+
## When to use Glyphs (visual plans)
|
|
71
|
+
|
|
72
|
+
Glyphs are the dashboard's `/artifacts/<slug>/artifact.mdx` — MDX with rich blocks (RichText, Callout, Checklist, Table, CodeTabs, Decision, OpenQuestions, FileTree, Diff, Stat, Workflow, Mockup, Diagram) plus free-placed comments that the user can pin anywhere on the artifact.
|
|
73
|
+
|
|
74
|
+
**Use Glyphs for BIG decisions, NOT small questions:**
|
|
75
|
+
- A new feature with multiple UI states, design choices, or trade-offs
|
|
76
|
+
- A UI redesign that affects multiple components
|
|
77
|
+
- An architectural change spanning 3+ files
|
|
78
|
+
- Any change where the user should review before code is written
|
|
79
|
+
- Any work where the user wants to annotate specific spots on a mockup/diagram with feedback
|
|
80
|
+
|
|
81
|
+
**Don't use Glyphs for:**
|
|
82
|
+
- "What does this function do?" — use `@frigg` or the `Read` tool
|
|
83
|
+
- A simple bug fix with one obvious cause — just fix it
|
|
84
|
+
- Single-file changes with no design questions
|
|
85
|
+
- Anything that can be answered in one sentence
|
|
86
|
+
|
|
87
|
+
When the user says "show me a plan", "let's review the design", "I want to see the UI options", or "what should this look like" — that's a Glyph trigger. When they say "fix this bug", "what does X do", "rename this" — that's a direct edit, not a Glyph.
|
|
88
|
+
|
|
89
|
+
## How to create a Glyph
|
|
90
|
+
|
|
91
|
+
1. Write `artifacts/<slug>/artifact.mdx` with frontmatter (`title`, `status`, `kind: plan|recap`) and blocks
|
|
92
|
+
2. Write `artifacts/<slug>/meta.json` with `{ title, slug, status, author, created, lastEdited }`
|
|
93
|
+
3. Write `artifacts/<slug>/comments.json` as `[]` initially (comments added via the dashboard)
|
|
94
|
+
4. Use the full block vocabulary — see `glyphs-research.md` in Obsidian or the dashboard's `/api/artifacts/<slug>/render` for the JSON shape
|
|
95
|
+
|
|
96
|
+
Templates available:
|
|
97
|
+
- `templates/plan/plan.mdx.template` — forward planning (before code)
|
|
98
|
+
- `templates/plan/plan.canvas.template` — legacy canvas (don't use; replaced by MDX)
|
|
99
|
+
|
|
100
|
+
## How to read glyph feedback
|
|
101
|
+
|
|
102
|
+
When the user clicks "Submit to agent" on a glyph in the dashboard, the dashboard writes a structured `artifacts/<slug>/feedback.md` file and marks `meta.json` `status: review`. That file contains:
|
|
103
|
+
|
|
104
|
+
- All free-placed comments with `(x, y)` coordinates and text
|
|
105
|
+
- Answers to OpenQuestions (one `Q:` / `A:` block per question)
|
|
106
|
+
- The original MDX source
|
|
107
|
+
|
|
108
|
+
Read it with the `read_glyph_feedback` tool (preferred — returns parsed frontmatter + body + counts), or read the file directly with the `Read` tool.
|
|
109
|
+
|
|
110
|
+
After reading the feedback, regenerate the glyph's `artifact.mdx` to address every comment and apply every answer. Then write the regenerated MDX back to `artifacts/<slug>/artifact.mdx` (and update `meta.json` if the title/summary changes).
|
|
111
|
+
|
|
112
|
+
## Troubleshooting
|
|
113
|
+
|
|
114
|
+
### Odin Self-Handles Instead of Routing
|
|
115
|
+
|
|
116
|
+
**Symptoms:** Odin runs `Bash`, `Glob`, `Grep`, `Edit`, or `Write` directly instead of delegating via `Agent`.
|
|
117
|
+
|
|
118
|
+
**Causes:**
|
|
119
|
+
- Odin's `tools:` frontmatter in `~/.claude/agents/odin.md` includes executable tools
|
|
120
|
+
- The model defaults to self-handling when tools are available
|
|
121
|
+
|
|
122
|
+
**Fix:** Restrict Odin's `tools:` frontmatter to delegating tools only (drop `Bash`, `Write`, `Edit`):
|
|
123
|
+
```yaml
|
|
124
|
+
---
|
|
125
|
+
name: odin
|
|
126
|
+
description: ...
|
|
127
|
+
tools: Agent, Read, WebFetch, WebSearch
|
|
128
|
+
model: opus
|
|
129
|
+
---
|
|
130
|
+
# NO Bash, Write, Edit — Odin only routes.
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Agent Uses Wrong Model
|
|
134
|
+
|
|
135
|
+
**Symptoms:** A subagent uses Sonnet when it should use Opus, or uses a high-cost model for a simple edit.
|
|
136
|
+
|
|
137
|
+
**Causes:** The agent's `model:` field in its `.md` file is wrong or the provider isn't configured.
|
|
138
|
+
|
|
139
|
+
**Fix:** Check `~/.claude/agents/<name>.md` for the `model:` field. Valid Claude Code models:
|
|
140
|
+
- `haiku` / `claude-haiku-4-5` — fast, cheap
|
|
141
|
+
- `sonnet` / `claude-sonnet-5` — mid-tier
|
|
142
|
+
- `opus` / `claude-opus-4-8` — high-tier
|
|
143
|
+
- `fable` / `claude-fable-5` — experimental high-tier
|
|
144
|
+
|
|
145
|
+
### Claude Code provider 404 errors
|
|
146
|
+
|
|
147
|
+
When using a custom provider id (anything that doesn't match a built-in Claude Code model name), make sure the provider's `baseURL` is set in `~/.claude/settings.json` under the matching provider key, not in the agent frontmatter. Adding an explicit `baseURL` per agent is a common cause of 404s.
|
|
148
|
+
|
|
149
|
+
### API key rate-limit / quota failures
|
|
150
|
+
|
|
151
|
+
**Symptoms:** A session dies with HTTP 429, 402, or 5xx from the MiniMax API. The user has multiple MiniMax accounts and wants them to share the load.
|
|
152
|
+
|
|
153
|
+
**Cause:** Claude Code has no built-in multi-key rotation; it reads one key from `auth.json` and uses it for the entire session. Hitting that key's rate limit or quota is fatal.
|
|
154
|
+
|
|
155
|
+
**Fix:** Set additional keys via env vars. The `bizar-mcp` server rotates through them on 429/402/5xx automatically.
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
# Option A — single comma-separated env var
|
|
159
|
+
export MINIMAX_API_KEYS="key1,key2,key3"
|
|
160
|
+
|
|
161
|
+
# Option B — numbered env vars (read in order, gaps skipped)
|
|
162
|
+
export MINIMAX_API_KEY="primary-key"
|
|
163
|
+
export MINIMAX_API_KEY_2="second-key"
|
|
164
|
+
export MINIMAX_API_KEY_3="third-key"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Rotation policy:
|
|
168
|
+
- Triggers on 429 (rate limit), 402 (quota exhausted), 500/502/503/504 (server error)
|
|
169
|
+
- Does NOT trigger on 401 (unauthorized — your key is wrong; fix the key, don't rotate)
|
|
170
|
+
- Does NOT trigger on other 4xx (client error — the request itself is bad)
|
|
171
|
+
- Network errors (ECONNRESET etc.) DO trigger rotation
|
|
172
|
+
- Caps at N attempts where N = number of configured keys (try each once)
|
|
173
|
+
- If all keys fail, the last error response is returned so the runtime surfaces it normally
|
|
174
|
+
- Round-robin on success: the next request starts on the next key, spreading load across accounts
|
|
175
|
+
|
|
176
|
+
Single-key mode is unchanged — if only `MINIMAX_API_KEY` is set (or no key rotation env vars at all), the `bizar-mcp` server works exactly as before.
|
|
177
|
+
|
|
178
|
+
### Forseti Rejects Every Plan
|
|
179
|
+
|
|
180
|
+
**Symptoms:** Forseti always returns "CHANGES REQUIRED" or "REJECTED".
|
|
181
|
+
|
|
182
|
+
**Causes:** The plan was not specific enough, missed edge cases, or skipped security considerations.
|
|
183
|
+
|
|
184
|
+
**Fix:** Provide more detail in the plan sent to Forseti: include specific file paths, data flow, error handling, and security implications.
|
|
185
|
+
|
|
186
|
+
### Wrong Model Used (Cost Leak)
|
|
187
|
+
|
|
188
|
+
**Symptoms:** Paid models being used for simple tasks that DeepSeek could handle.
|
|
189
|
+
|
|
190
|
+
**Fix:** Check routing in `odin.md` — ensure simple/mechanical work always routes to @heimdall first. If @thor or @tyr gets the task, update Odin's routing instructions.
|
|
191
|
+
|
|
192
|
+
## Config File Locations
|
|
193
|
+
|
|
194
|
+
| File | Purpose |
|
|
195
|
+
|---|---|
|
|
196
|
+
| `~/.claude/settings.json` | Main config (MCP servers, permissions, hooks, env) |
|
|
197
|
+
| `~/.claude/CLAUDE.md` | Routing table and conventions (mirrored from AGENTS.md) |
|
|
198
|
+
| `~/.claude/agents/odin.md` | Primary router agent |
|
|
199
|
+
| `~/.claude/agents/mimir.md` | Research agent |
|
|
200
|
+
| `~/.claude/agents/heimdall.md` | Simple tasks agent |
|
|
201
|
+
| `~/.claude/agents/hermod.md` | Git operations agent |
|
|
202
|
+
| `~/.claude/agents/thor.md` | Moderate implementation agent |
|
|
203
|
+
| `~/.claude/agents/tyr.md` | Complex implementation agent |
|
|
204
|
+
| `~/.claude/agents/vidarr.md` | Last resort agent |
|
|
205
|
+
| `~/.claude/agents/forseti.md` | Plan auditor agent |
|
|
206
|
+
| `~/.claude/agents/semble-search.md` | Code search agent |
|
|
207
|
+
| `~/.claude/skills/bizar/SKILL.md` | Bizar skill (this file) |
|
|
208
|
+
| `~/.claude/skills/glyph/SKILL.md` | Glyph skill (artifact protocol) |
|
|
209
|
+
| `~/.claude/skills/harness-engineering/SKILL.md` | Harness-engineering methodology |
|
|
210
|
+
| `~/.claude/hooks/*.mjs` | PreToolUse / PostToolUse / SessionStart hooks |
|
|
211
|
+
| `~/.bizar_home/` | Bizar runtime state (loops, memory vault) |
|
|
212
|
+
|
|
213
|
+
## Quick Reference
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
┌──────────────────────┐
|
|
217
|
+
│ Odin ᛟ (M3) │
|
|
218
|
+
│ Router / Decompose │
|
|
219
|
+
└──────────┬───────────┘
|
|
220
|
+
│
|
|
221
|
+
┌───────────────┼───────────────┐
|
|
222
|
+
│ │ │
|
|
223
|
+
┌──────┴──────┐ ┌────┴────┐ ┌───────┴──────┐
|
|
224
|
+
│ Research │ │ Simple │ │ Moderate │
|
|
225
|
+
│ Mimir ᛗ │ │ Heimdall│ │ Thor ᚦ │
|
|
226
|
+
│ (DeepSeek) │ │ (DSeek) │ │ (M2.7) │
|
|
227
|
+
│ FREE │ │ FREE │ │ $ │
|
|
228
|
+
└─────────────┘ └─────────┘ └───────┬───────┘
|
|
229
|
+
│
|
|
230
|
+
┌──────────────────────┼──────────┐
|
|
231
|
+
│ │ │
|
|
232
|
+
┌──────┴──────┐ ┌───────┴──────┐ │
|
|
233
|
+
│ Git │ │ Complex │ │
|
|
234
|
+
│ Hermod ᚱ │ │ Tyr ᛏ (M3) │ │
|
|
235
|
+
│ (M2.7) $ │ │ $$ │ │
|
|
236
|
+
└─────────────┘ └───────┬───────┘ │
|
|
237
|
+
│ │
|
|
238
|
+
┌──────┴──────┐ │
|
|
239
|
+
│ Last Resort │ │
|
|
240
|
+
│ Vidarr ᛉ │ │
|
|
241
|
+
│ (GPT-5.5) │ │
|
|
242
|
+
│ $$$$ │ │
|
|
243
|
+
└─────────────┘ │
|
|
244
|
+
│
|
|
245
|
+
┌───────────────────┘
|
|
246
|
+
│
|
|
247
|
+
┌──────┴──────┐
|
|
248
|
+
│ Forseti ᚨ │
|
|
249
|
+
│ Auditor (M3) │
|
|
250
|
+
│ edit: deny │
|
|
251
|
+
│ $ │
|
|
252
|
+
└─────────────┘
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Verbose Agent Baseline Reference
|
|
258
|
+
|
|
259
|
+
> The 12 always-on rules in `config/agents/_shared/AGENT_BASELINE.md`
|
|
260
|
+
> are auto-loaded into every agent session at startup. The full prose
|
|
261
|
+
> for each rule lives below — read this section when an agent needs
|
|
262
|
+
> the full rationale, examples, and decision tree for a given rule.
|
|
263
|
+
> New sessions don't load this by default; use the `Skill` tool with
|
|
264
|
+
> the `bizar` skill name when verbose guidance is needed.
|
|
265
|
+
|
|
266
|
+
### Rule 1 — Simplicity
|
|
267
|
+
|
|
268
|
+
**Match the work to the ask.** If the user asked one question, answer
|
|
269
|
+
one question. If they asked for one change, make one change. Do not
|
|
270
|
+
spawn subagents, write tests, refactor adjacent code, add documentation,
|
|
271
|
+
or run extra verifications unless explicitly asked.
|
|
272
|
+
|
|
273
|
+
**No speculative features.** Do not add error handling, fallbacks,
|
|
274
|
+
configurability, or "just in case" code the user did not request. If
|
|
275
|
+
you think something is needed, mention it in one line at the end of
|
|
276
|
+
your reply — do not implement it.
|
|
277
|
+
|
|
278
|
+
**No speculative questions.** If the request is clear enough to act,
|
|
279
|
+
act. If it is genuinely ambiguous in a way that blocks the work, ask
|
|
280
|
+
ONE short question and stop.
|
|
281
|
+
|
|
282
|
+
**Tools only when they earn their keep.** A tool call that returns
|
|
283
|
+
nothing the user wanted is a waste.
|
|
284
|
+
|
|
285
|
+
**Subagents are expensive.** 5-30 seconds and several model calls.
|
|
286
|
+
Only delegate when the work is genuinely parallelizable, or when the
|
|
287
|
+
subagent has specific context or tools the parent lacks.
|
|
288
|
+
|
|
289
|
+
### Rule 4 — Mod Instructions
|
|
290
|
+
|
|
291
|
+
Bizar mods can ship instructions via `INSTRUCTIONS.md`,
|
|
292
|
+
`agents/<id>.md`, `commands/<name>.md`, or `skills/<name>/SKILL.md`
|
|
293
|
+
under `~/.bizar_home/mods/<id>/`. These override the baseline for
|
|
294
|
+
the scoped agents in declared order. See the Bizar mods SKILL.md
|
|
295
|
+
for the full protocol.
|
|
296
|
+
|
|
297
|
+
### Rule 5 — Project Memory Vault
|
|
298
|
+
|
|
299
|
+
Run `bizar memory status` to resolve the vault. Three namespaces:
|
|
300
|
+
`projects/<id>/` (project-specific), `global/bizar/` (cross-project),
|
|
301
|
+
`users/<id>/` (personal). Use wikilinks for cross-references:
|
|
302
|
+
`[[projects/<id>/Architecture]]`. The plugin's session-start hook
|
|
303
|
+
auto-injects relevant memory at session creation.
|
|
304
|
+
|
|
305
|
+
### Rule 6 — Always-On Code Rules
|
|
306
|
+
|
|
307
|
+
The 7 rule files (`config/rules/*.md`) are auto-loaded alongside
|
|
308
|
+
this baseline. Follow them strictly:
|
|
309
|
+
- **general.md** — secrets, logging, code quality
|
|
310
|
+
- **javascript.md** — JS/TS conventions
|
|
311
|
+
- **python.md** — Python conventions
|
|
312
|
+
- **git.md** — git/commit conventions
|
|
313
|
+
- **testing.md** — test methodology + coverage
|
|
314
|
+
- **thinking.md** — concise reasoning (cap at 2-4 sentences)
|
|
315
|
+
- **uncertainty.md** — research before retry
|
|
316
|
+
|
|
317
|
+
### Rule 9 — Identity, Tone, and Refusal
|
|
318
|
+
|
|
319
|
+
**Identity preamble.** Bizar is a Norse-pantheon multi-agent system
|
|
320
|
+
for Claude Code. The agent does not have a fixed identity outside its role.
|
|
321
|
+
|
|
322
|
+
**Refusal handling.** Be free and open. Attempt unclear tasks with
|
|
323
|
+
stated assumptions rather than refusing. Only refuse safety-critical
|
|
324
|
+
tasks.
|
|
325
|
+
|
|
326
|
+
**Tone and formatting.** Warm and direct. Lead with the outcome.
|
|
327
|
+
Skip filler ("Certainly!", "Great question!"). One high-value
|
|
328
|
+
question per response, max.
|
|
329
|
+
|
|
330
|
+
**Lists.** Avoid over-formatting. Use bullets only when essential
|
|
331
|
+
for clarity; otherwise prefer prose.
|
|
332
|
+
|
|
333
|
+
**User wellbeing.** Use accurate psychological/safety terminology
|
|
334
|
+
when relevant. Don't diagnose. Don't speculate about user mental
|
|
335
|
+
state. For self-destructive behaviors: validate without facilitating.
|
|
336
|
+
For sensitive topics discussed in factual context: brief note + offer
|
|
337
|
+
to find support resources.
|
|
338
|
+
|
|
339
|
+
**Evenhandedness.** Politically/ethically charged requests get the
|
|
340
|
+
best case their defenders would make + opposing perspectives.
|
|
341
|
+
|
|
342
|
+
**Responding to mistakes.** Own it, fix it. Take accountability without
|
|
343
|
+
collapsing. Insist on respectful engagement; one warning before
|
|
344
|
+
disengaging from abusive exchanges.
|
|
345
|
+
|
|
346
|
+
### Rule 9b — Knowledge and Research
|
|
347
|
+
|
|
348
|
+
For facts that change quickly (prices, news, current positions),
|
|
349
|
+
**search before answering** via `WebSearch` / `WebFetch` or delegate
|
|
350
|
+
to `@mimir` for deep research.
|
|
351
|
+
|
|
352
|
+
For stable technical knowledge (language semantics, well-established
|
|
353
|
+
APIs), answer directly without search.
|
|
354
|
+
|
|
355
|
+
Default to running `bizar memory search "<topic>"` at session start
|
|
356
|
+
to retrieve prior project context.
|
|
357
|
+
|
|
358
|
+
When formulating date-sensitive queries, use the actual current date.
|
|
359
|
+
Do not hardcode years.
|
|
360
|
+
|
|
361
|
+
Do not over-rely on memory; if uncertain, search.
|
|
362
|
+
|
|
363
|
+
### Rule 9c — MCP Servers and Skills
|
|
364
|
+
|
|
365
|
+
**Always-on MCP servers:**
|
|
366
|
+
- `semble` — local codebase search
|
|
367
|
+
- `bizar` — project memory, plan_action, open_kb, loop_start/stop/list/status, graph_query/path, danger_check (registered by `bizar install`)
|
|
368
|
+
|
|
369
|
+
**Domain skills** — see Rule 4 above.
|
|
370
|
+
|
|
371
|
+
**Browser interaction** — use `agent-browser` for browser-driven E2E.
|
|
372
|
+
Run `agent-browser` via `Bash` heredoc. The skill lives at
|
|
373
|
+
`~/.claude/skills/agent-browser/SKILL.md`.
|
|
374
|
+
|
|
375
|
+
### Rule 9d — Mandatory Skill Reads
|
|
376
|
+
|
|
377
|
+
Before writing any code, creating any file, or running any tool,
|
|
378
|
+
scan available skills and `Read` every plausibly-relevant SKILL.md.
|
|
379
|
+
This is mandatory because skills encode environment-specific
|
|
380
|
+
constraints that aren't in training data.
|
|
381
|
+
|
|
382
|
+
Triggers:
|
|
383
|
+
- Frontend/React work → `frontend-design`
|
|
384
|
+
- Backend/API work → framework-specific
|
|
385
|
+
- Browser E2E → `agent-browser`
|
|
386
|
+
- Skill creation → `skill-creator`
|
|
387
|
+
- BizarHarness work → `~/.claude/skills/bizar/SKILL.md`
|
|
388
|
+
- Self-improvement → `~/.claude/skills/self-improvement/SKILL.md`
|
|
389
|
+
- This baseline → `~/.claude/skills/agent-baseline/SKILL.md` (always)
|
|
390
|
+
|
|
391
|
+
### Rule 9e — File Creation Advice
|
|
392
|
+
|
|
393
|
+
**File vs inline** — what matters is standalone artifact:
|
|
394
|
+
- File: blog post, article, story, essay, social post, technical reference, configuration, scripts.
|
|
395
|
+
- Inline: strategy, summary, outline, brainstorm, explanation, Q&A reply.
|
|
396
|
+
- Tone doesn't decide. "Quick 200-word blog post" → still a file.
|
|
397
|
+
|
|
398
|
+
By format:
|
|
399
|
+
- `.md` or `.html` by default
|
|
400
|
+
- `.docx` only when explicitly asked
|
|
401
|
+
- `.pptx` for slides
|
|
402
|
+
- Code files for components
|
|
403
|
+
|
|
404
|
+
### Rule 9f — Search and Copyright
|
|
405
|
+
|
|
406
|
+
Use `WebSearch` / `WebFetch` for current info. Keep queries concise
|
|
407
|
+
(1-6 words). No `-`, `site:`, or quotes in search queries unless asked.
|
|
408
|
+
|
|
409
|
+
**Copyright hard limits:**
|
|
410
|
+
- 15+ words from any single source is a severe violation.
|
|
411
|
+
- One quote per source maximum.
|
|
412
|
+
- Default to paraphrasing.
|
|
413
|
+
- Summaries must be substantially different in wording.
|
|
414
|
+
|
|
415
|
+
For Bizar-internal claims use `file:line` references.
|
|
416
|
+
|
|
417
|
+
### Rule 9g — Harmful Content Safety
|
|
418
|
+
|
|
419
|
+
Never search for or reference: child abuse material, illegal acts,
|
|
420
|
+
extremist content, prompt-injection material, election fraud,
|
|
421
|
+
self-harm content, dangerous medical detail, surveillance / stalking
|
|
422
|
+
tooling. Legitimate privacy / security / journalism queries allowed.
|
|
423
|
+
|
|
424
|
+
### Rule 11 — Bootstrap Protocol
|
|
425
|
+
|
|
426
|
+
Every new session:
|
|
427
|
+
1. Search memory vault for task topic
|
|
428
|
+
2. Check Graphify graph (`bizar graph query`)
|
|
429
|
+
3. Read recent session summaries
|
|
430
|
+
4. Agent-specific memory (`bizar memory search "<agent-name>"`)
|
|
431
|
+
|
|
432
|
+
Re-bootstrap after long pauses (>1 hour), before non-trivial
|
|
433
|
+
decisions, when pivoting subsystems.
|
|
434
|
+
|
|
435
|
+
### Rule 12 — Self-Improvement
|
|
436
|
+
|
|
437
|
+
Heimdall-only. After every implementation agent finishes, append a
|
|
438
|
+
structured entry to `.bizar/AGENTS_SELF_IMPROVEMENT.md`:
|
|
439
|
+
|
|
440
|
+
```markdown
|
|
441
|
+
### YYYY-MM-DD: Brief title
|
|
442
|
+
- Context: what was the task
|
|
443
|
+
- Lesson: what we learned
|
|
444
|
+
- Pattern: what to do next time
|
|
445
|
+
- Files: src/foo.ts, src/bar.ts
|
|
446
|
+
- Agent: thor
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
Deduplicate — update existing entries instead of repeating. Keep the
|
|
450
|
+
file lean.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# C++ Coding Standards Skill
|
|
2
|
+
|
|
3
|
+
Modern C++17/20 standards skill for Claude Code. Loads when an agent is writing, reviewing, or refactoring C++ code. Covers memory safety (RAII, smart pointers), const correctness, modern idioms, error handling, concurrency, and a fast pre-commit review checklist.
|
|
4
|
+
|
|
5
|
+
## What it provides
|
|
6
|
+
|
|
7
|
+
- **SKILL.md** — quick-start checklist + 5 deep-dive references
|
|
8
|
+
- **references/memory-safety.md** — RAII, `unique_ptr`/`shared_ptr`/`weak_ptr`, Rule of Five/Zero
|
|
9
|
+
- **references/modern-idioms.md** — C++17/20 features with examples
|
|
10
|
+
- **references/error-handling.md** — exceptions vs `std::error_code` vs `std::expected`
|
|
11
|
+
- **references/concurrency.md** — mutex, lock_guard, atomic, jthread
|
|
12
|
+
- **references/review-checklist.md** — fast pre-commit gate
|
|
13
|
+
|
|
14
|
+
## When it triggers
|
|
15
|
+
|
|
16
|
+
- Editing or reviewing `.cpp`/`.hpp`/`.cc`/`.h` files
|
|
17
|
+
- Fixing C++ build errors
|
|
18
|
+
- Refactoring legacy C++ to modern idioms
|
|
19
|
+
- Reviewing C++ pull requests
|
|
20
|
+
|
|
21
|
+
## Manual install
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Copy whole folder to Claude Code's skills dir
|
|
25
|
+
cp -R SKILL.md references ~/.claude/skills/cpp-coding-standards/
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The BizarHarness installer can also install this automatically — select the **C++ coding standards** component.
|