agent-health
Reads production/traces/agent-metrics.jsonl and displays a per-agent performance summary table for the current or a specified…
Designs relational and NoSQL database schemas, indexing strategies, migration plans, and data modeling patterns. Use when designing a database or when the user mentions database architecture, schema design, or data modeling.
Claude Code
$ npx -y skills add tranhieutt/software_development_department --skill database-architect --agent claude-code
Codex
$ npx skills add tranhieutt/software_development_department --skill database-architect -a codex -y
Cursor
$ npx skills add tranhieutt/software_development_department --skill database-architect -a cursor -y
Gemini CLI
$ npx skills add tranhieutt/software_development_department --skill database-architect -a gemini-cli -y
GitHub Copilot
$ npx skills add tranhieutt/software_development_department --skill database-architect -a github-copilot -y
OpenCode
$ npx skills add tranhieutt/software_development_department --skill database-architect -a opencode -y
Windsurf
$ npx skills add tranhieutt/software_development_department --skill database-architect -a windsurf -y
name: database-architect type: workflow description: "Designs relational and NoSQL database schemas, indexing strategies, migration plans, and data modeling patterns. Use when designing a database or when the user mentions database architecture, schema design, or data modeling." effort: 5 allowed-tools: Read, Glob, Grep, Write, Edit, Bash argument-hint: "[project type or tech stack]" user-invocable: true when_to_use: "When selecting database technologies, designing schemas from scratch, or planning data layer migrations"
1. **Understand domain**: Access patterns, scale targets, consistency needs, compliance requirements 2. **Select technology**: Match DB type to workload (see matrix below) 3. **Design schema**: Normalization level, relationships, constraints, temporal data strategy 4. **Plan indexing**: Query-pattern-driven index design (not speculative) 5. **Design caching**: Layer strategy with invalidation 6. **Plan migration**: Zero-downtime approach, rollback procedures 7. **Document decisions**: ADR with rationale and trade-offs
| Workload | Primary choice | Alternative | |---|---|---| | OLTP / relational | PostgreSQL | MySQL | | Flexible documents | MongoDB | Firestore | | Key-value / cache | Redis | DynamoDB | | Time-series / IoT | TimescaleDB | InfluxDB | | Analytical / OLAP | ClickHouse | BigQuery | | Graph relationships | Neo4j | Amazon Neptune | | Full-text search | Elasticsearch | Meilisearch | | Globally distributed | CockroachDB | Google Spanner | | Multi-tenant SaaS | PostgreSQL (row-level security) | Schema-per-tenant |
**Decision rule**: Choose PostgreSQL by default; deviate only when access patterns demand it with documented rationale.
-- Multi-tenancy: row-level security (best for <1000 tenants, shared infra)
ALTER TABLE orders ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON orders
USING (tenant_id = current_setting('app.current_tenant_id')::uuid);
-- Soft delete + audit trail (never DELETE production data)
ALTER TABLE users ADD COLUMN deleted_at TIMESTAMPTZ;
ALTER TABLE users ADD COLUMN updated_by UUID REFERENCES users(id);
CREATE INDEX idx_users_active ON users(id) WHERE deleted_at IS NULL;
-- Temporal / slowly-changing dimensions
CREATE TABLE product_prices (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
product_id UUID NOT NULL REFERENCES products(id),
price NUMERIC(10,2) NOT NULL,
valid_from TIMESTAMPTZ NOT NULL DEFAULT NOW(),
valid_until TIMESTAMPTZ -- NULL = current price
);-- Composite index: most selective column FIRST CREATE INDEX idx_orders_user_status ON orders(user_id, status, created_at DESC); -- Partial index: filter out the 95% noise CREATE INDEX idx_orders_pending ON orders(created_at) WHERE status = 'pending'; -- Covering index: index-only scan (no heap access) CREATE INDEX idx_users_email_name ON users(email) INCLUDE (name, avatar_url); -- JSONB GIN index for flexible attribute queries CREATE INDEX idx_metadata_gin ON events USING gin(metadata jsonb_path_ops);
-- 1. Expand: add new column nullable (no lock) ALTER TABLE users ADD COLUMN phone VARCHAR(20); -- 2. Backfill: batch update (never one giant UPDATE) UPDATE users SET phone = '' WHERE phone IS NULL AND id BETWEEN x AND y; -- 3. Constrain: add NOT NULL only after backfill complete ALTER TABLE users ALTER COLUMN phone SET NOT NULL; -- 4. Switch: deploy code using new column -- 5. Contract: drop old column in separate release ALTER TABLE users DROP COLUMN old_phone;
**Zero-downtime rule**: Never add a NOT NULL column without a default in a single migration on a live table — it acquires an ACCESS EXCLUSIVE lock.
| Layer | Tool | Strategy | Invalidation | |---|---|---|---| | Hot data | Redis | Cache-aside | TTL + event-driven | | Query results | PostgreSQL materialized views | Refresh on schedule | `REFRESH MATERIALIZED VIEW CONCURRENTLY` | | Session data | Redis | Write-through | TTL | | Static references | App memory | Eager load on startup | Deploy |
Reads production/traces/agent-metrics.jsonl and displays a per-agent performance summary table for the current or a specified…
Provides the vendored agent-style v0.3.5 prose rule pack as a portable Claude skill. Use when installing, syncing, applying, or…
Provides Angular best practices for components, modules, services, and reactive patterns. Use when working with Angular…
Records unexpected API behaviors, undocumented caveats, version bugs, or non-obvious workarounds into…
Defines REST and GraphQL API contracts including endpoints, request/response schemas, auth flows, and versioning strategy. Use…
Manages the ADR (Architecture Decision Record) registry. Use when recording tech-stack choices, design patterns, or…
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.