create-booboo 0.4.1 → 0.5.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/dist/cli.js +145 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -101,6 +101,7 @@ var orgJson = JSON.stringify(
|
|
|
101
101
|
booboo_org: "1.0",
|
|
102
102
|
title: TITLE,
|
|
103
103
|
root: "core",
|
|
104
|
+
seed: true,
|
|
104
105
|
agents: [
|
|
105
106
|
{ id: "core", name: TITLE, emoji: "\u{1F3DB}\uFE0F", role: "the orchestrator \u2014 routes, never executes", rules: ["rules/GLOBAL.md"], buckets: ["shared"], boot: "You are the orchestrator. Boot with booboo_boot('core'); route work to your branches, never do it yourself." },
|
|
106
107
|
{ id: "writer", name: "Writer", emoji: "\u{1F4DD}", role: "drafts content", parent: "core", skills: ["humanizer"], buckets: ["content"] },
|
|
@@ -135,6 +136,18 @@ var readme = `# ${name} \u2014 a Booboo brain
|
|
|
135
136
|
|
|
136
137
|
A rooted, queryable graph of your system, built with [Booboo](https://github.com/jessedu29260-netizen/booboo) (the unified operational brain).
|
|
137
138
|
|
|
139
|
+
## First: shape it to your system
|
|
140
|
+
|
|
141
|
+
The scaffold ships a **sample** organigram (a Writer and a Researcher) so the panel
|
|
142
|
+
demos immediately. It is not yours, and \`org.booboo.json\` is flagged \`"seed": true\`
|
|
143
|
+
to say so.
|
|
144
|
+
|
|
145
|
+
Open this folder in Claude Code / Cursor and say **"set up my brain"**. Your agent
|
|
146
|
+
reads [ONBOARDING.md](./ONBOARDING.md), looks at your actual project, asks only what
|
|
147
|
+
it cannot infer, proposes a structure for you to correct, and writes the real
|
|
148
|
+
organigram. Everything downstream \u2014 rules, memory buckets, who reports to whom \u2014
|
|
149
|
+
inherits from that one file.
|
|
150
|
+
|
|
138
151
|
## Quickstart
|
|
139
152
|
|
|
140
153
|
\`\`\`bash
|
|
@@ -199,6 +212,16 @@ var agentsMd = `# ${TITLE} \u2014 the agent contract
|
|
|
199
212
|
*Any AI agent working in this folder reads this first, every session. It is the
|
|
200
213
|
operating doctrine for this brain \u2014 the conventions match the setup.*
|
|
201
214
|
|
|
215
|
+
## 0. Is this brain set up yet? (check first, every session)
|
|
216
|
+
If \`org.booboo.json\` still contains \`"seed": true\`, this brain has NOT been shaped
|
|
217
|
+
for this system \u2014 it is holding the scaffold's sample Writer/Researcher pair, which
|
|
218
|
+
belongs to nobody. **Stop and run \`ONBOARDING.md\` before any other work.** It takes
|
|
219
|
+
one pass: read the project, confirm the structure with the human, write the real org.
|
|
220
|
+
|
|
221
|
+
Until that is done, do not add agents, write memories against the sample agents, or
|
|
222
|
+
build anything on top of the placeholder shape \u2014 everything downstream inherits from
|
|
223
|
+
the org, so work done against a fake structure has to be redone against the real one.
|
|
224
|
+
|
|
202
225
|
## What this folder is
|
|
203
226
|
- \`booboo.config.yaml\` \u2014 build config (layers \xB7 sources \xB7 walls \xB7 wikilinks). Edit to shape the brain.
|
|
204
227
|
- \`org.booboo.json\` \u2014 **SOURCE**: the agent organigram you boot from. Versioned, validated, edited via the panel or a reviewed change \u2014 never ad-hoc.
|
|
@@ -230,6 +253,117 @@ End substantial work by reporting plainly: what changed, what you verified again
|
|
|
230
253
|
`;
|
|
231
254
|
var claudeMd = `@AGENTS.md
|
|
232
255
|
`;
|
|
256
|
+
var onboardingMd = `# Set up this brain \u2014 run once, then delete this file
|
|
257
|
+
|
|
258
|
+
*You are the orchestrator. This folder is a Booboo brain that has NOT been
|
|
259
|
+
shaped yet: \`org.booboo.json\` still carries \`"seed": true\` and holds a sample
|
|
260
|
+
Writer/Researcher pair that has nothing to do with this system. Your job is to
|
|
261
|
+
replace that sample with the real structure, then clear the flag.*
|
|
262
|
+
|
|
263
|
+
**Do not fabricate a structure.** Everything below is about finding out what is
|
|
264
|
+
actually here before you write anything down.
|
|
265
|
+
|
|
266
|
+
## 1. Read before you ask
|
|
267
|
+
|
|
268
|
+
Most of an organigram is already sitting in the project. Look, in this order:
|
|
269
|
+
|
|
270
|
+
- \`package.json\` / \`pyproject.toml\` / \`go.mod\` \u2014 what this thing is and is built from
|
|
271
|
+
- \`README\` and any architecture doc \u2014 what it claims to do, for whom, **and how its
|
|
272
|
+
parts relate**. This is the important one, see the warning below.
|
|
273
|
+
- the top two levels of directories \u2014 the candidate divisions
|
|
274
|
+
- an existing \`CLAUDE.md\` / \`AGENTS.md\` / \`.cursorrules\` \u2014 conventions already agreed
|
|
275
|
+
- \`git log --oneline -40\` and \`git shortlog -sn\` \u2014 what actually gets worked on, and by how many people
|
|
276
|
+
- any \`docs/\`, \`ops/\`, \`infra/\` \u2014 the surfaces that need an owner
|
|
277
|
+
|
|
278
|
+
**Folders give you the nouns, not the shape.** A directory listing is flat by
|
|
279
|
+
construction, and an org built straight from one is a root with fifteen children
|
|
280
|
+
and no structure \u2014 which is a list, not an organigram. The grouping almost always
|
|
281
|
+
lives in the prose: "X is the contract at the centre, Y and Z feed it, A and B
|
|
282
|
+
render it" is three divisions, and no amount of staring at the folder names will
|
|
283
|
+
tell you that. Read for how the parts RELATE, then group the nouns under it.
|
|
284
|
+
|
|
285
|
+
Write down what you inferred. You will show it to the human in step 3 as
|
|
286
|
+
statements to correct, which is far easier to answer than an open question.
|
|
287
|
+
|
|
288
|
+
## 2. Ask only what the repo cannot tell you
|
|
289
|
+
|
|
290
|
+
Four questions, maximum. Fewer if you already know the answer. Ask them in one
|
|
291
|
+
message, not one at a time:
|
|
292
|
+
|
|
293
|
+
1. **What does this system DO, in one sentence?** (The root agent's purpose.)
|
|
294
|
+
2. **What are its real divisions?** Not the folders, the *responsibilities* \u2014
|
|
295
|
+
the things that would each have an owner if this were a company.
|
|
296
|
+
3. **What must never be shared between them?** Secrets, client data, anything
|
|
297
|
+
personal. These become \`walls:\` and are filtered before anything is emitted.
|
|
298
|
+
4. **What should agents here remember between sessions?** Decisions, incidents,
|
|
299
|
+
customer facts, research? These become the memory buckets.
|
|
300
|
+
|
|
301
|
+
If the human says "you decide" \u2014 decide, from step 1, and say what you decided
|
|
302
|
+
and why. Do not stall.
|
|
303
|
+
|
|
304
|
+
## 3. Propose the shape BEFORE writing it
|
|
305
|
+
|
|
306
|
+
Print the organigram as a tree, in the message, with one line per agent saying
|
|
307
|
+
what it owns and what it can reach. Something like:
|
|
308
|
+
|
|
309
|
+
\`\`\`
|
|
310
|
+
core the orchestrator \u2014 routes, never executes
|
|
311
|
+
\u251C\u2500 <division> <what it owns> reaches: <buckets>
|
|
312
|
+
\u2502 \u2514\u2500 <role> <what it does>
|
|
313
|
+
\u2514\u2500 <division> <what it owns> reaches: <buckets>
|
|
314
|
+
\`\`\`
|
|
315
|
+
|
|
316
|
+
Then ask one question: **"Does this match how it actually works?"** Structure is
|
|
317
|
+
cheap to fix now and expensive to fix once agents boot from it.
|
|
318
|
+
|
|
319
|
+
Rules of thumb worth holding:
|
|
320
|
+
- **The root routes, it does not execute.** If the root is doing the work, the
|
|
321
|
+
org is one layer short.
|
|
322
|
+
- **A division with one child is not a division** \u2014 collapse it.
|
|
323
|
+
- **Buckets follow responsibility, not convenience.** If two agents need the
|
|
324
|
+
same bucket, that is a signal they are one agent, or that a parent should own it.
|
|
325
|
+
- **Rules inherit downward.** Put a rule as high as it is true, and only there.
|
|
326
|
+
A rule restated on a child is a rule that will drift.
|
|
327
|
+
|
|
328
|
+
## 4. Write it
|
|
329
|
+
|
|
330
|
+
- \`org.booboo.json\` \u2014 the agents, their parents, roles, \`buckets\`, \`rules\`, a
|
|
331
|
+
\`boot\` line for the root, and a \`cadence\` on every division (see below).
|
|
332
|
+
**Remove \`"seed": true\`** \u2014 that is the whole point of this step, and the gate
|
|
333
|
+
in AGENTS.md reads it.
|
|
334
|
+
|
|
335
|
+
**Set \`cadence\` on every division: expected HOURS between reports.** Daily is
|
|
336
|
+
24, weekly 168, monthly 720. This is what the health lamp judges \u2014 silence past
|
|
337
|
+
about twice the cadence turns a card amber. Leaving it off does not mean "no
|
|
338
|
+
opinion"; consumers fall back to roughly a day, which is a machine's rhythm, so
|
|
339
|
+
a division that genuinely reports weekly will sit amber permanently and the
|
|
340
|
+
board stops meaning anything. Ask the human what each division's real beat is;
|
|
341
|
+
it is usually the answer to "how often would you expect to hear from them?"
|
|
342
|
+
- \`booboo.config.yaml\` \u2014 set \`layers\` to the planes this system actually has, and
|
|
343
|
+
\`walls\` to the answer from question 3.
|
|
344
|
+
- \`data.booboo.json\` \u2014 replace the sample nodes, or point \`sources\` at the real
|
|
345
|
+
database and delete it.
|
|
346
|
+
- \`rules/\` \u2014 create the rule files any agent references. A \`rules:\` entry pointing
|
|
347
|
+
at a file that does not exist is a rule nobody can read.
|
|
348
|
+
|
|
349
|
+
## 5. Verify against the running thing
|
|
350
|
+
|
|
351
|
+
\`\`\`bash
|
|
352
|
+
npm run build # must print ok \u2014 read the quality line
|
|
353
|
+
npm run panel # the organigram, as the human will see it
|
|
354
|
+
\`\`\`
|
|
355
|
+
|
|
356
|
+
Check with your own eyes: every agent has a parent, the tree matches what was
|
|
357
|
+
agreed in step 3, and no rule points at a missing file. \`npm run build\` failing
|
|
358
|
+
or the panel showing an agent you did not intend means step 4 is not finished.
|
|
359
|
+
|
|
360
|
+
## 6. Close
|
|
361
|
+
|
|
362
|
+
Delete this file \u2014 it has done its job, and a completed ritual left lying around
|
|
363
|
+
reads as an outstanding one. Then \`booboo_report\` what you set up, and
|
|
364
|
+
\`booboo_remember\` the *reasoning* behind the divisions: the next agent inherits
|
|
365
|
+
the shape from the org, but it inherits the WHY only from you.
|
|
366
|
+
`;
|
|
233
367
|
var files = {
|
|
234
368
|
"booboo.config.yaml": configYaml,
|
|
235
369
|
"data.booboo.json": dataJson,
|
|
@@ -238,7 +372,8 @@ var files = {
|
|
|
238
372
|
"README.md": readme,
|
|
239
373
|
".gitignore": gitignore,
|
|
240
374
|
"AGENTS.md": agentsMd,
|
|
241
|
-
"CLAUDE.md": claudeMd
|
|
375
|
+
"CLAUDE.md": claudeMd,
|
|
376
|
+
"ONBOARDING.md": onboardingMd
|
|
242
377
|
};
|
|
243
378
|
for (const [f, content] of Object.entries(files)) writeFileSync(path.join(dir, f), content, "utf8");
|
|
244
379
|
console.log(`
|
|
@@ -253,6 +388,15 @@ console.log(" npm run mcp # MCP over stdio (Claude / Cursor / Claude Cod
|
|
|
253
388
|
console.log(" npm run view # see your brain in 3D (opens your browser)");
|
|
254
389
|
console.log(" npm run panel # the organigram \u2014 run your agents like a company");
|
|
255
390
|
console.log(" npm run vault # the brain as a wiki-linked markdown vault (Obsidian-ready)\n");
|
|
391
|
+
console.log("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500");
|
|
392
|
+
console.log("This scaffold does NOT know your system yet. The two agents in");
|
|
393
|
+
console.log("org.booboo.json are a SAMPLE so the panel demos on first run.\n");
|
|
394
|
+
console.log(" Open this folder in Claude Code / Cursor and say:");
|
|
395
|
+
console.log(" set up my brain\n");
|
|
396
|
+
console.log("Your agent reads ONBOARDING.md, looks at your actual project, asks");
|
|
397
|
+
console.log("what it can't infer, and writes the real organigram. Everything else");
|
|
398
|
+
console.log("\u2014 rules, buckets, who reports to whom \u2014 flows down from that file.");
|
|
399
|
+
console.log("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n");
|
|
256
400
|
console.log("Your agent's contract is AGENTS.md (CLAUDE.md imports it) \u2014 Claude/Codex read it");
|
|
257
401
|
console.log("automatically in this folder and will follow the brain's conventions.\n");
|
|
258
402
|
console.log("Then edit booboo.config.yaml to point at your own data \u2014 a postgres example is included.\n");
|