@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.
Files changed (332) hide show
  1. package/.claude/CLAUDE.md +15 -0
  2. package/.claude/agents/_shared/AGENT_BASELINE.md +168 -0
  3. package/.claude/agents/_shared/CLAUDE_TOOLS.md +412 -0
  4. package/.claude/agents/_shared/SKILLS.md +109 -0
  5. package/.claude/agents/agent-browser.md +80 -0
  6. package/.claude/agents/baldr.md +49 -0
  7. package/.claude/agents/forseti.md +51 -0
  8. package/.claude/agents/frigg.md +42 -0
  9. package/.claude/agents/heimdall.md +33 -0
  10. package/.claude/agents/hermod.md +53 -0
  11. package/.claude/agents/mimir.md +49 -0
  12. package/.claude/agents/odin.md +287 -0
  13. package/.claude/agents/quick.md +34 -0
  14. package/.claude/agents/semble-search.md +50 -0
  15. package/.claude/agents/thor.md +53 -0
  16. package/.claude/agents/tyr.md +56 -0
  17. package/.claude/agents/vidarr.md +54 -0
  18. package/.claude/agents/vor.md +53 -0
  19. package/.claude/commands/audit.md +25 -0
  20. package/.claude/commands/bizar.md +22 -0
  21. package/.claude/commands/explain.md +17 -0
  22. package/.claude/commands/init.md +29 -0
  23. package/.claude/commands/learn.md +44 -0
  24. package/.claude/commands/plan.md +35 -0
  25. package/.claude/commands/plow-through.md +50 -0
  26. package/.claude/commands/pr-review.md +49 -0
  27. package/.claude/commands/setup-provider.md +96 -0
  28. package/.claude/commands/tailscale-serve.md +100 -0
  29. package/.claude/commands/team.md +132 -0
  30. package/.claude/commands/test.md +62 -0
  31. package/.claude/commands/validate.md +68 -0
  32. package/.claude/commands/visual-plan.md +24 -0
  33. package/.claude/hooks/README.md +92 -0
  34. package/.claude/hooks/posttooluse-editwrite.mjs +91 -0
  35. package/.claude/hooks/pretooluse-bash.mjs +81 -0
  36. package/.claude/hooks/pretooluse-editwrite.mjs +139 -0
  37. package/.claude/hooks/sessionend-recall.mjs +74 -0
  38. package/.claude/hooks/sessionstart-prime.mjs +80 -0
  39. package/.claude/hooks/userpromptsubmit-tag.mjs +80 -0
  40. package/.claude/settings.json +116 -0
  41. package/.claude/skills/9router/SKILL.md +80 -0
  42. package/.claude/skills/9router-chat/SKILL.md +73 -0
  43. package/.claude/skills/9router-embeddings/SKILL.md +69 -0
  44. package/.claude/skills/9router-image/SKILL.md +86 -0
  45. package/.claude/skills/9router-stt/SKILL.md +79 -0
  46. package/.claude/skills/9router-tts/SKILL.md +80 -0
  47. package/.claude/skills/9router-web-fetch/SKILL.md +99 -0
  48. package/.claude/skills/9router-web-search/SKILL.md +91 -0
  49. package/.claude/skills/bizar/README.md +9 -0
  50. package/.claude/skills/bizar/SKILL.md +450 -0
  51. package/.claude/skills/cpp-coding-standards/README.md +28 -0
  52. package/.claude/skills/cpp-coding-standards/SKILL.md +634 -0
  53. package/.claude/skills/cpp-coding-standards/references/concurrency.md +320 -0
  54. package/.claude/skills/cpp-coding-standards/references/error-handling.md +229 -0
  55. package/.claude/skills/cpp-coding-standards/references/memory-safety.md +216 -0
  56. package/.claude/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
  57. package/.claude/skills/cpp-coding-standards/references/review-checklist.md +96 -0
  58. package/.claude/skills/cpp-testing/README.md +28 -0
  59. package/.claude/skills/cpp-testing/SKILL.md +304 -0
  60. package/.claude/skills/cpp-testing/references/coverage.md +370 -0
  61. package/.claude/skills/cpp-testing/references/framework-compare.md +175 -0
  62. package/.claude/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
  63. package/.claude/skills/cpp-testing/references/mocking.md +364 -0
  64. package/.claude/skills/cpp-testing/references/tdd-workflow.md +308 -0
  65. package/.claude/skills/cubesandbox/SKILL.md +148 -0
  66. package/.claude/skills/embedded-esp-idf/README.md +41 -0
  67. package/.claude/skills/embedded-esp-idf/SKILL.md +439 -0
  68. package/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
  69. package/.claude/skills/embedded-esp-idf/references/host-tests.md +164 -0
  70. package/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
  71. package/.claude/skills/embedded-esp-idf/references/kconfig.md +159 -0
  72. package/.claude/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
  73. package/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
  74. package/.claude/skills/embedded-esp-idf/references/nvs.md +121 -0
  75. package/.claude/skills/embedded-esp-idf/references/packed-structs.md +192 -0
  76. package/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
  77. package/.claude/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
  78. package/.claude/skills/glyph/SKILL.md +163 -0
  79. package/.claude/skills/harness-engineering/SKILL.md +143 -0
  80. package/.claude/skills/lightrag/SKILL.md +81 -0
  81. package/.claude/skills/memory-protocol/SKILL.md +105 -0
  82. package/.claude/skills/obsidian/SKILL.md +306 -0
  83. package/.claude/skills/read-the-damn-docs/SKILL.md +113 -0
  84. package/.claude/skills/self-improvement/SKILL.md +64 -0
  85. package/README.md +87 -59
  86. package/bizar-dash/dist/assets/{EnvVarsSection-DXM8gRm_.js → EnvVarsSection-B58aiJiE.js} +1 -1
  87. package/bizar-dash/dist/assets/{EnvVarsSection-DXM8gRm_.js.map → EnvVarsSection-B58aiJiE.js.map} +1 -1
  88. package/bizar-dash/dist/assets/{MobileChat-BnKN_Ks_.js → MobileChat-BJrqwVDd.js} +1 -1
  89. package/bizar-dash/dist/assets/{MobileChat-BnKN_Ks_.js.map → MobileChat-BJrqwVDd.js.map} +1 -1
  90. package/bizar-dash/dist/assets/{MobileSettings-DjCPxC-Q.js → MobileSettings-CEQNJNLJ.js} +1 -1
  91. package/bizar-dash/dist/assets/{MobileSettings-DjCPxC-Q.js.map → MobileSettings-CEQNJNLJ.js.map} +1 -1
  92. package/bizar-dash/dist/assets/{main-DYiZqMrn.js → main-IvfQAOfy.js} +1 -1
  93. package/bizar-dash/dist/assets/{main-DYiZqMrn.js.map → main-IvfQAOfy.js.map} +1 -1
  94. package/bizar-dash/dist/assets/{markdown-C6mXtQxD.js → markdown-tOLaD6nm.js} +1 -1
  95. package/bizar-dash/dist/assets/{markdown-C6mXtQxD.js.map → markdown-tOLaD6nm.js.map} +1 -1
  96. package/bizar-dash/dist/assets/{mobile-CMHqtLV2.js → mobile-DYCHcUpq.js} +1 -1
  97. package/bizar-dash/dist/assets/{mobile-CMHqtLV2.js.map → mobile-DYCHcUpq.js.map} +1 -1
  98. package/bizar-dash/dist/assets/{mobile-layout-3jIhHX_p.js → mobile-layout-CBHjpwsb.js} +2 -2
  99. package/bizar-dash/dist/assets/{mobile-layout-3jIhHX_p.js.map → mobile-layout-CBHjpwsb.js.map} +1 -1
  100. package/bizar-dash/dist/assets/{useSlashCommands-DtITw8Xv.js → useSlashCommands-Bd7_FA6U.js} +2 -2
  101. package/bizar-dash/dist/assets/{useSlashCommands-DtITw8Xv.js.map → useSlashCommands-Bd7_FA6U.js.map} +1 -1
  102. package/bizar-dash/dist/assets/{vendor-CeHGtduv.js → vendor-C843201K.js} +12 -12
  103. package/bizar-dash/dist/assets/vendor-C843201K.js.map +1 -0
  104. package/bizar-dash/dist/index.html +6 -6
  105. package/bizar-dash/dist/mobile.html +2 -2
  106. package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  107. package/bizar-dash/src/server/api.mjs +4 -4
  108. package/bizar-dash/src/server/background-store.mjs +15 -16
  109. package/bizar-dash/src/server/bg-poller.mjs +25 -35
  110. package/bizar-dash/src/server/bg-retry.mjs +66 -194
  111. package/bizar-dash/src/server/claude-bg-spawner.mjs +390 -0
  112. package/bizar-dash/src/server/claude-info.mjs +412 -0
  113. package/bizar-dash/src/server/{cline-runner.mjs → claude-runner.mjs} +53 -48
  114. package/bizar-dash/src/server/claude-sdk.mjs +191 -0
  115. package/bizar-dash/src/server/providers-store.mjs +22 -49
  116. package/bizar-dash/src/server/routes/background.mjs +24 -20
  117. package/bizar-dash/src/server/routes/chat.mjs +223 -326
  118. package/bizar-dash/src/server/routes/claude-session-detail.mjs +329 -0
  119. package/bizar-dash/src/server/routes/claude-sessions.mjs +259 -0
  120. package/bizar-dash/src/server/routes/tasks.mjs +20 -28
  121. package/bizar-dash/src/server/task-delegator.mjs +76 -77
  122. package/bizar-dash/src/web/components/chat/useChat.ts +23 -27
  123. package/bizar-dash/src/web/views/Chat.tsx +8 -8
  124. package/cli/bin.mjs +31 -18
  125. package/cli/commands/claude-cmd.mjs +348 -0
  126. package/cli/commands/install.mjs +12 -11
  127. package/cli/commands/sandbox.mjs +220 -0
  128. package/cli/commands/validate.mjs +252 -288
  129. package/cli/dev-link.test.mjs +11 -11
  130. package/cli/doctor.mjs +131 -213
  131. package/cli/install.mjs +33 -37
  132. package/cli/install.test.mjs +9 -9
  133. package/cli/provision-claude.mjs +893 -0
  134. package/cli/provision.mjs +330 -226
  135. package/cli/provision.test.mjs +102 -0
  136. package/cli/utils.mjs +72 -58
  137. package/config/AGENTS.md +28 -28
  138. package/config/agents/_shared/AGENT_BASELINE.md +104 -684
  139. package/config/skills/bizar/SKILL.md +197 -0
  140. package/config/skills/cubesandbox/SKILL.md +148 -0
  141. package/config/skills/harness-engineering/SKILL.md +142 -0
  142. package/install.sh +66 -44
  143. package/package.json +19 -11
  144. package/packages/sdk/ARCHITECTURE.md +40 -36
  145. package/packages/sdk/package-lock.json +32 -0
  146. package/packages/sdk/package.json +15 -5
  147. package/{plugins/bizar → packages/sdk}/src/dangerous-patterns.ts +6 -28
  148. package/packages/sdk/src/fingerprint.ts +0 -0
  149. package/packages/sdk/src/index.ts +38 -73
  150. package/packages/sdk/src/mcp/bin.ts +51 -0
  151. package/packages/sdk/src/mcp/server.ts +498 -0
  152. package/{plugins/bizar/src/memory-vault.ts → packages/sdk/src/memory/index.ts} +18 -21
  153. package/packages/sdk/tests/sdk.test.mjs +148 -0
  154. package/packages/sdk/vitest.config.ts +1 -1
  155. package/scripts/bh-full-e2e.mjs +166 -363
  156. package/scripts/check-deps.mjs +28 -46
  157. package/scripts/mirror-claude-md.sh +78 -0
  158. package/scripts/test-in-container.sh +157 -0
  159. package/templates/clean-state-checklist.md +3 -3
  160. package/templates/sprint-contract.md +2 -2
  161. package/bizar-dash/.bizar/activity.log +0 -3
  162. package/bizar-dash/.omx/logs/omx-2026-07-07.jsonl +0 -1
  163. package/bizar-dash/.omx/state/session.json +0 -10
  164. package/bizar-dash/bizar-design/EXPLANATION.md +0 -307
  165. package/bizar-dash/bizar-design/INSTRUCTIONS.md +0 -149
  166. package/bizar-dash/bizar-design/canvas.html +0 -281
  167. package/bizar-dash/bizar-design/canvas.html.artifact.json +0 -19
  168. package/bizar-dash/bizar-design/components.css +0 -1665
  169. package/bizar-dash/bizar-design/components.html +0 -557
  170. package/bizar-dash/bizar-design/components.html.artifact.json +0 -19
  171. package/bizar-dash/bizar-design/desktop/agents.html +0 -74
  172. package/bizar-dash/bizar-design/desktop/agents.html.artifact.json +0 -19
  173. package/bizar-dash/bizar-design/desktop/memory.html +0 -75
  174. package/bizar-dash/bizar-design/desktop/memory.html.artifact.json +0 -19
  175. package/bizar-dash/bizar-design/desktop/metrics.html +0 -63
  176. package/bizar-dash/bizar-design/desktop/metrics.html.artifact.json +0 -19
  177. package/bizar-dash/bizar-design/desktop/overview.html +0 -95
  178. package/bizar-dash/bizar-design/desktop/overview.html.artifact.json +0 -19
  179. package/bizar-dash/bizar-design/desktop/settings.html +0 -70
  180. package/bizar-dash/bizar-design/desktop/settings.html.artifact.json +0 -19
  181. package/bizar-dash/bizar-design/icons.svg +0 -44
  182. package/bizar-dash/bizar-design/index.html +0 -192
  183. package/bizar-dash/bizar-design/index.html.artifact.json +0 -19
  184. package/bizar-dash/bizar-design/mobile/agents.html +0 -29
  185. package/bizar-dash/bizar-design/mobile/agents.html.artifact.json +0 -19
  186. package/bizar-dash/bizar-design/mobile/memory.html +0 -28
  187. package/bizar-dash/bizar-design/mobile/memory.html.artifact.json +0 -19
  188. package/bizar-dash/bizar-design/mobile/metrics.html +0 -29
  189. package/bizar-dash/bizar-design/mobile/metrics.html.artifact.json +0 -19
  190. package/bizar-dash/bizar-design/mobile/overview.html +0 -33
  191. package/bizar-dash/bizar-design/mobile/overview.html.artifact.json +0 -19
  192. package/bizar-dash/bizar-design/mobile/settings.html +0 -28
  193. package/bizar-dash/bizar-design/mobile/settings.html.artifact.json +0 -19
  194. package/bizar-dash/bizar-design/prototype.js +0 -114
  195. package/bizar-dash/bizar-design/tokens.css +0 -106
  196. package/bizar-dash/dist/assets/vendor-CeHGtduv.js.map +0 -1
  197. package/bizar-dash/node_modules/.package-lock.json +0 -6
  198. package/bizar-dash/package-lock.json +0 -6
  199. package/bizar-dash/src/server/cline-sdk.mjs +0 -132
  200. package/bizar-dash/src/server/routes/cline-session-detail.mjs +0 -559
  201. package/bizar-dash/src/server/routes/cline-sessions.mjs +0 -291
  202. package/cli/commands/cline-cmd.mjs +0 -289
  203. package/cli/commands/validate.test.mjs +0 -344
  204. package/cli/doctor.test.mjs +0 -350
  205. package/config/cline.json.template +0 -342
  206. package/packages/sdk/src/client.ts +0 -188
  207. package/packages/sdk/src/cline-events.ts +0 -134
  208. package/packages/sdk/src/cline-types.ts +0 -66
  209. package/packages/sdk/src/cline.ts +0 -339
  210. package/packages/sdk/src/errors.ts +0 -129
  211. package/packages/sdk/src/events.ts +0 -153
  212. package/packages/sdk/src/types.ts +0 -176
  213. package/packages/sdk/tests/client.test.ts +0 -217
  214. package/packages/sdk/tests/errors.test.ts +0 -108
  215. package/packages/sdk/tests/events.test.ts +0 -139
  216. package/packages/sdk/tests/fixtures/fetch-mock.ts +0 -152
  217. package/packages/sdk/tests/fixtures/sse-mock.ts +0 -30
  218. package/plugins/bizar/ARCHITECTURE.md +0 -142
  219. package/plugins/bizar/CONSTRAINTS.md +0 -67
  220. package/plugins/bizar/LICENSE +0 -21
  221. package/plugins/bizar/README.md +0 -448
  222. package/plugins/bizar/index.ts +0 -872
  223. package/plugins/bizar/package.json +0 -39
  224. package/plugins/bizar/scripts/check-forbidden-imports.sh +0 -33
  225. package/plugins/bizar/src/background-state.ts +0 -641
  226. package/plugins/bizar/src/background.ts +0 -1806
  227. package/plugins/bizar/src/cline-runner.ts +0 -203
  228. package/plugins/bizar/src/clineruntime.ts +0 -227
  229. package/plugins/bizar/src/commands-impl.ts +0 -151
  230. package/plugins/bizar/src/commands.ts +0 -1799
  231. package/plugins/bizar/src/compaction.d.mts +0 -48
  232. package/plugins/bizar/src/compaction.mjs +0 -192
  233. package/plugins/bizar/src/dashboard-client.ts +0 -233
  234. package/plugins/bizar/src/event-stream.ts +0 -606
  235. package/plugins/bizar/src/fingerprint.ts +0 -120
  236. package/plugins/bizar/src/handoff.ts +0 -79
  237. package/plugins/bizar/src/hooks/memory-flush-on-compact.ts +0 -123
  238. package/plugins/bizar/src/hooks/memory-inject.ts +0 -247
  239. package/plugins/bizar/src/hooks/memory-write-on-end.ts +0 -188
  240. package/plugins/bizar/src/hooks/skill-curator.ts +0 -180
  241. package/plugins/bizar/src/http-client.ts +0 -467
  242. package/plugins/bizar/src/key-rotation.ts +0 -218
  243. package/plugins/bizar/src/logger.ts +0 -144
  244. package/plugins/bizar/src/loop-engineering.ts +0 -241
  245. package/plugins/bizar/src/loop.ts +0 -176
  246. package/plugins/bizar/src/mistake-recovery.ts +0 -98
  247. package/plugins/bizar/src/odin.ts +0 -227
  248. package/plugins/bizar/src/options.ts +0 -470
  249. package/plugins/bizar/src/plan-fs.ts +0 -323
  250. package/plugins/bizar/src/reasoning-clean.ts +0 -454
  251. package/plugins/bizar/src/report.ts +0 -178
  252. package/plugins/bizar/src/research-prompt.ts +0 -35
  253. package/plugins/bizar/src/serve-info.ts +0 -228
  254. package/plugins/bizar/src/serve.ts +0 -496
  255. package/plugins/bizar/src/settings.ts +0 -349
  256. package/plugins/bizar/src/state.ts +0 -298
  257. package/plugins/bizar/src/tool-discipline.ts +0 -105
  258. package/plugins/bizar/src/tools/agent-browser.ts +0 -315
  259. package/plugins/bizar/src/tools/bg-collect.ts +0 -131
  260. package/plugins/bizar/src/tools/bg-get-comments.ts +0 -266
  261. package/plugins/bizar/src/tools/bg-kill.ts +0 -116
  262. package/plugins/bizar/src/tools/bg-pause.ts +0 -99
  263. package/plugins/bizar/src/tools/bg-report-progress.ts +0 -115
  264. package/plugins/bizar/src/tools/bg-resume.ts +0 -94
  265. package/plugins/bizar/src/tools/bg-send-message.ts +0 -223
  266. package/plugins/bizar/src/tools/bg-spawn.ts +0 -502
  267. package/plugins/bizar/src/tools/bg-status.ts +0 -130
  268. package/plugins/bizar/src/tools/graph-query.ts +0 -278
  269. package/plugins/bizar/src/tools/loop-engineering.ts +0 -193
  270. package/plugins/bizar/src/tools/memory-list.ts +0 -43
  271. package/plugins/bizar/src/tools/memory-read.ts +0 -69
  272. package/plugins/bizar/src/tools/memory-search.ts +0 -47
  273. package/plugins/bizar/src/tools/memory-write.ts +0 -54
  274. package/plugins/bizar/src/tools/open-kb.ts +0 -198
  275. package/plugins/bizar/src/tools/plan-action.ts +0 -785
  276. package/plugins/bizar/src/tools/read-glyph-feedback.ts +0 -191
  277. package/plugins/bizar/src/tools/team-spawn.ts +0 -73
  278. package/plugins/bizar/src/tools/team-status.ts +0 -76
  279. package/plugins/bizar/src/tools/wait-for-feedback.ts +0 -415
  280. package/plugins/bizar/src/trajectory.ts +0 -104
  281. package/plugins/bizar/tests/README.md +0 -99
  282. package/plugins/bizar/tests/attach-handler-bug.test.ts +0 -169
  283. package/plugins/bizar/tests/background-state.test.ts +0 -277
  284. package/plugins/bizar/tests/background.test.ts +0 -402
  285. package/plugins/bizar/tests/block.test.ts +0 -195
  286. package/plugins/bizar/tests/canonical-key-order.test.ts +0 -75
  287. package/plugins/bizar/tests/clineruntime-config.test.ts +0 -283
  288. package/plugins/bizar/tests/commands-impl.test.ts +0 -316
  289. package/plugins/bizar/tests/commands.test.ts +0 -584
  290. package/plugins/bizar/tests/compaction.test.ts +0 -264
  291. package/plugins/bizar/tests/config.test.ts +0 -128
  292. package/plugins/bizar/tests/dashboard-client.test.ts +0 -159
  293. package/plugins/bizar/tests/dispose.test.ts +0 -336
  294. package/plugins/bizar/tests/event-stream.test.ts +0 -409
  295. package/plugins/bizar/tests/event.test.ts +0 -262
  296. package/plugins/bizar/tests/fingerprint.test.ts +0 -162
  297. package/plugins/bizar/tests/http-client.test.ts +0 -404
  298. package/plugins/bizar/tests/init-helpers.test.ts +0 -203
  299. package/plugins/bizar/tests/integration/slash-command.test.ts +0 -349
  300. package/plugins/bizar/tests/integration/tool-routing.test.ts +0 -98
  301. package/plugins/bizar/tests/key-rotation.test.ts +0 -396
  302. package/plugins/bizar/tests/loop-engineering.test.ts +0 -168
  303. package/plugins/bizar/tests/loop.test.ts +0 -397
  304. package/plugins/bizar/tests/memory-write-on-end.test.ts +0 -92
  305. package/plugins/bizar/tests/mistake-recovery.test.ts +0 -116
  306. package/plugins/bizar/tests/odin.test.ts +0 -125
  307. package/plugins/bizar/tests/options.test.ts +0 -329
  308. package/plugins/bizar/tests/reasoning-clean.test.ts +0 -422
  309. package/plugins/bizar/tests/safety.test.ts +0 -256
  310. package/plugins/bizar/tests/serve.test.ts +0 -339
  311. package/plugins/bizar/tests/settings.test.ts +0 -351
  312. package/plugins/bizar/tests/stall-think.test.ts +0 -750
  313. package/plugins/bizar/tests/state.test.ts +0 -276
  314. package/plugins/bizar/tests/tool-discipline.test.ts +0 -77
  315. package/plugins/bizar/tests/tools/agent-browser.test.ts +0 -98
  316. package/plugins/bizar/tests/tools/bg-collect.test.ts +0 -337
  317. package/plugins/bizar/tests/tools/bg-get-comments.test.ts +0 -485
  318. package/plugins/bizar/tests/tools/bg-kill.test.ts +0 -235
  319. package/plugins/bizar/tests/tools/bg-pause.test.ts +0 -61
  320. package/plugins/bizar/tests/tools/bg-report-progress.test.ts +0 -79
  321. package/plugins/bizar/tests/tools/bg-resume.test.ts +0 -40
  322. package/plugins/bizar/tests/tools/bg-send-message.test.ts +0 -116
  323. package/plugins/bizar/tests/tools/bg-spawn-delegation.test.ts +0 -147
  324. package/plugins/bizar/tests/tools/bg-spawn-http.test.ts +0 -233
  325. package/plugins/bizar/tests/tools/bg-spawn.test.ts +0 -311
  326. package/plugins/bizar/tests/tools/bg-status.test.ts +0 -217
  327. package/plugins/bizar/tests/tools/cline-runner.test.ts +0 -115
  328. package/plugins/bizar/tests/tools/plan-action.test.ts +0 -599
  329. package/plugins/bizar/tests/tools/read-glyph-feedback.test.ts +0 -253
  330. package/plugins/bizar/tests/tools/wait-for-feedback.test.ts +0 -390
  331. package/plugins/bizar/tests/update-deadlock.test.ts +0 -151
  332. 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,9 @@
1
+ # BizarHarness Skill
2
+
3
+ Norse-pantheon multi-agent system skill for Claude Code.
4
+
5
+ Copy to `~/.claude/skills/bizar/SKILL.md` to install.
6
+
7
+ ```
8
+ cp SKILL.md ~/.claude/skills/bizar/SKILL.md
9
+ ```
@@ -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.