# Release

> magic-slash - This skill should be used when the user says "release", "prepare release", "preparer la release", "nouvelle version", "new version", "bump version", or indicates they want to prepare a new version release. Use when this capability is needed.

- Skill: `tomevault-io/release-65` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/release-65`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/release-65/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/release-65

---


# 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 `AskUserQuestion` pour 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 :

```text
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` :

```json
"version": "X.Y.Z"
```

### 2.2 : desktop/package.json

Mets a jour la version dans `/desktop/package.json` :

```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 :

```json
"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 :

```json
"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.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`

Dans chaque fichier, cherche le titre avec un pattern regex generique (pour eviter les desynchronisations de version) :

```regex
# magic-slash v[0-9]+\.[0-9]+\.[0-9]+ - /nom-du-skill
```

Remplace par :

```markdown
# 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 :

```tsx
<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 :
```bash
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 :

```markdown
## [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 :

```markdown
[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 :

```text
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 :

```bash
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 :

```text
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

```text
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](https://tomevault.io/claim/xrequillart) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-13 -->

