SuperAPI AI Directory

cognee-switch-datasets

Data & analytics

View repository

Updated 10-16 06:42

About this skill

Switch Datasets

Move this Claude Code session to a different Cognee dataset. A Cognee session never spans two datasets, so the switch retires the current session (after syncing it into the graph) and starts a new one on the chosen dataset.

Instructions

1. If the user named a dataset, switch directly

When $ARGUMENTS contains a dataset name, skip the picker:

python3 ${CLAUDE_PLUGIN_ROOT}/scripts/switch-dataset.py "$ARGUMENTS" --json

2. Otherwise, list and let the user choose

python3 ${CLAUDE_PLUGIN_ROOT}/scripts/switch-dataset.py --list --json

The JSON has current, datasets ([{name, id, writable, current}]), hidden_readonly (datasets you can read but not write — never offered) and filtered (true when write access was verified for every row).

Present the choice with AskUserQuestion (single select), listing the dataset names from datasets with the current one marked "(current)". The tool allows four options per question, so if there are more than four, put the first three plus a "More…" option and page on the next question. The user can always type a name via the built-in "Other" — a name that is not listed is created for them on switch. If filtered is false, say so in the question text ("write access could not be verified for these").

Then run the switch with the chosen name:

python3 ${CLAUDE_PLUGIN_ROOT}/scripts/switch-dataset.py "<chosen name>" --json

3. Report the result

On success the JSON is {"switched": true, "dataset", "session_id", "previous": {"dataset", "session_id", "synced": true|false}}. Tell the user in one line which dataset and Cognee session are now active and that the previous session was synced. The status line updates within a couple of seconds. If "switched": false with "reason": "already_active", say the session is already on that dataset.

On failure the JSON is {"error", "code"}:

code meaning what to do
2 launch record not found the plugin did not initialise this session; run ${CLAUDE_PLUGIN_ROOT}/scripts/cognee-doctor.sh. If several Claude Code sessions share this directory, rerun with --session-key <host session id>
3 syncing the current session failed nothing was changed; show the error. Re-run with --force only if the user explicitly accepts that unsynced entries of the current session are retried at session end instead
4 registering the new session failed nothing was changed; the server rejected the registration — check the connection
5 dataset not writable the name is readable but owned by another principal; pick from --list

What the switch does

  1. Syncs the current session into its dataset (sync-session-to-graph.py --strict) — aborts if this fails.
  2. Ensures the target dataset exists for this principal.
  3. Registers a new Cognee session on the target dataset under a fresh connection handle, then releases the old handle (register-then-unregister, so a local agent-mode server never sees zero connections).
  4. Repoints this launch's record: every hook, the shell wrappers, the idle/exit watchers and the status line follow it.
  5. Retired sessions stay in the record's touched list; the session-end sync covers them again as a safety net.

Notes

  • A switch is not needed just to look in another dataset: a one-off graph search leaves the session where it is — ${CLAUDE_PLUGIN_ROOT}/scripts/cognee-search.sh "<query>" 10 --graph --dataset-id <id> (see the cognee-search skill).

  • COGNEE_PLUGIN_DATASET only seeds the dataset at launch; a switch overrides it for the rest of the session and survives --resume.

  • Recall is scoped to the active dataset, so after a switch earlier context from the previous dataset is no longer injected — switch back to see it again.