Back to catalog

checking-code-quality

Executes code quality checks (format:check, ESLint, Jest) before each commit according to leapmultix project standards

  • Category: discovered
  • Tags: github, community
  • Version: 1.0.0
  • Author: walid
  • Downloads: 0
  • GitHub stars: 1
  • Updated: 2025-11-21

Download the latest version (v1.0.0) from this page.

SKILL.md

---
name: checking-code-quality
description: Executes code quality checks (format:check, ESLint, Jest) before each commit according to leapmultix project standards
allowed-tools: Read, Grep, Glob, Bash
---

# Code Quality Gate

Garantit code respecte standards avant commit (format, lint, tests).

## Table des matières

- [Quand utiliser](#quand-utiliser)
- [Workflow OBLIGATOIRE (séquence)](#workflow-obligatoire-séquence)
- [Standards essentiels](#standards-essentiels)
- [ESLint suppressions](#eslint-suppressions)
- [Scripts disponibles](#scripts-disponibles)
- [Configuration](#configuration)
- [Conventions commit](#conventions-commit)
- [Checklist](#checklist)
- [En cas de doute](#en-cas-de-doute)

## Quand utiliser

- **TOUJOURS** avant chaque commit
- Avant créer PR
- Après modification JavaScript/CSS
- À la demande

## Workflow OBLIGATOIRE (séquence)

1. **Formatage (CRITIQUE) :**

   ```bash
   npm run format:check
   # Si ✗ → npm run format
   ```

2. **Linting :**

   ```bash
   npm run lint
   # Si ✗ → npm run lint:fix
   ```

3. **Tests :**

   ```bash
   npm test
   ```

4. **Couverture (recommandé) :**
   ```bash
   npm run test:coverage
   ```

**Ou tout-en-un :** `npm run verify` (lint + test + coverage)

## Standards essentiels

**JavaScript :**

- Pas variables inutilisées (supprime ou eslint-disable avec justification)
- Pas catch blocks vides (logger erreur)
- Utiliser security-utils pour DOM (`appendSanitizedHTML()`, `setSafeMessage()`)
- Complexité cognitive < 15 (découpe fonctions complexes)

**CSS :**

- Notation couleur moderne : `rgb(255 255 255 / 0.9)` pas `rgba(...)`

**Sécurité :**

- Jamais `innerHTML` données externes (utiliser security-utils)
- Scripts externes: `crossorigin="anonymous"`
- Integrity hashes bibliothèques (pas analytics, auto-update)
- Valider entrées externes

## ESLint suppressions

**Ligne :** `// eslint-disable-next-line rule -- Justification`

**Bloc :** `/* eslint-disable rule */ ... /* eslint-enable rule */`

**Règle :** Toujours justifier avec `--` pourquoi sécurisé/intentionnel.

## Scripts disponibles

- `npm test` - Tests
- `npm run test:watch` - Mode watch
- `npm run test:coverage` - Couverture
- `npm run verify:dead-code` - Code mort
- `npm run analyze:*` - Globals, jsdoc, dependencies

## Configuration

- `eslint.config.js` - Règles ESLint
- `.prettierrc` - Formatage
- `.stylelintrc.json` - CSS
- `jest.config.cjs` - Tests

## Conventions commit

- Impératif : "Fix", "Add", "Refactor"
- Concis, descriptif
- Jamais mentionner AI/assistants

## Checklist

- [ ] format:check passe
- [ ] lint passe
- [ ] tests passent
- [ ] coverage acceptable
- [ ] Pas console.log oubliés
- [ ] Pas variables inutilisées
- [ ] security-utils pour DOM
- [ ] Message descriptif
- [ ] Pas secrets/API keys

## En cas de doute

**Règles absolues :**

1. `npm run format:check` TOUJOURS d'abord
2. Ne JAMAIS committer si échec
3. Ne JAMAIS désactiver sans justification
4. Exécuter localement AVANT pusher

**Workflow minimal :**

```bash
npm run format:check && npm run lint && npm test
```

**Workflow complet :**

```bash
npm run verify
```

**Fichiers clés :**

- CLAUDE.md - Conventions
- eslint.config.js - Règles
- security-utils.js - DOM sécurisé