Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when the user needs something that ships outside cognee core — community database adapters (Qdrant, Milvus, Weaviate, Redis, Pinecone, FalkorDB, Memgraph, DuckDB, NetworkX, …), data-source connectors (Slack, Gmail, Notion, Confluence, Google Drive), custom tasks/pipelines/retrievers (Exa, ScrapeGraph, codify), Keywords AI observability — or wants to contribute a package to the cognee-community repo.
.claude/skills/topoteretes-cognee-community/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -11% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 51% | 0% |
Community-maintained plugins live in a separate monorepo: https://github.com/topoteretes/cognee-community. Everything installable is under packages/; experimental/ holds demos (n8n nodes, dlt demos, bauplan, tower) that are not published packages. Each package publishes to PyPI as cognee-community-<family>-<kind>-<name> and imports as the same name with underscores.
| Family | Packages | |---|---| | Vector adapters | azureaisearch, milvus, moss, opengauss, opensearch, pinecone, qdrant, redis, singlestore, turbopuffer, valkey, weaviate | | Graph adapters | arcadedb, memgraph, networkx, pggraph, spanner, turbopuffer, turingdb | | Hybrid (graph+vector in one DB) | arcadedb, duckdb, falkordb, helixdb | | Connectors (data sources) | confluence, gmail, google-drive, notion, slack | | Tasks / pipelines / retrievers | codify_tasks, codify_pipeline, code_retriever, exa_tasks, scrapegraph_tasks | | Observability | keywordsai (MONITORING_TOOL=keywordsai + KEYWORDSAI_API_KEY) |
Install, then import the package's register module before cognee touches any engine — registration is what makes the provider name valid:
pythonuv pip install cognee-community-vector-adapter-qdrant
pythonimport cognee from cognee import config from cognee_community_vector_adapter_qdrant import register # noqa: F401 config.set_vector_db_config({ "vector_db_provider": "qdrant", "vector_db_url": "http://localhost:6333", "vector_db_key": "...", "vector_dataset_database_handler": "qdrant", # only if the adapter ships one })
The register.py calls use_vector_adapter(name, AdapterClass) / use_graph_adapter(...). Setting VECTOR_DB_PROVIDER/GRAPH_DATABASE_PROVIDER to a community name without the register import raises "Unsupported vector database provider". Hybrid adapters (e.g. falkordb) register as both graph and vector — set both configs to the same provider name.
Multi-tenancy caveat: with ENABLE_BACKEND_ACCESS_CONTROL=true (the default), both backends must have a dataset-database handler or cognee raises EnvironmentError. Community adapters that ship one (registered via use_dataset_database_handler in their register.py): qdrant, moss, singlestore, turbopuffer (vector + graph), falkordb, arcadedb, helixdb. All other community adapters need ENABLE_BACKEND_ACCESS_CONTROL=false.
Connectors expose a dlt source you hand straight to remember(); they reuse core's DLT ingestion path, so snapshot sync and forget-on-delete work with no core changes:
pythonfrom cognee_community_connector_slack import slack_export_source await cognee.remember( slack_export_source("/path/to/slack-export"), dataset_name="team-slack-export", # use a dedicated dataset max_rows_per_table=0, )
Same shape for gmail ("ask my inbox"), notion, confluence, and google-drive (incremental, forget-on-delete). Each package README documents its credentials; always give a connector its own dataset.
Every package has examples/example.py (run uv run python examples/example.py from the package dir) and a tests/ directory. An LLM API key is still required (LLM_API_KEY, OpenAI by default).
main — unlike the core repo, cognee-community does notuse a dev branch.
packages/<family>/<name>/with pyproject.toml, a README.md (install + usage), examples/example.py, and tests/ that go beyond the example.
VectorDBInterface / GraphDBInterface fromcore, expose a register.py, and should run the shared conformance tests in packages/shared/contract_suite/ (vector_contract.py / graph_contract.py).
use_dataset_database_handler(...) if the backend canisolate per user+dataset — that's what makes it work with access control on.
cognee-community-<family>-<kind>-<name> and add it to the tablesin the repo README. Lint config is the repo-root ruff.toml.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-13 | fail→pass | 17,349 | 11,358 | -35% | 1 | 1 | 0% | 2,209 | 2,435 | +10% | 0 | 0 | — |
case-01 | fail→pass | 24,144 | 15,045 | -38% | 1 | 1 | 0% | 3,449 | 3,215 | -7% | 0 | 0 | — |
case-02 | fail→pass | 21,340 | 11,852 | -44% | 1 | 1 | 0% | 2,830 | 2,508 | -11% | 0 | 0 | — |
case-03 | fail→pass | 21,564 | 18,191 | -16% | 1 | 1 | 0% | 3,179 | 3,838 | +21% | 0 | 0 | — |
case-04 | fail→pass | 17,063 | 17,254 | +1% | 1 | 1 | 0% | 2,266 | 3,427 | +51% | 0 | 0 | — |
case-05 | pass→pass | 12,177 | 10,274 | -16% | 1 | 1 | 0% | 1,291 | 2,089 | +62% | 0 | 0 | — |
case-06 | pass→pass | 17,619 | 16,409 | -7% | 1 | 1 | 0% | 2,257 | 3,223 | +43% | 0 | 0 | — |
case-07 | fail→pass | 18,459 | 14,269 | -23% | 1 | 1 | 0% | 2,649 | 3,116 | +18% | 0 | 0 | — |
case-08 | fail→pass | 16,571 | 7,460 | -55% | 1 | 1 | 0% | 1,950 | 1,592 | -18% | 0 | 0 | — |
case-09 | fail→pass | 18,916 | 12,029 | -36% | 1 | 1 | 0% | 2,315 | 2,526 | +9% | 0 | 0 | — |
case-10 | fail→pass | 19,980 | 7,174 | -64% | 1 | 1 | 0% | 2,671 | 1,509 | -44% | 0 | 0 | — |
case-11 | fail→pass | 16,086 | 9,362 | -42% | 1 | 1 | 0% | 2,002 | 1,996 | -0% | 0 | 0 | — |
case-12 | fail→pass | 18,026 | 9,185 | -49% | 1 | 1 | 0% | 2,101 | 1,908 | -9% | 0 | 0 | — |
case-14 | fail→pass | 13,943 | 7,662 | -45% | 1 | 1 | 0% | 1,355 | 1,603 | +18% | 0 | 0 | — |
case-15 | fail→pass | 14,089 | 6,672 | -53% | 1 | 1 | 0% | 1,445 | 1,405 | -3% | 0 | 0 | — |
case-16 | fail→pass | 13,039 | 7,819 | -40% | 1 | 1 | 0% | 1,243 | 1,655 | +33% | 0 | 0 | — |
case-17 | fail→pass | 11,085 | 7,475 | -33% | 1 | 1 | 0% | 1,006 | 1,555 | +55% | 0 | 0 | — |
case-18 | fail→pass | 13,752 | 9,408 | -32% | 1 | 1 | 0% | 1,331 | 1,953 | +47% | 0 | 0 | — |
case-19 | fail→pass | 23,978 | 11,395 | -52% | 1 | 1 | 0% | 3,206 | 2,182 | -32% | 0 | 0 | — |
case-20 | pass→pass | 17,056 | 10,603 | -38% | 1 | 1 | 0% | 2,018 | 2,209 | +9% | 0 | 0 | — |
case-21 | fail→pass | 22,923 | 11,794 | -49% | 1 | 1 | 0% | 2,859 | 2,293 | -20% | 0 | 0 | — |
case-22 | fail→pass | 16,310 | 10,946 | -33% | 1 | 1 | 0% | 1,810 | 2,251 | +24% | 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 +86 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.