Supabase Postgres Best Practices
supabase/agent-skills
Gives the agent Postgres rules to consult before writing or changing tables, queries, indexes, RLS policies or migrations, and when diagnosing slow queries.
A skill your agent uses for general PostgreSQL table design.
$ npx skills add timescale/pg-aiguide --skill design-postgres-tables -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install timescale/pg-aiguide design-postgres-tables --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/design-postgres-tables .claude/skills/design-postgres-tables && 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 "design-postgres-tables" agent skill from https://github.com/timescale/pg-aiguide/tree/main/skills/design-postgres-tables into .claude/skills/design-postgres-tables/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "design-postgres-tables", 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/design-postgres-tablesType 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 design-postgres-tables -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install timescale/pg-aiguide design-postgres-tables --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/design-postgres-tables .agents/skills/design-postgres-tables && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "design-postgres-tables" agent skill from https://github.com/timescale/pg-aiguide/tree/main/skills/design-postgres-tables into .agents/skills/design-postgres-tables/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "design-postgres-tables", 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 design-postgres-tables -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install timescale/pg-aiguide design-postgres-tables --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/design-postgres-tables .cursor/skills/design-postgres-tables && 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 "design-postgres-tables" agent skill from https://github.com/timescale/pg-aiguide/tree/main/skills/design-postgres-tables into .cursor/skills/design-postgres-tables/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "design-postgres-tables", 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/design-postgres-tables--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 design-postgres-tables -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install timescale/pg-aiguide design-postgres-tables --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/design-postgres-tables .gemini/skills/design-postgres-tables && 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 "design-postgres-tables" agent skill from https://github.com/timescale/pg-aiguide/tree/main/skills/design-postgres-tables into .gemini/skills/design-postgres-tables/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "design-postgres-tables", 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 design-postgres-tablesInstalls 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 design-postgres-tables -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/design-postgres-tables .github/skills/design-postgres-tables && 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 "design-postgres-tables" agent skill from https://github.com/timescale/pg-aiguide/tree/main/skills/design-postgres-tables into .github/skills/design-postgres-tables/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "design-postgres-tables", 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 design-postgres-tables -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 design-postgres-tables --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/design-postgres-tables .opencode/skills/design-postgres-tables && 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 "design-postgres-tables" agent skill from https://github.com/timescale/pg-aiguide/tree/main/skills/design-postgres-tables into .opencode/skills/design-postgres-tables/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "design-postgres-tables", 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.
design-postgres-tablesA skill your agent uses for general PostgreSQL table design.
Design Postgres Tables is an agent skill from timescale/pg-aiguide. Use this skill for general PostgreSQL table design. Trigger when user asks to: - Design PostgreSQL tables, schemas, or data models when creating new tables and when modifying existing ones. - Choose data types, constraints, or indexes for PostgreSQL - Create user tables, order tables, reference tables, or JSONB schemas - Understand PostgreSQL best practices for normalization, constraints, or indexing - Design update-heavy, upsert-heavy, or OLTP-style tables Keywords: PostgreSQL schema, table design, data types…
Its SKILL.md is about 4.2k 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 Database schema design. It works with PostgreSQL and Model Context Protocol. 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.
Read from SKILL.md and the folder at commit b236d35. 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.
Design Postgres Tables loads about 4.2k tokens when it runs. Until then it costs about 209 tokens; SKILL.md has 1,845 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 b236d35, republished under its Apache-2.0 licence (© timescale). 1,845 words, ~4,208 tokens.
.claude/skills/design-postgres-tables/SKILL.md (or your agent's skills folder).BIGINT GENERATED ALWAYS AS IDENTITY; use UUID only when global uniqueness/opacity is needed.NUMERIC for exact decimal arithmetic).snake_case for table/column names.UNIQUE (...) NULLS NOT DISTINCT (PG15+) to restrict to one NULL.NUMERIC(2,0) fails with error, unlike some databases that silently truncate or round.CLUSTER is one-off reorganization, not maintained on subsequent inserts. Row order on disk is insertion order unless explicitly clustered.BIGINT GENERATED ALWAYS AS IDENTITY preferred (GENERATED BY DEFAULT also fine); UUID when merging/federating/used in a distributed system or for opaque IDs. Generate with uuidv7() (preferred if using PG18+) or gen_random_uuid() (if using an older PG version).BIGINT unless storage space is critical; INTEGER for smaller ranges; avoid SMALLINT unless constrained.DOUBLE PRECISION over REAL unless storage space is critical. Use NUMERIC for exact decimal arithmetic.TEXT; if length limits needed, use CHECK (LENGTH(col) <= n) instead of VARCHAR(n); avoid CHAR(n). Use BYTEA for binary data. Large strings/binary (>2KB default threshold) automatically stored in TOAST with compression. TOAST storage: PLAIN (no TOAST), EXTENDED (compress + out-of-line), EXTERNAL (out-of-line, no compress), MAIN (compress, keep in-line if possible). Default EXTENDED usually optimal. Control with ALTER TABLE tbl ALTER COLUMN col SET STORAGE strategy and ALTER TABLE tbl SET (toast_tuple_target = 4096) for threshold. Case-insensitive: for locale/accent handling use non-deterministic collations; for plain ASCII use expression indexes on LOWER(col) (preferred unless column needs case-insensitive PK/FK/UNIQUE) or CITEXT.NUMERIC(p,s) (never float).TIMESTAMPTZ for timestamps; DATE for date-only; INTERVAL for durations. Avoid TIMESTAMP (without timezone). Use now() for transaction start time, clock_timestamp() for current wall-clock time.BOOLEAN with NOT NULL constraint unless tri-state values are required.CREATE TYPE ... AS ENUM for small, stable sets (e.g. US states, days of week). For business-logic-driven and evolving values (e.g. order statuses) → use TEXT (or INT) + CHECK or lookup table.TEXT[], INTEGER[], etc. Use for ordered lists where you query elements. Index with GIN for containment (@>, <@) and overlap (&&) queries. Access: arr[1] (1-indexed), arr[1:3] (slicing). Good for tags, categories; avoid for relations—use junction tables instead. Literal syntax: '{val1,val2}' or ARRAY[val1,val2].daterange, numrange, tstzrange for intervals. Support overlap (&&), containment (@>), operators. Index with GiST. Good for scheduling, versioning, numeric ranges. Pick a bounds scheme and use it consistently; prefer [) (inclusive/exclusive) by default.INET for IP addresses, CIDR for network ranges, MACADDR for MAC addresses. Support network operators (<<, >>, &&).POINT, LINE, POLYGON, CIRCLE. Index with GiST. Consider PostGIS for spatial features.TSVECTOR for full-text search documents, TSQUERY for search queries. Index tsvector with GIN. Always specify language: to_tsvector('english', col) and to_tsquery('english', 'query'). Never use single-argument versions. This applies to both index expressions and queries.CREATE DOMAIN email AS TEXT CHECK (VALUE ~ '^[^@]+@[^@]+$') for reusable custom types with validation. Enforces constraints across tables.CREATE TYPE address AS (street TEXT, city TEXT, zip TEXT) for structured data within columns. Access with (col).field syntax.vector type by pgvector for vector similarity search for embeddings.timestamp (without time zone); DO use timestamptz instead.char(n) or varchar(n); DO use text instead.money type; DO use numeric instead.timetz type; DO use timestamptz instead.timestamptz(0) or any other precision specification; DO use timestamptz insteadserial type; DO use generated always as identity instead.POINT, LINE, POLYGON, CIRCLE built-in types, DO use geometry from postgis extension instead.Enable with ALTER TABLE tbl ENABLE ROW LEVEL SECURITY. Create policies: CREATE POLICY user_access ON orders FOR SELECT TO app_users USING (user_id = current_user_id()). Built-in user-based access control at the row level.
ON DELETE/UPDATE action (CASCADE, RESTRICT, SET NULL, SET DEFAULT). Add explicit index on referencing column—speeds up joins and prevents locking issues on parent deletes/updates. Use DEFERRABLE INITIALLY DEFERRED for circular FK dependencies checked at transaction end.NULLS NOT DISTINCT (PG15+). Standard behavior: (1, NULL) and (1, NULL) are allowed. With NULLS NOT DISTINCT: only one (1, NULL) allowed. Prefer NULLS NOT DISTINCT unless you specifically need duplicate NULLs.CHECK (price > 0) allows NULL prices. Combine with NOT NULL to enforce: price NUMERIC NOT NULL CHECK (price > 0).EXCLUDE USING gist (room_id WITH =, booking_period WITH &&) prevents double-booking rooms. Requires appropriate index type (often GiST).=, <, >, BETWEEN, ORDER BY)WHERE a = ? AND b > ? uses index on (a,b), but WHERE b = ? does not). Put most selective/frequently filtered columns first.CREATE INDEX ON tbl (id) INCLUDE (name, email) - includes non-key columns for index-only scans without visiting table.WHERE status = 'active' → CREATE INDEX ON tbl (user_id) WHERE status = 'active'). Any query with status = 'active' can use this index.CREATE INDEX ON tbl (LOWER(email))). Expression must match exactly in WHERE clause: WHERE LOWER(email) = 'user@example.com'.@>, ?), full-text search (@@)CLUSTER).PARTITION BY RANGE (created_at)). Create partitions: CREATE TABLE logs_2024_01 PARTITION OF logs FOR VALUES FROM ('2024-01-01') TO ('2024-02-01'). TimescaleDB automates time-based or ID-based partitioning with retention policies and compression.PARTITION BY LIST (region)). Example: FOR VALUES IN ('us-east', 'us-west').PARTITION BY HASH (user_id)). Creates N partitions with modulus.CHECK constraints on partitions for query planner to prune. Auto-created for declarative partitioning (PG10+).fillfactor=90 to leave space for HOT updates that avoid index maintenance.COPY or multi-row INSERT instead of single-row inserts.BIGINT GENERATED ALWAYS AS IDENTITY over UUID.ON CONFLICT (col1, col2) needs exact matching unique index (partial indexes don't work).EXCLUDED.column to reference would-be-inserted values; only update columns that actually changed to reduce write overhead.DO NOTHING faster than DO UPDATE when no actual update needed.BEGIN; ALTER TABLE...; ROLLBACK; for safe testing.CREATE INDEX CONCURRENTLY avoids blocking writes but can't run in transactions.NOT NULL columns with volatile defaults (e.g., now(), gen_random_uuid()) rewrites entire table. Non-volatile defaults are fast.ALTER TABLE DROP CONSTRAINT then DROP COLUMN to avoid dependency issues.CREATE OR REPLACE with different arguments creates overloads, not replacements. DROP old version if no overload desired.... GENERATED ALWAYS AS (<expr>) STORED for computed, indexable fields. PG18+ adds VIRTUAL columns (computed on read, not stored).pgcrypto: crypt() for password hashing.uuid-ossp: alternative UUID functions; prefer pgcrypto for new projects.pg_trgm: fuzzy text search with % operator, similarity() function. Index with GIN for LIKE '%pattern%' acceleration.citext: case-insensitive text type. Prefer expression indexes on LOWER(col) unless you need case-insensitive constraints.btree_gin/btree_gist: enable mixed-type indexes (e.g., GIN index on both JSONB and text columns).hstore: key-value pairs; mostly superseded by JSONB but useful for simple string mappings.timescaledb: essential for time-series—automated partitioning, retention, compression, continuous aggregates.postgis: comprehensive geospatial support beyond basic geometric types—essential for location-based applications.pgvector: vector similarity search for embeddings.pgaudit: audit logging for all database activity.JSONB with GIN index.CREATE INDEX ON tbl USING GIN (jsonb_col); → accelerates:jsonb_col @> '{"k":"v"}'jsonb_col ? 'k', any/all keys ?\|, ?&jsonb_col @> ANY(ARRAY['{"status":"active"}', '{"status":"pending"}'])@> workloads: consider opclass jsonb_path_ops for smaller/faster containment-only indexes:CREATE INDEX ON tbl USING GIN (jsonb_col jsonb_path_ops);?, ?|, ?&) queries—only supports containment (@>)ALTER TABLE tbl ADD COLUMN price INT GENERATED ALWAYS AS ((jsonb_col->>'price')::INT) STORED;CREATE INDEX ON tbl (price);WHERE price BETWEEN 100 AND 500 (uses B-tree) over WHERE (jsonb_col->>'price')::INT BETWEEN 100 AND 500 without index.@> for containment (e.g., tags). Consider jsonb_path_ops if only doing containment.config JSONB NOT NULL CHECK(jsonb_typeof(config) = 'object')CREATE TABLE users (
user_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
email TEXT NOT NULL UNIQUE,
name TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE UNIQUE INDEX ON users (LOWER(email));
CREATE INDEX ON users (created_at);CREATE TABLE orders (
order_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(user_id),
status TEXT NOT NULL DEFAULT 'PENDING' CHECK (status IN ('PENDING','PAID','CANCELED')),
total NUMERIC(10,2) NOT NULL CHECK (total > 0),
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX ON orders (user_id);
CREATE INDEX ON orders (created_at);CREATE TABLE profiles (
user_id BIGINT PRIMARY KEY REFERENCES users(user_id),
attrs JSONB NOT NULL DEFAULT '{}',
theme TEXT GENERATED ALWAYS AS (attrs->>'theme') STORED
);
CREATE INDEX profiles_attrs_gin ON profiles USING GIN (attrs);© 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/design-postgres-tables of timescale/pg-aiguide.
Open the folder on GitHubat commit b236d35
Design Postgres Tables 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 |
|---|---|---|---|---|---|---|
| Design Postgres Tables this skilltimescale/pg-aiguide | 1.9k | — | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Supabase Postgres Best Practicessupabase/agent-skills | 2.7k | 24 repos | ~808 | Automated safety check: Pass | MIT | |
| Codebase Explorationgiancarloerra/SocratiCode | 3.3k | 1 repos | ~1.5k | Automated safety check: Pass | AGPL-3.0 | |
| Saleor Django Migration Rulessaleor/saleor | 23k | — | ~1.6k | Automated safety check: Pass | BSD-3-Clause | |
| Database DesignMoizIbnYousaf/ai-agent-skills | 1.1k | 1 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Neon Postgressmontlouis/bible-strong | 171 | 1 repos | ~2.3k | Automated safety check: Notes | GPL-3.0 |
supabase/agent-skills
Gives the agent Postgres rules to consult before writing or changing tables, queries, indexes, RLS policies or migrations, and when diagnosing slow queries.
giancarloerra/SocratiCode
Explore and understand codebases using SocratiCode semantic search, dependency graphs, and context artifacts.
saleor/saleor
Rules for writing Django migrations in Saleor that avoid long table locks and stay compatible with zero-downtime rolling deploys.
MoizIbnYousaf/ai-agent-skills
Database schema design, optimization, and migration patterns for PostgreSQL, MySQL, and NoSQL databases.
smontlouis/bible-strong
Guides and best practices for working with Lakebase Postgres, the database behind Neon.
planetscale/database-skills
Overview and information about Neki, the sharded Postgres product by PlanetScale. Load when working with Neki-related tasks and the need to scale or shard…
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 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 migrate identified PostgreSQL tables to Timescale/TimescaleDB hypertables with optimal configuration and validation.
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).
timescale/pg-aiguide
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.
Works with
Categories
A skill your agent uses for general PostgreSQL table design. Design Postgres Tables is an agent skill from timescale/pg-aiguide. Use this skill for general PostgreSQL table design.
Design Postgres Tables fits situations like: general PostgreSQL table design; user asks to: - Design PostgreSQL tables; data models when creating new tables and when modifying existing ones.
Run `npx skills add timescale/pg-aiguide --skill design-postgres-tables -a claude-code`. Or copy the skill folder (skills/design-postgres-tables in timescale/pg-aiguide) into .claude/skills/design-postgres-tables in your project. Claude Code loads it when a task matches its description.
Run `npx skills add timescale/pg-aiguide --skill design-postgres-tables -a codex`. Or copy the skill folder (skills/design-postgres-tables in timescale/pg-aiguide) into .agents/skills/design-postgres-tables 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 design-postgres-tables -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/design-postgres-tables, .gemini/skills/design-postgres-tables, .github/skills/design-postgres-tables and .opencode/skills/design-postgres-tables in your project.
SKILL.md names no scripts, command-line tools or credentials: Design Postgres Tables is instructions for the agent only.
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.
Design Postgres Tables 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.2k tokens (SKILL.md is roughly 17k 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 Design Postgres Tables: Supabase Postgres Best Practices (supabase/agent-skills, 2.7k stars), Codebase Exploration (giancarloerra/SocratiCode, 3.3k stars), Saleor Django Migration Rules (saleor/saleor, 23k stars) and Database Design (MoizIbnYousaf/ai-agent-skills, 1.1k 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,857 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 1, 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.