Brain init
Meet Coco. A superintelligent agent framework powered by an advisory board of 389 world-class minds. Scale your AI assistant into a complete engineering department with 142 skills, 277 commands, and persistent state. Universal compatibility. Local privacy. Free and open source.
npx -y skills add coco-research/coco --skill brain-initAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
What its author says it does
Copied from the file, not written here
Initialize a project_brain.db in the current project folder. Creates the database, project record, then scans existing files (CLAUDE.local.md, memory files, docs, emails) to bootstrap the brain with knowledge. Smart enough to handle re-runs — skips what already exists and only processes new/changed files.
SKILL.md
7.9 KB, as published. Nobody here has run it
/brain:init --- Initialize Project Brain
Sets up a new project_brain.db in the current working directory and bootstraps it from existing project knowledge.
Procedure
Step 1: Check existing state
Run:
python3 ~/.claude/skills/brain/scripts/brain/brain_cli.py info
- If no DB exists → proceed to Step 2 (full init)
- If DB exists with project(s) → skip to Step 3 (scan only). Tell user: "Brain already initialized. Running scan for new/changed files..."
Step 2: Create the database and project record
Run:
python3 ~/.claude/skills/brain/scripts/brain/brain_cli.py init
Ask the user:
- Project name (e.g., "My Project A", "My Project B")
- Slug (short URL-safe identifier, e.g., "my-project-a", "my-project-b")
- Description (one-liner)
Then run:
python3 ~/.claude/skills/brain/scripts/brain/brain_cli.py add-project "{name}" --slug {slug} --desc "{description}"
If the project has sub-scopes (like ProjectA-Phase1 and ProjectA-Phase2 under one umbrella), ask if the user wants multiple project records.
Step 3: Scan the project folder
Run the scanner to discover what's available:
python3 ~/.claude/skills/brain/scripts/brain/brain_cli.py scan
This returns a JSON report with:
- manifest_diff: new/changed/unchanged file counts, whether this is the first scan
- files_to_process: paths of new or changed files
- knowledge_sources: which CLAUDE.local.md, memory files, docs, and emails were found
Show the user a summary:
FOLDER SCAN
===========
First scan: yes/no
Files found: NN total (NN new, NN changed, NN unchanged)
Knowledge sources detected:
CLAUDE.local.md: found / not found
CLAUDE.md: found / not found
Memory files: N files (list names)
Documents: N files in docs/
Emails: N files in emails/
Reference docs: N files
If nothing to process (all unchanged): "Everything up to date. No new knowledge to extract." → done.
Step 4: Extract knowledge from sources (Claude-driven)
Process sources in priority order. For each source, read the file, extract structured knowledge, and collect proposed writes. Do NOT write to the brain yet — collect everything first.
Priority 1: CLAUDE.local.md
If found, read the full file. Extract:
- Sections like "Key Decisions" →
decisions(with date, decision text, decided_by if mentioned) - People mentioned by name →
personentities (with metadata like role, email, team if mentioned) - Systems/tools mentioned →
systementities (e.g., Snowflake, Postgres, Datadog) - Teams mentioned →
teamentities - Folder structure sections →
documententities for key docs - Recent Changes entries →
events(with date, type, title)
Priority 2: Memory files (~/.claude/projects/.../memory/*.md)
Each memory file has frontmatter (name, description, type) and content. Read each file:
- project type memories →
decisionsor context to enrich existing entities - feedback type memories → skip (these are Claude behavior guidance, not project knowledge)
- reference type memories →
systemordocumententities with metadata
Priority 3: Document inventory
For each file in docs/, emails/, and Reference Doc/:
- Create a
documententity with metadata:{"path": "relative/path", "type": "doc|email|reference", "size": N} - Use the filename (cleaned) as the entity name
- Do NOT read the full content of every file — just register them in the inventory
Priority 4: CLAUDE.md (project-level, if exists)
Same extraction as CLAUDE.local.md but lower priority (may overlap).
Step 5: Present extraction summary
Show proposed writes:
BRAIN BOOTSTRAP SUMMARY
========================
Project: {name} ({slug})
From CLAUDE.local.md:
Entities: N (list: name [type])
Decisions: N (list: short text)
Events: N (list: title)
From memory files:
Decisions: N (list: short text)
Entities: N (list: name [type])
Document inventory:
Documents: N (list: filename [doc|email|reference])
Total proposed writes: NN
Ask: "Write all to brain? [Y/n/adjust]"
Step 6: Execute writes
On confirmation, write in this order using Python:
import sys
sys.path.insert(0, '$HOME/.claude/skills/brain/scripts')
from brain.schema import get_db
from brain.operations import *
- Entities — use
upsert_entity(idempotent, safe to re-run) - Relationships — use
create_relationship(also idempotent) - Decisions — use
create_decision(check for duplicates by matching decision text before inserting) - Events — use
create_event(check for duplicates by matching title + date) - Document entities — use
upsert_entitywith type="document"
After all writes, sync to MemPalace and brain.json:
from brain.memory_bridge import full_sync
full_sync("project_brain.db", project_slug)
After writes complete, update the manifest:
python3 ~/.claude/skills/brain/scripts/brain/brain_cli.py scan-update
Step 7: Report
BRAIN INITIALIZED
=================
DB: {path}/project_brain.db
Project: {name} ({slug})
Schema: v1 (11 tables)
Bootstrapped from existing knowledge:
Entities: +N (total: N)
Decisions: +N (total: N)
Events: +N (total: N)
Documents: +N (total: N)
Relationships: +N (total: N)
Manifest updated: N files tracked
Next: Run /brain-update at end of session, or /brain-rescan when files change.
Step 8: Generate knowledge articles
After completing brain writes (Step 6) and confirming the manifest is updated (Step 6 scan-update), initialize the knowledge engine for this project.
First, register the project with the knowledge engine:
import sys, os
sys.path.insert(0, os.path.expanduser("~/.coco/knowledge"))
from engine import KnowledgeEngine
engine = KnowledgeEngine()
engine.register_project("{slug}", os.path.abspath("project_brain.db"))
This is required before the cron can harvest the project. (FIX M1: register_project must be called before running any cron phases.)
Then, bootstrap article generation:
engine.full_refresh("{slug}")
Or equivalently via CLI:
python3 ~/.coco/knowledge/cron.py --run --project {slug} --phases 2,3,5
This runs:
- Phase 2 (harvest evidence from the brain DB you just populated + infer relationships)
- Phase 3 (generate articles for all entities — first run will generate all)
- Phase 5 (FTS5 index the new articles)
Show the user:
KNOWLEDGE ENGINE
================
Articles generated: N
FTS5 indexed: N
Estimated cost: $0.XXX
Articles written to: ~/.coco/knowledge/articles/
Search with: /brain-wiki search "{project_name}"
Skip this step silently if:
~/.coco/knowledge/does not exist (knowledge engine not installed)- The
cron.pycall fails for any reason (non-blocking — brain init still succeeds)
Important Rules
- Dedup before writing. Always check what exists in the DB before proposing new writes. Use
upsert_entitywhich handles this automatically for entities. - Don't read every file. For doc inventory, just register the file — don't parse 130KB HTML files to extract content. That's what
/brain-updateis for (conversation-driven). - Date everything. Decisions and events need dates. Parse from the source if available, fall back to file modification date, then today.
- Memory files are structured. They have frontmatter — use the
typefield to decide what to extract. - Manifest tracks scan state. Always run
scan-updateafter writes so the next scan is incremental.