coco-research/brain:update
End-of-session brain flush. Scans the full conversation, extracts all new entities, decisions, tasks, events, relationships, and updates, presents a summary, and writes to project_brain.db after confirmation. Use at end of every session or when you want to capture everything discussed.
npx skills add https://github.com/coco-research/coco --skill brain:update
This is a forcing function. When invoked, Claude MUST thoroughly review the entire conversation and write everything learned to the brain DB. No shortcuts, no skipping.
Look for project_brain.db in the current working directory or parent dirs. If not found, error: "No brain DB found. Run /brain init first."
CRITICAL --- the user runs multiple terminal sessions in parallel. Another session may have already written to the brain since this conversation started. Before extracting, read the current DB state:
python3 ~/.claude/skills/brain/scripts/brain/brain_cli.py context {slug}
For each project, note:
Conflict rules:
Show any conflicts detected:
CROSS-SESSION CONFLICTS
=======================
Task "Get sandbox access" --- brain says "done" (updated by another session),
this session would set "open". KEEPING "done".
Decision "Use Stakeholder role..." --- already in brain. SKIPPING.
Go through every message from top to bottom. For EACH project in the brain DB, extract:
| Category | What to look for |
|----------|-----------------|
| New entities | Any person, team, role, system, module, or org mentioned for the first time |
| New relationships | Connections discovered: X owns Y, A reports to B, team scoped to module |
| New decisions | Anything decided, agreed, confirmed, resolved, or ruled out |
| New events | Meetings, calls, emails read, milestones, deployments |
| New tasks | Action items, to-dos, next steps, follow-ups, blockers identified |
| Task updates | Existing tasks that changed status (started, completed, blocked, cancelled) |
| Entity updates | New info about existing entities (role change, new metadata, correction) |
| Thread updates | New items to link to existing threads, or new threads to create |
The user invoked /brain-update --- that IS the confirmation. Do NOT ask "Write all to brain?" or wait for approval. Just do it.
Use Python to write all items via the brain operations module:
import sys
sys.path.insert(0, '$HOME/.claude/skills/brain/scripts')
from brain.schema import get_db
from brain.operations import *
Write in this order:
BRAIN UPDATED
=============
Entities: +3 (total: 47)
Relationships: +1 (total: 37)
Tasks: +2, ~3 updated (total: 8)
Decisions: +1 (total: 4)
Events: +1 (total: 3)
Threads: 1 updated (total: 1)
Synced to: MemPalace (N drawers), brain.json (N people)
After all brain DB writes complete, run the memory bridge to sync new knowledge to the other memory stores:
from brain.memory_bridge import full_sync
full_sync(db_path, project_slug)
This:
The sync is automatic. No user confirmation needed for this step.
After brain DB writes complete and full_sync runs (Step 6b), incrementally update
knowledge articles for entities whose evidence has changed in this session.
Collect changed entity IDs from the writes performed in Step 3 (entities upserted,
decisions/events written). Pass these to the knowledge engine for targeted refresh:
import sys, os
sys.path.insert(0, os.path.expanduser("~/.coco/knowledge"))
from engine import KnowledgeEngine
engine = KnowledgeEngine()
# changed_entity_ids = list of brain DB entity IDs written in this session
engine.incremental_update(project_slug, changed_entity_ids)
Or equivalently via CLI (re-harvests all entities but only regenerates stale ones):
python3 ~/.coco/knowledge/cron.py --run --project {slug} --phases 2,3,5
Only articles whose source_hash changed are regenerated. Expected: 1–5 article
regenerations per typical session. Estimated cost: ~$0.01.
Show result inline in the existing brain-update summary block:
BRAIN UPDATED
=============
Entities: +3 (total: 47)
Relationships: +1 (total: 37)
Tasks: +2, ~3 updated (total: 8)
Decisions: +1 (total: 4)
Events: +1 (total: 3)
Threads: 1 updated (total: 1)
Synced to: MemPalace (N drawers), brain.json (N people)
Knowledge: N articles refreshed (N new entities, N updated)
Skip silently if:
~/.coco/knowledge/ does not exist (knowledge engine not installed)cron.py is unavailable or returns a non-zero exit codeupsert_entity which matches on (project_id, type, name) or (project_id, type, external_id).Take coco-research/brain:update from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.