Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when the user wants to drive cognee from the terminal with cognee-cli — remember/recall/forget/improve memory commands, managing datasets and config, or database migrations.
.claude/skills/topoteretes-cognee-cli/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -16% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 40% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 206% | 0% |
cognee-cli ships with the package (entry point in cognee/cli/_cognee.py; each command lives in cognee/cli/commands/). Every command has --help with examples — prefer that over guessing flags. Needs LLM_API_KEY configured, same as the SDK.
The memory commands are the primary surface as of cognee 1.x:
bashcognee-cli remember "Your text here" # also accepts file paths / URLs cognee-cli remember ./docs --dataset-name my_project cognee-cli recall "Your question" # query the graph cognee-cli recall "keyword" --query-type CHUNKS cognee-cli forget --all # wipe local state
remember is ingest + graph build in one step (add + cognify under the hood); --background/-b runs the cognify stage in the background, and --dry-run estimates LLM tokens/cost without ingesting. recall takes --datasets/-d, --top-k/-k (default 10), and --session-id/-s.
forget targets --dataset, --dataset-id, --data-id (needs a dataset), or --everything/--all — one unified command covering what delete, prune, and empty_dataset used to do separately.
> forget --all does not ask for confirmation. It deletes every dataset > immediately, even on a non-interactive stdin. The legacy delete --all > prompts Delete ALL data from cognee? [y/N] first, so switching to forget > silently drops that safety net — script it with care.
Search types match exactly 7 of the SDK's SearchType enum (cognee/modules/search/types/SearchType.py), those 7 being chosen in (cognee/cli/config.py:SEARCH_TYPE_CHOICES): GRAPH_COMPLETION, RAG_COMPLETION, CHUNKS, SUMMARIES, CODE, CYPHER, GRAPH_REPORT Others must be reached from the SDK, not CLI; e.g. call cognee.recall with query_type=SearchType.TEMPORAL
Note the CLI defaults --query-type to GRAPH_COMPLETION, whereas the SDK's cognee.recall() auto-routes when query_type is omitted.
Session entries are currently written from the SDK — cognee.remember(..., session_id="chat_1") — not the CLI (cognee-cli remember has no session flag). The CLI side of session memory is reading and bridging:
bashcognee-cli recall "question" -s chat_1 # session cache first: without -d/-t # this searches the session directly cognee-cli sessions get # retrieve session Q&A history cognee-cli improve -d my_project -s chat_1 # bridge session content into the graph cognee-cli improve -d my_project # enrich/index the graph (no session) cognee-cli feedback ... # attach feedback to results
improve also takes --node-name, --feedback-alpha (default 0.1), and --background/-b. remember/improve build their graphs through cognify(), so cognify-level settings (e.g. CONTRADICTION_DETECTION=true) apply to them too.
add, cognify, search, memify, and delete still ship and are what the memory commands call underneath. Use them only to drive a single stage in isolation; prefer remember/recall/forget/improve otherwise.
bashcognee-cli add "text" && cognee-cli cognify # what `remember` does in one step cognee-cli search "question" # `recall` minus routing/scope/session sources cognee-cli memify -d my_project # custom extraction/enrichment tasks cognee-cli delete --all # superseded by `forget --all`
bashcognee-cli datasets list # dataset operations cognee-cli config get [key] [--show-secrets] # view one/all settings (API keys masked by default) cognee-cli config set <key> <value> # set + persist to ./.env in the cwd cognee-cli config unset <key> # reset a key to its default (also persisted) cognee-cli -ui # launch API server + UI (see cognee-server skill) cognee-cli serve --url http://localhost:8000 # connect CLI/SDK to a running instance
bashcognee-cli upgrade # apply migrations cognee-cli downgrade cognee-cli history cognee-cli current
Typically needed after version upgrades when the server refuses to start on an old schema.
is slow (DB + model setup), later ones are fast.
remember (and add) without --dataset-name targets the default datasetmain_dataset; recall/search operate across your accessible datasets unless a dataset is given.
forget refuses to run bare — pass --dataset, --dataset-id, --data-id(with a dataset), or --everything/--all.
recall -s, sessions get, improve -s) requireCACHING=true (the default) — with it off, session reads return nothing and SDK session writes raise. To cut read latency and token cost while keeping session memory, cognee-cli config set AUTO_FEEDBACK false — by default cognee makes one structured-output LLM call per answered query to self-tune its memory.
memify requires one of the arguments -d/--dataset-name --dataset-idconfig set/config unset write to the .env file in whatever directoryyou run the command from (creating it if missing). config reset (reset all keys) is still not implemented.
.env actually wins is not always the cwd one. At import, cogneecalls dotenv.load_dotenv(override=True), which resolves relative to the cognee package location, not your working directory. In a source/editable checkout (uv pip install -e .) a .env at the repo root therefore shadows the .env in the directory you ran from — and because override=True, it also beats variables you exported. Symptom: config set appears to do nothing, or the CLI connects to a backend you thought you had overridden. To test against different settings, move the repo .env aside, or set values programmatically after import (cognee.config.set_*). (Under python -c the cwd .env does win, because dotenv falls back to the cwd when __main__ has no __file__ — which is why the same command can behave differently as a script vs. -c.)
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 19,679 | 8,365 | -57% | 1 | 1 | 0% | 2,817 | 2,372 | -16% | 0 | 0 | — |
case-02 | fail→pass | 15,955 | 9,917 | -38% | 1 | 1 | 0% | 1,983 | 2,680 | +35% | 0 | 0 | — |
case-03 | fail→pass | 14,351 | 8,496 | -41% | 1 | 1 | 0% | 1,685 | 2,352 | +40% | 0 | 0 | — |
case-04 | pass→pass | 15,744 | 9,224 | -41% | 1 | 1 | 0% | 1,737 | 2,491 | +43% | 0 | 0 | — |
case-05 | fail→pass | 13,361 | 8,510 | -36% | 1 | 1 | 0% | 1,609 | 2,408 | +50% | 0 | 0 | — |
case-06 | pass→pass | 15,512 | 7,493 | -52% | 1 | 1 | 0% | 1,964 | 2,155 | +10% | 0 | 0 | — |
case-07 | pass→pass | 21,699 | 12,231 | -44% | 1 | 1 | 0% | 2,866 | 3,196 | +12% | 0 | 0 | — |
case-08 | pass→pass | 12,016 | 6,847 | -43% | 1 | 1 | 0% | 1,286 | 2,051 | +59% | 0 | 0 | — |
case-09 | pass→pass | 13,291 | 7,711 | -42% | 1 | 1 | 0% | 1,404 | 2,204 | +57% | 0 | 0 | — |
case-10 | pass→pass | 17,630 | 6,957 | -61% | 1 | 1 | 0% | 2,239 | 2,008 | -10% | 0 | 0 | — |
case-11 | fail→pass | 8,933 | 6,948 | -22% | 1 | 1 | 0% | 644 | 1,970 | +206% | 0 | 0 | — |
case-12 | fail→pass | 14,317 | 7,277 | -49% | 1 | 1 | 0% | 1,738 | 2,082 | +20% | 0 | 0 | — |
case-13 | pass→pass | 13,760 | 7,112 | -48% | 1 | 1 | 0% | 1,652 | 2,035 | +23% | 0 | 0 | — |
case-14 | fail→pass | 15,515 | 7,299 | -53% | 1 | 1 | 0% | 2,173 | 2,085 | -4% | 0 | 0 | — |
case-15 | fail→pass | 14,750 | 7,598 | -48% | 1 | 1 | 0% | 1,805 | 2,187 | +21% | 0 | 0 | — |
case-16 | pass→pass | 9,206 | 7,082 | -23% | 1 | 1 | 0% | 766 | 2,066 | +170% | 0 | 0 | — |
case-17 | pass→pass | 15,790 | 6,557 | -58% | 1 | 1 | 0% | 1,893 | 1,884 | -0% | 0 | 0 | — |
case-18 | fail→pass | 12,771 | 7,458 | -42% | 1 | 1 | 0% | 1,280 | 2,110 | +65% | 0 | 0 | — |
case-19 | fail→pass | 15,573 | 7,296 | -53% | 1 | 1 | 0% | 1,878 | 2,148 | +14% | 0 | 0 | — |
case-20 | fail→pass | 18,302 | 10,898 | -40% | 1 | 1 | 0% | 2,165 | 2,880 | +33% | 0 | 0 | — |
case-21 | fail→pass | 18,608 | 10,294 | -45% | 1 | 1 | 0% | 2,158 | 2,513 | +16% | 0 | 0 | — |
case-22 | fail→pass | 15,871 | 10,896 | -31% | 1 | 1 | 0% | 1,837 | 2,601 | +42% | 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. 22 cases were attempted. The headline lift of +59 percentage points is the difference between those two pass rates over the 22 comparable cases.
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.