@polderlabs/bizar 5.6.0-beta.17 → 5.6.0-beta.3
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/README.md +352 -254
- package/bizar-dash/ARCHITECTURE.md +30 -148
- package/bizar-dash/DESIGN.md +98 -1114
- package/bizar-dash/dist/assets/{EnvVarsSection-DXM8gRm_.js → EnvVarsSection-Cm65-GMl.js} +1 -1
- package/bizar-dash/dist/assets/{EnvVarsSection-DXM8gRm_.js.map → EnvVarsSection-Cm65-GMl.js.map} +1 -1
- package/bizar-dash/dist/assets/{MobileChat-BnKN_Ks_.js → MobileChat-Cz-Bwlet.js} +1 -1
- package/bizar-dash/dist/assets/{MobileChat-BnKN_Ks_.js.map → MobileChat-Cz-Bwlet.js.map} +1 -1
- package/bizar-dash/dist/assets/{MobileSettings-DjCPxC-Q.js → MobileSettings-Blo5pNCR.js} +1 -1
- package/bizar-dash/dist/assets/{MobileSettings-DjCPxC-Q.js.map → MobileSettings-Blo5pNCR.js.map} +1 -1
- package/bizar-dash/dist/assets/main-oJcm40km.js +18 -0
- package/bizar-dash/dist/assets/main-oJcm40km.js.map +1 -0
- package/bizar-dash/dist/assets/{mobile-CMHqtLV2.js → mobile-D05XoSPU.js} +1 -1
- package/bizar-dash/dist/assets/{mobile-CMHqtLV2.js.map → mobile-D05XoSPU.js.map} +1 -1
- package/bizar-dash/dist/assets/mobile-layout-D3aezTed.js +2 -0
- package/bizar-dash/dist/assets/mobile-layout-D3aezTed.js.map +1 -0
- package/bizar-dash/dist/assets/{useSlashCommands-DtITw8Xv.js → useSlashCommands-CwajjS-v.js} +2 -2
- package/bizar-dash/dist/assets/{useSlashCommands-DtITw8Xv.js.map → useSlashCommands-CwajjS-v.js.map} +1 -1
- package/bizar-dash/dist/index.html +4 -4
- package/bizar-dash/dist/mobile.html +2 -2
- package/bizar-dash/src/server/mods-loader.mjs +1 -1
- package/bizar-dash/src/web/App.tsx +1 -2
- package/bizar-dash/src/web/components/ArtifactViewer.tsx +1 -2
- package/bizar-dash/src/web/components/Notifications.tsx +2 -3
- package/bizar-dash/src/web/components/VoiceNotesPanel.tsx +2 -3
- package/bizar-dash/src/web/components/VoiceRecorder.tsx +3 -4
- package/bizar-dash/src/web/lib/ws.ts +5 -6
- package/bizar-dash/src/web/views/Activity.tsx +1 -2
- package/bizar-dash/src/web/views/Artifacts.tsx +1 -2
- package/bizar-dash/src/web/views/Harness.tsx +0 -13
- package/bizar-dash/src/web/views/Settings.tsx +1 -2
- package/bizar-dash/tests/{no-browser-harness.node.test.mjs → no-agent-browser.node.test.mjs} +26 -26
- package/cli/bin.mjs +5 -53
- package/cli/browser-harness-up.sh +193 -0
- package/cli/commands/clip.mjs +1 -18
- package/cli/commands/eval.mjs +1 -19
- package/cli/commands/lightrag.mjs +1 -0
- package/cli/commands/ocr.mjs +1 -18
- package/cli/commands/usage.mjs +0 -4
- package/cli/commands/util.mjs +5 -116
- package/cli/dev-link.test.mjs +11 -24
- package/cli/digest.mjs +1 -1
- package/cli/doctor.mjs +2 -2
- package/cli/doctor.test.mjs +9 -14
- package/cli/install.mjs +0 -68
- package/cli/install.test.mjs +8 -7
- package/cli/provision.mjs +43 -688
- package/cli/utils.mjs +0 -28
- package/config/AGENTS.md +6 -6
- package/config/agents/_shared/AGENT_BASELINE.md +5 -5
- package/config/agents/browser-harness.md +72 -0
- package/config/agents/odin.md +1 -1
- package/config/cline.json +334 -0
- package/install.sh +3 -40
- package/package.json +12 -5
- package/packages/sdk/ARCHITECTURE.md +4 -19
- package/packages/sdk/package.json +1 -1
- package/plugins/bizar/ARCHITECTURE.md +15 -67
- package/plugins/bizar/CONSTRAINTS.md +7 -35
- package/plugins/bizar/dist/index.js +447728 -0
- package/plugins/bizar/index.ts +1 -81
- package/plugins/bizar/src/tools/bg-spawn.ts +1 -1
- package/plugins/bizar/src/tools/read-glyph-feedback.ts +3 -4
- package/plugins/bizar/tests/commands-impl.test.ts +7 -7
- package/plugins/bizar/tests/integration/slash-command.test.ts +3 -4
- package/plugins/bizar/tests/memory-write-on-end.test.ts +3 -3
- package/plugins/bizar/tests/tools/bg-spawn-delegation.test.ts +2 -2
- package/plugins/bizar/tests/tools/bg-spawn-http.test.ts +1 -1
- package/plugins/bizar/tests/tools/bg-status.test.ts +10 -10
- package/bizar-dash/.omx/logs/omx-2026-07-07.jsonl +0 -1
- package/bizar-dash/.omx/state/session.json +0 -10
- package/bizar-dash/dist/assets/main-DYiZqMrn.js +0 -18
- package/bizar-dash/dist/assets/main-DYiZqMrn.js.map +0 -1
- package/bizar-dash/dist/assets/mobile-layout-3jIhHX_p.js +0 -2
- package/bizar-dash/dist/assets/mobile-layout-3jIhHX_p.js.map +0 -1
- package/bizar-dash/skills/agent-browser/SKILL.md +0 -181
- package/bizar-dash/src/web/lib/logger.ts +0 -30
- package/cli/agent-browser-up.sh +0 -152
- package/cli/agent-browser-update.mjs +0 -322
- package/cli/agent-browser-update.test.mjs +0 -86
- package/cli/cli-commands-validation.test.mjs +0 -106
- package/config/agents/agent-browser.md +0 -90
- package/plugins/bizar/package.json +0 -28
- package/plugins/bizar/src/dangerous-patterns.ts +0 -149
- package/plugins/bizar/src/hooks/memory-flush-on-compact.ts +0 -123
- package/plugins/bizar/src/hooks/skill-curator.ts +0 -180
- package/plugins/bizar/src/tools/agent-browser.ts +0 -315
- package/plugins/bizar/src/tools/graph-query.ts +0 -278
- package/plugins/bizar/tests/README.md +0 -99
- package/plugins/bizar/tests/safety.test.ts +0 -256
- package/plugins/bizar/tests/tools/agent-browser.test.ts +0 -98
package/README.md
CHANGED
|
@@ -2,21 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
# BizarHarness ᛟ
|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
**Norse-pantheon multi-agent system for cline**
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
ClineCore in-process — no subprocess, no port, no serve-info file.
|
|
7
|
+
12 agents across 4 cost tiers. Odin routes, subagents execute, Forseti audits.
|
|
9
8
|
|
|
10
|
-
[](https://github.com/DrB0rk/BizarHarness)
|
|
12
|
-
[](https://docs.cline.bot)
|
|
13
|
-
[](https://github.com/DrB0rk/BizarHarness)
|
|
14
|
-
[](docs/INDEX.md)
|
|
15
|
-
[](docs/safety.md)
|
|
16
|
-
[](plugins/bizar/skills)
|
|
17
|
-
[](https://www.skills.sh)
|
|
9
|
+
[](https://www.npmjs.com/package/bizar)
|
|
18
10
|
[](https://github.com/headroomlabs-ai/headroom)
|
|
11
|
+
[](https://github.com/semble-ai/semble)
|
|
12
|
+
[](https://www.skills.sh)
|
|
19
13
|
[](LICENSE)
|
|
14
|
+
[](https://docs.cline.bot)
|
|
15
|
+
[](#-the-pantheon)
|
|
16
|
+
[](CONTRIBUTING.md)
|
|
20
17
|
|
|
21
18
|
`npm install @polderlabs/bizar` · `npx bizar`
|
|
22
19
|
|
|
@@ -26,307 +23,423 @@ ClineCore in-process — no subprocess, no port, no serve-info file.
|
|
|
26
23
|
|
|
27
24
|
## Table of Contents
|
|
28
25
|
|
|
29
|
-
- [What's new in v6.0.0](#-whats-new-in-v600)
|
|
30
|
-
- [Quick start](#-quick-start)
|
|
31
26
|
- [The Pantheon](#-the-pantheon)
|
|
32
27
|
- [Architecture](#-architecture)
|
|
33
|
-
- [
|
|
34
|
-
- [
|
|
35
|
-
- [
|
|
36
|
-
- [
|
|
37
|
-
- [
|
|
38
|
-
- [
|
|
39
|
-
- [Documentation](#-documentation)
|
|
40
|
-
- [Migration from v5.5.x](#-migration-from-v55x)
|
|
28
|
+
- [Installation](#-installation)
|
|
29
|
+
- [Provider Setup](#-provider-setup)
|
|
30
|
+
- [Skill Discovery](#-skill-discovery)
|
|
31
|
+
- [Memory Service](#-memory-service)
|
|
32
|
+
- [Routing](#-routing)
|
|
33
|
+
- [Self-Improvement](#-self-improvement)
|
|
41
34
|
- [Contributing](#-contributing)
|
|
42
35
|
- [License](#-license)
|
|
43
36
|
|
|
44
37
|
---
|
|
45
38
|
|
|
46
|
-
##
|
|
39
|
+
## ᛉ The Pantheon
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
┌─────────────┐
|
|
43
|
+
│ᛟ ODIN │
|
|
44
|
+
├─────────────┤
|
|
45
|
+
│Router (M3) │
|
|
46
|
+
└─────────────┘
|
|
47
|
+
|
|
48
|
+
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐
|
|
49
|
+
│ᛢ VÖR │ │ᛗ MIMIR │ │ᚹ HEIMDALL│ │ᚱ HERMOD │ │ᚦ THOR │ │ᛒ BALDR │ │ᛏ TYR │ │ᛉ VIDARR │
|
|
50
|
+
├─────────┤ ├─────────┤ ├─────────┤ ├─────────┤ ├─────────┤ ├─────────┤ ├─────────┤ ├──────────┤
|
|
51
|
+
│Clarify │ │Research │ │Simple │ │GitOps │ │Medium │ │Design │ │Complex │ │Last │
|
|
52
|
+
│DeepSeek │ │DeepSeek │ │DeepSeek │ │M2.7 │ │M2.7 │ │M2.7 │ │M3 │ │GPT-5.5 │
|
|
53
|
+
│FREE │ │FREE │ │FREE │ │$ │ │$ │ │$ │ │$$ │ │$$$ │
|
|
54
|
+
└─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └──────────┘
|
|
55
|
+
|
|
56
|
+
┌─────────────┐
|
|
57
|
+
│ᚨ FORSETI │
|
|
58
|
+
├─────────────┤
|
|
59
|
+
│Auditor (M3) │
|
|
60
|
+
│edit: deny │
|
|
61
|
+
└─────────────┘
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
> _Generated by PlantUML ASCII art (`plantuml -utxt`)_
|
|
65
|
+
|
|
66
|
+
### Agents
|
|
67
|
+
|
|
68
|
+
| Agent | Rune | Model | Cost | Role |
|
|
69
|
+
|---|---|---|---|---|
|
|
70
|
+
| **Odin** | ᛟ | MiniMax M3 | $0.30/M · $1.20/M out | Primary router — never executes, only delegates |
|
|
71
|
+
| **Frigg** | ᚠ | DeepSeek V4 Flash | **Free** | Read-only Q&A — ask questions, get answers, never modifies |
|
|
72
|
+
| **Vör** | ᛢ | DeepSeek V4 Flash | **Free** | Clarifies ambiguous requests — asks questions until task is well-defined |
|
|
73
|
+
| **Mimir** | ᛗ | DeepSeek V4 Flash | **Free** | Research & codebase exploration (Semble-first) |
|
|
74
|
+
| **Heimdall** | ᚹ | DeepSeek V4 Flash | **Free** | Simple tasks, quick edits, file operations |
|
|
75
|
+
| **Hermod** | ᚱ | MiniMax M2.7 | $0.30/M · $1.20/M out | Git & GitHub operations (commit, PR, merge, rebase) |
|
|
76
|
+
| **Thor** | ᚦ | MiniMax M2.7 | $0.30/M · $1.20/M out | Moderate implementation, debugging, refactoring |
|
|
77
|
+
| **Baldr** | ᛒ | MiniMax M2.7 | $0.30/M · $1.20/M out | UI/UX design system (DESIGN.md plans, visual audits) |
|
|
78
|
+
| **Tyr** | ᛏ | MiniMax M3 | $0.30/M · $1.20/M out | Complex implementation, architecture, deep debugging |
|
|
79
|
+
| **Vidarr** | ᛉ | GPT-5.5 | Subscription | Last resort — GPT-5.5 |
|
|
80
|
+
| **Forseti** | ᚨ | MiniMax M3 | $0.30/M · $1.20/M out | Adversarial plan reviewer (edit: deny, audit-only) |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## ⚙ Architecture
|
|
47
85
|
|
|
48
|
-
|
|
49
|
-
to Cline. The plugin embeds ClineCore in-process — no subprocess spawn,
|
|
50
|
-
no port, no password, no serve-info file. Plugin `setup()` returns in
|
|
51
|
-
~3ms (was: 30s+ timeout).
|
|
86
|
+
### Request Flow
|
|
52
87
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
88
|
+
```
|
|
89
|
+
User Odin ᛟ Subagent Forseti ᚨ
|
|
90
|
+
│ │ │ │
|
|
91
|
+
│─Request─>│ │ │
|
|
92
|
+
│ │ │ │
|
|
93
|
+
│ │─ Decompose ────│ │
|
|
94
|
+
│ │ into parallel │ │
|
|
95
|
+
│ │ streams │ │
|
|
96
|
+
│ │ │ │
|
|
97
|
+
│ │─ task ────────>│ │
|
|
98
|
+
│ │─ task ────────>│ │
|
|
99
|
+
│ │ │ │
|
|
100
|
+
│ │ plan review (when complex)│
|
|
101
|
+
│ │──────────────────────────────>│
|
|
102
|
+
│ │ approve / changes required │
|
|
103
|
+
│ │<──────────────────────────────│
|
|
104
|
+
│ │ │ │
|
|
105
|
+
│ │<─── results ───│ │
|
|
106
|
+
│<─ synth ─│ │ │
|
|
107
|
+
```
|
|
65
108
|
|
|
66
|
-
|
|
109
|
+
**Key behaviors:**
|
|
110
|
+
- **Odin never executes work** — stripped of `bash`, `glob`, `grep`, `edit`, `write`, `question`
|
|
111
|
+
- **Vör handles ambiguity** — Odin cannot ask questions; routes unclear requests to Vör
|
|
112
|
+
- **Always parallel** — every request splits into 2+ simultaneous `task` calls
|
|
113
|
+
- **Implementation splits across Thor + Tyr** frontend/backend, file split, impl+tests
|
|
114
|
+
- **Forseti gates all Tier 4/5 work** — Tyr and Vidarr plans audited before execution
|
|
115
|
+
- **Bizar Memory Service** — local Obsidian-compatible Markdown + Git-shared sync. Three namespaces: `projects/<id>/`, `global/bizar/`, `users/<id>/`. No external memory service required.
|
|
67
116
|
|
|
68
117
|
---
|
|
69
118
|
|
|
70
|
-
## 🚀
|
|
119
|
+
## 🚀 Installation
|
|
120
|
+
|
|
121
|
+
### Quick — npm (recommended)
|
|
122
|
+
|
|
123
|
+
Published on [npmjs.com/package/bizar](https://www.npmjs.com/package/bizar).
|
|
124
|
+
|
|
125
|
+
Run without installing:
|
|
71
126
|
|
|
72
127
|
```bash
|
|
73
|
-
|
|
74
|
-
|
|
128
|
+
npx bizar
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Or install globally:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
npm install -g @polderlabs/bizar
|
|
135
|
+
bizar
|
|
136
|
+
```
|
|
75
137
|
|
|
76
|
-
|
|
77
|
-
npm install @polderlabs/bizar@beta
|
|
138
|
+
Or add to a project:
|
|
78
139
|
|
|
79
|
-
|
|
140
|
+
```bash
|
|
141
|
+
npm install @polderlabs/bizar
|
|
80
142
|
npx bizar
|
|
81
143
|
```
|
|
82
144
|
|
|
83
|
-
The installer
|
|
145
|
+
The interactive installer walks you through component selection, agent choice, install mode, API key setup, and auto-restarts cline.
|
|
84
146
|
|
|
85
|
-
|
|
86
|
-
- Configuring the Cline plugin
|
|
87
|
-
- Setting up Semble (code search MCP) and Skills CLI
|
|
88
|
-
- Headroom (token-saving proxy)
|
|
147
|
+
> **v4.0.0:** `@polderlabs/bizar` is now a single package — the dashboard server, the cline plugin, and the typed SDK all ship inside it. No more separate `@polderlabs/bizar-dash` install.
|
|
89
148
|
|
|
90
|
-
|
|
91
|
-
[docs/migration-guide.md](docs/migration-guide.md).
|
|
149
|
+
> **Windows users:** the `npm install -g @polderlabs/bizar` command above is the recommended path on Windows. The installer uses `irm | iex` for uv, `py -m pip` for the pip fallback, `taskkill` for forced kills, and JS `setTimeout` instead of `sleep` — so it works on both Windows PowerShell and POSIX shells. See the [Windows](#-windows) section below for prerequisites, known limitations, and the optional graph feature install.
|
|
92
150
|
|
|
93
|
-
|
|
151
|
+
### Source — git clone (Linux/macOS contributors)
|
|
94
152
|
|
|
95
|
-
|
|
153
|
+
```bash
|
|
154
|
+
git clone git@github.com:DrB0rk/BizarHarness.git
|
|
155
|
+
cd BizarHarness
|
|
156
|
+
chmod +x install.sh
|
|
157
|
+
./install.sh
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Copies agent definitions and config to `~/.config/cline/`, merges `cline.json`, and prints next steps. Use this if you want to hack on BizarHarness itself.
|
|
161
|
+
|
|
162
|
+
> This `install.sh` script is bash-only and does **not** run on Windows natively. Windows contributors should use the npm path above instead.
|
|
163
|
+
|
|
164
|
+
### Windows
|
|
165
|
+
|
|
166
|
+
The `bizar` CLI is cross-platform — the npm install runs a Node.js installer that handles `curl | sh` redirects, signal handling, and temp paths on Windows PowerShell automatically.
|
|
96
167
|
|
|
168
|
+
**Prerequisites**
|
|
169
|
+
|
|
170
|
+
- [Node.js 18+](https://nodejs.org/) on `PATH`
|
|
171
|
+
- [Python 3.10+](https://www.python.org/downloads/windows/) (only required for the optional `bizar graph` knowledge-graph feature)
|
|
172
|
+
- [Git for Windows](https://git-scm.com/download/win) — only needed if you want to run the bash `install.sh` from a Git Bash shell
|
|
173
|
+
|
|
174
|
+
**Install**
|
|
175
|
+
|
|
176
|
+
```powershell
|
|
177
|
+
npm install -g @polderlabs/bizar
|
|
178
|
+
bizar
|
|
97
179
|
```
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
↑ ↑
|
|
110
|
-
Forseti audits Forseti audits
|
|
111
|
-
all Tier 4/5 work
|
|
180
|
+
|
|
181
|
+
**Optional: graph feature (knowledge graph + per-project .bizar/)**
|
|
182
|
+
|
|
183
|
+
The `bizar graph build` subcommand uses [graphify](https://github.com/bretbhomas/graphify). Install uv and graphify from PowerShell:
|
|
184
|
+
|
|
185
|
+
```powershell
|
|
186
|
+
# Install uv (Python package manager) — Windows-native PowerShell installer
|
|
187
|
+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
188
|
+
|
|
189
|
+
# Install graphify
|
|
190
|
+
uv tool install graphifyy
|
|
112
191
|
```
|
|
113
192
|
|
|
114
|
-
|
|
115
|
-
**never executes work** — he decomposes into parallel streams and
|
|
116
|
-
dispatches to subagents. The Forseti gate audits all Tier 4/5 work
|
|
117
|
-
(Tyr, Vidarr) before execution.
|
|
193
|
+
Then build the project graph from any repo:
|
|
118
194
|
|
|
119
|
-
|
|
120
|
-
|
|
195
|
+
```powershell
|
|
196
|
+
bizar graph build
|
|
197
|
+
```
|
|
121
198
|
|
|
122
|
-
|
|
199
|
+
**Known Windows limitations**
|
|
123
200
|
|
|
124
|
-
|
|
201
|
+
- The `blessed` TUI library may render with quirks inside Windows Terminal; if you see garbled output in the TUI, use the browser UI via `bizar dash start --bg` and open http://localhost:4321 instead.
|
|
202
|
+
- Some shell scripts under `config/skills/embedded-esp-idf/` are bash-only and require Git Bash (or WSL).
|
|
203
|
+
- The bash `install.sh` does not run on Windows cmd/PowerShell; use the `npm install -g` path above.
|
|
204
|
+
- Headroom ships a Python/npm installer. On Windows, install it manually: `pip install "headroom-ai[all]"` or `npm install -g headroom-ai`, then run `headroom wrap cline`.
|
|
205
|
+
|
|
206
|
+
### Prerequisites
|
|
207
|
+
|
|
208
|
+
- [cline CLI](https://docs.cline.bot) installed and on `$PATH`
|
|
209
|
+
- Provider connections (via `/connect` in cline TUI)
|
|
210
|
+
- [Headroom](https://github.com/headroomlabs-ai/headroom) (recommended) — CLI proxy that reduces LLM token consumption by 60-90%
|
|
211
|
+
- [Semble](https://github.com/semble-ai/semble) (recommended) — AI-powered code search (used by Mimir agent)
|
|
212
|
+
- [Skills CLI](https://www.skills.sh) (recommended) — Agent skill package manager (`npx skills add <owner/repo>`)
|
|
213
|
+
|
|
214
|
+
### Headroom Setup
|
|
215
|
+
|
|
216
|
+
[Headroom](https://github.com/headroomlabs-ai/headroom) filters and compresses command output before it reaches the LLM context. It saves ~80% on common operations like `ls`, `git status`, `cargo test`, and `git diff`.
|
|
125
217
|
|
|
218
|
+
Install:
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# Python (recommended)
|
|
222
|
+
pip install "headroom-ai[all]"
|
|
223
|
+
|
|
224
|
+
# npm
|
|
225
|
+
npm install -g headroom-ai
|
|
126
226
|
```
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
│ - Harness engineering dashboard view │
|
|
133
|
-
│ - Kanban board (5 columns + backlog) │
|
|
134
|
-
└────────────────────────────────────────────────────────────────────┘
|
|
135
|
-
↕ HTTP REST + WebSocket
|
|
136
|
-
┌────────────────────────────────────────────────────────────────────┐
|
|
137
|
-
│ Layer 0: Core (plugins/bizar/) │
|
|
138
|
-
│ - Cline plugin entry (AgentPlugin from @cline/sdk) │
|
|
139
|
-
│ - 22 tools + 4 hooks + 1 approval gate │
|
|
140
|
-
│ - In-process ClineRuntime (wraps ClineCore.create()) │
|
|
141
|
-
│ - In-process memory vault │
|
|
142
|
-
│ - DANGEROUS_PATTERNS approval gate │
|
|
143
|
-
│ - Skill curator (closed learning loop) │
|
|
144
|
-
│ - Pre-compaction memory flush │
|
|
145
|
-
└────────────────────────────────────────────────────────────────────┘
|
|
146
|
-
↕ Cline SDK
|
|
147
|
-
┌────────────────────────────────────────────────────────────────────┐
|
|
148
|
-
│ Substrate: ClineCore (@cline/core) │
|
|
149
|
-
│ - In-process runtime, no subprocess │
|
|
150
|
-
│ - startSession / send / abort / subscribe │
|
|
151
|
-
│ - Session storage, model dispatch, agent team tools │
|
|
152
|
-
└────────────────────────────────────────────────────────────────────┘
|
|
227
|
+
|
|
228
|
+
Enable for cline:
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
headroom wrap cline
|
|
153
232
|
```
|
|
154
233
|
|
|
155
|
-
|
|
156
|
-
model, module map, and inter-component contracts.
|
|
234
|
+
After setup, `headroom wrap cline` injects config into `cline.json` and starts a proxy. The LLM receives compact output, saving 60-90% on token costs. The wrapping is durable — all subsequent cline sessions route through the headroom proxy.
|
|
157
235
|
|
|
158
|
-
|
|
236
|
+
### Semble Setup
|
|
159
237
|
|
|
160
|
-
|
|
238
|
+
[Semble](https://github.com/semble-ai/semble) provides AI-powered code search. It indexes your codebase and enables natural-language queries like "where is authentication handled" without relying on grep. The Mimir research agent uses Semble as its primary search tool.
|
|
161
239
|
|
|
162
|
-
|
|
163
|
-
| --- | --- | --- |
|
|
164
|
-
| **Background agents** | 9 | `bizar_spawn_background`, `bizar_status`, `bizar_collect`, `bizar_kill`, `bizar_pause`, `bizar_resume`, `bizar_send_message`, `bizar_get_comments`, `bizar_report_progress` |
|
|
165
|
-
| **Memory** | 4 | `bizar_memory_list`, `bizar_memory_read`, `bizar_memory_write`, `bizar_memory_search` |
|
|
166
|
-
| **Plan / Glyphs** | 4 | `bizar_plan_action`, `bizar_open_kb`, `bizar_wait_for_feedback`, `bizar_read_glyph_feedback` |
|
|
167
|
-
| **Cline agent teams** | 2 | `bizar_spawn_team`, `bizar_team_status` |
|
|
168
|
-
| **Knowledge graph** | 3 | `bizar_graph_query`, `bizar_graph_path`, `bizar_graph_explain` |
|
|
169
|
-
| **Total** | **22** | All use `createTool` from `@cline/sdk` directly |
|
|
240
|
+
The BizarHarness installer handles this automatically. To install manually:
|
|
170
241
|
|
|
171
|
-
|
|
242
|
+
```bash
|
|
243
|
+
# Install uv if not present
|
|
244
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
245
|
+
|
|
246
|
+
# Install Semble with MCP support
|
|
247
|
+
uv tool install "semble[mcp]"
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Skills CLI Setup
|
|
251
|
+
|
|
252
|
+
[Skills CLI](https://www.skills.sh) is a package manager for AI agent skills — like npm for agent capabilities. Install skills from any public GitHub repo with `npx skills add <owner/repo>`.
|
|
253
|
+
|
|
254
|
+
The BizarHarness installer handles this automatically. To install manually:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
npm install -g skills
|
|
258
|
+
```
|
|
172
259
|
|
|
173
|
-
|
|
260
|
+
Then discover and install skills:
|
|
174
261
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
| `beforeModel` | **Pre-compaction memory flush** (writes snapshot to vault) |
|
|
180
|
-
| `onEvent` | `message-added` (slash commands) + `run-finished`/`run-failed` (memory write) |
|
|
262
|
+
```bash
|
|
263
|
+
npx skills find # Browse the skills directory
|
|
264
|
+
npx skills add <owner/repo> # Install a skill from GitHub
|
|
265
|
+
```
|
|
181
266
|
|
|
182
|
-
|
|
183
|
-
| --- | --- |
|
|
184
|
-
| `skill-curator` (manual) | Reports skill usage + flags revisions |
|
|
185
|
-
| `memory-flush-on-compact` (auto) | Writes snapshot to vault when `shouldCompact()` returns true |
|
|
267
|
+
Available for all major AI coding agents including Cline, Claude Code, Cursor, Copilot, Gemini, and more.
|
|
186
268
|
|
|
187
269
|
---
|
|
188
270
|
|
|
189
|
-
##
|
|
271
|
+
## ᛉ Skill Discovery
|
|
272
|
+
|
|
273
|
+
BizarHarness agents **proactively discover and install skills** during execution using the Skills CLI. When Heimdall, Thor, Tyr, or Vidarr receives a task, they:
|
|
190
274
|
|
|
191
|
-
|
|
275
|
+
1. **Assess** whether a skill might exist for the task (framework-specific work, domain tasks, tool usage)
|
|
276
|
+
2. **Check installed** with `skills list --json` to see what's already available
|
|
277
|
+
3. **Install from known repos** based on the task domain — e.g., `skills add supabase/agent-skills --all -y` for database work, `skills add vercel-labs/agent-skills --all -y` for frontend
|
|
278
|
+
4. **Use** the skill's instructions at `~/.cline/skills/<name>/SKILL.md` via the `skill` tool
|
|
192
279
|
|
|
193
|
-
|
|
194
|
-
| --- | --- |
|
|
195
|
-
| **Filesystem destruction** | `rm -rf /`, `rm -rf /etc`, `mkfs`, `dd of=/dev/sda`, fork bomb |
|
|
196
|
-
| **Privilege escalation** | `sudo`, `su - root`, `chmod 777`, `chown root` |
|
|
197
|
-
| **SSRF** | `http://169.254.169.254/*` (AWS metadata), `metadata.google.internal`, `metadata.azure.com` |
|
|
198
|
-
| **Process control** | `kill -9 1`, `shutdown`, `reboot`, `init 0` |
|
|
199
|
-
| **Sensitive file reads** | `~/.ssh/`, `~/.aws/credentials`, `~/.config/gcloud`, `/proc/<pid>/environ` |
|
|
200
|
-
| **Network exfiltration** | `wget ... \| sh`, `curl ... \| sh` |
|
|
201
|
-
| **Dangerous git** | `git push --force origin main`, `git reset --hard`, `git clean -fd` |
|
|
202
|
-
| **Prompt injection** | `ignore previous instructions`, `reveal your system prompt` |
|
|
280
|
+
This happens automatically and on-demand — agents self-discover capabilities without manual configuration.
|
|
203
281
|
|
|
204
|
-
|
|
205
|
-
[Hermes](https://github.com/walkinglabs/awesome-harness-engineering) +
|
|
206
|
-
[OpenFang](https://github.com/RightNow-AI/openfang) +
|
|
207
|
-
[OpenClaw](https://github.com/openclaw/openclaw).
|
|
282
|
+
### Known Skill Repositories by Domain
|
|
208
283
|
|
|
209
|
-
|
|
284
|
+
| Domain | Repos |
|
|
285
|
+
|--------|-------|
|
|
286
|
+
| General (find-skills, skill-creator) | `vercel-labs/skills` |
|
|
287
|
+
| Frontend (React, a11y, web-design) | `vercel-labs/agent-skills`, `shadcn/ui` |
|
|
288
|
+
| Backend (Supabase, Postgres, auth) | `supabase/agent-skills` |
|
|
289
|
+
| Testing (TDD, E2E, Playwright) | `mattpocock/skills`, `microsoft/playwright-cli` |
|
|
290
|
+
| Design (frontend-design, UI/UX) | `anthropics/skills`, `leonxlnx/taste-skill` |
|
|
210
291
|
|
|
211
292
|
---
|
|
212
293
|
|
|
213
|
-
## 🧠 Skill Curator — closed learning loop
|
|
214
294
|
|
|
215
|
-
**The differentiator.** Of 106 cataloged agent-harness projects, exactly
|
|
216
|
-
one (Hermes Agent) has this. Bizar is now the second.
|
|
217
295
|
|
|
218
|
-
|
|
296
|
+
---
|
|
219
297
|
|
|
220
|
-
|
|
221
|
-
import { recordSkillUse, generateCuratorReport } from "bizar/hooks/skill-curator";
|
|
298
|
+
## 🧠 Memory Service
|
|
222
299
|
|
|
223
|
-
|
|
224
|
-
recordSkillUse("pump-then-test", "failure");
|
|
225
|
-
const report = generateCuratorReport({ worktree, logger });
|
|
226
|
-
// { totalSkills: 14, needsRevision: 1, stale: 0, ... }
|
|
227
|
-
```
|
|
300
|
+
The **Bizar Memory Service** is a local-first, file-based memory subsystem that replaces the previously-disabled Hindsight MCP. Notes are Obsidian-compatible Markdown with strict YAML frontmatter, stored in a Git-managed vault, and synced via standard `git pull/push/commit`. No external API keys, no external service, no network calls.
|
|
228
301
|
|
|
229
|
-
|
|
302
|
+
### Architecture (three-layer model)
|
|
230
303
|
|
|
231
304
|
```
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
305
|
+
┌─────────────────────────────────────────────┐
|
|
306
|
+
│ Layer 1: Markdown is truth │ ← canonical store
|
|
307
|
+
│ .obsidian/ or ~/.local/share/bizar/… │ (frontmatter + body)
|
|
308
|
+
├─────────────────────────────────────────────┤
|
|
309
|
+
│ Layer 2: Git is collaboration │ ← sync + version control
|
|
310
|
+
│ bizar memory pull / commit / push / sync │ (branches, conflict)
|
|
311
|
+
├─────────────────────────────────────────────┤
|
|
312
|
+
│ Layer 3: LightRAG is derived index (P2) │ ← semantic retrieval
|
|
313
|
+
│ bizar memory reindex │ (stub in Phase 1)
|
|
314
|
+
└─────────────────────────────────────────────┘
|
|
239
315
|
```
|
|
240
316
|
|
|
241
|
-
|
|
317
|
+
The LightRAG layer ships as a stub in Phase 1 (`bizar memory reindex` returns a "not yet implemented" notice) and will be wired into the existing `mods-examples/lightrag/` server in Phase 2. The Markdown layer is the canonical source of truth — reindexing rebuilds the index from Markdown at any time, never the other way around.
|
|
242
318
|
|
|
243
|
-
|
|
319
|
+
### Modes
|
|
320
|
+
|
|
321
|
+
| Mode | Vault location | Cross-project sharing | Default? |
|
|
322
|
+
|---|---|---|---|
|
|
323
|
+
| `local-only` | `<project>/.obsidian/` | No — per-project vault | **Yes** |
|
|
324
|
+
| `managed` | `~/.local/share/bizar/memory/<repoName>/` | Yes — one shared repo with three namespaces | Opt-in |
|
|
244
325
|
|
|
245
|
-
|
|
326
|
+
Pick `managed` at `bizar init` time, or run `bizar memory link ~/.local/share/bizar/memory/<repoName>/` to convert an existing project to managed mode.
|
|
246
327
|
|
|
247
|
-
|
|
248
|
-
`graphify`) to agents:
|
|
328
|
+
### Namespaces
|
|
249
329
|
|
|
250
|
-
|
|
251
|
-
| --- | --- |
|
|
252
|
-
| `bizar_graph_query` | Substring search across node id, label, source file |
|
|
253
|
-
| `bizar_graph_path` | BFS shortest path between two nodes |
|
|
254
|
-
| `bizar_graph_explain` | Natural-language node summary with neighbors |
|
|
330
|
+
The `managed` repo is split into three top-level directories. Every note lives in exactly one:
|
|
255
331
|
|
|
256
|
-
|
|
257
|
-
|
|
332
|
+
| Namespace | Purpose | Example path |
|
|
333
|
+
|---|---|---|
|
|
334
|
+
| `projects/<projectId>/` | Per-project memory — conventions, ADRs, bugs, commands | `projects/bizarharness/architecture_decision__lightrag-stub.md` |
|
|
335
|
+
| `global/bizar/` | Cross-project knowledge — agent patterns, Bizar internals | `global/bizar/coding_convention__plan-then-forseti.md` |
|
|
336
|
+
| `users/<userId>/` | Personal scratch — user preferences, todos, draft thoughts | `users/drb0rk/user_preference__tabs-not-spaces.md` |
|
|
258
337
|
|
|
259
|
-
|
|
338
|
+
### CLI commands
|
|
339
|
+
|
|
340
|
+
The `bizar memory <sub>` family has 11 subcommands:
|
|
341
|
+
|
|
342
|
+
| Subcommand | Purpose | Example |
|
|
343
|
+
|---|---|---|
|
|
344
|
+
| `init` | Create `.bizar/memory.json` and the per-project vault | `bizar memory init --memory-mode local-only` |
|
|
345
|
+
| `status` | Show mode, link target, dirty files, last sync | `bizar memory status` |
|
|
346
|
+
| `link <path>` | Bind the project to a managed memory repo | `bizar memory link ~/.local/share/bizar/memory/work/` |
|
|
347
|
+
| `unlink` | Detach from managed mode (vault stays on disk) | `bizar memory unlink` |
|
|
348
|
+
| `pull` | `git pull` the linked memory repo | `bizar memory pull` |
|
|
349
|
+
| `commit` | Stage dirty notes + run secret scan + `git commit` | `bizar memory commit -m "add auth ADR"` |
|
|
350
|
+
| `push` | `git push` the linked memory repo | `bizar memory push` |
|
|
351
|
+
| `sync` | pull → reindex → commit → push (the common path) | `bizar memory sync` |
|
|
352
|
+
| `reindex` | Rebuild the derived LightRAG index (Phase 2 stub) | `bizar memory reindex` |
|
|
353
|
+
| `conflicts` | List notes with merge conflicts awaiting resolution | `bizar memory conflicts` |
|
|
354
|
+
| `doctor` | Run schema + secrets + Git health checks | `bizar memory doctor` |
|
|
355
|
+
|
|
356
|
+
### Dashboard routes
|
|
357
|
+
|
|
358
|
+
The dashboard exposes 18 REST endpoints under `/api/memory/*` for note CRUD, schema validation, secret scanning, Git sync, search, and health checks. The legacy `/api/obsidian/*` routes are preserved with back-compat response shapes.
|
|
359
|
+
|
|
360
|
+
### Secrets and schema
|
|
361
|
+
|
|
362
|
+
Every note passing through `bizar memory sync` is scanned against 12 secret patterns (HIGH/MEDIUM). HIGH-severity matches block the commit; MEDIUM matches warn but allow. Required frontmatter is 8 fields (`memory_id`, `type`, `project_id`, `status`, `confidence`, `created`, `updated`, `tags`); 11 memory types are recognized, 6 statuses, 3 confidence levels.
|
|
260
363
|
|
|
261
364
|
---
|
|
262
365
|
|
|
263
|
-
##
|
|
264
|
-
|
|
265
|
-
v6.0.0 passes the full L01–L12 audit at **73/73 = 100%**:
|
|
266
|
-
|
|
267
|
-
| Subsystem | Score |
|
|
268
|
-
| --- | --- |
|
|
269
|
-
| 1. Instructions | 11/11 (entry + hard constraints + state files + clock-in/out) |
|
|
270
|
-
| 2. Tools | 2/2 (`.claude/settings.json` + MCP integrations) |
|
|
271
|
-
| 3. Environment | 5/5 (lockfile + `.nvmrc` + Makefile + setup + dev) |
|
|
272
|
-
| 4. State | 4/4 (`PROGRESS.md` + `DECISIONS.md` + `feature_list.json`) |
|
|
273
|
-
| 5. Feedback | 7/7 (`make check/test/e2e/clean-check/arch/vcr/session-*`) |
|
|
274
|
-
| 6. L05 Cross-session | 6/6 (Current State + clock-in/out + context anxiety) |
|
|
275
|
-
| 7. L03 System of record | 4/4 (ACID: Durability, Consistency, Atomicity, Proximity) |
|
|
276
|
-
| 8. L07 WIP=1 + VCR | 3/3 (WIP=1 + `make vcr` + VCR 20/20 = 1.0) |
|
|
277
|
-
| 9. L08 Feature list | 6/6 (evidence + verify-feature + granularity + state machine) |
|
|
278
|
-
| 10. L09 DoD | 5/5 (3-layer verification + runtime signals + repair instructions) |
|
|
279
|
-
| 11. L10 E2E + Arch | 8/8 (`make e2e` + `make check-arch` + 7 arch rules + E2E requirement) |
|
|
280
|
-
| 12. L11 Observability | 7/7 (sprint contract + rubric + session-trace + make session-*) |
|
|
281
|
-
| 13. L12 Clean State | 5/5 (5-dimension checklist + clean-check + quality doc + dual-mode) |
|
|
366
|
+
## 🔑 Provider Setup
|
|
282
367
|
|
|
283
|
-
|
|
284
|
-
bash tools/audit-harness.sh .
|
|
285
|
-
# Total: 73 / 73 harness components present
|
|
286
|
-
# Critical: 7 / 7
|
|
287
|
-
# Recommended: 66 / 66
|
|
288
|
-
```
|
|
368
|
+
After installation, run `/connect` in cline to add API keys:
|
|
289
369
|
|
|
290
|
-
|
|
291
|
-
|
|
370
|
+
| Provider | Models | Auth |
|
|
371
|
+
|---|---|---|
|
|
372
|
+
| **Cline Zen** | `cline/deepseek-v4-flash-free` | Free API key from [cline.ai](https://docs.cline.bot) — create account, get key, no charges |
|
|
373
|
+
| **MiniMax (direct)** | `minimax/MiniMax-M2.7`, `minimax/MiniMax-M3` | API key from [MiniMax](https://platform.minimaxi.com) |
|
|
374
|
+
| **OpenAI** | `openai/gpt-5.5` | ChatGPT subscription (OAuth) |
|
|
375
|
+
|
|
376
|
+
Then run `/models` to verify connectivity.
|
|
292
377
|
|
|
293
378
|
---
|
|
294
379
|
|
|
295
|
-
##
|
|
296
|
-
|
|
297
|
-
|
|
|
298
|
-
|
|
299
|
-
|
|
|
300
|
-
|
|
|
301
|
-
|
|
|
302
|
-
|
|
|
303
|
-
|
|
|
304
|
-
|
|
|
305
|
-
|
|
|
306
|
-
|
|
|
307
|
-
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
| Plugin constraints | [plugins/bizar/CONSTRAINTS.md](plugins/bizar/CONSTRAINTS.md) |
|
|
311
|
-
| Dashboard module | [bizar-dash/ARCHITECTURE.md](bizar-dash/ARCHITECTURE.md) |
|
|
312
|
-
| SDK module | [packages/sdk/ARCHITECTURE.md](packages/sdk/ARCHITECTURE.md) |
|
|
313
|
-
| Changelog | [CHANGELOG.md](CHANGELOG.md) |
|
|
380
|
+
## 🧭 Routing
|
|
381
|
+
|
|
382
|
+
| Task Type | Agent |
|
|
383
|
+
|---|---|
|
|
384
|
+
| Ambiguous or incomplete requests | @vör (free, asks clarifying questions) |
|
|
385
|
+
| File lookup, quick edits, boilerplate | @heimdall (free) |
|
|
386
|
+
| Codebase research, documentation analysis | @mimir (free, Semble-first) |
|
|
387
|
+
| Git commit, PR, merge, rebase, conflict resolution | @hermod (M2.7) |
|
|
388
|
+
| Moderate implementation, debugging, code review | @thor (M2.7) |
|
|
389
|
+
| Design systems, DESIGN.md, visual audits | @baldr (M2.7, plans only) |
|
|
390
|
+
| Complex features, architecture, deep debugging | @tyr (M3, audited by @forseti) |
|
|
391
|
+
| Stuck debugging, novel problems, postmortems | @vidarr (GPT-5.5, last resort) |
|
|
392
|
+
| Plan audit, adversarial review | @forseti (M3, edit: deny) |
|
|
393
|
+
|
|
394
|
+
**Cost escalation:** `Free → $Mid (M2.7) → $$High (M3) → $$$Ultra (GPT-5.5)`
|
|
314
395
|
|
|
315
396
|
---
|
|
316
397
|
|
|
317
|
-
##
|
|
398
|
+
## 📝 Self-Improvement
|
|
399
|
+
|
|
400
|
+
Every task records what was learned to `.bizar/AGENTS_SELF_IMPROVEMENT.md` at the project root. Odin reads it at session start and applies past patterns to current routing.
|
|
318
401
|
|
|
319
|
-
|
|
320
|
-
|
|
402
|
+
```
|
|
403
|
+
### 2026-06-16: Fixed routing issue
|
|
404
|
+
- **Context**: Odin was self-handling instead of routing
|
|
405
|
+
- **Lesson**: Stripped bash/glob/grep/edit from Odin — forces delegation
|
|
406
|
+
- **Pattern**: Primary agents should never have executable tools
|
|
407
|
+
- **Agent**: heimdall
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
---
|
|
321
411
|
|
|
322
|
-
|
|
323
|
-
- New tools (Cline agent teams, graph tools, curator)
|
|
324
|
-
- Removed tools (Plugins → Mods)
|
|
325
|
-
- Verification commands
|
|
412
|
+
## 📋 Plans
|
|
326
413
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
414
|
+
BizarHarness includes a built-in visual plan editor for drafting architectural decisions, feature designs, and project plans. Plans are stored as MDX source files with an auto-generated HTML viewer/editor.
|
|
415
|
+
|
|
416
|
+
```bash
|
|
417
|
+
# Create a new plan
|
|
418
|
+
bizar plan new my-feature
|
|
419
|
+
|
|
420
|
+
# Open an existing plan
|
|
421
|
+
bizar plan open my-feature
|
|
422
|
+
|
|
423
|
+
# List all plans
|
|
424
|
+
bizar plan list
|
|
425
|
+
|
|
426
|
+
# Export plan to standalone file
|
|
427
|
+
bizar plan export my-feature > my-feature.mdx
|
|
428
|
+
|
|
429
|
+
# Delete a plan (with confirmation)
|
|
430
|
+
bizar plan delete my-feature
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
Plans are stored in `plans/<slug>/` with four files:
|
|
434
|
+
|
|
435
|
+
| File | Purpose | In git? |
|
|
436
|
+
|---|---|---|
|
|
437
|
+
| `plan.mdx` | Source content (the plan) | ✓ Yes |
|
|
438
|
+
| `plan.html` | Viewer/editor (auto-generated) | ✗ No |
|
|
439
|
+
| `comments.json` | Section comments | ✗ No |
|
|
440
|
+
| `meta.json` | Title, status, author, timestamps | ✓ Yes |
|
|
441
|
+
|
|
442
|
+
The HTML viewer runs a tiny local HTTP server (`localhost:4321`) — no network, no sharing. Edit mode toggles all sections to textareas; comments appear in a side panel per section.
|
|
330
443
|
|
|
331
444
|
---
|
|
332
445
|
|
|
@@ -334,23 +447,17 @@ shape.
|
|
|
334
447
|
|
|
335
448
|
PRs welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) first.
|
|
336
449
|
|
|
337
|
-
|
|
450
|
+
---
|
|
338
451
|
|
|
339
|
-
|
|
340
|
-
(scope, DoD, exclusions).
|
|
341
|
-
2. **During:** Run `make session-start` to record session start.
|
|
342
|
-
3. **After:** Score against [templates/evaluator-rubric.md](templates/evaluator-rubric.md)
|
|
343
|
-
(every dim B+).
|
|
344
|
-
4. **End of session:** Run `make clean-check` and `make check`. Commit
|
|
345
|
-
with a WHY-focused message.
|
|
452
|
+
## Development
|
|
346
453
|
|
|
347
|
-
|
|
454
|
+
Development of BizarHarness uses a separate sandbox repo for Docker/dev tooling.
|
|
455
|
+
See [DrB0rk/BizarHarness-dev](https://github.com/DrB0rk/BizarHarness-dev) (private)
|
|
456
|
+
for the local dev environment, including the Docker-based cline sandbox used to
|
|
457
|
+
test config and plugin changes without touching the system cline install.
|
|
348
458
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
(private) for the local dev environment, including the Docker-based
|
|
352
|
-
Cline sandbox used to test config and plugin changes without touching
|
|
353
|
-
the system Cline install.
|
|
459
|
+
> **Note:** When you push BizarHarness-dev to GitHub, update the URL above to match
|
|
460
|
+
> the actual repo location.
|
|
354
461
|
|
|
355
462
|
---
|
|
356
463
|
|
|
@@ -360,15 +467,6 @@ MIT — see [LICENSE](LICENSE).
|
|
|
360
467
|
|
|
361
468
|
---
|
|
362
469
|
|
|
363
|
-
## Acknowledgments
|
|
364
|
-
|
|
365
|
-
Inspired by the [walkinglabs/learn-harness-engineering](https://github.com/walkinglabs/learn-harness-engineering)
|
|
366
|
-
course and the [awesome-harness-engineering](https://github.com/walkinglabs/awesome-harness-engineering)
|
|
367
|
-
curated list. Built on [Cline](https://docs.cline.bot) and
|
|
368
|
-
[@cline/sdk](https://www.npmjs.com/package/@cline/sdk).
|
|
369
|
-
|
|
370
|
-
---
|
|
371
|
-
|
|
372
470
|
<div align="center">
|
|
373
471
|
<small>
|
|
374
472
|
ᚱᚨᛞᛖ ᚹᛖᛚ · ᛟᚲ ᛈᚱᛟᛋᛈᛖᚱ<br>
|