GitHub Copilot ChatGPT Claude Codex CLI Cursor opencode Skill Text

azure-monitor-opentelemetry-exporter-py

Azure Monitor OpenTelemetry Exporter for Python. Use for low-level OpenTelemetry export to Application Insights. Triggers: "azure-monitor-opentelemetry-exporter", "AzureMonitorTraceExporter", "AzureMonitorMetricExporter", "AzureMonitorLogExporter".

Ciza · 0 points · 14 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download microsoft-skills-.github_plugins_azure-sdk-python_skills_azure-monitor-opentelemetry-exporter-py-e58528d.zip · 4 KB
Part of microsoft/skills — 195 skills

Install

skills CLI npx skills add https://github.com/microsoft/skills/tree/main/.github/plugins/azure-sdk-python/skills/azure-monitor-opentelemetry-exporter-py
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install microsoft-skills@llmmart
Git git clone https://github.com/microsoft/skills.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole microsoft/skills collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Azure Monitor OpenTelemetry Exporter for Python

Low-level exporter for sending OpenTelemetry traces, metrics, and logs to Application Insights.

Installation

pip install azure-monitor-opentelemetry-exporter

Environment Variables

APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=xxx;IngestionEndpoint=https://xxx.in.applicationinsights.azure.com/  # Required for all auth methods
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production

Authentication & Lifecycle

🔑 Two rules apply to every code sample below:

  1. Prefer DefaultAzureCredential for ingestion auth when supported. APPLICATIONINSIGHTS_CONNECTION_STRING identifies the target Application Insights resource, and credential=DefaultAzureCredential(...) provides Microsoft Entra authentication.
    • Local dev: DefaultAzureCredential works as-is.
    • Production: set AZURE_TOKEN_CREDENTIALS=prod (or AZURE_TOKEN_CREDENTIALS=<specific_credential>) to constrain the credential chain to production-safe credentials.
  2. Providers are not context managers. Flush and shut down telemetry providers explicitly at process exit so buffers are exported deterministically.

Snippets may abbreviate this setup, but production code should always follow both rules.

When to Use

Scenario Use
Quick setup, auto-instrumentation azure-monitor-opentelemetry (distro)
Custom OpenTelemetry pipeline azure-monitor-opentelemetry-exporter (this)
Fine-grained control over telemetry azure-monitor-opentelemetry-exporter (this)

Trace Exporter

from azure.identity import DefaultAzureCredential
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter

# Reads APPLICATIONINSIGHTS_CONNECTION_STRING from env to identify the resource;
# DefaultAzureCredential authenticates ingestion via Microsoft Entra ID.
exporter = AzureMonitorTraceExporter(
    credential=DefaultAzureCredential(),
)

# Configure tracer provider
trace.set_tracer_provider(TracerProvider())
trace.get_tracer_provider().add_span_processor(
    BatchSpanProcessor(exporter)
)

# Use tracer
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("my-span"):
    print("Hello, World!")

Metric Exporter

from azure.identity import DefaultAzureCredential
from opentelemetry import metrics
from opentelemetry.sdk.metrics import MeterProvider
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
from azure.monitor.opentelemetry.exporter import AzureMonitorMetricExporter

# Reads APPLICATIONINSIGHTS_CONNECTION_STRING from env; AAD-authenticated ingestion via DefaultAzureCredential.
exporter = AzureMonitorMetricExporter(
    credential=DefaultAzureCredential(),
)

# Configure meter provider
reader = PeriodicExportingMetricReader(exporter, export_interval_millis=60000)
metrics.set_meter_provider(MeterProvider(metric_readers=[reader]))

# Use meter
meter = metrics.get_meter(__name__)
counter = meter.create_counter("requests_total")
counter.add(1, {"route": "/api/users"})

Log Exporter

import logging
from azure.identity import DefaultAzureCredential
from opentelemetry._logs import set_logger_provider
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from azure.monitor.opentelemetry.exporter import AzureMonitorLogExporter

# Reads APPLICATIONINSIGHTS_CONNECTION_STRING from env; AAD-authenticated ingestion via DefaultAzureCredential.
exporter = AzureMonitorLogExporter(
    credential=DefaultAzureCredential(),
)

# Configure logger provider
logger_provider = LoggerProvider()
logger_provider.add_log_record_processor(BatchLogRecordProcessor(exporter))
set_logger_provider(logger_provider)

# Add handler to Python logging
handler = LoggingHandler(level=logging.INFO, logger_provider=logger_provider)
logging.getLogger().addHandler(handler)

# Use logging
logger = logging.getLogger(__name__)
logger.info("This will be sent to Application Insights")

From Environment Variable

Exporters read APPLICATIONINSIGHTS_CONNECTION_STRING automatically:

from azure.identity import DefaultAzureCredential
from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter

# Connection string from environment; AAD-authenticated ingestion via DefaultAzureCredential.
exporter = AzureMonitorTraceExporter(
    credential=DefaultAzureCredential(),
)

Azure AD Authentication

from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter

# Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
credential = DefaultAzureCredential(require_envvar=True)
# Or use a specific credential directly in production:
# See https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()

exporter = AzureMonitorTraceExporter(
    credential=credential
)

Sampling

Use ApplicationInsightsSampler for consistent sampling:

from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.sampling import ParentBasedTraceIdRatio
from azure.monitor.opentelemetry.exporter import ApplicationInsightsSampler

# Sample 10% of traces
sampler = ApplicationInsightsSampler(sampling_ratio=0.1)

trace.set_tracer_provider(TracerProvider(sampler=sampler))

Offline Storage

Configure offline storage for retry:

from azure.identity import DefaultAzureCredential
from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter

exporter = AzureMonitorTraceExporter(
    credential=DefaultAzureCredential(),
    storage_directory="/path/to/storage",  # Custom storage path
    disable_offline_storage=False  # Enable retry (default)
)

Disable Offline Storage

exporter = AzureMonitorTraceExporter(
    credential=DefaultAzureCredential(),
    disable_offline_storage=True  # No retry on failure
)

Sovereign Clouds

from azure.identity import AzureAuthorityHosts, DefaultAzureCredential
from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter

# Azure Government
credential = DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)
exporter = AzureMonitorTraceExporter(
    connection_string="InstrumentationKey=xxx;IngestionEndpoint=https://xxx.in.applicationinsights.azure.us/",
    credential=credential
)

Exporter Types

Exporter Telemetry Type Application Insights Table
AzureMonitorTraceExporter Traces/Spans requests, dependencies, exceptions
AzureMonitorMetricExporter Metrics customMetrics, performanceCounters
AzureMonitorLogExporter Logs traces, customEvents

Configuration Options

Parameter Description Default
connection_string Application Insights connection string From env var
credential Azure credential for AAD auth None
disable_offline_storage Disable retry storage False
storage_directory Custom storage path Temp directory

Best Practices

  1. Pick sync OR async and stay consistent. Do not mix azure.xxx sync clients with azure.xxx.aio async clients in the same call path. Choose one mode per module.
  2. Call provider.shutdown() / force_flush() at process exit to flush telemetry — providers are not context managers.
  3. Use BatchSpanProcessor for production (not SimpleSpanProcessor)
  4. Use ApplicationInsightsSampler for consistent sampling across services
  5. Enable offline storage for reliability in production
  6. Use Microsoft Entra authentication instead of instrumentation keys
  7. Set export intervals appropriate for your workload
  8. Use the distro (azure-monitor-opentelemetry) unless you need custom pipelines

Reference Files

File Contents
references/capabilities.md Additional non-hero capabilities, operation-group coverage, and production checklists.
references/non-hero-scenarios.md Dedicated non-hero examples for secondary/advanced scenarios.
Files (skills)
  • references
    • capabilities.md 2.1 KB
      # azure-monitor-opentelemetry-exporter-py capability coverage
      
      **SDK/package**: `azure-monitor-opentelemetry-exporter`
      
      This index maps hero scenarios in `SKILL.md` and links non-hero scenarios documented in dedicated reference files.
      
      ## Hero scenarios covered in SKILL.md
      
      - `Trace Exporter`
      - `Metric Exporter`
      - `Log Exporter`
      - `From Environment Variable`
      
      ## Non-hero scenarios
      
      - `Azure AD Authentication`: Dedicated example and implementation notes.  
        See: [`non-hero-scenarios.md#azure-ad-authentication`](non-hero-scenarios.md#azure-ad-authentication)
      - `Sampling`: Use `ApplicationInsightsSampler` for consistent sampling:  
        See: [`non-hero-scenarios.md#sampling`](non-hero-scenarios.md#sampling)
      - `Offline Storage`: Configure offline storage for retry:  
        See: [`non-hero-scenarios.md#offline-storage`](non-hero-scenarios.md#offline-storage)
      - `Disable Offline Storage`: Dedicated example and implementation notes.  
        See: [`non-hero-scenarios.md#disable-offline-storage`](non-hero-scenarios.md#disable-offline-storage)
      - `Sovereign Clouds`: Dedicated example and implementation notes.  
        See: [`non-hero-scenarios.md#sovereign-clouds`](non-hero-scenarios.md#sovereign-clouds)
      - `Exporter Types`: | Exporter | Telemetry Type | Application Insights Table |  
        See: [`non-hero-scenarios.md#exporter-types`](non-hero-scenarios.md#exporter-types)
      - `Configuration Options`: | Parameter | Description | Default |  
        See: [`non-hero-scenarios.md#configuration-options`](non-hero-scenarios.md#configuration-options)
      
      ## Related deep-dive references
      
      - [`non-hero-scenarios.md`](non-hero-scenarios.md): Dedicated non-hero examples and implementation notes.
      
      ## API breadth checklist
      
      - Verify client/auth mode for the environment before coding.
      - Confirm operation-group/method names against current Microsoft Learn API reference.
      - For Python SDKs with both sync and async clients, document both forms without a blanket preference.
      - Include cleanup/delete paths for created resources in examples.
      - Prefer idempotent create/update operations where available.
      - Validate paging/LRO/error-handling patterns for production paths.
      
    • non-hero-scenarios.md 3 KB
      # azure-monitor-opentelemetry-exporter-py non-hero scenarios
      
      These scenarios are intentionally separate from hero flows in `SKILL.md`.
      They cover secondary/advanced patterns typically used after the primary end-to-end path is working.
      
      ## Azure AD Authentication
      
      ```python
      from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
      from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter
      
      # Local dev: DefaultAzureCredential. In production, set AZURE_TOKEN_CREDENTIALS=prod or use a specific credential.
      credential = DefaultAzureCredential()
      # Or use a specific credential directly in production:
      # See https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
      # credential = ManagedIdentityCredential()
      
      exporter = AzureMonitorTraceExporter(
          credential=credential
      )
      ```
      
      ## Sampling
      
      Use `ApplicationInsightsSampler` for consistent sampling:
      
      ```python
      from opentelemetry import trace
      from opentelemetry.sdk.trace import TracerProvider
      from azure.monitor.opentelemetry.exporter import ApplicationInsightsSampler
      
      # Sample 10% of traces
      sampler = ApplicationInsightsSampler(sampling_ratio=0.1)
      
      trace.set_tracer_provider(TracerProvider(sampler=sampler))
      ```
      
      ## Offline Storage
      
      Configure offline storage for retry:
      
      ```python
      from azure.identity import DefaultAzureCredential
      from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter
      
      exporter = AzureMonitorTraceExporter(
          credential=DefaultAzureCredential(),
          storage_directory="/path/to/storage",  # Custom storage path
          disable_offline_storage=False  # Enable retry (default)
      )
      ```
      
      ## Disable Offline Storage
      
      ```python
      exporter = AzureMonitorTraceExporter(
          credential=DefaultAzureCredential(),
          disable_offline_storage=True  # No retry on failure
      )
      ```
      
      ## Sovereign Clouds
      
      ```python
      from azure.identity import AzureAuthorityHosts, DefaultAzureCredential
      from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter
      
      # Azure Government
      credential = DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)
      exporter = AzureMonitorTraceExporter(
          connection_string="InstrumentationKey=xxx;IngestionEndpoint=https://xxx.in.applicationinsights.azure.us/",
          credential=credential
      )
      ```
      
      ## Exporter Types
      
      | Exporter | Telemetry Type | Application Insights Table |
      |----------|---------------|---------------------------|
      | `AzureMonitorTraceExporter` | Traces/Spans | requests, dependencies, exceptions |
      | `AzureMonitorMetricExporter` | Metrics | customMetrics, performanceCounters |
      | `AzureMonitorLogExporter` | Logs | traces, customEvents |
      
      ## Configuration Options
      
      | Parameter | Description | Default |
      |-----------|-------------|---------|
      | `connection_string` | Application Insights connection string | From env var |
      | `credential` | Azure credential for AAD auth | None |
      | `disable_offline_storage` | Disable retry storage | False |
      | `storage_directory` | Custom storage path | Temp directory |
      
  • SKILL.md 8.9 KB
    ---
    name: azure-monitor-opentelemetry-exporter-py
    description: |
      Azure Monitor OpenTelemetry Exporter for Python. Use for low-level OpenTelemetry export to Application Insights.
      Triggers: "azure-monitor-opentelemetry-exporter", "AzureMonitorTraceExporter", "AzureMonitorMetricExporter", "AzureMonitorLogExporter".
    license: MIT
    metadata:
      author: Microsoft
      version: "1.0.0"
      package: azure-monitor-opentelemetry-exporter
    ---
    
    # Azure Monitor OpenTelemetry Exporter for Python
    
    Low-level exporter for sending OpenTelemetry traces, metrics, and logs to Application Insights.
    
    ## Installation
    
    ```bash
    pip install azure-monitor-opentelemetry-exporter
    ```
    
    ## Environment Variables
    
    ```bash
    APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=xxx;IngestionEndpoint=https://xxx.in.applicationinsights.azure.com/  # Required for all auth methods
    AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
    ```
    
    ## Authentication & Lifecycle
    
    > **🔑 Two rules apply to every code sample below:**
    >
    > 1. **Prefer `DefaultAzureCredential` for ingestion auth when supported.** `APPLICATIONINSIGHTS_CONNECTION_STRING` identifies the target Application Insights resource, and `credential=DefaultAzureCredential(...)` provides Microsoft Entra authentication.
    >    - Local dev: `DefaultAzureCredential` works as-is.
    >    - Production: set `AZURE_TOKEN_CREDENTIALS=prod` (or `AZURE_TOKEN_CREDENTIALS=<specific_credential>`) to constrain the credential chain to production-safe credentials.
    > 2. **Providers are not context managers.** Flush and shut down telemetry providers explicitly at process exit so buffers are exported deterministically.
    >
    > Snippets may abbreviate this setup, but production code should always follow both rules.
    
    ## When to Use
    
    | Scenario | Use |
    |----------|-----|
    | Quick setup, auto-instrumentation | `azure-monitor-opentelemetry` (distro) |
    | Custom OpenTelemetry pipeline | `azure-monitor-opentelemetry-exporter` (this) |
    | Fine-grained control over telemetry | `azure-monitor-opentelemetry-exporter` (this) |
    
    ## Trace Exporter
    
    ```python
    from azure.identity import DefaultAzureCredential
    from opentelemetry import trace
    from opentelemetry.sdk.trace import TracerProvider
    from opentelemetry.sdk.trace.export import BatchSpanProcessor
    from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter
    
    # Reads APPLICATIONINSIGHTS_CONNECTION_STRING from env to identify the resource;
    # DefaultAzureCredential authenticates ingestion via Microsoft Entra ID.
    exporter = AzureMonitorTraceExporter(
        credential=DefaultAzureCredential(),
    )
    
    # Configure tracer provider
    trace.set_tracer_provider(TracerProvider())
    trace.get_tracer_provider().add_span_processor(
        BatchSpanProcessor(exporter)
    )
    
    # Use tracer
    tracer = trace.get_tracer(__name__)
    with tracer.start_as_current_span("my-span"):
        print("Hello, World!")
    ```
    
    ## Metric Exporter
    
    ```python
    from azure.identity import DefaultAzureCredential
    from opentelemetry import metrics
    from opentelemetry.sdk.metrics import MeterProvider
    from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
    from azure.monitor.opentelemetry.exporter import AzureMonitorMetricExporter
    
    # Reads APPLICATIONINSIGHTS_CONNECTION_STRING from env; AAD-authenticated ingestion via DefaultAzureCredential.
    exporter = AzureMonitorMetricExporter(
        credential=DefaultAzureCredential(),
    )
    
    # Configure meter provider
    reader = PeriodicExportingMetricReader(exporter, export_interval_millis=60000)
    metrics.set_meter_provider(MeterProvider(metric_readers=[reader]))
    
    # Use meter
    meter = metrics.get_meter(__name__)
    counter = meter.create_counter("requests_total")
    counter.add(1, {"route": "/api/users"})
    ```
    
    ## Log Exporter
    
    ```python
    import logging
    from azure.identity import DefaultAzureCredential
    from opentelemetry._logs import set_logger_provider
    from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
    from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
    from azure.monitor.opentelemetry.exporter import AzureMonitorLogExporter
    
    # Reads APPLICATIONINSIGHTS_CONNECTION_STRING from env; AAD-authenticated ingestion via DefaultAzureCredential.
    exporter = AzureMonitorLogExporter(
        credential=DefaultAzureCredential(),
    )
    
    # Configure logger provider
    logger_provider = LoggerProvider()
    logger_provider.add_log_record_processor(BatchLogRecordProcessor(exporter))
    set_logger_provider(logger_provider)
    
    # Add handler to Python logging
    handler = LoggingHandler(level=logging.INFO, logger_provider=logger_provider)
    logging.getLogger().addHandler(handler)
    
    # Use logging
    logger = logging.getLogger(__name__)
    logger.info("This will be sent to Application Insights")
    ```
    
    ## From Environment Variable
    
    Exporters read `APPLICATIONINSIGHTS_CONNECTION_STRING` automatically:
    
    ```python
    from azure.identity import DefaultAzureCredential
    from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter
    
    # Connection string from environment; AAD-authenticated ingestion via DefaultAzureCredential.
    exporter = AzureMonitorTraceExporter(
        credential=DefaultAzureCredential(),
    )
    ```
    
    ## Azure AD Authentication
    
    ```python
    from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
    from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter
    
    # Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
    credential = DefaultAzureCredential(require_envvar=True)
    # Or use a specific credential directly in production:
    # See https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
    # credential = ManagedIdentityCredential()
    
    exporter = AzureMonitorTraceExporter(
        credential=credential
    )
    ```
    
    ## Sampling
    
    Use `ApplicationInsightsSampler` for consistent sampling:
    
    ```python
    from opentelemetry.sdk.trace import TracerProvider
    from opentelemetry.sdk.trace.sampling import ParentBasedTraceIdRatio
    from azure.monitor.opentelemetry.exporter import ApplicationInsightsSampler
    
    # Sample 10% of traces
    sampler = ApplicationInsightsSampler(sampling_ratio=0.1)
    
    trace.set_tracer_provider(TracerProvider(sampler=sampler))
    ```
    
    ## Offline Storage
    
    Configure offline storage for retry:
    
    ```python
    from azure.identity import DefaultAzureCredential
    from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter
    
    exporter = AzureMonitorTraceExporter(
        credential=DefaultAzureCredential(),
        storage_directory="/path/to/storage",  # Custom storage path
        disable_offline_storage=False  # Enable retry (default)
    )
    ```
    
    ## Disable Offline Storage
    
    ```python
    exporter = AzureMonitorTraceExporter(
        credential=DefaultAzureCredential(),
        disable_offline_storage=True  # No retry on failure
    )
    ```
    
    ## Sovereign Clouds
    
    ```python
    from azure.identity import AzureAuthorityHosts, DefaultAzureCredential
    from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter
    
    # Azure Government
    credential = DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)
    exporter = AzureMonitorTraceExporter(
        connection_string="InstrumentationKey=xxx;IngestionEndpoint=https://xxx.in.applicationinsights.azure.us/",
        credential=credential
    )
    ```
    
    ## Exporter Types
    
    | Exporter | Telemetry Type | Application Insights Table |
    |----------|---------------|---------------------------|
    | `AzureMonitorTraceExporter` | Traces/Spans | requests, dependencies, exceptions |
    | `AzureMonitorMetricExporter` | Metrics | customMetrics, performanceCounters |
    | `AzureMonitorLogExporter` | Logs | traces, customEvents |
    
    ## Configuration Options
    
    | Parameter | Description | Default |
    |-----------|-------------|---------|
    | `connection_string` | Application Insights connection string | From env var |
    | `credential` | Azure credential for AAD auth | None |
    | `disable_offline_storage` | Disable retry storage | False |
    | `storage_directory` | Custom storage path | Temp directory |
    
    ## Best Practices
    
    1. **Pick sync OR async and stay consistent.** Do not mix `azure.xxx` sync clients with `azure.xxx.aio` async clients in the same call path. Choose one mode per module.
    2. **Call `provider.shutdown()` / `force_flush()` at process exit to flush telemetry — providers are not context managers.**
    3. **Use BatchSpanProcessor** for production (not SimpleSpanProcessor)
    4. **Use ApplicationInsightsSampler** for consistent sampling across services
    5. **Enable offline storage** for reliability in production
    6. **Use Microsoft Entra authentication** instead of instrumentation keys
    7. **Set export intervals** appropriate for your workload
    8. **Use the distro** (`azure-monitor-opentelemetry`) unless you need custom pipelines
    
    ## Reference Files
    
    | File | Contents |
    |------|----------|
    | [references/capabilities.md](references/capabilities.md) | Additional non-hero capabilities, operation-group coverage, and production checklists. |
    | [references/non-hero-scenarios.md](references/non-hero-scenarios.md) | Dedicated non-hero examples for secondary/advanced scenarios. |
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related