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
  • 0 views
  • 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…