Chdb SQL
vemetric/vemetric
A skill your agent uses when the user wants to run SQL — especially analytical SQL — on local files (parquet/csv/json), URLs, S3 paths, or remote databases (Postgres, MySQL, MongoDB, ClickHouse…
Query indexed Tempo chain data via tidx HTTP API and CLI. An agent skill from tempoxyz/tidx.
$ npx skills add tempoxyz/tidx --skill querying-tempo -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tempoxyz/tidx querying-tempo --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/tempoxyz/tidx.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/querying-tempo .claude/skills/querying-tempo && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "querying-tempo" agent skill from https://github.com/tempoxyz/tidx/tree/main/.agents/skills/querying-tempo into .claude/skills/querying-tempo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "querying-tempo", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/tempoxyz/tidx/tree/main/.agents/skills/querying-tempoType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add tempoxyz/tidx --skill querying-tempo -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tempoxyz/tidx querying-tempo --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tempoxyz/tidx.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/querying-tempo .agents/skills/querying-tempo && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "querying-tempo" agent skill from https://github.com/tempoxyz/tidx/tree/main/.agents/skills/querying-tempo into .agents/skills/querying-tempo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "querying-tempo", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tempoxyz/tidx --skill querying-tempo -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tempoxyz/tidx querying-tempo --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tempoxyz/tidx.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/querying-tempo .cursor/skills/querying-tempo && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "querying-tempo" agent skill from https://github.com/tempoxyz/tidx/tree/main/.agents/skills/querying-tempo into .cursor/skills/querying-tempo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "querying-tempo", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/tempoxyz/tidx.git --path .agents/skills/querying-tempo--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add tempoxyz/tidx --skill querying-tempo -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tempoxyz/tidx querying-tempo --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tempoxyz/tidx.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/querying-tempo .gemini/skills/querying-tempo && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "querying-tempo" agent skill from https://github.com/tempoxyz/tidx/tree/main/.agents/skills/querying-tempo into .gemini/skills/querying-tempo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "querying-tempo", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install tempoxyz/tidx querying-tempoInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add tempoxyz/tidx --skill querying-tempo -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tempoxyz/tidx.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/querying-tempo .github/skills/querying-tempo && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "querying-tempo" agent skill from https://github.com/tempoxyz/tidx/tree/main/.agents/skills/querying-tempo into .github/skills/querying-tempo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "querying-tempo", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tempoxyz/tidx --skill querying-tempo -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tempoxyz/tidx querying-tempo --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tempoxyz/tidx.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/querying-tempo .opencode/skills/querying-tempo && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "querying-tempo" agent skill from https://github.com/tempoxyz/tidx/tree/main/.agents/skills/querying-tempo into .opencode/skills/querying-tempo/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "querying-tempo", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
querying-tempoQuery indexed Tempo chain data via tidx HTTP API and CLI. An agent skill from tempoxyz/tidx.
Querying Tempo is an agent skill from tempoxyz/tidx. Query indexed Tempo chain data via tidx HTTP API and CLI. Covers SQL queries for blocks, txs, logs, receipts, event CTE decoding, engine routing (PostgreSQL OLTP vs ClickHouse OLAP), live streaming. Use when querying Tempo chain data or working with tidx.
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Databases, covering Data warehousing, REST APIs and SQL. It works with PostgreSQL, ClickHouse, SQL and Rust. The repository describes itself as: tidx indexes Tempo chain data into a hybrid PostgreSQL + ClickHouse architecture for fast point lookups (OLTP) and lightning-fast analytics (OLAP). The licence is MIT.
Read from SKILL.md and the folder at commit c075f3a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Querying Tempo loads about 3.1k tokens when it runs. Until then it costs about 68 tokens; SKILL.md has 840 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from tempoxyz/tidx at commit c075f3a, republished under its MIT licence (© tempoxyz). 840 words, ~3,060 tokens.
.claude/skills/querying-tempo/SKILL.md (or your agent's skills folder).tidx exposes indexed Tempo chain data through SQL. Queries run against four core tables: blocks, txs, logs, and receipts. Two query engines are available: PostgreSQL (OLTP) for point lookups and real-time queries, and ClickHouse (OLAP) for heavy analytics.
GET /query?sql&chainId&engine&signature&timeout_ms&limit&live| Param | Required | Default | Description |
|---|---|---|---|
sql | yes | — | SQL query (SELECT only) |
chainId | yes | — | Chain ID (e.g., 4217 for Presto mainnet) |
engine | no | auto | Force engine: postgres or clickhouse |
signature | no | — | Event signature for CTE decoding (repeatable) |
timeout_ms | no | 5000 | Query timeout in ms |
limit | no | 10000 | Max rows (hard cap: 10,000) |
live | no | false | Enable SSE live streaming (PostgreSQL only) |
Response format:
{
"ok": true,
"columns": ["num", "hash", "gas_used"],
"rows": [[1, "0xabc...", 21000]],
"row_count": 1,
"engine": "postgres",
"query_time_ms": 12.5
}tidx query --url <url> --chain-id <chain_id> [OPTIONS] <sql>| Flag | Short | Required | Default | Description |
|---|---|---|---|---|
--url | -u | yes | — | tidx HTTP API URL (e.g., http://localhost:8080) |
--chain-id | -n | yes | — | Chain ID |
--engine | -e | no | auto | Force engine: postgres or clickhouse |
--format | -f | no | table | Output: table, json, csv, toon |
--limit | -l | no | 10000 | Max rows |
--signature | -s | no | — | Event signature (repeatable) |
--timeout | -t | no | 30000 | Timeout in ms |
tidx query --url http://localhost:8080 --chain-id 4217 \
"SELECT num FROM blocks ORDER BY num DESC LIMIT 5"
# With basic auth (credentials extracted from URL)
tidx query --url http://user:pass@localhost:8080 --chain-id 4217 \
"SELECT num FROM blocks ORDER BY num DESC LIMIT 5"| Column | Type | Description |
|---|---|---|
num | INT8 | Block number |
hash | BYTEA | Block hash |
parent_hash | BYTEA | Parent block hash |
timestamp | TIMESTAMPTZ | Block timestamp |
timestamp_ms | INT8 | Timestamp in milliseconds |
gas_limit | INT8 | Gas limit |
gas_used | INT8 | Gas used |
miner | BYTEA | Block producer |
extra_data | BYTEA | Extra data (nullable) |
| Column | Type | Description |
|---|---|---|
block_num | INT8 | Block number |
block_timestamp | TIMESTAMPTZ | Block timestamp |
idx | INT4 | Transaction index |
hash | BYTEA | Transaction hash |
type | INT2 | Transaction type |
from | BYTEA | Sender address |
to | BYTEA | Recipient (nullable for contract creation) |
value | TEXT | Value in wei (text for uint256) |
input | BYTEA | Calldata |
gas_limit | INT8 | Gas limit |
max_fee_per_gas | TEXT | Max fee per gas |
max_priority_fee_per_gas | TEXT | Max priority fee |
gas_used | INT8 | Gas used (nullable) |
nonce_key | BYTEA | Nonce key |
nonce | INT8 | Nonce |
fee_token | BYTEA | Fee token address (nullable, Tempo-specific) |
fee_payer | BYTEA | Fee payer address (nullable, Tempo-specific) |
calls | JSONB | Internal calls (nullable) |
call_count | INT2 | Number of calls |
| Column | Type | Description |
|---|---|---|
block_num | INT8 | Block number |
block_timestamp | TIMESTAMPTZ | Block timestamp |
log_idx | INT4 | Log index |
tx_idx | INT4 | Transaction index |
tx_hash | BYTEA | Transaction hash |
address | BYTEA | Contract address |
selector | BYTEA | First 4 bytes of topic0 (event selector) |
topic0–topic3 | BYTEA | Event topics (nullable) |
data | BYTEA | ABI-encoded event data |
| Column | Type | Description |
|---|---|---|
block_num | INT8 | Block number |
block_timestamp | TIMESTAMPTZ | Block timestamp |
tx_idx | INT4 | Transaction index |
tx_hash | BYTEA | Transaction hash |
from | BYTEA | Sender |
to | BYTEA | Recipient (nullable) |
contract_address | BYTEA | Deployed contract address (nullable) |
gas_used | INT8 | Gas used |
cumulative_gas_used | INT8 | Cumulative gas |
effective_gas_price | TEXT | Effective gas price (nullable) |
status | INT2 | 1 = success, 0 = revert (nullable) |
fee_payer | BYTEA | Fee payer (nullable, Tempo-specific) |
# Latest 5 blocks
curl "http://localhost:8080/query?chainId=4217&sql=SELECT num, gas_used FROM blocks ORDER BY num DESC LIMIT 5"
# Block by number
tidx query "SELECT * FROM blocks WHERE num = 1000000"
# Blocks in a time range
tidx query "SELECT num, gas_used FROM blocks WHERE timestamp > now() - interval '1 hour' ORDER BY num DESC LIMIT 100"# Lookup by hash
tidx query "SELECT * FROM txs WHERE hash = '0x1234...'"
# Transactions from an address (uses `from` index)
curl "http://localhost:8080/query?chainId=4217&sql=SELECT hash, value, gas_used FROM txs WHERE \"from\" = '0xdAC17F958D2ee523a2206206994597C13D831ec7' ORDER BY block_num DESC LIMIT 10"
# Contract creations
tidx query "SELECT hash, \"from\" FROM txs WHERE \"to\" IS NULL ORDER BY block_num DESC LIMIT 10"# Failed transactions
tidx query "SELECT tx_hash, \"from\", gas_used FROM receipts WHERE status = 0 ORDER BY block_num DESC LIMIT 10"
# Contract deployments
tidx query "SELECT tx_hash, contract_address FROM receipts WHERE contract_address IS NOT NULL ORDER BY block_num DESC LIMIT 10"
# Transactions paid by a fee payer (Tempo-specific)
tidx query "SELECT tx_hash, \"from\", fee_payer FROM receipts WHERE fee_payer IS NOT NULL ORDER BY block_num DESC LIMIT 10"# Logs by contract address
tidx query "SELECT block_num, tx_hash, data FROM logs WHERE address = '0xABC...' ORDER BY block_num DESC LIMIT 10"
# Logs by event selector
tidx query "SELECT * FROM logs WHERE selector = '0xddf252ad' ORDER BY block_num DESC LIMIT 10"Event CTEs let you decode raw log data into typed columns using an ABI event signature. Pass the signature via --signature / &signature= and query the event name as a virtual table.
Signature format: EventName(type [indexed] name, ...)
# CLI
tidx query \
-s "Transfer(address indexed from, address indexed to, uint256 value)" \
'SELECT "from", "to", "value" FROM Transfer ORDER BY block_num DESC LIMIT 10'
# HTTP
curl "http://localhost:8080/query?chainId=4217&signature=Transfer(address%20indexed%20from,%20address%20indexed%20to,%20uint256%20value)&sql=SELECT%20%22from%22,%20%22to%22,%20%22value%22%20FROM%20Transfer%20ORDER%20BY%20block_num%20DESC%20LIMIT%2010"Filters on indexed params are automatically pushed down to topic-level WHERE clauses for index utilization:
tidx query \
-s "Transfer(address indexed from, address indexed to, uint256 value)" \
'SELECT "to", "value" FROM Transfer WHERE "from" = '\''0xdAC17F958D2ee523a2206206994597C13D831ec7'\'' ORDER BY block_num DESC LIMIT 10'The "from" = '0x...' filter is rewritten to topic1 = '\x000...dac17f...' at the raw logs level.
tidx query \
-s "Transfer(address indexed from, address indexed to, uint256 value)" \
'SELECT "from", "to", "value" FROM Transfer WHERE address = '\''0xABC...'\'' ORDER BY block_num DESC LIMIT 10'address and block_num are raw columns that are always pushed down into the CTE.
tidx query \
-s "Transfer(address indexed from, address indexed to, uint256 value)" \
-s "Approval(address indexed owner, address indexed spender, uint256 value)" \
'SELECT * FROM Transfer LIMIT 5'Each CTE always includes these raw columns: block_num, block_timestamp, log_idx, tx_idx, tx_hash, address, selector, topic1, topic2, topic3, data.
Plus decoded columns from the signature params (e.g., "from", "to", "value" for Transfer).
address, uint8–uint256, int8–int256, bool, bytes, bytes1–bytes32, string
Available for manual decoding in raw queries (not needed with CTEs):
abi_uint(bytea) → NUMERIC — Decode unsigned integerabi_int(bytea) → NUMERIC — Decode signed integerabi_address(bytea) → BYTEA — Extract 20-byte address from 32-byte slotabi_bool(bytea) → BOOLEAN — Decode booleanabi_bytes(bytea, offset) → BYTEA — Decode dynamic bytesabi_string(bytea, offset) → TEXT — Decode dynamic stringformat_address(bytea) → TEXT — Format as 0x... hex stringIn PostgreSQL queries, '0x...' hex literals (40+ chars) are automatically converted to '\x...' bytea format. You can write:
WHERE "from" = '0xdAC17F958D2ee523a2206206994597C13D831ec7'No need to manually use '\x...' syntax.
Best for:
# Point lookup (fast, uses hash index)
curl "http://localhost:8080/query?chainId=4217&sql=SELECT * FROM txs WHERE hash = '0x1234...'&engine=postgres"
# Recent activity (fast, uses block_num DESC index)
curl "http://localhost:8080/query?chainId=4217&sql=SELECT * FROM blocks ORDER BY num DESC LIMIT 10&engine=postgres"engine=clickhouseBest for:
# Daily gas usage (heavy aggregation → ClickHouse)
curl "http://localhost:8080/query?chainId=4217&engine=clickhouse&sql=SELECT toDate(block_timestamp) as day, SUM(gas_used) as total_gas, COUNT(*) as tx_count FROM txs GROUP BY day ORDER BY day DESC LIMIT 30"
# Transfer volume by token (full scan with decode → ClickHouse)
curl "http://localhost:8080/query?chainId=4217&engine=clickhouse&signature=Transfer(address%20indexed%20from,%20address%20indexed%20to,%20uint256%20value)&sql=SELECT address as token, COUNT(*) as transfers, SUM(\"value\") as volume FROM Transfer GROUP BY token ORDER BY transfers DESC LIMIT 20"| Use case | Engine | Why |
|---|---|---|
| Tx by hash | PostgreSQL | B-tree index, O(1) |
| Address tx history | PostgreSQL | Indexed, small result |
| Latest N blocks | PostgreSQL | Index scan on num DESC |
| Live streaming (SSE) | PostgreSQL | Only engine that supports live=true |
| Daily/hourly aggregations | ClickHouse | Columnar scan, fast GROUP BY |
| Token holder snapshots | ClickHouse | Full scan + SUM |
| Top contracts by gas | ClickHouse | Full scan + aggregation |
| Time-series charts | ClickHouse | Columnar, time functions |
Rule of thumb: If your query has a tight WHERE on an indexed column → PostgreSQL. If it scans many rows with GROUP BY → ClickHouse.
Add live=true to get real-time updates via Server-Sent Events. PostgreSQL only.
curl -N "http://localhost:8080/query?chainId=4217&live=true&sql=SELECT num, gas_used FROM blocks ORDER BY num DESC LIMIT 1"Events:
result — Query results for each new blocklagged — Client fell behind, some blocks skippederror — Query error© tempoxyz, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/querying-tempo of tempoxyz/tidx.
Open the folder on GitHubat commit c075f3a
Querying Tempo next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Querying Tempo this skilltempoxyz/tidx | 107 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Chdb SQLvemetric/vemetric | 394 | 1 repos | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Semantic Analystsidequery/sidemantic | 129 | — | ~982 | Automated safety check: Pass | AGPL-3.0 | |
| Database MigrationRain-kl/OpenFlare | 288 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Optimizing Clickhouse And Hogql QueriesPostHog/posthog | 40k | — | ~5.7k | Automated safety check: Pass | Custom licence | |
| Gram Demo Seedspeakeasy-api/gram | 272 | — | ~2.5k | Automated safety check: Pass | AGPL-3.0 |
vemetric/vemetric
A skill your agent uses when the user wants to run SQL — especially analytical SQL — on local files (parquet/csv/json), URLs, S3 paths, or remote databases (Postgres, MySQL, MongoDB, ClickHouse…
sidequery/sidemantic
Answer analytical, KPI, metric, trend, cohort, and business-performance questions through a Sidemantic semantic layer.
Rain-kl/OpenFlare
Wavelet 项目专用:当新增或修改数据库表结构、索引、初始化数据、系统配置 seed、模板 seed、默认管理员、goose SQL 迁移、internal/infra/persistence/migrator、ClickHouse 分析库 DDL 或数据库升级流程时必须使用。本技能指导在 internal/infra/persistence/migrator/goose 下编写…
PostHog/posthog
Workflow for optimizing ClickHouse and HogQL queries. An agent skill from PostHog/posthog.
speakeasy-api/gram
A skill your agent uses when adding a new feature or changing an existing one that surfaces data in the dashboard — the demo org (app.getgram.ai/explore-demo) must show it — and when editing or…
PostHog/posthog
Debug a customer's data warehouse source, schema, or table from a support ticket, using PostHog's own production data.
Works with
Categories
Query indexed Tempo chain data via tidx HTTP API and CLI. An agent skill from tempoxyz/tidx. Querying Tempo is an agent skill from tempoxyz/tidx. Query indexed Tempo chain data via tidx HTTP API and CLI.
Querying Tempo fits situations like: querying Tempo chain data; working with tidx.
Run `npx skills add tempoxyz/tidx --skill querying-tempo -a claude-code`. Or copy the skill folder (.agents/skills/querying-tempo in tempoxyz/tidx) into .claude/skills/querying-tempo in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tempoxyz/tidx --skill querying-tempo -a codex`. Or copy the skill folder (.agents/skills/querying-tempo in tempoxyz/tidx) into .agents/skills/querying-tempo in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tempoxyz/tidx --skill querying-tempo -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/querying-tempo, .gemini/skills/querying-tempo, .github/skills/querying-tempo and .opencode/skills/querying-tempo in your project.
Going by SKILL.md and its folder, Querying Tempo needs the command-line tools its instructions call (curl).
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Querying Tempo is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Querying Tempo: Chdb SQL (vemetric/vemetric, 394 stars), Semantic Analyst (sidequery/sidemantic, 129 stars), Database Migration (Rain-kl/OpenFlare, 288 stars) and Optimizing Clickhouse And Hogql Queries (PostHog/posthog, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
tempoxyz (a GitHub organization) maintains it in tempoxyz/tidx, which has 107 GitHub stars. The repository was last updated on October 8, 2026.
Source: tempoxyz/tidx on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.