Using Timeseries Databases
ancoleman/ai-design-components
Time-series database implementation for metrics, IoT, financial data, and observability backends.
A skill your agent uses when creating database schemas or tables for Timescale, TimescaleDB, TigerData, or Tiger Cloud, especially for time-series, IoT, metrics, events, or log data.
$ npx skills add timescale/pg-aiguide --skill setup-timescaledb-hypertables -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install timescale/pg-aiguide setup-timescaledb-hypertables --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/timescale/pg-aiguide.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/setup-timescaledb-hypertables .claude/skills/setup-timescaledb-hypertables && 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 "setup-timescaledb-hypertables" agent skill from https://github.com/timescale/pg-aiguide/tree/main/skills/setup-timescaledb-hypertables into .claude/skills/setup-timescaledb-hypertables/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-timescaledb-hypertables", 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/timescale/pg-aiguide/tree/main/skills/setup-timescaledb-hypertablesType 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 timescale/pg-aiguide --skill setup-timescaledb-hypertables -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install timescale/pg-aiguide setup-timescaledb-hypertables --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/timescale/pg-aiguide.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/setup-timescaledb-hypertables .agents/skills/setup-timescaledb-hypertables && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "setup-timescaledb-hypertables" agent skill from https://github.com/timescale/pg-aiguide/tree/main/skills/setup-timescaledb-hypertables into .agents/skills/setup-timescaledb-hypertables/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-timescaledb-hypertables", 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 timescale/pg-aiguide --skill setup-timescaledb-hypertables -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install timescale/pg-aiguide setup-timescaledb-hypertables --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/timescale/pg-aiguide.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/setup-timescaledb-hypertables .cursor/skills/setup-timescaledb-hypertables && 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 "setup-timescaledb-hypertables" agent skill from https://github.com/timescale/pg-aiguide/tree/main/skills/setup-timescaledb-hypertables into .cursor/skills/setup-timescaledb-hypertables/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-timescaledb-hypertables", 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/timescale/pg-aiguide.git --path skills/setup-timescaledb-hypertables--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 timescale/pg-aiguide --skill setup-timescaledb-hypertables -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install timescale/pg-aiguide setup-timescaledb-hypertables --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/timescale/pg-aiguide.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/setup-timescaledb-hypertables .gemini/skills/setup-timescaledb-hypertables && 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 "setup-timescaledb-hypertables" agent skill from https://github.com/timescale/pg-aiguide/tree/main/skills/setup-timescaledb-hypertables into .gemini/skills/setup-timescaledb-hypertables/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-timescaledb-hypertables", 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 timescale/pg-aiguide setup-timescaledb-hypertablesInstalls 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 timescale/pg-aiguide --skill setup-timescaledb-hypertables -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/timescale/pg-aiguide.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/setup-timescaledb-hypertables .github/skills/setup-timescaledb-hypertables && 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 "setup-timescaledb-hypertables" agent skill from https://github.com/timescale/pg-aiguide/tree/main/skills/setup-timescaledb-hypertables into .github/skills/setup-timescaledb-hypertables/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-timescaledb-hypertables", 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 timescale/pg-aiguide --skill setup-timescaledb-hypertables -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install timescale/pg-aiguide setup-timescaledb-hypertables --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/timescale/pg-aiguide.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/setup-timescaledb-hypertables .opencode/skills/setup-timescaledb-hypertables && 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 "setup-timescaledb-hypertables" agent skill from https://github.com/timescale/pg-aiguide/tree/main/skills/setup-timescaledb-hypertables into .opencode/skills/setup-timescaledb-hypertables/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "setup-timescaledb-hypertables", 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.
setup-timescaledb-hypertablesA skill your agent uses when creating database schemas or tables for Timescale, TimescaleDB, TigerData, or Tiger Cloud, especially for time-series, IoT, metrics, events, or log data.
Setup Timescaledb Hypertables is an agent skill from timescale/pg-aiguide. Use this skill when creating database schemas or tables for Timescale, TimescaleDB, TigerData, or Tiger Cloud, especially for time-series, IoT, metrics, events, or log data. Use this to improve the performance of any insert-heavy table. Trigger when user asks to: - Create or design SQL schemas/tables AND Timescale/TimescaleDB/TigerData/Tiger Cloud is available - Set up hypertables, compression, retention policies, or continuous aggregates - Configure partition columns, segmentby, orderby, or chunk intervals -…
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Requires PostgreSQL 15+ with TimescaleDB
It sits in Data & Analytics, covering Forecasting and time series and Database schema design. It works with SQL, Model Context Protocol and PostgreSQL. The repository describes itself as: MCP server and Claude plugin for Postgres skills and documentation. Helps AI coding tools generate better PostgreSQL code. The licence is Apache-2.0.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 187be00. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are sql).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Requires PostgreSQL 15+ with TimescaleDB
From compatibility in the SKILL.md frontmatter.
Setup Timescaledb Hypertables loads about 4.7k tokens when it runs. Until then it costs about 259 tokens; SKILL.md has 1,400 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 timescale/pg-aiguide at commit 187be00, republished under its Apache-2.0 licence (© timescale). 1,400 words, ~4,701 tokens.
.claude/skills/setup-timescaledb-hypertables/SKILL.md (or your agent's skills folder).Instructions for insert-heavy data patterns where data is inserted but rarely changed:
CREATE TABLE your_table_name (
timestamp TIMESTAMPTZ NOT NULL,
entity_id TEXT NOT NULL, -- device_id, user_id, symbol, etc.
category TEXT, -- sensor_type, event_type, asset_class, etc.
value_1 DOUBLE PRECISION, -- price, temperature, latency, etc.
value_2 DOUBLE PRECISION, -- volume, humidity, throughput, etc.
value_3 INTEGER, -- count, status, level, etc.
metadata JSONB -- flexible additional data
) WITH (
tsdb.hypertable,
tsdb.partition_column='timestamp',
tsdb.enable_columnstore=true, -- Disable if table has vector columns
tsdb.segmentby='entity_id', -- See selection guide below
tsdb.orderby='timestamp DESC', -- See selection guide below
tsdb.sparse_index='minmax(value_1),minmax(value_2),minmax(value_3)' -- see selection guide below
);Must be time-based (TIMESTAMP/TIMESTAMPTZ/DATE) or integer (INT/BIGINT) with good temporal/sequential distribution.
Common patterns:
timestamp, event_time, measured_atevent_time, created_at, logged_atcreated_at, transaction_time, processed_atid (auto-increment when no timestamp), sequence_numbercreated_at, inserted_at, idLess ideal: ingested_at (when data entered system - use only if it's your primary query dimension)
Avoid: updated_at (breaks time ordering unless it's primary query dimension)
PREFER SINGLE COLUMN - multi-column rarely optimal. Multi-column can only work for highly correlated columns (e.g., metric_name + metric_type) with sufficient row density.
Requirements:
Examples:
device_idsymbolservice_name, service_name, metric_type (if sufficient row density), metric_name, metric_type (if sufficient row density)user_id if sufficient row density, otherwise session_idproduct_id if sufficient row density, otherwise category_idRow density guidelines:
Query pattern drives choice:
SELECT * FROM table WHERE entity_id = 'X' AND timestamp > ...
-- ↳ segment_by: entity_id (if >100 rows per chunk)Avoid: timestamps, unique IDs, low-density columns (<100 rows/value/chunk), columns rarely used in filtering
Creates natural time-series progression when combined with segment_by for optimal compression.
Most common: timestamp DESC
Examples:
timestamp DESCmetric_name, timestamp DESC (if metric_name has too low density for segment_by)user_id, timestamp DESC (user_id has too low density for segment_by)Alternative patterns:
sequence_id DESC for event streams with sequence numberstimestamp DESC, event_order DESC for sub-ordering within same timestampLow-density column handling: If a column has <100 rows per chunk (too low for segment_by), prepend it to order_by:
metric_name has 20 rows/chunk → use segment_by='service_name', order_by='metric_name, timestamp DESC'Good test: ordering created by (segment_by_column, order_by_column) should form a natural time-series progression. Values close to each other in the progression should be similar.
Avoid in order_by: random columns, columns with high variance between adjacent rows, columns unrelated to segment_by
Sparse indexes enable query filtering on compressed data without decompression. Store metadata per batch (~1000 rows) to eliminate batches that don't match query predicates.
Types:
Use minmax for: price, temperature, measurement, timestamp (range filtering)
Use for:
created_at, minmax on updated_at is useful).Avoid: rarely filtered columns.
IMPORTANT: NEVER index columns in segmentby or orderby. Orderby columns will always have minmax indexes without any configuration.
Configuration: The format is a comma-separated list of type_of_index(column_name).
ALTER TABLE table_name SET (
timescaledb.sparse_index = 'minmax(value_1),minmax(value_2)'
);Explicit configuration available since v2.22.0 (was auto-created since v2.16.0).
Default: 7 days (use if volume unknown, or ask user). Adjust based on volume:
SELECT set_chunk_time_interval('your_table_name', INTERVAL '1 day');Good test: recent chunk indexes should fit in less than 25% of RAM.
Common index patterns - composite indexes on an id and timestamp:
CREATE INDEX idx_entity_timestamp ON your_table_name (entity_id, timestamp DESC);Important: Only create indexes you'll actually use - each has maintenance overhead.
Primary key and unique constraints rules: Must include partition column.
Option 1: Composite PK with partition column
ALTER TABLE your_table_name ADD PRIMARY KEY (entity_id, timestamp);Option 2: Single-column PK (only if it's the partition column)
CREATE TABLE ... (id BIGINT PRIMARY KEY, ...) WITH (tsdb.partition_column='id');Option 3: No PK: strict uniqueness is often not required for insert-heavy patterns.
IMPORTANT: If you used tsdb.enable_columnstore=true in Step 1, starting with TimescaleDB version 2.23 a columnstore policy is automatically created with after => INTERVAL '7 days'. You only need to call add_columnstore_policy() if you want to customize the after interval to something other than 7 days.
Set after interval for when: data becomes mostly immutable (some updates/backfill OK) AND B-tree indexes aren't needed for queries (less common criterion).
-- In TimescaleDB 2.23 and later only needed if you want to override the default 7-day policy created by tsdb.enable_columnstore=true
-- Remove the existing auto-created policy first:
-- CALL remove_columnstore_policy('your_table_name');
-- Then add custom policy:
-- CALL add_columnstore_policy('your_table_name', after => INTERVAL '1 day');IMPORTANT: Don't guess - ask user or comment out if unknown.
-- Example - replace with requirements or comment out
SELECT add_retention_policy('your_table_name', INTERVAL '365 days');Use different aggregation intervals for different uses.
For up-to-the-minute dashboards on high-frequency data.
CREATE MATERIALIZED VIEW your_table_hourly
WITH (timescaledb.continuous) AS
SELECT
time_bucket(INTERVAL '1 hour', timestamp) AS bucket,
entity_id,
category,
COUNT(*) as record_count,
AVG(value_1) as avg_value_1,
MIN(value_1) as min_value_1,
MAX(value_1) as max_value_1,
SUM(value_2) as sum_value_2
FROM your_table_name
GROUP BY bucket, entity_id, category;For long-term reporting and analytics.
CREATE MATERIALIZED VIEW your_table_daily
WITH (timescaledb.continuous) AS
SELECT
time_bucket(INTERVAL '1 day', timestamp) AS bucket,
entity_id,
category,
COUNT(*) as record_count,
AVG(value_1) as avg_value_1,
MIN(value_1) as min_value_1,
MAX(value_1) as max_value_1,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY value_1) as median_value_1,
PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY value_1) as p95_value_1,
SUM(value_2) as sum_value_2
FROM your_table_name
GROUP BY bucket, entity_id, category;Set up refresh policies based on your data freshness requirements.
start_offset: Usually omit (refreshes all). Exception: If you don't care about refreshing data older than X (see below). With retention policy on raw data: match the retention policy.
end_offset: Set beyond active update window (e.g., 15 min if data usually arrives within 10 min). Data newer than end_offset won't appear in queries without real-time aggregation. If you don't know your update window, use the size of the time_bucket in the query, but not less than 5 minutes.
schedule_interval: Set to the same value as the end_offset but not more than 1 hour.
Hourly - frequent refresh for dashboards:
SELECT add_continuous_aggregate_policy('your_table_hourly',
start_offset => NULL,
end_offset => INTERVAL '15 minutes',
schedule_interval => INTERVAL '15 minutes');Daily - less frequent for reports:
SELECT add_continuous_aggregate_policy('your_table_daily',
start_offset => NULL,
end_offset => INTERVAL '1 hour',
schedule_interval => INTERVAL '1 hour');Use start_offset only if you don't care about refreshing old data Use for high-volume systems where query accuracy on older data doesn't matter:
-- the following aggregate can be stale for data older than 7 days
-- SELECT add_continuous_aggregate_policy('aggregate_for_last_7_days',
-- start_offset => INTERVAL '7 days', -- only refresh last 7 days (NULL = refresh all)
-- end_offset => INTERVAL '15 minutes',
-- schedule_interval => INTERVAL '15 minutes');IMPORTANT: you MUST set a start_offset to be less than the retention policy on raw data. By default, set the start_offset equal to the retention policy. If the retention policy is commented out, comment out the start_offset as well. like this:
SELECT add_continuous_aggregate_policy('your_table_daily',
start_offset => NULL, -- Use NULL to refresh all data, or set to retention period if enabled on raw data
-- start_offset => INTERVAL '<retention period here>', -- uncomment if retention policy is enabled on the raw data table
end_offset => INTERVAL '1 hour',
schedule_interval => INTERVAL '1 hour');Real-time combines materialized + recent raw data at query time. Provides up-to-date results at the cost of higher query latency.
More useful for fine-grained aggregates (e.g., minutely) than coarse ones (e.g., daily/monthly) since large buckets will be mostly incomplete with recent data anyway.
Disabled by default in v2.13+, before that it was enabled by default.
Use when: Need data newer than end_offset, up-to-minute dashboards, can tolerate higher query latency Disable when: Performance critical, refresh policies sufficient, high query volume, missing and stale data for recent data is acceptable
Enable for current results (higher query cost):
ALTER MATERIALIZED VIEW your_table_hourly SET (timescaledb.materialized_only = false);Disable for performance (but with stale results):
ALTER MATERIALIZED VIEW your_table_hourly SET (timescaledb.materialized_only = true);Rule: segment_by = ALL GROUP BY columns except time_bucket, order_by = time_bucket DESC
-- Hourly
ALTER MATERIALIZED VIEW your_table_hourly SET (
timescaledb.enable_columnstore,
timescaledb.segmentby = 'entity_id, category',
timescaledb.orderby = 'bucket DESC'
);
CALL add_columnstore_policy('your_table_hourly', after => INTERVAL '3 days');
-- Daily
ALTER MATERIALIZED VIEW your_table_daily SET (
timescaledb.enable_columnstore,
timescaledb.segmentby = 'entity_id, category',
timescaledb.orderby = 'bucket DESC'
);
CALL add_columnstore_policy('your_table_daily', after => INTERVAL '7 days');Aggregates are typically kept longer than raw data. IMPORTANT: Don't guess - ask user or you MUST comment out if unknown.
-- Example - replace or comment out
SELECT add_retention_policy('your_table_hourly', INTERVAL '2 years');
SELECT add_retention_policy('your_table_daily', INTERVAL '5 years');Index strategy: Analyze WHERE clauses in common queries → Create indexes matching filter columns + time ordering
Pattern: (filter_column, bucket DESC) supports WHERE filter_column = X AND bucket >= Y ORDER BY bucket DESC
Examples:
CREATE INDEX idx_hourly_entity_bucket ON your_table_hourly (entity_id, bucket DESC);
CREATE INDEX idx_hourly_category_bucket ON your_table_hourly (category, bucket DESC);Multi-column filters: Create composite indexes for WHERE entity_id = X AND category = Y:
CREATE INDEX idx_hourly_entity_category_bucket ON your_table_hourly (entity_id, category, bucket DESC);Important: Only create indexes you'll actually use - each has maintenance overhead.
Only for query patterns where you ALWAYS filter by the space-partition column with expert knowledge and extensive benchmarking. STRONGLY prefer time-only partitioning.
-- Check hypertable
SELECT * FROM timescaledb_information.hypertables
WHERE hypertable_name = 'your_table_name';
-- Check compression settings
SELECT * FROM hypertable_compression_stats('your_table_name');
-- Check aggregates
SELECT * FROM timescaledb_information.continuous_aggregates;
-- Check policies
SELECT * FROM timescaledb_information.jobs ORDER BY job_id;
-- Monitor chunk information
SELECT
chunk_name,
range_start,
range_end,
is_compressed
FROM timescaledb_information.chunks
WHERE hypertable_name = 'your_table_name'
ORDER BY range_start DESC;timescaledb-tune for self-hosting (auto-configured on cloud)TIMESTAMPTZ NOT timestamp>= and < NOT BETWEEN for timestampsTEXT with constraints NOT char(n)/varchar(n)snake_case NOT CamelCaseBIGINT GENERATED ALWAYS AS IDENTITY NOT SERIALBIGINT for IDs by default over INTEGER or SMALLINTDOUBLE PRECISION by default over REAL/FLOATNUMERIC NOT MONEYNOT EXISTS NOT NOT INtime_bucket() or date_trunc() NOT timestamp(0) for truncationDeprecated Parameters → New Parameters:
timescaledb.compress → timescaledb.enable_columnstoretimescaledb.compress_segmentby → timescaledb.segmentbytimescaledb.compress_orderby → timescaledb.orderbyDeprecated Functions → New Functions:
add_compression_policy() → add_columnstore_policy()remove_compression_policy() → remove_columnstore_policy()compress_chunk() → convert_to_columnstore() (use with CALL, not SELECT)decompress_chunk() → convert_to_rowstore() (use with CALL, not SELECT)Compression Stats (use functions, not views):
hypertable_compression_stats('table_name')chunk_compression_stats('_timescaledb_internal._hyper_X_Y_chunk')columnstore_settings may not be available in all versions; use functions insteadManual Compression Example:
-- Compress a specific chunk
CALL convert_to_columnstore('_timescaledb_internal._hyper_7_1_chunk');
-- Check compression statistics
SELECT
number_compressed_chunks,
pg_size_pretty(before_compression_total_bytes) as before_compression,
pg_size_pretty(after_compression_total_bytes) as after_compression,
ROUND(100.0 * (1 - after_compression_total_bytes::numeric / NULLIF(before_compression_total_bytes, 0)), 1) as compression_pct
FROM hypertable_compression_stats('your_table_name');© timescale, Apache-2.0. 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 skills/setup-timescaledb-hypertables of timescale/pg-aiguide.
Open the folder on GitHubat commit 187be00
Setup Timescaledb Hypertables 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 |
|---|---|---|---|---|---|---|
| Setup Timescaledb Hypertables this skilltimescale/pg-aiguide | 1.9k | — | ~4.7k | Automated safety check: Pass | Apache-2.0 | |
| Using Timeseries Databasesancoleman/ai-design-components | 525 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Databaseaiskillstore/marketplace | 433 | 3 repos | ~1.2k | Automated safety check: Pass | None | |
| Chdb Datastorevemetric/vemetric | 395 | 2 repos | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| SlKaelio/ktx | 1.6k | — | ~2.7k | Automated safety check: Pass | Apache-2.0 | |
| Erd Studio Setupliam-machine/erd-studio | 165 | — | ~8.6k | Automated safety check: Pass | Custom licence |
ancoleman/ai-design-components
Time-series database implementation for metrics, IoT, financial data, and observability backends.
aiskillstore/marketplace
Database development and operations workflow covering SQL, NoSQL, database design, migrations, optimization, and data engineering.
vemetric/vemetric
A skill your agent uses when the user has tabular data (pandas DataFrame, parquet, csv, Arrow, json) and wants to filter, group, aggregate, join, or speed up slow pandas.
Kaelio/ktx
ktx's semantic layer - a structured catalog of sources (tables/views), measures, joins, and segments expressed as YAML.
liam-machine/erd-studio
Friendly, step-by-step setup for ERD Studio in an existing dbt project, for people who may be new to dbt or data modelling.
Yourdaylight/stock_datasource
Turns a Tushare API doc URL into a full data plugin for the stock_datasource repo: extractor, ClickHouse schema, query service, config and curl examples.
timescale/pg-aiguide
A skill your agent uses to analyze an existing PostgreSQL database and identify which tables should be converted to Timescale/TimescaleDB hypertables.
timescale/pg-aiguide
Explore an existing PostgreSQL database before answering questions about its data or writing SQL.
timescale/pg-aiguide
A skill your agent uses to migrate identified PostgreSQL tables to Timescale/TimescaleDB hypertables with optimal configuration and validation.
timescale/pg-aiguide
A skill your agent uses for general PostgreSQL table design.
timescale/pg-aiguide
A skill your agent uses for setting up vector similarity search with pgvector for AI/ML embeddings, RAG applications, or semantic search.
timescale/pg-aiguide
A skill your agent uses to implement hybrid search combining BM25 keyword search with semantic vector search using Reciprocal Rank Fusion (RRF).
Works with
Categories
A skill your agent uses when creating database schemas or tables for Timescale, TimescaleDB, TigerData, or Tiger Cloud, especially for time-series, IoT, metrics, events, or log data. Setup Timescaledb Hypertables is an agent skill from timescale/pg-aiguide. Use this skill when creating database schemas or tables for Timescale, TimescaleDB, TigerData, or Tiger Cloud, especially for time-series, IoT, metrics, events, or log data.
Setup Timescaledb Hypertables fits situations like: creating database schemas; tables for Timescale; especially for time-series; user asks to: - Create.
Run `npx skills add timescale/pg-aiguide --skill setup-timescaledb-hypertables -a claude-code`. Or copy the skill folder (skills/setup-timescaledb-hypertables in timescale/pg-aiguide) into .claude/skills/setup-timescaledb-hypertables in your project. Claude Code loads it when a task matches its description.
Run `npx skills add timescale/pg-aiguide --skill setup-timescaledb-hypertables -a codex`. Or copy the skill folder (skills/setup-timescaledb-hypertables in timescale/pg-aiguide) into .agents/skills/setup-timescaledb-hypertables 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 timescale/pg-aiguide --skill setup-timescaledb-hypertables -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/setup-timescaledb-hypertables, .gemini/skills/setup-timescaledb-hypertables, .github/skills/setup-timescaledb-hypertables and .opencode/skills/setup-timescaledb-hypertables in your project.
SKILL.md names no scripts, command-line tools or credentials: Setup Timescaledb Hypertables is instructions for the agent only. Compatibility (from SKILL.md): Requires PostgreSQL 15+ with TimescaleDB.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Setup Timescaledb Hypertables is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k 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 Setup Timescaledb Hypertables: Using Timeseries Databases (ancoleman/ai-design-components, 525 stars), Database (aiskillstore/marketplace, 433 stars), Chdb Datastore (vemetric/vemetric, 395 stars) and Sl (Kaelio/ktx, 1.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
timescale (a GitHub organization) maintains it in timescale/pg-aiguide, which has 1,861 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 7, 2026.
Source: timescale/pg-aiguide on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.