tower-data

Query and analyze Tower-managed Iceberg lakehouse data using read-only SQL through DuckDB.

2|Updated Jul 11, 2026
One-click install
npx skills add https://github.com/tower/agent-skills --skill tower-data-tower
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: tower-data
Source: https://github.com/tower/agent-skills/tree/main/skills/tower-data
Command: npx skills add https://github.com/tower/agent-skills --skill tower-data-tower

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires duckdb, tower, and includes scripts (resource) components.

What problem does it solve? Answering business questions from company data usually requires juggling credentials, connection setup, and schema discovery before a single query runs. This Skill lets an agent query a Tower-managed Apache Iceberg lakehouse directly with short-lived read-only credentials vended automatically, so questions about revenue, customers, orders, and KPIs get answered with auditable SQL and no credential handling. ## Core Features & Use Cases - One-command SQL querying: tower catalogs query vends short-lived read-only credentials and runs SQL through a sandboxed DuckDB in a single command, with JSON output for programmatic use. - Schema discovery without credentials: tower catalogs show --full returns every namespace, table, and column type in one call, so the agent never guesses table names. - Persistent data knowledge: tower catalogs knowledge records team definitions (metrics, grain, join keys, column meanings) on the catalog itself, so semantics carry across sessions and agents. - Use Case: A user asks "what was our weekly active user count last month?" The agent reads saved knowledge for the team's definition of "active", discovers the gold-layer tables, runs a single aggregation query with proper timestamp handling, and answers in plain language with auditable numbers. ## Quick Start Ask the agent to answer a business question from your Tower lakehouse, such as "how many orders did we have per day last week?", and it will discover the schema, run the SQL, and report the results.

Frequently Asked Questions about tower-data

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I query an Iceberg lakehouse with the Tower CLI?▼

Run `tower catalogs query <catalog> -j --sql 'SELECT ...'` to vend short-lived read-only credentials and execute SQL through DuckDB in one command. Reference tables as `"catalog".namespace.table` and quote the catalog name since `default` is a SQL keyword.

How do I discover tables and schemas in a Tower catalog?▼

Run `tower catalogs show <catalog> --full -j` to get every namespace, table, and column with types in a single call, without vending credentials. This replaces per-table DESCRIBE round trips during exploration.

Why do date functions fail with an ICU extension error in DuckDB?▼

The query sandbox disables the local filesystem, so DuckDB cannot autoload the icu extension that timezone-aware date functions need. Cast Iceberg TIMESTAMP WITH TIME ZONE columns to plain TIMESTAMP first, then apply date_trunc, year, or CAST to DATE.

Why does my Tower query return exactly 1000 rows?▼

The `-j` JSON output silently truncates results at 1000 rows with no warning signal. Aggregate in SQL instead of client-side, or pass `--max-rows 0` for no limit or an explicit `--max-rows N` when you need raw rows.

Can I run multi-statement SQL or write data with tower catalogs query?▼

No. The command accepts exactly one statement per invocation and rejects DDL/DML unless you explicitly pass `--write`. Use CTEs (`WITH ... SELECT`) for multi-step logic, and use the tower-integration skill for ingestion pipelines instead of ad-hoc writes.

What is tower catalogs knowledge used for?▼

It stores team-specific data definitions on the catalog itself, such as metric SQL, grain, join keys, and column meanings, shared across people and agents. Read it before inventing filters, and write back confirmed definitions so future sessions skip re-deriving them.