Cosmos DB Provider

SkillCloud & infra

Your AI gains working knowledge of how the EF Core Azure Cosmos DB provider is implemented, so changes it makes to Cosmos-specific code fit the way the provider actually works. The skill supplies those implementation details whenever your AI edits Cosmos-specific code. It is drawn from the dotnet/efcore repository.

Available today. Use it from your connected AI after setup.

After adding the skill, point your AI at the Cosmos-specific code you want to change. It will use the provider's implementation details as it works.

Then ask your AI: use the Cosmos DB Provider skill

What your AI can do with it

  • Edit Cosmos-specific code with guidance on how the provider works
  • Explain the implementation details of the EF Core Azure Cosmos DB provider
  • Update Cosmos provider code in the dotnet/efcore repository
  • Answer questions about how the provider is implemented
  • Keep changes to Cosmos-specific code consistent with how the provider is built

What this skill tells your AI

The instructions your AI receives, as published by dotnet/efcore in .agents/skills/cosmos-provider/SKILL.md and read by ahel’s review.

Non-relational provider with its own parallel query pipeline. Uses JSON for document materialization.

Key Differences from Relational

  • No migrations — use EnsureCreated()
  • Documents as JSON — owned and complex types become embedded objects
  • Partition key configuration required for performance
  • ETag for optimistic concurrency
  • No cross-container joins

Azure Cosmos DB Emulator for Tests

  • TestEnvironment.InitializeAsync() auto-starts a Testcontainers.CosmosDb container when Test__Cosmos__DefaultConnection is not set. Set the env var to use an existing emulator instead.
  • Skip tests requiring unsupported features on the Linux emulator with [ConditionalFact(typeof(CosmosTestEnvironment), nameof(CosmosTestEnvironment.IsNotLinuxEmulator))].

Signals

GitHub stars
15k
Forks
3k
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
cosmos-provider
Source
github.com/dotnet/efcore