cosmosdb-best-practices

|

INSTALLATION
npx skills add https://github.com/azurecosmosdb/cosmosdb-agent-kit --skill cosmosdb-best-practices
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

Azure Cosmos DB Best Practices

Comprehensive performance optimization guide for Azure Cosmos DB applications, containing 100+ rules across 12 categories, prioritized by impact to guide automated refactoring and code generation.

When to Apply

Reference these guidelines when:

  • Designing data models for Cosmos DB
  • Choosing partition keys
  • Writing or optimizing queries
  • Implementing SDK patterns
  • Using the Cosmos DB Emulator for local development
  • Inspecting or managing Cosmos DB data with developer tooling
  • Implementing vector search or RAG features on Cosmos DB
  • Reviewing code for performance issues
  • Configuring throughput and scaling
  • Building globally distributed applications

Rule Categories by Priority

Priority

Category

Impact

Prefix

1

Data Modeling

CRITICAL

model-

2

Partition Key Design

CRITICAL

partition-

3

Query Optimization

HIGH

query-

4

SDK Best Practices

HIGH

sdk-

5

Indexing Strategies

MEDIUM-HIGH

index-

6

Throughput & Scaling

MEDIUM

throughput-

7

Global Distribution

MEDIUM

global-

8

Monitoring & Diagnostics

LOW-MEDIUM

monitoring-

9

Design Patterns

HIGH

pattern-

10

Developer Tooling

MEDIUM

tooling-

11

Vector Search

HIGH

vector-

Quick Reference

1. Data Modeling (CRITICAL)

2. Partition Key Design (CRITICAL)

3. Query Optimization (HIGH)

  • query-point-reads - Use point reads (ReadItem) instead of queries when id and partition key are known

4. SDK Best Practices (HIGH)

  • sdk-ifnonematch-create - Use setIfNoneMatchETag("*") on createItem to reject duplicates atomically (409 on conflict)
  • sdk-no-shared-request-options - Never reuse a CosmosItemRequestOptions instance across multiple createItem calls — SDK mutates it internally, causing wrong partition key on second call
  • sdk-patch-incr - Use CosmosPatchOperations.incr() for atomic counter increments — no read RU, no ETag conflict cycle
  • sdk-bypage-empty-token - Guard against empty-string continuation tokens before calling byPage() — pass null for first page, never ""

5. Indexing Strategies (MEDIUM-HIGH)

6. Throughput & Scaling (MEDIUM)

7. Global Distribution (MEDIUM)

8. Monitoring & Diagnostics (LOW-MEDIUM)

9. Design Patterns (HIGH)

10. Developer Tooling (MEDIUM)

11. Vector Search (HIGH)

12. Full-Text Search (HIGH)

  • fts-enable-capability - Enable EnableNoSQLFullTextSearch capability on the account — prerequisite for all FTS functions
  • fts-full-text-policy - Define fullTextPolicy on the container with correct language code (en-US, case-sensitive)
  • fts-index-policy - Add fullTextIndexes entry in the indexing policy to build the inverted index
  • fts-contains-query - Use FullTextContains / FullTextContainsAll / FullTextContainsAny instead of CONTAINS(LOWER(...))
  • fts-score-ranking - Use ORDER BY RANK FullTextScore(path, term) for BM25 relevance ranking
  • fts-hybrid-query - Combine FTS predicates with range/equality filters; put most selective filter first

How to Use

Use the linked rule files above for detailed explanations and code examples. The links give the agent direct paths to the relevant guidance instead of relying on folder scanning or inferred filenames.

Each rule file contains:

  • Brief explanation of why it matters
  • Incorrect code example with explanation
  • Correct code example with explanation
  • Additional context and references

Full Compiled Document

For the complete guide with all rules expanded: AGENTS.md

BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card