commit dfbcbf029b3d5b82b58857830176b2ab5a9b15aa Author: Zhongwei Li Date: Sat Nov 29 17:58:42 2025 +0800 Initial commit diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..9f70b6c --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "claude", + "description": "Plugin de base pour Claude Code avec commandes essentielles pour l'amélioration et la documentation", + "version": "1.0.0", + "author": { + "name": "Aurélien Tournayre", + "email": "aurelien.tournayre@gmail.com" + }, + "commands": [ + "./commands" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..b4e49fd --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# claude + +Plugin de base pour Claude Code avec commandes essentielles pour l'amélioration et la documentation diff --git a/commands/alias/add.md b/commands/alias/add.md new file mode 100644 index 0000000..874f31c --- /dev/null +++ b/commands/alias/add.md @@ -0,0 +1,103 @@ +--- +allowed-tools: + - SlashCommand + - Write + - Read + - Glob +description: Crée un alias de commande qui délègue à une autre slash command +argument-hint: +model: claude-sonnet-4-5-20250929 +--- + +# Générateur d'Alias de Slash Commands + +Créer un alias de slash command qui délègue l'exécution à une autre commande existante via l'outil SlashCommand. + +## Purpose +Permettre de créer des raccourcis (alias) vers des commandes existantes pour simplifier l'utilisation et éviter la duplication de code. + +## Variables +- ALIAS: Nom de l'alias (format slash-command, ex: `/mon-alias`) +- TARGET_COMMAND: Commande cible à exécuter (format slash-command, ex: `/git:status`) + +## Relevant Files +- `commands/` - Répertoire des commandes existantes +- `README.md` - Documentation du projet pour mise à jour + +## Workflow + +### Étape 1: Validation des Arguments +- Vérifier que 2 arguments ont été fournis (alias et commande cible) +- Valider le format de l'alias (doit commencer par `/`, format kebab-case) +- Valider le format de la commande cible (doit commencer par `/`) +- Vérifier que l'alias n'existe pas déjà (chercher dans `commands/`) +- Vérifier que la commande cible existe + +### Étape 2: Création du Fichier d'Alias +- Créer le répertoire `commands/alias/` s'il n'existe pas +- Générer le fichier avec la structure suivante : + ```markdown + --- + allowed-tools: + - SlashCommand + description: Alias vers [TARGET_COMMAND] + argument-hint: [arguments de la commande cible] + model: claude-haiku-4-5-20251001 + --- + + # [ALIAS] + + Alias vers `[TARGET_COMMAND]`. + + ## Usage + Cette commande délègue directement à `[TARGET_COMMAND]`. + + ## Workflow + - Exécuter la commande cible via SlashCommand + ``` + +### Étape 3: Exécution de la Commande Cible +- Utiliser l'outil SlashCommand pour exécuter TARGET_COMMAND +- Transmettre tous les arguments supplémentaires à la commande cible + +### Étape 4: Mise à Jour de la Documentation +- Ajouter l'alias dans la section "Commandes personnalisées" du README.md +- Inclure : + - Nom de l'alias + - Description + - Commande cible + - Usage + +### Étape 5: Rapport Final +- Confirmer la création de l'alias +- Afficher le chemin du fichier créé +- Rappeler la commande cible +- Calculer et afficher la durée totale + +## Report +``` +✅ Alias créé avec succès + +📁 Fichier : commands/alias/[nom-alias].md +🎯 Cible : [TARGET_COMMAND] +📝 Usage : /[alias] [arguments] +``` + +## Examples + +### Créer un alias pour git:status +```bash +/alias:add status /git:status +``` + +### Créer un alias pour doc:update +```bash +/alias:add doc /doc:update +``` + +## Best Practices +- Noms d'alias courts et mémorisables +- Éviter les conflits avec les commandes existantes +- Documenter clairement la commande cible +- Utiliser Haiku pour les alias (simple délégation) +- Transmettre tous les arguments à la commande cible diff --git a/commands/challenge.md b/commands/challenge.md new file mode 100644 index 0000000..866181d --- /dev/null +++ b/commands/challenge.md @@ -0,0 +1,104 @@ +--- +model: claude-haiku-4-5-20251001 +allowed-tools: [Read] +description: Évalue ma dernière réponse, donne une note sur 10 et propose des améliorations +argument-hint: "" +--- + +# Challenge - Auto-évaluation des réponses Claude + +Analyse critique de ma dernière réponse fournie et proposition d'une version améliorée. + +## Purpose +Permettre à Claude d'évaluer objectivement la qualité de sa dernière réponse et d'identifier les axes d'amélioration concrets. + +## Variables +- LAST_RESPONSE: Ma dernière réponse dans la conversation +- ORIGINAL_QUESTION: La question ou demande initiale de l'utilisateur +- EVALUATION_CRITERIA: Critères d'évaluation (clarté, pertinence, complétude, précision, format) + +## Relevant Files +- Historique de conversation (contexte automatique) + +## Workflow + +### 1. Identification du contexte +- Identifie la dernière question/demande de l'utilisateur +- Récupère ma dernière réponse complète +- Note les objectifs explicites et implicites de la demande + +### 2. Évaluation structurée +Évalue ma réponse selon ces critères (note /10 pour chaque) : + +**Pertinence** (/10) +- La réponse répond-elle directement à la question ? +- Y a-t-il des éléments hors sujet ou manquants ? + +**Clarté** (/10) +- Le message est-il facile à comprendre ? +- Le format est-il adapté (listes vs paragraphes) ? +- Les termes techniques sont-ils expliqués si nécessaire ? + +**Complétude** (/10) +- Tous les aspects de la demande sont-ils couverts ? +- Y a-t-il des informations importantes omises ? + +**Précision** (/10) +- Les informations sont-elles exactes ? +- Y a-t-il des approximations ou suppositions ? + +**Format et style** (/10) +- Le ton est-il approprié (casual, pas trop formel) ? +- Le format respecte-t-il les préférences (listes à puces) ? +- Y a-t-il des phrases trop enthousiastes à éviter ? + +### 3. Calcul de la note globale +- Note finale = moyenne des 5 critères +- Identification du critère le plus faible +- Identification des points forts + +### 4. Proposition d'amélioration +- Liste concrète de ce qui pourrait être amélioré +- Proposition d'une version améliorée si la note < 8/10 +- Focus sur les critères les plus faibles + +## Report + +### Structure du rapport d'évaluation + +**📊 Évaluation de ma dernière réponse** + +**Question initiale :** +[Rappel de la question] + +**Ma réponse :** +[Résumé bref de ce que j'ai fourni] + +**Scores détaillés :** +- 🎯 Pertinence : X/10 - [justification courte] +- 💡 Clarté : X/10 - [justification courte] +- ✅ Complétude : X/10 - [justification courte] +- 🔍 Précision : X/10 - [justification courte] +- 📝 Format/Style : X/10 - [justification courte] + +**Note globale : X/10** + +**Points forts :** +- [Point fort 1] +- [Point fort 2] + +**Axes d'amélioration :** +- [Amélioration 1] +- [Amélioration 2] +- [Amélioration 3] + +**Version améliorée (si note < 8/10) :** +[Nouvelle version de la réponse intégrant les améliorations] + +## Best Practices +- Être honnête et autocritique sans tomber dans l'auto-flagellation +- Identifier des améliorations concrètes et actionnables +- Ne pas hésiter à reconnaître quand la réponse initiale était déjà bonne +- Expliquer le raisonnement derrière chaque note +- Proposer une version améliorée uniquement si pertinent +- Garder le rapport concis et structuré en listes à puces diff --git a/commands/doc/load.md b/commands/doc/load.md new file mode 100644 index 0000000..4373ad1 --- /dev/null +++ b/commands/doc/load.md @@ -0,0 +1,5 @@ +--- +description: Charge la documentation Claude Code depuis docs.claude.com dans des fichiers markdown locaux +--- + +You must use the Skill tool to invoke the "doc-loader" skill with "claude" as argument. diff --git a/commands/doc/question.md b/commands/doc/question.md new file mode 100644 index 0000000..4329855 --- /dev/null +++ b/commands/doc/question.md @@ -0,0 +1,155 @@ +--- +allowed-tools: [Read, Grep, Glob, Bash] +description: Interroger la documentation Claude Code locale pour répondre à une question +argument-hint: +model: claude-sonnet-4-5-20250929 +--- + +# Interrogation de la Documentation Claude Code + +Répondre à une question technique sur Claude Code en utilisant la documentation locale présente dans `docs/claude/`. + +## Purpose +Fournir des réponses précises et contextualisées aux questions Claude Code en s'appuyant sur la documentation officielle stockée localement, sans nécessiter d'accès web. + +## Variables +- QUESTION: La question technique posée par l'utilisateur +- DOCS_PATH: `docs/claude/` - Chemin vers la documentation locale +- SEARCH_KEYWORDS: Mots-clés extraits de la question pour la recherche + +## Relevant Files +- `docs/claude/` - Documentation Claude Code locale +- `docs/claude/README.md` - Index de la documentation chargée + +## Workflow + +### Étape 1: Vérification de la documentation locale +- Vérifier l'existence de `docs/claude/` +- Si le répertoire n'existe pas ou est vide : + - Informer l'utilisateur + - Suggérer d'exécuter `/claude:doc:load` pour charger la documentation + - Arrêter l'exécution avec message explicite +- Si la documentation existe : + - Lire `docs/claude/README.md` pour connaître le contenu disponible + - Continuer vers l'étape 2 + +### Étape 2: Analyse de la question +- Extraire les mots-clés principaux de QUESTION +- Identifier le contexte technique (composant, feature, concept) +- Exemples de mots-clés : + - "slash command" → chercher dans commands.md, custom-commands.md + - "agent" → chercher dans agents.md, subagents.md + - "hook" → chercher dans hooks.md, lifecycle.md + - "tool" → chercher dans tools.md, permissions.md + +### Étape 3: Recherche dans la documentation +- Utiliser Grep pour rechercher les mots-clés dans `docs/claude/` +- Paramètres de recherche : + - Case insensitive (`-i`) + - Afficher le contexte (3 lignes avant/après avec `-C 3`) + - Limiter les résultats pertinents +- Lire les fichiers markdown pertinents identifiés +- Si aucun résultat : + - Élargir la recherche avec des termes associés + - Suggérer des termes de recherche alternatifs + +### Étape 4: Analyse et synthèse +- Extraire les sections pertinentes de la documentation +- Organiser les informations par ordre de pertinence +- Identifier : + - Concept principal + - Exemples de code + - Bonnes pratiques + - Warnings et notes importantes + - Liens vers documentation connexe + +### Étape 5: Construction de la réponse +- Réponse structurée en format bullet points +- Inclure : + - Explication concise du concept + - Exemples de code si disponibles + - Références aux fichiers de documentation sources + - Liens internes vers sections connexes +- Format markdown enrichi avec : + - Blocs de code Markdown/Python/Shell selon contexte + - Sections info/warning si pertinent + - Liste hiérarchique pour les étapes + +### Étape 6: Rapport final avec timing +- Présenter la réponse formatée +- Calculer et afficher la durée totale +- Afficher le timestamp de fin + +## Report Format +```markdown +## 📚 Réponse : [Sujet principal] + +### Concept +- Explication principale +- Points clés + +### Exemple de Code +[Bloc de code si disponible] + +### Documentation de Référence +- 📄 `docs/claude/[fichier].md` - [Section] +- 📄 Autres fichiers pertinents + +### Voir Aussi +- Concepts connexes +- Autres commandes utiles +``` + +## Error Handling +- **Documentation manquante** : Message clair + suggestion `/claude:doc:load` +- **Aucun résultat trouvé** : Suggérer termes alternatifs ou reformulation +- **Question trop vague** : Demander précisions avec exemples +- **Fichiers corrompus** : Signaler et suggérer rechargement + +## Examples + +### Exemple 1 - Question simple +```bash +/claude:doc:question "Comment créer une slash command ?" +``` +**Résultat attendu** : +- Recherche dans commands.md, custom-commands.md +- Format de fichier de commande +- Exemples de frontmatter YAML +- Références aux fichiers sources + +### Exemple 2 - Question sur composant +```bash +/claude:doc:question "Comment utiliser les hooks ?" +``` +**Résultat attendu** : +- Recherche hooks.md, lifecycle.md +- Types de hooks disponibles +- Exemples Python +- Cas d'usage + +### Exemple 3 - Question avancée +```bash +/claude:doc:question "Comment créer un agent personnalisé ?" +``` +**Résultat attendu** : +- Recherche agents.md, custom-agents.md +- Configuration d'agent +- Cas d'usage appropriés +- Exemples complets + +## Best Practices +- Toujours vérifier la présence de la documentation avant recherche +- Privilégier la précision sur l'exhaustivité +- Citer les sources (fichiers markdown consultés) +- Fournir des exemples de code concrets +- Suggérer des commandes connexes si pertinent +- Garder les réponses concises mais complètes +- **Afficher le timing au début et à la fin** +- **Calculer précisément la durée d'exécution** + +## Notes +- Cette commande fonctionne 100% offline une fois la documentation chargée +- La documentation doit être rafraîchie périodiquement avec `/claude:doc:load` +- Supporte toutes les versions de Claude Code présentes dans `docs/claude/` +- Peut être étendue pour supporter d'autres frameworks avec le même pattern diff --git a/commands/make/command.md b/commands/make/command.md new file mode 100644 index 0000000..cf2c64d --- /dev/null +++ b/commands/make/command.md @@ -0,0 +1,139 @@ +--- +model: claude-sonnet-4-5-20250929 +allowed-tools: Bash, Write, Read, Glob, Edit, MultiEdit +description: Générateur de slash commands pour Claude Code avec workflow structuré et bonnes pratiques +argument-hint: [nom-commande] [description] [--tools=outil1,outil2] [--category=categorie] +--- + +# Générateur de Slash Commands + +Créer une nouvelle slash command Claude Code : $ARGUMENTS + +## Purpose +Générer des slash commands Claude Code bien structurées, documentées et fonctionnelles suivant les conventions du projet. + +## Relevant files +- @docs/COMMANDS.md +- @docs/MODELS.md + +## Variables +- COMMAND_NAME: Nom de la commande (format kebab-case) +- DESCRIPTION: Description courte et claire +- TOOLS: Outils autorisés (défaut: Bash,Read,Write,Edit) +- CATEGORY: Catégorie (git, doc, build, sessions, etc.) +- ARGUMENTS: Format des arguments de la commande + +## Instructions +Vous êtes un générateur expert de slash commands. Créez des commandes : +- Focalisées sur un objectif unique +- Bien documentées avec workflow clair +- Respectant les conventions du projet +- Incluant les permissions d'outils appropriées +- Avec gestion d'erreurs et validation + +## Relevant Files +- `_templates/prompt/README.md` - Template de base +- `commands/` - Exemples de commandes existantes +- `README.md` - Documentation du projet + +## Workflow + +### Étape 0: Initialisation du Timing +- Cette commande génère d'autres commandes avec section timing +- Mais elle-même n'utilise pas de timing dans son workflow +- Les commandes générées incluront la section timing automatiquement + +### 1. Analyse des arguments +- Parse COMMAND_NAME, DESCRIPTION, TOOLS, CATEGORY +- Valide le nom (format kebab-case, pas de caractères spéciaux) +- Vérifie l'unicité du nom de commande +- Détermine la catégorie automatiquement si non fournie + +### 2. Génération de la structure +- Crée le frontmatter YAML avec métadonnées +- Génère les sections standard adaptées au contexte +- **LIT le template depuis `_templates/timing-section.md` et l'insère (Read tool)** +- **AJOUTE "Étape 0: Initialisation du Timing" en premier dans le Workflow** +- Inclut les outils nécessaires selon la catégorie +- Ajoute des exemples d'utilisation pertinents + +### 3. Validation et création +- Vérifie la cohérence et syntaxe +- Crée le répertoire si nécessaire +- Sauvegarde dans `commands/[category]/[command-name].md` +- Confirme la création avec résumé + +### 4. Documentation +- Mets à jour "Structure du projet" dans @README.md +- Ajoutes la description de la commande dans @README.md + +## Template Structure +```markdown +--- +allowed-tools: [TOOLS] +description: [DESCRIPTION] +argument-hint: [ARGUMENTS] +--- + +# [TITLE] + +[Instructions spécifiques pour Claude] + +## Variables +[Variables utilisées dans la commande] + +## Relevant Files +[Fichiers pertinents pour la commande] + +[INSÉRER ICI le contenu de _templates/timing-section.md via Read] + +## Workflow + +### Étape 1: [Première vraie étape de la commande] +- [Étapes logiques d'exécution] + +### Étape N: Rapport Final +- Afficher le rapport + +## Report +``` +[Contenu du rapport] +``` + +**IMPORTANT** : Ne PAS copier-coller la section Timing manuellement. +Utiliser `Read` pour lire `_templates/timing-section.md` et l'insérer. + +## Examples + +### Commande Git +```bash +/cc:make:command git-hotfix "Création de hotfix avec workflow Git" --tools=Bash,Edit --category=git +``` + +### Commande Build +```bash +/cc:make:command deploy-staging "Déploiement en staging" --tools=Bash,Read --category=build "[version]" +``` + +## Report +- Crée le fichier dans `commands/[category]/[command-name].md` +- Affiche la structure générée +- Confirme la création avec chemin complet +- Suggère les étapes suivantes (test, documentation) + +## Best Practices +- Nom en kebab-case uniquement +- Description concise mais claire +- Outils minimaux nécessaires +- Workflow en étapes logiques +- Format de rapport structuré +- **Timing : TOUJOURS lire depuis `_templates/timing-section.md` (Read tool)** +- **Ne JAMAIS copier-coller manuellement la section Timing** +- **Étape 0 du workflow = initialisation timing** + +## Maintenance du Template Timing + +Si tu dois modifier la section Timing : +1. Éditer **uniquement** `_templates/timing-section.md` +2. Exécuter `./scripts/sync-timing.sh` pour synchroniser les 43 commandes +3. Ne **JAMAIS** éditer la section Timing directement dans une commande diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..c923d8c --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,61 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:atournayre/claude-marketplace:claude", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "c53d584ae16fd35eee6155e762924df73c2588e7", + "treeHash": "5b83aa56fa105bdb74efc568e496f95cff724bc5b1ca9cb7df701052a7040882", + "generatedAt": "2025-11-28T10:13:59.122411Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "claude", + "description": "Plugin de base pour Claude Code avec commandes essentielles pour l'amélioration et la documentation", + "version": "1.0.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "8ebea70a6a61001f856cb9cf93df15207d808d2acb6d417e0b84c16bff0cf628" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "5d1ee6bb1d19e363961e9957f432a1338fc24014da9424376c455fc9523195ba" + }, + { + "path": "commands/challenge.md", + "sha256": "36c8f996d7ee6f0efe0f37e0cb2b83cbf619dee5ec6ad96d74107a8944a699f4" + }, + { + "path": "commands/alias/add.md", + "sha256": "963430ae80c8faf4b64134cad16e6053515b4d422ba74b96b7a2cef70042c8a5" + }, + { + "path": "commands/make/command.md", + "sha256": "a83b8750147ea52affe640e1151a869b23d1ab8cfa77eeecbaac2eceac4322fd" + }, + { + "path": "commands/doc/load.md", + "sha256": "4ae9ced4252f46834d59ee98ed2d0dae445bed3840c202f2194ebb135f5e36f8" + }, + { + "path": "commands/doc/question.md", + "sha256": "ddbf4f828f8ea156fd9ee02fbde0a5b2487e36284dc718c9293d1cff8f81dd37" + } + ], + "dirSha256": "5b83aa56fa105bdb74efc568e496f95cff724bc5b1ca9cb7df701052a7040882" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file