Coding & Refactoringlow risk

dataverse-python-production-code

Generate production-ready Python code using Dataverse SDK with error handling, optimization, and best practices

github/awesome-copilot·skills/dataverse-python-production-code/SKILL.md
100/ 100品質

この Skill を導入

coding agent を選び、プロジェクト用または個人用コマンドをコピーします。

収録 commit に固定
プロジェクトに導入.agents/skills/dataverse-python-production-code
npx skills add https://github.com/github/awesome-copilot/tree/0aaced533251f5b86c69dfbc5e55db74c4b4d1af/skills/dataverse-python-production-code -a codex -y
個人環境に導入~/.agents/skills/dataverse-python-production-code
npx skills add https://github.com/github/awesome-copilot/tree/0aaced533251f5b86c69dfbc5e55db74c4b4d1af/skills/dataverse-python-production-code -a codex -g -y
手動配置先.agents/skills/dataverse-python-production-codeOfficial docs ↗
プロジェクトに導入.claude/skills/dataverse-python-production-code
npx skills add https://github.com/github/awesome-copilot/tree/0aaced533251f5b86c69dfbc5e55db74c4b4d1af/skills/dataverse-python-production-code -a claude-code -y
個人環境に導入~/.claude/skills/dataverse-python-production-code
npx skills add https://github.com/github/awesome-copilot/tree/0aaced533251f5b86c69dfbc5e55db74c4b4d1af/skills/dataverse-python-production-code -a claude-code -g -y
手動配置先.claude/skills/dataverse-python-production-codeOfficial docs ↗
プロジェクトに導入.agents/skills/dataverse-python-production-code
npx skills add https://github.com/github/awesome-copilot/tree/0aaced533251f5b86c69dfbc5e55db74c4b4d1af/skills/dataverse-python-production-code -a github-copilot -y
個人環境に導入~/.copilot/skills/dataverse-python-production-code
npx skills add https://github.com/github/awesome-copilot/tree/0aaced533251f5b86c69dfbc5e55db74c4b4d1af/skills/dataverse-python-production-code -a github-copilot -g -y
手動配置先.agents/skills/dataverse-python-production-codeOfficial docs ↗
プロジェクトに導入.agents/skills/dataverse-python-production-code
npx skills add https://github.com/github/awesome-copilot/tree/0aaced533251f5b86c69dfbc5e55db74c4b4d1af/skills/dataverse-python-production-code -a cursor -y
個人環境に導入~/.cursor/skills/dataverse-python-production-code
npx skills add https://github.com/github/awesome-copilot/tree/0aaced533251f5b86c69dfbc5e55db74c4b4d1af/skills/dataverse-python-production-code -a cursor -g -y
手動配置先.agents/skills/dataverse-python-production-codeOfficial docs ↗
プロジェクトに導入.agents/skills/dataverse-python-production-code
npx skills add https://github.com/github/awesome-copilot/tree/0aaced533251f5b86c69dfbc5e55db74c4b4d1af/skills/dataverse-python-production-code -a gemini-cli -y
個人環境に導入~/.gemini/skills/dataverse-python-production-code
npx skills add https://github.com/github/awesome-copilot/tree/0aaced533251f5b86c69dfbc5e55db74c4b4d1af/skills/dataverse-python-production-code -a gemini-cli -g -y
Native Gemini CLIgemini skills install https://github.com/github/awesome-copilot.git --scope workspace --path skills/dataverse-python-production-code
手動配置先.agents/skills/dataverse-python-production-codeOfficial docs ↗
⚠ インストールには open-source skills CLI を使用します。実行前にソースと権限を確認してください。
# 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