Token导航 LogoToken导航

Agent Skill · 开发规范

postgresql-best-practices(PostgreSQL 最佳实践)

用于辅助数据库表结构、查询语句、迁移脚本和数据维护任务。它适合让 Agent 分析 schema、编写 SQL、排查查询问题、整理索引或生成迁移建议。使用时需要明确数据库类型、连接环境和目标表,区分只读分析与写入变更;涉及删除、更新、迁移和批量导入时,应优先 dry-run、备份或事务保护,避免误操作。

postgresql-best-practices 是开发规范类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描已通过,按安装量在开发规范类的 1,265 个 Skill 里排第 346。

总安装 2,712周安装 113GitHub Stars 2下载 904核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:postgresql-best-practices(PostgreSQL 最佳实践)
来源仓库:https://github.com/wimolivier/postgresql-best-practices
仓库路径:skills/postgresql-best-practices
安装命令:
npx skills add https://github.com/wimolivier/postgresql-best-practices --skill postgresql-best-practices
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/wimolivier/postgresql-best-practices --skill postgresql-best-practices

这个 Skill 是做什么的

开发规范类 Skill 用来统一代码风格、目录结构和评审口径,产出多为检查清单或改写建议。

用于辅助数据库表结构、查询语句和迁移脚本。适合分析 schema、编写 SQL 或排查查询问题。需要明确数据库类型、连接环境和目标表,区分只读与写入操作。

安装命令:npx skills add https://github.com/wimolivier/postgresql-best-practices --skill postgresql-best-practices 涉及删除或迁移时应优先 dry-run 或事务保护。

来源仓库内路径:skills/postgresql-best-practices

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/wimolivier/postgresql-best-practices --skill p…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

postgresql-best-practices 怎么安装?

在终端执行 npx skills add https://github.com/wimolivier/postgresql-best-practices --skill postgresql-…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

postgresql-best-practices 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

postgresql-best-practices 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

postgresql-best-practices 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

postgresql-best-practices 用的人多吗?

公开数据是累计安装 2,712 次,近一周安装 113 次,下载 904 次,GitHub 2 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

postgresql-best-practices 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理开发规范类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

开发规范类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
vercel-react-best-practices

Vercel React 最佳实践 · Codex、Claude

8,490,72025,918操作浏览器MIT通过
web-design-guidelines

网页设计指南 · Codex、Claude

6,686,01625,885需要联网MIT有提醒
remotion-best-practices

Remotion 最佳实践 · Codex、Claude

6,505,6323,027操作浏览器MIT有提醒
supabase-postgres-best-practices

Supabase Postgres 最佳实践 · Codex、Claude

3,175,5232,030需要联网MIT通过
next-best-practices

Next.js 最佳实践 · Codex、Claude

1,848,240841操作浏览器MIT通过
postgresql-best-practices

PostgreSQL 最佳实践 · 本页

2,7122需要联网未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

PostgreSQL Advanced Best Practices (PostgreSQL 18+)

Architecture at a Glance

                        ┌─── PostgreSQL Database ──────────────────────────────┐
                        │                                                      │
                        │  ┌──────────────────┐    ┌───────────────────────┐   │
                        │  │   api schema      │    │   private schema      │   │
  ┌─────────────┐       │  │──────────────────│    │───────────────────────│   │
  │ Application │─EXECUTE─▶│ get_customer()   │───▶│ set_updated_at()     │   │
  └─────────────┘       │  │ insert_order()   │    │ hash_password()      │   │
        │               │  └────────┬─────────┘    └──────────┬────────────┘   │
        │               │           │                         │                │
        │               │           │ SECURITY DEFINER        │ triggers       │
        │               │           ▼                         ▼                │
        │               │  ┌──────────────────────────────────────────────┐    │
        │               │  │              data schema                     │    │
     BLOCKED            │  │──────────────────────────────────────────────│    │
        │               │  │  customers    orders    ...                  │    │
        └ ─ ─ ─ ✕       │  └──────────────────────────────────────────────┘    │
                        │                                                      │
                        └──────────────────────────────────────────────────────┘

Skill Contents

🚀 Getting Started (Read These First)

DocumentPurpose
quick-reference.mdQUICK LOOKUP - Single-page cheat sheet (print this!)
schema-architecture.mdSTART HERE - Schema separation pattern (data/private/api)
coding-standards-trivadis.mdCoding standards & naming conventions (l_, g_, co_)

📚 Core Reference (Use Daily)

DocumentPurpose
plpgsql-table-api.mdTable API functions, procedures, triggers
schema-naming.mdNaming conventions for all objects
data-types.mdData type selection (UUIDv7, text, timestamptz)
indexes-constraints.mdIndex types, strategies, constraints
migrations.mdNative migration system documentation
anti-patterns.mdCommon mistakes to avoid
checklists-troubleshooting.mdProject checklists & problem solutions

🔧 Advanced Topics (When Needed)

DocumentPurpose
testing-patterns.mdpgTAP unit testing, test factories
performance-tuning.mdEXPLAIN ANALYZE, query optimization, JIT
row-level-security.mdRLS patterns, multi-tenant isolation
jsonb-patterns.mdJSONB indexing, queries, validation
audit-logging.mdGeneric audit triggers, change tracking
bulk-operations.mdCOPY, batch inserts, upserts
session-management.mdSession variables, connection pooling
transaction-patterns.mdIsolation levels, locking, deadlock prevention
full-text-search.mdtsvector, tsquery, ranking, multi-language
partitioning.mdRange, list, hash partitioning strategies
window-functions.mdFrames, ranking, running calculations
time-series.mdTime-series data patterns, BRIN indexes
event-sourcing.mdEvent store, projections, CQRS
queue-patterns.mdJob queues, SKIP LOCKED, LISTEN/NOTIFY
encryption.mdpgcrypto, column encryption, TLS
vector-search.mdpgvector, embeddings, similarity search
postgis-patterns.mdSpatial data, geographic queries

🚀 DevOps & Migration

DocumentPurpose
oracle-migration-guide.mdPL/SQL to PL/pgSQL conversion
cicd-integration.mdGitHub Actions, GitLab CI, Docker
monitoring-observability.mdpg_stat_statements, metrics, alerting
backup-recovery.mdpg_dump, pg_basebackup, PITR
replication-ha.mdStreaming/logical replication, failover

📊 Data Warehousing

DocumentPurpose
data-warehousing-medallion.mdMedallion Architecture - Bronze/Silver/Gold, data lineage, ETL
analytical-queries.mdAnalytical query patterns, OLAP optimization, GROUPING SETS

Executable Scripts

ScriptPurpose
001_install_migration_system.sqlInstall migration system (core functions)
002_migration_runner_helpers.sqlHelper procedures (run_versioned, run_repeatable)
003_example_migrations.sqlExample migration patterns
999_uninstall_migration_system.sqlClean removal of migration system

Core Architecture

Schema Separation Pattern

Application → api schema → data schema
                ↓
            private schema (triggers, helpers)
SchemaContainsAccessPurpose
dataTables, indexesNoneData storage
privateTriggers, helpersNoneInternal logic
apiFunctions, proceduresApplicationsExternal interface
app_auditAudit tablesAdminsChange tracking
app_migrationMigration trackingAdminsSchema versioning

Security Model

All api functions MUST have:

SECURITY DEFINER
SET search_path = data, private, pg_temp

Quick Reference

Create Table Pattern

CREATE TABLE data.{table_name} (
    id              uuid PRIMARY KEY DEFAULT uuidv7(),
    -- columns...
    created_at      timestamptz NOT NULL DEFAULT now(),
    updated_at      timestamptz NOT NULL DEFAULT now()
);

CREATE TRIGGER {table}_bu_updated_trg
    BEFORE UPDATE ON data.{table_name}
    FOR EACH ROW EXECUTE FUNCTION private.set_updated_at();

API Function Pattern

CREATE FUNCTION api.{action}_{entity}(in_param type)
RETURNS TABLE (col1 type, col2 type)
LANGUAGE sql STABLE
SECURITY DEFINER
SET search_path = data, private, pg_temp
AS $$
    SELECT col1, col2 FROM data.{table} WHERE ...;
$$;

API Procedure Pattern

CREATE PROCEDURE api.{action}_{entity}(
    in_param type,
    INOUT io_id uuid DEFAULT NULL
)
LANGUAGE plpgsql
SECURITY DEFINER
SET search_path = data, private, pg_temp
AS $$
BEGIN
    INSERT INTO data.{table} (...) VALUES (...) RETURNING id INTO io_id;
END;
$$;

Migration Pattern

SELECT app_migration.acquire_lock();

CALL app_migration.run_versioned(
    in_version := '001',
    in_description := 'Description',
    in_sql := $mig$ ... $mig$,
    in_rollback_sql := '...'
);

SELECT app_migration.release_lock();

Naming Conventions

Trivadis-Style Variable Prefixes

PrefixTypeExample
l_Local variablel_customer_count
g_Session/global variableg_current_user_id
co_Constantco_max_retries
in_IN parameterin_customer_id
out_OUT parameter (functions only)out_total
io_INOUT parameter (procedures)io_id
c_Cursorc_active_orders
r_Recordr_customer
t_Array/tablet_order_ids
e_Exceptione_not_found
Note: PostgreSQL procedures only support INOUT parameters, not OUT. Use io_ prefix for all procedure output parameters.

Database Objects

ObjectPatternExample
Tablesnake_case, pluralorders, order_items
Columnsnake_casecustomer_id, created_at
Primary Keyidid
Foreign Key{table_singular}_idcustomer_id
Index{table}_{cols}_idxorders_customer_id_idx
Unique{table}_{cols}_keyusers_email_key
Function{action}_{entity}get_customer, select_orders
Procedure{action}_{entity}insert_order, update_status
Trigger{table}_{timing}{event}_trgorders_bu_trg

Data Type Recommendations

UseInstead Of
textchar(n), varchar(n)
numeric(p,s)money, float
timestamptztimestamp
booleaninteger flags
uuidv7()serial, uuid_generate_v4()
GENERATED ALWAYS AS IDENTITYserial, bigserial
jsonbjson, EAV pattern

Critical Anti-Patterns

  1. ❌ Direct table access from applications
  2. ❌ RETURNS SETOF table (exposes all columns)
  3. ❌ Missing SET search_path with SECURITY DEFINER
  4. ❌ timestamp without timezone
  5. ❌ NOT IN with subqueries (use NOT EXISTS)
  6. ❌ BETWEEN with timestamps (use >= AND <)
  7. ❌ Missing indexes on foreign keys
  8. ❌ serial/bigserial (use IDENTITY)
  9. ❌ varchar(n) arbitrary limits (use text)
  10. ❌ SELECT FOR UPDATE without NOWAIT/SKIP LOCKED

PostgreSQL 18+ Features

FeatureUsage
uuidv7()id uuid DEFAULT uuidv7() - timestamp-ordered UUIDs
Virtual generated columnscol type GENERATED ALWAYS AS (expr) - computed at query time
OLD/NEW in RETURNINGUPDATE... RETURNING OLD.col, NEW.col
Temporal constraintsPRIMARY KEY (id) WITHOUT OVERLAPS
NOT VALID constraintsAdd constraints without full table scan

File Organization

db/
├── migrations/
│   ├── V001__create_schemas.sql
│   ├── V002__create_tables.sql
│   └── repeatable/
│       ├── R__private_triggers.sql
│       └── R__api_functions.sql
├── schemas/
│   ├── data/           # Table definitions
│   ├── private/        # Internal functions
│   └── api/            # External interface
└── seeds/              # Reference data

平台分布

Codex

34.29%
按下载量换算310

Claude

31.88%
按下载量换算288

Cursor

19.72%
按下载量换算178

Gemini CLI

10.28%
按下载量换算93

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills