Tous les skills

prisma-client-api (prisma/skills)

Répertorie les requêtes, filtres, opérateurs et méthodes de Prisma Client pour CRUD, relations et transactions.

prisma-client-api : aucun effet mesurable : les 18 exécutions passent tous les contrôles (5.0 contrôle, 5.0 une phrase, 5.0 skill) ; le modèle écrit déjà du Prisma idiomatique

Selon les casSûr

Codex CLI · gpt-6-astra

24.0 / 30

Gain par rapport à sans skill : +0.00 · Selon les cas · 18 exécutions

Selon les cas : le gain +0.00 est inférieur à +1.0. Pour être recommandé, il faut un total de 22/30, une qualité de sortie de 3.5 et un gain de +1.0.

SOTA

Réussi

Testé avec Codex.

Couvre Codex, Claude Code

Codex CLI 0.166 (palier SOTA) : 18 exécutions notées. Une réussite ici couvre aussi Claude Code selon notre règle de palier ; elle ne dit rien du second palier.

Scores

Chaque dimension va de 0 à 5 et les six forment le total sur 30. 5 est la meilleure note dans chaque dimension. Coût 5 signifie bon marché et rapide. Installation 5 signifie facile.

Fiabilité du déclenchement
5.0
Gain par rapport à sans skill
2.0
Qualité de sortie
5.0
Coût en tokens et en temps
5.0
Installation et portabilité
3.0
Sécurité
4.0

Revue de sécurité

Sûr

Scan statique : 9 CRITIQUE / 9 ÉLEVÉ / 0 MOYEN. Revue manuelle : sûr à exécuter dans un bac à sable sans réseau (résultats du scanner expliqués). Un scan propre ne prouve pas qu'un skill est sûr.

Installer

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

Source

Commit épinglé: 8ea289b730c2e89f7ff1f518af128b113d842a92

Testé: 2026-11-02

Ce que nous avons testé

  • Écrire des requêtes typées à partir d'une description — Écrivez src/queries.ts avec Prisma Client et ces fonctions : getUserWithPosts(id) renvoyant l'utilisateur et uniquement ses billets publiés, du plus récent au plus ancien, 10 max ; searchPosts(term, cursor?) une recherche de titre paginée par curseur (taille de page 20) insensible à la casse ; upsertUser(…
  • Supprimer une requête N+1 — src/report.ts est lent sur les grandes tables. Corrigez le problème de performance dans src/report.ts en conservant la même forme de retour.
  • Relire du code Prisma pour des erreurs — Relisez src/search.ts et src/report.ts pour des erreurs Prisma et tout ce qui est risqué ; listez les problèmes du plus grave au moins grave. Ne modifiez aucun fichier.

Points forts

  • Le skill a été détecté sans être nommé : son fichier a été lu dans 6/6 exécutions avec skill.
  • Aucune surcharge de tokens : 1.05 fois le volume de tokens sans skill.
  • Qualité absolue élevée avec le skill : 5.0 sur 5.

Points faibles

  • Aucun gain mesurable par rapport à sans skill (+0.00, dans le bruit).
  • Un prompt d'une phrase obtient 5.0, contre 5.0 avec le skill (+0.00).
  • Le contrôle atteint déjà 5.0 : effet plafond, le test ne peut donc pas montrer de gain.
  • n=2 par tâche et par bras ; les écarts inférieurs à environ 1 point sont du bruit.

Avis

Codex CLI 0.166 (gpt-6-astra, low reasoning) sur un PC Windows de test dédié, un projet temporaire neuf et des HOME/TMPDIR/caches temporaires à chaque exécution, skill installé (traitement) ou absent (contrôle) ou absent avec l'exigence centrale du skill compressée en une phrase ajoutée au prompt (groupe « prompt d'une phrase »), 2 exécutions par groupe et par tâche, réseau coupé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais le skill (sauf la formulation indiquée ci-dessous). Un petit projet Prisma (schéma, seed, fichiers src). Tâches : écrire src/queries.ts avec cinq fonctions de requête typées (utilisateur avec ses 10 derniers billets publiés, recherche paginée par curseur insensible à la casse, upsert, transfert atomique de billets, un count groupBy), corriger un N+1 dans src/report.ts en conservant la forme de sortie, et relire deux fichiers pour des erreurs Prisma (une requête brute construite par interpolation de chaînes et autres). Les prompts ne nomment pas les fonctionnalités Prisma. Le groupe « une phrase » liste les fonctionnalités idiomatiques en une phrase.

Comparaison à trois bras

BrasScore moyen (0-5)Tokens par exécution
Sans le skill5.092k
Prompt d'une phrase5.088k
Avec le skill5.097k

Mesuré avec Codex CLI sur 18 exécutions, noté par des contrôles basés sur des règles, sans juge LLM. Total 24.0 / 30, verdict Selon les cas.

Verdict : Selon les cas (24.0 / 30). Source : prisma/skills, prisma-client-api, épinglé au commit 8ea289b. Installation : npx skills@latest add prisma/skills --skill prisma-client-api. Licence : Apache-2.0 (LICENSE du dépôt).

Ce que c'est

Le skill prisma-client-api (prisma/skills) : une référence pour l'API de requête de Prisma Client (findUnique/findMany, select/include, filtres, pagination par curseur, upsert, transactions, groupBy, requêtes brutes) ainsi que des conseils de style documentation, livrés sous forme de SKILL.md et de fichiers de règles.

Comment nous avons testé

Codex CLI 0.166 (gpt-6-astra, raisonnement faible) sur un PC de test Windows dédié, un projet temporaire neuf et des caches HOME/TMPDIR temporaires à chaque exécution, skill installé (groupe avec skill) ou absent (groupe témoin) ou absent avec l'exigence centrale du skill compressée en une phrase ajoutée à la fin du prompt (groupe prompt d'une phrase), 2 exécutions par groupe et par tâche, réseau coupé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais le skill (sauf la formulation indiquée ci-dessous).

Un petit projet Prisma (schéma, seed, fichiers src). Tâches : écrire src/queries.ts avec cinq fonctions de requête typées (utilisateur avec ses 10 derniers articles publiés, recherche paginée par curseur insensible à la casse, upsert, transfert atomique d'articles, un comptage groupBy), corriger un N+1 dans src/report.ts en conservant la forme de sa sortie, et relire deux fichiers pour des erreurs Prisma (une requête brute construite par interpolation de chaînes et autres). Les prompts ne nomment pas les fonctionnalités de Prisma. Le prompt d'une phrase énumère les fonctionnalités idiomatiques en une phrase.

  1. Écrire des requêtes typées à partir d'une description — Écrivez src/queries.ts avec Prisma Client et ces fonctions : getUserWithPosts(id) renvoyant l'utilisateur et uniquement ses articles publiés, du plus récent au plus ancien, 10 maximum ; searchPosts(term, cursor?) une recherche de titre paginée par curseur (taille de page 20) insensible à la casse ; upsertUser(…
  2. Supprimer une requête N+1 — src/report.ts est lent sur les grandes tables. Corrigez le problème de performance dans src/report.ts et conservez la même forme de retour.
  3. Relire du code Prisma pour y trouver des erreurs — Relisez src/search.ts et src/report.ts pour des erreurs Prisma et tout ce qui est risqué ; énumérez les problèmes par ordre de gravité décroissante. Ne modifiez aucun fichier.

La notation est programmatique (tests cachés / détection de problèmes implantés / vérifications de contraintes / rendu + OCR le cas échéant), de 0 à 5 par exécution. Aucun juge LLM n'a décidé d'un seul score.

Résultats

Le prompt d'une phrase donné au troisième groupe : "Utilisez Prisma Client de façon idiomatique : findUnique sur les champs uniques, include/select pour éviter les N+1 et le sur-fetching, filtres avec mode: 'insensitive', pagination par curseur avec take, upsert pour insérer-ou-mettre-à-jour, $transaction ou updateMany pour les changements atomiques, groupBy pour les agrégats, et jamais $queryRawUnsafe avec une entrée interpolée."

TâcheScore sans skillPrompt d'une phraseAvec le skillTokens sans skillTokens prompt d'une phraseTokens avec skillSkill lu
t1-queries5.05.05.083k83k105k2/2
t2-n-plus-15.05.05.0103k103k100k2/2
t3-review5.05.05.089k75k84k2/2

Score moyen : 5.0 sans le skill contre 5.0 avec (delta +0.0). Tokens par exécution : 92k contre 97k (1.05x) ; temps 44s contre 40s. Groupe prompt d'une phrase : 5.0 (gain du skill par rapport au prompt d'une phrase : +0.0 ; gain du prompt d'une phrase par rapport à l'absence de skill : +0.0) ; 88k tokens par exécution pour le prompt d'une phrase, donc le skill coûte 1.10x le prompt d'une phrase.

Ce qui s'est passé

  • Chaque exécution de chaque groupe a passé toutes les vérifications : témoin 5.00, prompt d'une phrase 5.00, skill 5.00 (n=6 chacun). Les requêtes générées utilisent findUnique, mode: 'insensitive', cursor + take, upsert, $transaction/updateMany et groupBy ; le N+1 a été corrigé avec include/select ou du batching ; la relecture a trouvé l'interpolation brute non sûre dans chaque exécution.
  • Le skill a été lu dans 6/6 exécutions avec skill et a coûté 97k tokens par exécution contre 92k pour le témoin et 88k pour le prompt d'une phrase (1.05x) : un léger surcoût, sans gain.
  • Les exécutions avec skill copient les fichiers de règles du skill dans le projet (9.7 fichiers par exécution en moyenne).
  • L'ensemble de vérifications a un effet de plafond : avec toutes les exécutions au maximum, il peut seulement dire que le skill n'a pas nui, pas qu'il n'aide jamais. Des tâches plus difficiles (adaptateurs de pilote Prisma 7, fonctionnalités plus récentes que le modèle ignore peut-être) seraient nécessaires pour trouver un bénéfice.

Scores par dimension

DimensionScorePourquoi
1_output_quality5.0

Score moyen 5.00/5 avec le skill (vérifications programmatiques, voir le tableau par tâche).

2_lift_vs_no_skill2.0

+0.00 point contre 5.00 sans le skill (n=2 par tâche ; moins d'environ 1 point relève du bruit).

3_trigger5.0Fichier du skill lu dans 6/6 exécutions avec skill.
4_instructions_portability3SKILL.md et environ dix fichiers de règles ; documentation uniquement.
5_efficiency51.05x tokens (97k contre 92k par exécution) et 0.92x temps (40s contre 44s).
6_safety_hygiene4

Le scanner signale 9 CRITICAL, toutes des mentions en contexte de fichiers .env dans la documentation (voir security.md).

Limites de ce test

  • Vérifications basées sur des règles portant sur le texte du code ; aucun client Prisma n'a été généré et aucune requête n'a été exécutée (hors ligne, sans base de données).
  • Tous les groupes au plafond : les tâches mesurent du Prisma idiomatique de base que le modèle sait déjà faire.
  • n=2 par cellule ; la connaissance des API récentes (la partie qu'un skill de type documentation est le plus susceptible d'apporter) n'est pas exercée.
  • n = 2 par groupe et par tâche : les écarts inférieurs à environ 1 point relèvent du bruit.
  • La notation basée sur des règles mesure ce que les vérifications peuvent voir ; elle ne juge ni le goût ni si le résultat est le meilleur possible.

Sécurité

Voir security.md. Scan : 9 CRITICAL / 9 HIGH / 0 MEDIUM. Verdict : exécution sûre (bac à sable hors ligne). Un scan propre ne prouve pas qu'un skill est sûr.

En résumé

Sur le travail quotidien avec Prisma Client, Codex seul est déjà correct, donc le skill ajoute un léger coût en tokens sans changement visible ici. Il peut compter pour des fonctionnalités Prisma très récentes que ce test n'a pas abordées.

Transcription

Journal d'exécution : prisma-client-api (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.)
Colonnes : tâche, groupe-exécution, score (0-5), tokens, secondes, vérifications réussies, fichiers de la skill ouverts par l'agent.

t1-queries control-1: score 5.0, tokens 84040, s 35.0, vérifications 7/7, rien ouvert
t1-queries control-2: score 5.0, tokens 83803, s 36.4, vérifications 7/7, rien ouvert
t1-queries oneliner-1: score 5.0, tokens 83731, s 38.4, vérifications 7/7, rien ouvert
t1-queries oneliner-2: score 5.0, tokens 83779, s 38.1, vérifications 7/7, rien ouvert
t1-queries treatment-1: score 5.0, tokens 110031, s 39.9, vérifications 7/7, ouvert prisma-client-api
t1-queries treatment-2: score 5.0, tokens 100691, s 36.8, vérifications 7/7, ouvert prisma-client-api
t2-n-plus-1 control-1: score 5.0, tokens 103258, s 57.7, vérifications 3/3, rien ouvert
t2-n-plus-1 control-2: score 5.0, tokens 103374, s 54.2, vérifications 3/3, rien ouvert
t2-n-plus-1 oneliner-1: score 5.0, tokens 103307, s 51.8, vérifications 3/3, rien ouvert

18 exécutions, 3 artefacts

Exemple de sortie

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" }, }); }

Voir Pro