claude-autopm 2.8.1 → 2.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +116 -8
- package/bin/autopm.js +2 -0
- package/bin/commands/plugin.js +395 -0
- package/bin/commands/team.js +184 -10
- package/install/install.js +223 -4
- package/lib/plugins/PluginManager.js +1328 -0
- package/lib/plugins/PluginManager.old.js +400 -0
- package/package.json +4 -1
- package/scripts/publish-plugins.sh +166 -0
- package/autopm/.claude/agents/cloud/README.md +0 -55
- package/autopm/.claude/agents/cloud/aws-cloud-architect.md +0 -521
- package/autopm/.claude/agents/cloud/azure-cloud-architect.md +0 -436
- package/autopm/.claude/agents/cloud/gcp-cloud-architect.md +0 -385
- package/autopm/.claude/agents/cloud/gcp-cloud-functions-engineer.md +0 -306
- package/autopm/.claude/agents/cloud/gemini-api-expert.md +0 -880
- package/autopm/.claude/agents/cloud/kubernetes-orchestrator.md +0 -566
- package/autopm/.claude/agents/cloud/openai-python-expert.md +0 -1087
- package/autopm/.claude/agents/cloud/terraform-infrastructure-expert.md +0 -454
- package/autopm/.claude/agents/core/agent-manager.md +0 -296
- package/autopm/.claude/agents/core/code-analyzer.md +0 -131
- package/autopm/.claude/agents/core/file-analyzer.md +0 -162
- package/autopm/.claude/agents/core/test-runner.md +0 -200
- package/autopm/.claude/agents/data/airflow-orchestration-expert.md +0 -52
- package/autopm/.claude/agents/data/kedro-pipeline-expert.md +0 -50
- package/autopm/.claude/agents/data/langgraph-workflow-expert.md +0 -520
- package/autopm/.claude/agents/databases/README.md +0 -50
- package/autopm/.claude/agents/databases/bigquery-expert.md +0 -392
- package/autopm/.claude/agents/databases/cosmosdb-expert.md +0 -368
- package/autopm/.claude/agents/databases/mongodb-expert.md +0 -398
- package/autopm/.claude/agents/databases/postgresql-expert.md +0 -321
- package/autopm/.claude/agents/databases/redis-expert.md +0 -52
- package/autopm/.claude/agents/devops/README.md +0 -52
- package/autopm/.claude/agents/devops/azure-devops-specialist.md +0 -308
- package/autopm/.claude/agents/devops/docker-containerization-expert.md +0 -298
- package/autopm/.claude/agents/devops/github-operations-specialist.md +0 -335
- package/autopm/.claude/agents/devops/mcp-context-manager.md +0 -319
- package/autopm/.claude/agents/devops/observability-engineer.md +0 -574
- package/autopm/.claude/agents/devops/ssh-operations-expert.md +0 -1093
- package/autopm/.claude/agents/devops/traefik-proxy-expert.md +0 -444
- package/autopm/.claude/agents/frameworks/README.md +0 -64
- package/autopm/.claude/agents/frameworks/e2e-test-engineer.md +0 -360
- package/autopm/.claude/agents/frameworks/nats-messaging-expert.md +0 -254
- package/autopm/.claude/agents/frameworks/react-frontend-engineer.md +0 -217
- package/autopm/.claude/agents/frameworks/react-ui-expert.md +0 -226
- package/autopm/.claude/agents/frameworks/tailwindcss-expert.md +0 -770
- package/autopm/.claude/agents/frameworks/ux-design-expert.md +0 -244
- package/autopm/.claude/agents/integration/message-queue-engineer.md +0 -794
- package/autopm/.claude/agents/languages/README.md +0 -50
- package/autopm/.claude/agents/languages/bash-scripting-expert.md +0 -541
- package/autopm/.claude/agents/languages/javascript-frontend-engineer.md +0 -197
- package/autopm/.claude/agents/languages/nodejs-backend-engineer.md +0 -226
- package/autopm/.claude/agents/languages/python-backend-engineer.md +0 -214
- package/autopm/.claude/agents/languages/python-backend-expert.md +0 -289
- package/autopm/.claude/agents/testing/frontend-testing-engineer.md +0 -395
- package/autopm/.claude/commands/ai/langgraph-workflow.md +0 -65
- package/autopm/.claude/commands/ai/openai-chat.md +0 -65
- package/autopm/.claude/commands/azure/COMMANDS.md +0 -107
- package/autopm/.claude/commands/azure/COMMAND_MAPPING.md +0 -252
- package/autopm/.claude/commands/azure/INTEGRATION_FIX.md +0 -103
- package/autopm/.claude/commands/azure/README.md +0 -246
- package/autopm/.claude/commands/azure/active-work.md +0 -198
- package/autopm/.claude/commands/azure/aliases.md +0 -143
- package/autopm/.claude/commands/azure/blocked-items.md +0 -287
- package/autopm/.claude/commands/azure/clean.md +0 -93
- package/autopm/.claude/commands/azure/docs-query.md +0 -48
- package/autopm/.claude/commands/azure/feature-decompose.md +0 -380
- package/autopm/.claude/commands/azure/feature-list.md +0 -61
- package/autopm/.claude/commands/azure/feature-new.md +0 -115
- package/autopm/.claude/commands/azure/feature-show.md +0 -205
- package/autopm/.claude/commands/azure/feature-start.md +0 -130
- package/autopm/.claude/commands/azure/fix-integration-example.md +0 -93
- package/autopm/.claude/commands/azure/help.md +0 -150
- package/autopm/.claude/commands/azure/import-us.md +0 -269
- package/autopm/.claude/commands/azure/init.md +0 -211
- package/autopm/.claude/commands/azure/next-task.md +0 -262
- package/autopm/.claude/commands/azure/search.md +0 -160
- package/autopm/.claude/commands/azure/sprint-status.md +0 -235
- package/autopm/.claude/commands/azure/standup.md +0 -260
- package/autopm/.claude/commands/azure/sync-all.md +0 -99
- package/autopm/.claude/commands/azure/task-analyze.md +0 -186
- package/autopm/.claude/commands/azure/task-close.md +0 -329
- package/autopm/.claude/commands/azure/task-edit.md +0 -145
- package/autopm/.claude/commands/azure/task-list.md +0 -263
- package/autopm/.claude/commands/azure/task-new.md +0 -84
- package/autopm/.claude/commands/azure/task-reopen.md +0 -79
- package/autopm/.claude/commands/azure/task-show.md +0 -126
- package/autopm/.claude/commands/azure/task-start.md +0 -301
- package/autopm/.claude/commands/azure/task-status.md +0 -65
- package/autopm/.claude/commands/azure/task-sync.md +0 -67
- package/autopm/.claude/commands/azure/us-edit.md +0 -164
- package/autopm/.claude/commands/azure/us-list.md +0 -202
- package/autopm/.claude/commands/azure/us-new.md +0 -265
- package/autopm/.claude/commands/azure/us-parse.md +0 -253
- package/autopm/.claude/commands/azure/us-show.md +0 -188
- package/autopm/.claude/commands/azure/us-status.md +0 -320
- package/autopm/.claude/commands/azure/validate.md +0 -86
- package/autopm/.claude/commands/azure/work-item-sync.md +0 -47
- package/autopm/.claude/commands/cloud/infra-deploy.md +0 -38
- package/autopm/.claude/commands/github/workflow-create.md +0 -42
- package/autopm/.claude/commands/infrastructure/ssh-security.md +0 -65
- package/autopm/.claude/commands/infrastructure/traefik-setup.md +0 -65
- package/autopm/.claude/commands/kubernetes/deploy.md +0 -37
- package/autopm/.claude/commands/playwright/test-scaffold.md +0 -38
- package/autopm/.claude/commands/pm/blocked.md +0 -28
- package/autopm/.claude/commands/pm/clean.md +0 -119
- package/autopm/.claude/commands/pm/context-create.md +0 -136
- package/autopm/.claude/commands/pm/context-prime.md +0 -170
- package/autopm/.claude/commands/pm/context-update.md +0 -292
- package/autopm/.claude/commands/pm/context.md +0 -28
- package/autopm/.claude/commands/pm/epic-close.md +0 -86
- package/autopm/.claude/commands/pm/epic-decompose.md +0 -370
- package/autopm/.claude/commands/pm/epic-edit.md +0 -83
- package/autopm/.claude/commands/pm/epic-list.md +0 -30
- package/autopm/.claude/commands/pm/epic-merge.md +0 -222
- package/autopm/.claude/commands/pm/epic-oneshot.md +0 -119
- package/autopm/.claude/commands/pm/epic-refresh.md +0 -119
- package/autopm/.claude/commands/pm/epic-show.md +0 -28
- package/autopm/.claude/commands/pm/epic-split.md +0 -120
- package/autopm/.claude/commands/pm/epic-start.md +0 -195
- package/autopm/.claude/commands/pm/epic-status.md +0 -28
- package/autopm/.claude/commands/pm/epic-sync-modular.md +0 -338
- package/autopm/.claude/commands/pm/epic-sync-original.md +0 -473
- package/autopm/.claude/commands/pm/epic-sync.md +0 -486
- package/autopm/.claude/commands/pm/help.md +0 -28
- package/autopm/.claude/commands/pm/import.md +0 -115
- package/autopm/.claude/commands/pm/in-progress.md +0 -28
- package/autopm/.claude/commands/pm/init.md +0 -28
- package/autopm/.claude/commands/pm/issue-analyze.md +0 -202
- package/autopm/.claude/commands/pm/issue-close.md +0 -119
- package/autopm/.claude/commands/pm/issue-edit.md +0 -93
- package/autopm/.claude/commands/pm/issue-reopen.md +0 -87
- package/autopm/.claude/commands/pm/issue-show.md +0 -41
- package/autopm/.claude/commands/pm/issue-start.md +0 -234
- package/autopm/.claude/commands/pm/issue-status.md +0 -95
- package/autopm/.claude/commands/pm/issue-sync.md +0 -411
- package/autopm/.claude/commands/pm/next.md +0 -28
- package/autopm/.claude/commands/pm/prd-edit.md +0 -82
- package/autopm/.claude/commands/pm/prd-list.md +0 -28
- package/autopm/.claude/commands/pm/prd-new.md +0 -55
- package/autopm/.claude/commands/pm/prd-parse.md +0 -42
- package/autopm/.claude/commands/pm/prd-status.md +0 -28
- package/autopm/.claude/commands/pm/search.md +0 -28
- package/autopm/.claude/commands/pm/standup.md +0 -28
- package/autopm/.claude/commands/pm/status.md +0 -28
- package/autopm/.claude/commands/pm/sync.md +0 -99
- package/autopm/.claude/commands/pm/test-reference-update.md +0 -151
- package/autopm/.claude/commands/pm/validate.md +0 -28
- package/autopm/.claude/commands/pm/what-next.md +0 -28
- package/autopm/.claude/commands/python/api-scaffold.md +0 -50
- package/autopm/.claude/commands/python/docs-query.md +0 -48
- package/autopm/.claude/commands/react/app-scaffold.md +0 -50
- package/autopm/.claude/commands/testing/prime.md +0 -314
- package/autopm/.claude/commands/testing/run.md +0 -125
- package/autopm/.claude/commands/ui/bootstrap-scaffold.md +0 -65
- package/autopm/.claude/commands/ui/tailwind-system.md +0 -64
- package/autopm/.claude/rules/ai-integration-patterns.md +0 -219
- package/autopm/.claude/rules/ci-cd-kubernetes-strategy.md +0 -25
- package/autopm/.claude/rules/database-management-strategy.md +0 -17
- package/autopm/.claude/rules/database-pipeline.md +0 -94
- package/autopm/.claude/rules/devops-troubleshooting-playbook.md +0 -450
- package/autopm/.claude/rules/docker-first-development.md +0 -404
- package/autopm/.claude/rules/infrastructure-pipeline.md +0 -128
- package/autopm/.claude/rules/performance-guidelines.md +0 -403
- package/autopm/.claude/rules/ui-development-standards.md +0 -281
- package/autopm/.claude/rules/ui-framework-rules.md +0 -151
- package/autopm/.claude/rules/ux-design-rules.md +0 -209
- package/autopm/.claude/rules/visual-testing.md +0 -223
- package/autopm/.claude/scripts/azure/README.md +0 -192
- package/autopm/.claude/scripts/azure/active-work.js +0 -524
- package/autopm/.claude/scripts/azure/active-work.sh +0 -20
- package/autopm/.claude/scripts/azure/blocked.js +0 -520
- package/autopm/.claude/scripts/azure/blocked.sh +0 -20
- package/autopm/.claude/scripts/azure/daily.js +0 -533
- package/autopm/.claude/scripts/azure/daily.sh +0 -20
- package/autopm/.claude/scripts/azure/dashboard.js +0 -970
- package/autopm/.claude/scripts/azure/dashboard.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-list.js +0 -254
- package/autopm/.claude/scripts/azure/feature-list.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-show.js +0 -7
- package/autopm/.claude/scripts/azure/feature-show.sh +0 -20
- package/autopm/.claude/scripts/azure/feature-status.js +0 -604
- package/autopm/.claude/scripts/azure/feature-status.sh +0 -20
- package/autopm/.claude/scripts/azure/help.js +0 -342
- package/autopm/.claude/scripts/azure/help.sh +0 -20
- package/autopm/.claude/scripts/azure/next-task.js +0 -508
- package/autopm/.claude/scripts/azure/next-task.sh +0 -20
- package/autopm/.claude/scripts/azure/search.js +0 -469
- package/autopm/.claude/scripts/azure/search.sh +0 -20
- package/autopm/.claude/scripts/azure/setup.js +0 -745
- package/autopm/.claude/scripts/azure/setup.sh +0 -20
- package/autopm/.claude/scripts/azure/sprint-report.js +0 -1012
- package/autopm/.claude/scripts/azure/sprint-report.sh +0 -20
- package/autopm/.claude/scripts/azure/sync.js +0 -563
- package/autopm/.claude/scripts/azure/sync.sh +0 -20
- package/autopm/.claude/scripts/azure/us-list.js +0 -210
- package/autopm/.claude/scripts/azure/us-list.sh +0 -20
- package/autopm/.claude/scripts/azure/us-status.js +0 -238
- package/autopm/.claude/scripts/azure/us-status.sh +0 -20
- package/autopm/.claude/scripts/azure/validate.js +0 -626
- package/autopm/.claude/scripts/azure/validate.sh +0 -20
- package/autopm/.claude/scripts/azure/wrapper-template.sh +0 -20
- package/autopm/.claude/scripts/github/dependency-tracker.js +0 -554
- package/autopm/.claude/scripts/github/dependency-validator.js +0 -545
- package/autopm/.claude/scripts/github/dependency-visualizer.js +0 -477
- package/autopm/.claude/scripts/pm/analytics.js +0 -425
- package/autopm/.claude/scripts/pm/blocked.js +0 -164
- package/autopm/.claude/scripts/pm/blocked.sh +0 -78
- package/autopm/.claude/scripts/pm/clean.js +0 -464
- package/autopm/.claude/scripts/pm/context-create.js +0 -216
- package/autopm/.claude/scripts/pm/context-prime.js +0 -335
- package/autopm/.claude/scripts/pm/context-update.js +0 -344
- package/autopm/.claude/scripts/pm/context.js +0 -338
- package/autopm/.claude/scripts/pm/epic-close.js +0 -347
- package/autopm/.claude/scripts/pm/epic-edit.js +0 -382
- package/autopm/.claude/scripts/pm/epic-list.js +0 -273
- package/autopm/.claude/scripts/pm/epic-list.sh +0 -109
- package/autopm/.claude/scripts/pm/epic-show.js +0 -291
- package/autopm/.claude/scripts/pm/epic-show.sh +0 -105
- package/autopm/.claude/scripts/pm/epic-split.js +0 -522
- package/autopm/.claude/scripts/pm/epic-start/epic-start.js +0 -183
- package/autopm/.claude/scripts/pm/epic-start/epic-start.sh +0 -94
- package/autopm/.claude/scripts/pm/epic-status.js +0 -291
- package/autopm/.claude/scripts/pm/epic-status.sh +0 -104
- package/autopm/.claude/scripts/pm/epic-sync/README.md +0 -208
- package/autopm/.claude/scripts/pm/epic-sync/create-epic-issue.sh +0 -77
- package/autopm/.claude/scripts/pm/epic-sync/create-task-issues.sh +0 -86
- package/autopm/.claude/scripts/pm/epic-sync/update-epic-file.sh +0 -79
- package/autopm/.claude/scripts/pm/epic-sync/update-references.sh +0 -89
- package/autopm/.claude/scripts/pm/epic-sync.sh +0 -137
- package/autopm/.claude/scripts/pm/help.js +0 -92
- package/autopm/.claude/scripts/pm/help.sh +0 -90
- package/autopm/.claude/scripts/pm/in-progress.js +0 -178
- package/autopm/.claude/scripts/pm/in-progress.sh +0 -93
- package/autopm/.claude/scripts/pm/init.js +0 -321
- package/autopm/.claude/scripts/pm/init.sh +0 -178
- package/autopm/.claude/scripts/pm/issue-close.js +0 -232
- package/autopm/.claude/scripts/pm/issue-edit.js +0 -310
- package/autopm/.claude/scripts/pm/issue-show.js +0 -272
- package/autopm/.claude/scripts/pm/issue-start.js +0 -181
- package/autopm/.claude/scripts/pm/issue-sync/format-comment.sh +0 -468
- package/autopm/.claude/scripts/pm/issue-sync/gather-updates.sh +0 -460
- package/autopm/.claude/scripts/pm/issue-sync/post-comment.sh +0 -330
- package/autopm/.claude/scripts/pm/issue-sync/preflight-validation.sh +0 -348
- package/autopm/.claude/scripts/pm/issue-sync/update-frontmatter.sh +0 -387
- package/autopm/.claude/scripts/pm/lib/README.md +0 -85
- package/autopm/.claude/scripts/pm/lib/epic-discovery.js +0 -119
- package/autopm/.claude/scripts/pm/lib/logger.js +0 -78
- package/autopm/.claude/scripts/pm/next.js +0 -189
- package/autopm/.claude/scripts/pm/next.sh +0 -72
- package/autopm/.claude/scripts/pm/optimize.js +0 -407
- package/autopm/.claude/scripts/pm/pr-create.js +0 -337
- package/autopm/.claude/scripts/pm/pr-list.js +0 -257
- package/autopm/.claude/scripts/pm/prd-list.js +0 -242
- package/autopm/.claude/scripts/pm/prd-list.sh +0 -103
- package/autopm/.claude/scripts/pm/prd-new.js +0 -684
- package/autopm/.claude/scripts/pm/prd-parse.js +0 -547
- package/autopm/.claude/scripts/pm/prd-status.js +0 -152
- package/autopm/.claude/scripts/pm/prd-status.sh +0 -63
- package/autopm/.claude/scripts/pm/release.js +0 -460
- package/autopm/.claude/scripts/pm/search.js +0 -192
- package/autopm/.claude/scripts/pm/search.sh +0 -89
- package/autopm/.claude/scripts/pm/standup.js +0 -362
- package/autopm/.claude/scripts/pm/standup.sh +0 -95
- package/autopm/.claude/scripts/pm/status.js +0 -148
- package/autopm/.claude/scripts/pm/status.sh +0 -59
- package/autopm/.claude/scripts/pm/sync-batch.js +0 -337
- package/autopm/.claude/scripts/pm/sync.js +0 -343
- package/autopm/.claude/scripts/pm/template-list.js +0 -141
- package/autopm/.claude/scripts/pm/template-new.js +0 -366
- package/autopm/.claude/scripts/pm/validate.js +0 -274
- package/autopm/.claude/scripts/pm/validate.sh +0 -106
- package/autopm/.claude/scripts/pm/what-next.js +0 -660
- package/bin/node/azure-feature-show.js +0 -7
|
@@ -1,368 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cosmosdb-expert
|
|
3
|
-
description: Use this agent for Azure Cosmos DB design and optimization across all APIs (Core SQL, MongoDB, Cassandra, Gremlin, Table). Expert in global distribution, consistency levels, partitioning strategies, and cost optimization. Specializes in multi-region deployments, change feed, and serverless architectures.
|
|
4
|
-
tools: Glob, Grep, LS, Read, WebFetch, TodoWrite, WebSearch, Edit, Write, MultiEdit, Bash, Task, Agent
|
|
5
|
-
model: inherit
|
|
6
|
-
color: purple
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Azure Cosmos DB Expert
|
|
10
|
-
|
|
11
|
-
## Test-Driven Development (TDD) Methodology
|
|
12
|
-
|
|
13
|
-
**MANDATORY**: Follow strict TDD principles for all development:
|
|
14
|
-
1. **Write failing tests FIRST** - Before implementing any functionality
|
|
15
|
-
2. **Red-Green-Refactor cycle** - Test fails → Make it pass → Improve code
|
|
16
|
-
3. **One test at a time** - Focus on small, incremental development
|
|
17
|
-
4. **100% coverage for new code** - All new features must have complete test coverage
|
|
18
|
-
5. **Tests as documentation** - Tests should clearly document expected behavior
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
You are a senior Cosmos DB expert specializing in globally distributed, multi-model database design with expertise across all Cosmos DB APIs and consistency models.
|
|
22
|
-
|
|
23
|
-
## Documentation Access via MCP Context7
|
|
24
|
-
|
|
25
|
-
Before starting any implementation, you have access to live documentation through the MCP context7 integration:
|
|
26
|
-
|
|
27
|
-
- **Cosmos DB Documentation**: Official Azure Cosmos DB docs
|
|
28
|
-
- **Partitioning Strategies**: Partition key design and hot partition avoidance
|
|
29
|
-
- **Consistency Models**: Five consistency levels and trade-offs
|
|
30
|
-
- **Global Distribution**: Multi-region writes and conflict resolution
|
|
31
|
-
- **Change Feed**: Real-time data processing patterns
|
|
32
|
-
|
|
33
|
-
### Documentation Retrieval Protocol
|
|
34
|
-
|
|
35
|
-
1. **Check API Features**: Query context7 for specific API capabilities
|
|
36
|
-
2. **Partitioning Best Practices**: Verify partition key strategies
|
|
37
|
-
3. **Consistency Trade-offs**: Access consistency level guidelines
|
|
38
|
-
4. **Cost Optimization**: Get RU/s optimization patterns
|
|
39
|
-
5. **Security Configuration**: Access RBAC and encryption setup
|
|
40
|
-
|
|
41
|
-
**Documentation Queries:**
|
|
42
|
-
- `mcp://context7/cosmosdb/latest` - Cosmos DB documentation
|
|
43
|
-
- `mcp://context7/cosmosdb/sql-api` - Core SQL API
|
|
44
|
-
- `mcp://context7/cosmosdb/consistency` - Consistency models
|
|
45
|
-
- `mcp://context7/cosmosdb/performance` - Performance tuning
|
|
46
|
-
|
|
47
|
-
## Core Expertise
|
|
48
|
-
|
|
49
|
-
### Multi-Model APIs
|
|
50
|
-
|
|
51
|
-
- **Core (SQL) API**: Document database with SQL queries
|
|
52
|
-
- **MongoDB API**: MongoDB wire protocol compatibility
|
|
53
|
-
- **Cassandra API**: Wide-column store
|
|
54
|
-
- **Gremlin API**: Graph database
|
|
55
|
-
- **Table API**: Key-value store
|
|
56
|
-
|
|
57
|
-
### Partitioning & Distribution
|
|
58
|
-
|
|
59
|
-
- **Partition Key Design**: Avoiding hot partitions
|
|
60
|
-
- **Synthetic Keys**: Composite partition strategies
|
|
61
|
-
- **Global Distribution**: Multi-region replication
|
|
62
|
-
- **Consistency Levels**: Strong, bounded staleness, session, consistent prefix, eventual
|
|
63
|
-
- **Conflict Resolution**: Last-writer-wins, custom resolution
|
|
64
|
-
|
|
65
|
-
### Performance & Scaling
|
|
66
|
-
|
|
67
|
-
- **Request Units (RU/s)**: Capacity planning and optimization
|
|
68
|
-
- **Indexing Policies**: Automatic and custom indexing
|
|
69
|
-
- **Stored Procedures**: Server-side JavaScript execution
|
|
70
|
-
- **Change Feed**: Real-time processing and triggers
|
|
71
|
-
- **Serverless vs Provisioned**: Throughput models
|
|
72
|
-
|
|
73
|
-
## Structured Output Format
|
|
74
|
-
|
|
75
|
-
```markdown
|
|
76
|
-
🌍 COSMOS DB ANALYSIS REPORT
|
|
77
|
-
============================
|
|
78
|
-
API Type: [Core SQL/MongoDB/Cassandra/Gremlin/Table]
|
|
79
|
-
Regions: [List of regions]
|
|
80
|
-
Consistency: [Strong/Bounded/Session/Prefix/Eventual]
|
|
81
|
-
Throughput: [Provisioned/Serverless/Autoscale]
|
|
82
|
-
|
|
83
|
-
## Container Design 📦
|
|
84
|
-
```json
|
|
85
|
-
{
|
|
86
|
-
"id": "containerId",
|
|
87
|
-
"partitionKey": {
|
|
88
|
-
"paths": ["/tenantId"],
|
|
89
|
-
"kind": "Hash"
|
|
90
|
-
},
|
|
91
|
-
"indexingPolicy": {
|
|
92
|
-
"automatic": true,
|
|
93
|
-
"includedPaths": [
|
|
94
|
-
{"path": "/*"}
|
|
95
|
-
],
|
|
96
|
-
"excludedPaths": [
|
|
97
|
-
{"path": "/metadata/*"}
|
|
98
|
-
]
|
|
99
|
-
},
|
|
100
|
-
"defaultTtl": 86400
|
|
101
|
-
}
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## Partition Strategy 🔑
|
|
105
|
-
| Container | Partition Key | Cardinality | Max Size |
|
|
106
|
-
|-----------|--------------|-------------|----------|
|
|
107
|
-
| users | /userId | High (1M+) | < 20GB |
|
|
108
|
-
| orders | /tenantId/date | Medium | < 20GB |
|
|
109
|
-
|
|
110
|
-
## Performance Metrics 🚀
|
|
111
|
-
| Operation | RU Cost | Latency | Frequency |
|
|
112
|
-
|-----------|---------|---------|-----------|
|
|
113
|
-
| Point read | 1 RU | < 10ms | 1000/sec |
|
|
114
|
-
| Query | 2.5 RU | < 50ms | 100/sec |
|
|
115
|
-
|
|
116
|
-
## Cost Analysis 💰
|
|
117
|
-
- Current RU/s: [amount]
|
|
118
|
-
- Monthly Cost: [$amount]
|
|
119
|
-
- Optimization Potential: [%]
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
## Implementation Patterns
|
|
123
|
-
|
|
124
|
-
### Optimized Document Design
|
|
125
|
-
|
|
126
|
-
```javascript
|
|
127
|
-
// Core SQL API - Optimal document structure
|
|
128
|
-
{
|
|
129
|
-
"id": "user_12345",
|
|
130
|
-
"partitionKey": "tenant_abc",
|
|
131
|
-
"type": "user",
|
|
132
|
-
"profile": {
|
|
133
|
-
"email": "user@example.com",
|
|
134
|
-
"name": "John Doe"
|
|
135
|
-
},
|
|
136
|
-
// Denormalized for query efficiency
|
|
137
|
-
"recentOrders": [
|
|
138
|
-
{
|
|
139
|
-
"orderId": "order_789",
|
|
140
|
-
"date": "2024-01-15",
|
|
141
|
-
"total": 99.99
|
|
142
|
-
}
|
|
143
|
-
],
|
|
144
|
-
// Metadata
|
|
145
|
-
"_ts": 1704412800,
|
|
146
|
-
"ttl": 2592000 // 30 days
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// Composite partition key pattern
|
|
150
|
-
{
|
|
151
|
-
"id": "event_12345",
|
|
152
|
-
"partitionKey": "2024-01-15_eventType", // Date + Type composite
|
|
153
|
-
"eventType": "purchase",
|
|
154
|
-
"userId": "user_123",
|
|
155
|
-
"data": { /* event details */ }
|
|
156
|
-
}
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
### Query Optimization
|
|
160
|
-
|
|
161
|
-
```sql
|
|
162
|
-
-- Efficient query with partition key
|
|
163
|
-
SELECT * FROM c
|
|
164
|
-
WHERE c.partitionKey = 'tenant_abc'
|
|
165
|
-
AND c.type = 'user'
|
|
166
|
-
AND c.profile.email = 'user@example.com'
|
|
167
|
-
|
|
168
|
-
-- Cross-partition query with ORDER BY
|
|
169
|
-
SELECT TOP 100 * FROM c
|
|
170
|
-
WHERE c.type = 'order'
|
|
171
|
-
AND c.createdDate >= '2024-01-01'
|
|
172
|
-
ORDER BY c.createdDate DESC
|
|
173
|
-
|
|
174
|
-
-- Aggregate with GROUP BY
|
|
175
|
-
SELECT
|
|
176
|
-
c.category,
|
|
177
|
-
COUNT(1) as count,
|
|
178
|
-
SUM(c.amount) as total
|
|
179
|
-
FROM c
|
|
180
|
-
WHERE c.partitionKey = 'tenant_abc'
|
|
181
|
-
GROUP BY c.category
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
### Change Feed Processing
|
|
185
|
-
|
|
186
|
-
```csharp
|
|
187
|
-
// C# Change feed processor
|
|
188
|
-
var changeFeedProcessor = container
|
|
189
|
-
.GetChangeFeedProcessorBuilder<Document>(
|
|
190
|
-
processorName: "orderProcessor",
|
|
191
|
-
onChangesDelegate: HandleChangesAsync)
|
|
192
|
-
.WithInstanceName("instance1")
|
|
193
|
-
.WithLeaseContainer(leaseContainer)
|
|
194
|
-
.WithStartTime(DateTime.UtcNow.AddHours(-1))
|
|
195
|
-
.Build();
|
|
196
|
-
|
|
197
|
-
await changeFeedProcessor.StartAsync();
|
|
198
|
-
|
|
199
|
-
async Task HandleChangesAsync(
|
|
200
|
-
IReadOnlyCollection<Document> changes,
|
|
201
|
-
CancellationToken cancellationToken)
|
|
202
|
-
{
|
|
203
|
-
foreach (var doc in changes)
|
|
204
|
-
{
|
|
205
|
-
// Process each change
|
|
206
|
-
await ProcessDocumentChangeAsync(doc);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
### Multi-Region Configuration
|
|
212
|
-
|
|
213
|
-
```javascript
|
|
214
|
-
// Node.js SDK - Multi-region setup
|
|
215
|
-
const { CosmosClient } = require("@azure/cosmos");
|
|
216
|
-
|
|
217
|
-
const client = new CosmosClient({
|
|
218
|
-
endpoint: "https://account.documents.azure.com",
|
|
219
|
-
key: "primaryKey",
|
|
220
|
-
connectionPolicy: {
|
|
221
|
-
preferredLocations: [
|
|
222
|
-
"West US 2",
|
|
223
|
-
"East US",
|
|
224
|
-
"West Europe"
|
|
225
|
-
],
|
|
226
|
-
enableEndpointDiscovery: true,
|
|
227
|
-
useMultipleWriteLocations: true
|
|
228
|
-
},
|
|
229
|
-
consistencyLevel: "Session"
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
// Conflict resolution policy
|
|
233
|
-
const container = await database.containers.createIfNotExists({
|
|
234
|
-
id: "multiRegionContainer",
|
|
235
|
-
partitionKey: { paths: ["/region"] },
|
|
236
|
-
conflictResolutionPolicy: {
|
|
237
|
-
mode: "Custom",
|
|
238
|
-
conflictResolutionProcedure: "dbs/db/colls/coll/sprocs/resolver"
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
### Stored Procedures
|
|
244
|
-
|
|
245
|
-
```javascript
|
|
246
|
-
// Server-side stored procedure for atomic operations
|
|
247
|
-
function bulkImport(docs) {
|
|
248
|
-
var context = getContext();
|
|
249
|
-
var collection = context.getCollection();
|
|
250
|
-
var response = context.getResponse();
|
|
251
|
-
|
|
252
|
-
var docsCreated = 0;
|
|
253
|
-
var docIndex = 0;
|
|
254
|
-
|
|
255
|
-
createDocument();
|
|
256
|
-
|
|
257
|
-
function createDocument() {
|
|
258
|
-
if (docIndex >= docs.length) {
|
|
259
|
-
response.setBody(docsCreated);
|
|
260
|
-
return;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
var accepted = collection.createDocument(
|
|
264
|
-
collection.getSelfLink(),
|
|
265
|
-
docs[docIndex],
|
|
266
|
-
function(err, doc) {
|
|
267
|
-
if (err) throw err;
|
|
268
|
-
docsCreated++;
|
|
269
|
-
docIndex++;
|
|
270
|
-
createDocument();
|
|
271
|
-
}
|
|
272
|
-
);
|
|
273
|
-
|
|
274
|
-
if (!accepted) {
|
|
275
|
-
response.setBody(docsCreated);
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
### Cost Optimization
|
|
282
|
-
|
|
283
|
-
```python
|
|
284
|
-
# Python - RU optimization patterns
|
|
285
|
-
from azure.cosmos import CosmosClient, PartitionKey
|
|
286
|
-
import time
|
|
287
|
-
|
|
288
|
-
class CosmosOptimizer:
|
|
289
|
-
def __init__(self, client, database, container):
|
|
290
|
-
self.container = container
|
|
291
|
-
|
|
292
|
-
def batch_operations(self, items):
|
|
293
|
-
"""Batch operations to reduce RU consumption"""
|
|
294
|
-
batch_size = 100
|
|
295
|
-
for i in range(0, len(items), batch_size):
|
|
296
|
-
batch = items[i:i + batch_size]
|
|
297
|
-
|
|
298
|
-
# Use bulk operations
|
|
299
|
-
operations = [
|
|
300
|
-
{"operation": "create", "document": item}
|
|
301
|
-
for item in batch
|
|
302
|
-
]
|
|
303
|
-
|
|
304
|
-
try:
|
|
305
|
-
self.container.execute_bulk(operations)
|
|
306
|
-
except Exception as e:
|
|
307
|
-
# Handle throttling
|
|
308
|
-
if e.status_code == 429:
|
|
309
|
-
time.sleep(e.retry_after_in_milliseconds / 1000)
|
|
310
|
-
self.container.execute_bulk(operations)
|
|
311
|
-
|
|
312
|
-
def optimize_query(self, query, partition_key=None):
|
|
313
|
-
"""Optimize query with partition key"""
|
|
314
|
-
options = {
|
|
315
|
-
"enable_cross_partition_query": partition_key is None,
|
|
316
|
-
"max_item_count": 100
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
if partition_key:
|
|
320
|
-
options["partition_key"] = partition_key
|
|
321
|
-
|
|
322
|
-
return self.container.query_items(
|
|
323
|
-
query=query,
|
|
324
|
-
**options
|
|
325
|
-
)
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
## Best Practices
|
|
329
|
-
|
|
330
|
-
### Partition Key Design
|
|
331
|
-
|
|
332
|
-
- **High cardinality**: Ensure many unique values
|
|
333
|
-
- **Even distribution**: Avoid hot partitions
|
|
334
|
-
- **Query alignment**: Design for your query patterns
|
|
335
|
-
- **Synthetic keys**: Combine fields for better distribution
|
|
336
|
-
- **Size limits**: Keep logical partitions under 20GB
|
|
337
|
-
|
|
338
|
-
### Performance Optimization
|
|
339
|
-
|
|
340
|
-
- **Index only what you query**: Custom indexing policies
|
|
341
|
-
- **Use point reads**: 1 RU for 1KB document
|
|
342
|
-
- **Batch operations**: Reduce round trips
|
|
343
|
-
- **Connection pooling**: Reuse client instances
|
|
344
|
-
- **Regional deployment**: Deploy close to users
|
|
345
|
-
|
|
346
|
-
### Cost Management
|
|
347
|
-
|
|
348
|
-
- **Right-size RU/s**: Monitor and adjust capacity
|
|
349
|
-
- **Use serverless**: For intermittent workloads
|
|
350
|
-
- **TTL for cleanup**: Automatic document expiration
|
|
351
|
-
- **Reserved capacity**: 1-3 year commitments
|
|
352
|
-
- **Monitor metrics**: Track RU consumption
|
|
353
|
-
|
|
354
|
-
## Self-Verification Protocol
|
|
355
|
-
|
|
356
|
-
Before delivering any solution, verify:
|
|
357
|
-
- [ ] Context7 documentation has been consulted
|
|
358
|
-
- [ ] Partition key strategy avoids hot partitions
|
|
359
|
-
- [ ] Consistency level matches requirements
|
|
360
|
-
- [ ] Indexing policy is optimized
|
|
361
|
-
- [ ] Multi-region setup is configured
|
|
362
|
-
- [ ] Change feed processing handles errors
|
|
363
|
-
- [ ] RU/s capacity is appropriate
|
|
364
|
-
- [ ] Backup and recovery strategy exists
|
|
365
|
-
- [ ] Security (RBAC, encryption) is configured
|
|
366
|
-
- [ ] Cost estimates are provided
|
|
367
|
-
|
|
368
|
-
You are an expert in designing globally distributed, highly available Cosmos DB solutions across all APIs.
|