Rules
- Run all scripts from the skill root directory with
uv run scripts/<name>.py. - Never print or log credential values — the SDK reads them from the environment.
- Scripts that delete or mutate state require
--confirm. Always pass it explicitly; never bypass it. - When the user does not specify a resource group, omit
--resource-groupso the SDK uses its configured default. - For LLM deployments: the scenario ID, executable ID, and model parameter names come from
genai-hub-foundation-models— invoke it first if those values are unknown. - Deployment configuration naming convention: use
{executable_id}--{model_name}for LLM deployments (e.g.azure-openai--gpt-4o-mini). Before creating a configuration, check whether one with that name already exists viaget_configurations.py --scenario-id <id>and reuse it to avoid duplicates.
List / Inspect Scenarios
# List all scenarios
uv run scripts/get_scenarios.py
# Inspect a specific scenario and its versions
uv run scripts/get_scenarios.py --scenario-id <id>
uv run scripts/get_scenarios.py --scenario-id <id> --response-format detailed
# JSON output for piping
uv run scripts/get_scenarios.py --json
List Executables
# List executables for a scenario
uv run scripts/get_executables.py --scenario-id <id>
# Inspect a specific executable (includes parameters and input artifacts)
uv run scripts/get_executables.py --scenario-id <id> --executable-id <id>
uv run scripts/get_executables.py --scenario-id <id> --executable-id <id> --response-format detailed
# JSON output
uv run scripts/get_executables.py --scenario-id <id> --json
Parameters are only returned when inspecting a single executable (--executable-id). The list view returns id, name, and description only.
Configurations
# List configurations
uv run scripts/get_configurations.py
uv run scripts/get_configurations.py --scenario-id <id>
uv run scripts/get_configurations.py --response-format detailed
uv run scripts/get_configurations.py --json
# Inspect a specific configuration
uv run scripts/get_configurations.py --configuration-id <id>
# Create a configuration (binds parameters to an executable)
uv run scripts/create_configuration.py \
--name my-config \
--scenario-id <id> \
--executable-id <id> \
--param modelName=gpt-4o \
--param temperature=0.7
If a deployment fails or stays PENDING after several minutes, verify parameter names and values against the executable's declared parameters:
uv run scripts/get_executables.py --scenario-id <id> --executable-id <id> --response-format detailed
Deployments
Deployments serve inference endpoints. The standard flow is: create (or reuse) a configuration, then create a deployment from it.
Configuration naming convention
Always check whether a matching configuration already exists before creating one, to avoid duplicates:
# Check existing configurations before creating
uv run scripts/get_configurations.py --scenario-id <scenario-id> --json | jq '.[] | select(.name == "<expected-name>")'
Naming convention:
- LLM:
{executable_id}--{model_name}— e.g.azure-openai--gpt-4o-mini - Orchestration:
orchestration - Custom: choose a descriptive name
LLM deployment (from genai-hub-foundation-models handoff)
# 1. Create configuration (skip if one with this name already exists):
uv run scripts/create_configuration.py \
--name azure-openai--gpt-4o-mini \
--scenario-id foundation-models \
--executable-id azure-openai \
--param modelName=gpt-4o-mini \
--param modelVersion=latest
# 2. Deploy:
uv run scripts/create_deployment.py --configuration-id <config-id> --wait
Orchestration deployment
# 1. Create configuration (skip if "orchestration" config already exists):
uv run scripts/create_configuration.py \
--name orchestration \
--scenario-id orchestration \
--executable-id orchestration
# 2. Deploy:
uv run scripts/create_deployment.py --configuration-id <config-id> --wait --timeout 600
List and inspect deployments
# List all deployments
uv run scripts/get_deployments.py
# Filter by status or scenario or executable
uv run scripts/get_deployments.py --status RUNNING
uv run scripts/get_deployments.py --scenario orchestration
uv run scripts/get_deployments.py --executable-id azure-openai --status RUNNING
uv run scripts/get_deployments.py --executable-id azure-openai --status RUNNING --json
# Inspect one deployment
uv run scripts/get_deployments.py --deployment-id <id>
uv run scripts/get_deployments.py --deployment-id <id> --response-format detailed
uv run scripts/get_deployments.py --deployment-id <id> --json
Stop, patch, delete, logs
# Stop a deployment
uv run scripts/stop_deployment.py --deployment-id <id> --confirm
uv run scripts/stop_deployment.py --deployment-id <id> --confirm --wait
# Patch (swap configuration on a running deployment)
uv run scripts/patch_deployment.py --deployment-id <id> --configuration-id <new-config-id>
# Delete (must be STOPPED or DEAD first)
uv run scripts/delete_deployment.py --deployment-id <id> --confirm
# Stop and delete in one step:
uv run scripts/delete_deployment.py --deployment-id <id> --confirm --auto-stop
# Deployment logs
uv run scripts/get_deployment_logs.py --deployment-id <id>
uv run scripts/get_deployment_logs.py --deployment-id <id> --tail 50
uv run scripts/get_deployment_logs.py --deployment-id <id> --order asc
uv run scripts/get_deployment_logs.py --deployment-id <id> --json
# Remove duplicate LLM deployments (only affects LLM deployments with a model name)
uv run scripts/dedup_deployments.py --dry-run
uv run scripts/dedup_deployments.py
Handoffs
- Need a Bearer token or credential setup? → invoke
aicore-admin-resources - Need executable ID, model name, or model capabilities? → invoke
genai-hub-foundation-models - Want to list available models or providers? → invoke
genai-hub-foundation-models