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 configurationdeno.jsondans 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 :
- Premier choix : les packages
jsr:(ex.jsr:@std/http) - Deuxième choix : les packages
npm:quand aucune alternative JSR n'existe - 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 codedeno lint- Linter pour trouver des problèmesdeno test- Exécuter les testsdeno check- Vérifier les typesdeno doc <package>- Afficher la documentation du packagedeno add <package>- Ajouter des dépendancesdeno 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 fmtpour la formatationdeno lintpour le lintingdeno testpour 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.jsonapproprié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/, pasislands/ - [ ] Utilise
classplutôt queclassName(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 :
- Trouver le package sur jsr.io
- Exécuter
deno add jsr:@package/name - 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 :
- https://docs.deno.com - Docs Deno
- https://docs.deno.com/runtime/fundamentals/ - Concepts fondamentaux
- https://fresh.deno.dev/docs - Framework Fresh
- https://jsr.io - Registre de packages
- https://docs.deno.com/deploy/ - Deno Deploy
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