AgentSkillsCN

code-quality

当 Claude 编写或修改代码时,若未明确执行相关命令,自动启动质量防护机制。提醒开发者遵循 Karpathy 原则,检查代码规模,同时参考项目规范(CLAUDE.md、DESIGN_SYSTEM.md)。

SKILL.md
--- frontmatter
name: code-quality
description: "Garde-fou qualité activé quand Claude écrit ou modifie du code en dehors d'une commande explicite. Rappelle les principes Karpathy, vérifie le footprint, et référence les conventions du projet (CLAUDE.md, DESIGN_SYSTEM.md)."

Code Quality — Garde-fou permanent

Ce skill s'active automatiquement quand du code est écrit ou modifié, pour maintenir la qualité même sans commande explicite.

Avant d'écrire du code

Checklist mentale

  1. Code réutilisable existant ? — Cherche dans le projet avant de créer
  2. Minimum de fichiers touchés ? — Ne modifie que ce qui est nécessaire
  3. CLAUDE.md lu ? — Conventions, patterns, architecture du projet
  4. DESIGN_SYSTEM.md lu ? — Si le changement touche à l'UI

Principes Karpathy (toujours actifs)

PrincipeEn pratique
Ne pas devinerAmbigu → demande. Deux approches possibles → montre les tradeoffs
Code minimalMinimum viable. Pas d'abstractions prématurées. 10 lignes > 100 lignes si même résultat
ChirurgicalNe touche que les fichiers concernés. Pas de refactoring opportuniste
VérifierBuild/test après chaque changement significatif

Pendant l'écriture

Ce qu'il faut faire

  • Respecter les conventions de nommage du projet
  • Suivre les patterns existants (imports, exports, structure)
  • Garder la langue des commentaires cohérente avec le projet
  • Écrire du code lisible — noms explicites, fonctions courtes

Ce qu'il faut éviter

  • Ajouter du code "au cas où" ou "pour plus tard"
  • Créer des abstractions pour un seul usage
  • Ajouter des dépendances sans évaluation
  • Laisser des console.log, TODO ou code commenté
  • Modifier du code hors du périmètre demandé
  • Ajouter des types, docstrings ou commentaires au code non modifié

Après l'écriture

  • Le code compile/build sans erreur ?
  • Les tests existants passent toujours ?
  • Le comportement est conforme à ce qui a été demandé ?
  • Aucun fichier touché en dehors du périmètre ?

Anti-patterns courants par langage

JavaScript / TypeScript

Anti-patternMieux
any partoutTypes explicites ou unknown + narrowing
== null vs === nullToujours === (sauf check null/undefined intentionnel)
Callback hellasync/await
varconst par défaut, let si réassignation
for (let i = 0; ...) sur un array.map(), .filter(), .reduce()
Import de la lib entièreImport destructuré (import { get } from 'lodash')
console.log pour debugSupprimer avant commit

Python

Anti-patternMieux
except: (bare except)except SpecificError:
Mutable default args (def f(x=[]))def f(x=None): x = x or []
import *Imports explicites
String concatenation en bouclef-strings ou join()
Pas de type hintsType hints sur les signatures publiques

PHP

Anti-patternMieux
@ (error suppression)Gestion explicite
extract()Accès explicite aux clés
$$var (variables dynamiques)Array associatif
echo dans les classesReturn + template
Pas de strict typesdeclare(strict_types=1)

Règle d'or

Trois lignes similaires valent mieux qu'une abstraction prématurée. Le bon niveau de complexité, c'est le minimum nécessaire pour la tâche en cours.