Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
.claude/skills/coco-research-brain-init/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 91% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -30% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 46% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 55% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 20% | 0% |
Sets up a new project_brain.db in the current working directory and bootstraps it from existing project knowledge.
Run:
bashpython3 ~/.claude/skills/brain/scripts/brain/brain_cli.py info
Run:
bashpython3 ~/.claude/skills/brain/scripts/brain/brain_cli.py init
Ask the user:
Then run:
bashpython3 ~/.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.
Run the scanner to discover what's available:
bashpython3 ~/.claude/skills/brain/scripts/brain/brain_cli.py scan
This returns a JSON report with:
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 filesIf nothing to process (all unchanged): "Everything up to date. No new knowledge to extract." → done.
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.
If found, read the full file. Extract:
decisions (with date, decision text, decided_by if mentioned)person entities (with metadata like role, email, team if mentioned)system entities (e.g., Snowflake, Postgres, Datadog)team entitiesdocument entities for key docsevents (with date, type, title)Each memory file has frontmatter (name, description, type) and content. Read each file:
decisions or context to enrich existing entitiessystem or document entities with metadataFor each file in docs/, emails/, and Reference Doc/:
document entity with metadata: {"path": "relative/path", "type": "doc|email|reference", "size": N}Same extraction as CLAUDE.local.md but lower priority (may overlap).
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: NNAsk: "Write all to brain? Y/n/adjust]"
On confirmation, write in this order using Python:
pythonimport sys sys.path.insert(0, '$HOME/.claude/skills/brain/scripts') from brain.schema import get_db from brain.operations import *
upsert_entity (idempotent, safe to re-run)create_relationship (also idempotent)create_decision (check for duplicates by matching decision text before inserting)create_event (check for duplicates by matching title + date)upsert_entity with type="document"After all writes, sync to MemPalace and brain.json:
pythonfrom brain.memory_bridge import full_sync full_sync("project_brain.db", project_slug)
After writes complete, update the manifest:
bashpython3 ~/.claude/skills/brain/scripts/brain/brain_cli.py scan-update
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.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:
pythonimport 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:
pythonengine.full_refresh("{slug}")
Or equivalently via CLI:
bashpython3 ~/.coco/knowledge/cron.py --run --project {slug} --phases 2,3,5
This runs:
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)cron.py call fails for any reason (non-blocking — brain init still succeeds)upsert_entity which handles this automatically for entities./brain-update is for (conversation-driven).type field to decide what to extract.scan-update after writes so the next scan is incremental.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | fail→fail | 8,824 | 14,713 | +67% | 1 | 1 | 0% | 498 | 2,312 | +364% | 0 | 0 | — |
case-05 | fail→fail | 15,232 | 4,867 | -68% | 1 | 1 | 0% | 365 | 2,306 | +532% | 0 | 0 | — |
case-06 | fail→fail | 2,422 | 8,182 | +238% | 1 | 1 | 0% | 401 | 2,470 | +516% | 0 | 0 | — |
case-07 | fail→pass | 8,654 | 9,349 | +8% | 1 | 1 | 0% | 1,426 | 2,722 | +91% | 0 | 0 | — |
case-01 | fail→fail | 11,600 | 10,681 | -8% | 1 | 1 | 0% | 866 | 2,387 | +176% | 0 | 0 | — |
case-02 | fail→fail | 13,836 | 17,556 | +27% | 1 | 1 | 0% | 611 | 2,372 | +288% | 0 | 0 | — |
case-03 | fail→fail | 11,737 | 26,070 | +122% | 1 | 1 | 0% | 1,153 | 3,241 | +181% | 0 | 0 | — |
case-21 | fail→fail | 18,893 | 6,863 | -64% | 1 | 1 | 0% | 2,009 | 2,398 | +19% | 0 | 0 | — |
case-08 | fail→pass | 24,064 | 7,484 | -69% | 1 | 1 | 0% | 3,476 | 2,450 | -30% | 0 | 0 | — |
case-09 | fail→pass | 11,868 | 9,809 | -17% | 1 | 1 | 0% | 1,968 | 2,882 | +46% | 0 | 0 | — |
case-10 | fail→pass | 15,479 | 9,840 | -36% | 1 | 1 | 0% | 1,902 | 2,943 | +55% | 0 | 0 | — |
case-11 | fail→pass | 17,345 | 7,404 | -57% | 1 | 1 | 0% | 2,057 | 2,470 | +20% | 0 | 0 | — |
case-12 | fail→pass | 10,225 | 9,515 | -7% | 1 | 1 | 0% | 835 | 2,816 | +237% | 0 | 0 | — |
case-13 | pass→pass | 11,865 | 9,373 | -21% | 1 | 1 | 0% | 994 | 2,832 | +185% | 0 | 0 | — |
case-14 | pass→pass | 13,390 | 9,336 | -30% | 1 | 1 | 0% | 2,540 | 2,910 | +15% | 0 | 0 | — |
case-15 | fail→pass | 7,953 | 2,671 | -66% | 1 | 1 | 0% | 1,231 | 2,575 | +109% | 0 | 0 | — |
case-16 | fail→pass | 10,525 | 3,900 | -63% | 1 | 1 | 0% | 1,755 | 2,621 | +49% | 0 | 0 | — |
case-17 | fail→pass | 20,344 | 14,093 | -31% | 1 | 1 | 0% | 2,616 | 3,743 | +43% | 0 | 0 | — |
case-18 | pass→pass | 5,962 | 6,694 | +12% | 1 | 1 | 0% | 944 | 2,359 | +150% | 0 | 0 | — |
case-19 | fail→pass | 20,529 | 7,941 | -61% | 1 | 1 | 0% | 2,293 | 2,588 | +13% | 0 | 0 | — |
case-20 | fail→pass | 9,859 | 7,696 | -22% | 1 | 1 | 0% | 1,867 | 2,474 | +33% | 0 | 0 | — |
case-22 | fail→pass | 6,098 | 8,315 | +36% | 1 | 1 | 0% | 828 | 2,771 | +235% | 0 | 0 | — |
case-23 | fail→pass | 25,414 | 2,994 | -88% | 1 | 1 | 0% | 1,605 | 2,620 | +63% | 0 | 0 | — |
case-24 | fail→pass | 16,013 | 8,065 | -50% | 1 | 1 | 0% | 1,742 | 2,599 | +49% | 0 | 0 | — |
case-25 | fail→fail | 12,835 | 5,390 | -58% | 1 | 1 | 0% | 1,173 | 2,990 | +155% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted, and 20 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +56 percentage points is the difference between those two pass rates over the 20 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.