Skip to content
Back to skills

Db Schema Gen

ASecurity

Generate database schemas, migrations, and ERD diagrams from plain English descriptions — supports PostgreSQL, MySQL, SQLite, and MongoDB with proper indexes and constraints.

  • 11 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 10, 2026
databasesgosqldatabase

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 10, 2026

npx -y skills add luokai0/ai-agent-skills-by-luo-kai --skill db-schema-gen --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Db Schema Gen?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Db Schema Gen
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/luokai0-db-schema-gen/badge)](https://www.skillsdirectory.com/skills/luokai0-db-schema-gen)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: db-schema
description: Generate database schemas, migrations, and ERD diagrams from plain English descriptions — supports PostgreSQL, MySQL, SQLite, and MongoDB with proper indexes and constraints.
metadata: {"openclaw":{"emoji":"🗄️","os":["darwin","linux","win32"]}}
---

# DB Schema

Describe your data model in English. Get production-ready schema, migrations, and diagrams.

## What It Does

Takes a plain English description of your data and generates:
- **SQL schema** (CREATE TABLE statements with constraints)
- **Migration files** (for Prisma, Drizzle, Knex, Alembic, etc.)
- **Entity-Relationship diagram** (Mermaid or ASCII)
- **Indexes** (auto-detected from common query patterns)
- **Seed data** (realistic sample data for development)

## Usage

### From description:
```
db-schema "Users have many posts. Posts have many comments. Users can like posts."
```

### With options:
```
db-schema "E-commerce with products, orders, customers" --dialect postgres --orm prisma
```

### Options:
- `--dialect` — `postgres` (default), `mysql`, `sqlite`, `mongodb`
- `--orm` — `raw` (default), `prisma`, `drizzle`, `knex`, `sqlalchemy`, `typeorm`
- `--format` — `sql` (default), `json`, `markdown`
- `--diagram` — include ERD diagram: `mermaid` (default), `ascii`, `none`
- `--seed` — generate seed data (default: false)
- `--seed-count` — rows per table for seed data (default: 10)

## Generation Rules

### Schema Design:
1. **Every table gets a primary key** — `id` (BIGSERIAL for PG, AUTO_INCREMENT for MySQL, INTEGER AUTOINCREMENT for SQLite)
2. **Timestamps by default** — `created_at` and `updated_at` on every table
3. **Foreign keys with proper naming** — `table_id` references `table(id)`
4. **ON DELETE behavior** — CASCADE for owned relationships, SET NULL for optional
5. **Proper types** — use appropriate types (TEXT not VARCHAR(255) for PG, TIMESTAMPTZ not TIMESTAMP)

### Relationship Detection:

| English | Relationship | Implementation |
|---------|-------------|---------------|
| "has many" | One-to-Many | FK on the "many" side |
| "belongs to" | Many-to-One | FK on current table |
| "has one" | One-to-One | FK with UNIQUE constraint |
| "many to many" | Many-to-Many | Junction table |
| "can like/follow/tag" | Many-to-Many | Junction table with metadata |

### Auto-Indexing:

| Pattern | Index Type |
|---------|-----------|
| Foreign keys | B-tree index |
| Email, username | UNIQUE index |
| Created/updated dates | B-tree index |
| Status/type/role columns | B-tree index |
| Full-text search fields | GIN index (PG) / FULLTEXT (MySQL) |
| Slug/path columns | UNIQUE index |
| Composite lookups | Composite index |

### Type Mapping:

| Concept | PostgreSQL | MySQL | SQLite |
|---------|-----------|-------|--------|
| ID | BIGSERIAL | BIGINT AUTO_INCREMENT | INTEGER |
| Short text | VARCHAR(N) | VARCHAR(N) | TEXT |
| Long text | TEXT | TEXT | TEXT |
| Money | NUMERIC(12,2) | DECIMAL(12,2) | REAL |
| Boolean | BOOLEAN | TINYINT(1) | INTEGER |
| Timestamp | TIMESTAMPTZ | DATETIME | TEXT |
| JSON | JSONB | JSON | TEXT |
| UUID | UUID | CHAR(36) | TEXT |
| Enum | Custom TYPE | ENUM(...) | TEXT CHECK |

### Output (SQL):
```sql
-- Generated by db-schema
-- Description: E-commerce with products, orders, customers

CREATE TABLE customers (
    id BIGSERIAL PRIMARY KEY,
    email VARCHAR(255) NOT NULL UNIQUE,
    name VARCHAR(255) NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE TABLE products (
    id BIGSERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    description TEXT,
    price NUMERIC(12,2) NOT NULL CHECK (price >= 0),
    stock INTEGER NOT NULL DEFAULT 0,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE TABLE orders (
    id BIGSERIAL PRIMARY KEY,
    customer_id BIGINT NOT NULL REFERENCES customers(id) ON DELETE CASCADE,
    status VARCHAR(50) NOT NULL DEFAULT 'pending',
    total NUMERIC(12,2) NOT NULL DEFAULT 0,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE TABLE order_items (
    id BIGSERIAL PRIMARY KEY,
    order_id BIGINT NOT NULL REFERENCES orders(id) ON DELETE CASCADE,
    product_id BIGINT NOT NULL REFERENCES products(id) ON DELETE RESTRICT,
    quantity INTEGER NOT NULL CHECK (quantity > 0),
    unit_price NUMERIC(12,2) NOT NULL
);

CREATE INDEX idx_orders_customer_id ON orders(customer_id);
CREATE INDEX idx_orders_status ON orders(status);
CREATE INDEX idx_order_items_order_id ON order_items(order_id);
CREATE INDEX idx_order_items_product_id ON order_items(product_id);
```

### ERD Output (Mermaid):
```
erDiagram
    CUSTOMERS ||--o{ ORDERS : places
    ORDERS ||--|{ ORDER_ITEMS : contains
    PRODUCTS ||--o{ ORDER_ITEMS : "included in"
```

Files in this skill

  • .clawhub/origin.json145 B
  • SKILL.md4.9 KB
  • _meta.json132 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.