AgentSkillsCN

db-designer

根据功能描述生成数据库模式。用户看不到SQL。 当功能需要数据持久化时使用。 仅限内部使用触发。

SKILL.md
--- frontmatter
name: db-designer
description: |
  Generate database schema from feature descriptions. User doesn't see SQL.
  Use when: features require data persistence.
  Triggers: internal use only.

Database Designer

Infer schema from requirements. User never writes SQL.

Process

  1. Analyze requirements

    • "Users can save expenses" → users, expenses tables
    • "Track categories" → categories table
    • "Monthly reports" → consider aggregation
  2. Design schema

    • Tables and columns
    • Relationships (1:1, 1:N, N:M)
    • Indexes for performance
  3. Generate migration

    • Create migration file
    • Apply to database
    • Update ORM models

Schema Patterns

FeatureTables
Authusers, sessions
Blogposts, comments, tags
E-commerceproducts, orders, order_items
Taskstasks, projects, labels
Socialusers, posts, follows, likes

Template-Specific

Supabase (nextjs-supabase)

sql
-- Auto-generated, user doesn't see
create table expenses (
  id uuid primary key default gen_random_uuid(),
  user_id uuid references users(id),
  amount decimal not null,
  category text,
  created_at timestamptz default now()
);

PostgreSQL (fastapi-postgres)

python
# Alembic migration auto-generated
class Expense(Base):
    id = Column(UUID, primary_key=True)
    user_id = Column(UUID, ForeignKey('users.id'))
    amount = Column(Numeric, nullable=False)

Drizzle (hono-drizzle)

typescript
// Schema auto-generated
export const expenses = pgTable('expenses', {
  id: uuid('id').primaryKey().defaultRandom(),
  userId: uuid('user_id').references(() => users.id),
  amount: numeric('amount').notNull(),
});

User Experience

User: "I want to track expenses by category"

Internally:

  1. Create expenses table
  2. Create categories table
  3. Add foreign key
  4. Generate models
  5. Create migration
  6. Apply to database

User sees: "✅ Ready to save expenses"