一键导入
brain
Query/store cross-project knowledge in Shared Brain.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Query/store cross-project knowledge in Shared Brain.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | brain |
| description | Query/store cross-project knowledge in Shared Brain. |
| effort | fast |
| context | inline |
Conversational front-end for the TAUSIK Shared Brain — a cross-project knowledge store (Notion-backed) that sits alongside the per-project .tausik/tausik.db. Read-path and write-path both exist as MCP tools; this skill wraps them with a UX that doesn't require remembering tool names or flag sets.
ARCHITECTURE — read this before running
brain init:The Shared Brain is ONE set of 4 Notion databases per workspace, shared by ALL projects. Categories:
decisions,patterns,gotchas,web_cache. Per-project privacy is enforced via theSource Project Hashcolumn on every row, NOT by giving each project its own copies of the four databases.If a project's
.tausik/config.jsondoes not yet have brain configured but the user already has BRAIN databases in their Notion workspace from another project, DO NOT run plainbrain init— that creates a SECOND independent set, splitting the knowledge store in two. Usetausik brain init --join-existinginstead. The wizard auto-discovers canonical-titled BRAIN databases via Notion search; pass explicit--decisions-id / --web-cache-id / --patterns-id / --gotchas-idonly if auto-discovery fails (e.g. the integration was not invited to the existing parent page).
--force-createexists as an escape hatch for the rare case of an intentional brand-new workspace (different Notion account/integration). Default refuses to create duplicates.
When to use: user asks you to search or save knowledge that applies across projects (generalizable decisions, reusable patterns, cross-cutting gotchas, cached web fetches).
When NOT to use: project-specific memory — use tausik memory add instead. The Memory Policy rule is strict: project traces stay local, only generalizable knowledge goes to the brain.
$ARGUMENTS = "query <text>" or just <text>Search the brain and return the top hits.
brain_search MCP tool with query=<text>. Optional args: category (one of decisions, web_cache, patterns, gotchas), limit (default 10), use_notion_fallback=true (default).brain_mcp_read.format_search_results already formats each hit as a short block with the notion_page_id, name, category, and a snippet..tausik/tausik search "<text>".Examples:
/brain query notion rate limits → decisions + gotchas + web_cache across projects/brain query --category=patterns async retry → only patterns db$ARGUMENTS = "store <decision|pattern|gotcha> <text>" Save a record to the brain.
.tausik/tausik decide "<text>" --rationale "<why>" — the auto-routing classifier decides between local-only and brain based on content markers (src paths, project names, etc.). Don't bypass the classifier unless the user explicitly says --scope brain.brain_store_pattern with name, description, when_to_use, example, tags[], stack[].brain_store_gotcha with name, description, wrong_way, right_way, severity, tags[], stack[].brain_mcp_write.format_store_result. Scrub blocks list detector names only — never surface the raw matched text to the user, it may carry the PII/project-name that triggered the block..tausik/tausik memory add <type> "<title>" "<content>".Examples:
/brain store decision "Prefer HTTP/2 with ALPN over manual SPDY negotiation"/brain store pattern "Exponential backoff with jitter"/brain store gotcha "Notion FTS5 treats hyphens as column operators"$ARGUMENTS = "show <notion_page_id> [<category>]"Render a single record in full.
brain_get MCP tool with id=<notion_page_id> and category=<decisions|patterns|gotchas|web_cache>. If category is omitted, ask the user — brain_get requires both.brain_mcp_read.format_record.$ARGUMENTS = "move <id> --to-brain --kind <decision|pattern|gotcha>" or "move <notion_page_id> --to-local --category <decisions|patterns|gotchas>"Move a record between local TAUSIK and the shared brain. Useful when a record landed in the wrong store and should be reclassified.
.tausik/tausik brain move <id> --to-brain --kind <kind> [--keep-source] for local→brain..tausik/tausik brain move <notion_page_id> --to-local --category <category> [--force] [--keep-source] for brain→local.--to-local refuses when the brain row's source_project_hash doesn't match the current project. Override with --force (you'll claim another project's data — rarely correct).web_cache cannot be moved to local (no counterpart table). The CLI refuses.--keep-source is passed. For --to-local, the Notion page is archived (pages.update(archived=true)) and the mirror row deleted.Examples:
/brain move 42 --to-brain --kind decision — promote local decision #42 to the shared brain/brain move npg-abc123 --to-local --category patterns — pull a brain pattern back into local memory/brain move 7 --to-brain --kind gotcha --keep-source — copy without deleting the local row$ARGUMENTS = "status"Snapshot brain health: enabled flag, mirror path/size/last-modified, per-category row counts and last_pull_at / last_error from sync_state, registered projects, last web_cache write.
.tausik/tausik brain status — returns markdown..tausik/tausik brain status --json (same data structure as brain_status.collect_status()).tausik brain init to enable.Examples:
/brain status → human-readable health report/brain status --json → JSON for piping into another tool$ARGUMENTS = "" or "help"Print a four-line usage reminder (query / store / show / status) and link to docs/en/shared-brain.md.
Two user-controlled escape hatches to know about:
refresh: web_cache — put this on a line by itself in your next prompt to force a network WebFetch/WebSearch even when brain_search_proactive would block on a fresh cache hit. See scripts/hooks/brain_search_proactive.py.confirm: cross-project — put this on a line by itself to allow a Write/Edit into ~/.claude/projects/*/memory/ from inside a TAUSIK project. Project-specific content should use tausik memory add instead; this marker exists only for genuine cross-project user preferences.Markers are anchored — they must sit on a line of their own, outside fenced code blocks and outside 4+-space indented blocks. Quoting the hook's own error text in a fenced block will NOT re-enable the bypass.
If brain.enabled=false in the project config, every subcommand short-circuits with a "not configured" message.
First, ASK the user before running any command. Two paths:
User already has BRAIN databases in another project's Notion workspace — wire this project to them with tausik brain init --join-existing. The wizard auto-discovers the canonical 4 databases via Notion search. If auto-discovery fails (integration not shared on the parent page), pass explicit IDs: --decisions-id ... --web-cache-id ... --patterns-id ... --gotchas-id .... This is the common case when adding TAUSIK to a second/third project.
User has no BRAIN at all yet — tausik brain init --parent-page-id <id> creates the 4 databases under the supplied parent page. The Notion integration token must be set per docs/{en,ru}/shared-brain.md (env var, .tausik/.env, or inline in config.json — cascade resolution).
NEVER guess. If you don't know whether the user already has BRAIN somewhere, ask. Creating duplicate sets of 4 databases in the same workspace silently splits the knowledge store; the wizard's pre-flight workspace search will refuse this by default but only --force-create overrides — agents must not invent that flag without explicit user instruction.
Setup docs: docs/en/shared-brain.md (EN), docs/ru/shared-brain.md (RU). Schema reference: docs/en/brain-db-schema.md.
All four subcommands are now implemented: query, store, show, move, status. See examples above for usage.
brain_search, brain_get, brain_store_*) or an existing CLI (.tausik/tausik decide, .tausik/tausik search, .tausik/tausik memory add). If a subcommand doesn't exist, say so.brain_mcp_write.store_record returns issues: list[dict] with a match key that may contain the PII/project-name that triggered the block. Surface detector names only — that's what _format_scrub_detectors in brain_runtime.py does for CLI callers.show. brain_get needs both id and category; the local mirror table is picked by category. Guess wrong → empty result with a misleading warning.tausik decide defaults to local when content has project markers (abs paths, src refs, kebab slugs, .tausik/tausik commands). Force brain only with --scope brain if you're sure the content is generalizable.private_url_patterns regex list catches some of this, but don't rely on it).Save session snapshot — handoff + CLAUDE.md update.
Create a standardized git commit.
Debug a bug — reproduce, isolate root cause, fix.
End session — handoff + decisions + CLAUDE.md.
Time-boxed SENAR investigation before a task.
Socratic Q&A — ≤3 questions before a complex task.