brainiverse 0.0.0-stage → 0.1.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 (53) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +228 -2
  3. package/assets/brainiverse-intro.svg +120 -0
  4. package/assets/brainiverse.svg +85 -0
  5. package/bin/brainiverse.mjs +102 -0
  6. package/package.json +30 -4
  7. package/skill/brainiverse/SKILL.md +105 -0
  8. package/skill/brainiverse/agents/analyst.md +22 -0
  9. package/skill/brainiverse/agents/challenger.md +23 -0
  10. package/skill/brainiverse/agents/communicator.md +18 -0
  11. package/skill/brainiverse/agents/creative-thinker.md +20 -0
  12. package/skill/brainiverse/agents/executor.md +23 -0
  13. package/skill/brainiverse/agents/leader.md +39 -0
  14. package/skill/brainiverse/agents/organizer.md +18 -0
  15. package/skill/brainiverse/agents/quality-reviewer.md +24 -0
  16. package/skill/brainiverse/agents/researcher.md +25 -0
  17. package/skill/brainiverse/agents/specialist.md +19 -0
  18. package/skill/brainiverse/bin/brainiverse.mjs +5 -0
  19. package/skill/brainiverse/docs/architecture.md +73 -0
  20. package/skill/brainiverse/docs/cli.md +628 -0
  21. package/skill/brainiverse/docs/customization.md +86 -0
  22. package/skill/brainiverse/docs/examples.md +96 -0
  23. package/skill/brainiverse/docs/limitations.md +38 -0
  24. package/skill/brainiverse/meetings/meeting-protocol.md +90 -0
  25. package/skill/brainiverse/runtime/args.mjs +87 -0
  26. package/skill/brainiverse/runtime/audit.mjs +26 -0
  27. package/skill/brainiverse/runtime/briefs.mjs +139 -0
  28. package/skill/brainiverse/runtime/cli.mjs +859 -0
  29. package/skill/brainiverse/runtime/data/archetypes.json +165 -0
  30. package/skill/brainiverse/runtime/data/domains.json +628 -0
  31. package/skill/brainiverse/runtime/data/templates/app-builders.json +25 -0
  32. package/skill/brainiverse/runtime/data/templates/discovery-crew.json +24 -0
  33. package/skill/brainiverse/runtime/data/templates/travel-squad.json +25 -0
  34. package/skill/brainiverse/runtime/data/terminology.json +18 -0
  35. package/skill/brainiverse/runtime/data/themes.json +50 -0
  36. package/skill/brainiverse/runtime/evaluation.mjs +58 -0
  37. package/skill/brainiverse/runtime/meetings.mjs +224 -0
  38. package/skill/brainiverse/runtime/memory.mjs +115 -0
  39. package/skill/brainiverse/runtime/orchestrator.mjs +385 -0
  40. package/skill/brainiverse/runtime/permissions.mjs +67 -0
  41. package/skill/brainiverse/runtime/registry.mjs +230 -0
  42. package/skill/brainiverse/runtime/skills.mjs +204 -0
  43. package/skill/brainiverse/runtime/store.mjs +216 -0
  44. package/skill/brainiverse/runtime/teams.mjs +272 -0
  45. package/skill/brainiverse/runtime/tools.mjs +74 -0
  46. package/skill/brainiverse/teams/app-builders.md +24 -0
  47. package/skill/brainiverse/teams/discovery-crew.md +22 -0
  48. package/skill/brainiverse/teams/travel-squad.md +26 -0
  49. package/skill/brainiverse/workflows/collaboration.md +26 -0
  50. package/skill/brainiverse/workflows/mission-intake.md +35 -0
  51. package/skill/brainiverse/workflows/orchestration.md +59 -0
  52. package/skill/brainiverse/workflows/skill-discovery.md +61 -0
  53. package/skill/brainiverse/workflows/team-creation.md +41 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 saman
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,229 @@
1
- # Temporary Holding Version
1
+ <p align="center">
2
+ <img src="assets/brainiverse-intro.svg" alt="Brainiverse: the right minds for every mission" width="880">
3
+ </p>
2
4
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
5
+ <p align="center">
6
+ <img src="assets/brainiverse.svg" alt="" width="20" align="center">
7
+ &nbsp;<strong>A team of AI agents in your terminal, assembled for whatever you're trying to do.</strong>
8
+ </p>
9
+
10
+ <p align="center">
11
+ <img alt="Claude Code skill" src="https://img.shields.io/badge/Claude%20Code-skill-5b21b6">
12
+ <img alt="Node 18.17+" src="https://img.shields.io/badge/node-%E2%89%A518.17-312e81">
13
+ <img alt="Zero dependencies" src="https://img.shields.io/badge/dependencies-0-1e1b4b">
14
+ <img alt="MIT license" src="https://img.shields.io/badge/license-MIT-f59e0b">
15
+ </p>
16
+
17
+ ---
18
+
19
+ You tell **Captain** what you want to get done. Captain picks a squad that fits: a researcher, a budget
20
+ analyst, an architect, a skeptic, whoever the job actually needs. The squad works **in parallel**. When a
21
+ real decision comes up, Captain calls everyone into a **war room** with you. Before anything reaches you, a
22
+ reviewer checks it.
23
+
24
+ ```bash
25
+ npx brainiverse install
26
+ ```
27
+ Open Claude Code, type `/brainiverse`, and describe your mission.
28
+
29
+ ---
30
+
31
+ ## Why we built this
32
+
33
+ A single AI assistant is a brilliant generalist working alone. Ask it to plan a trip, launch an app or
34
+ pressure-test a business idea, and it does the research, the maths, the building and the fact-checking
35
+ in one stream of thought. There's nobody to disagree with it and nobody to check its work.
36
+
37
+ Human teams don't work that way. Good ones split the work, argue about it, and have someone check it before
38
+ it goes out. We wanted that structure for everyday problems, without the usual multi-agent compromises:
39
+
40
+ - **No fake teams.** Many "multi-agent" demos are one model playing every role in a single prompt. In
41
+ Brainiverse each agent is a real, separate Claude Code subagent with its own brief, tools and output.
42
+ - **No single-purpose rigs.** Most agent setups are hard-wired for one job, usually coding. Here the same
43
+ machinery runs a travel plan, a codebase or a market study. Only the team changes.
44
+ - **No confident fiction.** Agents aren't allowed to claim they did something they didn't. Results are
45
+ labelled *verified*, *proposed* or *assumed*, and the runtime keeps the receipts.
46
+ - **No loss of control.** Spending money, sending messages, deleting data, pushing code and installing
47
+ anything all need your explicit OK, each time.
48
+
49
+ The result: the right minds for every mission, with you still in charge.
50
+
51
+ ## What it feels like
52
+
53
+ ```text
54
+ You I want to plan two weeks in Japan in April, around €3,000. I love food and temples.
55
+
56
+ Captain Here's the squad I'd put on this:
57
+ 🛡️ Captain Leader your point of contact
58
+ 🔭 Lumen Researcher regions, cherry-blossom timing, advisories
59
+ 📊 Penny Budget analyst real costs per option
60
+ 🧭 Navigator Itinerary expert the day-by-day plan
61
+ 🧭 Logistics Specialist rail passes, transfers, entry rules
62
+ 🎯 Sentinel Quality reviewer checks facts and the budget before you see anything
63
+ One question first: relaxed pace, or pack it in?
64
+
65
+ You Relaxed. And rename Lumen to Sherlock.
66
+
67
+ Captain Done. Sherlock and Penny are working in parallel now…
68
+
69
+ ⚔️ War Room: there are two good routes. Sherlock, Penny, you're up.
70
+ Sherlock Kyoto-heavy gives you the temples and the best blossom odds (sources attached).
71
+ Penny It's also €340 cheaper if you skip one bullet-train leg.
72
+ Captain Kyoto-heavy or Tokyo-heavy?
73
+
74
+ You Kyoto. Actually, let me ask Penny something directly.
75
+
76
+ Penny (direct line) Sure, what do you want to know?
77
+ ```
78
+
79
+ Every line from Sherlock and Penny above comes from an actual agent run. Captain can't invent their
80
+ words: the runtime only accepts a contribution if it's tied to a real invocation.
81
+
82
+ ## How it works
83
+
84
+ ```
85
+ You ⇄ Captain ── the main Claude Code session, guided by SKILL.md
86
+ │
87
+ │ 1. understands the mission, proposes a team, gets your OK
88
+ │ 2. breaks the goal into tasks with owners, dependencies and acceptance criteria
89
+ │ 3. "brainiverse task start ready" → one Agent-tool call per runnable task
90
+ ▼
91
+ ┌───────────┬───────────┬───────────┐
92
+ │ Sherlock │ Penny │ Navigator │ real subagents, running in parallel
93
+ └─────┬─────┴─────┬─────┴─────┬─────┘ each fetches its brief → works → submits a result
94
+ ▼ ▼ ▼
95
+ ┌─────────────────────────────────────┐
96
+ │ Brainiverse runtime (Node, 0 deps) │ tasks · limits · permissions · approvals
97
+ │ .brainiverse/ in your project │ meetings · memory · audit log
98
+ └─────────────────────────────────────┘
99
+ │
100
+ ▼
101
+ 4. Captain reviews each result: accept, or send it back with feedback
102
+ 5. War rooms when a decision needs you · direct lines when you want one agent
103
+ 6. Sentinel audits the final deliverable → Captain hands you a debrief
104
+ ```
105
+
106
+ There are two layers:
107
+
108
+ 1. **Behaviour, in Markdown.** [`SKILL.md`](skill/brainiverse/SKILL.md) is Captain's playbook. Role files in
109
+ [`agents/`](skill/brainiverse/agents) tell each agent how to do its job; [`workflows/`](skill/brainiverse/workflows)
110
+ and [`meetings/`](skill/brainiverse/meetings) cover intake, delegation, collaboration and war rooms. They're
111
+ loaded only when needed, so the context stays small.
112
+ 2. **Rules, in code.** A small Node runtime holds what must not depend on the model remembering it: the task
113
+ graph, who may do what, limits, approvals and the audit trail. The model decides *what* to do; the runtime
114
+ makes sure it's done *honestly*.
115
+
116
+ ### Teams are built for your mission
117
+
118
+ Teams aren't picked from a fixed list. `team propose` reads your request and works out which capabilities it
119
+ needs: research, ideas, analysis, building, risk, communication, organizing, review. It adds specialists for
120
+ the domain (travel, software, business, science, learning, productivity, data, marketing, creative work) and
121
+ caps the size so you get **the smallest team that can do the job**. Each agent comes with a one-line reason
122
+ for being there. Captain then refines the roster, and you can change anything.
123
+
124
+ The ten building blocks: **Leader · Researcher · Creative Thinker · Analyst · Executor · Challenger ·
125
+ Specialist · Communicator · Organizer · Quality Reviewer**. Three ready-made templates (Travel Squad, App
126
+ Builders, Discovery Crew) are optional shortcuts.
127
+
128
+ ### What keeps the agents honest
129
+
130
+ | Without guardrails, an agent could… | In Brainiverse |
131
+ |---|---|
132
+ | say "deployed ✅" after writing a script | Any action marked *verified* must include evidence, or the result is rejected |
133
+ | speak for another agent in a meeting | Meeting messages come only from real invocations, linked by id |
134
+ | approve its own request, or grant itself access | Agents can run only "read my brief" and "submit my result". Approvals are the human's, quoted in the log |
135
+ | loop forever or spawn endlessly | Limits on concurrency, invocations, retries, timeouts, revision rounds and delegation depth |
136
+ | change permissions by being renamed or imported | Identity is separate from authority, and imported agents never bring risky capabilities |
137
+ | follow instructions hidden in a web page or a downloaded skill | Outside content is treated as data. Downloaded skills are scanned and need your approval |
138
+ | leak an API key into memory or logs | Anything that looks like a secret is refused in memory and redacted in the audit log |
139
+
140
+ ## Things you can do
141
+
142
+ - 🎯 **Describe a mission in plain words.** No setup and no agent jargon. Captain only asks questions whose
143
+ answers change the plan.
144
+ - 🧩 **Customize everything.** Rename agents, change personalities, instructions, expertise or model tier, add
145
+ specialists, pick a different leader. Use the original `heroes` theme or switch to plain professional
146
+ names and terminology.
147
+ - ⚡ **Parallel work with hand-offs.** Independent tasks run at the same time, and each agent automatically
148
+ receives the results it depends on.
149
+ - ⚔️ **War rooms.** Agents present, respond to each other, and challenge each other's proposals. You
150
+ decide, and the conclusions become tasks.
151
+ - ☎️ **Direct line.** Talk one-on-one with any agent. Captain relays the replies word for word.
152
+ - 🧭 **Skill discovery.** When the team hits a real gap, it looks for existing skills, scans them for risky
153
+ patterns, recommends at most three, and installs only with your approval.
154
+ - 💾 **Memory and reuse.** Save teams and agents, export or import them as JSON, and keep project, team and
155
+ agent memories that you can inspect, edit or delete.
156
+ - 📋 **Debriefs.** Every mission ends with a report: accepted deliverables, decisions, assumptions,
157
+ unresolved issues, reviews and metrics (including which agents were never needed).
158
+
159
+ ## Install
160
+
161
+ You need Node.js 18.17 or newer and Claude Code.
162
+
163
+ ```bash
164
+ npx brainiverse install # for you: ~/.claude/skills/brainiverse
165
+ npx brainiverse install --project # just this repo: ./.claude/skills/brainiverse
166
+ npx brainiverse doctor # check the install
167
+ npx brainiverse uninstall # remove it (your mission data stays)
168
+ ```
169
+
170
+ Start a new Claude Code session, then type `/brainiverse`, or just say *"get me a team to…"*. Mission state
171
+ lives in `.brainiverse/` in your project, so add it to `.gitignore`.
172
+
173
+ ## A taste of the controls
174
+
175
+ You'll mostly just talk to Captain, who runs these for you. They're also there if you want to drive directly:
176
+
177
+ ```bash
178
+ brainiverse team propose "Build and launch a web app with user login"
179
+ brainiverse agent rename lumen --team @mission --name Sherlock --personality "Deductive, dry-witted"
180
+ brainiverse meeting start --objective "Pick the route" --with lumen,penny
181
+ brainiverse chat start penny
182
+ brainiverse status
183
+ brainiverse mission report
184
+ ```
185
+
186
+ Full reference: [docs/cli.md](skill/brainiverse/docs/cli.md).
187
+
188
+ ## Honest limits
189
+
190
+ - Captain is your main Claude Code session, not a separate process. Subagents can't talk to you directly or
191
+ spawn their own agents.
192
+ - The runtime strictly enforces its own records (approvals, limits, who may submit what). Which tools a
193
+ subagent actually calls during its turn is guided by its brief and Claude Code's permission prompts, not
194
+ sandboxed per agent yet.
195
+ - `team propose` starts from keyword and domain matching. That makes it predictable, and Captain refines it
196
+ with judgment.
197
+
198
+ More in [docs/limitations.md](skill/brainiverse/docs/limitations.md), including what's planned next.
199
+
200
+ ## Repository layout
201
+
202
+ ```
203
+ assets/ icon and animated banner
204
+ bin/brainiverse.mjs npx entry: install / uninstall / doctor (other commands go to the runtime)
205
+ skill/brainiverse/ the skill exactly as it's installed
206
+ SKILL.md Captain's playbook (always loaded)
207
+ agents/ the 10 archetype role files (each subagent reads its own)
208
+ workflows/ meetings/ intake, team creation, orchestration, collaboration, skills, war rooms
209
+ teams/ notes on the 3 optional templates
210
+ docs/ architecture, customization, CLI reference, examples, limitations
211
+ runtime/ orchestration, registry, team builder, meetings, permissions, memory, audit
212
+ test/ 64 tests: unit, CLI, end-to-end (travel, software, research), installer
213
+ ```
214
+
215
+ ## Development
216
+
217
+ ```bash
218
+ npm test # node:test, no dependencies
219
+ node skill/brainiverse/bin/brainiverse.mjs --help
220
+ node scripts/gen-cli-docs.mjs # regenerate the CLI reference after changing commands
221
+ npm pack --dry-run # see what gets published
222
+ ```
223
+
224
+ **Read more:** [Architecture](skill/brainiverse/docs/architecture.md) ·
225
+ [Customization](skill/brainiverse/docs/customization.md) · [Examples](skill/brainiverse/docs/examples.md)
226
+
227
+ ## License
228
+
229
+ MIT. Assemble responsibly. 🛡️
@@ -0,0 +1,120 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 880 300" width="880" height="300" role="img" aria-labelledby="title desc">
2
+ <title id="title">Brainiverse — the right minds for every mission</title>
3
+ <desc id="desc">A leader star lights up, ten agent stars join it in the shape of a brain, and example missions cycle: plan a trip, build an app, test a startup idea.</desc>
4
+ <defs>
5
+ <linearGradient id="space" x1="0" y1="0" x2="1" y2="1">
6
+ <stop offset="0" stop-color="#1e1b4b"/>
7
+ <stop offset="0.6" stop-color="#312e81"/>
8
+ <stop offset="1" stop-color="#5b21b6"/>
9
+ </linearGradient>
10
+ <radialGradient id="glow" cx="0.5" cy="0.5" r="0.5">
11
+ <stop offset="0" stop-color="#fde68a" stop-opacity="0.9"/>
12
+ <stop offset="0.35" stop-color="#f59e0b" stop-opacity="0.35"/>
13
+ <stop offset="1" stop-color="#f59e0b" stop-opacity="0"/>
14
+ </radialGradient>
15
+ <radialGradient id="leader" cx="0.4" cy="0.35" r="0.7">
16
+ <stop offset="0" stop-color="#fffbeb"/>
17
+ <stop offset="0.5" stop-color="#fcd34d"/>
18
+ <stop offset="1" stop-color="#f59e0b"/>
19
+ </radialGradient>
20
+ <clipPath id="card"><rect width="880" height="300" rx="28"/></clipPath>
21
+ </defs>
22
+
23
+ <style>
24
+ /* One 9-second loop. Every element uses the same duration; delays stagger it. */
25
+ .fade { animation: fade 9s infinite both; }
26
+ .pop { animation: pop 9s infinite both; transform-box: fill-box; transform-origin: center; }
27
+ .draw { stroke-dasharray: 1; stroke-dashoffset: 1; animation: draw 9s infinite both; }
28
+ .pulse { animation: pulse 3s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
29
+ .twinkle{ animation: twinkle 3s ease-in-out infinite; }
30
+ .mission{ animation: mission 9s infinite both; opacity: 0; }
31
+ @keyframes fade { 0% { opacity: 0 } 6%, 94% { opacity: 1 } 100% { opacity: 0 } }
32
+ @keyframes pop { 0% { opacity: 0; transform: scale(0.2) } 4% { opacity: 1; transform: scale(1.25) } 7%, 94% { opacity: 1; transform: scale(1) } 100% { opacity: 0; transform: scale(1) } }
33
+ @keyframes draw { 0% { stroke-dashoffset: 1 } 6%, 94% { stroke-dashoffset: 0 } 100% { stroke-dashoffset: 1 } }
34
+ @keyframes pulse { 0%, 100% { transform: scale(1); opacity: 0.85 } 50% { transform: scale(1.18); opacity: 1 } }
35
+ @keyframes twinkle { 0%, 100% { opacity: 0.25 } 50% { opacity: 0.9 } }
36
+ @keyframes mission { 0% { opacity: 0; transform: translateY(8px) } 4%, 29% { opacity: 1; transform: translateY(0) } 33%, 100% { opacity: 0; transform: translateY(-8px) } }
37
+ text { font-family: ui-sans-serif, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; }
38
+ @media (prefers-reduced-motion: reduce) {
39
+ .fade, .pop, .draw, .pulse, .twinkle { animation: none; opacity: 1; stroke-dashoffset: 0; }
40
+ .mission { animation: none; }
41
+ .m1 { opacity: 1; }
42
+ }
43
+ </style>
44
+
45
+ <g clip-path="url(#card)">
46
+ <rect width="880" height="300" fill="url(#space)"/>
47
+
48
+ <!-- stars -->
49
+ <g fill="#e0e7ff">
50
+ <circle class="twinkle" cx="40" cy="36" r="1.6"/>
51
+ <circle class="twinkle" cx="300" cy="30" r="1.3" style="animation-delay:-1s"/>
52
+ <circle class="twinkle" cx="840" cy="40" r="1.6" style="animation-delay:-2s"/>
53
+ <circle class="twinkle" cx="852" cy="284" r="1.4" style="animation-delay:-0.5s"/>
54
+ <circle class="twinkle" cx="520" cy="276" r="1.2" style="animation-delay:-1.5s"/>
55
+ <circle class="twinkle" cx="28" cy="250" r="1.3" style="animation-delay:-2.5s"/>
56
+ <circle class="twinkle" cx="660" cy="22" r="1.1" style="animation-delay:-0.8s"/>
57
+ </g>
58
+
59
+ <!-- the squad: brain constellation (same geometry as the icon), centred at (150,150) -->
60
+ <g transform="translate(22 44)">
61
+ <ellipse class="fade" cx="128" cy="128" rx="116" ry="38" fill="none" stroke="#a5b4fc" stroke-width="2.5" stroke-opacity="0.35" transform="rotate(-18 128 128)"/>
62
+
63
+ <g fill="none" stroke="#c7d2fe" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.7">
64
+ <path class="draw" pathLength="1" style="animation-delay:0.2s" d="M128 58 Q112 34 96 48 Q66 42 60 70 Q36 82 48 108 Q32 132 62 146 Q66 174 100 166 Q118 180 128 162"/>
65
+ <path class="draw" pathLength="1" style="animation-delay:0.2s" d="M128 58 Q144 34 160 48 Q190 42 196 70 Q220 82 208 108 Q224 132 194 146 Q190 174 156 166 Q138 180 128 162"/>
66
+ <path class="fade" d="M120 166 Q126 188 116 204" stroke-opacity="0.5" style="animation-delay:0.4s"/>
67
+ </g>
68
+
69
+ <g stroke="#fde68a" stroke-width="2.5" stroke-opacity="0.75" stroke-linecap="round">
70
+ <line class="draw" pathLength="1" style="animation-delay:0.9s" x1="128" y1="108" x2="96" y2="48"/>
71
+ <line class="draw" pathLength="1" style="animation-delay:1.05s" x1="128" y1="108" x2="160" y2="48"/>
72
+ <line class="draw" pathLength="1" style="animation-delay:1.2s" x1="128" y1="108" x2="60" y2="70"/>
73
+ <line class="draw" pathLength="1" style="animation-delay:1.35s" x1="128" y1="108" x2="196" y2="70"/>
74
+ <line class="draw" pathLength="1" style="animation-delay:1.5s" x1="128" y1="108" x2="48" y2="108"/>
75
+ <line class="draw" pathLength="1" style="animation-delay:1.65s" x1="128" y1="108" x2="208" y2="108"/>
76
+ <line class="draw" pathLength="1" style="animation-delay:1.8s" x1="128" y1="108" x2="62" y2="146"/>
77
+ <line class="draw" pathLength="1" style="animation-delay:1.95s" x1="128" y1="108" x2="194" y2="146"/>
78
+ <line class="draw" pathLength="1" style="animation-delay:2.1s" x1="128" y1="108" x2="100" y2="166"/>
79
+ <line class="draw" pathLength="1" style="animation-delay:2.25s" x1="128" y1="108" x2="156" y2="166"/>
80
+ </g>
81
+
82
+ <g stroke="#1e1b4b" stroke-width="2.5">
83
+ <circle class="pop" style="animation-delay:1.1s" cx="96" cy="48" r="9" fill="#f472b6"/>
84
+ <circle class="pop" style="animation-delay:1.25s" cx="160" cy="48" r="8" fill="#22d3ee"/>
85
+ <circle class="pop" style="animation-delay:1.4s" cx="60" cy="70" r="8" fill="#22d3ee"/>
86
+ <circle class="pop" style="animation-delay:1.55s" cx="196" cy="70" r="9" fill="#f472b6"/>
87
+ <circle class="pop" style="animation-delay:1.7s" cx="48" cy="108" r="9" fill="#a78bfa"/>
88
+ <circle class="pop" style="animation-delay:1.85s" cx="208" cy="108" r="8" fill="#34d399"/>
89
+ <circle class="pop" style="animation-delay:2s" cx="62" cy="146" r="8" fill="#34d399"/>
90
+ <circle class="pop" style="animation-delay:2.15s" cx="194" cy="146" r="9" fill="#a78bfa"/>
91
+ <circle class="pop" style="animation-delay:2.3s" cx="100" cy="166" r="9" fill="#60a5fa"/>
92
+ <circle class="pop" style="animation-delay:2.45s" cx="156" cy="166" r="8" fill="#60a5fa"/>
93
+ </g>
94
+
95
+ <circle class="pulse" cx="128" cy="108" r="38" fill="url(#glow)"/>
96
+ <g class="pop" style="animation-delay:0.5s">
97
+ <circle cx="128" cy="108" r="15" fill="url(#leader)" stroke="#fffbeb" stroke-width="2"/>
98
+ <path d="M128 96 l3.2 7.8 8.3 0.6 -6.4 5.3 2 8.1 -7.1 -4.4 -7.1 4.4 2 -8.1 -6.4 -5.3 8.3 -0.6z" fill="#b45309" opacity="0.85"/>
99
+ </g>
100
+ </g>
101
+
102
+ <!-- words -->
103
+ <g class="fade" style="animation-delay:0.3s">
104
+ <text x="330" y="112" font-size="54" font-weight="800" fill="#ffffff" letter-spacing="-1">Brainiverse</text>
105
+ <text x="332" y="146" font-size="21" fill="#c7d2fe">The right minds for every mission.</text>
106
+ </g>
107
+
108
+ <g class="fade" style="animation-delay:0.8s">
109
+ <text x="332" y="196" font-size="13" font-weight="700" fill="#fcd34d" letter-spacing="2.5">YOUR MISSION</text>
110
+ </g>
111
+ <g font-size="22" font-weight="600" fill="#ffffff">
112
+ <text class="mission m1" x="332" y="228" style="animation-delay:1s">✈️ Plan two weeks in Japan</text>
113
+ <text class="mission" x="332" y="228" style="animation-delay:4s">🛠️ Build and ship a web app</text>
114
+ <text class="mission" x="332" y="228" style="animation-delay:7s">🔍 Is my startup idea worth it?</text>
115
+ </g>
116
+ <g class="fade" style="animation-delay:2.6s">
117
+ <text x="332" y="262" font-size="15" fill="#a5b4fc">→ a squad of real agents assembles, works in parallel, and reports back</text>
118
+ </g>
119
+ </g>
120
+ </svg>
@@ -0,0 +1,85 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="256" height="256" role="img" aria-labelledby="title desc">
2
+ <title id="title">Brainiverse</title>
3
+ <desc id="desc">A constellation shaped like a brain: a bright leader star at the centre, linked to a ring of agent stars, inside an orbit.</desc>
4
+ <defs>
5
+ <linearGradient id="space" x1="0" y1="0" x2="1" y2="1">
6
+ <stop offset="0" stop-color="#1e1b4b"/>
7
+ <stop offset="0.55" stop-color="#312e81"/>
8
+ <stop offset="1" stop-color="#5b21b6"/>
9
+ </linearGradient>
10
+ <radialGradient id="glow" cx="0.5" cy="0.5" r="0.5">
11
+ <stop offset="0" stop-color="#fde68a" stop-opacity="0.9"/>
12
+ <stop offset="0.35" stop-color="#f59e0b" stop-opacity="0.35"/>
13
+ <stop offset="1" stop-color="#f59e0b" stop-opacity="0"/>
14
+ </radialGradient>
15
+ <radialGradient id="leader" cx="0.4" cy="0.35" r="0.7">
16
+ <stop offset="0" stop-color="#fffbeb"/>
17
+ <stop offset="0.5" stop-color="#fcd34d"/>
18
+ <stop offset="1" stop-color="#f59e0b"/>
19
+ </radialGradient>
20
+ <clipPath id="badge">
21
+ <rect width="256" height="256" rx="56"/>
22
+ </clipPath>
23
+ </defs>
24
+
25
+ <g clip-path="url(#badge)">
26
+ <rect width="256" height="256" fill="url(#space)"/>
27
+
28
+ <!-- background stars -->
29
+ <g fill="#e0e7ff">
30
+ <circle cx="30" cy="40" r="1.6" opacity="0.7"/>
31
+ <circle cx="214" cy="30" r="1.3" opacity="0.6"/>
32
+ <circle cx="226" cy="206" r="1.8" opacity="0.6"/>
33
+ <circle cx="44" cy="214" r="1.2" opacity="0.5"/>
34
+ <circle cx="128" cy="22" r="1.1" opacity="0.5"/>
35
+ <circle cx="18" cy="128" r="1.1" opacity="0.5"/>
36
+ <circle cx="240" cy="120" r="1.2" opacity="0.5"/>
37
+ <circle cx="176" cy="236" r="1.1" opacity="0.4"/>
38
+ </g>
39
+
40
+ <!-- orbit -->
41
+ <ellipse cx="128" cy="128" rx="116" ry="38" fill="none" stroke="#a5b4fc" stroke-width="2.5" stroke-opacity="0.35" transform="rotate(-18 128 128)"/>
42
+ <circle cx="236" cy="96" r="5" fill="#a5b4fc" opacity="0.9"/>
43
+
44
+ <!-- brain silhouette: two lobes traced through the agent stars -->
45
+ <g fill="none" stroke="#c7d2fe" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" stroke-opacity="0.7">
46
+ <path d="M128 58 Q112 34 96 48 Q66 42 60 70 Q36 82 48 108 Q32 132 62 146 Q66 174 100 166 Q118 180 128 162"/>
47
+ <path d="M128 58 Q144 34 160 48 Q190 42 196 70 Q220 82 208 108 Q224 132 194 146 Q190 174 156 166 Q138 180 128 162"/>
48
+ <path d="M128 58 L128 162" stroke-dasharray="5 9" stroke-opacity="0.5"/>
49
+ <path d="M120 166 Q126 188 116 204" stroke-opacity="0.5"/>
50
+ </g>
51
+
52
+ <!-- links from the leader to every agent -->
53
+ <g stroke="#fde68a" stroke-width="2.5" stroke-opacity="0.7" stroke-linecap="round">
54
+ <line x1="128" y1="108" x2="96" y2="48"/>
55
+ <line x1="128" y1="108" x2="60" y2="70"/>
56
+ <line x1="128" y1="108" x2="48" y2="108"/>
57
+ <line x1="128" y1="108" x2="62" y2="146"/>
58
+ <line x1="128" y1="108" x2="100" y2="166"/>
59
+ <line x1="128" y1="108" x2="160" y2="48"/>
60
+ <line x1="128" y1="108" x2="196" y2="70"/>
61
+ <line x1="128" y1="108" x2="208" y2="108"/>
62
+ <line x1="128" y1="108" x2="194" y2="146"/>
63
+ <line x1="128" y1="108" x2="156" y2="166"/>
64
+ </g>
65
+
66
+ <!-- agents -->
67
+ <g stroke="#1e1b4b" stroke-width="2.5">
68
+ <circle cx="96" cy="48" r="9" fill="#f472b6"/>
69
+ <circle cx="60" cy="70" r="8" fill="#22d3ee"/>
70
+ <circle cx="48" cy="108" r="9" fill="#a78bfa"/>
71
+ <circle cx="62" cy="146" r="8" fill="#34d399"/>
72
+ <circle cx="100" cy="166" r="9" fill="#60a5fa"/>
73
+ <circle cx="160" cy="48" r="8" fill="#22d3ee"/>
74
+ <circle cx="196" cy="70" r="9" fill="#f472b6"/>
75
+ <circle cx="208" cy="108" r="8" fill="#34d399"/>
76
+ <circle cx="194" cy="146" r="9" fill="#a78bfa"/>
77
+ <circle cx="156" cy="166" r="8" fill="#60a5fa"/>
78
+ </g>
79
+
80
+ <!-- the leader -->
81
+ <circle cx="128" cy="108" r="38" fill="url(#glow)"/>
82
+ <circle cx="128" cy="108" r="15" fill="url(#leader)" stroke="#fffbeb" stroke-width="2"/>
83
+ <path d="M128 96 l3.2 7.8 8.3 0.6 -6.4 5.3 2 8.1 -7.1 -4.4 -7.1 4.4 2 -8.1 -6.4 -5.3 8.3 -0.6z" fill="#b45309" opacity="0.85"/>
84
+ </g>
85
+ </svg>
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env node
2
+ // npx entry point.
3
+ // npx brainiverse install [--project] [--force] copy the skill into Claude Code's skills folder
4
+ // npx brainiverse uninstall [--project]
5
+ // npx brainiverse doctor check the installation
6
+ // npx brainiverse <runtime command ...> anything else goes to the runtime CLI
7
+ import fs from "node:fs";
8
+ import os from "node:os";
9
+ import path from "node:path";
10
+ import { fileURLToPath, pathToFileURL } from "node:url";
11
+
12
+ const PACKAGE_DIR = path.dirname(path.dirname(fileURLToPath(import.meta.url)));
13
+ const SKILL_SOURCE = path.join(PACKAGE_DIR, "skill", "brainiverse");
14
+ const VERSION = JSON.parse(fs.readFileSync(path.join(PACKAGE_DIR, "package.json"), "utf8")).version;
15
+
16
+ function target(project) {
17
+ const base = project ? path.join(process.cwd(), ".claude", "skills") : path.join(os.homedir(), ".claude", "skills");
18
+ return path.join(base, "brainiverse");
19
+ }
20
+
21
+ function installedVersion(dir) {
22
+ try {
23
+ return fs.readFileSync(path.join(dir, ".version"), "utf8").trim();
24
+ } catch {
25
+ return null;
26
+ }
27
+ }
28
+
29
+ function install(flags) {
30
+ const dest = target(flags.has("--project"));
31
+ if (fs.existsSync(dest)) {
32
+ const current = installedVersion(dest);
33
+ if (!current) {
34
+ console.error(`error: ${dest} exists but was not installed by brainiverse; refusing to overwrite it.`);
35
+ return 1;
36
+ }
37
+ if (current === VERSION && !flags.has("--force")) {
38
+ console.log(`brainiverse ${VERSION} is already installed at ${dest} (use --force to reinstall).`);
39
+ return 0;
40
+ }
41
+ fs.rmSync(dest, { recursive: true, force: true });
42
+ }
43
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
44
+ fs.cpSync(SKILL_SOURCE, dest, { recursive: true });
45
+ fs.writeFileSync(path.join(dest, ".version"), VERSION + "\n");
46
+ fs.chmodSync(path.join(dest, "bin", "brainiverse.mjs"), 0o755);
47
+ console.log(`Installed brainiverse ${VERSION} to ${dest}`);
48
+ console.log("Restart Claude Code (or start a new session), then type /brainiverse or ask for a team.");
49
+ if (flags.has("--project")) console.log("Tip: add .brainiverse/ to this project's .gitignore.");
50
+ return 0;
51
+ }
52
+
53
+ function uninstall(flags) {
54
+ const dest = target(flags.has("--project"));
55
+ if (!fs.existsSync(dest)) {
56
+ console.log(`Nothing installed at ${dest}.`);
57
+ return 0;
58
+ }
59
+ if (!installedVersion(dest)) {
60
+ console.error(`error: ${dest} was not installed by brainiverse; remove it yourself if you mean to.`);
61
+ return 1;
62
+ }
63
+ fs.rmSync(dest, { recursive: true, force: true });
64
+ console.log(`Removed ${dest}. Mission data in .brainiverse/ folders was left untouched.`);
65
+ return 0;
66
+ }
67
+
68
+ function doctor() {
69
+ const [major, minor] = process.versions.node.split(".").map(Number);
70
+ const nodeOk = major > 18 || (major === 18 && minor >= 17);
71
+ console.log(`node ${process.versions.node} ${nodeOk ? "ok" : "— brainiverse needs >= 18.17"}`);
72
+ for (const project of [false, true]) {
73
+ const dest = target(project);
74
+ const version = installedVersion(dest);
75
+ console.log(`${project ? "project" : "user"} skill: ${fs.existsSync(path.join(dest, "SKILL.md")) ? `installed (${version ?? "unknown version"}) at ${dest}` : "not installed"}`);
76
+ }
77
+ const home = process.env.BRAINIVERSE_HOME || path.join(process.cwd(), ".brainiverse");
78
+ console.log(`workspace: ${fs.existsSync(home) ? home : `${home} (created on first use)`}`);
79
+ return nodeOk ? 0 : 1;
80
+ }
81
+
82
+ function help() {
83
+ console.log(`brainiverse ${VERSION} — the right minds for every mission
84
+
85
+ npx brainiverse install [--project] [--force] install the skill for Claude Code
86
+ (default: ~/.claude/skills; --project: ./.claude/skills)
87
+ npx brainiverse uninstall [--project] remove the skill
88
+ npx brainiverse doctor check node, install location, and workspace
89
+ npx brainiverse <command> ... run the runtime directly (try: npx brainiverse --help)`);
90
+ return 0;
91
+ }
92
+
93
+ const [command, ...rest] = process.argv.slice(2);
94
+ const flags = new Set(rest);
95
+ if (command === "install") process.exitCode = install(flags);
96
+ else if (command === "uninstall") process.exitCode = uninstall(flags);
97
+ else if (command === "doctor") process.exitCode = doctor();
98
+ else if (command === undefined || command === "help") process.exitCode = help();
99
+ else {
100
+ const { main } = await import(pathToFileURL(path.join(SKILL_SOURCE, "runtime", "cli.mjs")).href);
101
+ process.exitCode = main(process.argv.slice(2));
102
+ }
package/package.json CHANGED
@@ -1,6 +1,32 @@
1
1
  {
2
2
  "name": "brainiverse",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "The right minds for every mission: a customizable multi-agent AI team skill for Claude Code.",
5
+ "type": "module",
6
+ "bin": {
7
+ "brainiverse": "bin/brainiverse.mjs"
8
+ },
9
+ "files": [
10
+ "assets/",
11
+ "bin/",
12
+ "skill/",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "test": "node --test test/*.test.mjs"
18
+ },
19
+ "engines": {
20
+ "node": ">=18.17"
21
+ },
22
+ "keywords": [
23
+ "claude",
24
+ "claude-code",
25
+ "skill",
26
+ "agents",
27
+ "multi-agent",
28
+ "orchestration"
29
+ ],
30
+ "author": "saman",
31
+ "license": "MIT"
32
+ }