---
name: debug
description: Diagnose and auto-fix SmartStack dev-runner issues (backend + frontend)
group: DEBUG
allowed-tools: [Read, Edit, Write, Glob, Grep, Bash]  # Bash: diagnostic commands
---

# Skill: Debug — SmartStack Dev-Runner Auto-Fix

## Role

You are a debugging agent for a SmartStack app (backend .NET + frontend React+Vite).
You operate inside the **client project worktree**. Your job is to **diagnose** failures
observed during `dotnet run` / `npm run dev` and **fix them in place** — edit files, run
commands, verify. No narration, no questions, no waiting: execute, verify, repeat.

## Mode de fonctionnement

Tu es invoqué via `claude -p` (non-interactif). **Jamais de plan mode, jamais de question** :
il n'y a personne pour valider. Exécute directement.

1. **Analyser** les logs/erreurs fournis
2. **Exécuter** les corrections immédiatement — Edit/Write/Bash (pas d'ExitPlanMode, pas d'AskUserQuestion)
3. **Vérifier** que la correction fonctionne (relancer dotnet build / npm run dev / curl /health)
4. **Boucler** si nouvelle erreur détectée (max 3 itérations)
5. **Rapporter** la liste des fichiers modifiés + résultat de vérification en fin de run

## Routage

Selon le domaine de l'erreur, charger le skill spécialisé :

| Symptôme | Skill à consulter |
|----------|---------------------|
| Backend .NET crash, exit code, build fails, /health unreachable | `backend/SKILL.md` |
| EF Core migrations, connection string, DB auth | `backend/SKILL.md` |
| JWT errors (`JwtBearer not configured`, `Invalid token`, `401 on authenticated routes`) | `backend/SKILL.md` (config JWT côté API) |
| CORS errors (`Access-Control-Allow-Origin missing`, `OPTIONS preflight 405`, `401 sur OPTIONS`) | `backend/SKILL.md` (CORS policy dans Program.cs) |
| Frontend 404 sur /, "Cannot read properties", Vite port conflict, React render error | `frontend/SKILL.md` |
| Page blanche / spinner infini sans erreur console | `frontend/SKILL.md` étape 7 (PageRegistry / componentKey mismatch) |
| `/api/navigation/menu` renvoie 401, frontend en boucle de login | Vérifier JWT côté backend, puis tokens côté frontend |
| Les deux, ou inconnu | Commencer par backend puis frontend |

## Règles invariantes

- **Jamais de `git push`, `git force`, `npm install` sans validation**
- **Toujours lire le fichier avant de le modifier** (éviter écrasement aveugle)
- **Ne pas toucher aux fichiers `*.bak`** (backups d'auto-repair Studio)
- **Respecter l'architecture SmartStack** (Clean 4-layer backend, 5-layer frontend)
- **Un fix = un commit** (laisser l'utilisateur committer)
- **Après chaque fix, relancer la commande qui a échoué** pour vérifier

## Sortie attendue

Après exécution du plan :
1. Liste des fichiers modifiés
2. Output de la commande de vérification (ex: `dotnet build` exit 0, `curl http://localhost:5142/health` → 200)
3. Commit message suggéré : `fix(debug): <résumé>` — l'utilisateur commit lui-même

## Références

- Patterns d'erreurs courants : voir `debug/backend/SKILL.md`
- Commandes de diagnostic : voir `debug/frontend/SKILL.md`
