Back to Skills

postgresql-fundamentals

verified

Master PostgreSQL SQL fundamentals - data types, tables, constraints, schema design

View on GitHub

Marketplace

pluginagentmarketplace-postgresql

pluginagentmarketplace/custom-plugin-postgresql

Plugin

ultrathink

Repository

pluginagentmarketplace/custom-plugin-postgresql
1stars

skills/postgresql-fundamentals/SKILL.md

Last Verified

January 21, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/pluginagentmarketplace/custom-plugin-postgresql/blob/main/skills/postgresql-fundamentals/SKILL.md -a claude-code --skill postgresql-fundamentals

Installation paths:

Claude
.claude/skills/postgresql-fundamentals/
Powered by add-skill CLI

Instructions

# PostgreSQL Fundamentals Skill

> Atomic skill for SQL foundations and schema design

## Overview

Production-ready patterns for PostgreSQL 16+ data modeling, including type selection, constraint design, and schema organization.

## Prerequisites

- PostgreSQL 16+ installed
- Basic SQL knowledge
- Database access with CREATE privileges

## Parameters

```yaml
parameters:
  operation:
    type: string
    required: true
    enum: [create_table, add_constraint, select_type, design_schema]
  table_name:
    type: string
    pattern: "^[a-z][a-z0-9_]*$"
  schema:
    type: string
    default: "public"
```

## Quick Reference

### Data Type Selection
| Use Case | Recommended | Avoid |
|----------|-------------|-------|
| Primary key | `BIGINT GENERATED ALWAYS AS IDENTITY` | `SERIAL` |
| Monetary | `NUMERIC(19,4)` | `FLOAT` |
| Timestamps | `TIMESTAMPTZ` | `TIMESTAMP` |
| UUID | `UUID` | `VARCHAR(36)` |
| JSON data | `JSONB` | `JSON` |

### Table Template
```sql
CREATE TABLE schema_name.table_name (
    id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
```

### Constraint Patterns
```sql
-- Foreign key
CONSTRAINT fk_name FOREIGN KEY (col) REFERENCES other(id) ON DELETE CASCADE;
-- Check
CONSTRAINT chk_positive CHECK (amount > 0);
-- Unique
CONSTRAINT uq_email UNIQUE (email);
```

## Validation Rules

| Rule | Pattern |
|------|---------|
| Table names | `^[a-z][a-z0-9_]{2,62}$` |
| Column names | `^[a-z][a-z0-9_]{1,62}$` |

## Test Template

```sql
DO $$ BEGIN
    DROP TABLE IF EXISTS test_users;
    CREATE TABLE test_users (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY);
    ASSERT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'test_users');
    DROP TABLE test_users;
END $$;
```

## Troubleshooting

| Error | Cause | Solution |
|-------|-------|----------|
| `42P07` | Table exists | Use IF NOT EXISTS |
| `23505` | Duplicate key | Check con

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
2027 chars