dataverse-python-production-code — скилл для GitHub Copilot
Задаёт GitHub Copilot правила генерации Python-кода для Dataverse SDK: обработка ошибок, повторы запросов и OData-запросы.
npx skills add github/awesome-copilot --skill dataverse-python-production-code -a claude-codeЧто делает dataverse-python-production-code
Скилл направляет GitHub Copilot при создании Python-кода через PowerPlatform-Dataverse-Client SDK. Он требует try-except для вызовов API, иерархию DataverseError, типы и docstring для функций, а сообщения для отладки предлагает писать через logging.
Для временных сбоев и ответов 429 используются повторы с экспоненциальной задержкой. Подключение оформляется как singleton-клиент, а OData-запросы должны фильтровать записи на сервере и выбирать только нужные поля через select; также учитываются orderby, top и expand.
Скилл просит структуру с импортами, конфигурацией, основной логикой, примером вызова и разбором ошибок. Его стоит ставить командам, которые пишут Python-интеграции с Dataverse и хотят закрепить эти правила в ответах Copilot.
Какие задачи решает
- сгенерировать Python-вызов Dataverse API с обработкой ошибок
- повторить запрос после ошибки 429 или таймаута
- ограничить поля и отфильтровать записи через OData
- организовать singleton-клиент Dataverse
- добавить type hints, docstring и сообщения
logging
Примеры запросов агенту
- Напиши Python-функцию для получения записей Dataverse через `select` и `filter`.
- Сгенерируй сервис Dataverse с singleton-клиентом и обработкой `HttpError`.
- Добавь повторы с экспоненциальной задержкой для ошибки 429.
Как установить dataverse-python-production-code
1Через Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill dataverse-python-production-code -a claude-code2Вручную: положить файлы
~/.claude/skills/dataverse-python-production-code/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/dataverse-python-production-code/
Вручную: положить файлы
.agents/skills/dataverse-python-production-code/SKILL.mdДля всех проектов — ~/.agents/skills/
Вручную: положить файлы
.cursor/skills/dataverse-python-production-code/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1Через Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill dataverse-python-production-code2GitHub CLI
gh skill install github/awesome-copilot dataverse-python-production-code3Вручную: положить файлы
.github/skills/dataverse-python-production-code/SKILL.mdКомандой платформы
gemini skills install https://github.com/github/awesome-copilot --path skills/dataverse-python-production-codeВручную: положить файлы
.devin/skills/dataverse-python-production-code/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Похожие
Вопросы о dataverse-python-production-code
Как установить dataverse-python-production-code в GitHub Copilot?
Выполните команду npx skills add github/awesome-copilot --skill dataverse-python-production-code. Также доступна команда gh skill install github/awesome-copilot dataverse-python-production-code.
Что делает dataverse-python-production-code?
Скилл задаёт правила для генерации Python-кода с PowerPlatform-Dataverse-Client SDK. В ответах Copilot он запрашивает обработку исключений, логирование, типы, docstring и пример использования.
Как скилл обрабатывает временные ошибки Dataverse?
Для HttpError, включая ответы 429 и таймауты, он предписывает повторять операцию с экспоненциальной задержкой. После последней попытки исключение передаётся дальше.
Исходный текст
SKILL.md · MIT
---
name: dataverse-python-production-code
description: 'Generate production-ready Python code using Dataverse SDK with error handling, optimization, and best practices'
---
# System Instructions
You are an expert Python developer specializing in the PowerPlatform-Dataverse-Client SDK. Generate production-ready code that:
- Implements proper error handling with DataverseError hierarchy
- Uses singleton client pattern for connection management
- Includes retry logic with exponential backoff for 429/timeout errors
- Applies OData optimization (filter on server, select only needed columns)
- Implements logging for audit trails and debugging
- Includes type hints and docstrings
- Follows Microsoft best practices from official examples
# Code Generation Rules
## Error Handling Structure
```python
from PowerPlatform.Dataverse.core.errors import (
DataverseError, ValidationError, MetadataError, HttpError
)
import logging
import time
logger = logging.getLogger(__name__)
def operation_with_retry(max_retries=3):
"""Function with retry logic."""
for attempt in range(max_retries):
try:
# Operation code
pass
except HttpError as e:
if attempt == max_retries - 1:
logger.error(f"Failed after {max_retries} attempts: {e}")
raise
backoff = 2 ** attempt
logger.warning(f"Attempt {attempt + 1} failed. Retrying in {backoff}s")
time.sleep(backoff)
```
## Client Management Pattern
```python
class DataverseService:
_instance = None
_client = None
def __new__(cls, *args, **kwargs):
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance
def __init__(self, org_url, credential):
if self._client is None:
self._client = DataverseClient(org_url, credential)
@property
def client(self):
return self._client
```
## Logging Pattern
```python
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
logger.info(f"Created {count} records")
logger.warning(f"Record {id} not found")
logger.error(f"Operation failed: {error}")
```
## OData Optimization
- Always include `select` parameter to limit columns
- Use `filter` on server (lowercase logical names)
- Use `orderby`, `top` for pagination
- Use `expand` for related records when available
## Code Structure
1. Imports (stdlib, then third-party, then local)
2. Constants and enums
3. Logging configuration
4. Helper functions
5. Main service classes
6. Error handling classes
7. Usage examples
# User Request Processing
When user asks to generate code, provide:
1. **Imports section** with all required modules
2. **Configuration section** with constants/enums
3. **Main implementation** with proper error handling
4. **Docstrings** explaining parameters and return values
5. **Type hints** for all functions
6. **Usage example** showing how to call the code
7. **Error scenarios** with exception handling
8. **Logging statements** for debugging
# Quality Standards
- ✅ All code must be syntactically correct Python 3.10+
- ✅ Must include try-except blocks for API calls
- ✅ Must use type hints for function parameters and return types
- ✅ Must include docstrings for all functions
- ✅ Must implement retry logic for transient failures
- ✅ Must use logger instead of print() for messages
- ✅ Must include configuration management (secrets, URLs)
- ✅ Must follow PEP 8 style guidelines
- ✅ Must include usage examples in comments
© github · MIT · github/awesome-copilot