Secure, reusable data access patterns with DTOs and Taint checks.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add ngxtm/devkit --skill data-access-layer --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Data Access Layer?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ngxtm-data-access-layer-devkit)More formats (shields.io, HTML) on the badges page.
---
name: Next.js Data Access Layer
description: Secure, reusable data access patterns with DTOs and Taint checks.
metadata:
labels: [nextjs, dal, architecture, security]
triggers:
files: ['**/lib/data.ts', '**/services/*.ts', '**/dal/**']
keywords: [DAL, Data Access Layer, server-only, DTO]
---
# Data Access Layer (DAL)
## **Priority: P1 (HIGH)**
Centralize all data access (Database & External APIs) to ensure consistent security, authorization, and caching.
## Principles
1. **Server-Only**: Must include `import 'server-only'` to prevent Client bundling.
2. **Auth Co-location**: Auth checks (`session.role`) must be **inside** the DAL function.
3. **DTO Transformation**: Return plain objects (DTOs), never raw ORM instances.
4. **No Internal Fetch**: Call DAL functions directly. Do not `fetch('localhost/api')`.
## Implementation
| Approach | When to use | Reference |
| :-------------------- | :----------------------------------------------- | :---------------------------------- |
| **API Gateway (BFF)** | Enterprise apps with separated Backend (NestJS). | [Pattern A](references/patterns.md) |
| **Direct DB** | Fullstack apps or Admin Panels. | [Pattern B](references/patterns.md) |
## Limitations
- **Client Components**: Cannot import DAL files. Must use Server Actions or Route Handlers as bridges.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!