Aller au contenu

Automatisation

Du workflow manuel vu précédemment vers une chaîne de développement complète.


Le pipeline complet

Claude Code n'est pas un assistant isolé : il s'insère dans une chaîne qui va de l'issue jusqu'au merge, avec des outils qui objectivent la qualité et la sécurité.

sequenceDiagram
    actor U as Vous
    participant C as Claude Code
    participant G as Git / Gitea
    participant CI as CI (Trivy, Sonar)
    participant R as Renovate

    U->>C: Issue / demande
    C->>C: /superpowers:brainstorming
    C->>U: Intent + cas limites
    U->>C: Validation

    C->>G: Crée branche + worktree
    C->>C: /superpowers:writing-plans
    C->>G: Commit plan (superpowers/plans/)
    C->>G: Push → PR ouverte

    loop Exécution par étapes
        U->>G: Commentaire PR "étape N"
        G->>C: Webhook
        C->>C: /superpowers:executing-plans
        C->>G: Commit + push
        G->>CI: Tests + Trivy + Sonar
        CI->>G: Rapports
    end

    R->>G: PRs de mise à jour (déps)

    C->>C: /superpowers:requesting-code-review<br/>(lit les rapports CI)
    C->>U: Review consolidée
    U->>G: Merge
    C->>G: /clean_gone

Chaque étape a d'abord été exécutée manuellement dans Premier projet et Bonnes pratiques. Les sections qui suivent automatisent chacune d'elles.

Du manuel à l'automatique

Étape du pipeline Version manuelle (ch. 4-5) Version automatisée (ici)
Issue → intent Prompt d'ouverture Claude /from-issuebrainstorming
Validation → branche + plan Demande au développeur Hook Stop crée branche/worktree + commit plan
Exécution étape par étape Un prompt par feature Commentaires PR → executing-plans via webhook
Qualité / sécurité Relecture humaine Trivy + Sonar sur chaque push
Mise à jour dépendances npm outdated à la main Renovate self-hosted, PRs automatiques
Code review Lecture du diff /review enrichi par les rapports CI
Cleanup git branch -D manuel /clean_gone après merge

Hooks d'orchestration

Les hooks (.claude/settings.json) rendent déterministes les transitions qui, autrement, dépendraient de la vigilance du développeur.

Événements disponibles

Événement Quand Usage dans le pipeline
PostToolUse Après un Edit/Write Formatting, validation schéma
Stop Fin du tour de Claude Crée branche + commit plan, run tests
PreToolUse Avant un outil Garde-fou (bloquer edits hors worktree)

Exemple : formater après chaque édition

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          { "command": "prettier --write $CLAUDE_FILE_PATH" }
        ]
      }
    ]
  }
}

Exemple : créer branche + worktree + plan après validation du brainstorming

{
  "hooks": {
    "Stop": [
      {
        "matcher": "brainstorming-validated",
        "hooks": [
          { "command": ".claude/scripts/branch-and-plan.sh" }
        ]
      }
    ]
  }
}

Le script branch-and-plan.sh :

  1. Dérive le nom de branche depuis le titre validé (feat/auth-magic-link)
  2. Crée un worktree isolé (git worktree add ../projet-feat-auth ...)
  3. Y déclenche /superpowers:writing-plans pour écrire le plan dans superpowers/plans/
  4. Commit le plan, push, ouvre une PR via l'API Gitea

Hooks vs CLAUDE.md vs CI

  • Hook = déterministe, 100 % du temps
  • CLAUDE.md = consultatif, ~80 % du temps
  • CI = tiers indépendant, bloquant sur la PR

Chaque couche pour ce qu'elle fait de mieux.


CI : Trivy, SonarQube, Renovate

La CI est la couche objective : elle n'a pas de biais de confirmation, contrairement à Claude ou au développeur.

Trivy — sécurité

Scan des vulnérabilités dans les dépendances et les images conteneurs. Sortie SARIF consommable par Claude.

# .gitea/workflows/trivy.yml
- uses: aquasecurity/trivy-action@master
  with:
    scan-type: fs
    format: sarif
    output: trivy.sarif

Le rapport trivy.sarif est lu par /review pour intégrer les CVE à la code review.

SonarQube — qualité

Quality gate bloquante : code smells, duplication, couverture, complexité. Les commentaires Sonar postés sur la PR sont lus par Claude au moment de la review.

- uses: sonarsource/sonarqube-scan-action@master
  env:
    SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

Renovate — dépendances

Renovate self-hosted (workflow .gitea/workflows/renovate.yml du dépôt) ouvre des PRs de mise à jour horaires. Claude traite ces PRs avec le même workflow que les features : brainstorming court (compat ?), plan si migration, exécution, review enrichie par la CI.


Commandes personnalisées

Chaque fichier .md dans .claude/commands/ devient une commande / invocable. $ARGUMENTS est remplacé par ce que vous tapez après.

/from-issue

Fichier : .claude/commands/from-issue.md

Lis l'issue Gitea #$ARGUMENTS via l'API.
Invoque /superpowers:brainstorming pour explorer l'intent,
les cas limites, les contraintes non-dites.

À la validation, appelle .claude/scripts/branch-and-plan.sh
pour créer la branche, committer le plan et ouvrir la PR.

Usage : /from-issue 42

/next-plan-step

Fichier : .claude/commands/next-plan-step.md

Lis le plan dans superpowers/plans/ correspondant à la branche courante.
Identifie la prochaine tâche non cochée.
Invoque /superpowers:executing-plans sur cette tâche seule.
Commit + push à la fin.

Usage : typiquement déclenchée par un commentaire de PR via webhook.

/review enrichi

Fichier : .claude/commands/review.md

Fais une code review consolidée :
1. Lis les rapports CI du dernier run :
   - trivy.sarif (vulnérabilités)
   - sonar-report.json (qualité, couverture)
   - test-results.xml (tests)
2. Invoque /superpowers:requesting-code-review sur le diff
   vs la branche de base.
3. Consolide : classer les problèmes par sévérité
   (CVE critique > quality gate > smells > stylistique).
4. Verdict final : merge / changements requis / blocage.

Usage : /review

/ci-report

Fichier : .claude/commands/ci-report.md

Récupère les rapports CI du dernier run sur la branche courante.
Résume en 5 lignes max : tests, vulnérabilités Trivy,
quality gate Sonar, couverture. Liste les actions requises.

Usage : /ci-report

Créer vos propres commandes

# .claude/commands/ma-commande.md
Fais X avec $ARGUMENTS en respectant les conventions du projet.

Usage : /ma-commande mon-argument