Coral CLI Skill
Use this skill to answer data questions by querying connected sources with coral sql.
Discovery-First Workflow
Before writing any query, follow these steps:
- List available tables:
SELECT schema_name, table_name, description, required_filters, guide FROM coral.tables;- Read the
guidecolumn — it contains per-table query patterns and gotchas. Use it. - Check required filters for the table you want to query. Queries against tables with required filters will fail without the corresponding WHERE clauses.
SELECT column_name, data_type, is_required_filter, is_virtual, description
FROM coral.columns
WHERE schema_name = '<source>' AND table_name = '<table>'
ORDER BY ordinal_position;- Inspect source inputs when config affects the query or answer. This matters when you need source-specific values such as Datadog's
DD_SITEor Sentry'sSENTRY_ORGto build absolute links, explain account scope, or debug missing configuration.
SELECT key, kind, value, default_value, hint, required, is_set
FROM coral.inputs
WHERE schema_name = '<source>'
ORDER BY key;- Then query:
coral sql "SELECT <columns> FROM <source>.<table> WHERE <required_filters> LIMIT 10"Query Guidance
- Virtual columns: Filter-only columns accepted in WHERE clauses but returning NULL in results. Check
is_virtualincoral.columns. coral.inputs: Use it to inspect per-source variables and secrets before making assumptions about URLs, org names, regions, or other source config. Secret rows always returnvalue = NULL; useis_setto confirm whether a secret is configured.- Cross-source joins: Standard SQL JOINs work across source schemas. Cross-source joins execute in memory after source scans complete.