Skip to main content
Glama
Skhaaall
by Skhaaall
README.md
# CodeGuard

Serveur MCP qui analyse le code TypeScript/Prisma d'un projet, construit un graphe de dependances, et protege contre les modifications dangereuses et les regressions silencieuses.

**Ecosysteme** : TypeScript, JavaScript, Prisma

## Ce que ca fait

### Protection en temps reel (hooks automatiques)

- **Guard** — avant chaque modification : risques, historique git, fonctions modifiees recemment, couverture tests, hotspot detection
- **Check** — apres chaque modification : imports casses, signatures changees, code mort, incoherence de patterns

### Analyse du projet

- **Impact analysis** — "je modifie ce fichier, qu'est-ce qui casse ?"
- **Health** — score de sante global du projet (A-F, scoring adaptatif)
- **Schema check** — coherence Prisma ↔ DTOs backend ↔ types frontend
- **Route guard** — coherence routes frontend ↔ backend
- **Regression map** — quelles pages/routes retester apres un changement
- **Graph** — diagramme Mermaid du graphe de dependances
- **Search** — "qui utilise cette fonction/type/hook ?"

### Detection de problemes

- **Whatsnew** — resume des changements depuis le dernier reindex (debut de session)
- **Silent catch** — detection des catches silencieux (catch vides, return sans log, setState default)
- **External map** — carte des connexions externes (packages npm, variables d'env, appels API sortants)

## Prerequis

- Node.js >= 20
- Claude Code (pour les hooks MCP)

## Installation

```bash
npm install -g skhaall-codeguard
```

> Les commandes peuvent etre lancees dans un **terminal classique** ou dans **Claude Code** avec le prefixe `!` (ex: `! npm install -g skhaall-codeguard`).

Ou depuis les sources :

```bash
git clone https://github.com/Skhaaall/codeguard.git
cd codeguard && npm install && npm run build
```

## Configuration

### 1. Serveur MCP (connecte CodeGuard a Claude Code)

Ajouter dans le `.mcp.json` a la racine du projet :

```json
{
  "mcpServers": {
    "codeguard": {
      "command": "node",
      "args": ["/chemin/vers/codeguard/dist/index.js"]
    }
  }
}
```

### 2. Hooks automatiques (guard + check a chaque modification)

```bash
codeguard-setup setup
```

Ca installe deux hooks dans `~/.claude/settings.local.json` :

- **guard** — se lance automatiquement AVANT chaque Edit/Write dans Claude Code
- **check** — se lance automatiquement APRES chaque Edit/Write dans Claude Code

Pour les retirer :

```bash
codeguard-setup unsetup
```

### 3. Indexer le projet

A la racine du projet :

```bash
codeguard-cli init
```

Ca cree un dossier `.codeguard/` avec l'index du projet (ajouter `.codeguard/` au `.gitignore`).

## Utilisation

### CLI

```bash
codeguard-cli init [project-root]              # Indexer le projet
codeguard-cli status [project-root]            # Etat de l'index
codeguard-cli health [project-root]            # Score de sante (A-F)
codeguard-cli impact <fichier> [project-root]  # Analyse d'impact
codeguard-cli regression <fichier> [project-root]  # Pages a retester
codeguard-cli graph [fichier] [project-root]   # Diagramme Mermaid
codeguard-cli schema [project-root]            # Coherence Prisma ↔ TS
codeguard-cli routes [project-root]            # Coherence routes F↔B
codeguard-cli whatsnew [since]                 # Changements recents
codeguard-cli silent_catch [severity]          # Catches silencieux
codeguard-cli changelog [project-root]         # Diff depuis le snapshot
codeguard-cli external_map [project-root]      # Carte des connexions externes
```

## Outils MCP (16)

| Outil            | Description                                                  | Quand              |
| ---------------- | ------------------------------------------------------------ | ------------------ |
| `impact`         | Fichiers impactes si on modifie un fichier                   | Avant modification |
| `guard`          | Risques, historique git, hotspot, couverture tests, go/no-go | Avant modification |
| `check`          | Imports casses, signatures changees, code mort, patterns     | Apres modification |
| `health`         | Score A-F, imports casses, cycles, orphelins                 | A la demande       |
| `schema_check`   | Coherence Prisma ↔ DTOs ↔ types frontend                     | Apres modif schema |
| `route_guard`    | Coherence routes frontend ↔ backend                          | A la demande       |
| `search`         | Recherche fonctions, types, hooks, routes                    | A la demande       |
| `dependencies`   | Graphe d'un fichier (importe / importe par)                  | A la demande       |
| `reindex`        | Re-indexer le projet (complet ou incremental)                | Debut de session   |
| `status`         | Date, nombre de fichiers, fraicheur de l'index               | A la demande       |
| `regression_map` | Pages et routes a retester apres modification                | Avant deploy       |
| `graph`          | Diagramme Mermaid (complet ou focus sur un fichier)          | A la demande       |
| `whatsnew`       | Resume des changements depuis le dernier reindex             | Debut de session   |
| `silent_catch`   | Detection des catches silencieux dans le projet              | Audit / review     |
| `changelog`      | Diff lisible entre ancien et nouvel index                    | A la demande       |
| `external_map`   | Packages npm, variables d'env, appels API sortants           | A la demande       |

## Langages supportes

| Langage        | Parser        | Profondeur                                       |
| -------------- | ------------- | ------------------------------------------------ |
| TypeScript/TSX | ts-morph      | Complet (types, generics, routes Next.js/NestJS) |
| JavaScript/JSX | ts-morph      | Imports, exports, fonctions, classes             |
| Prisma         | Parser custom | Modeles, champs, relations, enums                |

Path aliases TypeScript (`@/` → `src/`) et barrel exports (`from './dir'` → `dir/index.ts`) sont geres automatiquement via la lecture du `tsconfig.json`.

## Stack

- TypeScript strict
- **ts-morph** — parsing profond TypeScript
- **@modelcontextprotocol/sdk** — protocole MCP standard (stdio)
- Index JSON cache dans `.codeguard/`
- Zero dependance lourde (pas de Docker, pas de base de donnees)

## Securite

- Path traversal bloque (les chemins doivent rester dans le projet)
- Validation des inputs MCP a runtime
- Limites DoS (stdin 1 Mo, index 50 Mo)
- Liens symboliques ignores
- CodeGuard lit le code source mais ne le modifie JAMAIS

## Licence

MIT

TDQS

A3.5/5.0

Scored across 16 tools

Disambiguation2/5

Plusieurs outils se recouvrent fortement : impact, regression_map et guard répondent tous à la question « que casse si je modifie ce fichier ? » avec des angles légèrement différents. changelog et whatsnew résument aussi tous deux les changements depuis le dernier reindex, et dependencies/graph/search se chevauchent comme outils de requête sur le graphe. Un agent peut facilement choisir le mauvais outil sans lire les descriptions en détail.

Naming Consistency4/5

Les noms sont presque tous en minuscules, soit en un mot unique soit en snake_case (schema_check, route_guard, external_map), ce qui donne un style cohérent. Il manque cependant un vrai motif verbe_nom : certains noms sont des noms (dependencies, health, graph) et d'autres des verbes (search, reindex, check), avec whatsnew qui sort de la convention underscore.

Tool Count3/5

Avec 16 outilis, le set se situe exactement dans la zone où une collection commence à sembler lourde, surtout que plusieurs outils (impact/regression_map/guard, changelog/whatsnew) pourraient être fusionnés. Ce n'est pas excessive mais le compte semble gonflé plutôt que réellement justifié par 16 responsabilités distinctes.

Completeness5/5

Le server couvre un cycle d'analyse cohérent : indexation (status/reindex), recherche et dépendances, impact et régresion, guard/check avant/après modification, santé globale, et vérifications spécialisées schéma/routes/externe. Il n'y a pas de zone morte flagrante pour un outil d'analyse et de sécurisation de code, même si certains opérations se recouvrent.

Maintenance

ActivityInactive
ResponsivenessNo issues