magic-slash - /release
Tu es un assistant qui prepare les releases du projet Magic Slash en mettant a jour tous les fichiers contenant des references de version.
Ce skill est uniquement pour le developpement interne du projet Magic Slash, pas pour la distribution.
Regle importante : interactions utilisateur
Quand tu poses une question ou demandes une confirmation a l'utilisateur, utilise toujours l'outil AskUserQuestion et attends sa reponse avant de continuer. Sans cela, l'utilisateur voit la question defiler et n'a pas le temps de repondre, ce qui rend le processus de release inutilisable de maniere interactive.
Etape 1 : Obtenir et valider le numero de version
1.1 : Recuperer la version demandee
Si un argument est fourni ($ARGUMENTS), utilise-le comme nouvelle version.
Sinon, utilise AskUserQuestion pour demander le numero de version souhaite.
1.2 : Recuperer la version actuelle
Lis le fichier package.json a la racine du projet avec l'outil Read et recupere la valeur du champ version.
Stocke cette valeur comme VERSION_ACTUELLE.
1.3 : Valider le format de version
Le numero de version doit respecter le format semver : X.Y.Z ou X, Y et Z sont des entiers positifs.
Regex de validation : ^[0-9]+\.[0-9]+\.[0-9]+$
Si le format est invalide :
- Utilise
AskUserQuestionpour signaler l'erreur et demander une version valide.
1.4 : Verifier la coherence de version
Compare la nouvelle version avec la version actuelle.
Si la nouvelle version est inferieure ou egale a la version actuelle :
Utilise AskUserQuestion avec le message suivant :
La version demandee ({NOUVELLE_VERSION}) est inferieure ou egale a la version actuelle ({VERSION_ACTUELLE}).
Voulez-vous continuer quand meme ? (oui/non)
Si l'utilisateur refuse, arrete le processus.
Etape 2 : Mettre a jour les fichiers package.json
2.1 : package.json (racine)
Mets a jour la version dans /package.json :
"version": "X.Y.Z"
2.2 : desktop/package.json
Mets a jour la version dans /desktop/package.json :
"version": "X.Y.Z"
Affiche une confirmation pour chaque fichier mis a jour.
Etape 3 : Mettre a jour la documentation
3.1 : README.md
Cherche la ligne contenant "version": dans le bloc de configuration JSON du README et mets-la a jour :
"version": "X.Y.Z"
3.2 : docs/documentation.html
Cherche les 2 occurrences de "version": dans les blocs <pre> de la documentation et mets-les a jour :
"version": "X.Y.Z"
Affiche une confirmation pour chaque fichier mis a jour.
Etape 4 : Mettre a jour les skills et l'interface desktop
4.1 : Fichiers SKILL.md (7 fichiers)
Mets a jour le titre de version dans les 7 fichiers de skills :
skills/magic-start/SKILL.mdskills/magic-continue/SKILL.mdskills/magic-commit/SKILL.mdskills/magic-pr/SKILL.mdskills/magic-review/SKILL.mdskills/magic-resolve/SKILL.mdskills/magic-done/SKILL.md
Dans chaque fichier, cherche le titre avec un pattern regex generique (pour eviter les desynchronisations de version) :
# magic-slash v[0-9]+\.[0-9]+\.[0-9]+ - /nom-du-skill
Remplace par :
# magic-slash vX.Y.Z - /nom-du-skill
IMPORTANT : Ne cherche PAS la version actuelle (VERSION_ACTUELLE) dans ces fichiers. Utilise toujours le pattern regex generique ci-dessus pour trouver la ligne, car un fichier peut avoir rate une mise a jour precedente et contenir une version differente.
4.2 : desktop/src/renderer/components/Sidebar.tsx
Cherche le <span> affichant la version dans la sidebar (pattern <span className="opacity-60">v) et mets-le a jour :
<span className="opacity-60">vX.Y.Z</span>
Affiche une confirmation pour chaque fichier mis a jour.
Etape 5 : Mettre a jour le script d'installation
5.1 : install/install.sh
Cherche la ligne contenant le fallback de version dans la commande curl/jq (pattern .tag_name // "v) et remplace la valeur par defaut.
La ligne ressemble a :
CURRENT_VERSION=$(curl -s ... | jq -r '.tag_name // "v0.X.Y"' | sed 's/^v//')
Remplace "v0.X.Y" par "v{NOUVELLE_VERSION}".
Affiche une confirmation.
Etape 6 : Mettre a jour le CHANGELOG.md
6.1 : Creer une nouvelle section
Ajoute une nouvelle section en haut du changelog (apres l'entete), avec le format suivant :
## [X.Y.Z] - YYYY-MM-DD
### Added
-
### Changed
-
### Fixed
-
Utilise la date du jour au format YYYY-MM-DD.
6.2 : Ajouter le lien de release
Ajoute un nouveau lien en bas du fichier, juste apres les autres liens :
[X.Y.Z]: https://github.com/xrequillart/magic-slash/releases/tag/vX.Y.Z
Assure-toi que le nouveau lien est ajoute AVANT les liens existants (le plus recent en premier dans la liste).
6.3 : Demander les changements
Apres avoir cree la structure de la nouvelle section, utilise AskUserQuestion pour demander :
La section pour la version X.Y.Z a ete creee dans CHANGELOG.md.
Voulez-vous documenter les changements maintenant ?
- Repondez 'oui' pour decrire les changements
- Repondez 'non' pour laisser les placeholders (vous pourrez les remplir plus tard)
Si l'utilisateur repond 'oui', utilise AskUserQuestion pour lui demander de decrire ses changements en une seule reponse, organisee en 3 categories : Added (nouvelles fonctionnalites), Changed (modifications), Fixed (corrections). Mets ensuite a jour le CHANGELOG en consequence.
Etape 7 : Verification et resume
7.1 : Verifier les modifications avec grep
CRITIQUE : Cette etape est obligatoire. Tu dois verifier que CHAQUE fichier contient bien la nouvelle version.
Execute la commande suivante pour verifier que tous les fichiers ont ete mis a jour :
echo "=== Verification de la version X.Y.Z ===" && \
ERRORS=0 && \
for f in package.json desktop/package.json; do
if grep -q "\"version\": \"X.Y.Z\"" "$f"; then
echo " OK $f"
else
echo " ERREUR $f - version X.Y.Z NON trouvee"
ERRORS=$((ERRORS+1))
fi
done && \
for f in skills/magic-start/SKILL.md skills/magic-continue/SKILL.md skills/magic-commit/SKILL.md skills/magic-pr/SKILL.md skills/magic-review/SKILL.md skills/magic-resolve/SKILL.md skills/magic-done/SKILL.md; do
if grep -q "magic-slash vX.Y.Z" "$f"; then
echo " OK $f"
else
echo " ERREUR $f - version X.Y.Z NON trouvee"
ERRORS=$((ERRORS+1))
fi
done && \
if grep -q "vX.Y.Z" desktop/src/renderer/components/Sidebar.tsx; then
echo " OK desktop/src/renderer/components/Sidebar.tsx"
else
echo " ERREUR desktop/src/renderer/components/Sidebar.tsx - version X.Y.Z NON trouvee"
ERRORS=$((ERRORS+1))
fi && \
if grep -q "vX.Y.Z" install/install.sh; then
echo " OK install/install.sh"
else
echo " ERREUR install/install.sh - version X.Y.Z NON trouvee"
ERRORS=$((ERRORS+1))
fi && \
echo "=== $ERRORS erreur(s) detectee(s) ==="
Si des erreurs sont detectees : corrige immediatement les fichiers concernes et relance la verification jusqu'a ce que toutes les verifications passent (0 erreurs).
7.2 : Afficher le resume
Affiche un resume de tous les fichiers modifies :
Resume des modifications pour la version X.Y.Z :
package.json {VERSION_ACTUELLE} -> X.Y.Z
desktop/package.json {VERSION_ACTUELLE} -> X.Y.Z
README.md {VERSION_ACTUELLE} -> X.Y.Z
docs/documentation.html {VERSION_ACTUELLE} -> X.Y.Z (2 occurrences)
skills/magic-start/SKILL.md v{VERSION_ACTUELLE} -> vX.Y.Z
skills/magic-continue/SKILL.md v{VERSION_ACTUELLE} -> vX.Y.Z
skills/magic-commit/SKILL.md v{VERSION_ACTUELLE} -> vX.Y.Z
skills/magic-pr/SKILL.md v{VERSION_ACTUELLE} -> vX.Y.Z
skills/magic-review/SKILL.md v{VERSION_ACTUELLE} -> vX.Y.Z
skills/magic-resolve/SKILL.md v{VERSION_ACTUELLE} -> vX.Y.Z
skills/magic-done/SKILL.md v{VERSION_ACTUELLE} -> vX.Y.Z
desktop/src/renderer/components/Sidebar.tsx v{VERSION_ACTUELLE} -> vX.Y.Z
install/install.sh v{VERSION_ACTUELLE} -> vX.Y.Z
CHANGELOG.md Nouvelle section ajoutee
7.3 : Rappeler les etapes manuelles
Prochaines etapes manuelles :
1. Verifiez les modifications :
git diff
2. Creez le commit de release :
git add -A && git commit -m "chore(release): bump version to X.Y.Z"
3. Creez le tag :
git tag vX.Y.Z
4. Poussez les modifications :
git push origin main --tags
5. Creez la release sur GitHub :
gh release create vX.Y.Z --title "vX.Y.Z" --notes "See CHANGELOG.md"
Gestion des erreurs
Fichier non trouve
Si un fichier a mettre a jour n'est pas trouve :
- Affiche un avertissement :
Fichier non trouve : {chemin} - Continue avec les autres fichiers
- Mentionne le fichier manquant dans le resume final
Pattern non trouve
Si le pattern de version n'est pas trouve dans un fichier :
- Affiche un avertissement :
Pattern de version non trouve dans : {chemin} - Continue avec les autres fichiers
- Mentionne le probleme dans le resume final
Erreur de mise a jour
Si une mise a jour echoue :
- Affiche une erreur :
Echec de la mise a jour de : {chemin} - Continue avec les autres fichiers
- Mentionne l'erreur dans le resume final
Converted and distributed by TomeVault — claim your Tome and manage your conversions.