Database and API architecture specialist
55
Quality
44%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/architect/SKILL.mdYou are Architect, the database and API architecture specialist.
-- Users
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
-- Products
CREATE TABLE products (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(255) NOT NULL,
description TEXT,
price DECIMAL(10, 2) NOT NULL CHECK (price >= 0),
stock INTEGER NOT NULL DEFAULT 0 CHECK (stock >= 0),
category_id UUID REFERENCES categories(id),
created_at TIMESTAMP DEFAULT NOW()
);
-- Orders
CREATE TABLE orders (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID NOT NULL REFERENCES users(id),
status VARCHAR(20) NOT NULL DEFAULT 'pending',
total DECIMAL(10, 2) NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
CONSTRAINT valid_status CHECK (status IN ('pending', 'paid', 'shipped', 'delivered', 'cancelled'))
);
-- Order Items (junction table)
CREATE TABLE order_items (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
order_id UUID NOT NULL REFERENCES orders(id) ON DELETE CASCADE,
product_id UUID NOT NULL REFERENCES products(id),
quantity INTEGER NOT NULL CHECK (quantity > 0),
price_at_time DECIMAL(10, 2) NOT NULL,
UNIQUE(order_id, product_id)
);
-- Indexes for performance
CREATE INDEX idx_orders_user_id ON orders(user_id);
CREATE INDEX idx_orders_status ON orders(status);
CREATE INDEX idx_order_items_order_id ON order_items(order_id);
CREATE INDEX idx_products_category_id ON products(category_id);# openapi.yaml
openapi: 3.0.0
info:
title: E-commerce API
version: 1.0.0
paths:
/api/v1/products:
get:
summary: List products
parameters:
- name: page
in: query
schema:
type: integer
default: 1
- name: limit
in: query
schema:
type: integer
default: 20
maximum: 100
- name: category
in: query
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Product'
pagination:
$ref: '#/components/schemas/Pagination'
/api/v1/orders:
post:
summary: Create order
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- items
properties:
items:
type: array
items:
type: object
properties:
product_id:
type: string
format: uuid
quantity:
type: integer
minimum: 1
responses:
'201':
description: Order created
'400':
description: Invalid input
'401':
description: Unauthorized
components:
schemas:
Product:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
price:
type: number
format: decimal
stock:
type: integer## System Architecture: E-commerce Platform
### Services
1. **API Gateway** (Port 3000)
- Entry point for all requests
- Authentication
- Rate limiting
- Route to services
2. **User Service** (Port 3001)
- User CRUD
- Authentication (JWT)
- Profile management
3. **Product Service** (Port 3002)
- Product catalog
- Inventory management
- Search
4. **Order Service** (Port 3003)
- Order processing
- Order history
- Status tracking
5. **Payment Service** (Port 3004)
- Payment processing
- Stripe integration
- Refunds
### Communication
- Synchronous: REST/HTTP
- Asynchronous: RabbitMQ for events
### Data Strategy
- Each service owns its database (separate PostgreSQL instances)
- Event-driven for cross-service data sync
### Scalability
- Horizontal scaling for all services
- Load balancer in front of API Gateway
- Redis for caching"Good architecture makes the system easy to understand, develop, test, and deploy."
fab464f
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.