MITBenAHammond/code-auditor-mcp

Code Auditor

Code Auditor lit tout votre code et vous dit ce qui ne va pas — y compris les problèmes qui n'existent qu'entre les fichiers. Installez une compétence, et votre agent garde cet état à chaque modification.

Deux commandes pour installer partout :

npm install -g code-auditor-mcp
code-audit install --agent all

Claude Code, Cursor, Codex, Gemini CLI et tout agent SKILL.md. Hooks bloquants sur Claude Code et Codex ; rapport MCP partout ailleurs. code-audit install --list affiche la matrice.

Comment ça marche

Vous avez hérité d'une base de code ? Vous y revenez après des mois ? Vous avez construit vite et voulez maintenant savoir ce qu'elle contient ? Auditez une fois pour voir l'ensemble, puis laissez votre agent la garder propre à chaque modification. Dans tous les cas, l'analyse est déterministe.

Nettoyez votre code

code-audit audit

Lancez-le sur n'importe quel projet TypeScript, JavaScript, Go ou CSS/SCSS et obtenez un rapport structuré complet — une lecture par règle. Corrigez les vrais problèmes, établissez le reste comme référence et repartez d'une base saine.

  1. Déterministe, pas piloté par un modèle

    tree-sitter et ast-grep font l'analyse — les lectures sont identiques à chaque exécution, avec n'importe quel modèle ou sans modèle du tout.

  2. Un rapport exploitable

    HTML · JSON · CSV · SARIF 2.1.0

    Le panneau de couverture montre ce qui a été mesuré, puis le fichier, la ligne, la sévérité, l'identifiant de règle et un message pour chaque lecture. Mettez les problèmes connus en référence comme dette et seuls les nouveaux ressortent.

Gardez-le propre

code-audit changed

Une fois installé, votre agent n'audite que les fichiers qu'il vient de modifier. Les lectures de sévérité bloquante — critical et warning par défaut — sont détectées et corrigées avant d'atteindre le dépôt, sans relire tout le code, pour garder des coûts de modèle bas.

  1. Installez la compétence

    code-audit install --agent claude

    Dépose un SKILL.md et un hook PostToolUse dans votre agent — Claude Code et Codex.

  2. Il audite le diff

    code-audit changed --json

    Uniquement les fichiers modifiés, pas tout le projet. Le hook se déclenche après chaque Write et Edit.

  3. Les lectures bloquantes stoppent la modification

    hardcoded-secret · critical · src/login.ts:52

    L'agent lit l'identifiant de règle, la sévérité, le fichier, la ligne et le message — corrige — et seul le code sans lecture bloquante atteint votre dépôt. Les sévérités bloquantes se configurent via gateSeverities dans .codeauditor.json.

TypeScript, JavaScript, Go et CSS/SCSS — analysés avec les grammaires tree-sitter et ast-grep.

Ce qu'il détecte

Dix analyseurs, plus trois inter-langages, pour TypeScript, JavaScript, Go et CSS/SCSS. Chaque exemple ci-dessous est une lecture réelle d'une vraie base de code — la plupart invisibles dans un fichier isolé.

Requêtes N+1

for (const org of orgs) { await db.select().from(organizations) }

Une boucle qui émet une requête par itération, trouvée lors d'un parcours de hiérarchie dans un vrai module de requêtes. Chaque nœud est un aller-retour de plus vers la base.

Un module mort

compliance-enhanced.ts — 563 lines, 0 external importers

563 lignes, zéro importateur externe, supplanté par des voisins plus récents et toujours dans l'arbre. Rien n'y fait référence, donc personne ne le voit.

Une table supprimée, toujours interrogée

SELECT * FROM generation_queue // dropped in migration 0198

Une migration a retiré la table, mais huit sites d'appel y font encore référence. Le schéma a avancé, pas le code.

Un identifiant en clair

page.type('#password', 'vyy8AUVvish34Fq')

Un mot de passe en clair qui traîne dans un script, prêt à partir en production. Trouvé en lisant le fichier — sans exécution.

Le catalogue complet — dix analyseurs, plus trois inter-langages

Principes SOLID

Les cinq principes, appliqués mécaniquement.

DRY

Le copier-coller, détecté avant de devenir une dette.

Accès aux données et sécurité

Injections SQL, fuites entre locataires, N+1.

Qualité de la documentation

Les exports non documentés sont de futurs bugs.

Bonnes pratiques React

Les erreurs qui survivent à la revue.

Conscience du schéma

Des requêtes référençant des colonnes inexistantes.

Règles invariantes

Les règles de votre équipe, comme invariants stricts.

Définitions de schéma
inter-langages

Quand le schéma et le code divergent.

Contrat d'API
inter-langages

Endpoints, champs, auth face au contrat.

Graphe de dépendances
inter-langages

Cycles, couplage, hubs, orphelins.

Styles

Dérive des tokens, prolifération des z-index.

Conventions

Analyse les conventions de votre code, signale les écarts.

Inter-domaines

Ce qui n'est visible qu'aux frontières.

Diff-scoped, à chaque modification

Votre agent exécute code-audit changed sur les fichiers qu'il vient de modifier, pas sur tout le projet. Chaque analyseur renvoie des lectures structurées — fichier, ligne, sévérité, identifiant de règle et un message que l'agent peut lire et corriger.

JSON sortie
SARIF 2.1.0 sortie
CSV sortie
HTML sortie

Ce qu'il ne fait pas

Trois limites honnêtes, énoncées clairement.

Il n'écrit pas les corrections

Il signale. C'est un humain — ou un agent — qui modifie. Code Auditor dit ce qui ne va pas et où ; il ne corrige jamais votre code à votre place.

Ce n'est pas un remplacement de linter

Exécutez-le aux côtés d'ESLint, Prettier et consorts. Un linter lit un fichier ; Code Auditor lit toute la base. Ils répondent à des questions différentes.

Les règles de taille sont des seuils, pas des verdicts

Longueur de fonction, nombre de paramètres, taille de classe — ce sont des mesures réglables, pas des jugements. Ce sont des lectures : un ordre d'action, jamais un verdict sur votre code.