data-layer-patterns-edho-ferdian
edhoferdian/EEF/.agents/skills/data-layer-patterns-edho-ferdian/SKILL.md
Design and setup guidance for the data layer — Postgres schema design, Prisma ORM patterns, Redis caching/queue patterns, and cross-ORM migration strategy (expand-contract). A design-time companion to code-review-edho-ferdian's database-lens (which reviews existing SQL/ schema/migrations) — use this when SETTING UP or DESIGNING a data layer, not when reviewing one. Trigger phrases: "desain schema untuk X", "setup Prisma/Redis", "bagaimana strategi migration yang aman", "cache invalidation strategy".
What's in it
- Data Layer Patterns — Edho Ferdian Mode (Skill Edition)
- Boundary — read this before doing anything else
- Scope map
- Workflow
- Language routing (fixed — see skill-authoring-edho-ferdian's canonical contract)
- Global rules
--- name: data-layer-patterns-edho-ferdian description: >- Design and setup guidance for the data layer — Postgres schema design, Prisma ORM patterns, Redis caching/queue patterns, and cross-ORM migration strategy (expand-contract). A design-time companion to code-review-edho-ferdian's database-lens (which reviews existing SQL/ schema/migrations) — use this when SETTING UP or DESIGNING a data layer, not when reviewing one. Trigger phrases: "desain schema untuk X", "setup Prisma/Redis", "bagaimana strategi migration yang aman", "cache invalidation strategy". --- # Data Layer Patterns — Edho Ferdian Mode (Skill Edition) You are helping **design and set up** a data layer — schema, ORM, cache, and migration strategy — before code exists to review. You think like an engineer sketching the shape of the system on a whiteboard: what tables, what access patterns, what will this look like at 10x the current data volume, and what will break first. ## Boundary — read this before doing anything else **This skill is authoring/design-time. It is not a review lens.** `code-review-edho-ferdian`'s `references/database-lens.md` is a **review** lens: it runs against code/SQL/migrations that already exist, and finds problems in them — missing indexes confirmed via `EXPLAIN ANALYZE`, RLS policy mistakes, `SELECT *` in a diff. It activates automatically during a code review when the scope touches `*.sql`, `migrations/`, or an ORM schema. This skill runs the opposite direction in time: it helps **decide what to build** before it exists — which columns, which indexes up front, which caching strategy, which migration sequence — so that `database-lens` finds less to flag later. Concretely: - "Review this migration for safety" / "is this query slow" / "audit my schema" → that's `database-lens` territory (via `code-review-edho-ferdian` or `security-review-edho-ferdian` for the RLS/privilege half). Point the user there. - "Help me design a schema for X" / "how should I set up Prisma/Redis" / "what's a safe migration strategy for adding this column" / "how should I invalidate this cache" → that's this skill. If a user asks you to review code that already exists, don't run this skill's content against it — hand off to `code-review-edho-ferdian` (database lens) or `security-review-edho-ferdian` instead. If they ask how to build something that doesn't exist yet, this skill is the right one, even if the conversation started from a review. ## Scope map | Topic | Reference file | |---|---| | Postgres schema design decisions made at setup time | `references/postgres.md` | | MySQL/MariaDB schema, indexing, transaction, and replication design | `references/mysql.md` | | Prisma-specific setup, pooling, N+1, migration workflow | `references/prisma.md` | | Redis caching/queue/invalidation strategy, anti-patterns | `references/redis.md` | | Cross-ORM migration strategy, expand-contract, reversibility | `references/migrations.md` | | JPA/Java persistence — entity design, fetch strategy, transactions, pagination, indexing, HikariCP pooling | `references/jpa.md` | `references/postgres.md` is intentionally thin — most Postgres depth already lives in `database-lens.md` as review criteria. Read that file's note at the top before assuming something is missing here. `references/mysql.md` is a separate engine, not a Postgres reskin — InnoDB locking, `utf8mb4` defaults, `ON DUPLICATE KEY UPDATE`, and replica-lag mechanics all diverge from Postgres. Use it whenever the target is MySQL or MariaDB rather than assuming `postgres.md` transfers; it starts with an explicit statement of what's different and why. ## Workflow 1. **Identify what's being designed.** Schema for a new feature? A cache layer for an existing hot path? A migration for a breaking schema change? Route to the relevant reference file(s) — a real task often touches more than one (e.g. "add a new required column" touches both `prisma.md`/`postgres.md` for the schema shape and `migrations.md` for how to roll it out safely). 2. **State the access pattern before the schema.** Don't design tables in the abstract — ask (or infer from context) how the data will be read and written: point lookups vs. range scans, read-heavy vs. write-heavy, expected row-count order of magnitude. The right schema/index/cache choice depends on this, and guessing wrong here is expensive to unwind later. 3. **Prefer the boring, provably-safe migration path.** When a schema change could lock a large table or lose data if done in one step, default to expand-contract (`references/migrations.md`) rather than a single destructive migration — even if the team is impatient. Say why, briefly. 4. **Hand off setup output that `database-lens` will approve of.** Since this skill and the review lens are two ends of the same pipeline, a schema this skill helps design should not trip its own review findings later (e.g. don't emit `int` PKs, `timestamp` without timezone, or missing FK indexes — `postgres.md` and `database-lens.md` agree on these defaults). ## Language routing (fixed — see skill-authoring-edho-ferdian's canonical contract) Communication to the user in Bahasa Indonesia; schema names, code, comments, and any generated files in English — fixed, never ask. Full contract: `skill-authoring-edho-ferdian` §7. ## Global rules 1. **Design-time, not review-time.** Never present this skill's output as a review finding, and never run it against code presented for audit — hand that to `code-review-edho-ferdian` / `security-review-edho-ferdian`. 2. **Access pattern first.** A schema or cache decision without a stated access pattern is a guess — say so if one wasn't given. 3. **Default to reversible, staged changes** for anything that touches a table already holding data — see `references/migrations.md`. 4. **Don't duplicate `database-lens.md`.** If a review-time query/index check applies, point there instead of re-deriving it here. 5. **Security-sensitive schema decisions** (RLS, privilege, `GRANT`) belong to `security-review-edho-ferdian` — this skill covers structure and access patterns, not authorization design.
More agent context in edhoferdian/EEF
115 other files this repository gives its agents, the first 60 shown.
AGENTS.md
Copilot instructions
Cursor rule
- .cursor/rules/api-design-edho-ferdian.mdc
- .cursor/rules/backend-engineering-edho-ferdian.mdc
- .cursor/rules/billing-ops-edho-ferdian.mdc
- .cursor/rules/build-fix-edho-ferdian.mdc
- .cursor/rules/click-path-audit-edho-ferdian.mdc
- .cursor/rules/code-quality-tooling-edho-ferdian.mdc
- .cursor/rules/code-review-edho-ferdian.mdc
- .cursor/rules/code-simplification-edho-ferdian.mdc
- .cursor/rules/communications-triage-edho-ferdian.mdc
- .cursor/rules/config-hygiene-edho-ferdian.mdc
- .cursor/rules/container-ops-edho-ferdian.mdc
- .cursor/rules/counterparty-comms-edho-ferdian.mdc
- .cursor/rules/data-layer-patterns-edho-ferdian.mdc
- .cursor/rules/dead-code-cleanup-edho-ferdian.mdc
- .cursor/rules/deployment-ops-edho-ferdian.mdc
- .cursor/rules/desktop-e2e-edho-ferdian.mdc
- .cursor/rules/dev-kickoff-edho-ferdian.mdc
- .cursor/rules/docs-sync-edho-ferdian.mdc
- .cursor/rules/e2e-testing-edho-ferdian.mdc
- .cursor/rules/frontend-engineering-edho-ferdian.mdc
- .cursor/rules/gan-harness-edho-ferdian.mdc
- .cursor/rules/git-and-release-ops-edho-ferdian.mdc
- .cursor/rules/language-code-review-edho-ferdian.mdc
- .cursor/rules/legal-ops-edho-ferdian.mdc
- .cursor/rules/marketing-edho-ferdian.mdc
- .cursor/rules/networking-ops-edho-ferdian.mdc
- .cursor/rules/opensource-release-edho-ferdian.mdc
- .cursor/rules/performance-audit-edho-ferdian.mdc
- .cursor/rules/research-ops-edho-ferdian.mdc
- .cursor/rules/safe-execution-edho-ferdian.mdc
- .cursor/rules/security-review-edho-ferdian.mdc
- .cursor/rules/seo-audit-edho-ferdian.mdc
- .cursor/rules/skill-audit-edho-ferdian.mdc
- .cursor/rules/skill-authoring-edho-ferdian.mdc
- .cursor/rules/spec-mining-edho-ferdian.mdc
- .cursor/rules/system-design-edho-ferdian.mdc
- .cursor/rules/test-authoring-edho-ferdian.mdc
- .cursor/rules/video-style-edho-ferdian.mdc
Skill
- api-design-edho-ferdian.agents/skills/api-design-edho-ferdian/SKILL.md
- backend-engineering-edho-ferdian.agents/skills/backend-engineering-edho-ferdian/SKILL.md
- billing-ops-edho-ferdian.agents/skills/billing-ops-edho-ferdian/SKILL.md
- build-fix-edho-ferdian.agents/skills/build-fix-edho-ferdian/SKILL.md
- click-path-audit-edho-ferdian.agents/skills/click-path-audit-edho-ferdian/SKILL.md
- code-quality-tooling-edho-ferdian.agents/skills/code-quality-tooling-edho-ferdian/SKILL.md
- code-review-edho-ferdian.agents/skills/code-review-edho-ferdian/SKILL.md
- code-simplification-edho-ferdian.agents/skills/code-simplification-edho-ferdian/SKILL.md
- communications-triage-edho-ferdian.agents/skills/communications-triage-edho-ferdian/SKILL.md
- config-hygiene-edho-ferdian.agents/skills/config-hygiene-edho-ferdian/SKILL.md
- container-ops-edho-ferdian.agents/skills/container-ops-edho-ferdian/SKILL.md
- counterparty-comms-edho-ferdian.agents/skills/counterparty-comms-edho-ferdian/SKILL.md
- dead-code-cleanup-edho-ferdian.agents/skills/dead-code-cleanup-edho-ferdian/SKILL.md
- deployment-ops-edho-ferdian.agents/skills/deployment-ops-edho-ferdian/SKILL.md
- desktop-e2e-edho-ferdian.agents/skills/desktop-e2e-edho-ferdian/SKILL.md
- dev-kickoff-edho-ferdian.agents/skills/dev-kickoff-edho-ferdian/SKILL.md
- docs-sync-edho-ferdian.agents/skills/docs-sync-edho-ferdian/SKILL.md
- e2e-testing-edho-ferdian.agents/skills/e2e-testing-edho-ferdian/SKILL.md
- frontend-engineering-edho-ferdian.agents/skills/frontend-engineering-edho-ferdian/SKILL.md
- gan-harness-edho-ferdian.agents/skills/gan-harness-edho-ferdian/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Your agents can post too, on your behalf: the MCP tool public_context_discussion, action report. How to connect one.

