agents-standards
Standards for authoring SDD plugin agents — frontmatter, self-containment, skill references, and no-user-interaction rules.
PostgreSQL database standards for migrations, seeds, and schema management.
Claude Code
$ npx -y skills add LiorCohen/sdd --skill database-standards --agent claude-code
Codex
$ npx skills add LiorCohen/sdd --skill database-standards -a codex -y
Cursor
$ npx skills add LiorCohen/sdd --skill database-standards -a cursor -y
Gemini CLI
$ npx skills add LiorCohen/sdd --skill database-standards -a gemini-cli -y
GitHub Copilot
$ npx skills add LiorCohen/sdd --skill database-standards -a github-copilot -y
OpenCode
$ npx skills add LiorCohen/sdd --skill database-standards -a opencode -y
Windsurf
$ npx skills add LiorCohen/sdd --skill database-standards -a windsurf -y
name: database-standards description: PostgreSQL database standards for migrations, seeds, and schema management.
Standards for PostgreSQL database components with migrations, seeds, and schema management.
---
Database components manage schema evolution and seed data:
1. **Version-controlled schema** via numbered migrations 2. **Repeatable seed data** for development and testing 3. **Idempotent operations** for safe re-runs 4. **Transactional safety** for atomic changes
---
components/database[-{name}]/
├── package.json # Component package metadata
├── migrations/ # Schema migrations (numbered)
│ ├── 001_initial_schema.sql
│ ├── 002_add_users_table.sql
│ └── 003_add_indexes.sql
└── seeds/ # Seed data (numbered)
├── 001_lookup_data.sql
└── 002_test_users.sql---
Database components require connection configuration from `components/config/`. The `database-scaffolding` skill generates the initial database structure including a minimal config schema with `host`, `port`, `database`, `user`, and `password` fields.
---
migrations/ ├── 001_initial_schema.sql ├── 002_add_users_table.sql ├── 003_add_orders_table.sql └── 004_add_indexes.sql
**Rules:**
-- migrations/002_add_users_table.sql
BEGIN;
CREATE TABLE IF NOT EXISTS users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
email VARCHAR(255) NOT NULL UNIQUE,
name VARCHAR(255),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
COMMIT;**Required Patterns:**
| Pattern | Why | |---------|-----| | `BEGIN`/`COMMIT` | Atomic transaction | | `IF NOT EXISTS` | Idempotent (safe to re-run) | | `TIMESTAMPTZ` | Timezone-aware timestamps | | `gen_random_uuid()` | PostgreSQL native UUIDs |
| Type | When | Example | |------|------|---------| | Schema creation | New tables | `CREATE TABLE IF NOT EXISTS` | | Schema modification | Add/modify columns | `ALTER TABLE ... ADD COLUMN IF NOT EXISTS` | | Index creation | Performance | `CREATE INDEX IF NOT EXISTS` | | Data migration | Transform existing data | `UPDATE ... WHERE ...` | | Constraint addition | Add validation | `ALTER TABLE ... ADD CONSTRAINT` |
| Type | PostgreSQL Type | Notes | |------|-----------------|-------| | Primary key | `UUID` | Use `gen_random_uuid()` | | Timestamps | `TIMESTAMPTZ` | Always timezone-aware | | Money | `NUMERIC(19,4)` | Never `FLOAT` or `MONEY` | | Enums | `VARCHAR` + CHECK | Or PostgreSQL `ENUM` type | | JSON | `JSONB` | Never `JSON` |
**Migrations are forward-only.** If you need to undo:
1. Create a new migration that reverses the change 2. Never modify or delete existing migrations 3. Never use `DROP TABLE` without careful consideration
-- migrations/005_remove_legacy_column.sql BEGIN; ALTER TABLE users DROP COLUMN IF EXISTS legacy_field; COMMIT;
---
seeds/ ├── 001_lookup_data.sql ├── 002_admin_users.sql └── 003_sample_data.sql
**Rules:**
-- seeds/001_lookup_data.sql
BEGIN;
INSERT INTO status_types (code, label) VALUES
('pending', 'Pending'),
('active', 'Active'),
('completed', 'Completed')
ON CONFLICT (code) DO NOTHING;
COMMIT;**Required Patterns:**
| Pattern | Why | |---------|-----| | `BEGIN`/`COMMIT` | Atomic transaction | | `ON CONFLICT DO NOTHING` | Idempotent | | `ON CONFLICT DO UPDATE` | Upsert when updates needed |
| Category | Purpose | Example | |----------|---------|---------| | Lookup data | Reference tables | Status codes, countries | | Admin data | Initial admin users | System accounts | | Test data | Development/testing | Sample users, orders |
Seeds run in all environments. For test-only data:
-- seeds/003_test_data.sql
-- Only populate if specific flag table exists
BEGIN;
DO $$
BEGIN
-- Check if we should seed test data
-- This is controlled by a flag in the environment's config
INSERT INTO users (email, name)
SELECT 'test@example.com', 'Test User'
WHERE NOT EXISTS (SELECT 1 FROM users WHERE email = 'test@example.com');
END $$;
COMMIT;---
When adding database changes:
1. Define tables and relationships 2. Choose appropriate data types 3. Plan indexes for query patterns
1. Create new numbered migration file 2. Wrap in `BEGIN`/`COMMIT` 3. Use `IF NOT EXISTS` for idempotency
<plugin-root>/fullstack-typescript/system/system-run.sh database migrate <component-name> <plugin-root>/fullstack-typescript/system/system-run.sh database psql <component-name> # Verify schema
1. Create seed file for initial data 2. Use `ON CONFLICT` for idempotency
The backend DAL layer must follow `backend-standards` — it defines CMDO architecture with strict layer separation, including repository patterns for database queries, connection pooling rules, and typed result mapping.
---
<plugin-root>/fullstack-typescript/system/system-run.sh database setup <component-name> # Deploy PostgreSQL to k8s <plugin-root>/fullstack-typescript/system/system-run.sh database teardown <component-name> # Remove PostgreSQL from k8s <plugin-root>/fullstack-typescript/system/s
Structure for AI-assisted development AI coding assistants are powerful but chaotic. You prompt, you get code, but then what?
Standards for authoring SDD plugin agents — frontmatter, self-containment, skill references, and no-user-interaction rules.
Standards for authoring SDD plugin commands — frontmatter, user interaction, skill/agent invocation, CLI integration, and output…
Create a commit following repository guidelines with proper versioning and changelog updates.
Two-step self-review at every task lifecycle phase. Step 1 (this skill) runs in-context to gather session signals — files read vs…
D2 diagramming language reference for architecture diagrams, sequence diagrams, grid layouts, SQL tables, and class diagrams.…
Writes and maintains user-facing documentation for the SDD plugin. Proactively detects when docs are out of sync with plugin…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.