| name | bump |
| description | Automatise les mises à jour de version des plugins avec détection automatique du type de version |
| model | haiku |
| allowed-tools | ["Read","Edit","Bash","Glob","Grep","TaskCreate","TaskUpdate","TaskList","AskUserQuestion"] |
| version | 2.0.0 |
| license | MIT |
Bump Version Plugin
Mettre à jour automatiquement la version d'un ou plusieurs plugins avec détection automatique du type de version.
IMPORTANT : Task Management System obligatoire
RÈGLE CRITIQUE : Chaque étape DOIT être trackée via TaskCreate/TaskUpdate.
- Créer la tâche AVANT de commencer l'étape
- Marquer
in_progress au début
- Marquer
completed UNIQUEMENT quand l'étape est 100% terminée
- NE JAMAIS sauter une étape
RÈGLE ANTI-OUBLI : Vérification avant completed
INTERDICTION de marquer une tâche completed sans avoir :
- Exécuté CHAQUE sous-étape listée (4.1, 4.2, 4.3... pas juste certaines)
- Vérifié la sous-checklist
🔒 AVANT DE MARQUER COMPLETED de l'étape
- Lu les fichiers cibles pour confirmer que la modification est bien faite
Si une sous-étape semble "non applicable" : tu DOIS quand même lire le fichier cible pour le vérifier. Ne JAMAIS supposer qu'une étape est inapplicable sans preuve.
Instructions à Exécuter
Étape 1 : Créer TOUTES les tâches du workflow
OBLIGATOIRE : Utilise TaskCreate pour créer ces 6 tâches dans cet ordre exact :
TaskCreate #1: "Détecter les plugins modifiés"
- activeForm: "Detecting modified plugins"
- description: "git diff pour identifier plugins avec modifications"
TaskCreate #2: "Sélectionner les plugins à bumper"
- activeForm: "Selecting plugins to bump"
- description: "AskUserQuestion pour sélection utilisateur"
TaskCreate #3: "Mettre à jour fichiers du plugin"
- activeForm: "Updating plugin files"
- description: "plugin.json + CHANGELOG.md + README.md du plugin"
TaskCreate #4: "Mettre à jour fichiers du marketplace"
- activeForm: "Updating marketplace files"
- description: "README.md global + CHANGELOG.md global + marketplace.json + PR template"
TaskCreate #5: "Mettre à jour dépendances et documentation"
- activeForm: "Updating dependencies and docs"
- description: "DEPENDENCIES.json + rebuild VitePress (npm run build)"
TaskCreate #6: "Vérifier et afficher résumé"
- activeForm: "Verifying final result"
- description: "Lister tous les fichiers modifiés + prochaine étape"
Après création : Affiche TaskList pour confirmer que les 6 tâches existent.
Étape 2 : Détecter les plugins modifiés
TaskUpdate : Tâche #1 → in_progress
Exécute en parallèle :
git diff --name-only HEAD
git diff --staged --name-only
Traitement :
- Combine les deux listes
- Filtre pour extraire les noms de plugins (premier répertoire)
- Ignore :
.claude/, fichiers à la racine
- Compte les fichiers par plugin
TaskUpdate : Tâche #1 → completed
Étape 3 : Sélection interactive
TaskUpdate : Tâche #2 → in_progress
Utilise AskUserQuestion :
{
"questions": [{
"question": "Quels plugins veux-tu bumper ?",
"header": "Plugins",
"multiSelect": true,
"options": [
{"label": "Tous les plugins modifiés (N plugins) (Recommended)", "description": "Bumper automatiquement tous"},
{"label": "{plugin} (N fichiers)", "description": "Version actuelle : X.Y.Z"}
]
}]
}
Vérification dépréciation : Pour chaque plugin sélectionné, lis {plugin}/.claude-plugin/plugin.json et vérifie si "deprecated": true est présent. Si oui, afficher un avertissement :
⚠️ {plugin} est déprécié (remplacé par : {replaced_by}). Continuer quand même ? (bump patch uniquement recommandé)
TaskUpdate : Tâche #2 → completed
Étape 4 : Mettre à jour fichiers du plugin
TaskUpdate : Tâche #3 → in_progress
Pour CHAQUE plugin sélectionné, dans cet ordre :
4.1 Détecter le type de version
git diff --staged --name-only --diff-filter=A | grep "^{plugin}/"
Règles :
- Nouveaux agents (
agents/*.md) → MINOR
- Nouveaux skills (
skills/*/) → MINOR
- Nouveau plugin (pas dans marketplace.json) → MINOR
- Sinon → PATCH
4.2 Calculer la nouvelle version
Lis {plugin}/.claude-plugin/plugin.json et calcule :
- PATCH :
1.2.3 → 1.2.4
- MINOR :
1.2.3 → 1.3.0
4.3 Analyser les changements
git diff {plugin}/
git diff --staged {plugin}/
Catégorise en : Added, Changed, Fixed, Removed
4.4 Mettre à jour plugin.json
"version": "NOUVELLE_VERSION"
4.5 Mettre à jour CHANGELOG du plugin
Ajoute en haut (après le titre) :
## [NOUVELLE_VERSION] - YYYY-MM-DD
### Added
- ...
### Changed
- ...
4.6 Mettre à jour README du plugin (si nouveaux agents/skills)
OBLIGATOIRE si MINOR : Lis {plugin}/README.md avec Read et mets à jour :
- Ajouter la nouvelle commande/skill dans le tableau "Slash Commands" ou équivalent
- Ajouter les nouveaux agents dans la section agents si elle existe
- Mettre à jour la structure du plugin (arborescence
tree)
- Ajouter une section usage/exemples pour les nouvelles fonctionnalités
Si le README ne contient pas de section pertinente, en ajouter une.
🔒 AVANT DE MARQUER COMPLETED - Vérifie ces points :
TaskUpdate : Tâche #3 → completed
Étape 5 : Mettre à jour fichiers du marketplace
TaskUpdate : Tâche #4 → in_progress
5.1 Mettre à jour README.md global
OBLIGATOIRE : Lis README.md avec Read. Trouve le tableau des plugins et mets à jour la ligne du plugin :
| 📝 **{Plugin}** | NOUVELLE_VERSION | Description mise à jour | [README](...) |
5.2 Mettre à jour CHANGELOG.md global
OBLIGATOIRE : Lis CHANGELOG.md avec Read. Vérifie si section du jour existe :
## [YYYY.MM.DD] - YYYY-MM-DD
Si non, crée-la après ## [Unreleased].
Ajoute :
### Plugins Updated
- **{plugin} vNOUVELLE_VERSION** - Résumé des changements
- Détail changement 1
- Détail changement 2
- Dépôt : [{plugin}/CHANGELOG.md]({plugin}/CHANGELOG.md)
5.3 Mettre à jour marketplace.json (si nouveau plugin)
OBLIGATOIRE : Lis .claude-plugin/marketplace.json avec Read. Si le plugin n'existe pas :
{
"name": "{plugin}",
"source": "./{plugin}",
"description": "..."
}
Si le plugin existe déjà, vérifier que sa description est à jour.
5.4 Synchroniser README.md et marketplace.json
Vérifie la cohérence :
- Plugins dans README mais pas marketplace → ajouter
- Plugins dans marketplace mais pas README → ajouter
- Ordre alphabétique dans les deux fichiers
5.5 Mettre à jour la documentation .env.claude (si applicable)
Condition : Vérifie si les fichiers modifiés du plugin contiennent des références à .env.claude :
git diff {plugin}/ | grep -i "env\.claude\|MAIN_BRANCH\|WORKTREE_DIR\|REPO\|PROJECT"
Si des variables .env.claude sont ajoutées ou modifiées dans les skills :
- Lis
docs/guide/env-claude.md avec Read
- Vérifie que chaque variable utilisée dans les skills modifiés est documentée dans la page
- Pour chaque variable manquante ou obsolète :
- Ajouter la variable dans la section "Variables disponibles" avec le même format que les existantes
- Ajouter le skill dans le tableau "Skills qui l'utilisent" de la variable
- Vérifier que les exemples sont cohérents avec les changements
Si aucune référence .env.claude détectée : passer cette sous-étape.
5.6 Mettre à jour les badges de dépréciation dans VitePress
Condition : Exécuter si {plugin}/.claude-plugin/plugin.json contient "deprecated": true.
5.6.1 Sidebar (docs/.vitepress/config.ts) :
Lis le fichier. La sidebar est définie dans la constante pluginsSidebar en haut du fichier. Trouve l'item correspondant au plugin (cherche link: '/plugins/{plugin}' dans la constante). Ajoute le champ badge si absent :
{ text: '{Plugin}', link: '/plugins/{plugin}', badge: { text: 'Déprécié', type: 'danger' } }
5.6.2 Page doc (docs/plugins/{plugin}.md) :
⚠️ Ne pas modifier manuellement ce fichier. Il est généré automatiquement par scripts/generate-docs.ts lors du rebuild VitePress (étape 6.2). Le badge <Badge type="danger" text="Déprécié" /> et le callout :::warning sont ajoutés automatiquement si deprecated: true est présent dans plugin.json.
Si aucun deprecated: true détecté : passer cette sous-étape.
5.7 Mettre à jour le template PR
Met à jour .github/PULL_REQUEST_TEMPLATE/default.md avec la liste des plugins :
- Liste tous les dossiers contenant un
plugin.json :
find . -name "plugin.json" -path "*/.claude-plugin/*" | sed 's|^\./||' | sed 's|/.claude-plugin/plugin.json||' | grep -v "^templates/" | sort
- Génère la section "Plugin(s) concerné(s)" avec checkboxes :
## Plugin(s) concerné(s)
<!-- Coche les plugins impactés -->
- [ ] {plugin1}
- [ ] {plugin2}
...
- Remplace la section existante dans le template (entre
## Plugin(s) concerné(s) et ## Checklist)
🔒 AVANT DE MARQUER COMPLETED - Vérifie ces points :
TaskUpdate : Tâche #4 → completed
Étape 6 : Mettre à jour dépendances et documentation
TaskUpdate : Tâche #5 → in_progress
6.1 DEPENDENCIES.json
Si {plugin}/DEPENDENCIES.json n'existe pas, scanner et créer :
{
"version": "1.0",
"critical": {},
"optional": {},
"packages": {"npm": {}}
}
6.2 Rebuild VitePress
OBLIGATOIRE - TOUJOURS EXÉCUTER, SANS EXCEPTION :
cd docs && npm run build
Vérifie que la commande s'exécute sans erreur. Si erreur, corriger avant de continuer.
6.3 Vérifier les fichiers générés
git status --short docs/
Les fichiers docs/plugins/{plugin}.md et docs/commands/index.md doivent être modifiés.
Si nouveaux agents ajoutés, docs/agents/index.md doit aussi être modifié.
Si nouveaux hooks ajoutés, docs/hooks/index.md doit aussi être modifié.
🔒 AVANT DE MARQUER COMPLETED - Vérifie ces points :
TaskUpdate : Tâche #5 → completed
Étape 7 : Vérification et résumé final
TaskUpdate : Tâche #6 → in_progress
Affiche le résumé complet :
✅ Plugin {plugin} : v{OLD} → v{NEW} ({TYPE})
Type : {PATCH|MINOR}
Raison : {description}
Fichiers modifiés :
✓ {plugin}/.claude-plugin/plugin.json
✓ {plugin}/CHANGELOG.md
✓ {plugin}/README.md (si applicable)
✓ README.md
✓ CHANGELOG.md
✓ .claude-plugin/marketplace.json (si nouveau)
✓ .github/PULL_REQUEST_TEMPLATE/default.md
✓ docs/plugins/{plugin}.md
✓ docs/commands/index.md
✓ docs/agents/index.md (si nouveaux agents)
✓ docs/hooks/index.md (si nouveaux hooks)
Prochaine étape : /git:commit
TaskUpdate : Tâche #6 → completed
Checklist de validation finale
OBLIGATOIRE : Avant de terminer, vérifie chaque fichier individuellement avec git diff --name-only et confirme que TOUS ces fichiers apparaissent dans la liste des modifiés :
Fichiers du plugin (par plugin bumpé)
Fichiers du marketplace (toujours)
Documentation générée (toujours)
Tâches
Si un fichier manque dans git diff --name-only, STOP : tu as oublié une étape.
Règles de versioning
- MINOR (X.Y.0 → X.Y+1.0) : Nouveaux agents, skills, ou nouveau plugin
- PATCH (X.Y.Z → X.Y.Z+1) : Modifications, corrections, refactoring, documentation
Relevant Files
{plugin}/.claude-plugin/plugin.json
{plugin}/CHANGELOG.md
{plugin}/README.md
README.md
CHANGELOG.md
.claude-plugin/marketplace.json
{plugin}/DEPENDENCIES.json
docs/plugins/{plugin}.md
docs/commands/index.md
docs/guide/env-claude.md
.github/PULL_REQUEST_TEMPLATE/default.md