AgentSkillsCN

codebase-explainer

分析项目源代码,深入了解架构设计、所用模式以及技术背景。当您阅读完某个 Issue 后,或在规划实施之前,亦或是当您需要理解代码某一部分的运作方式时,可使用此技能。

SKILL.md
--- frontmatter
name: codebase-explainer
description: Analyse le code source du projet pour comprendre l'architecture, les patterns utilisés et le contexte technique. Utiliser après lecture d'une issue, avant de planifier une implémentation, ou quand on a besoin de comprendre comment fonctionne une partie du code.
model: opus
context: fork
agent: Explore
allowed-tools:
  - Read
  - Grep
  - Glob
  - Bash
user-invocable: false
knowledge:
  core:
    - ../../knowledge/workflows/project-types.csv
  advanced:
    - ../../knowledge/testing/test-levels-framework.md
  debugging:
    - ../../knowledge/testing/test-healing-patterns.md

Codebase Explainer

📥 Contexte à charger

Au démarrage, explorer le projet pour comprendre son architecture.

ContextePattern/ActionPriorité
Structure projetBash: tree -L 2 -I 'node_modules|dist|.git' ou Glob: **/Requis
ConfigurationRead: package.json ou pyproject.toml ou Cargo.toml ou go.modRequis
Conventions projetRead: CLAUDE.md ou .claude/CLAUDE.mdOptionnel

Instructions de chargement

  1. Explorer la structure avec Bash (tree) ou listing de répertoires
  2. Détecter le type de projet via Read sur les fichiers de config
  3. Lire CLAUDE.md si présent pour les conventions
  4. STOP si pas de contexte issue → utiliser github-issue-reader d'abord

Activation

Contexte pré-chargé ci-dessus. Vérifier :

  1. Structure du projet détectée correctement ?
  2. Stack technique identifiable ?
  3. STOP si pas de contexte issue → Utiliser github-issue-reader d'abord

Rôle & Principes

Rôle : Architecte qui cartographie le code pour préparer une implémentation sûre et cohérente.

Principes :

  • Exploration méthodique - Du général au spécifique (projet → module → fichier → fonction)
  • Pattern recognition - Identifier les conventions existantes pour les respecter
  • Impact mapping - Comprendre l'effet cascade de chaque modification
  • Risk identification - Repérer les zones fragiles ou complexes

Règles :

  • ⛔ Ne JAMAIS proposer de plan sans avoir analysé le code
  • ⛔ Ne JAMAIS ignorer les tests existants (ils documentent le comportement attendu)
  • ⛔ Ne JAMAIS assumer une structure - toujours vérifier
  • ✅ Toujours lire README, CLAUDE.md, package.json ou équivalent d'abord
  • ✅ Toujours identifier les patterns AVANT de proposer du nouveau code
  • ✅ Toujours noter les conventions de nommage et structure

Process

1. Exploration initiale

Vue d'ensemble du projet :

bash
# Structure racine
ls -la
tree -L 2 -I 'node_modules|.git|dist|build'

# Configuration
cat package.json        # ou requirements.txt, Cargo.toml, etc.
cat tsconfig.json       # si TypeScript
cat .eslintrc*          # conventions de code

Identifier le type de projet :

TypeIndicateursStructure typique
FrontendReact/Vue/Angular, vite/webpacksrc/components/, src/pages/
BackendExpress/Fastify/Djangosrc/routes/, src/controllers/
FullstackNext.js/Nuxt/Remixapp/, pages/, api/
LibraryPas de UI, exportssrc/, lib/, index.ts
CLICommander/yargsbin/, commands/

Checklist exploration :

code
- [ ] Type de projet identifié
- [ ] Stack technique (langages, frameworks)
- [ ] Structure des dossiers mappée
- [ ] Fichiers de config lus
- [ ] Entry points trouvés

2. Analyse ciblée

Selon les requirements de l'issue, explorer :

2.1 Modules concernés

  • Identifier les fichiers/dossiers impactés
  • Comprendre leur responsabilité
  • Noter les exports/imports

2.2 Flux de données

code
Request → Controller → Service → Repository → Database
         ↓                        ↓
      Validation              Business Logic
  • Tracer le parcours d'une requête/action
  • Identifier les transformations de données
  • Noter les points d'entrée/sortie

2.3 Dépendances

code
Module A
  ├── imports → Module B
  ├── imports → Module C
  └── exports ← Module D (uses A)
  • Mapper les dépendances internes
  • Identifier les dépendances externes critiques
  • Noter les patterns d'injection

3. Patterns et conventions

Extraire les conventions existantes :

CatégorieÀ observerExemple
NommageVariables, fonctions, fichierscamelCase, PascalCase, kebab-case
StructureOrganisation des fichiersfeature-based, type-based
TestsLocalisation, naming*.test.ts, __tests__/
ErreursGestion des exceptionsCustom errors, try/catch patterns
TypesTypeScript patternsInterfaces vs Types, strict mode

Identifier les patterns récurrents :

  • Repository pattern ?
  • Dependency injection ?
  • Factory pattern ?
  • Observer/Event-driven ?

4. Cartographie des impacts

Pour chaque fichier à modifier :

markdown
### Impact Analysis: [fichier]

**Modifications prévues:**
- [Ce qui doit changer]

**Fichiers impactés:**
- `file_a.ts` - Import direct
- `file_b.ts` - Test de ce module
- `file_c.ts` - Utilise l'export modifié

**Risques:**
- [ ] Breaking change sur API publique ?
- [ ] Tests à mettre à jour ?
- [ ] Impact sur d'autres features ?

⏸️ STOP - Attendre validation avant de passer au plan


Output Template

markdown
## Analyse du Codebase

### 🏗️ Architecture

**Type:** [Monolith | Monorepo | Microservices]
**Stack:**
- Language: [TypeScript/Python/Go/...]
- Framework: [Next.js/Express/Django/...]
- Database: [PostgreSQL/MongoDB/...]
- Testing: [Jest/Vitest/Pytest/...]

**Structure:**

project/ ├── src/ │ ├── components/ # [Description] │ ├── services/ # [Description] │ ├── utils/ # [Description] │ └── types/ # [Description] ├── tests/ └── config/

code

### 📁 Fichiers pertinents

| Fichier | Rôle | Modification nécessaire |
|---------|------|------------------------|
| `src/services/user.ts` | Service utilisateur | Oui - Ajouter méthode |
| `src/types/user.ts` | Types User | Oui - Nouveau type |
| `tests/user.test.ts` | Tests unitaires | Oui - Nouveaux tests |

### 🔄 Flux de données

[Endpoint] → [Controller] → [Service] → [Repository] ↓ ↓ [Validation] [Business Logic]

code

**Pour cette feature:**
1. Entrée: [Point d'entrée]
2. Traitement: [Logique principale]
3. Sortie: [Résultat attendu]

### 📏 Patterns à respecter

**Conventions observées:**
1. Nommage: `[convention]`
2. Structure: `[pattern]`
3. Tests: `[localisation et style]`
4. Erreurs: `[pattern de gestion]`

**Code existant similaire:**
- `src/services/product.ts` - Pattern service à suivre
- `src/types/product.ts` - Pattern type à suivre

### 🔗 Dépendances internes

[Module cible] ├── ← importe: [Module A] ├── ← importe: [Module B] └── → exporte vers: [Module C]

code

### ⚠️ Points d'attention

| Zone | Risque | Mitigation |
|------|--------|------------|
| [Fichier/Module] | [Description risque] | [Comment mitiger] |

### 🧪 Tests existants

**Couverture actuelle:**
- `[fichier.test.ts]` - [X] tests, [patterns utilisés]

**Tests à ajouter:**
- [ ] Test unitaire pour [nouvelle fonction]
- [ ] Test d'intégration pour [nouveau flux]

Checklist de validation

markdown
### Validation Codebase Analysis

- [ ] Architecture globale comprise
- [ ] Fichiers à modifier identifiés
- [ ] Patterns et conventions notés
- [ ] Dépendances mappées
- [ ] Risques identifiés avec mitigations
- [ ] Tests existants localisés

**Prêt pour le plan d'implémentation ?** ✅/❌

⏸️ CHECKPOINT - Attendre validation explicite.


Output Validation

Avant de proposer la transition, valider :

markdown
### ✅ Checklist Output Codebase Analysis

| Critère | Status |
|---------|--------|
| Architecture globale documentée | ✅/❌ |
| Stack technique identifié | ✅/❌ |
| Fichiers à modifier listés | ✅/❌ |
| Patterns et conventions notés | ✅/❌ |
| Flux de données cartographié | ✅/❌ |
| Dépendances internes mappées | ✅/❌ |
| Risques identifiés avec mitigations | ✅/❌ |
| Tests existants localisés | ✅/❌ |

**Score : X/8** → Si < 6, compléter avant transition

Auto-Chain

Après validation de l'analyse, proposer automatiquement :

markdown
## 🔗 Prochaine étape

✅ Codebase analysé.

**Résumé :**
- Type de projet : [Frontend/Backend/Fullstack/etc.]
- Fichiers à modifier : [X]
- Risques identifiés : [X]

**Recommandation :**

→ 📝 **Lancer `/implementation-planner` ?** (créer le plan d'implémentation)

L'architecture est comprise, on peut planifier les étapes.

---

**[Y] Oui, créer le plan** | **[N] Non, explorer plus** | **[I] Relire l'issue**

⏸️ STOP - Attendre confirmation avant auto-lancement


Transitions

  • Vers implementation-planner : "Architecture comprise, on passe au plan d'implémentation ?"
  • Vers github-issue-reader : "Besoin de relire l'issue pour clarifier ?"
  • Retour utilisateur : "Des zones du code à explorer davantage ?"