.cursor/skills/resource-yaml-creation/SKILL.md
Guidance for creating ado resource YAML files (discoveryspace, operation, actuatorconfiguration, samplestore). Covers metadata conventions, dynamic reference resolution with --use-latest/--with/--set, space design principles, avoiding duplicate resources, and validation. Use when creating or editing any ado resource YAML file.
npx skillsauth add ibm/ado resource-yaml-creationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
For CLI command syntax, see using-ado-cli. For full problem formulation workflow, see formulate-discovery-problem.
Every resource YAML should include a metadata block. The CLI uses these for
display (ado get --details) and filtering (ado get --label,
ado get --query).
metadata:
name: my_space # short human-readable identifier
description: | # longer explanation of purpose
Optimize learning rate and batch size for ResNet training.
labels:
project: my_project # arbitrary key=value pairs for filtering
team: ml_team
name and description are shown by ado get --detailslabels support filtering: uv run ado get spaces --label project=my_project--query supports path-based filtering across any field:
uv run ado get spaces --query "metadata.name=my_space"Resource YAMLs often reference other resources by ID. Leave these as placeholders and resolve them at creation time — do not hard-code IDs.
Queries the current context's metastore to find the most recently created resource of the given type.
# Create space, then operation that references it — no manual ID copy
uv run ado create space -f space.yaml
uv run ado create operation -f operation.yaml --use-latest space
Creates a dependency inline and injects its ID automatically.
# Create space + actuatorconfiguration + operation in one command
# Note: You cannot use --with store=store.yaml or store_id here
# The space must use default store or have a valid store_id in the YAML
uv run ado create operation -f operation.yaml \
--with space=space.yaml \
--with actuatorconfiguration=config.yaml
Note: Can also specify resources ids to --with
uv run ado create operation -f operation.yaml \
--with space=space-abcd-1234
Overrides individual fields in the YAML at creation time without editing the file. Useful for environment-specific values or quick one-off changes.
# Override the sample store identifier
uv run ado create space -f space.yaml --set sampleStoreIdentifier=my_store
# Override a nested field using dot notation
uv run ado create operation -f operation.yaml --set parameters.budget=100
--set takes path=JSON_document pairs and can be used multiple times.
Always validate before creating:
uv run ado create RESOURCETYPE -f FILE --dry-run
--dry-run validates the YAML without creating the resource.
Use ado template to generate a starter YAML for any resource type:
# Generic discoveryspace template
uv run ado template discoveryspace
# Space template pre-filled for a specific experiment
uv run ado template discoveryspace --from-experiment my_experiment
# Operation template for a specific operator
uv run ado template operation --operator-name ray_tune
# ActuatorConfiguration template for a specific actuator
uv run ado template actuatorconfiguration --actuator-identifier my_actuator
See formulate-discovery-problem for further details on creating discovery spaces.
Before creating (ado create space), check if a matching space already exists:
# Match by space config (entity space + experiments)
uv run ado get spaces --matching-space space.yaml
# Match by space ID
uv run ado get spaces --matching-space-id space-abc123
# Filter by label
uv run ado get spaces --label project=my_project --details
Reuse an existing space rather than creating a new one — it means the new operation benefits from measurements already collected.
Constitutive properties vs. parameterization:
# Correct: parameterization overrides experiment default, keeps it out of space
experiments:
- actuatorIdentifier: trainer
experimentIdentifier: train_model
parameterization:
- property:
identifier: optimizer
value: adam # overrides default "sgd"
# Incorrect: single-valued domain should be parameterization instead
entitySpace:
- identifier: optimizer
propertyDomain:
variableType: DISCRETE_VARIABLE_TYPE
values: [adam] # single value — use parameterization instead
Creating a space with a fresh samplestore:
uv run ado create space -f space.yaml --new-sample-store
Before creating, check if a compatible configuration already exists:
uv run ado get actuatorconfigurations --details
uv run ado get actuatorconfigurations --label actuator=my_actuator
Reuse an existing actuator configuration when appropriate rather than creating duplicates.
You rarely need to create a samplestore explicitly. Every project comes with a
default samplestore that is suitable for most use cases.
Create a new samplestore only when you explicitly want a clean slate with no shared measurement history.
uv run ado create samplestore -f samplestore.yaml
development
Builds a picture of work in an ado project: activity volume, spaces and operations created over time, experiments and operation configs used etc. Use to create a project/context overview report, summarize what the team has been doing in an ado project, report trends across spaces/operations, or to onboard onto an ado project.
tools
Guidelines for using ado CLI commands and documenting them correctly. Use when writing documentation that includes ado commands, verifying CLI syntax, or explaining ado CLI usage patterns to users.
tools
Run ado operations on remote Ray clusters using --remote execution context files. Use when the user wants to create an operation, asks about remote clusters, wants to ship local plugins or data files to a cluster, or asks about execution context YAML files. Also applies proactively when creating an operation if execution context files are present in the workspace.
tools
Query ado metadata and measurement data using CLI commands. Use when the user needs to find resources, filter by metadata, retrieve entities and measurements, or get resource schemas. Covers metastore queries (operations, discoveryspaces, samplestores, datacontainers, actuatorconfigurations) and samplestore queries (entities and measurements).