Aide
Installer Messier en développement
Pour faire tourner Messier sur votre poste et travailler sur son code.
Prérequis : Node.js 24 ou plus, pnpm (la version 10 du packageManager du dépôt), Docker avec Compose, et git.
1. Cloner le dépôt
git clone ssh://git@git.makethings.cloud:11522/rnd/messier.git && cd messier
2. Le fichier .env
Toutes les variables commencent par MESSIER_ : .env.example les liste, avec les valeurs par défaut des ports (web 3300, API 4300, Postgres 5452, Redis 6399).
cp .env.example .env
3. Les deux applications OAuth GitLab
À déclarer sur https://git.makethings.cloud (Paramètres utilisateur › Applications), puis à reporter dans le .env, avec MESSIER_GITLAB_URL=https://git.makethings.cloud :
- L’application web : confidentielle, scopes
apietread_user, URI de redirectionhttp://localhost:4300/auth/gitlab/callbacken local (elle se déduit du port de l’API) ; sur une instance déployée,https://<hôte du web>/api/auth/gitlab/callback, reportée aussi dansMESSIER_GITLAB_REDIRECT_URI. Son identifiant et son secret vont dansMESSIER_GITLAB_CLIENT_IDetMESSIER_GITLAB_CLIENT_SECRET. - L’application du CLI : publique (non confidentielle), le grant type
device_codecoché, scoperead_user; le formulaire demande une URI de redirection, que le device flow n’utilise pas. Son identifiant va dansMESSIER_GITLAB_CLI_CLIENT_ID, sans secret :messier logins’en sert.
4. La clé de chiffrement
MESSIER_ENCRYPTION_KEY chiffre les tokens GitLab gardés par Messier : 32 octets en hexadécimal. L’API refuse de démarrer sans elle ; la changer oblige chacun à se reconnecter.
openssl rand -hex 32
5. Les comptes autorisés
MESSIER_ALLOWED_USERS liste les noms d’utilisateur GitLab qui peuvent se connecter, séparés par des virgules (alice,bob) ; tout autre compte est refusé.
6. Lancer la stack
Postgres et Redis tournent dans Docker, puis les dépendances, puis Messier :
docker compose up -d
pnpm install
pnpm dev
pnpm dev applique les migrations, puis lance le web sur le port 3300 (http://localhost:3300), l’API sur le port 4300 (sa documentation sur http://localhost:4300/docs) et le worker de synchronisation avec GitLab.
En option
Le CLI depuis le monorepo, pour l’essayer avant sa publication : construire le paquet, puis le lier dans le dossier global des binaires de pnpm (pnpm setup une fois avant).
pnpm --filter @laboitetech/messier build
cd apps/cli && pnpm link
Chromium, une fois, pour les tests e2e du navigateur (pnpm test:e2e) :
pnpm --filter @messier/e2e exec playwright install chromium
Installer le binaire (usage uniquement)
Pour se servir de Messier depuis son poste, sans travailler sur son code : la commande messier connecte le poste, installe les skills et le serveur MCP de Messier dans Claude Code, et prépare les sessions de travail. Elle demande Node.js 24 ou plus.
1. Un token GitLab
Le paquet est publié dans le registre npm du projet GitLab rnd/messier (id 75), qui est privé : créez un token d’accès personnel avec le scope read_api (ou un deploy token du projet avec le scope read_package_registry).
2. Le registre dans ~/.npmrc
Ajoutez ces deux lignes à votre ~/.npmrc ; sans la seconde, npm reçoit une 404 :
@laboitetech:registry=https://git.makethings.cloud/api/v4/projects/75/packages/npm/
//git.makethings.cloud/api/v4/projects/75/packages/npm/:_authToken=<votre token>
npm remplace ${VARIABLE} par la variable d’environnement : _authToken=${GITLAB_NPM_TOKEN} évite d’écrire le token dans le fichier.
3. Installer
npm i -g @laboitetech/messier
Pour mettre à jour, la même commande ; messier --version affiche la version installée.
4. Connecter le poste
messier login vous connecte à cette instance de Messier par le device flow de GitLab, une fois votre compte connecté au moins une fois sur le web. Le token obtenu va dans le trousseau du système, ou faute de trousseau (sous WSL2) dans ~/.config/messier/credentials.
messier login --url http://messier.makethings.cloud/api
5. Préparer Claude Code
messier setup vérifie d’abord les prérequis et s’arrête en listant ce qui manque : git, node, pnpm, docker, claude, glab et jq (le hook de guardrails git en a besoin). Puis il installe les skills de Messier dans ~/.claude/skills et le hook dans ~/.claude/hooks, enregistre le serveur MCP de Messier dans Claude Code et vérifie que glab est connecté au GitLab de Messier. Il se relance sans risque.
messier setup
messier doctor vérifie tout ce que setup installe, et donne pour chaque échec la commande qui corrige :
messier doctor
Quand Messier publie une nouvelle version de ses skills, messier update les réinstalle (le CLI lui-même se met à jour par npm i -g) :
messier update
Installer Messier sur un projet
Le plus simple : lancez /messier-init dans Claude Code, à la racine d’un clone du projet. Le skill est installé par messier setup (section « Installer le binaire »).
/messier-init
Il vérifie d’abord le poste (messier doctor), puis diagnostique le projet en lecture seule, sans rien écrire : rattachement, manifeste, develop et ses protections, labels, CI, runners et suite de tests, rangés en trois niveaux, « Bloquant », « À adapter » et « Prêt », chaque point avec ce qui a été constaté, pourquoi Messier en a besoin et comment le corriger. Il propose ensuite ses actions une à une, chacune faite seulement après votre « oui » : rattacher le projet, créer les labels manquants, écrire le manifeste, compléter la CI, lancer les tests une fois. Il ne committe, ne pousse et ne change aucun réglage de GitLab : il finit par la liste de ce qui vous reste, les fichiers à committer sur develop et les réglages à faire dans GitLab. Relancé sur un projet installé, tout est « Prêt » et rien n’est réécrit.
Le détail, pour le faire à la main ou savoir ce que /messier-init vérifie : mener un projet GitLab avec Messier, des demandes à la recette, demande ces cinq étapes.
1. Rattacher le projet
Dans Messier, « Projets », puis « Rattacher » : cherchez le projet parmi ceux dont votre compte GitLab est membre, et rattachez-le.
2. Le manifeste .messier.yml
À la racine de la branche par défaut, il décrit le projet : name, stack, urls (les adresses à ouvrir pour vérifier), ports et commands (install, dev, test, e2e). Messier le lit dans GitLab ; messier work lance son install dans le worktree d’une session. Il est versionné : jamais de secret dedans. Celui de Messier :
name: messier
stack: [nestjs, nuxt, drizzle, postgres, redis, turborepo]
urls:
front: http://localhost:3300
api-doc: http://localhost:4300/docs
ports:
web: 3300
api: 4300
postgres: 5452
redis: 6399
commands:
install: pnpm install
dev: pnpm dev
test: pnpm test
e2e: pnpm test:e2e
3. Gitflow
develop est la branche par défaut du projet, main porte les versions (tags vX.Y.Z). Les agents poussent leurs branches, feature/<iid>-<slug> pour une feature et lot/<slug> pour un lot d’issues autonomes, et ouvrent leurs MR vers develop ; ils ne mergent jamais. Protégez main et develop.
4. Les labels
feature: l’issue parente d’une feature, qui regroupe ses issues ;HITL(l’humain intervient) ouAFK(l’agent la mène seul) : le mode de chaque issue ;bug,choreetone-shot: une issue autonome, hors feature ;in-progress: posé sur une issue prise en charge, créé par Messier lui-même.
Le skill to-issues crée les autres quand ils manquent, au découpage d’une demande.
5. Une CI déclenchée sur les MR
La porte de test lit les pipelines des MR : une issue est « Implémentée » quand un pipeline passe sur son dernier commit, une feature « En recette » quand sa MR est prête sur un pipeline vert. La CI doit donc tourner sur les événements de MR, comme celle de Messier :
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
- if: $CI_COMMIT_BRANCH == 'develop'
- if: $CI_COMMIT_BRANCH == 'main'
- if: $CI_COMMIT_TAG