Que fait project-registry ?
FR — Un skill Claude Code qui gère un registre personnel de projets (
~/projects/PROJECTS.json) avec des journaux de développement lisibles par IA (CLAUDE.md) par projet : lister, créer, supprimer, sauvegarder, reprendre une session, attribuer les décisions, vérifier l'état et restaurer une version à partir d'un menu unique. Le texte de l'interface est en chinois en priorité, mais les commandes fonctionnent en chinois et en anglais et chaque fonctionnalité est pleinement opérationnelle quelle que soit la langue (l'IA comprend les deux). Installation :npx skills add SUNQSHENG/project-registryou/plugin marketplace add SUNQSHENG/project-registry.
Aperçu
Gère la liste des projets enregistrés dans ~/projects/PROJECTS.json, offrant des fonctionnalités d'ajout, de suppression, de modification et de consultation avec des statistiques. Les projets sont stockés sous forme de sous-répertoires <key>/ dans ~/projects/, chaque projet contenant un fichier README.md qui décrit le contexte et le périmètre.
Lors de l'opération sur un projet, un cd automatique est effectué vers le répertoire du projet concerné.
Source de données
~/projects/
PROJECTS.json # Registre des projets (source unique et faisant autorité)
<key>/ # Répertoire du projet
README.md # Description du contexte et du périmètre du projet (pour les humains)
CLAUDE.md # Journal de développement du projet (pour l'IA, chargé automatiquement à chaque session)
Tous les projets doivent être stockés dans le répertoire ~/projects/.
Différence : README.md donne un aperçu du projet aux développeurs/collaborateurs ; CLAUDE.md est destiné à l'IA, il enregistre les décisions, l'état et le contexte pendant le développement, garantissant qu'aucune information n'est perdue dans les longs projets.
Structure de PROJECTS.json
{
"description": "Liste des projets — tous les projets sont enregistrés ici",
"updated": "2026-03-01",
"nextSeq": 3,
"projects": [
{
"seq": 1,
"key": "pet_hospital_crm_20260301",
"name": "CRM Clinique Vétérinaire",
"status": "Terminé",
"created": "2026-03-01"
}
]
}
Point d'entrée
Chaque fois que le skill est activé, on se place d'abord dans cd ~ pour revenir au répertoire racine de l'utilisateur, puis on lit PROJECTS.json pour afficher la liste et un menu simplifié (sans vérification au niveau des répertoires) :
📋 Liste des projets (N total)
┌─────┬────────────────────────────────┬──────────────────┬──────────────────────────┬──────────────┬────────────────┐
│ N° │ key │ Nom │ Statut │ Date de création │
├─────┼────────────────────────────────┼──────────────────┼──────────────────────────┼──────────────┼────────────────┤
│ 1 │ pet_hospital_crm_20260301 │ CRM Clinique Vét.│ ✅ Terminé │ 2026-03-01 │
│ 2 │ gym_members_app_20260315 │ App Membres Salle│ 🔄 En cours │ 2026-03-15 │
└─────┴────────────────────────────────┴──────────────────┴──────────────────────────┴──────────────┴────────────────┘
> L'affichage initial ne fait pas de vérification des répertoires, uniquement la lecture du JSON. L'état des répertoires est vérifié en masse lors de la commande Vérification MD.
Veuillez choisir une opération (ou exprimer directement votre besoin) :
- Entrez le **numéro** du projet (1-99) → Ouvrir le projet correspondant (ex : 12)
- 🆕 N. Créer un projet
- 🗑️ D. Supprimer un projet
- 🔍 C. Vérification MD (vérification en masse de tous les projets)
> Les autres besoins (modification/recherche/statistiques/mise à jour du journal/sauvegarde/fermeture/**vérification projet**/**pourquoi X**) se disent directement dans la conversation
> ⚠️ **La sauvegarde/fermeture mettra automatiquement à jour CLAUDE.md** (règle obligatoire)
⚙️ Guide de configuration initiale (API Key optionnel)
Lors de la première entrée dans le skill :
- Vérifier si les variables d'environnement
PR_API_BASE_URL/PR_API_KEY/PR_API_MODELsont configurées (printenv) - Non configurées → Carte AskUserQuestion demandant : « Voulez-vous configurer une clé API pour activer le résumé automatique ? »
- Configurer (recommandé) → Guider la configuration des trois variables d'environnement (le README contient des exemples pour différents fournisseurs : DeepSeek / OpenAI / Tongyi / Ollama local)
- Ignorer → Écrire dans
<répertoire du skill>/config.json(marquer « déjà ignoré », ne plus demander par la suite) - En savoir plus → Afficher un tableau comparatif des fonctionnalités
- La configuration prend effet immédiatement (sans redémarrage de session)
Comparaison des fonctionnalités :
| Capacité | Sans clé | Avec clé |
|---|---|---|
| Sécurité des données (sauvegarde instantanée + validation automatique en fin de session) | ✅ | ✅ |
| Toutes les fonctionnalités de base (registre/reprise de session/attribution/restauration/vérification) | ✅ | ✅ |
| Résumé automatique (synthèse automatique de la conversation → mise à jour en temps réel de CLAUDE.md) | ❌ | ✅ |
Dites à tout moment « configurer API » pour relancer le guide.
🔍 Identification automatique du projet actuel
Chaque fois que le skill est activé, le
cd ~a déjà été effectué automatiquement. Les opérations nécessitant de localiser un projet (vérification/modification/sauvegarde/mise à jour du journal, etc.) identifient automatiquement le répertoire actuel :
1. pwd pour vérifier la correspondance avec ~/projects/<key>/
2. Correspondance → sélection automatique de ce projet
3. Pas de correspondance → sélection manuelle (par numéro ou par key)
🧭 Procédure de démarrage de session (reprise de contexte)
Déclenché uniquement pour les opérations du type « entrer dans le projet pour travailler » : ouvrir un projet / vérifier / modifier / mettre à jour le journal / sauvegarder / fermer. Les opérations légères comme consulter les détails, rechercher, faire des statistiques ne sont pas déclenchées.
Après être entré dans le projet, avant d'exécuter l'opération, on revoit d'abord le contexte avant de poursuivre (pour éviter la perte d'informations dans les longs projets et ne pas savoir par où commencer après une interruption) :
- Lire le CLAUDE.md du projet (s'il existe)
- Résumer la progression précédente : citer « état actuel / dernière avancée », en se basant si nécessaire sur le dernier commit git log
- Lister les « prochaines actions » (par ordre de priorité 1. 2. 3. …)
- Demander à l'utilisateur par où continuer (présenter les options de prochaine action dans une carte AskUserQuestion), puis agir après confirmation
Exemple de formulation (note en bas de carte) :
📌 Résumé de la dernière progression : Initialisation du projet terminée, registre créé
➡️ Prochaines actions (par priorité) :
1. Rédiger le cahier des charges
2. Compléter la liste des tâches
Par où continuer ?
Pour les nouveaux projets (CLAUDE.md vient d'être créé), on peut sauter la revue et passer directement à l'action.
📂 Ouvrir un projet
- Localiser le projet par numéro ou key → Vérifier que le répertoire
~/projects/<key>/existe cdvers le répertoire du projet- Déclencher la « 🧭 Procédure de démarrage de session » (revoir la dernière progression → confirmer la reprise)
- Une fois que l'utilisateur commence à travailler dans le projet, effectuer les opérations nécessaires (modifier/mettre à jour le journal/sauvegarder/fermer)
Détail des opérations
📌 Règle d'interaction (obligatoire) : pour toute demande nécessitant une réponse « oui/non » ou un « choix unique », vous devez utiliser l'outil AskUserQuestion avec une carte d'options (deux boutons d'option ou plus), il est interdit d'utiliser du texte brut pour poser la question. Scénarios concernés : faut-il introduire grill-with-docs, faut-il établir une structure de documentation, confirmation du type de projet, confirmation de la clé/du contexte (selon suggestion ou modification), confirmation de suppression, choix de reprise de session (par où continuer), etc.
🆕 Créer un projet
- Demander le nom du projet + la description du contexte, générer la key :
<abréviation_anglaise>_<AAAAMMJJ> - Sauvegarder PROJECTS.json → Créer le répertoire → Écrire README.md + CLAUDE.md +
.gitignore(contenantPROJECTS.json,backups/,*.bak,.memory/) - Enregistrer dans PROJECTS.json (seq = nextSeq, puis nextSeq +1)
cdvers le répertoire du projet,git init- Doit demander si on souhaite introduire le skill grill-with-docs (Carte AskUserQuestion : Introduire / Ne pas introduire) :
- Accepter → Mettre en œuvre les trois actions (pas une déclaration orale « déjà introduit ») :
① Enregistrer dans le tableau « Dépendances » de CLAUDE.md :
| grill-with-docs | Introduit | Processus de questionnement de conception (nécessite un appel manuel de l'utilisateur à /grill-with-docs) |② Ajouter un rappel en haut de la liste initiale des tâches (marqué « manuel », non exécutable par l'IA) :- [ ] 📌 Rappel (manuel) : lors de la conception/planification, tapez /grill-with-docs pour lancer le questionnement (ce skill ne peut être appelé que manuellement par l'utilisateur, l'IA ne peut pas l'activer)③ Informer clairement l'utilisateur de la méthode d'appel : « Lors de la première conception/planification, tapez manuellement /grill-with-docs » - Refuser → Ne pas enregistrer, ne pas ajouter aux tâches, continuer normalement
- Accepter → Mettre en œuvre les trois actions (pas une déclaration orale « déjà introduit ») :
① Enregistrer dans le tableau « Dépendances » de CLAUDE.md :
- Projets de code/ingénierie : Demander si on souhaite établir une structure de documentation optionnelle (Carte AskUserQuestion : Établir / Ignorer ; voir « 📁 Structure de documentation optionnelle ») ; ignorer pour les projets métier/documentation
Le modèle initial de CLAUDE.md se trouve en bas.
🗑️ Supprimer un projet
- Localiser le projet → Lister les entrées JSON + la liste des fichiers du répertoire → Signaler le risque irréversible
- Après confirmation de l'utilisateur : Sauvegarder PROJECTS.json → Supprimer l'entrée JSON → Supprimer le répertoire du projet → Renuméroter les projets restants en continu à partir de 1 → nextSeq = max(seq) + 1
💾 Sauvegarder un projet
- Sauvegarder CLAUDE.md (dans
<répertoire du skill>/backups/, c'est-à-dire~/.claude/skills/project-registry/backups/) - Revoir la conversation en cours, ajouter ou mettre à jour dans CLAUDE.md les éléments suivants :
- Dernières avancées et tâches accomplies
- Nouvelles décisions architecturales (les décisions quotidiennes suivent le format « 📜 Règles d'enregistrement des décisions », la raison ne peut pas être omise)
- Mettre à jour la liste des tâches (marquer ✅ les tâches terminées, ajouter les nouvelles)
- Mettre à jour les problèmes connus
- ⚠️ Les « prochaines actions » doivent être listées par ordre de priorité (1. 2. 3.), ne peuvent pas être omises (la session suivante reprendra à partir de là)
- Valider les modifications de CLAUDE.md dans git
- Suggérer les outils suivants : en fonction du contenu du projet et des tâches, indiquer les skills susceptibles d'être utiles (par exemple ppt-master / docx / xlsx / pdf, etc.) pour que l'utilisateur décide
- Après la sauvegarde, ne pas fermer, rester dans le répertoire actuel
⚠️ La mise à jour automatique de CLAUDE.md est une règle obligatoire, elle ne peut pas être ignorée.
🚪 Fermer un projet
identique à l'opération de sauvegarde, mais la dernière étape consiste à revenir sur ~ :
- Sauvegarder CLAUDE.md
- Revoir la conversation en cours et mettre à jour CLAUDE.md (incluant les « prochaines actions » par ordre de priorité)
- Valider les modifications dans git
- Suggérer les outils suivants (comme pour la sauvegarde)
- Après la fermeture, revenir directement sur
~
🔍 Vérification MD (vérification en masse de l'état des CLAUDE.md de tous les projets)
Vérifie en masse pour tous les projets enregistrés si CLAUDE.md est valide (sans sélection manuelle) :
- Parcourir tous les répertoires des projets, vérifier les 3 points suivants :
- Le répertoire existe-t-il
- CLAUDE.md existe-t-il
.gitexiste-t-il (condition préalable pour que CLAUDE.md soit effectif : doit être au même niveau que.git)
- Afficher un tableau récapitulatif :
🔍 Vérification de santé MD (N projets au total)
┌─────┬────────────────────────────────┬──────────────────┬──────────────┬──────────────┬──────────────┬──────────────┐
│ N° │ key │ Nom du projet │ Répertoire │ CLAUDE.md │ .git │ Valide ? │
├─────┼────────────────────────────────┼──────────────────┼──────────────┼──────────────┼──────────────┼──────────────┤
│ 1 │ pet_hospital_crm_20260301 │ CRM Clinique Vét.│ ✅ │ ✅ │ ✅ │ ✅ │
│ 2 │ gym_members_app_20260315 │ App Membres Salle│ ✅ │ ✅ │ ✅ │ ✅ │
│ ... │ ... │ ... │ ... │ ... │ ... │ ... │
└─────┴────────────────────────────────┴──────────────────┴──────────────┴──────────────┴──────────────┴──────────────┘
- Pour les projets où « Valide ? » est ❌, identifier le problème un par un :
- Répertoire inexistant → Vérifier s'il y a des résidus dans l'enregistrement JSON
- CLAUDE.md manquant → Le recréer à l'aide du modèle
.gitmanquant → Exécutergit init
- Revenir automatiquement sur
cd ~(ne pas entrer dans un projet spécifique)
📁 Structure de documentation optionnelle (projets de code/ingénierie)
Lors de la création d'un projet de code, demander si on souhaite l'établir (ignorer pour les projets métier/documentation). Une fois établie, elle se distingue de CLAUDE.md : CLAUDE.md enregistre l'état et les décisions, tandis que la structure de documentation enregistre les détails de conception :
<répertoire du projet>/
├── CLAUDE.md # Journal de développement (état/décisions/tâches)
└── docs/
├── ARCHITECTURE.md # Description de l'architecture globale (optionnel)
├── adr/ # Enregistrement des décisions architecturales (optionnel, s'articule avec la sortie ADR de grill-with-docs/domain-modeling)
└── dev/
├── README.md # Index des fonctionnalités
└── <fonction>/
├── SPEC.md # Spécifications fonctionnelles
└── DESIGN.md # Conception de l'implémentation
Principe de légèreté : créé uniquement sur confirmation de l'utilisateur, pas obligatoire, pas par défaut. Articulation avec grill-with-docs : grill-with-docs (questionnement + terminologie + ADR) est le processus de conception, la structure est le support de stockage — d'abord questionner clairement, puis stocker selon la structure. Répartition : les décisions légères sont consignées dans la section « Enregistrement des décisions architecturales » de CLAUDE.md (sur une ligne) ; les décisions difficiles à inverser, avec de réels compromis, sont stockées dans
docs/adr/; le glossaire CONTEXT.md est géré exclusivement par domain-modeling, la structure ne le recrée pas.
cd automatique + mise à jour automatique de CLAUDE.md
| Opération | cd | Mise à jour automatique de CLAUDE.md |
|---|---|---|
| Création | Entrer dans le répertoire du projet | ✅ Création automatique du modèle initial |
| Vérification/modification | Entrer dans le répertoire du projet | ❌ Pas de mise à jour automatique |
| Mise à jour du journal | Entrer dans le répertoire du projet | ✅ Mise à jour déclenchée manuellement |
| Sauvegarde | Entrer dans le répertoire du projet, rester dans le répertoire après la sauvegarde | ✅ Mise à jour automatique |
| Fermeture/retour | Mettre d'abord à jour CLAUDE.md, puis revenir sur ~ | ✅ Mise à jour automatique |
Mécanismes de sécurité
Toute opération d'écriture sur PROJECTS.json (création, modification, suppression) doit d'abord être sauvegardée :
Chemin de sauvegarde : <répertoire du skill>/backups/ (soit ~/.claude/skills/<nom-du-skill>/backups/)
Fichier de sauvegarde : PROJECTS.json.<AAAAMMJJ_HHMMSS>.bak
Toute opération d'écriture sur CLAUDE.md (mise à jour du journal, mise à jour automatique lors de la sauvegarde) doit d'abord être sauvegardée :
Chemin de sauvegarde : <répertoire du skill>/backups/
Fichier de sauvegarde : CLAUDE.md.<AAAAMMJJ_HHMMSS>.bak
Si le répertoire de sauvegarde n'existe pas, il est créé automatiquement.
Rotation automatique des sauvegardes :
Après chaque nouvelle sauvegarde, nettoyer les anciennes sauvegardes par type de fichier, en conservant les 10 plus récentes pour chaque type :
Préfixes de type de sauvegarde :
PROJECTS.json.*.bak # Sauvegarde du registre des projets, conserver 10 copies
CLAUDE.md.*.bak # Sauvegarde du journal de développement, conserver 10 copies
SKILL.md.*.bak # Sauvegarde du skill lui-même, conserver 10 copies
Règle de nettoyage : trier par horodatage AAAAMMJJ_HHMMSS à la fin du nom de fichier (attention : pour les sauvegardes nommées CLAUDE.md.<nom_projet>.<horodatage>.bak, l'horodatage est à la fin, on ne peut pas trier par la chaîne entière), conserver les 10 plus récentes, supprimer le reste.
🔁 Sauvegarde automatique (hooks, exécution silencieuse)
Deux mécanismes, tous en arrière-plan, silencieux, avec tentative silencieuse en cas d'échec, et actifs uniquement dans le répertoire ~/projects/.
Niveau 1 : Instantané mécanique (zéro dépendance, activé par défaut)
| Hook | Action |
|---|---|
| Stop (après chaque réponse) | Synchronisation de la transcription vers <projet>/.memory/transcript-latest.jsonl (instantanée) |
| SessionEnd (fin de session) | Sauvegarde de CLAUDE.md (rotation de 10 copies) + validation git (uniquement s'il y a des modifications) |
- ⚠️ Confidentialité :
.memory/contient le texte brut de la conversation — doit être exclu par gitignore (le .gitignore généré automatiquement lors de la création du projet contient.memory/), jamais dans le dépôt - En cas de terminaison brutale du terminal, SessionEnd ne se déclenche pas, mais la synchronisation instantanée de Stop reste active — les données ne sont pas perdues
Niveau 3 : Résumé automatique (optionnel, activé après configuration de l'API)
- Déclenchement : Contrôle de throttle (≥10 nouveaux messages ou ≥10 minutes) — pas d'appel API à chaque réponse
- Processus : Lire l'incrément de
.memory/→ AppelerPR_API_BASE_URL(tout fournisseur compatible OpenAI) → Extraire les avancées/décisions/tâches/prochaines étapes → Fusionner et mettre à jour CLAUDE.md (ajouter les décisions/mettre à jour les avancées/tâches/prochaines étapes) - Configuration (variables d'environnement) :
PR_API_BASE_URL/PR_API_KEY/PR_API_MODEL(ignorer automatiquement si non configurée) - Confidentialité : La conversation est envoyée uniquement au point d'accès configuré par l'utilisateur ; la clé est lue depuis les variables d'environnement, jamais codée en dur
Relation avec la sauvegarde manuelle
Résumé automatique = actualisation en temps réel (fusion incrémentale) ; Sauvegarde manuelle = organisation faisant autorité (révision complète) — les deux sont compatibles et complémentaires.
📜 Règles d'enregistrement des décisions (pas de décision sans justification)
Toutes les décisions doivent pouvoir être retracées : « Pourquoi cela a été fait » doit toujours être vérifiable, la raison ne peut pas être omise.
Format des décisions légères
- [Statut] AAAA-MM-JJ — <Décision> (Raison : <Motif>) (Effet attendu : <Résultat>)
- Marqueur de statut :
✅ Exécutée/🔄 En cours/⛔ Annulée/⏸️ Suspendue - Raison obligatoire : pas de raison, pas d'enregistrement
- Effet attendu optionnel : si l'effet attendu est connu au moment de l'enregistrement, l'ajouter (servira à vérifier l'effet lors de l'attribution)
Moment d'enregistrement (par niveau)
| Type | Moment |
|---|---|
| Décision majeure (impactant l'orientation / difficile à inverser / consommatrice de ressources) | Confirmation immédiate pendant la conversation : Claude demande activement « Dois-je enregistrer cette décision ? » |
| Décision quotidienne | Révision et ajout systématique lors de la sauvegarde/fermeture (obligatoire) |
Décisions lourdes → ADR
Les décisions difficiles à inverser, avec de réels compromis, sont stockées dans docs/adr/, avec une ligne d'index dans CLAUDE.md :
- 2026-08-08 — ADR-0001 <Titre de la décision> (Statut : ✅ Exécutée)
Structure ADR : # ADR-000N <Titre> + Status / Date / Context / Decision / Consequences.
Modèle initial de CLAUDE.md
# <Nom du projet>
## Objectif du projet
<Résumé de la description du contexte>
## Pile technique
(À compléter — Langage/Framework/Base de données/Déploiement, etc.)
## État actuel
state: active
- Phase : Analyse des besoins / En développement / Terminé
- Dernière avancée : Initialisation du projet
## Enregistrement des décisions architecturales
Enregistre toutes les décisions importantes, format :
- [Statut] AAAA-MM-JJ — <Décision> (Raison : <Motif>) (Effet attendu : <Résultat>)
(Statut : ✅ Exécutée / 🔄 En cours / ⛔ Annulée / ⏸️ Suspendue ; raison ne peut pas être omise, effet attendu optionnel)
## Périmètre et fonctionnalités du projet
(Liste des fonctionnalités principales, peut aussi être présentée sous forme de tableau)
## Dépendances
| Projet dépendant | Relation | Description |
|:---|:---|:---|
| <Nom du projet> | Dépend/Est dépendant | <Description spécifique> |
## Tâches
- [ ] Tâche 1 (détaillée à un niveau exécutable)
## Problèmes connus
- (Aucun pour l'instant — à compléter lors de la découverte, avec le périmètre d'impact)
## Prochaines actions
- Lister par ordre de priorité (1. 2. 3.), mise à jour obligatoire lors de la sauvegarde/fermeture
Lors de la création, remplir au minimum : Objectif du projet, Pile technique, État actuel, les trois premières tâches. Le reste sera enrichi progressivement au cours du développement.
Règles de nommage de la key
<abréviation_anglaise/pinyin>_<AAAAMMJJ>
Exemples :
CRM Clinique Vétérinaire → pet_hospital_crm_20260301
App Membres Salle de Sport → gym_members_app_20260315
- Priorité à l'anglais, pinyin comme alternative
- Tout en minuscules, séparé par des tirets bas
- Ajouter la date à la fin
Règles de gestion des numéros de séquence
| Opération | Règle |
|---|---|
| Création | Lire nextSeq comme seq du nouveau projet, puis nextSeq +1 après l'enregistrement |
| Suppression | Les projets restants sont renumérotés en continu à partir de 1, nextSeq est défini sur max(seq) + 1 |
| seq | Toujours continu, jamais de saut de numéro |
🧠 Gestion de la mémoire (trois mécanismes)
Mémoire au niveau du projet (gérée par le skill)
| Support mémoire | Quoi enregistrer | Mécanisme de gestion |
|---|---|---|
| CLAUDE.md | État / Décisions et raisons / Tâches / Problèmes connus / Prochaines actions | Chargé automatiquement à chaque session + mise à jour obligatoire lors de la sauvegarde + validation git + rotation des sauvegardes |
| PROJECTS.json | Registre des projets (seq/key/name/status/created) | Sauvegarde avant toute opération d'écriture |
| Historique git + backups/ | Instantanés des versions historiques | Consultable à tout moment (git show / fichiers de sauvegarde) |
Cycle de vie de la mémoire
Écriture (mise à jour obligatoire lors de la sauvegarde/fermeture)
→ Chargement automatique (Claude Code injecte automatiquement CLAUDE.md à chaque session)
→ Sauvegarde (rotation de 10 copies + validation git)
→ Recherche (lecture de CLAUDE.md / enquête d'attribution « pourquoi X » / historique git)
Périmètre de la mémoire
Enregistré : Décisions architecturales et raisons | Conventions et normes | Terminologie du domaine | Tâches et problèmes connus | État actuel et dépendances | Prochaines actions
Non enregistré : Détails d'implémentation du code | Modifications traçables par git | Discussions temporaires (le texte brut de la conversation n'est pas archivé — pour savoir « ce qui a été dit à ce moment-là », utiliser l'archive de session de Claude Code --resume, cela ne relève pas de la responsabilité de ce skill)
Répartition avec la mémoire globale
- Lié au projet (avancées/décisions/pourquoi telle décision) → Mémoire de ce skill (CLAUDE.md, suit le projet)
- Préférences utilisateur / faits transversaux (par exemple « Pour les PPT, utilisez d'abord ppt-master ») → Mémoire globale de Claude Code (
~/.claude/.../memory/, gérée par le système, le skill n'écrit pas)
Maintenance de CLAUDE.md
CLAUDE.md est le fichier de contexte du projet chargé automatiquement par Claude à chaque session, il enregistre les décisions et les avancées.
Moments de mise à jour (règle obligatoire) : Généré automatiquement lors de la création | Appeler « Mise à jour du journal » à chaque fin de session | Ajouter lors d'une décision clé | Synchroniser lors d'un changement de besoin | ⚠️ Mise à jour automatique lors de la fermeture ou de la sauvegarde (doit être exécutée, ne peut pas être ignorée), et les « prochaines actions » sont écrites par ordre de priorité
Quoi enregistrer : Décisions architecturales et raisons | Conventions et normes | Terminologie du domaine | Tâches et problèmes connus | État actuel et dépendances | Prochaines actions
Ne pas enregistrer : Détails d'implémentation du code | Modifications traçables par git | Discussions temporaires
Condition d'effectivité : Doit être au même niveau que .git, nom de fichier CLAUDE.md (tout en majuscules)
Lors de la création d'un nouveau projet,
git initest automatique. Pour un répertoire existant sans.git, expliquer la raison et demander si on souhaitegit init.
🔎 Enquête d'attribution (pourquoi X)
Déclenchée lorsque l'utilisateur dit « pourquoi X / le contexte de cette décision / pourquoi cela a été fait à l'époque / attribution X ».
Processus :
- Localiser : Confirmer l'objet de l'enquête (projet + sujet/point dans le temps)
- Recueillir des preuves : Lire la section « Enregistrement des décisions architecturales » du CLAUDE.md du projet +
docs/adr/(s'il existe) + le dernier commit git log + les avancées/tâches - Produire un rapport d'attribution :
- Chronologie des décisions : Décisions pertinentes classées par date
- Chaîne des raisons : Motif de chaque décision + liens entre les décisions (quelle décision se base sur laquelle)
- Statut : ✅ Exécutée / 🔄 En cours / ⛔ Annulée / ⏸️ Suspendue
- Impact ultérieur : En fonction des dernières avancées, déterminer si l'effet attendu a été atteint
- Conclusion : Répondre à « pourquoi cela a été fait à l'époque », indiquer si nécessaire si l'effet attendu a été vérifié
Le résultat est affiché dans la conversation ; si une sauvegarde est demandée, elle est stockée en dehors du dépôt (~/project-audit-logs/) — le contenu des vérifications/attributions contient des données privées du projet, il est interdit de l'écrire dans le dépôt du projet.
📋 Vérification du projet (déclenchée en langage naturel, ne fait pas partie du menu)
Déclenchée lorsque l'utilisateur dit « vérifier le projet / audit », aucun nouvel élément n'est ajouté au menu.
Analyse complète (« Vérifier tous les projets »)
Vérification structurelle (identique à la vérification MD C) + 5 points de contenu :
| # | Dimension | Logique de vérification |
|---|---|---|
| 1 | Cohérence du statut | Le statut dans PROJECTS.json est-il en contradiction avec les dernières avancées/tâches de CLAUDE.md ? |
| 2 | Projet à l'arrêt | La dernière mise à jour de CLAUDE.md (date de git log) date de plus de 14 jours → « Peut-être à l'arrêt » |
| 3 | Accumulation de tâches | Plus de 10 tâches non terminées ou aucune progression depuis longtemps |
| 4 | Décision non appliquée | Décision marquée ✅ Exécutée mais non reflétée dans les avancées/tâches |
| 5 | Prochaine action manquante | Absence de section « Prochaines actions » (négligence lors du processus de sauvegarde) |
Les éléments anormaux sont automatiquement accompagnés d'indices d'attribution : Revenir sur les N dernières décisions, indiquer lesquelles pourraient être pertinentes.
Analyse approfondie d'un seul projet (« Vérifier le projet XX »)
5 points de contenu, ne vérifier que le projet spécifié.
Le rapport n'est affiché que dans la conversation ; si une sauvegarde est demandée, il est stocké dans ~/project-audit-logs/ (en dehors du dépôt).
↩️ Restauration de version
Déclenchée lorsque l'utilisateur dit « restaurer / récupérer une version / revenir en arrière / annuler la sauvegarde ». Double canal : historique git (fichiers du projet) + instantanés de sauvegarde (registre/journal de développement).
Règles de sécurité générales (toutes les restaurations doivent les respecter) :
- Sauvegarder d'abord la version actuelle (la restauration elle-même peut être restaurée)
- Doit afficher un résumé des différences + confirmation par carte AskUserQuestion (Restaurer / Annuler) avant d'agir
- La restauration crée un nouveau commit, ne modifie pas l'historique git
① Restauration de CLAUDE.md (journal de développement modifié/supprimé par erreur)
- Localiser :
git log --onelinepour lister les derniers commits (ou les horodatages des fichiers backups/CLAUDE.md.*.bak) - Comparer :
git show <commit>:CLAUDE.mdavec la version actuelle (points essentiels : décisions/tâches/prochaines actions) - Confirmer : Afficher le résumé des différences → Confirmation par carte
- Exécuter : Sauvegarder la version actuelle →
git checkout <commit> -- CLAUDE.md→ Commiter (enregistrer « Restauré vers ») - Rapporter : Résumé du contenu restauré
② Restauration de fichiers du projet (README/docs/code)
- Localiser :
git logpour trouver la version cible - Comparer :
git diff <commit> -- <fichier> - Confirmer : Résumé des différences → Confirmation par carte
- Exécuter : Sauvegarder la version actuelle →
git checkout <commit> -- <fichier>→ Commiter - Rapporter
③ Restauration du registre (PROJECTS.json supprimé/modifié par erreur)
- Localiser :
backups/PROJECTS.json.<horodatage>.bak(les 10 plus récents, triés par horodatage à la fin) - Comparer : Différence entre l'actuel et la sauvegarde (lister les ajouts/suppressions de projets)
- Confirmer : Résumé des différences → Confirmation par carte
- Exécuter : Sauvegarder la version actuelle →
cp sauvegarde → PROJECTS.json→ Valider (nombre de projets/continuité des seq) - Rapporter
Astuce : La restauration fonctionne de pair avec « 🔎 Enquête d'attribution » — d'abord enquêter « pourquoi cela est devenu comme ça », puis décider vers quelle version restaurer.
Questions fréquentes
- PROJECTS.json n'existe pas : Créer une liste vide avec le modèle par défaut
- Le répertoire existe déjà : Réutiliser le répertoire existant, uniquement enregistrer dans le JSON
- Projet introuvable lors de la suppression : Lister d'abord les projets pour confirmation par l'utilisateur