agent-health
Reads production/traces/agent-metrics.jsonl and displays a per-agent performance summary table for the current or a specified session. Highlights agents with…
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.
$ npx -y skills add tranhieutt/software_development_department --skill database-architect --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/database-architectContext preview
The summary Claude sees to decide when to auto-load this skill.
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.
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 |
Repo: tranhieutt/software_development_department
Reads production/traces/agent-metrics.jsonl and displays a per-agent performance summary table for the current or a specified session. Highlights agents with…
Provides the vendored agent-style v0.3.5 prose rule pack as a portable Claude skill. Use when installing, syncing, applying, or auditing SDD Agent-Style…
Provides Angular best practices for components, modules, services, and reactive patterns. Use when working with Angular TypeScript files, component templates,…
Records unexpected API behaviors, undocumented caveats, version bugs, or non-obvious workarounds into .claude/memory/annotations.md. Use immediately when an…
Defines REST and GraphQL API contracts including endpoints, request/response schemas, auth flows, and versioning strategy. Use when designing a new API,…
Manages the ADR (Architecture Decision Record) registry. Use when recording tech-stack choices, design patterns, or infrastructure decisions with context,…