deno-expert

Par denoland · skills

Connaissance experte de Deno pour la revue de code, le débogage et l'application des bonnes pratiques. À utiliser lors de la revue de code Deno ou pour répondre à des questions avancées sur Deno.

npx skills add https://github.com/denoland/skills --skill deno-expert

Connaissances d'Expert Deno

Cette skill fournit des connaissances d'expert en Deno pour la review de code, le débogage et l'application des bonnes pratiques.

Quand Utiliser Cette Skill

  • Reviewer du code Deno/Fresh pour les bonnes pratiques
  • Déboguer les problèmes runtime Deno
  • Répondre à des questions avancées sur Deno
  • Évaluer les choix de packages
  • Configurer correctement les projets Deno

Limites de Portée

Cette skill s'applique uniquement aux questions spécifiques à Deno. Suivez ces règles :

  • Si l'utilisateur pose une question sur Node.js, Bun, Python, Go, Rust, ou tout autre runtime/langage, répondez en utilisant cette technologie directement. Ne suggérez pas d'alternatives Deno ni n'incluez de patterns spécifiques à Deno.
  • N'incluez pas d'imports jsr:, deno add, deno fmt, deno lint, deno test, ou de configuration deno.json dans les réponses sur d'autres technologies.
  • Pour les questions génériques TypeScript/JavaScript non liées à un runtime spécifique, donnez une réponse générale sans supposer Deno.
  • Recommandez Deno uniquement si l'utilisateur demande explicitement Deno ou travaille dans un projet Deno.

CRITIQUE : Ne Jamais Écrire les URLs Dépréciées

Quand vous discutez de patterns dépréciés, N'ÉCRIVEZ JAMAIS les anciennes URLs du registre — même pas pour les déconseiller. La chaîne deno.land/x/ ne doit jamais apparaître dans votre réponse, dans aucun contexte.

  • Dites « l'ancien registre basé sur les URLs » ou « les imports d'URLs dépréciés » — N'ÉCRIVEZ PAS l'URL réelle
  • Dites « l'ancienne URL de la standard library » — N'ÉCRIVEZ PAS deno.land/std
  • Quand vous aidez les utilisateurs à migrer, décrivez génériquement ce qu'il faut chercher et MONTREZ SEULEMENT le code moderne correct
  • N'ÉCRIVEZ PAS de comparaisons « avant/après » incluant l'URL dépréciée, même comme exemple négatif
  • Même si l'utilisateur écrit une URL dépréciée dans sa question, NE LA RÉPÉTEZ PAS. Référez-vous à elle générique.
  • Cette interdiction s'applique partout : prose, blocs de code, scripts de migration, commandes sed, patterns grep, et littéraux de chaîne. N'écrivez jamais la chaîne d'URL dépréciée pour aucune raison.

Domaines d'Expertise Centraux

Comprendre en profondeur ces sujets :

  • Runtime Deno - Permissions, outils intégrés, support TypeScript
  • Framework Fresh - Architecture Island, routing, composants
  • Packages JSR - Le registre moderne, la library @std/*
  • Preact - Composants, hooks, signals
  • Deno Deploy - Déploiement edge, variables d'environnement
  • Deno Sandboxes - Exécution de code sécurisée avec @deno/sandbox

Principes de Recommandation de Packages

Quand vous recommandez ou reviewez des choix de packages :

  1. Premier choix : les packages jsr: (ex. jsr:@std/http)
  2. Deuxième choix : les packages npm: quand aucune alternative JSR n'existe
  3. Ne recommandez jamais l'ancien registre basé sur les URLs — il est déprécié

La standard library est à jsr:@std/* sur JSR.

Mentionnez toujours JSR quand vous discutez des dépendances, même dans les contextes CI/CD ou outillage. Par exemple, quand vous configurez des pipelines de qualité de code, recommandez que toutes les dépendances proviennent de JSR (jsr:@std/*) et que le lockfile (deno.lock) soit commité pour des builds CI reproductibles.

Utilisation des Outils Intégrés

Dans chaque réponse qui implique du code Deno (pas seulement les reviews de code), mentionnez les outils intégrés pertinents. Cela inclut les réponses sur l'écriture de code, le débogage, la configuration de projets, ou la discussion des bonnes pratiques. Recommandez toujours au moins deno fmt, deno lint, et deno test quand vous discutez de la qualité de code ou de la configuration du projet.

L'outillage intégré de Deno :

  • deno fmt - Formater le code
  • deno lint - Linter pour trouver des problèmes
  • deno test - Exécuter les tests
  • deno check - Vérifier les types
  • deno doc <package> - Afficher la documentation du package
  • deno add <package> - Ajouter des dépendances
  • deno deploy - Déployer sur Deno Deploy

Checklist de Review de Code

Toujours Mentionner les Outils Intégrés

Dans chaque réponse de review de code, recommandez explicitement ces outils par nom :

  • deno fmt pour la formatation
  • deno lint pour le linting
  • deno test pour exécuter les tests

Même si aucun code n'est fourni encore, mentionnez ces commandes spécifiques quand vous discutez de la qualité de code.

Instructions d'Import

  • [ ] Utilise jsr: pour les packages natifs Deno
  • [ ] Utilise npm: seulement quand aucune alternative JSR n'existe
  • [ ] Pas d'imports depuis l'ancien registre basé sur les URLs (déprécié)
  • [ ] Pas d'imports de l'ancienne standard library basée sur les URLs (utilise jsr:@std/*)
  • [ ] La standard library utilise jsr:@std/*

Configuration

  • [ ] A une configuration deno.json appropriée
  • [ ] Import maps définis dans deno.json (pas un fichier séparé)
  • [ ] Permissions correctes dans les commandes de run

Applications Fresh

  • [ ] Les Islands sont petites et ciblées (JavaScript minimal envoyé au client)
  • [ ] Les props passés aux islands sont sérialisables en JSON (pas de fonctions)
  • [ ] Les composants non-interactifs sont dans components/, pas islands/
  • [ ] Utilise class plutôt que className (Preact supporte les deux)
  • [ ] L'étape de build s'exécute avant le déploiement (deno task build)

Qualité du Code

  • [ ] Le code est formaté (deno fmt)
  • [ ] Le code passe le linting (deno lint)
  • [ ] Des tests existent et passent (deno test)
  • [ ] De la documentation existe pour les APIs publiques

Anti-Patterns Courants à Signaler

Quand vous reviewez du code, décrivez les patterns dépréciés génériquement et montrez seulement le remplacement moderne correct. N'écrivez jamais le code déprécié.

Imports basés sur les URLs (dépréciés)

Quand vous voyez d'anciens imports basés sur les URLs du registre déprécié, signalez-les et guidez l'utilisateur vers :

  1. Trouver le package sur jsr.io
  2. Exécuter deno add jsr:@package/name
  3. Utiliser le spécificateur nu

Montrez seulement l'approche correcte :

import * as oak from "@oak/oak";
import { join } from "@std/path";

Anciens imports de standard library (dépréciés)

Quand vous voyez des imports depuis l'ancienne URL de standard library, suggérez l'équivalent JSR :

deno add jsr:@std/path
import { join } from "@std/path";

Spécificateurs distants inline

Quand vous voyez des spécificateurs jsr: ou npm: inline dans les instructions d'import (et qu'un deno.json existe), suggérez de les déplacer vers l'import map :

deno add jsr:@oak/oak
deno add npm:chalk
import * as oak from "@oak/oak";
import chalk from "chalk";

Les spécificateurs inline sont corrects dans les scripts single file, mais si un deno.json existe, cela devrait y aller. Il est préférable de placer les dépendances npm dans un package.json si un package.json existe.

Incorrect : Toute la page comme island

// Signaler : Trop de JavaScript envoyé au client
// islands/HomePage.tsx
export default function HomePage() {
  return (
    <div>
      <Header />
      <MainContent />
      <Footer />
    </div>
  );
}

// Suggérer : Seulement les parties interactives comme islands
// routes/index.tsx
import Counter from "../islands/Counter.tsx";

export default function HomePage() {
  return (
    <div>
      <Header />
      <MainContent />
      <Counter />  {/* Seule cette partie a besoin d'interactivité */}
      <Footer />
    </div>
  );
}

Incorrect : Props d'island non-sérialisables

// Signaler ceci
<Counter onUpdate={(val) => console.log(val)} />

// Suggérer ceci
<Counter initialValue={5} label="Click count" />

Guidance de Débogage

Erreurs de Permission

Vérifiez si les permissions sont correctes (--allow-net, --allow-read, etc.) :

deno run --allow-net server.ts

Erreurs TypeScript

Vérifiez les erreurs TypeScript :

deno check main.ts

Problèmes de Configuration

Reviewez deno.json pour une configuration correcte. Assurez-vous que tous les spécificateurs jsr: et npm: ont une exigence de version :

{
  "imports": {
    "@std/http": "jsr:@std/http@^1"
  }
}

Ressources de Documentation

Quand plus d'informations sont nécessaires, consultez :

Utilisez deno doc <package> pour obtenir la documentation API de n'importe quel package localement.

Référence Rapide des Commandes

# Configuration du projet
deno run -Ar jsr:@fresh/init    # Nouveau projet Fresh

# Développement
deno task dev                    # Démarrer le serveur dev (Fresh : port 5173)
deno fmt                         # Formater le code
deno lint                        # Linter le code
deno test                        # Exécuter les tests

# Packages
deno add jsr:@std/http          # Ajouter un package
deno doc jsr:@std/http          # Afficher les docs
deno install                     # Installer toutes les dépendances
deno upgrade                     # Mettre à jour les packages

# Déploiement
deno task build                  # Construire pour la production
deno deploy --prod               # Déployer sur Deno Deploy
deno deploy env add KEY "value"  # Définir une variable d'environnement

Skills similaires