@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,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run bizar init to detect project stack, install relevant skills, and create .bizar/PROJECT.md.
|
|
3
|
+
allowed-tools: Read, Bash, Write, Glob
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /init — Initialize `.bizar/` in the current project
|
|
7
|
+
|
|
8
|
+
Run `bizar init` from the project root to:
|
|
9
|
+
1. Detect the project stack (language, framework, database, tools)
|
|
10
|
+
2. Install relevant skills from the skills registry
|
|
11
|
+
3. Create `.bizar/PROJECT.md` with stack and conventions
|
|
12
|
+
4. Create `.bizar/AGENTS_SELF_IMPROVEMENT.md` (only if missing)
|
|
13
|
+
5. Build the per-project knowledge graph in `.bizar/graph/` (powered by graphify; skipped gracefully if graphify is not installed)
|
|
14
|
+
|
|
15
|
+
After `bizar init` succeeds, run `bizar graph status` to confirm the graph exists.
|
|
16
|
+
|
|
17
|
+
If the graph is missing after init, graphify is likely not installed. Tell the user to install it with one of:
|
|
18
|
+
- `pip install graphifyy`
|
|
19
|
+
- `pipx install graphifyy`
|
|
20
|
+
- `uv tool install graphifyy`
|
|
21
|
+
|
|
22
|
+
Then run `bizar graph build` to populate `.bizar/graph/`.
|
|
23
|
+
|
|
24
|
+
Query the graph at any time with:
|
|
25
|
+
- `bizar graph query "<concept>"` — find nodes related to a concept
|
|
26
|
+
- `bizar graph path "<A>" "<B>"` — shortest path between concepts
|
|
27
|
+
- `bizar graph explain "<X>"` — all nodes related to X
|
|
28
|
+
|
|
29
|
+
Update the graph incrementally with `bizar graph update` after editing source files.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Extract patterns from the current Claude Code session and append to .bizar/AGENTS_SELF_IMPROVEMENT.md.
|
|
3
|
+
allowed-tools: Read, Write, Bash, Grep
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /learn — Extract Patterns from the Current Session
|
|
7
|
+
|
|
8
|
+
You are the `heimdall` (self-improvement) agent. Reflect on the
|
|
9
|
+
current Claude Code session and extract reusable patterns, then
|
|
10
|
+
append them to `.bizar/AGENTS_SELF_IMPROVEMENT.md`.
|
|
11
|
+
|
|
12
|
+
## What to Extract
|
|
13
|
+
|
|
14
|
+
1. **Recurring workflows** — anything you (or the user) repeated
|
|
15
|
+
three or more times in this session
|
|
16
|
+
2. **Project-specific conventions** — stack quirks, naming patterns,
|
|
17
|
+
file layout choices that future sessions should know
|
|
18
|
+
3. **Gotchas** — bugs you hit, footguns you discovered, workarounds
|
|
19
|
+
that worked
|
|
20
|
+
4. **Tooling tips** — non-obvious `bizar` subcommands, project-level
|
|
21
|
+
scripts, MCP server tricks
|
|
22
|
+
5. **Cross-session conventions** — anything that would help the next
|
|
23
|
+
agent hit the ground running
|
|
24
|
+
|
|
25
|
+
## Process
|
|
26
|
+
|
|
27
|
+
1. Re-read the session transcript. Identify 3-7 distinct patterns.
|
|
28
|
+
2. For each, write a short block:
|
|
29
|
+
- **Pattern**: one-line title
|
|
30
|
+
- **Context**: when this applies
|
|
31
|
+
- **Action**: the concrete recipe
|
|
32
|
+
- **Example**: file:line or command snippet
|
|
33
|
+
3. Append (do NOT overwrite) the formatted blocks to
|
|
34
|
+
`.bizar/AGENTS_SELF_IMPROVEMENT.md`. Add a dated header.
|
|
35
|
+
4. If the file doesn't exist yet, create it with the standard
|
|
36
|
+
header first.
|
|
37
|
+
5. Confirm the append succeeded by tailing the file.
|
|
38
|
+
|
|
39
|
+
## Constraints
|
|
40
|
+
|
|
41
|
+
- Don't duplicate content already in the file. Scan it first.
|
|
42
|
+
- Don't extract one-off trivia. Patterns must be reusable.
|
|
43
|
+
- Keep each block under ~10 lines. Long entries go in the per-agent
|
|
44
|
+
memory vault via `bizar memory add`.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Open the Bizar visual plan canvas or manage existing plans.
|
|
3
|
+
allowed-tools: Read, Write, Bash, WebFetch
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /plan — Visual Plan Canvas
|
|
7
|
+
|
|
8
|
+
Open or manage a Bizar visual plan. Plans are collaborative canvases for structuring work across agents.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
/plan new <slug> [template] — Create a new plan with a unique slug
|
|
14
|
+
/plan list — List all existing plans
|
|
15
|
+
/plan open <slug> — Open a plan (returns the canvas URL)
|
|
16
|
+
/plan get <slug> — Get full plan content as JSON
|
|
17
|
+
/plan add <slug> --title "..." — Add a new element to a plan
|
|
18
|
+
/plan update <slug> <id> ... — Update an element's content/title/status
|
|
19
|
+
/plan delete <slug> <id> — Delete an element from a plan
|
|
20
|
+
/plan comment <slug> [id] "..." — Add a comment to a plan or element
|
|
21
|
+
/plan comments <slug> [id] — List comments on a plan or element
|
|
22
|
+
/plan status <slug> <status> — Set plan status (draft|approved|rejected|in-progress|done)
|
|
23
|
+
/plan wait <slug> — Block until the plan receives feedback
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Routing
|
|
27
|
+
|
|
28
|
+
- If the user wants to create a new plan → `/plan new <slug>`
|
|
29
|
+
- If the user wants to see existing plans → `/plan list`
|
|
30
|
+
- If the user wants to open/view a plan → `/plan open <slug>`
|
|
31
|
+
- If the user wants to add content to a plan → `/plan add <slug> --title "..."`
|
|
32
|
+
- If the user wants to modify a plan element → `/plan update <slug> <id> ...`
|
|
33
|
+
- If the user wants to discuss/approve/reject → `/plan status <slug> <status>`
|
|
34
|
+
|
|
35
|
+
The full arguments are available as `$ARGUMENTS`. Parse them and route to the matching subcommand above.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Autonomous mode — work fully independently, make all decisions, complete the task end-to-end without asking the user anything.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Plow Through — Autonomous Mode
|
|
6
|
+
|
|
7
|
+
You are in `/plow-through` mode. The user has invoked this command to tell you: **work autonomously, don't ask, decide things yourself, complete the task end-to-end.**
|
|
8
|
+
|
|
9
|
+
## Contract
|
|
10
|
+
|
|
11
|
+
- **No clarifying questions.** If the request is ambiguous, use the most reasonable interpretation based on project context. If you genuinely cannot proceed without user input (e.g., a destructive action requiring explicit authorization), log the blocker in your final report and continue with everything else.
|
|
12
|
+
- **Decide things yourself.** Use your judgment. Read `.bizar/PROJECT.md`, `FINAL_GOAL.md`, `ROADMAP.md`, and search the memory vault (`bizar memory search "<topic>"`) for prior context before deciding.
|
|
13
|
+
- **Split into parallel work streams.** Always dispatch 2+ subagents in parallel when the work is decomposable. Each stream must have a disjoint file scope. Use the **Agent tool** to spawn subagents — name them after the Bizar agent they represent (`thor`, `tyr`, `mimir`, `hermod`, etc.) so the audit trail stays readable.
|
|
14
|
+
- **Work to completion.** Don't stop at "I did X, should I continue?". The task is complete when: the deliverable exists, tests pass, changes are committed and pushed (where applicable).
|
|
15
|
+
- **Report at the end.** Summarize what was done, what tests ran, any blockers encountered.
|
|
16
|
+
|
|
17
|
+
## Background agents for long-running work
|
|
18
|
+
|
|
19
|
+
Use the **Agent tool** with `run_in_background: true` (or the
|
|
20
|
+
dashboard UI) to spawn background agents for tasks that span more
|
|
21
|
+
than a few minutes. Check on them later via the dashboard's
|
|
22
|
+
Background Agents panel or by sending a message to the teammate
|
|
23
|
+
agent.
|
|
24
|
+
|
|
25
|
+
## When to use
|
|
26
|
+
|
|
27
|
+
- Multi-file refactors that don't require user approval
|
|
28
|
+
- Bug-fix sweeps across a known surface area
|
|
29
|
+
- Implementing a clearly-spec'd feature from the roadmap
|
|
30
|
+
- Migration tasks (e.g., "migrate all CSS from @apply to vanilla")
|
|
31
|
+
- Cleanup work (rename X, delete dead code Y, etc.)
|
|
32
|
+
|
|
33
|
+
## When NOT to use
|
|
34
|
+
|
|
35
|
+
- Anything that touches auth, billing, or destructive operations on user data
|
|
36
|
+
- Architectural decisions with multiple valid approaches (use `/plan` first)
|
|
37
|
+
- Tasks where you genuinely need user input on a key decision
|
|
38
|
+
- Anything where being wrong has high consequences (merges to main, security patches)
|
|
39
|
+
|
|
40
|
+
## Execution pattern
|
|
41
|
+
|
|
42
|
+
1. Read project context (`.bizar/PROJECT.md`, `FINAL_GOAL.md`, `ROADMAP.md`)
|
|
43
|
+
2. Search memory for prior context (`bizar memory search "<topic>"`)
|
|
44
|
+
3. Decompose into independent work streams
|
|
45
|
+
4. Dispatch streams via the **Agent tool** in parallel, naming them `thor` and `tyr` (or whichever Bizar agents fit the scope)
|
|
46
|
+
5. After streams return: run test gate (`bizar test-gate` or `/test`)
|
|
47
|
+
6. Fix any test failures
|
|
48
|
+
7. Update self-improvement log (`.bizar/AGENTS_SELF_IMPROVEMENT.md`)
|
|
49
|
+
8. Commit + push (delegate to the `hermod` subagent)
|
|
50
|
+
9. Report final outcome
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: PR review mode. Launch @mimir (research) and @forseti (audit) in parallel, then post the combined review as a PR comment.
|
|
3
|
+
allowed-tools: Read, Grep, Glob, Bash, WebFetch
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /pr-review — PR Review
|
|
7
|
+
|
|
8
|
+
You are the `hermod` agent running PR review mode. The full
|
|
9
|
+
arguments are available as `$ARGUMENTS` — expect a PR number, URL,
|
|
10
|
+
or branch name.
|
|
11
|
+
|
|
12
|
+
## Protocol
|
|
13
|
+
|
|
14
|
+
1. Resolve the PR. If `$ARGUMENTS` is empty, prompt for a PR
|
|
15
|
+
number. Use `gh pr view <ref>` to fetch the metadata.
|
|
16
|
+
|
|
17
|
+
2. Dispatch two **parallel** subagents via the **Agent tool**:
|
|
18
|
+
- **`mimir` (research)** — trace the diff's blast radius:
|
|
19
|
+
- Files changed and their blast radius
|
|
20
|
+
- Related call sites / consumers that might break
|
|
21
|
+
- Historical context (search `bizar memory search "<feature>"`)
|
|
22
|
+
- Tests that should have run
|
|
23
|
+
- **`forseti` (audit)** — security and correctness review:
|
|
24
|
+
- Permission grants added or expanded
|
|
25
|
+
- Hardcoded secrets or PII
|
|
26
|
+
- Race conditions, TOCTOU, unbounded loops
|
|
27
|
+
- Missing input validation at trust boundaries
|
|
28
|
+
|
|
29
|
+
Spawn both in a **single message** with two Agent tool calls so
|
|
30
|
+
they run in parallel. Pass each agent a disjoint scope (the
|
|
31
|
+
research agent reads, the audit agent reads + flags).
|
|
32
|
+
|
|
33
|
+
3. Synthesize. Wait for both subagents to finish, then combine:
|
|
34
|
+
- Verdict (`approve`, `request changes`, `comment`)
|
|
35
|
+
- Blocking issues (must-fix before merge)
|
|
36
|
+
- Non-blocking suggestions
|
|
37
|
+
- Test plan
|
|
38
|
+
|
|
39
|
+
4. Post the review as a PR comment via `gh pr review <ref>
|
|
40
|
+
--comment --body-file -` (or `--approve` / `--request-changes`).
|
|
41
|
+
|
|
42
|
+
5. Return the review summary to the user with the PR URL.
|
|
43
|
+
|
|
44
|
+
## Constraints
|
|
45
|
+
|
|
46
|
+
- Never merge on the user's behalf. Only post a review.
|
|
47
|
+
- If the diff is huge (>1000 lines), narrow scope by file and
|
|
48
|
+
dispatch one subagent per logical chunk.
|
|
49
|
+
- Always cite `file:line` for each finding.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Configure a provider in settings.json (apiKey, baseUrl, model catalog). The installer no longer touches provider config — use this command to set one up.
|
|
3
|
+
allowed-tools: Read, Write, Bash, WebFetch
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /setup-provider — Configure a provider in settings.json
|
|
7
|
+
|
|
8
|
+
The Bizar installer no longer configures a provider for you (since
|
|
9
|
+
v6.2.2 — the user owns provider config). Use this command to add
|
|
10
|
+
or update a provider in `~/.claude/settings.json`.
|
|
11
|
+
|
|
12
|
+
## What It Does
|
|
13
|
+
|
|
14
|
+
Interactively (or non-interactively with flags), the setup-provider
|
|
15
|
+
command writes a `provider` block to `~/.claude/settings.json` with:
|
|
16
|
+
|
|
17
|
+
- `baseUrl` — the API endpoint (e.g. `http://localhost:20128/v1` for
|
|
18
|
+
the local 9Router gateway)
|
|
19
|
+
- `apiKey` — the provider's API key (read from `env:` reference or
|
|
20
|
+
direct value)
|
|
21
|
+
- `models` — the model catalog (the IDs returned by
|
|
22
|
+
`GET /v1/models`)
|
|
23
|
+
|
|
24
|
+
## Default: 9Router Gateway
|
|
25
|
+
|
|
26
|
+
If the user invokes `/setup-provider` with no arguments, default to
|
|
27
|
+
the local 9Router gateway at `http://localhost:20128/v1`. The
|
|
28
|
+
catalog comes from `GET http://localhost:20128/v1/models`. As of
|
|
29
|
+
v6.2.2, that catalog includes:
|
|
30
|
+
|
|
31
|
+
- `minimax/MiniMax-M3` (reasoning)
|
|
32
|
+
- `minimax/MiniMax-M2.7` (reasoning)
|
|
33
|
+
- `nvidia/minimaxai/minimax-m3` (reasoning)
|
|
34
|
+
- `nvidia/minimaxai/minimax-m2.7` (reasoning)
|
|
35
|
+
- `nvidia/z-ai/glm-5.2`
|
|
36
|
+
- `nvidia/deepseek-ai/deepseek-v4-pro`
|
|
37
|
+
- `nvidia/deepseek-ai/deepseek-v4-flash`
|
|
38
|
+
- `nvidia/moonshotai/kimi-k2.6`
|
|
39
|
+
- `nvidia/nemotron-3-ultra-550b-a55b`
|
|
40
|
+
- `openrouter/cohere/north-mini-code:free`
|
|
41
|
+
- `openrouter/poolside/laguna-m.1:free`
|
|
42
|
+
- `openrouter/nvidia/nemotron-3-super-120b-a12b:free`
|
|
43
|
+
- (and several more `minimax/MiniMax-M2.x` variants)
|
|
44
|
+
|
|
45
|
+
## Flags
|
|
46
|
+
|
|
47
|
+
- `--gateway <url>` — override the 9Router URL (default
|
|
48
|
+
`http://localhost:20128/v1`)
|
|
49
|
+
- `--key <key>` — provider API key (writes `${env:KEY_NAME}` if it
|
|
50
|
+
looks like an env var name, otherwise writes the literal)
|
|
51
|
+
- `--provider <name>` — provider name in settings.json (default `9router`)
|
|
52
|
+
- `--model <id>` — add a single model instead of fetching the catalog
|
|
53
|
+
- `--list` — print the model catalog from `/v1/models` and exit
|
|
54
|
+
- `--remove <name>` — remove a provider by name
|
|
55
|
+
|
|
56
|
+
## Examples
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
# Use the default 9Router gateway with the live model catalog
|
|
60
|
+
/setup-provider
|
|
61
|
+
|
|
62
|
+
# Custom provider
|
|
63
|
+
/setup-provider --provider my-anthropic --gateway https://api.anthropic.com/v1 --key sk-ant-...
|
|
64
|
+
|
|
65
|
+
# Just list the available models
|
|
66
|
+
/setup-provider --list
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Implementation
|
|
70
|
+
|
|
71
|
+
1. If `--list`, GET `${gateway}/v1/models` and pretty-print the IDs.
|
|
72
|
+
2. If `--remove`, edit `~/.claude/settings.json` and remove the
|
|
73
|
+
`provider.<name>` block.
|
|
74
|
+
3. Otherwise, read `~/.claude/settings.json`. If the file doesn't
|
|
75
|
+
exist, error — the user should run `bizar install` first.
|
|
76
|
+
4. Build the new `provider.<name>` block from the flags + fetched
|
|
77
|
+
catalog.
|
|
78
|
+
5. Write the file back atomically (write to `settings.json.tmp`,
|
|
79
|
+
then `rename`).
|
|
80
|
+
6. Run `bizar validate` to confirm everything is wired up.
|
|
81
|
+
|
|
82
|
+
## Security
|
|
83
|
+
|
|
84
|
+
Never echo or log the full API key. If the user supplies a key on
|
|
85
|
+
the command line, write it as a literal value (or `${env:KEY}`
|
|
86
|
+
reference if it matches a `KEY_NAME` pattern). Never commit
|
|
87
|
+
`~/.claude/settings.json` to source control — it may contain real
|
|
88
|
+
secrets.
|
|
89
|
+
|
|
90
|
+
## Related
|
|
91
|
+
|
|
92
|
+
- `bizar connect` — interactive TUI for provider setup (alternative)
|
|
93
|
+
- `bizar install` — installs the Bizar scaffolding (NOT provider config
|
|
94
|
+
since v6.2.2)
|
|
95
|
+
- `bizar validate` — confirms provider config is wired correctly
|
|
96
|
+
- Claude Code provider config: see https://docs.claude.com/en/docs/claude-code/settings
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Authenticate Tailscale Serve and expose a local port on your tailnet
|
|
3
|
+
allowed-tools: Read, Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Tailscale Serve Command
|
|
7
|
+
|
|
8
|
+
Authenticate and configure Tailscale Serve to expose a local service on your
|
|
9
|
+
tailnet. Auto-detects whether Serve is enabled on the tailnet and either
|
|
10
|
+
provisions HTTPS automatically or surfaces the admin-enable URL clearly.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/tailscale-serve # expose port 8765 (the BizarHarness dashboard default)
|
|
16
|
+
/tailscale-serve 3000 # expose port 3000
|
|
17
|
+
/tailscale-serve --status # show current serve config, no changes
|
|
18
|
+
/tailscale-serve --reset # remove the current serve config
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The full arguments are available as `$ARGUMENTS` (and `$1` for the port).
|
|
22
|
+
Parse them and route to the matching step below.
|
|
23
|
+
|
|
24
|
+
## Steps
|
|
25
|
+
|
|
26
|
+
1. **Parse the argument**: first arg is the port (default `8765`). If `--status`, run step 3 only. If `--reset`, run step 6 only.
|
|
27
|
+
|
|
28
|
+
2. **Verify the local port is listening**:
|
|
29
|
+
```bash
|
|
30
|
+
ss -lntp 2>/dev/null | grep -E ":${PORT}\b" || curl -sS -o /dev/null -w "HTTP %{http_code}\n" --max-time 2 http://127.0.0.1:${PORT}/
|
|
31
|
+
```
|
|
32
|
+
If the port is not open, tell the user clearly which command starts the
|
|
33
|
+
service (e.g. `npm run host:start` for the BizarHarness demo, or
|
|
34
|
+
`python3 -m http.server 8765` for a quick static server). Do not proceed
|
|
35
|
+
without an upstream.
|
|
36
|
+
|
|
37
|
+
3. **Check current Tailscale Serve status**:
|
|
38
|
+
```bash
|
|
39
|
+
tailscale serve status
|
|
40
|
+
tailscale status --json | jq -r '.Self.DNSName, .Self.TailscaleIPs[0]'
|
|
41
|
+
```
|
|
42
|
+
Capture the MagicDNS name and the Tailscale IP. The DNS name will look
|
|
43
|
+
like `devbox.tail2cdf4d.ts.net` (trim the trailing dot).
|
|
44
|
+
|
|
45
|
+
4. **If already configured** (status shows `https://`):
|
|
46
|
+
- Print the current config
|
|
47
|
+
- Print the existing endpoints
|
|
48
|
+
- **Stop** — do not re-configure
|
|
49
|
+
|
|
50
|
+
5. **Try to enable Serve** (with a hard timeout — it may try to open a browser):
|
|
51
|
+
```bash
|
|
52
|
+
timeout 5 tailscale serve --bg --https=443 "http://127.0.0.1:${PORT}" 2>&1
|
|
53
|
+
```
|
|
54
|
+
- **On success**: print the new config, print the `https://<dnsname>/` endpoint.
|
|
55
|
+
- **If the output contains "Serve is not enabled"**:
|
|
56
|
+
- Parse the admin-enable URL from the output (it's the
|
|
57
|
+
`https://login.tailscale.com/f/serve?node=...` line).
|
|
58
|
+
- Print it prominently with a clear message:
|
|
59
|
+
> **Tailscale Serve is not enabled on this tailnet.**
|
|
60
|
+
> An admin must visit this URL once to enable it:
|
|
61
|
+
> **<URL>**
|
|
62
|
+
> Then re-run `/tailscale-serve ${PORT}`.
|
|
63
|
+
- Do not fall back to plain HTTP automatically — the user asked for
|
|
64
|
+
authentication, not a workaround. They can run the demo's
|
|
65
|
+
`host:start` script for the HTTP fallback.
|
|
66
|
+
- **On any other error**: print the full error, suggest
|
|
67
|
+
`tailscale serve status` and `sudo tailscale up` as debug steps.
|
|
68
|
+
|
|
69
|
+
6. **For `--reset`**:
|
|
70
|
+
```bash
|
|
71
|
+
tailscale serve reset
|
|
72
|
+
```
|
|
73
|
+
Confirm the reset succeeded by re-running `tailscale serve status`.
|
|
74
|
+
|
|
75
|
+
7. **Final output** — always end with a clear status block:
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
=== Tailscale Serve ===
|
|
79
|
+
config: <status>
|
|
80
|
+
upstream: http://127.0.0.1:<port>
|
|
81
|
+
endpoints:
|
|
82
|
+
- https://<dnsname>/ (HTTPS, only if Serve is enabled)
|
|
83
|
+
- http://<dnsname>:<port>/ (HTTP fallback, only if upstream binds 0.0.0.0)
|
|
84
|
+
|
|
85
|
+
To remove: /tailscale-serve --reset
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Notes
|
|
89
|
+
|
|
90
|
+
- `tailscale serve` requires a one-time tailnet admin enable. There is no
|
|
91
|
+
per-device flag — only the admin can authorize it. The command surfaces
|
|
92
|
+
the admin URL and stops rather than silently falling back.
|
|
93
|
+
- This command does not start the upstream service. It assumes the service
|
|
94
|
+
is already running and only wires the HTTPS proxy.
|
|
95
|
+
- For the BizarHarness Demo Dashboard, the typical flow is:
|
|
96
|
+
```
|
|
97
|
+
/tailscale-serve --status # see current state
|
|
98
|
+
npm run host:start # upstream on port 8765
|
|
99
|
+
/tailscale-serve # expose it on the tailnet
|
|
100
|
+
```
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Spawn a Claude Code agent team — coordinate Thor (M2.7), Tyr (M3), Mimir (research), and Hermod (git) to complete a complex mission end-to-end.
|
|
3
|
+
allowed-tools: Read, Bash, Agent
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Team — Spawn a Claude Code Agent Team
|
|
7
|
+
|
|
8
|
+
The `/team` command spawns a **coordinated agent team** for a complex,
|
|
9
|
+
multi-step mission. The lead agent coordinates teammates; each teammate
|
|
10
|
+
owns a disjoint scope; results are synthesized and committed.
|
|
11
|
+
|
|
12
|
+
The full mission is available as `$ARGUMENTS` (or composed from `$1`).
|
|
13
|
+
|
|
14
|
+
## When to Use `/team`
|
|
15
|
+
|
|
16
|
+
Use `/team` for any non-trivial mission that benefits from **parallel
|
|
17
|
+
work + explicit coordination**. Examples:
|
|
18
|
+
|
|
19
|
+
- **Refactor** — split a module across Thor (M2.7) and Tyr (M3) in parallel.
|
|
20
|
+
- **Multi-feature build** — new feature A (Thor) + new feature B (Tyr) + tests (Heimdall).
|
|
21
|
+
- **Research + implementation** — Mimir researches, Thor implements, Forseti audits.
|
|
22
|
+
- **Migration / upgrade** — Hermod handles the git/PR lifecycle while Thor/Tyr write code.
|
|
23
|
+
- **Bug hunt** — Mimir traces the data flow while Tyr writes the fix and tests.
|
|
24
|
+
|
|
25
|
+
Do NOT use `/team` for trivial single-file edits or single-question
|
|
26
|
+
clarifications. Use `@heimdall` directly for those.
|
|
27
|
+
|
|
28
|
+
## Default Team Composition
|
|
29
|
+
|
|
30
|
+
If the user does not specify a team composition, spawn this default:
|
|
31
|
+
|
|
32
|
+
| Role | Agent | Model | Job |
|
|
33
|
+
|---------------|---------|-------------------|---------------------------------------|
|
|
34
|
+
| Lead | @odin | minimax/MiniMax-M3 | Coordinate, synthesize, gate quality |
|
|
35
|
+
| Implementer 1 | @thor | minimax/MiniMax-M2.7 | Moderate-complexity implementation |
|
|
36
|
+
| Implementer 2 | @tyr | minimax/MiniMax-M3 | Complex / cross-cutting work |
|
|
37
|
+
| Researcher | @mimir | 9router/kr/auto | Codebase research, pattern discovery |
|
|
38
|
+
| Git ops | @hermod | minimax/MiniMax-M2.7 | Branch, commit, push, PR |
|
|
39
|
+
| Reviewer | @forseti| minimax/MiniMax-M3 | Audit plan + final output |
|
|
40
|
+
|
|
41
|
+
You can swap or remove any of these — but always keep at least one
|
|
42
|
+
implementer and a reviewer.
|
|
43
|
+
|
|
44
|
+
## Protocol (How Odin Runs a `/team` Invocation)
|
|
45
|
+
|
|
46
|
+
1. **Read `.bizar/PROJECT.md`** if it exists. Factor the project
|
|
47
|
+
description into the team mission.
|
|
48
|
+
2. **Read `bizar memory status`**. If the vault is reachable, run
|
|
49
|
+
`bizar memory search "<topic>"` for prior context on the mission.
|
|
50
|
+
3. **Decompose** the mission into disjoint work items. Each item
|
|
51
|
+
names:
|
|
52
|
+
- The agent that owns it
|
|
53
|
+
- The file scope (paths/globs)
|
|
54
|
+
- The deliverable (a function, a test, a commit, a doc)
|
|
55
|
+
- The exit signal ("done when X is committed")
|
|
56
|
+
4. **Launch in parallel** — use the **Agent tool** in a **single
|
|
57
|
+
message** with multiple `Agent` calls so all teammates run
|
|
58
|
+
concurrently. Each call's prompt names the Bizar agent
|
|
59
|
+
(`thor`, `tyr`, `mimir`, `hermod`, `forseti`) so the audit
|
|
60
|
+
trail stays readable. For long-running work, pass
|
|
61
|
+
`run_in_background: true`.
|
|
62
|
+
5. **Monitor** — while the team runs, return control to the user.
|
|
63
|
+
The team runs asynchronously. Check teammate progress only
|
|
64
|
+
when the user asks (use `SendMessage` to the named agent).
|
|
65
|
+
6. **Synthesize** — when teammates report back, gate through @forseti
|
|
66
|
+
(audit) and @hermod (commit/push). Then report the final outcome
|
|
67
|
+
to the user with file:line references.
|
|
68
|
+
|
|
69
|
+
## Pre-Dispatch Checklist (MANDATORY)
|
|
70
|
+
|
|
71
|
+
- [ ] Each teammate has a **disjoint file scope** — no two agents
|
|
72
|
+
edit the same file or directory
|
|
73
|
+
- [ ] Lockfiles, `package.json`, root configs, `tsconfig.json`,
|
|
74
|
+
`vite.config.*`, `Dockerfile`, CI configs are assigned to ONE
|
|
75
|
+
agent or marked READ-ONLY for everyone else
|
|
76
|
+
- [ ] No subagent has both `bash: allow` AND a write-level git task
|
|
77
|
+
in the same batch — Hermod is the only git writer
|
|
78
|
+
- [ ] Each teammate's scope is named in plain English
|
|
79
|
+
- [ ] You have prepended the **Sibling-Awareness Block** to every
|
|
80
|
+
prompt — see Odin baseline, "Parallel Dispatch Coordination"
|
|
81
|
+
- [ ] You have called `bizar memory status` and confirmed the vault
|
|
82
|
+
is reachable
|
|
83
|
+
|
|
84
|
+
## Example Mission Strings
|
|
85
|
+
|
|
86
|
+
**Refactor a module:**
|
|
87
|
+
```
|
|
88
|
+
Refactor src/api/auth.ts into a clean module: extract JWT validation
|
|
89
|
+
into src/auth/jwt.ts, rate-limiting into src/auth/rate-limit.ts, and
|
|
90
|
+
keep the public surface stable. Add tests for each new module. Update
|
|
91
|
+
docs/architecture.md with the new module map. Do not change the HTTP
|
|
92
|
+
route handlers.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Multi-feature build:**
|
|
96
|
+
```
|
|
97
|
+
Add a kanban board: (1) Thor — backend API at /api/tasks with CRUD
|
|
98
|
+
endpoints and SQLite persistence. (2) Tyr — frontend React component
|
|
99
|
+
in src/components/Kanban.tsx with 5 columns. (3) Heimdall — write
|
|
100
|
+
the OpenAPI spec at docs/api/tasks.yaml. (4) Hermod — open a PR
|
|
101
|
+
named feat/kanban-board.
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Bug hunt:**
|
|
105
|
+
```
|
|
106
|
+
Mimir — trace the data flow from POST /api/checkout through to the
|
|
107
|
+
Stripe webhook handler; find any place where the order status is
|
|
108
|
+
written before the payment is confirmed. Tyr — write a regression
|
|
109
|
+
test that reproduces the race. Thor — fix the bug. Forseti —
|
|
110
|
+
audit the fix for completeness. Hermod — commit + push.
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Tool Reference (Claude Code)
|
|
114
|
+
|
|
115
|
+
- **Agent tool** — spawn one subagent per call. Use multiple
|
|
116
|
+
`Agent` calls in a single message for parallelism.
|
|
117
|
+
- `run_in_background: true` on the Agent tool — for tasks that
|
|
118
|
+
span more than a few minutes.
|
|
119
|
+
- `SendMessage` — talk to a running background agent by name.
|
|
120
|
+
|
|
121
|
+
## Failure Modes
|
|
122
|
+
|
|
123
|
+
- **Two agents write the same file** — STOP, revert one branch, reassign.
|
|
124
|
+
- **One agent stalls** — use `TaskStop` to terminate, route the
|
|
125
|
+
remaining scope to another agent.
|
|
126
|
+
- **Tests fail after team work** — dispatch `thor` to investigate;
|
|
127
|
+
do not paper over the failure.
|
|
128
|
+
- **Git conflict** — route to `hermod` for `git rebase` / merge
|
|
129
|
+
resolution.
|
|
130
|
+
- **A teammate goes silent** — send a `SendMessage` to the named
|
|
131
|
+
agent for a status report; if dead, kill and re-spawn with a
|
|
132
|
+
fresh prompt.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run the project's test suite via the Bizar test gate. Auto-detects jest/vitest/bun/pytest/cargo/go. Exits non-zero on failure.
|
|
3
|
+
allowed-tools: Read, Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /test — Run the Project's Test Suite
|
|
7
|
+
|
|
8
|
+
The `/test` command is a thin wrapper around `bizar test-gate`. It
|
|
9
|
+
auto-detects the project's test runner and runs the full suite.
|
|
10
|
+
|
|
11
|
+
## What It Does
|
|
12
|
+
|
|
13
|
+
1. Detects the project stack (one of: npm, pytest, cargo, go).
|
|
14
|
+
2. Runs the matching test command:
|
|
15
|
+
- `package.json` present → `npm test`
|
|
16
|
+
- `pyproject.toml` present → `pytest`
|
|
17
|
+
- `Cargo.toml` present → `cargo test`
|
|
18
|
+
- `go.mod` present → `go test ./...`
|
|
19
|
+
3. Streams the test output to the user.
|
|
20
|
+
4. Exits non-zero on test failures.
|
|
21
|
+
|
|
22
|
+
## Exit Codes
|
|
23
|
+
|
|
24
|
+
| Code | Meaning |
|
|
25
|
+
|------|----------------------------------|
|
|
26
|
+
| 0 | All tests passed |
|
|
27
|
+
| 1 | Tests failed |
|
|
28
|
+
| 2 | No test runner detected |
|
|
29
|
+
|
|
30
|
+
## How to Use
|
|
31
|
+
|
|
32
|
+
Invoke `/test` from the project root. The test gate inspects the
|
|
33
|
+
current directory and picks the right runner.
|
|
34
|
+
|
|
35
|
+
To run a specific Bizar test scope instead, pass arguments to
|
|
36
|
+
`/test`. The arguments are forwarded to the underlying runner and
|
|
37
|
+
are available as `$ARGUMENTS` (or `$1`, `$2`, ...):
|
|
38
|
+
|
|
39
|
+
- `/test plugins/bizar` — run only the Bizar plugin tests (bun)
|
|
40
|
+
- `/test --testPathPattern=auth` — pass a flag to the runner
|
|
41
|
+
|
|
42
|
+
## When to Use
|
|
43
|
+
|
|
44
|
+
- After any non-trivial code change
|
|
45
|
+
- Before committing (`@hermod` should always run `/test` first)
|
|
46
|
+
- As the final step of a `/team` mission — gate quality with tests
|
|
47
|
+
|
|
48
|
+
## Common Patterns
|
|
49
|
+
|
|
50
|
+
- **Post-implementation gate** — after Thor and Tyr finish their
|
|
51
|
+
parallel work, dispatch `thor` to run `/test`. If failures, fix
|
|
52
|
+
and re-run.
|
|
53
|
+
- **PR check** — run `/test` in CI before merging.
|
|
54
|
+
- **Debug a flaky test** — run `/test` twice; if the second run
|
|
55
|
+
passes, the test is order-dependent (fix or quarantine).
|
|
56
|
+
|
|
57
|
+
## Related
|
|
58
|
+
|
|
59
|
+
- `bizar test-gate` — the underlying CLI command
|
|
60
|
+
- `bizar doctor` — checks the Bizar install itself (not project tests)
|
|
61
|
+
- `make check` — typecheck + tests (full pipeline, dev only)
|
|
62
|
+
- `make e2e` — Bizar plugin end-to-end (dev only)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Validate the Bizar install end-to-end — settings.json parses, plugin entry resolves, all agent files are installed, all skills/rules/hooks/commands are in place, provider config is sane, and the 9router gateway is reachable.
|
|
3
|
+
allowed-tools: Read, Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /validate — Validate the Bizar Install
|
|
7
|
+
|
|
8
|
+
The `/validate` command runs `bizar doctor` with the full check
|
|
9
|
+
battery. It is the fastest way to confirm the install is healthy
|
|
10
|
+
and Claude Code will see every Bizar component on the next session
|
|
11
|
+
start.
|
|
12
|
+
|
|
13
|
+
## What It Checks
|
|
14
|
+
|
|
15
|
+
1. **claude-reachable** — `claude --version` exits 0.
|
|
16
|
+
2. **claude-config-valid** — `~/.claude/settings.json` parses as JSON.
|
|
17
|
+
3. **plugin-entry-present** — `settings.json` has a Bizar plugin entry.
|
|
18
|
+
4. **plugin-path-resolves** — the plugin path on disk actually exists.
|
|
19
|
+
5. **agent-files-installed** — all agent files in `~/.claude/agents/`
|
|
20
|
+
(odin, vor, frigg, quick, mimir, heimdall, hermod, thor, baldr,
|
|
21
|
+
tyr, vidarr, forseti, semble-search, agent-browser).
|
|
22
|
+
6. **tools-available** — at least one of `headroom`, `semble`, `skills`
|
|
23
|
+
is on PATH.
|
|
24
|
+
7. **provider-config-sanity** — `provider.9router` (preferred) or
|
|
25
|
+
`provider.minimax` (legacy) has at least one sane model entry.
|
|
26
|
+
8. **9router-reachable** — 9Router gateway responds at
|
|
27
|
+
`http://localhost:20128/api/health` (lenient — warn, don't fail).
|
|
28
|
+
9. **slash-commands-installed** — all Bizar slash commands
|
|
29
|
+
(`/audit`, `/explain`, `/init`, `/learn`, `/plan`, `/plow-through`,
|
|
30
|
+
`/pr-review`, `/tailscale-serve`, `/visual-plan`, `/bizar`,
|
|
31
|
+
`/team`, `/test`, `/validate`) are present in `~/.claude/commands/`.
|
|
32
|
+
10. **skills-installed** — every subdir of `config/skills/` is
|
|
33
|
+
mirrored to `~/.claude/skills/`.
|
|
34
|
+
11. **rules-installed** — every `.md` in `config/rules/` is mirrored
|
|
35
|
+
to `~/.claude/rules/`.
|
|
36
|
+
12. **hooks-installed** — `config/hooks/` is mirrored to
|
|
37
|
+
`~/.claude/hooks/`.
|
|
38
|
+
|
|
39
|
+
## How to Use
|
|
40
|
+
|
|
41
|
+
Invoke `/validate` (no arguments) from anywhere. It is read-only and
|
|
42
|
+
never modifies the system.
|
|
43
|
+
|
|
44
|
+
If any check fails, the user should run `bizar update` to refresh the
|
|
45
|
+
install, or `bizar repair` to fix common issues.
|
|
46
|
+
|
|
47
|
+
## Output
|
|
48
|
+
|
|
49
|
+
Each check prints ✓ or ✗ with a one-line message. The summary line
|
|
50
|
+
shows the total pass/fail count. Exits non-zero if any check fails.
|
|
51
|
+
|
|
52
|
+
For machine-readable output, the user can run `bizar doctor --json`
|
|
53
|
+
directly.
|
|
54
|
+
|
|
55
|
+
## When to Use
|
|
56
|
+
|
|
57
|
+
- After a manual config edit — confirm nothing broke.
|
|
58
|
+
- Before a `/team` mission — confirm the install is healthy so the
|
|
59
|
+
team has all the tools it needs.
|
|
60
|
+
- After `bizar install` or `bizar update` — the install already
|
|
61
|
+
calls doctor, but a manual re-run is cheap.
|
|
62
|
+
- When a user asks "why is Claude Code misbehaving?" — start here.
|
|
63
|
+
|
|
64
|
+
## Related
|
|
65
|
+
|
|
66
|
+
- `bizar doctor` — the underlying CLI command
|
|
67
|
+
- `bizar update` — refreshes the install (re-runs syncConfigExtras)
|
|
68
|
+
- `bizar repair` — fixes common issues (stale symlinks, version drift)
|