Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add exasol-labs/exasol-agent-skills --skill exasol-udfsgit clone --depth 1 https://github.com/exasol-labs/exasol-agent-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/exasol-labs/exasol-agent-skills/exasol-udfs)<a href="https://agentmods.dev/skills/exasol-labs/exasol-agent-skills/exasol-udfs"><img src="https://agentmods.dev/badge/skills/exasol-labs/exasol-agent-skills/exasol-udfs/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/exasol-labs/exasol-agent-skills/exasol-udfs"><img src="https://agentmods.dev/badge/skills/exasol-labs/exasol-agent-skills/exasol-udfs.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00129 | $0.01203 |
| Opus 5 | $0.00064 | $0.00602 |
| Sonnet 5 | $0.00026 | $0.00241 |
| Haiku 4.5 | $0.00013 | $0.00120 |
Grade A, and why
exasol-udfs scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 76 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Exasol UDFs & Script Language Containers
UDFs extend SQL with custom logic that runs inside the Exasol cluster: per-row transforms, custom aggregation, ML inference against a model in BucketFS, external API calls, and DataFrame batch processing. They execute in a Script Language Container — a Docker-based runtime whose contents you can replace when the default packages are not enough.
Two Decisions Before Any Route
SCALAR or SET?
| SCALAR | SET | |
|---|---|---|
| Input | One row at a time | Group of rows (via GROUP BY) |
| Output | RETURNS <type> (single value) |
EMITS (col1 TYPE, ...) (zero or more rows) |
| Row iteration | Not needed | ctx.next() loop required |
| SQL usage | SELECT udf(col) FROM t |
SELECT udf(col) FROM t GROUP BY key |
| Use case | Per-row transforms | Aggregation, ML batch predict, multi-row emit |
Which language?
| Language | Startup | Best For | Expandable via SLC? |
|---|---|---|---|
| Python 3 (3.10 or 3.12) | ~200ms | ML, data science, pandas, string processing | Yes |
| Java (11 or 17) | ~1s | Enterprise libs, type safety, Virtual Schema adapters | Yes |
| Lua 5.4 | <10ms | Low-latency transforms, row-level security | No (natively compiled into Exasol) |
| R (4.4) | ~200ms | Statistical modeling, R model deployment | Yes |
Routing Algorithm
Choose the narrowest matching route. Several often apply — a Python UDF that reads a model needs routes 1 and 2 — so load all matching references.
-
Write the
CREATE SCRIPTstatement — syntax for any language, variadic scripts- Trigger phrases:
CREATE SCRIPT,SCALAR,SET EMITS,RETURNS,variadic script,dynamic parameters,EMITS(...),default_output_columns,%scriptclass,%jar,R UDF,Lua UDF - Load:
references/create-script-syntax.md
- Trigger phrases:
-
Python UDF internals — context API, type mapping, DataFrames, BucketFS reads, testing
- Trigger phrases:
Python UDF,ctx.emit,ctx.next,get_dataframe,pandas,pickle,load model,udf-mock-python,dynamic import,memory limit - Load:
references/udf-python.md
- Trigger phrases:
What ships with it
5 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago Changed · -215 lines · +54 tokens per session a41406f7d5e7
- 12d ago First seen · 291 lines · 75 tokens per session scan A 0287d1d94326
exasol-udfs is a skill published in the GitHub repository exasol-labs/exasol-agent-skills (10 stars, last pushed 8d ago), licensed MIT. It adds 129 tokens to every session and 1,203 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
dynamodb
AWS DynamoDB NoSQL database for scalable data storage. Use when designing table schemas, writing queries, configuring indexes, managing capacity, implementing single-table design, or troubleshooting performance issues.
rds
AWS RDS relational database service for managed databases. Use when provisioning databases, configuring backups, managing replicas, troubleshooting connectivity, or optimizing performance.
using-datavault4dbt
Builds Data Vault 2 models in dbt with the datavault4dbt package — staging, hubs, links, satellites, and business-vault entities — using the YAML-metadata macro pattern with correct hashkeys, hashdiffs, naming, and materializations. Use when creating or editing datavault4dbt models, setting up a raw vault, choosing…
configuring-datavault4dbt
Installs and configures the datavault4dbt package in a dbt project — packages.yml, copying the global vars into dbtproject.yml, hash and naming settings, and per-adapter setup. Use when setting up datavault4dbt, installing the package, changing hash/naming global variables, or adapting configuration for a specific…
rehashing-datavault4dbt-entities
Recalculates hashkeys and hashdiffs across an existing raw vault with datavault4dbt's rehashing macros after a change to the hash algorithm, datatype, trimming, or case sensitivity — including the v1→v2.0.0 upgrade. Use when changing hash global variables, migrating hash logic, or upgrading datavault4dbt without…
testing-a-datavault4dbt-project
Adds Data Vault 2 technical tests to a datavault4dbt project — hashkey uniqueness and not-null, link-to-hub referential integrity, and satellite key+load-date uniqueness — as dbt soft-constraint tests in YAML. Use when adding or reviewing tests for hubs, links, or satellites, or validating raw vault integrity.