Synthèse automatique
Fournit une checklist stricte et des recommandations de réécriture pour le code Django et DRF, couvrant les requêtes ORM, l'architecture, les API, l'asynchrone, la sécurité, le cache, les migrations et les tests.
Points forts
- Couvre 15 domaines de règles avec des identifiants précis citables lors d'une revue
- Détecte les anti-patterns courants comme les boucles N+1, les vues trop chargées et les appels ORM synchrones dans l'asynchrone
- Produit des correctifs prêts pour la production avec commentaires explicatifs
- Organise les revues par gravité (CRITICAL, HIGH, MEDIUM) avec la règle violée
Limites
- Suppose que les fichiers AGENTS.md ou rules/ soient disponibles dans le projet pour appliquer les règles détaillées
- Applique des conventions volontairement strictes qui peuvent entrer en conflit avec un style d'équipe existant
- Se concentre sur Django/DRF et ne couvre pas les bonnes pratiques Python générales hors de ce cadre
À utiliser pour revoir, refactoriser ou générer du code Django/DRF avec des contraintes de performance, de concurrence et d'architecture.
À éviter sur un projet Django qui suit des conventions très différentes ou pour des questions générales sur Python sans lien avec Django.
Analyse de sécurité
SûrContains only Django/DRF best-practice guidance and code review instructions; no commands, network calls, secret handling, or destructive actions.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
Review this Django view and serializer for N+1 queries and missing select_related/prefetch_related. Group findings by severity and cite the rule IDs.Refactor this DRF viewset and serializer to follow Django best practices, including pagination, query optimization, and service-layer separation.Write an idempotent Celery task for marking an order as paid, with select_for_update and safe retry behavior explained in comments.name: django-best-practices description: > Django and Django REST Framework best practices guide. Use this skill to review, optimize, architect, and write performant Django applications. Triggers when the user asks to implement or review Django models, ORM queries, DRF APIs, Celery tasks, background workers, WebSockets (Channels), caching logic, or tests. globs:
- "**/*.py"
- "**/models.py"
- "**/views.py"
- "**/serializers.py"
- "**/tasks.py"
- "**/consumers.py"
- "**/tests/*.py"
Django Best Practices Tool Wrapper & Reviewer
A strict guide to writing correct and performant Django and DRF code. Based on real-world patterns, the HackSoftware Styleguide, and common architectural pitfalls.
Context
This skill is the final word on Django design constraints. It covers 15 core categories of real-world expertise (like zero-downtime migrations, avoiding ORM locks, and decoupling business logic). Treat these patterns as strict rules rather than suggestions.
Instructions
Whenever you write new Django code, modify existing architecture, or refactor for performance:
- Identify the Domain: Determine which components you are touching (e.g., DB schema, REST API, Celery, Channels, caching, security).
- Source the Expertise:
- Read
AGENTS.md(the compiled reference containing all 15 rule domains). - Or read the specific markdown rules in the
rules/directory (e.g.,rules/orm-queries.md,rules/architecture.md).
- Read
- Audit against Anti-Patterns: Check the codebase against the
❌ Wrongblocks documented in the guidelines. Look out for:- Implicit N+1 loops (missing
select_related/prefetch_related). - Fat views instead of fat models or services.
- Synchronous ORM calls inside
async defviews or Channels withoutsync_to_async. - Business logic hidden inside
post_savesignals.
- Implicit N+1 loops (missing
- Implement the Correct Pattern: Rewrite or generate code that follows the
✅ Rightpatterns. Follow all architectural notes and constraints. - Handle Edge Cases & Failure Modes:
- When writing queue workers, use
select_for_update(skip_locked=True)to prevent deadlocks. - When writing Celery tasks, enforce explicit idempotency (
order.paid = True). - When creating migrations for large tables, separate schema additions from data backfills to handle downtime risks.
- When writing queue workers, use
- Format Your Output:
- For Code Generation: Write explicit, production-ready code with short inline comments explaining your reasoning (e.g., "# Atomically lock the row to avoid lost update race conditions").
- For Code Review: Output your findings as a checklist grouped by severity (e.g., CRITICAL, HIGH, MEDIUM). For every violation, cite the exact rule prefix (e.g.,
orm-nplusone) and print the recommended fix.
Quick Reference / Known Rules
- Category 1 (Database & Queries):
orm-nplusone,orm-only-defer,orm-laziness,orm-explain - Category 2 (Database Locks):
orm-select-for-update,orm-select-for-update-nowait,orm-f-expressions,orm-bulk-inserts - Category 3 (Architecture):
arch-services-layer,model-fat-models,arch-selectors - Category 4 (APIs):
views-fbv-vs-cbv,api-drf-serializers,api-viewset-optimization,api-pagination - Category 5 (Async & Channels):
async-celery-idempotency,async-django-views,channels-sync-to-async,channels-security-auth - Category 6 (Security & Caching):
security-uuids-in-urls,security-env-secrets,security-csrf,caching-layer - Category 7 (Migrations & Test):
migrations-runpython,test-pytest-fixtures,test-query-counts
Examples
Example Review Output:
### ❌ CRITICAL: N+1 Query Detected (`orm-nplusone`)
The current mapping loops over `Author.objects.all()` and accesses `author.books.count()`. This triggers 101 queries for 100 authors.
**Recommendation:** Use the database to aggregate this mathematically:
`Author.objects.annotate(book_count=Count('books'))`
Example Code Generation (Celery Idempotency):
@shared_task
def process_payment(order_id, amount):
# Rule applied: async-celery-idempotency - Protect against multiple concurrent executions
order = Order.objects.get(id=order_id)
if order.paid:
return
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/django-best-practices-guide-mrwakbvk/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/django-best-practices-guide-mrwakbvk' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/django-best-practices-guide-mrwakbvk/download' --output '.skill-downloads/django-best-practices-guide-mrwakbvk/SKILL.md.part' && mv '.skill-downloads/django-best-practices-guide-mrwakbvk/SKILL.md.part' '.skill-downloads/django-best-practices-guide-mrwakbvk/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/django-best-practices-guide-mrwakbvk/SKILL.md' && test -s '.skill-downloads/django-best-practices-guide-mrwakbvk/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/django-best-practices' && cp -R '.skill-downloads/django-best-practices-guide-mrwakbvk' '.claude/skills/django-best-practices'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/django-best-practices-guide-mrwakbvk'openskills read 'django-best-practices-guide-mrwakbvk'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/django-best-practices-guide-mrwakbvk/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.