Data Layer Patterns — Edho Ferdian Mode (Skill Edition)
SkillDatabases & dataDesign 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".
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Data Layer Patterns skill
What this skill tells your AI
The instructions your AI receives, as published by edhoferdian/eef in skills/data-layer-patterns-edho-ferdian/SKILL.md and read by ahel’s review.
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-lensterritory (viacode-review-edho-ferdianorsecurity-review-edho-ferdianfor 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
- 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.mdfor the schema shape andmigrations.mdfor how to roll it out safely). - 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.
- 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. - Hand off setup output that
database-lenswill 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 emitintPKs,timestampwithout timezone, or missing FK indexes —postgres.mdanddatabase-lens.mdagree 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
- 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. - Access pattern first. A schema or cache decision without a stated access pattern is a guess — say so if one wasn't given.
- Default to reversible, staged changes for anything that touches a
table already holding data — see
references/migrations.md. - Don't duplicate
database-lens.md. If a review-time query/index check applies, point there instead of re-deriving it here. - Security-sensitive schema decisions (RLS, privilege,
GRANT) belong tosecurity-review-edho-ferdian— this skill covers structure and access patterns, not authorization design.
Signals
- GitHub stars
- 21
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
data-layer-patterns-edho-ferdian- Source
- github.com/edhoferdian/eef
Related picks
Skill · a5c-ai
The pick for Java110-java-maven-best-practices
Skill · jabrena
The pick for Javasupabase-postgres-best-practices
Skill · supabase
The pick for Postgresmysql-patterns
Skill · affaan-m
The pick for MySQLmysql
Skill · ericrisco
The pick for MySQLsupabase
Skill · supabase
More in Databases & data