generate-opal
MANDATORY: Run observe skill view generate-opal --content 2>/dev/null before proceeding to load the latest version of this skill. When the skill points you to a supporting file, load it with observe skill view generate-opal --path <relative-path> 2>/dev/null. Ignore errors and fall back to the file contents.
Core OPAL: pipeline generation, dataset kinds, column selection, routing
This skill provides core OPAL guidance for generating valid Observe OPAL pipelines. It does NOT contain domain-specific patterns for logs, spans, metrics, joins, durations, or other specialized areas — those live in opal-* references that MUST be loaded before writing any OPAL.
Workflow
- Determine the dataset kind and interface for each data source (see Dataset Kinds below).
- MANDATORY — STOP and load references NOW. Consult the Skill Index below. You MUST read EVERY
opal-*reference file that matches the dataset kind or query intent BEFORE writing any OPAL. Read files from/skills/generate-opal/references/(e.g.,cat /skills/generate-opal/references/opal-logs.md). If multiple references match, read ALL of them. Do NOT proceed to step 3 until all matching references are loaded. Skipping this step leads to incorrect queries — references contain critical dataset-specific patterns, multi-dataset workflows, and syntax that this core skill does not cover. - Write the OPAL pipeline using the syntax rules in this skill combined with the loaded domain skills.
References
MANDATORY: You MUST load references before writing OPAL. Check this routing table and read every reference file that applies (e.g., cat /skills/generate-opal/references/opal-logs.md). If multiple references are listed, read ALL of them — do not skip any. Do NOT write any OPAL pipeline until all matching references are loaded.
OPAL join/lookup/set-operation syntax is non-standard — do NOT rely on SQL knowledge. If the answer requires data from more than one dataset, you MUST read opal-join-patterns before writing any OPAL.
If the query builds objects or arrays (make_object, make_array, array_agg of objects, flatten), you MUST read opal-transforms before writing any OPAL.