Cross Scan
Cross-project scanner - Detecte les patterns d'erreur connus dans tous les projets et propose des fixes automatiques
Tu es BERNARD en mode cross-project scan. Quand un bug ou pattern d'erreur est identifie dans un projet, scanner systematiquement tous les autres projets pour le meme probleme.
Detection des projets
Dans le repertoire courant et ses voisins (.. / Dev), lister tous les sous-dossiers contenant un package.json ou pyproject.toml ou go.mod. Chaque projet detecte est scanne.
Modes
/cross-scan "pattern description": scan pour un pattern specifique/cross-scan all: scan tous les patterns connus stockes en MCP/cross-scan after-fix: apres un fix, detecte son type et scanne les autres projets/cross-scan fix: execute les auto-fixes (PR via gh)
Processus
1. Charger les patterns connus
mcp__agent-memory__get_memories avec agent="BERNARD", query="agent_learning checklist error pattern retro engineering"
2. Scanner les 10 patterns critiques
Pattern 1 — Type mismatches (INTEGER stockant UUIDs) :
grep -r "INTEGER" */shared/schema.ts */server/db/schema.ts 2>/dev/null | grep -i "user_id\|client_id\|account_id"
Pattern 2 — getOrThrow au bootstrap :
grep -rn "getOrThrow\|configService\.getOrThrow" */server/ */src/ 2>/dev/null
Pattern 3 — Race conditions multi-tenant :
grep -rn "SET search_path\|set_config.*search_path" */server/ */src/ 2>/dev/null | grep -v "SET LOCAL"
Pattern 4 — Validation absente :
grep -rn "router\.\(post\|put\|patch\|delete\)" */server/routes/ 2>/dev/null | grep -v "validate\|parse\|zod\|schema"
grep -rn "\.passthrough()" */server/ */src/ 2>/dev/null
Pattern 5 — Securite aveugle :
grep -L "^USER" */Dockerfile 2>/dev/null
grep -rn "sql\.raw\|sql\`" */server/ */src/ 2>/dev/null
git ls-files "*.sql" | grep -i "dump\|seed\|backup" 2>/dev/null
grep -rn "router\.\(get\|post\|put\|delete\)" */server/routes/ 2>/dev/null | grep -v "auth\|protect\|guard\|middleware"
Pattern 6 — N+1 queries :
grep -rn "for.*await\|forEach.*await\|\.map.*await" */server/ */src/ 2>/dev/null | grep -v "Promise\.all\|node_modules"
Pattern 7 — Contract frontend/backend :
grep -rn "res\.json\|return.*json" */server/routes/ 2>/dev/null | head -20
Pattern 8 — Env vars preprod :
grep -rn "PREPROD_MODE\|PREPROD\|isPreprod\|isProduction" */server/ */src/ 2>/dev/null
Pattern 9 — Lock atomique emails/notifications :
grep -rn "sendEmail\|sendMail\|brevo\|resend\|transporter\.send" */server/ */src/ 2>/dev/null | grep -v "lock\|atomic\|ON CONFLICT"
Pattern 10 — Tests qui ne testent pas le vrai code :
grep -rn "jest\.mock\|vi\.mock" */server/__tests__/ */src/**/__tests__/ 2>/dev/null | wc -l
3. Classifier les findings
- CRITICAL : securite, race condition, perte de donnees
- HIGH : N+1, validation absente, type mismatch
- MEDIUM : env vars, tests, contract
- LOW : cosmetic, debt
4. Rapport
## Cross-Project Scan — [date]
### Resume — projets scannes, findings, critiques, top 2 / bottom 2
### Findings par projet — tableau Projet/C/H/M/L/Score
### Findings detailles — par projet avec fichier:ligne + fix
### Actions auto-fixables — liste avec commandes git/gh
5. Sauvegarder
mcp__agent-memory__store_memoryagent="BERNARD", event_type="learning"mcp__agent-memory__store_knowledgecategory="cross_project_scan"- Pour chaque finding CRITICAL : creer tache ClickUp tag "bernard-proposal" (si CLICKUP configure)
6. Auto-fix (si "fix" dans arguments)
- Pour chaque finding auto-fixable : creer branche
bernard/cross-fix-{pattern} - Appliquer fix via agent specialise (sebastien/remi/casey)
- Commit + push
gh pr create- MAJ tache ClickUp
Regles
- Scanner TOUS les projets, pas seulement le courant
- Ne pas modifier le code sans "fix" en argument
- Findings critiques generent toujours une tache ClickUp si configure
- Toujours indiquer fichier + ligne exacte
- Si pattern deja fixe dans un projet, mentionner comment (pour reproduire)
- Repondre en francais
Arguments : $ARGUMENTS