Nextjs data access layer
Skill ComeOnOliver/skillshub/skills/HoangNguyen0403/agent-skills-standard/nextjs-data-access-layer
Secure, reusable data access patterns with DTOs and Taint checks. Use when building a data access layer with DTOs and server-side taint checking in Next.js. (triggers: **/lib/data.ts, **/services/*.ts, **/dal/**, DAL, Data Access Layer, server-only, DTO)From its SKILL.md
npx -y skills add ComeOnOliver/skillshub --skill nextjs-data-access-layerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
2.0 KB, 387 tokens by cl100k_base, as published. Nobody here has run it
Data Access Layer (DAL)
Priority: P1 (HIGH)
Centralize all data access (Database & External APIs) to ensure consistent security, authorization, and caching.
Implementation Guidelines
- Architecture: Create a Data Access Layer (DAL) in a
services/orlib/data.tsfile. Useimport 'server-only'to prevent leaking backend logic to the client bundle. - DTOs: Always transform raw DB/API data into Data Transfer Objects (DTOs) before returning to components. This prevents leaking sensitive fields (e.g.,
passwordHash). - Security: Use
taintObjectReferenceortaintUniqueValuefrom theexperimental_taintAPI to ensure sensitive data never accidentally reaches Client Components. - Authorization: Colocate auth checks inside every DAL function. Don't rely on the UI layer to enforce safety. Use
await auth()to verify the user. - Caching: Wrap DAL functions in
cache()from React to deduplicate requests within a single render cycle, preventing redundant DB/API calls. - Error Handling: Throw standardized errors (e.g.,
NotFoundError,UnauthorizedError) to be caught by Next.jserror.tsxornotFound().
Limitations
- Client Components: Cannot import DAL files. Must use Server Actions or Route Handlers as bridges.
Anti-Patterns
- No auth checks outside DAL: Auth verification must live inside DAL functions.
- No raw ORM instances returned: Transform to plain DTO objects before returning.
- No
fetch('localhost/api')in Server Components: Call DAL functions directly. - No DAL imports in Client Components: Use Server Actions or Route Handlers as bridges.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.