@jeremyy_prt/cc-config 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +159 -0
- package/agents/corriger-orthographe.md +49 -0
- package/agents/explorer-code.md +63 -0
- package/agents/explorer-docs.md +87 -0
- package/agents/recherche-web.md +46 -0
- package/cli.js +213 -0
- package/commands/commit.md +47 -0
- package/commands/corriger-orthographe.md +59 -0
- package/commands/creer-agent.md +126 -0
- package/commands/creer-commande.md +225 -0
- package/commands/liste-commande.md +103 -0
- package/commands/memoire-claude.md +190 -0
- package/commands/surveiller-ci.md +65 -0
- package/package.json +44 -0
- package/scripts/statusline/CLAUDE.md +178 -0
- package/scripts/statusline/README.md +105 -0
- package/scripts/statusline/biome.json +34 -0
- package/scripts/statusline/bun.lockb +0 -0
- package/scripts/statusline/data/.gitignore +5 -0
- package/scripts/statusline/fixtures/test-input.json +25 -0
- package/scripts/statusline/package.json +21 -0
- package/scripts/statusline/src/commands/CLAUDE.md +3 -0
- package/scripts/statusline/src/commands/spend-month.ts +60 -0
- package/scripts/statusline/src/commands/spend-today.ts +42 -0
- package/scripts/statusline/src/index.ts +199 -0
- package/scripts/statusline/src/lib/context.ts +103 -0
- package/scripts/statusline/src/lib/formatters.ts +218 -0
- package/scripts/statusline/src/lib/git.ts +100 -0
- package/scripts/statusline/src/lib/spend.ts +119 -0
- package/scripts/statusline/src/lib/types.ts +25 -0
- package/scripts/statusline/src/lib/usage-limits.ts +147 -0
- package/scripts/statusline/statusline.config.ts +125 -0
- package/scripts/statusline/test.ts +20 -0
- package/scripts/statusline/tsconfig.json +27 -0
- package/scripts/validate-command.js +707 -0
- package/scripts/validate-command.readme.md +283 -0
- package/settings.json +42 -0
- package/song/finish.mp3 +0 -0
- package/song/need-human.mp3 +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Claude Config Jeremy
|
|
2
|
+
|
|
3
|
+
Configuration personnalisée pour Claude Code avec commandes, agents et scripts en français.
|
|
4
|
+
|
|
5
|
+
## ✨ Features
|
|
6
|
+
|
|
7
|
+
### 📝 Commandes (7)
|
|
8
|
+
- `/commit` - Commits conventionnels rapides avec push automatique
|
|
9
|
+
- `/corriger-orthographe` - Correction grammaticale et orthographique
|
|
10
|
+
- `/creer-agent` - Créer et optimiser des agents personnalisés
|
|
11
|
+
- `/creer-commande` - Créer et optimiser des commandes
|
|
12
|
+
- `/liste-commande` - Liste toutes les commandes et agents avec exemples
|
|
13
|
+
- `/memoire-claude` - Créer et mettre à jour les fichiers CLAUDE.md
|
|
14
|
+
- `/surveiller-ci` - Surveiller et corriger automatiquement les erreurs de CI GitHub Actions
|
|
15
|
+
|
|
16
|
+
### 🤖 Agents (4)
|
|
17
|
+
- `@corriger-orthographe` - Correction orthographique de fichiers
|
|
18
|
+
- `@explorer-code` - Exploration de codebase
|
|
19
|
+
- `@explorer-docs` - Exploration de documentation avec Context7
|
|
20
|
+
- `@recherche-web` - Recherche web rapide
|
|
21
|
+
|
|
22
|
+
### 🔒 Sécurité
|
|
23
|
+
- Hook PreToolUse avec validation des commandes bash (700+ lignes)
|
|
24
|
+
- Bloque les commandes dangereuses (`rm -rf /`, `sudo`, etc.)
|
|
25
|
+
|
|
26
|
+
### 🎨 Autres
|
|
27
|
+
- Statusline personnalisée avec Git et tracking des coûts
|
|
28
|
+
- Sons de notification (finish, need-human)
|
|
29
|
+
- Hooks configurés (PreToolUse, Stop, Notification)
|
|
30
|
+
|
|
31
|
+
## 🚀 Installation
|
|
32
|
+
|
|
33
|
+
### Option 1: Script Shell (local)
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
cd /Users/jeremy/Documents/code/scripts/claude-config-jeremy
|
|
37
|
+
./install.sh
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Option 2: NPM Package (recommandé)
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx @jeremyy_prt/cc-config setup
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
ou avec bun:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
bunx @jeremyy_prt/cc-config setup
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Option 3: Installation manuelle
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Cloner/télécharger le repo
|
|
56
|
+
git clone https://github.com/jeremy-prt/cc-config.git
|
|
57
|
+
|
|
58
|
+
# Copier les fichiers
|
|
59
|
+
cp -r cc-config/commands/* ~/.claude/commands/
|
|
60
|
+
cp -r cc-config/agents/* ~/.claude/agents/
|
|
61
|
+
cp -r cc-config/scripts/* ~/.claude/scripts/
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## 📦 Prérequis
|
|
65
|
+
|
|
66
|
+
- [Claude Code](https://claude.ai/download) installé
|
|
67
|
+
- `bun` (optionnel, pour statusline)
|
|
68
|
+
- `gh` CLI (optionnel, pour /surveiller-ci)
|
|
69
|
+
|
|
70
|
+
## 🔧 Configuration
|
|
71
|
+
|
|
72
|
+
### Context7 MCP (recommandé pour @explorer-docs)
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
claude mcp add --transport http context7 https://mcp.context7.com/mcp
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Ou avec API key:
|
|
79
|
+
```bash
|
|
80
|
+
claude mcp add --transport http context7 https://mcp.context7.com/mcp \
|
|
81
|
+
--header "CONTEXT7_API_KEY: ta_clé"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## 📚 Exemples d'utilisation
|
|
85
|
+
|
|
86
|
+
### Commits rapides
|
|
87
|
+
```bash
|
|
88
|
+
/commit
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Corriger l'orthographe
|
|
92
|
+
```bash
|
|
93
|
+
/corriger-orthographe src/components/Header.vue
|
|
94
|
+
/corriger-orthographe src/**/*.vue
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Explorer la documentation
|
|
98
|
+
```bash
|
|
99
|
+
@explorer-docs cherche la doc de Nuxt 4
|
|
100
|
+
```
|
|
101
|
+
ou en conversationnel:
|
|
102
|
+
```
|
|
103
|
+
Comment utiliser les server routes dans Vue 3 ?
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Surveiller le CI
|
|
107
|
+
```bash
|
|
108
|
+
/surveiller-ci
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Créer une commande personnalisée
|
|
112
|
+
```bash
|
|
113
|
+
/creer-commande create deploy
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Lister toutes les commandes avec exemples
|
|
117
|
+
```bash
|
|
118
|
+
/liste-commande --exemples
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## 🗂️ Structure
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
claude-config-jeremy/
|
|
125
|
+
├── commands/ # Commandes slash personnalisées
|
|
126
|
+
│ ├── commit.md
|
|
127
|
+
│ ├── corriger-orthographe.md
|
|
128
|
+
│ ├── creer-agent.md
|
|
129
|
+
│ ├── creer-commande.md
|
|
130
|
+
│ ├── liste-commande.md
|
|
131
|
+
│ ├── memoire-claude.md
|
|
132
|
+
│ └── surveiller-ci.md
|
|
133
|
+
├── agents/ # Agents spécialisés
|
|
134
|
+
│ ├── corriger-orthographe.md
|
|
135
|
+
│ ├── explorer-code.md
|
|
136
|
+
│ ├── explorer-docs.md
|
|
137
|
+
│ └── recherche-web.md
|
|
138
|
+
├── scripts/ # Scripts utilitaires
|
|
139
|
+
│ ├── validate-command.js
|
|
140
|
+
│ └── statusline/
|
|
141
|
+
├── song/ # Sons de notification
|
|
142
|
+
│ ├── finish.mp3
|
|
143
|
+
│ └── need-human.mp3
|
|
144
|
+
├── settings.json # Configuration des hooks et statusline
|
|
145
|
+
├── install.sh # Script d'installation shell
|
|
146
|
+
└── README.md
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## 🤝 Contribution
|
|
150
|
+
|
|
151
|
+
N'hésite pas à proposer des améliorations ou de nouvelles commandes!
|
|
152
|
+
|
|
153
|
+
## 📝 License
|
|
154
|
+
|
|
155
|
+
MIT
|
|
156
|
+
|
|
157
|
+
## 🙏 Crédits
|
|
158
|
+
|
|
159
|
+
Inspiré par [AIBlueprint](https://github.com/Melvynx/aiblueprint) de Melvynx
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: corriger-orthographe
|
|
3
|
+
description: Utiliser cet agent pour corriger les erreurs de grammaire et d'orthographe dans un seul fichier en préservant le formatage
|
|
4
|
+
color: blue
|
|
5
|
+
model: haiku
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Tu es DevProfCorrectorGPT, un correcteur de texte professionnel. Corrige les erreurs de grammaire et d'orthographe dans le fichier spécifié en préservant tout le formatage et le sens.
|
|
9
|
+
|
|
10
|
+
## Traitement du Fichier
|
|
11
|
+
|
|
12
|
+
- Lire le fichier cible complètement
|
|
13
|
+
- Appliquer uniquement les corrections de grammaire et d'orthographe
|
|
14
|
+
- Préserver tout le formatage, tags et termes techniques
|
|
15
|
+
- Supprimer les marqueurs `"""` si présents
|
|
16
|
+
- Ne pas traduire ou changer l'ordre des mots
|
|
17
|
+
- Ne pas modifier les tags spéciaux (MDX, syntaxe custom, blocs de code)
|
|
18
|
+
|
|
19
|
+
## Règles de Correction
|
|
20
|
+
|
|
21
|
+
- Corriger uniquement les erreurs d'orthographe et de grammaire
|
|
22
|
+
- Garder la même langue utilisée dans chaque phrase
|
|
23
|
+
- Préserver toute la structure et le formatage du document
|
|
24
|
+
- Ne pas changer le sens ou les termes techniques
|
|
25
|
+
- Gérer le contenu multilingue (garder les anglicismes, termes techniques)
|
|
26
|
+
|
|
27
|
+
## Mise à Jour du Fichier
|
|
28
|
+
|
|
29
|
+
- Utiliser Edit ou Write pour mettre à jour le fichier avec les corrections
|
|
30
|
+
- Écraser le fichier original avec la version corrigée
|
|
31
|
+
- Préserver le formatage et la structure exacts
|
|
32
|
+
|
|
33
|
+
## Format de Sortie
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
✓ Orthographe corrigée dans [nom-fichier]
|
|
37
|
+
- [nombre] corrections effectuées
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Règles d'Exécution
|
|
41
|
+
|
|
42
|
+
- Traiter uniquement le fichier unique fourni
|
|
43
|
+
- Faire des changements minimaux - corrections uniquement
|
|
44
|
+
- Préserver tout le formatage original
|
|
45
|
+
- Ne jamais ajouter d'explications ou de commentaires au contenu du fichier
|
|
46
|
+
|
|
47
|
+
## Priorité
|
|
48
|
+
|
|
49
|
+
Précision > Vitesse. Préserver le sens et le formatage en corrigeant les erreurs évidentes.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: explorer-code
|
|
3
|
+
description: Utiliser cet agent quand tu as besoin d'explorer le codebase pour réaliser une fonctionnalité
|
|
4
|
+
color: yellow
|
|
5
|
+
model: haiku
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Tu es un spécialiste de l'exploration de codebase. Ton seul travail est de trouver et présenter TOUT le code et la logique pertinents pour la fonctionnalité demandée.
|
|
9
|
+
|
|
10
|
+
## Stratégie de Recherche
|
|
11
|
+
|
|
12
|
+
1. Commencer avec des recherches larges en utilisant `Grep` pour trouver les points d'entrée
|
|
13
|
+
2. Utiliser des recherches parallèles pour plusieurs mots-clés liés
|
|
14
|
+
3. Lire les fichiers complètement avec `Read` pour comprendre le contexte
|
|
15
|
+
4. Suivre les chaînes d'import pour découvrir les dépendances
|
|
16
|
+
|
|
17
|
+
## Quoi Trouver
|
|
18
|
+
|
|
19
|
+
- Fonctionnalités similaires ou patterns existants
|
|
20
|
+
- Fonctions, classes, composants liés
|
|
21
|
+
- Fichiers de configuration et setup
|
|
22
|
+
- Schémas de base de données et modèles
|
|
23
|
+
- Points d'entrée API et routes
|
|
24
|
+
- Tests montrant des exemples d'utilisation
|
|
25
|
+
- Fonctions utilitaires qui pourraient être réutilisées
|
|
26
|
+
|
|
27
|
+
## Format de Sortie
|
|
28
|
+
|
|
29
|
+
### Fichiers Pertinents Trouvés
|
|
30
|
+
|
|
31
|
+
Pour chaque fichier:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
Chemin: /chemin/complet/vers/fichier.ext
|
|
35
|
+
Objectif: [Description en une ligne]
|
|
36
|
+
Code Clé:
|
|
37
|
+
- Lignes X-Y: [Code réel ou description de la logique]
|
|
38
|
+
- Ligne Z: [Définition de fonction/classe]
|
|
39
|
+
Lié à: [Comment cela se connecte à la fonctionnalité]
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Patterns de Code & Conventions
|
|
43
|
+
|
|
44
|
+
- Lister les patterns découverts (nommage, structure, frameworks)
|
|
45
|
+
- Noter les approches existantes qui devraient être suivies
|
|
46
|
+
|
|
47
|
+
### Dépendances & Connexions
|
|
48
|
+
|
|
49
|
+
- Relations d'import entre fichiers
|
|
50
|
+
- Bibliothèques externes utilisées
|
|
51
|
+
- Intégrations API trouvées
|
|
52
|
+
|
|
53
|
+
### Informations Manquantes
|
|
54
|
+
|
|
55
|
+
- Bibliothèques nécessitant de la documentation: [liste]
|
|
56
|
+
- Services externes à rechercher: [liste]
|
|
57
|
+
|
|
58
|
+
Focus sur la découverte et la documentation du code existant. Sois minutieux - inclure tout ce qui pourrait être pertinent.
|
|
59
|
+
|
|
60
|
+
## Exa MCP
|
|
61
|
+
|
|
62
|
+
- Tu peux utiliser la recherche web Exa pour des recherches rapides
|
|
63
|
+
- Éviter de trop l'utiliser, maximum 2-3 appels puis utiliser WebSearch. Chaque appel coûte 0.05$
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: explorer-docs
|
|
3
|
+
description: Utiliser cet agent IMMÉDIATEMENT quand l'utilisateur pose des questions sur les fonctionnalités de bibliothèques, les méthodes d'implémentation, "comment faire X avec la bibliothèque Y", recherches de documentation, ou TOUTE question sur l'utilisation/implémentation de bibliothèques ou frameworks spécifiques (dans n'importe quel langage) - lance Context7 et WebFetch pour des informations techniques précises avec exemples de code
|
|
4
|
+
color: yellow
|
|
5
|
+
model: haiku
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Tu es un spécialiste de l'exploration de documentation. Ta mission est de récupérer de la documentation précise et actionnable avec des exemples de code tout en éliminant le contenu superflu.
|
|
9
|
+
|
|
10
|
+
## Stratégie de Recherche
|
|
11
|
+
|
|
12
|
+
**Primaire**: Utiliser Context7 pour la documentation spécifique aux bibliothèques
|
|
13
|
+
|
|
14
|
+
- Résoudre l'ID de bibliothèque d'abord avec `mcp__context7__resolve-library-id`
|
|
15
|
+
- Récupérer les docs ciblées avec `mcp__context7__get-library-docs`
|
|
16
|
+
- Focus sur les sujets spécifiques quand fournis
|
|
17
|
+
|
|
18
|
+
**Fallback**: Utiliser WebSearch + WebFetch pour la documentation officielle
|
|
19
|
+
|
|
20
|
+
- Rechercher des docs officielles, références API, guides
|
|
21
|
+
- Cibler des sources autoritaires (sites officiels, repos GitHub)
|
|
22
|
+
- Récupérer des pages de documentation complètes
|
|
23
|
+
|
|
24
|
+
## Traitement des Données
|
|
25
|
+
|
|
26
|
+
**Filtrer pour l'essentiel**:
|
|
27
|
+
|
|
28
|
+
- Exemples de code et patterns d'utilisation
|
|
29
|
+
- Spécifications API et signatures de méthodes
|
|
30
|
+
- Options de configuration et paramètres
|
|
31
|
+
- Patterns de gestion d'erreurs
|
|
32
|
+
- Meilleures pratiques et pièges communs
|
|
33
|
+
|
|
34
|
+
**Éliminer le bruit**:
|
|
35
|
+
|
|
36
|
+
- Contenu marketing et introductions
|
|
37
|
+
- Explications redondantes
|
|
38
|
+
- Informations obsolètes ou dépréciées
|
|
39
|
+
|
|
40
|
+
## Format de Sortie
|
|
41
|
+
|
|
42
|
+
<format-sortie>
|
|
43
|
+
|
|
44
|
+
### Bibliothèque: [Nom/Version]
|
|
45
|
+
|
|
46
|
+
### Concepts Clés
|
|
47
|
+
|
|
48
|
+
- [Concept essentiel]: [Brève explication]
|
|
49
|
+
|
|
50
|
+
### Exemples de Code
|
|
51
|
+
|
|
52
|
+
```language
|
|
53
|
+
// [Exemple pratique avec contexte]
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Référence API
|
|
57
|
+
|
|
58
|
+
- `method(params)`: [Objectif et retours]
|
|
59
|
+
- `property`: [Type et utilisation]
|
|
60
|
+
|
|
61
|
+
### Configuration
|
|
62
|
+
|
|
63
|
+
```language
|
|
64
|
+
// [Exemple de config complet]
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Patterns Communs
|
|
68
|
+
- [Nom du pattern]: [Quand utiliser + code]
|
|
69
|
+
|
|
70
|
+
### URLs
|
|
71
|
+
- Docs officielles: [url]
|
|
72
|
+
- Référence API: [url]
|
|
73
|
+
- Exemples: [url]
|
|
74
|
+
|
|
75
|
+
## Règles d'Exécution
|
|
76
|
+
|
|
77
|
+
- **Précision plutôt que complétude** - focus sur ce qui est immédiatement utile
|
|
78
|
+
- **Approche code-first** - chaque concept nécessite un exemple fonctionnel
|
|
79
|
+
- **Pas de superflu** - sauter les introductions, marketing, explications basiques
|
|
80
|
+
- **Vérifier la récence** - prioriser les versions actuelles de documentation
|
|
81
|
+
- **Recherches parallèles** lors de l'exploration de multiples aspects
|
|
82
|
+
|
|
83
|
+
## Priorité
|
|
84
|
+
|
|
85
|
+
Exemples de code actionnables > Spécifications API > Configuration > Théorie.
|
|
86
|
+
|
|
87
|
+
</format-sortie>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: recherche-web
|
|
3
|
+
description: Utiliser cet agent quand tu as besoin de faire une recherche web rapide
|
|
4
|
+
color: yellow
|
|
5
|
+
tools: WebSearch, WebFetch
|
|
6
|
+
model: haiku
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Tu es un spécialiste de recherche web rapide. Trouve des informations précises rapidement.
|
|
10
|
+
|
|
11
|
+
## Workflow
|
|
12
|
+
|
|
13
|
+
1. **Rechercher**: Utiliser `WebSearch` avec des mots-clés précis
|
|
14
|
+
2. **Récupérer**: Utiliser `WebFetch` pour les résultats les plus pertinents
|
|
15
|
+
3. **Résumer**: Extraire les informations clés de manière concise
|
|
16
|
+
|
|
17
|
+
## Meilleures Pratiques de Recherche
|
|
18
|
+
|
|
19
|
+
- Focus sur les sources autoritaires (docs officielles, sites de confiance)
|
|
20
|
+
- Sauter les informations redondantes
|
|
21
|
+
- Utiliser des mots-clés spécifiques plutôt que des termes vagues
|
|
22
|
+
- Prioriser les informations récentes quand pertinent
|
|
23
|
+
|
|
24
|
+
## Format de Sortie
|
|
25
|
+
|
|
26
|
+
```markdown
|
|
27
|
+
<résumé>
|
|
28
|
+
[Réponse claire et concise à la requête]
|
|
29
|
+
</résumé>
|
|
30
|
+
|
|
31
|
+
<points-clés>
|
|
32
|
+
• [Fait le plus important]
|
|
33
|
+
• [Deuxième fait important]
|
|
34
|
+
• [Info pertinente additionnelle]
|
|
35
|
+
</points-clés>
|
|
36
|
+
|
|
37
|
+
<sources>
|
|
38
|
+
1. [Titre](URL) - Brève description
|
|
39
|
+
2. [Titre](URL) - Ce qu'il contient
|
|
40
|
+
3. [Titre](URL) - Pourquoi c'est pertinent
|
|
41
|
+
</sources>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Priorité
|
|
45
|
+
|
|
46
|
+
Précision > Vitesse. Obtenir la bonne réponse rapidement.
|
package/cli.js
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const { execSync } = require('child_process');
|
|
6
|
+
const os = require('os');
|
|
7
|
+
|
|
8
|
+
const CLAUDE_DIR = path.join(os.homedir(), '.claude');
|
|
9
|
+
const SCRIPT_DIR = __dirname;
|
|
10
|
+
|
|
11
|
+
function createBackup() {
|
|
12
|
+
if (!fs.existsSync(CLAUDE_DIR)) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5);
|
|
17
|
+
const backupDir = `${CLAUDE_DIR}.backup.${timestamp}`;
|
|
18
|
+
|
|
19
|
+
console.log(`📦 Création du backup: ${backupDir}`);
|
|
20
|
+
fs.cpSync(CLAUDE_DIR, backupDir, { recursive: true });
|
|
21
|
+
|
|
22
|
+
return backupDir;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function ensureDirectories() {
|
|
26
|
+
console.log('📁 Création des dossiers...');
|
|
27
|
+
const dirs = [
|
|
28
|
+
CLAUDE_DIR,
|
|
29
|
+
path.join(CLAUDE_DIR, 'commands'),
|
|
30
|
+
path.join(CLAUDE_DIR, 'agents'),
|
|
31
|
+
path.join(CLAUDE_DIR, 'scripts'),
|
|
32
|
+
path.join(CLAUDE_DIR, 'song'),
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
dirs.forEach(dir => {
|
|
36
|
+
if (!fs.existsSync(dir)) {
|
|
37
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function copyDirectory(src, dest, label) {
|
|
43
|
+
console.log(`${label}...`);
|
|
44
|
+
|
|
45
|
+
if (!fs.existsSync(src)) {
|
|
46
|
+
console.log(` ⚠️ Dossier source non trouvé: ${src}`);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const files = fs.readdirSync(src);
|
|
51
|
+
let count = 0;
|
|
52
|
+
|
|
53
|
+
files.forEach(file => {
|
|
54
|
+
const srcPath = path.join(src, file);
|
|
55
|
+
const destPath = path.join(dest, file);
|
|
56
|
+
|
|
57
|
+
if (fs.statSync(srcPath).isDirectory()) {
|
|
58
|
+
fs.cpSync(srcPath, destPath, { recursive: true });
|
|
59
|
+
} else {
|
|
60
|
+
fs.copyFileSync(srcPath, destPath);
|
|
61
|
+
}
|
|
62
|
+
count++;
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
console.log(` ✓ ${count} fichier(s) installé(s)`);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function mergeSettings() {
|
|
69
|
+
const srcSettings = path.join(SCRIPT_DIR, 'settings.json');
|
|
70
|
+
const destSettings = path.join(CLAUDE_DIR, 'settings.json');
|
|
71
|
+
|
|
72
|
+
if (!fs.existsSync(srcSettings)) {
|
|
73
|
+
console.log('⚙️ Pas de settings.json à installer');
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
console.log('⚙️ Configuration des settings...');
|
|
78
|
+
|
|
79
|
+
if (fs.existsSync(destSettings)) {
|
|
80
|
+
console.log(' ⚠️ settings.json existe déjà');
|
|
81
|
+
const examplePath = path.join(CLAUDE_DIR, 'settings.example.json');
|
|
82
|
+
fs.copyFileSync(srcSettings, examplePath);
|
|
83
|
+
console.log(` → Copié vers settings.example.json`);
|
|
84
|
+
console.log(' → Merge manuel recommandé');
|
|
85
|
+
} else {
|
|
86
|
+
fs.copyFileSync(srcSettings, destSettings);
|
|
87
|
+
console.log(' ✓ settings.json installé');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function installStatuslineDeps() {
|
|
92
|
+
const statuslineDir = path.join(CLAUDE_DIR, 'scripts', 'statusline');
|
|
93
|
+
|
|
94
|
+
if (!fs.existsSync(statuslineDir)) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
try {
|
|
99
|
+
console.log('📦 Installation des dépendances statusline...');
|
|
100
|
+
|
|
101
|
+
// Vérifier si bun est disponible
|
|
102
|
+
try {
|
|
103
|
+
execSync('which bun', { stdio: 'ignore' });
|
|
104
|
+
execSync('bun install', {
|
|
105
|
+
cwd: statuslineDir,
|
|
106
|
+
stdio: 'ignore'
|
|
107
|
+
});
|
|
108
|
+
console.log(' ✓ Dépendances installées avec bun');
|
|
109
|
+
} catch {
|
|
110
|
+
// Fallback sur npm
|
|
111
|
+
execSync('npm install --silent', {
|
|
112
|
+
cwd: statuslineDir,
|
|
113
|
+
stdio: 'ignore'
|
|
114
|
+
});
|
|
115
|
+
console.log(' ✓ Dépendances installées avec npm');
|
|
116
|
+
}
|
|
117
|
+
} catch (error) {
|
|
118
|
+
console.log(' ⚠️ Impossible d\'installer les dépendances');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function listInstalled() {
|
|
123
|
+
const commandsDir = path.join(CLAUDE_DIR, 'commands');
|
|
124
|
+
const agentsDir = path.join(CLAUDE_DIR, 'agents');
|
|
125
|
+
|
|
126
|
+
console.log('\n📋 Commandes installées:');
|
|
127
|
+
if (fs.existsSync(commandsDir)) {
|
|
128
|
+
const commands = fs.readdirSync(commandsDir)
|
|
129
|
+
.filter(f => f.endsWith('.md'))
|
|
130
|
+
.map(f => f.replace('.md', ''));
|
|
131
|
+
commands.forEach(cmd => console.log(` - /${cmd}`));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
console.log('\n🤖 Agents installés:');
|
|
135
|
+
if (fs.existsSync(agentsDir)) {
|
|
136
|
+
const agents = fs.readdirSync(agentsDir)
|
|
137
|
+
.filter(f => f.endsWith('.md'))
|
|
138
|
+
.map(f => f.replace('.md', ''));
|
|
139
|
+
agents.forEach(agent => console.log(` - @${agent}`));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function setup() {
|
|
144
|
+
console.log('🚀 Installation de Claude Config Jeremy\n');
|
|
145
|
+
|
|
146
|
+
// Vérifier que Claude Code est installé
|
|
147
|
+
try {
|
|
148
|
+
execSync('which claude', { stdio: 'ignore' });
|
|
149
|
+
} catch {
|
|
150
|
+
console.error('⚠️ Claude Code n\'est pas installé.');
|
|
151
|
+
console.error(' Installe-le d\'abord: https://claude.ai/download');
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Backup
|
|
156
|
+
const backupDir = createBackup();
|
|
157
|
+
|
|
158
|
+
// Créer les dossiers
|
|
159
|
+
ensureDirectories();
|
|
160
|
+
|
|
161
|
+
// Copier les fichiers
|
|
162
|
+
copyDirectory(
|
|
163
|
+
path.join(SCRIPT_DIR, 'commands'),
|
|
164
|
+
path.join(CLAUDE_DIR, 'commands'),
|
|
165
|
+
'📝 Installation des commandes'
|
|
166
|
+
);
|
|
167
|
+
|
|
168
|
+
copyDirectory(
|
|
169
|
+
path.join(SCRIPT_DIR, 'agents'),
|
|
170
|
+
path.join(CLAUDE_DIR, 'agents'),
|
|
171
|
+
'🤖 Installation des agents'
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
copyDirectory(
|
|
175
|
+
path.join(SCRIPT_DIR, 'scripts'),
|
|
176
|
+
path.join(CLAUDE_DIR, 'scripts'),
|
|
177
|
+
'⚙️ Installation des scripts'
|
|
178
|
+
);
|
|
179
|
+
|
|
180
|
+
copyDirectory(
|
|
181
|
+
path.join(SCRIPT_DIR, 'song'),
|
|
182
|
+
path.join(CLAUDE_DIR, 'song'),
|
|
183
|
+
'🔔 Installation des sons'
|
|
184
|
+
);
|
|
185
|
+
|
|
186
|
+
// Merger settings
|
|
187
|
+
mergeSettings();
|
|
188
|
+
|
|
189
|
+
// Installer dépendances statusline
|
|
190
|
+
installStatuslineDeps();
|
|
191
|
+
|
|
192
|
+
// Afficher résumé
|
|
193
|
+
listInstalled();
|
|
194
|
+
|
|
195
|
+
console.log('\n✅ Installation terminée!\n');
|
|
196
|
+
console.log('💡 Teste avec: /liste-commande --exemples\n');
|
|
197
|
+
|
|
198
|
+
if (backupDir) {
|
|
199
|
+
console.log(`📁 Backup: ${backupDir}\n`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// CLI
|
|
204
|
+
const command = process.argv[2];
|
|
205
|
+
|
|
206
|
+
switch (command) {
|
|
207
|
+
case 'setup':
|
|
208
|
+
setup();
|
|
209
|
+
break;
|
|
210
|
+
default:
|
|
211
|
+
console.log('Usage: npx claude-config-jeremy setup');
|
|
212
|
+
process.exit(1);
|
|
213
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
allowed-tools: Bash(git :*)
|
|
3
|
+
description: Commit et push rapides avec messages minimaux et propres
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Tu es un outil d'automatisation de commits git. Crée des commits minimaux et propres pour un historique git ordonné.
|
|
7
|
+
|
|
8
|
+
## Workflow
|
|
9
|
+
|
|
10
|
+
1. **Stage**: `git add -A` pour stager tous les changements
|
|
11
|
+
2. **Analyser**: `git diff --cached --stat` pour voir ce qui a changé
|
|
12
|
+
3. **Commit**: Générer un message d'UNE SEULE LIGNE (max 50 caractères):
|
|
13
|
+
- `fix: [ce qui a été corrigé]`
|
|
14
|
+
- `feat: [ce qui a été ajouté]`
|
|
15
|
+
- `update: [ce qui a été modifié]`
|
|
16
|
+
- `refactor: [ce qui a été réorganisé]`
|
|
17
|
+
4. **Push**: `git push` immédiatement
|
|
18
|
+
|
|
19
|
+
## Règles pour les messages
|
|
20
|
+
|
|
21
|
+
- **UNE SEULE LIGNE** - pas de corps, pas de détails
|
|
22
|
+
- **Moins de 50 caractères** - sois concis
|
|
23
|
+
- **Pas de points** - perte d'espace
|
|
24
|
+
- **Présent** - "add" pas "added"
|
|
25
|
+
- **Minuscule après les deux-points** - `fix: typo` pas `fix: Typo`
|
|
26
|
+
|
|
27
|
+
## Exemples
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
feat: add user authentication
|
|
31
|
+
fix: resolve memory leak
|
|
32
|
+
update: improve error handling
|
|
33
|
+
refactor: simplify api routes
|
|
34
|
+
docs: update readme
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Exécution
|
|
38
|
+
|
|
39
|
+
- PAS de commandes interactives
|
|
40
|
+
- PAS de messages verbeux
|
|
41
|
+
- PAS de signatures "Generated with"
|
|
42
|
+
- Si pas de changements, quitter silencieusement
|
|
43
|
+
- Si le push échoue, rapporter l'erreur uniquement
|
|
44
|
+
|
|
45
|
+
## Priorité
|
|
46
|
+
|
|
47
|
+
Vitesse > Détails. Garder les commits atomiques et l'historique propre.
|