Todas las skills

prisma-client-api (prisma/skills)

Recopila consultas, filtros, operadores y métodos de Prisma Client para CRUD, relaciones y transacciones.

prisma-client-api: sin efecto medible: las 18 ejecuciones superan todas las comprobaciones (5.0 control, 5.0 prompt de una frase, 5.0 skill); el modelo ya escribe Prisma idiomático

Según el casoSegura

Codex CLI · gpt-6-astra

24.0 / 30

Mejora frente a sin skill: +0.00 · Según el caso · 18 ejecuciones

Según el caso: la mejora +0.00 está por debajo de +1.0. Para ser recomendada hace falta un total de 22/30, una calidad de salida de 3.5 y una mejora de +1.0.

SOTA

Aprobada

Probada con Codex.

Cubre Codex, Claude Code

Codex CLI 0.166 (nivel SOTA): 18 ejecuciones puntuadas. Una pasada aquí también cubre Claude Code según nuestra regla de niveles; no dice nada sobre el segundo nivel.

Puntuaciones

Cada dimensión va de 0 a 5 y las seis suman el total sobre 30. 5 es mejor en todas las dimensiones. Coste 5 significa barato y rápido. Instalación 5 significa fácil.

Fiabilidad de activación
5.0
Mejora frente a sin skill
2.0
Calidad de salida
5.0
Coste en tokens y tiempo
5.0
Instalación y portabilidad
3.0
Seguridad
4.0

Revisión de seguridad

Segura

Escaneo estático: 9 CRITICAL / 9 HIGH / 0 MEDIUM. Revisión manual: Segura para ejecutar en un sandbox sin red (hallazgos del escáner explicados). Un escaneo limpio no demuestra que una skill sea segura.

Instalar

npx skills@latest add prisma/skills --skill prisma-client-api

Origen

Commit fijado: 8ea289b730c2e89f7ff1f518af128b113d842a92

Probada: 2026-11-02

Qué probamos

  • Escribir consultas tipadas a partir de una descripción — Escribe src/queries.ts con Prisma Client con estas funciones: getUserWithPosts(id), que devuelve el usuario y solo sus posts publicados, los más recientes primero, máximo 10; searchPosts(term, cursor?), una búsqueda de títulos paginada por cursor (tamaño de página 20) e insensible a mayúsculas; upsertUser(…
  • Eliminar una consulta N+1 — src/report.ts es lento con tablas grandes. Corrige el problema de rendimiento en src/report.ts y mantén la misma forma de salida.
  • Revisar código Prisma en busca de errores — Revisa src/search.ts y src/report.ts en busca de errores de Prisma y de cualquier cosa arriesgada; enumera los problemas, del más grave al menos grave. No cambies ningún archivo.

Ventajas

  • La skill se activó sin nombrarla: se leyó el archivo de la skill en 6/6 ejecuciones con skill.
  • Sin sobrecarga de tokens: 1.05x los tokens de sin skill.
  • Calidad absoluta alta con la skill: 5.0 sobre 5.

Inconvenientes

  • Sin mejora medible frente a sin skill (+0.00, dentro del ruido).
  • Un prompt de una frase obtuvo 5.0, frente a 5.0 con la skill (+0.00).
  • El control ya puntúa 5.0: efecto techo, así que la prueba no puede mostrar una mejora.
  • n=2 por tarea y rama; las diferencias de menos de aproximadamente 1 punto son ruido.

Reseña

Codex CLI 0.166 (gpt-6-astra, razonamiento bajo) en un PC Windows de prueba dedicado, con un proyecto temporal nuevo y HOME/TMPDIR/cachés temporales en cada ejecución, la skill instalada (grupo con skill), sin ella (control) o sin ella pero con el requisito central de la skill comprimido en una frase añadida al prompt (grupo del prompt de una frase), 2 ejecuciones por grupo y tarea, red desactivada y escrituras en /tmp bloqueadas. Los prompts nunca mencionan la skill (salvo la formulación indicada más abajo). Un proyecto Prisma pequeño (schema, seed, archivos src). Tareas: escribir src/queries.ts con cinco funciones de consulta tipadas (usuario con sus últimos 10 posts publicados, búsqueda insensible a mayúsculas paginada por cursor, upsert, transferencia atómica de posts y un recuento groupBy), corregir un N+1 en src/report.ts manteniendo la forma de su salida y revisar dos archivos en busca de errores de Prisma (una consulta raw construida con interpolación de cadenas y otras cosas). Los prompts no nombran características de Prisma. El prompt de una frase enumera las características idiomáticas en una sola frase.

Comparación de tres ramas

RamaPuntuación media (0-5)Tokens por ejecución
Sin la skill5.092k
Prompt de una frase5.088k
Con la skill5.097k

Medido con Codex CLI en 18 ejecuciones, puntuado con comprobaciones basadas en reglas y sin juez LLM. Total 24.0 / 30, veredicto Según el caso.

Veredicto: Según el caso (24.0 / 30). Fuente: prisma/skills, prisma-client-api, fijada en el commit 8ea289b. Instalación: npx skills@latest add prisma/skills --skill prisma-client-api. Licencia: Apache-2.0 (LICENSE del repositorio).

Qué es

La skill prisma-client-api (prisma/skills): una referencia de la API de consultas de Prisma Client (findUnique/findMany, select/include, filtros, paginación por cursor, upsert, transacciones, groupBy, consultas raw) además de orientación al estilo de la documentación, entregada como SKILL.md y archivos de reglas.

Cómo lo probamos

Codex CLI 0.166 (gpt-6-astra, razonamiento bajo) en un PC de pruebas Windows dedicado, un proyecto temporal nuevo y HOME/TMPDIR/cachés temporales por ejecución, skill instalada (tratamiento) o ausente (control) o ausente con el requisito central de la skill comprimido en una frase añadida al final del prompt (grupo de una frase), 2 ejecuciones por grupo y tarea, red desactivada, escrituras en /tmp bloqueadas. Los prompts nunca mencionan la skill (salvo la formulación indicada abajo).

Un proyecto Prisma pequeño (schema, seed, archivos src). Tareas: escribir src/queries.ts con cinco funciones de consulta tipadas (usuario con sus últimos 10 posts publicados, búsqueda insensible a mayúsculas paginada por cursor, upsert, transferencia atómica de posts, un recuento groupBy), arreglar un N+1 en src/report.ts manteniendo la forma de su salida y revisar dos archivos en busca de errores de Prisma (una consulta raw construida con interpolación de cadenas y otros). Los prompts no nombran características de Prisma. La frase única enumera las características idiomáticas en una sola frase.

  1. Escribe consultas tipadas a partir de una descripción — Escribe src/queries.ts usando Prisma Client con estas funciones: getUserWithPosts(id) que devuelve el usuario y solo sus posts publicados, los más recientes primero, máximo 10; searchPosts(term, cursor?) una búsqueda de título insensible a mayúsculas paginada por cursor (tamaño de página 20); upsertUser(…
  2. Elimina una consulta N+1 — src/report.ts es lento con tablas grandes. Arregla el problema de rendimiento en src/report.ts y mantén la misma forma de salida.
  3. Revisa código Prisma en busca de errores — Revisa src/search.ts y src/report.ts en busca de errores de Prisma y de cualquier cosa arriesgada; enumera los problemas, lo más grave primero. No cambies ningún archivo.

La puntuación es programática (tests ocultos / detección de problemas sembrados / comprobaciones de restricciones / renderizado + OCR cuando corresponde), 0–5 por ejecución. Ningún juez LLM decidió ninguna puntuación.

Resultados

La frase única que recibió el tercer grupo: "Usa Prisma Client de forma idiomática: findUnique en campos únicos, include/select para evitar N+1 y traer de más, filtros con mode: 'insensitive', paginación por cursor con take, upsert para insertar o actualizar, $transaction o updateMany para cambios atómicos, groupBy para agregados y nunca $queryRawUnsafe con entrada interpolada."

TareaPuntuación controlUna fraseCon la skillTokens controlTokens de una fraseTokens con la skillSkill leída
t1-queries5.05.05.083k83k105k2/2
t2-n-plus-15.05.05.0103k103k100k2/2
t3-review5.05.05.089k75k84k2/2

Puntuación media: 5.0 sin vs 5.0 con la skill (delta +0.0). Tokens por ejecución: 92k vs 97k (1.05x); tiempo 44s vs 40s. Grupo de una frase: 5.0 (la ganancia de la skill sobre la frase única: +0.0; la ganancia de la frase única sobre sin skill: +0.0); tokens de la frase única 88k por ejecución, así que la skill cuesta 1.10x la frase única.

Qué ocurrió

  • Todas las ejecuciones de todos los grupos pasaron todas las comprobaciones: control 5.00, una frase 5.00, skill 5.00 (n=6 cada uno). Las consultas generadas usan findUnique, mode: 'insensitive', cursor + take, upsert, $transaction/updateMany y groupBy; el N+1 se arregló con include/select o batching; la revisión encontró la interpolación raw insegura en todas las ejecuciones.
  • La skill se leyó en 6/6 ejecuciones de tratamiento y costó 97k tokens por ejecución frente a 92k del control y 88k de una frase (1.05x): una pequeña sobrecarga, sin ganancia.
  • Las ejecuciones de tratamiento copian los archivos de reglas de la skill en el proyecto (9.7 archivos por ejecución de media).
  • El conjunto de comprobaciones tiene un efecto techo: con todas las ejecuciones al máximo, solo puede decir que la skill no hizo daño, no que nunca ayude. Harían falta tareas más difíciles (adaptadores de controlador de Prisma 7, características nuevas que el modelo quizá no conozca) para encontrar un beneficio.

Puntuaciones por dimensión

DimensiónPuntuaciónMotivo
1_output_quality5.0

Puntuación media 5.00/5 con la skill (comprobaciones programáticas, véase la tabla por tarea).

2_lift_vs_no_skill2.0

+0.00 puntos frente a 5.00 sin la skill (n=2 por tarea; menos de ~1 punto es ruido).

3_trigger5.0Archivo de la skill leído en 6/6 ejecuciones de tratamiento.
4_instructions_portability3SKILL.md y unos diez archivos de reglas; solo documentación.
5_efficiency51.05x tokens (97k vs 92k por ejecución) y 0.92x tiempo (40s vs 44s).
6_safety_hygiene4

El escáner informa de 9 CRITICAL, todas ellas menciones en la documentación a archivos .env en contexto (véase security.md).

Límites de esta prueba

  • Comprobaciones basadas en reglas sobre el texto del código; no se generó ningún cliente Prisma ni se ejecutó ninguna consulta (sin conexión, sin base de datos).
  • Todos los grupos en el techo: las tareas miden Prisma idiomático básico que el modelo base ya conoce.
  • n=2 por celda; no se ejercita el conocimiento de APIs más nuevas (la parte que más probablemente aportaría una skill de documentación).
  • n = 2 por grupo y tarea: las diferencias de menos de ~1 punto son ruido.
  • La puntuación basada en reglas mide lo que las comprobaciones pueden ver; no puede juzgar el gusto ni si el resultado es el mejor posible.

Seguridad

Consulta security.md. Escaneo: 9 CRITICAL / 9 HIGH / 0 MEDIUM. Veredicto: segura de ejecutar (sandbox sin red). Un escaneo limpio no demuestra que una skill sea segura.

Conclusión

En el trabajo diario con Prisma Client, Codex sin más ya es correcto, así que la skill añade un pequeño coste de tokens sin cambio visible aquí. Puede importar para características de Prisma muy nuevas que esta prueba no tocó.

Transcripción

Registro de ejecuciones: prisma-client-api (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.)
Columnas: tarea, grupo-ejecución, puntuación (0-5), tokens, segundos, comprobaciones superadas, archivos de la skill que abrió el agente.

t1-queries control-1: puntuación 5.0, tokens 84040, s 35.0, comprobaciones 7/7, no abrió nada
t1-queries control-2: puntuación 5.0, tokens 83803, s 36.4, comprobaciones 7/7, no abrió nada
t1-queries oneliner-1: puntuación 5.0, tokens 83731, s 38.4, comprobaciones 7/7, no abrió nada
t1-queries oneliner-2: puntuación 5.0, tokens 83779, s 38.1, comprobaciones 7/7, no abrió nada
t1-queries treatment-1: puntuación 5.0, tokens 110031, s 39.9, comprobaciones 7/7, abrió prisma-client-api
t1-queries treatment-2: puntuación 5.0, tokens 100691, s 36.8, comprobaciones 7/7, abrió prisma-client-api
t2-n-plus-1 control-1: puntuación 5.0, tokens 103258, s 57.7, comprobaciones 3/3, no abrió nada
t2-n-plus-1 control-2: puntuación 5.0, tokens 103374, s 54.2, comprobaciones 3/3, no abrió nada
t2-n-plus-1 oneliner-1: puntuación 5.0, tokens 103307, s 51.8, comprobaciones 3/3, no abrió nada

18 ejecuciones, 3 artefactos

Resultado de ejemplo

SOTA · With the skill: src/queries.ts (t1-queries, run 1, Codex)

import { prisma } from "./db"; export function getUserWithPosts(id: number) { return prisma.user.findUnique({ where: { id }, include: { posts: { where: { published: true }, orderBy: [{ createdAt: "desc" }, { id: "desc" }], take: 10, }, }, }); } // Pass the last post's id as the cursor for the next page. export function searchPosts(term: string, cursor?: number) { return prisma.post.findMany({ where: { title: { contains: term, mode: "insensitive" } }, orderBy: { id: "asc" }, take: 20, ...(cursor !== undefined ? { cursor: { id: cursor }, skip: 1 } : {}), }); } export function upsertUser(email: string, name: string | null) { return prisma.user.upsert({ where: { email }, update: { name }, create: { email, name }, }); } // Returns { count } with the number of posts transferred. export function transferPosts(fromId: number, toId: number) { return prisma.$transaction(async (tx) => { await tx.user.findUniqueOrThrow({ where: { id: fromId } }); await tx.user.findUniqueOrThrow({ where: { id: toId } }); return tx.post.updateMany({ where: { authorId: fromId }, data: { authorId: toId }, }); }); } // Includes authors with posts; each row has { authorId, _count: { _all } }. export function postCountsByAuthor() { return prisma.post.groupBy({ by: ["authorId"], _count: { _all: true }, orderBy: { authorId: "asc" }, }); }

Ver Pro